| Server IP : / Your IP : 10.244.4.16 [ Web Server : nginx/1.25.3 System : Linux escuela-portal-app-54f56585bc-kst6g 5.15.0-1084-azure #93-Ubuntu SMP Sat Mar 15 14:12:29 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.2.13 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, Domains : 0 Domains MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/app/public/js/ |
Upload File : |
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./node_modules/@desislavsd/vue-select/dist/vue-select.umd.min.js":
/*!************************************************************************!*\
!*** ./node_modules/@desislavsd/vue-select/dist/vue-select.umd.min.js ***!
\************************************************************************/
/***/ (function(module) {
eval("(function(t,e){ true?module.exports=e():0})(\"undefined\"!==typeof self?self:this,(function(){return 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}return 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=\"\",n(n.s=\"fb15\")}({\"014b\":function(t,e,n){\"use strict\";var r=n(\"e53d\"),i=n(\"07e3\"),o=n(\"8e60\"),c=n(\"63b6\"),u=n(\"9138\"),a=n(\"ebfd\").KEY,s=n(\"294c\"),f=n(\"dbdb\"),l=n(\"45f2\"),p=n(\"62a0\"),h=n(\"5168\"),v=n(\"ccb9\"),d=n(\"6718\"),y=n(\"47ee\"),b=n(\"9003\"),g=n(\"e4ae\"),m=n(\"f772\"),x=n(\"241e\"),w=n(\"36c3\"),_=n(\"1bc3\"),S=n(\"aebd\"),O=n(\"a159\"),k=n(\"0395\"),j=n(\"bf0b\"),E=n(\"9aa9\"),P=n(\"d9f6\"),A=n(\"c3a1\"),L=j.f,T=P.f,M=k.f,C=r.Symbol,F=r.JSON,I=F&&F.stringify,R=\"prototype\",N=h(\"_hidden\"),q=h(\"toPrimitive\"),D={}.propertyIsEnumerable,$=f(\"symbol-registry\"),G=f(\"symbols\"),V=f(\"op-symbols\"),B=Object[R],U=\"function\"==typeof C&&!!E.f,K=r.QObject,H=!K||!K[R]||!K[R].findChild,W=o&&s((function(){return 7!=O(T({},\"a\",{get:function(){return T(this,\"a\",{value:7}).a}})).a}))?function(t,e,n){var r=L(B,e);r&&delete B[e],T(t,e,n),r&&t!==B&&T(B,e,r)}:T,J=function(t){var e=G[t]=O(C[R]);return e._k=t,e},Y=U&&\"symbol\"==typeof C.iterator?function(t){return\"symbol\"==typeof t}:function(t){return t instanceof C},z=function(t,e,n){return t===B&&z(V,e,n),g(t),e=_(e,!0),g(n),i(G,e)?(n.enumerable?(i(t,N)&&t[N][e]&&(t[N][e]=!1),n=O(n,{enumerable:S(0,!1)})):(i(t,N)||T(t,N,S(1,{})),t[N][e]=!0),W(t,e,n)):T(t,e,n)},X=function(t,e){g(t);var n,r=y(e=w(e)),i=0,o=r.length;while(o>i)z(t,n=r[i++],e[n]);return t},Q=function(t,e){return void 0===e?O(t):X(O(t),e)},Z=function(t){var e=D.call(this,t=_(t,!0));return!(this===B&&i(G,t)&&!i(V,t))&&(!(e||!i(this,t)||!i(G,t)||i(this,N)&&this[N][t])||e)},tt=function(t,e){if(t=w(t),e=_(e,!0),t!==B||!i(G,e)||i(V,e)){var n=L(t,e);return!n||!i(G,e)||i(t,N)&&t[N][e]||(n.enumerable=!0),n}},et=function(t){var e,n=M(w(t)),r=[],o=0;while(n.length>o)i(G,e=n[o++])||e==N||e==a||r.push(e);return r},nt=function(t){var e,n=t===B,r=M(n?V:w(t)),o=[],c=0;while(r.length>c)!i(G,e=r[c++])||n&&!i(B,e)||o.push(G[e]);return o};U||(C=function(){if(this instanceof C)throw TypeError(\"Symbol is not a constructor!\");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===B&&e.call(V,n),i(this,N)&&i(this[N],t)&&(this[N][t]=!1),W(this,t,S(1,n))};return o&&H&&W(B,t,{configurable:!0,set:e}),J(t)},u(C[R],\"toString\",(function(){return this._k})),j.f=tt,P.f=z,n(\"6abf\").f=k.f=et,n(\"355d\").f=Z,E.f=nt,o&&!n(\"b8e3\")&&u(B,\"propertyIsEnumerable\",Z,!0),v.f=function(t){return J(h(t))}),c(c.G+c.W+c.F*!U,{Symbol:C});for(var rt=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),it=0;rt.length>it;)h(rt[it++]);for(var ot=A(h.store),ct=0;ot.length>ct;)d(ot[ct++]);c(c.S+c.F*!U,\"Symbol\",{for:function(t){return i($,t+=\"\")?$[t]:$[t]=C(t)},keyFor:function(t){if(!Y(t))throw TypeError(t+\" is not a symbol!\");for(var e in $)if($[e]===t)return e},useSetter:function(){H=!0},useSimple:function(){H=!1}}),c(c.S+c.F*!U,\"Object\",{create:Q,defineProperty:z,defineProperties:X,getOwnPropertyDescriptor:tt,getOwnPropertyNames:et,getOwnPropertySymbols:nt});var ut=s((function(){E.f(1)}));c(c.S+c.F*ut,\"Object\",{getOwnPropertySymbols:function(t){return E.f(x(t))}}),F&&c(c.S+c.F*(!U||s((function(){var t=C();return\"[null]\"!=I([t])||\"{}\"!=I({a:t})||\"{}\"!=I(Object(t))}))),\"JSON\",{stringify:function(t){var e,n,r=[t],i=1;while(arguments.length>i)r.push(arguments[i++]);if(n=e=r[1],(m(e)||void 0!==t)&&!Y(t))return b(e)||(e=function(t,e){if(\"function\"==typeof n&&(e=n.call(this,t,e)),!Y(e))return e}),r[1]=e,I.apply(F,r)}}),C[R][q]||n(\"35e8\")(C[R],q,C[R].valueOf),l(C,\"Symbol\"),l(Math,\"Math\",!0),l(r.JSON,\"JSON\",!0)},\"01f9\":function(t,e,n){\"use strict\";var r=n(\"2d00\"),i=n(\"5ca1\"),o=n(\"2aba\"),c=n(\"32e9\"),u=n(\"84f2\"),a=n(\"41a0\"),s=n(\"7f20\"),f=n(\"38fd\"),l=n(\"2b4c\")(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),h=\"@@iterator\",v=\"keys\",d=\"values\",y=function(){return this};t.exports=function(t,e,n,b,g,m,x){a(n,e,b);var w,_,S,O=function(t){if(!p&&t in P)return P[t];switch(t){case v:return function(){return new n(this,t)};case d:return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+\" Iterator\",j=g==d,E=!1,P=t.prototype,A=P[l]||P[h]||g&&P[g],L=A||O(g),T=g?j?O(\"entries\"):L:void 0,M=\"Array\"==e&&P.entries||A;if(M&&(S=f(M.call(new t)),S!==Object.prototype&&S.next&&(s(S,k,!0),r||\"function\"==typeof S[l]||c(S,l,y))),j&&A&&A.name!==d&&(E=!0,L=function(){return A.call(this)}),r&&!x||!p&&!E&&P[l]||c(P,l,L),u[e]=L,u[k]=y,g)if(w={values:j?L:O(d),keys:m?L:O(v),entries:T},x)for(_ in w)_ in P||o(P,_,w[_]);else i(i.P+i.F*(p||E),e,w);return w}},\"02f4\":function(t,e,n){var r=n(\"4588\"),i=n(\"be13\");t.exports=function(t){return function(e,n){var o,c,u=String(i(e)),a=r(n),s=u.length;return a<0||a>=s?t?\"\":void 0:(o=u.charCodeAt(a),o<55296||o>56319||a+1===s||(c=u.charCodeAt(a+1))<56320||c>57343?t?u.charAt(a):o:t?u.slice(a,a+2):c-56320+(o-55296<<10)+65536)}}},\"0390\":function(t,e,n){\"use strict\";var r=n(\"02f4\")(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},\"0395\":function(t,e,n){var r=n(\"36c3\"),i=n(\"6abf\").f,o={}.toString,c=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(t){try{return i(t)}catch(e){return c.slice()}};t.exports.f=function(t){return c&&\"[object Window]\"==o.call(t)?u(t):i(r(t))}},\"07e3\":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},\"0a49\":function(t,e,n){var r=n(\"9b43\"),i=n(\"626a\"),o=n(\"4bf8\"),c=n(\"9def\"),u=n(\"cd1c\");t.exports=function(t,e){var n=1==t,a=2==t,s=3==t,f=4==t,l=6==t,p=5==t||l,h=e||u;return function(e,u,v){for(var d,y,b=o(e),g=i(b),m=r(u,v,3),x=c(g.length),w=0,_=n?h(e,x):a?h(e,0):void 0;x>w;w++)if((p||w in g)&&(d=g[w],y=m(d,w,b),t))if(n)_[w]=y;else if(y)switch(t){case 3:return!0;case 5:return d;case 6:return w;case 2:_.push(d)}else if(f)return!1;return l?-1:s||f?f:_}}},\"0bfb\":function(t,e,n){\"use strict\";var r=n(\"cb7c\");t.exports=function(){var t=r(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},\"0d58\":function(t,e,n){var r=n(\"ce10\"),i=n(\"e11e\");t.exports=Object.keys||function(t){return r(t,i)}},\"0fc9\":function(t,e,n){var r=n(\"3a38\"),i=Math.max,o=Math.min;t.exports=function(t,e){return t=r(t),t<0?i(t+e,0):o(t,e)}},1169:function(t,e,n){var r=n(\"2d95\");t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},1173:function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+\": incorrect invocation!\");return t}},\"11e9\":function(t,e,n){var r=n(\"52a7\"),i=n(\"4630\"),o=n(\"6821\"),c=n(\"6a99\"),u=n(\"69a8\"),a=n(\"c69a\"),s=Object.getOwnPropertyDescriptor;e.f=n(\"9e1e\")?s:function(t,e){if(t=o(t),e=c(e,!0),a)try{return s(t,e)}catch(n){}if(u(t,e))return i(!r.f.call(t,e),t[e])}},1495:function(t,e,n){var r=n(\"86cc\"),i=n(\"cb7c\"),o=n(\"0d58\");t.exports=n(\"9e1e\")?Object.defineProperties:function(t,e){i(t);var n,c=o(e),u=c.length,a=0;while(u>a)r.f(t,n=c[a++],e[n]);return t}},1654:function(t,e,n){\"use strict\";var r=n(\"71c1\")(!0);n(\"30f1\")(String,\"String\",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},1691:function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},1991:function(t,e,n){var r,i,o,c=n(\"9b43\"),u=n(\"31f4\"),a=n(\"fab2\"),s=n(\"230e\"),f=n(\"7726\"),l=f.process,p=f.setImmediate,h=f.clearImmediate,v=f.MessageChannel,d=f.Dispatch,y=0,b={},g=\"onreadystatechange\",m=function(){var t=+this;if(b.hasOwnProperty(t)){var e=b[t];delete b[t],e()}},x=function(t){m.call(t.data)};p&&h||(p=function(t){var e=[],n=1;while(arguments.length>n)e.push(arguments[n++]);return b[++y]=function(){u(\"function\"==typeof t?t:Function(t),e)},r(y),y},h=function(t){delete b[t]},\"process\"==n(\"2d95\")(l)?r=function(t){l.nextTick(c(m,t,1))}:d&&d.now?r=function(t){d.now(c(m,t,1))}:v?(i=new v,o=i.port2,i.port1.onmessage=x,r=c(o.postMessage,o,1)):f.addEventListener&&\"function\"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+\"\",\"*\")},f.addEventListener(\"message\",x,!1)):r=g in s(\"script\")?function(t){a.appendChild(s(\"script\"))[g]=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(c(m,t,1),0)}),t.exports={set:p,clear:h}},\"1af6\":function(t,e,n){var r=n(\"63b6\");r(r.S,\"Array\",{isArray:n(\"9003\")})},\"1bc3\":function(t,e,n){var r=n(\"f772\");t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&\"function\"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if(\"function\"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&\"function\"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError(\"Can't convert object to primitive value\")}},\"1ec9\":function(t,e,n){var r=n(\"f772\"),i=n(\"e53d\").document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},\"1fa8\":function(t,e,n){var r=n(\"cb7c\");t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(c){var o=t[\"return\"];throw void 0!==o&&r(o.call(t)),c}}},\"20d6\":function(t,e,n){\"use strict\";var r=n(\"5ca1\"),i=n(\"0a49\")(6),o=\"findIndex\",c=!0;o in[]&&Array(1)[o]((function(){c=!1})),r(r.P+r.F*c,\"Array\",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(\"9c6c\")(o)},\"20fd\":function(t,e,n){\"use strict\";var r=n(\"d9f6\"),i=n(\"aebd\");t.exports=function(t,e,n){e in t?r.f(t,e,i(0,n)):t[e]=n}},\"214f\":function(t,e,n){\"use strict\";n(\"b0c5\");var r=n(\"2aba\"),i=n(\"32e9\"),o=n(\"79e5\"),c=n(\"be13\"),u=n(\"2b4c\"),a=n(\"520a\"),s=u(\"species\"),f=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:\"7\"},t},\"7\"!==\"\".replace(t,\"$<a>\")})),l=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n=\"ab\".split(t);return 2===n.length&&\"a\"===n[0]&&\"b\"===n[1]}();t.exports=function(t,e,n){var p=u(t),h=!o((function(){var e={};return e[p]=function(){return 7},7!=\"\"[t](e)})),v=h?!o((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},\"split\"===t&&(n.constructor={},n.constructor[s]=function(){return n}),n[p](\"\"),!e})):void 0;if(!h||!v||\"replace\"===t&&!f||\"split\"===t&&!l){var d=/./[p],y=n(c,p,\"\"[t],(function(t,e,n,r,i){return e.exec===a?h&&!i?{done:!0,value:d.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),b=y[0],g=y[1];r(String.prototype,t,b),i(RegExp.prototype,p,2==e?function(t,e){return g.call(t,this,e)}:function(t){return g.call(t,this)})}}},\"230e\":function(t,e,n){var r=n(\"d3f4\"),i=n(\"7726\").document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},\"23c6\":function(t,e,n){var r=n(\"2d95\"),i=n(\"2b4c\")(\"toStringTag\"),o=\"Arguments\"==r(function(){return arguments}()),c=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=c(e=Object(t),i))?n:o?r(e):\"Object\"==(u=r(e))&&\"function\"==typeof e.callee?\"Arguments\":u}},\"241e\":function(t,e,n){var r=n(\"25eb\");t.exports=function(t){return Object(r(t))}},\"24c5\":function(t,e,n){\"use strict\";var r,i,o,c,u=n(\"b8e3\"),a=n(\"e53d\"),s=n(\"d864\"),f=n(\"40c3\"),l=n(\"63b6\"),p=n(\"f772\"),h=n(\"79aa\"),v=n(\"1173\"),d=n(\"a22a\"),y=n(\"f201\"),b=n(\"4178\").set,g=n(\"aba2\")(),m=n(\"656e\"),x=n(\"4439\"),w=n(\"bc13\"),_=n(\"cd78\"),S=\"Promise\",O=a.TypeError,k=a.process,j=k&&k.versions,E=j&&j.v8||\"\",P=a[S],A=\"process\"==f(k),L=function(){},T=i=m.f,M=!!function(){try{var t=P.resolve(1),e=(t.constructor={})[n(\"5168\")(\"species\")]=function(t){t(L,L)};return(A||\"function\"==typeof PromiseRejectionEvent)&&t.then(L)instanceof e&&0!==E.indexOf(\"6.6\")&&-1===w.indexOf(\"Chrome/66\")}catch(r){}}(),C=function(t){var e;return!(!p(t)||\"function\"!=typeof(e=t.then))&&e},F=function(t,e){if(!t._n){t._n=!0;var n=t._c;g((function(){var r=t._v,i=1==t._s,o=0,c=function(e){var n,o,c,u=i?e.ok:e.fail,a=e.resolve,s=e.reject,f=e.domain;try{u?(i||(2==t._h&&N(t),t._h=1),!0===u?n=r:(f&&f.enter(),n=u(r),f&&(f.exit(),c=!0)),n===e.promise?s(O(\"Promise-chain cycle\")):(o=C(n))?o.call(n,a,s):a(n)):s(r)}catch(l){f&&!c&&f.exit(),s(l)}};while(n.length>o)c(n[o++]);t._c=[],t._n=!1,e&&!t._h&&I(t)}))}},I=function(t){b.call(a,(function(){var e,n,r,i=t._v,o=R(t);if(o&&(e=x((function(){A?k.emit(\"unhandledRejection\",i,t):(n=a.onunhandledrejection)?n({promise:t,reason:i}):(r=a.console)&&r.error&&r.error(\"Unhandled promise rejection\",i)})),t._h=A||R(t)?2:1),t._a=void 0,o&&e.e)throw e.v}))},R=function(t){return 1!==t._h&&0===(t._a||t._c).length},N=function(t){b.call(a,(function(){var e;A?k.emit(\"rejectionHandled\",t):(e=a.onrejectionhandled)&&e({promise:t,reason:t._v})}))},q=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),F(e,!0))},D=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw O(\"Promise can't be resolved itself\");(e=C(t))?g((function(){var r={_w:n,_d:!1};try{e.call(t,s(D,r,1),s(q,r,1))}catch(i){q.call(r,i)}})):(n._v=t,n._s=1,F(n,!1))}catch(r){q.call({_w:n,_d:!1},r)}}};M||(P=function(t){v(this,P,S,\"_h\"),h(t),r.call(this);try{t(s(D,this,1),s(q,this,1))}catch(e){q.call(this,e)}},r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n(\"5c95\")(P.prototype,{then:function(t,e){var n=T(y(this,P));return n.ok=\"function\"!=typeof t||t,n.fail=\"function\"==typeof e&&e,n.domain=A?k.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&F(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r;this.promise=t,this.resolve=s(D,t,1),this.reject=s(q,t,1)},m.f=T=function(t){return t===P||t===c?new o(t):i(t)}),l(l.G+l.W+l.F*!M,{Promise:P}),n(\"45f2\")(P,S),n(\"4c95\")(S),c=n(\"584a\")[S],l(l.S+l.F*!M,S,{reject:function(t){var e=T(this),n=e.reject;return n(t),e.promise}}),l(l.S+l.F*(u||!M),S,{resolve:function(t){return _(u&&this===c?P:this,t)}}),l(l.S+l.F*!(M&&n(\"4ee1\")((function(t){P.all(t)[\"catch\"](L)}))),S,{all:function(t){var e=this,n=T(e),r=n.resolve,i=n.reject,o=x((function(){var n=[],o=0,c=1;d(t,!1,(function(t){var u=o++,a=!1;n.push(void 0),c++,e.resolve(t).then((function(t){a||(a=!0,n[u]=t,--c||r(n))}),i)})),--c||r(n)}));return o.e&&i(o.v),n.promise},race:function(t){var e=this,n=T(e),r=n.reject,i=x((function(){d(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return i.e&&r(i.v),n.promise}})},\"25eb\":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},2621:function(t,e){e.f=Object.getOwnPropertySymbols},\"27ee\":function(t,e,n){var r=n(\"23c6\"),i=n(\"2b4c\")(\"iterator\"),o=n(\"84f2\");t.exports=n(\"8378\").getIteratorMethod=function(t){if(void 0!=t)return t[i]||t[\"@@iterator\"]||o[r(t)]}},\"28a5\":function(t,e,n){\"use strict\";var r=n(\"aae3\"),i=n(\"cb7c\"),o=n(\"ebd6\"),c=n(\"0390\"),u=n(\"9def\"),a=n(\"5f1b\"),s=n(\"520a\"),f=n(\"79e5\"),l=Math.min,p=[].push,h=\"split\",v=\"length\",d=\"lastIndex\",y=4294967295,b=!f((function(){RegExp(y,\"y\")}));n(\"214f\")(\"split\",2,(function(t,e,n,f){var g;return g=\"c\"==\"abbc\"[h](/(b)*/)[1]||4!=\"test\"[h](/(?:)/,-1)[v]||2!=\"ab\"[h](/(?:ab)*/)[v]||4!=\".\"[h](/(.?)(.?)/)[v]||\".\"[h](/()()/)[v]>1||\"\"[h](/.?/)[v]?function(t,e){var i=String(this);if(void 0===t&&0===e)return[];if(!r(t))return n.call(i,t,e);var o,c,u,a=[],f=(t.ignoreCase?\"i\":\"\")+(t.multiline?\"m\":\"\")+(t.unicode?\"u\":\"\")+(t.sticky?\"y\":\"\"),l=0,h=void 0===e?y:e>>>0,b=new RegExp(t.source,f+\"g\");while(o=s.call(b,i)){if(c=b[d],c>l&&(a.push(i.slice(l,o.index)),o[v]>1&&o.index<i[v]&&p.apply(a,o.slice(1)),u=o[0][v],l=c,a[v]>=h))break;b[d]===o.index&&b[d]++}return l===i[v]?!u&&b.test(\"\")||a.push(\"\"):a.push(i.slice(l)),a[v]>h?a.slice(0,h):a}:\"0\"[h](void 0,0)[v]?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,r){var i=t(this),o=void 0==n?void 0:n[e];return void 0!==o?o.call(n,i,r):g.call(String(i),n,r)},function(t,e){var r=f(g,t,this,e,g!==n);if(r.done)return r.value;var s=i(t),p=String(this),h=o(s,RegExp),v=s.unicode,d=(s.ignoreCase?\"i\":\"\")+(s.multiline?\"m\":\"\")+(s.unicode?\"u\":\"\")+(b?\"y\":\"g\"),m=new h(b?s:\"^(?:\"+s.source+\")\",d),x=void 0===e?y:e>>>0;if(0===x)return[];if(0===p.length)return null===a(m,p)?[p]:[];var w=0,_=0,S=[];while(_<p.length){m.lastIndex=b?_:0;var O,k=a(m,b?p:p.slice(_));if(null===k||(O=l(u(m.lastIndex+(b?0:_)),p.length))===w)_=c(p,_,v);else{if(S.push(p.slice(w,_)),S.length===x)return S;for(var j=1;j<=k.length-1;j++)if(S.push(k[j]),S.length===x)return S;_=w=O}}return S.push(p.slice(w)),S}]}))},\"294c\":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},\"2aba\":function(t,e,n){var r=n(\"7726\"),i=n(\"32e9\"),o=n(\"69a8\"),c=n(\"ca5a\")(\"src\"),u=n(\"fa5b\"),a=\"toString\",s=(\"\"+u).split(a);n(\"8378\").inspectSource=function(t){return u.call(t)},(t.exports=function(t,e,n,u){var a=\"function\"==typeof n;a&&(o(n,\"name\")||i(n,\"name\",e)),t[e]!==n&&(a&&(o(n,c)||i(n,c,t[e]?\"\"+t[e]:s.join(String(e)))),t===r?t[e]=n:u?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,a,(function(){return\"function\"==typeof this&&this[c]||u.call(this)}))},\"2aeb\":function(t,e,n){var r=n(\"cb7c\"),i=n(\"1495\"),o=n(\"e11e\"),c=n(\"613b\")(\"IE_PROTO\"),u=function(){},a=\"prototype\",s=function(){var t,e=n(\"230e\")(\"iframe\"),r=o.length,i=\"<\",c=\">\";e.style.display=\"none\",n(\"fab2\").appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(i+\"script\"+c+\"document.F=Object\"+i+\"/script\"+c),t.close(),s=t.F;while(r--)delete s[a][o[r]];return s()};t.exports=Object.create||function(t,e){var n;return null!==t?(u[a]=r(t),n=new u,u[a]=null,n[c]=t):n=s(),void 0===e?n:i(n,e)}},\"2b4c\":function(t,e,n){var r=n(\"5537\")(\"wks\"),i=n(\"ca5a\"),o=n(\"7726\").Symbol,c=\"function\"==typeof o,u=t.exports=function(t){return r[t]||(r[t]=c&&o[t]||(c?o:i)(\"Symbol.\"+t))};u.store=r},\"2d00\":function(t,e){t.exports=!1},\"2d95\":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},\"2fdb\":function(t,e,n){\"use strict\";var r=n(\"5ca1\"),i=n(\"d2c8\"),o=\"includes\";r(r.P+r.F*n(\"5147\")(o),\"String\",{includes:function(t){return!!~i(this,t,o).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},3024:function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},\"30f1\":function(t,e,n){\"use strict\";var r=n(\"b8e3\"),i=n(\"63b6\"),o=n(\"9138\"),c=n(\"35e8\"),u=n(\"481b\"),a=n(\"8f60\"),s=n(\"45f2\"),f=n(\"53e2\"),l=n(\"5168\")(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),h=\"@@iterator\",v=\"keys\",d=\"values\",y=function(){return this};t.exports=function(t,e,n,b,g,m,x){a(n,e,b);var w,_,S,O=function(t){if(!p&&t in P)return P[t];switch(t){case v:return function(){return new n(this,t)};case d:return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+\" Iterator\",j=g==d,E=!1,P=t.prototype,A=P[l]||P[h]||g&&P[g],L=A||O(g),T=g?j?O(\"entries\"):L:void 0,M=\"Array\"==e&&P.entries||A;if(M&&(S=f(M.call(new t)),S!==Object.prototype&&S.next&&(s(S,k,!0),r||\"function\"==typeof S[l]||c(S,l,y))),j&&A&&A.name!==d&&(E=!0,L=function(){return A.call(this)}),r&&!x||!p&&!E&&P[l]||c(P,l,L),u[e]=L,u[k]=y,g)if(w={values:j?L:O(d),keys:m?L:O(v),entries:T},x)for(_ in w)_ in P||o(P,_,w[_]);else i(i.P+i.F*(p||E),e,w);return w}},\"31f4\":function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},\"32e9\":function(t,e,n){var r=n(\"86cc\"),i=n(\"4630\");t.exports=n(\"9e1e\")?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},\"32fc\":function(t,e,n){var r=n(\"e53d\").document;t.exports=r&&r.documentElement},\"335c\":function(t,e,n){var r=n(\"6b4c\");t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},\"33a4\":function(t,e,n){var r=n(\"84f2\"),i=n(\"2b4c\")(\"iterator\"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},\"355d\":function(t,e){e.f={}.propertyIsEnumerable},\"35e8\":function(t,e,n){var r=n(\"d9f6\"),i=n(\"aebd\");t.exports=n(\"8e60\")?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},3620:function(t,e,n){},\"36c3\":function(t,e,n){var r=n(\"335c\"),i=n(\"25eb\");t.exports=function(t){return r(i(t))}},3702:function(t,e,n){var r=n(\"481b\"),i=n(\"5168\")(\"iterator\"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},3846:function(t,e,n){n(\"9e1e\")&&\"g\"!=/./g.flags&&n(\"86cc\").f(RegExp.prototype,\"flags\",{configurable:!0,get:n(\"0bfb\")})},\"386d\":function(t,e,n){\"use strict\";var r=n(\"cb7c\"),i=n(\"83a1\"),o=n(\"5f1b\");n(\"214f\")(\"search\",1,(function(t,e,n,c){return[function(n){var r=t(this),i=void 0==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=c(n,t,this);if(e.done)return e.value;var u=r(t),a=String(this),s=u.lastIndex;i(s,0)||(u.lastIndex=0);var f=o(u,a);return i(u.lastIndex,s)||(u.lastIndex=s),null===f?-1:f.index}]}))},\"38fd\":function(t,e,n){var r=n(\"69a8\"),i=n(\"4bf8\"),o=n(\"613b\")(\"IE_PROTO\"),c=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},\"3a38\":function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},\"3c11\":function(t,e,n){\"use strict\";var r=n(\"63b6\"),i=n(\"584a\"),o=n(\"e53d\"),c=n(\"f201\"),u=n(\"cd78\");r(r.P+r.R,\"Promise\",{finally:function(t){var e=c(this,i.Promise||o.Promise),n=\"function\"==typeof t;return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}})},\"3cba\":function(t,e,n){\"use strict\";var r=n(\"ecf0\"),i=n.n(r);i.a},\"40c3\":function(t,e,n){var r=n(\"6b4c\"),i=n(\"5168\")(\"toStringTag\"),o=\"Arguments\"==r(function(){return arguments}()),c=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=c(e=Object(t),i))?n:o?r(e):\"Object\"==(u=r(e))&&\"function\"==typeof e.callee?\"Arguments\":u}},4178:function(t,e,n){var r,i,o,c=n(\"d864\"),u=n(\"3024\"),a=n(\"32fc\"),s=n(\"1ec9\"),f=n(\"e53d\"),l=f.process,p=f.setImmediate,h=f.clearImmediate,v=f.MessageChannel,d=f.Dispatch,y=0,b={},g=\"onreadystatechange\",m=function(){var t=+this;if(b.hasOwnProperty(t)){var e=b[t];delete b[t],e()}},x=function(t){m.call(t.data)};p&&h||(p=function(t){var e=[],n=1;while(arguments.length>n)e.push(arguments[n++]);return b[++y]=function(){u(\"function\"==typeof t?t:Function(t),e)},r(y),y},h=function(t){delete b[t]},\"process\"==n(\"6b4c\")(l)?r=function(t){l.nextTick(c(m,t,1))}:d&&d.now?r=function(t){d.now(c(m,t,1))}:v?(i=new v,o=i.port2,i.port1.onmessage=x,r=c(o.postMessage,o,1)):f.addEventListener&&\"function\"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+\"\",\"*\")},f.addEventListener(\"message\",x,!1)):r=g in s(\"script\")?function(t){a.appendChild(s(\"script\"))[g]=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(c(m,t,1),0)}),t.exports={set:p,clear:h}},\"41a0\":function(t,e,n){\"use strict\";var r=n(\"2aeb\"),i=n(\"4630\"),o=n(\"7f20\"),c={};n(\"32e9\")(c,n(\"2b4c\")(\"iterator\"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(c,{next:i(1,n)}),o(t,e+\" Iterator\")}},\"43fc\":function(t,e,n){\"use strict\";var r=n(\"63b6\"),i=n(\"656e\"),o=n(\"4439\");r(r.S,\"Promise\",{try:function(t){var e=i.f(this),n=o(t);return(n.e?e.reject:e.resolve)(n.v),e.promise}})},4439:function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},\"454f\":function(t,e,n){n(\"46a7\");var r=n(\"584a\").Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},\"456d\":function(t,e,n){var r=n(\"4bf8\"),i=n(\"0d58\");n(\"5eda\")(\"keys\",(function(){return function(t){return i(r(t))}}))},4588:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},\"45f2\":function(t,e,n){var r=n(\"d9f6\").f,i=n(\"07e3\"),o=n(\"5168\")(\"toStringTag\");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},\"46a7\":function(t,e,n){var r=n(\"63b6\");r(r.S+r.F*!n(\"8e60\"),\"Object\",{defineProperty:n(\"d9f6\").f})},\"47ee\":function(t,e,n){var r=n(\"c3a1\"),i=n(\"9aa9\"),o=n(\"355d\");t.exports=function(t){var e=r(t),n=i.f;if(n){var c,u=n(t),a=o.f,s=0;while(u.length>s)a.call(t,c=u[s++])&&e.push(c)}return e}},\"481b\":function(t,e){t.exports={}},\"4a59\":function(t,e,n){var r=n(\"9b43\"),i=n(\"1fa8\"),o=n(\"33a4\"),c=n(\"cb7c\"),u=n(\"9def\"),a=n(\"27ee\"),s={},f={};e=t.exports=function(t,e,n,l,p){var h,v,d,y,b=p?function(){return t}:a(t),g=r(n,l,e?2:1),m=0;if(\"function\"!=typeof b)throw TypeError(t+\" is not iterable!\");if(o(b)){for(h=u(t.length);h>m;m++)if(y=e?g(c(v=t[m])[0],v[1]):g(t[m]),y===s||y===f)return y}else for(d=b.call(t);!(v=d.next()).done;)if(y=i(d,g,v.value,e),y===s||y===f)return y};e.BREAK=s,e.RETURN=f},\"4bf8\":function(t,e,n){var r=n(\"be13\");t.exports=function(t){return Object(r(t))}},\"4c95\":function(t,e,n){\"use strict\";var r=n(\"e53d\"),i=n(\"584a\"),o=n(\"d9f6\"),c=n(\"8e60\"),u=n(\"5168\")(\"species\");t.exports=function(t){var e=\"function\"==typeof i[t]?i[t]:r[t];c&&e&&!e[u]&&o.f(e,u,{configurable:!0,get:function(){return this}})}},\"4ee1\":function(t,e,n){var r=n(\"5168\")(\"iterator\"),i=!1;try{var o=[7][r]();o[\"return\"]=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(c){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],u=o[r]();u.next=function(){return{done:n=!0}},o[r]=function(){return u},t(o)}catch(c){}return n}},\"504c\":function(t,e,n){var r=n(\"9e1e\"),i=n(\"0d58\"),o=n(\"6821\"),c=n(\"52a7\").f;t.exports=function(t){return function(e){var n,u=o(e),a=i(u),s=a.length,f=0,l=[];while(s>f)n=a[f++],r&&!c.call(u,n)||l.push(t?[n,u[n]]:u[n]);return l}}},\"50ed\":function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},5147:function(t,e,n){var r=n(\"2b4c\")(\"match\");t.exports=function(t){var e=/./;try{\"/./\"[t](e)}catch(n){try{return e[r]=!1,!\"/./\"[t](e)}catch(i){}}return!0}},5168:function(t,e,n){var r=n(\"dbdb\")(\"wks\"),i=n(\"62a0\"),o=n(\"e53d\").Symbol,c=\"function\"==typeof o,u=t.exports=function(t){return r[t]||(r[t]=c&&o[t]||(c?o:i)(\"Symbol.\"+t))};u.store=r},\"520a\":function(t,e,n){\"use strict\";var r=n(\"0bfb\"),i=RegExp.prototype.exec,o=String.prototype.replace,c=i,u=\"lastIndex\",a=function(){var t=/a/,e=/b*/g;return i.call(t,\"a\"),i.call(e,\"a\"),0!==t[u]||0!==e[u]}(),s=void 0!==/()??/.exec(\"\")[1],f=a||s;f&&(c=function(t){var e,n,c,f,l=this;return s&&(n=new RegExp(\"^\"+l.source+\"$(?!\\\\s)\",r.call(l))),a&&(e=l[u]),c=i.call(l,t),a&&c&&(l[u]=l.global?c.index+c[0].length:e),s&&c&&c.length>1&&o.call(c[0],n,(function(){for(f=1;f<arguments.length-2;f++)void 0===arguments[f]&&(c[f]=void 0)})),c}),t.exports=c},\"52a7\":function(t,e){e.f={}.propertyIsEnumerable},\"53e2\":function(t,e,n){var r=n(\"07e3\"),i=n(\"241e\"),o=n(\"5559\")(\"IE_PROTO\"),c=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},\"549b\":function(t,e,n){\"use strict\";var r=n(\"d864\"),i=n(\"63b6\"),o=n(\"241e\"),c=n(\"b0dc\"),u=n(\"3702\"),a=n(\"b447\"),s=n(\"20fd\"),f=n(\"7cd6\");i(i.S+i.F*!n(\"4ee1\")((function(t){Array.from(t)})),\"Array\",{from:function(t){var e,n,i,l,p=o(t),h=\"function\"==typeof this?this:Array,v=arguments.length,d=v>1?arguments[1]:void 0,y=void 0!==d,b=0,g=f(p);if(y&&(d=r(d,v>2?arguments[2]:void 0,2)),void 0==g||h==Array&&u(g))for(e=a(p.length),n=new h(e);e>b;b++)s(n,b,y?d(p[b],b):p[b]);else for(l=g.call(p),n=new h;!(i=l.next()).done;b++)s(n,b,y?c(l,d,[i.value,b],!0):i.value);return n.length=b,n}})},\"54a1\":function(t,e,n){n(\"6c1c\"),n(\"1654\"),t.exports=n(\"95d5\")},\"551c\":function(t,e,n){\"use strict\";var r,i,o,c,u=n(\"2d00\"),a=n(\"7726\"),s=n(\"9b43\"),f=n(\"23c6\"),l=n(\"5ca1\"),p=n(\"d3f4\"),h=n(\"d8e8\"),v=n(\"f605\"),d=n(\"4a59\"),y=n(\"ebd6\"),b=n(\"1991\").set,g=n(\"8079\")(),m=n(\"a5b8\"),x=n(\"9c80\"),w=n(\"a25f\"),_=n(\"bcaa\"),S=\"Promise\",O=a.TypeError,k=a.process,j=k&&k.versions,E=j&&j.v8||\"\",P=a[S],A=\"process\"==f(k),L=function(){},T=i=m.f,M=!!function(){try{var t=P.resolve(1),e=(t.constructor={})[n(\"2b4c\")(\"species\")]=function(t){t(L,L)};return(A||\"function\"==typeof PromiseRejectionEvent)&&t.then(L)instanceof e&&0!==E.indexOf(\"6.6\")&&-1===w.indexOf(\"Chrome/66\")}catch(r){}}(),C=function(t){var e;return!(!p(t)||\"function\"!=typeof(e=t.then))&&e},F=function(t,e){if(!t._n){t._n=!0;var n=t._c;g((function(){var r=t._v,i=1==t._s,o=0,c=function(e){var n,o,c,u=i?e.ok:e.fail,a=e.resolve,s=e.reject,f=e.domain;try{u?(i||(2==t._h&&N(t),t._h=1),!0===u?n=r:(f&&f.enter(),n=u(r),f&&(f.exit(),c=!0)),n===e.promise?s(O(\"Promise-chain cycle\")):(o=C(n))?o.call(n,a,s):a(n)):s(r)}catch(l){f&&!c&&f.exit(),s(l)}};while(n.length>o)c(n[o++]);t._c=[],t._n=!1,e&&!t._h&&I(t)}))}},I=function(t){b.call(a,(function(){var e,n,r,i=t._v,o=R(t);if(o&&(e=x((function(){A?k.emit(\"unhandledRejection\",i,t):(n=a.onunhandledrejection)?n({promise:t,reason:i}):(r=a.console)&&r.error&&r.error(\"Unhandled promise rejection\",i)})),t._h=A||R(t)?2:1),t._a=void 0,o&&e.e)throw e.v}))},R=function(t){return 1!==t._h&&0===(t._a||t._c).length},N=function(t){b.call(a,(function(){var e;A?k.emit(\"rejectionHandled\",t):(e=a.onrejectionhandled)&&e({promise:t,reason:t._v})}))},q=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),F(e,!0))},D=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw O(\"Promise can't be resolved itself\");(e=C(t))?g((function(){var r={_w:n,_d:!1};try{e.call(t,s(D,r,1),s(q,r,1))}catch(i){q.call(r,i)}})):(n._v=t,n._s=1,F(n,!1))}catch(r){q.call({_w:n,_d:!1},r)}}};M||(P=function(t){v(this,P,S,\"_h\"),h(t),r.call(this);try{t(s(D,this,1),s(q,this,1))}catch(e){q.call(this,e)}},r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n(\"dcbc\")(P.prototype,{then:function(t,e){var n=T(y(this,P));return n.ok=\"function\"!=typeof t||t,n.fail=\"function\"==typeof e&&e,n.domain=A?k.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&F(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r;this.promise=t,this.resolve=s(D,t,1),this.reject=s(q,t,1)},m.f=T=function(t){return t===P||t===c?new o(t):i(t)}),l(l.G+l.W+l.F*!M,{Promise:P}),n(\"7f20\")(P,S),n(\"7a56\")(S),c=n(\"8378\")[S],l(l.S+l.F*!M,S,{reject:function(t){var e=T(this),n=e.reject;return n(t),e.promise}}),l(l.S+l.F*(u||!M),S,{resolve:function(t){return _(u&&this===c?P:this,t)}}),l(l.S+l.F*!(M&&n(\"5cc5\")((function(t){P.all(t)[\"catch\"](L)}))),S,{all:function(t){var e=this,n=T(e),r=n.resolve,i=n.reject,o=x((function(){var n=[],o=0,c=1;d(t,!1,(function(t){var u=o++,a=!1;n.push(void 0),c++,e.resolve(t).then((function(t){a||(a=!0,n[u]=t,--c||r(n))}),i)})),--c||r(n)}));return o.e&&i(o.v),n.promise},race:function(t){var e=this,n=T(e),r=n.reject,i=x((function(){d(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return i.e&&r(i.v),n.promise}})},5537:function(t,e,n){var r=n(\"8378\"),i=n(\"7726\"),o=\"__core-js_shared__\",c=i[o]||(i[o]={});(t.exports=function(t,e){return c[t]||(c[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:r.version,mode:n(\"2d00\")?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},5559:function(t,e,n){var r=n(\"dbdb\")(\"keys\"),i=n(\"62a0\");t.exports=function(t){return r[t]||(r[t]=i(t))}},\"584a\":function(t,e){var n=t.exports={version:\"2.6.10\"};\"number\"==typeof __e&&(__e=n)},\"5b4e\":function(t,e,n){var r=n(\"36c3\"),i=n(\"b447\"),o=n(\"0fc9\");t.exports=function(t){return function(e,n,c){var u,a=r(e),s=i(a.length),f=o(c,s);if(t&&n!=n){while(s>f)if(u=a[f++],u!=u)return!0}else for(;s>f;f++)if((t||f in a)&&a[f]===n)return t||f||0;return!t&&-1}}},\"5c95\":function(t,e,n){var r=n(\"35e8\");t.exports=function(t,e,n){for(var i in e)n&&t[i]?t[i]=e[i]:r(t,i,e[i]);return t}},\"5ca1\":function(t,e,n){var r=n(\"7726\"),i=n(\"8378\"),o=n(\"32e9\"),c=n(\"2aba\"),u=n(\"9b43\"),a=\"prototype\",s=function(t,e,n){var f,l,p,h,v=t&s.F,d=t&s.G,y=t&s.S,b=t&s.P,g=t&s.B,m=d?r:y?r[e]||(r[e]={}):(r[e]||{})[a],x=d?i:i[e]||(i[e]={}),w=x[a]||(x[a]={});for(f in d&&(n=e),n)l=!v&&m&&void 0!==m[f],p=(l?m:n)[f],h=g&&l?u(p,r):b&&\"function\"==typeof p?u(Function.call,p):p,m&&c(m,f,p,t&s.U),x[f]!=p&&o(x,f,h),b&&w[f]!=p&&(w[f]=p)};r.core=i,s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},\"5cc5\":function(t,e,n){var r=n(\"2b4c\")(\"iterator\"),i=!1;try{var o=[7][r]();o[\"return\"]=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(c){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],u=o[r]();u.next=function(){return{done:n=!0}},o[r]=function(){return u},t(o)}catch(c){}return n}},\"5d58\":function(t,e,n){t.exports=n(\"d8d6\")},\"5dbc\":function(t,e,n){var r=n(\"d3f4\"),i=n(\"8b97\").set;t.exports=function(t,e,n){var o,c=e.constructor;return c!==n&&\"function\"==typeof c&&(o=c.prototype)!==n.prototype&&r(o)&&i&&i(t,o),t}},\"5eda\":function(t,e,n){var r=n(\"5ca1\"),i=n(\"8378\"),o=n(\"79e5\");t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],c={};c[t]=e(n),r(r.S+r.F*o((function(){n(1)})),\"Object\",c)}},\"5f1b\":function(t,e,n){\"use strict\";var r=n(\"23c6\"),i=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if(\"function\"===typeof n){var o=n.call(t,e);if(\"object\"!==typeof o)throw new TypeError(\"RegExp exec method returned something other than an Object or null\");return o}if(\"RegExp\"!==r(t))throw new TypeError(\"RegExp#exec called on incompatible receiver\");return i.call(t,e)}},\"613b\":function(t,e,n){var r=n(\"5537\")(\"keys\"),i=n(\"ca5a\");t.exports=function(t){return r[t]||(r[t]=i(t))}},\"626a\":function(t,e,n){var r=n(\"2d95\");t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},\"62a0\":function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},\"63b6\":function(t,e,n){var r=n(\"e53d\"),i=n(\"584a\"),o=n(\"d864\"),c=n(\"35e8\"),u=n(\"07e3\"),a=\"prototype\",s=function(t,e,n){var f,l,p,h=t&s.F,v=t&s.G,d=t&s.S,y=t&s.P,b=t&s.B,g=t&s.W,m=v?i:i[e]||(i[e]={}),x=m[a],w=v?r:d?r[e]:(r[e]||{})[a];for(f in v&&(n=e),n)l=!h&&w&&void 0!==w[f],l&&u(m,f)||(p=l?w[f]:n[f],m[f]=v&&\"function\"!=typeof w[f]?n[f]:b&&l?o(p,r):g&&w[f]==p?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[a]=t[a],e}(p):y&&\"function\"==typeof p?o(Function.call,p):p,y&&((m.virtual||(m.virtual={}))[f]=p,t&s.R&&x&&!x[f]&&c(x,f,p)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},\"63c6\":function(t,e,n){\"use strict\";var r=n(\"3620\"),i=n.n(r);i.a},\"656e\":function(t,e,n){\"use strict\";var r=n(\"79aa\");function i(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError(\"Bad Promise constructor\");e=t,n=r})),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new i(t)}},6718:function(t,e,n){var r=n(\"e53d\"),i=n(\"584a\"),o=n(\"b8e3\"),c=n(\"ccb9\"),u=n(\"d9f6\").f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});\"_\"==t.charAt(0)||t in e||u(e,t,{value:c.f(t)})}},6762:function(t,e,n){\"use strict\";var r=n(\"5ca1\"),i=n(\"c366\")(!0);r(r.P,\"Array\",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(\"9c6c\")(\"includes\")},\"67bb\":function(t,e,n){t.exports=n(\"f921\")},6821:function(t,e,n){var r=n(\"626a\"),i=n(\"be13\");t.exports=function(t){return r(i(t))}},\"696e\":function(t,e,n){n(\"c207\"),n(\"1654\"),n(\"6c1c\"),n(\"24c5\"),n(\"3c11\"),n(\"43fc\"),t.exports=n(\"584a\").Promise},\"69a8\":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},\"69d3\":function(t,e,n){n(\"6718\")(\"asyncIterator\")},\"6a99\":function(t,e,n){var r=n(\"d3f4\");t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&\"function\"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if(\"function\"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&\"function\"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError(\"Can't convert object to primitive value\")}},\"6abf\":function(t,e,n){var r=n(\"e6f3\"),i=n(\"1691\").concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},\"6b4c\":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},\"6c1c\":function(t,e,n){n(\"c367\");for(var r=n(\"e53d\"),i=n(\"35e8\"),o=n(\"481b\"),c=n(\"5168\")(\"toStringTag\"),u=\"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList\".split(\",\"),a=0;a<u.length;a++){var s=u[a],f=r[s],l=f&&f.prototype;l&&!l[c]&&i(l,c,s),o[s]=o.Array}},\"71c1\":function(t,e,n){var r=n(\"3a38\"),i=n(\"25eb\");t.exports=function(t){return function(e,n){var o,c,u=String(i(e)),a=r(n),s=u.length;return a<0||a>=s?t?\"\":void 0:(o=u.charCodeAt(a),o<55296||o>56319||a+1===s||(c=u.charCodeAt(a+1))<56320||c>57343?t?u.charAt(a):o:t?u.slice(a,a+2):c-56320+(o-55296<<10)+65536)}}},7333:function(t,e,n){\"use strict\";var r=n(\"9e1e\"),i=n(\"0d58\"),o=n(\"2621\"),c=n(\"52a7\"),u=n(\"4bf8\"),a=n(\"626a\"),s=Object.assign;t.exports=!s||n(\"79e5\")((function(){var t={},e={},n=Symbol(),r=\"abcdefghijklmnopqrst\";return t[n]=7,r.split(\"\").forEach((function(t){e[t]=t})),7!=s({},t)[n]||Object.keys(s({},e)).join(\"\")!=r}))?function(t,e){var n=u(t),s=arguments.length,f=1,l=o.f,p=c.f;while(s>f){var h,v=a(arguments[f++]),d=l?i(v).concat(l(v)):i(v),y=d.length,b=0;while(y>b)h=d[b++],r&&!p.call(v,h)||(n[h]=v[h])}return n}:s},7514:function(t,e,n){\"use strict\";var r=n(\"5ca1\"),i=n(\"0a49\")(5),o=\"find\",c=!0;o in[]&&Array(1)[o]((function(){c=!1})),r(r.P+r.F*c,\"Array\",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(\"9c6c\")(o)},\"765d\":function(t,e,n){n(\"6718\")(\"observable\")},7726:function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},\"774e\":function(t,e,n){t.exports=n(\"d2d5\")},\"77f1\":function(t,e,n){var r=n(\"4588\"),i=Math.max,o=Math.min;t.exports=function(t,e){return t=r(t),t<0?i(t+e,0):o(t,e)}},\"794b\":function(t,e,n){t.exports=!n(\"8e60\")&&!n(\"294c\")((function(){return 7!=Object.defineProperty(n(\"1ec9\")(\"div\"),\"a\",{get:function(){return 7}}).a}))},\"795b\":function(t,e,n){t.exports=n(\"696e\")},\"79aa\":function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},\"79e5\":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},\"7a56\":function(t,e,n){\"use strict\";var r=n(\"7726\"),i=n(\"86cc\"),o=n(\"9e1e\"),c=n(\"2b4c\")(\"species\");t.exports=function(t){var e=r[t];o&&e&&!e[c]&&i.f(e,c,{configurable:!0,get:function(){return this}})}},\"7cd6\":function(t,e,n){var r=n(\"40c3\"),i=n(\"5168\")(\"iterator\"),o=n(\"481b\");t.exports=n(\"584a\").getIteratorMethod=function(t){if(void 0!=t)return t[i]||t[\"@@iterator\"]||o[r(t)]}},\"7e90\":function(t,e,n){var r=n(\"d9f6\"),i=n(\"e4ae\"),o=n(\"c3a1\");t.exports=n(\"8e60\")?Object.defineProperties:function(t,e){i(t);var n,c=o(e),u=c.length,a=0;while(u>a)r.f(t,n=c[a++],e[n]);return t}},\"7f20\":function(t,e,n){var r=n(\"86cc\").f,i=n(\"69a8\"),o=n(\"2b4c\")(\"toStringTag\");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},\"7f7f\":function(t,e,n){var r=n(\"86cc\").f,i=Function.prototype,o=/^\\s*function ([^ (]*)/,c=\"name\";c in i||n(\"9e1e\")&&r(i,c,{configurable:!0,get:function(){try{return(\"\"+this).match(o)[1]}catch(t){return\"\"}}})},8079:function(t,e,n){var r=n(\"7726\"),i=n(\"1991\").set,o=r.MutationObserver||r.WebKitMutationObserver,c=r.process,u=r.Promise,a=\"process\"==n(\"2d95\")(c);t.exports=function(){var t,e,n,s=function(){var r,i;a&&(r=c.domain)&&r.exit();while(t){i=t.fn,t=t.next;try{i()}catch(o){throw t?n():e=void 0,o}}e=void 0,r&&r.enter()};if(a)n=function(){c.nextTick(s)};else if(!o||r.navigator&&r.navigator.standalone)if(u&&u.resolve){var f=u.resolve(void 0);n=function(){f.then(s)}}else n=function(){i.call(r,s)};else{var l=!0,p=document.createTextNode(\"\");new o(s).observe(p,{characterData:!0}),n=function(){p.data=l=!l}}return function(r){var i={fn:r,next:void 0};e&&(e.next=i),t||(t=i,n()),e=i}}},8378:function(t,e){var n=t.exports={version:\"2.6.10\"};\"number\"==typeof __e&&(__e=n)},\"83a1\":function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},8436:function(t,e){t.exports=function(){}},\"84f2\":function(t,e){t.exports={}},\"85f2\":function(t,e,n){t.exports=n(\"454f\")},8615:function(t,e,n){var r=n(\"5ca1\"),i=n(\"504c\")(!1);r(r.S,\"Object\",{values:function(t){return i(t)}})},\"86cc\":function(t,e,n){var r=n(\"cb7c\"),i=n(\"c69a\"),o=n(\"6a99\"),c=Object.defineProperty;e.f=n(\"9e1e\")?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return c(t,e,n)}catch(u){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},\"8b97\":function(t,e,n){var r=n(\"d3f4\"),i=n(\"cb7c\"),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,r){try{r=n(\"9b43\")(Function.call,n(\"11e9\").f(Object.prototype,\"__proto__\").set,2),r(t,[]),e=!(t instanceof Array)}catch(i){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:o}},\"8e60\":function(t,e,n){t.exports=!n(\"294c\")((function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a}))},\"8e6e\":function(t,e,n){var r=n(\"5ca1\"),i=n(\"990b\"),o=n(\"6821\"),c=n(\"11e9\"),u=n(\"f1ae\");r(r.S,\"Object\",{getOwnPropertyDescriptors:function(t){var e,n,r=o(t),a=c.f,s=i(r),f={},l=0;while(s.length>l)n=a(r,e=s[l++]),void 0!==n&&u(f,e,n);return f}})},\"8f60\":function(t,e,n){\"use strict\";var r=n(\"a159\"),i=n(\"aebd\"),o=n(\"45f2\"),c={};n(\"35e8\")(c,n(\"5168\")(\"iterator\"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(c,{next:i(1,n)}),o(t,e+\" Iterator\")}},9003:function(t,e,n){var r=n(\"6b4c\");t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},9093:function(t,e,n){var r=n(\"ce10\"),i=n(\"e11e\").concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},9138:function(t,e,n){t.exports=n(\"35e8\")},9224:function(t){t.exports=JSON.parse('{\"a\":\"0.5.1\"}')},\"95d5\":function(t,e,n){var r=n(\"40c3\"),i=n(\"5168\")(\"iterator\"),o=n(\"481b\");t.exports=n(\"584a\").isIterable=function(t){var e=Object(t);return void 0!==e[i]||\"@@iterator\"in e||o.hasOwnProperty(r(e))}},\"96cf\":function(t,e,n){var r=function(t){\"use strict\";var e,n=Object.prototype,r=n.hasOwnProperty,i=\"function\"===typeof Symbol?Symbol:{},o=i.iterator||\"@@iterator\",c=i.asyncIterator||\"@@asyncIterator\",u=i.toStringTag||\"@@toStringTag\";function a(t,e,n,r){var i=e&&e.prototype instanceof d?e:d,o=Object.create(i.prototype),c=new P(r||[]);return o._invoke=O(t,n,c),o}function s(t,e,n){try{return{type:\"normal\",arg:t.call(e,n)}}catch(r){return{type:\"throw\",arg:r}}}t.wrap=a;var f=\"suspendedStart\",l=\"suspendedYield\",p=\"executing\",h=\"completed\",v={};function d(){}function y(){}function b(){}var g={};g[o]=function(){return this};var m=Object.getPrototypeOf,x=m&&m(m(A([])));x&&x!==n&&r.call(x,o)&&(g=x);var w=b.prototype=d.prototype=Object.create(g);function _(t){[\"next\",\"throw\",\"return\"].forEach((function(e){t[e]=function(t){return this._invoke(e,t)}}))}function S(t){function e(n,i,o,c){var u=s(t[n],t,i);if(\"throw\"!==u.type){var a=u.arg,f=a.value;return f&&\"object\"===typeof f&&r.call(f,\"__await\")?Promise.resolve(f.__await).then((function(t){e(\"next\",t,o,c)}),(function(t){e(\"throw\",t,o,c)})):Promise.resolve(f).then((function(t){a.value=t,o(a)}),(function(t){return e(\"throw\",t,o,c)}))}c(u.arg)}var n;function i(t,r){function i(){return new Promise((function(n,i){e(t,r,n,i)}))}return n=n?n.then(i,i):i()}this._invoke=i}function O(t,e,n){var r=f;return function(i,o){if(r===p)throw new Error(\"Generator is already running\");if(r===h){if(\"throw\"===i)throw o;return L()}n.method=i,n.arg=o;while(1){var c=n.delegate;if(c){var u=k(c,n);if(u){if(u===v)continue;return u}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(r===f)throw r=h,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);r=p;var a=s(t,e,n);if(\"normal\"===a.type){if(r=n.done?h:l,a.arg===v)continue;return{value:a.arg,done:n.done}}\"throw\"===a.type&&(r=h,n.method=\"throw\",n.arg=a.arg)}}}function k(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,\"throw\"===n.method){if(t.iterator[\"return\"]&&(n.method=\"return\",n.arg=e,k(t,n),\"throw\"===n.method))return v;n.method=\"throw\",n.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return v}var i=s(r,t.iterator,n.arg);if(\"throw\"===i.type)return n.method=\"throw\",n.arg=i.arg,n.delegate=null,v;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,\"return\"!==n.method&&(n.method=\"next\",n.arg=e),n.delegate=null,v):o:(n.method=\"throw\",n.arg=new TypeError(\"iterator result is not an object\"),n.delegate=null,v)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type=\"normal\",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(j,this),this.reset(!0)}function A(t){if(t){var n=t[o];if(n)return n.call(t);if(\"function\"===typeof t.next)return t;if(!isNaN(t.length)){var i=-1,c=function n(){while(++i<t.length)if(r.call(t,i))return n.value=t[i],n.done=!1,n;return n.value=e,n.done=!0,n};return c.next=c}}return{next:L}}function L(){return{value:e,done:!0}}return y.prototype=w.constructor=b,b.constructor=y,b[u]=y.displayName=\"GeneratorFunction\",t.isGeneratorFunction=function(t){var e=\"function\"===typeof t&&t.constructor;return!!e&&(e===y||\"GeneratorFunction\"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,u in t||(t[u]=\"GeneratorFunction\")),t.prototype=Object.create(w),t},t.awrap=function(t){return{__await:t}},_(S.prototype),S.prototype[c]=function(){return this},t.AsyncIterator=S,t.async=function(e,n,r,i){var o=new S(a(e,n,r,i));return t.isGeneratorFunction(n)?o:o.next().then((function(t){return t.done?t.value:o.next()}))},_(w),w[u]=\"Generator\",w[o]=function(){return this},w.toString=function(){return\"[object Generator]\"},t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){while(e.length){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},t.values=A,P.prototype={constructor:P,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=e,this.tryEntries.forEach(E),!t)for(var n in this)\"t\"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0],e=t.completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(r,i){return u.type=\"throw\",u.arg=t,n.next=r,i&&(n.method=\"next\",n.arg=e),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var c=this.tryEntries[o],u=c.completion;if(\"root\"===c.tryLoc)return i(\"end\");if(c.tryLoc<=this.prev){var a=r.call(c,\"catchLoc\"),s=r.call(c,\"finallyLoc\");if(a&&s){if(this.prev<c.catchLoc)return i(c.catchLoc,!0);if(this.prev<c.finallyLoc)return i(c.finallyLoc)}else if(a){if(this.prev<c.catchLoc)return i(c.catchLoc,!0)}else{if(!s)throw new Error(\"try statement without catch or finally\");if(this.prev<c.finallyLoc)return i(c.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,\"finallyLoc\")&&this.prev<i.finallyLoc){var o=i;break}}o&&(\"break\"===t||\"continue\"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var c=o?o.completion:{};return c.type=t,c.arg=e,o?(this.method=\"next\",this.next=o.finallyLoc,v):this.complete(c)},complete:function(t,e){if(\"throw\"===t.type)throw t.arg;return\"break\"===t.type||\"continue\"===t.type?this.next=t.arg:\"return\"===t.type?(this.rval=this.arg=t.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),E(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if(\"throw\"===r.type){var i=r.arg;E(n)}return i}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,n,r){return this.delegate={iterator:A(t),resultName:n,nextLoc:r},\"next\"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=r}catch(i){Function(\"r\",\"regeneratorRuntime = r\")(r)}},\"990b\":function(t,e,n){var r=n(\"9093\"),i=n(\"2621\"),o=n(\"cb7c\"),c=n(\"7726\").Reflect;t.exports=c&&c.ownKeys||function(t){var e=r.f(o(t)),n=i.f;return n?e.concat(n(t)):e}},\"9aa9\":function(t,e){e.f=Object.getOwnPropertySymbols},\"9b43\":function(t,e,n){var r=n(\"d8e8\");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},\"9c6c\":function(t,e,n){var r=n(\"2b4c\")(\"unscopables\"),i=Array.prototype;void 0==i[r]&&n(\"32e9\")(i,r,{}),t.exports=function(t){i[r][t]=!0}},\"9c80\":function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},\"9def\":function(t,e,n){var r=n(\"4588\"),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},\"9e1e\":function(t,e,n){t.exports=!n(\"79e5\")((function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a}))},a159:function(t,e,n){var r=n(\"e4ae\"),i=n(\"7e90\"),o=n(\"1691\"),c=n(\"5559\")(\"IE_PROTO\"),u=function(){},a=\"prototype\",s=function(){var t,e=n(\"1ec9\")(\"iframe\"),r=o.length,i=\"<\",c=\">\";e.style.display=\"none\",n(\"32fc\").appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(i+\"script\"+c+\"document.F=Object\"+i+\"/script\"+c),t.close(),s=t.F;while(r--)delete s[a][o[r]];return s()};t.exports=Object.create||function(t,e){var n;return null!==t?(u[a]=r(t),n=new u,u[a]=null,n[c]=t):n=s(),void 0===e?n:i(n,e)}},a22a:function(t,e,n){var r=n(\"d864\"),i=n(\"b0dc\"),o=n(\"3702\"),c=n(\"e4ae\"),u=n(\"b447\"),a=n(\"7cd6\"),s={},f={};e=t.exports=function(t,e,n,l,p){var h,v,d,y,b=p?function(){return t}:a(t),g=r(n,l,e?2:1),m=0;if(\"function\"!=typeof b)throw TypeError(t+\" is not iterable!\");if(o(b)){for(h=u(t.length);h>m;m++)if(y=e?g(c(v=t[m])[0],v[1]):g(t[m]),y===s||y===f)return y}else for(d=b.call(t);!(v=d.next()).done;)if(y=i(d,g,v.value,e),y===s||y===f)return y};e.BREAK=s,e.RETURN=f},a25f:function(t,e,n){var r=n(\"7726\"),i=r.navigator;t.exports=i&&i.userAgent||\"\"},a481:function(t,e,n){\"use strict\";var r=n(\"cb7c\"),i=n(\"4bf8\"),o=n(\"9def\"),c=n(\"4588\"),u=n(\"0390\"),a=n(\"5f1b\"),s=Math.max,f=Math.min,l=Math.floor,p=/\\$([$&`']|\\d\\d?|<[^>]*>)/g,h=/\\$([$&`']|\\d\\d?)/g,v=function(t){return void 0===t?t:String(t)};n(\"214f\")(\"replace\",2,(function(t,e,n,d){return[function(r,i){var o=t(this),c=void 0==r?void 0:r[e];return void 0!==c?c.call(r,o,i):n.call(String(o),r,i)},function(t,e){var i=d(n,t,this,e);if(i.done)return i.value;var l=r(t),p=String(this),h=\"function\"===typeof e;h||(e=String(e));var b=l.global;if(b){var g=l.unicode;l.lastIndex=0}var m=[];while(1){var x=a(l,p);if(null===x)break;if(m.push(x),!b)break;var w=String(x[0]);\"\"===w&&(l.lastIndex=u(p,o(l.lastIndex),g))}for(var _=\"\",S=0,O=0;O<m.length;O++){x=m[O];for(var k=String(x[0]),j=s(f(c(x.index),p.length),0),E=[],P=1;P<x.length;P++)E.push(v(x[P]));var A=x.groups;if(h){var L=[k].concat(E,j,p);void 0!==A&&L.push(A);var T=String(e.apply(void 0,L))}else T=y(k,p,j,E,A,e);j>=S&&(_+=p.slice(S,j)+T,S=j+k.length)}return _+p.slice(S)}];function y(t,e,r,o,c,u){var a=r+t.length,s=o.length,f=h;return void 0!==c&&(c=i(c),f=p),n.call(u,f,(function(n,i){var u;switch(i.charAt(0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return e.slice(0,r);case\"'\":return e.slice(a);case\"<\":u=c[i.slice(1,-1)];break;default:var f=+i;if(0===f)return n;if(f>s){var p=l(f/10);return 0===p?n:p<=s?void 0===o[p-1]?i.charAt(1):o[p-1]+i.charAt(1):n}u=o[f-1]}return void 0===u?\"\":u}))}}))},a5b8:function(t,e,n){\"use strict\";var r=n(\"d8e8\");function i(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError(\"Bad Promise constructor\");e=t,n=r})),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new i(t)}},a745:function(t,e,n){t.exports=n(\"f410\")},aa77:function(t,e,n){var r=n(\"5ca1\"),i=n(\"be13\"),o=n(\"79e5\"),c=n(\"fdef\"),u=\"[\"+c+\"]\",a=\"
\",s=RegExp(\"^\"+u+u+\"*\"),f=RegExp(u+u+\"*$\"),l=function(t,e,n){var i={},u=o((function(){return!!c[t]()||a[t]()!=a})),s=i[t]=u?e(p):c[t];n&&(i[n]=s),r(r.P+r.F*u,\"String\",i)},p=l.trim=function(t,e){return t=String(i(t)),1&e&&(t=t.replace(s,\"\")),2&e&&(t=t.replace(f,\"\")),t};t.exports=l},aae3:function(t,e,n){var r=n(\"d3f4\"),i=n(\"2d95\"),o=n(\"2b4c\")(\"match\");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[o])?!!e:\"RegExp\"==i(t))}},aba2:function(t,e,n){var r=n(\"e53d\"),i=n(\"4178\").set,o=r.MutationObserver||r.WebKitMutationObserver,c=r.process,u=r.Promise,a=\"process\"==n(\"6b4c\")(c);t.exports=function(){var t,e,n,s=function(){var r,i;a&&(r=c.domain)&&r.exit();while(t){i=t.fn,t=t.next;try{i()}catch(o){throw t?n():e=void 0,o}}e=void 0,r&&r.enter()};if(a)n=function(){c.nextTick(s)};else if(!o||r.navigator&&r.navigator.standalone)if(u&&u.resolve){var f=u.resolve(void 0);n=function(){f.then(s)}}else n=function(){i.call(r,s)};else{var l=!0,p=document.createTextNode(\"\");new o(s).observe(p,{characterData:!0}),n=function(){p.data=l=!l}}return function(r){var i={fn:r,next:void 0};e&&(e.next=i),t||(t=i,n()),e=i}}},ac6a:function(t,e,n){for(var r=n(\"cadf\"),i=n(\"0d58\"),o=n(\"2aba\"),c=n(\"7726\"),u=n(\"32e9\"),a=n(\"84f2\"),s=n(\"2b4c\"),f=s(\"iterator\"),l=s(\"toStringTag\"),p=a.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=i(h),d=0;d<v.length;d++){var y,b=v[d],g=h[b],m=c[b],x=m&&m.prototype;if(x&&(x[f]||u(x,f,p),x[l]||u(x,l,b),a[b]=p,g))for(y in r)x[y]||o(x,y,r[y],!0)}},aebd:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},b0c5:function(t,e,n){\"use strict\";var r=n(\"520a\");n(\"5ca1\")({target:\"RegExp\",proto:!0,forced:r!==/./.exec},{exec:r})},b0dc:function(t,e,n){var r=n(\"e4ae\");t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(c){var o=t[\"return\"];throw void 0!==o&&r(o.call(t)),c}}},b447:function(t,e,n){var r=n(\"3a38\"),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},b8e3:function(t,e){t.exports=!0},bc13:function(t,e,n){var r=n(\"e53d\"),i=r.navigator;t.exports=i&&i.userAgent||\"\"},bcaa:function(t,e,n){var r=n(\"cb7c\"),i=n(\"d3f4\"),o=n(\"a5b8\");t.exports=function(t,e){if(r(t),i(e)&&e.constructor===t)return e;var n=o.f(t),c=n.resolve;return c(e),n.promise}},be13:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},bf0b:function(t,e,n){var r=n(\"355d\"),i=n(\"aebd\"),o=n(\"36c3\"),c=n(\"1bc3\"),u=n(\"07e3\"),a=n(\"794b\"),s=Object.getOwnPropertyDescriptor;e.f=n(\"8e60\")?s:function(t,e){if(t=o(t),e=c(e,!0),a)try{return s(t,e)}catch(n){}if(u(t,e))return i(!r.f.call(t,e),t[e])}},c207:function(t,e){},c366:function(t,e,n){var r=n(\"6821\"),i=n(\"9def\"),o=n(\"77f1\");t.exports=function(t){return function(e,n,c){var u,a=r(e),s=i(a.length),f=o(c,s);if(t&&n!=n){while(s>f)if(u=a[f++],u!=u)return!0}else for(;s>f;f++)if((t||f in a)&&a[f]===n)return t||f||0;return!t&&-1}}},c367:function(t,e,n){\"use strict\";var r=n(\"8436\"),i=n(\"50ed\"),o=n(\"481b\"),c=n(\"36c3\");t.exports=n(\"30f1\")(Array,\"Array\",(function(t,e){this._t=c(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,\"keys\"==e?n:\"values\"==e?t[n]:[n,t[n]])}),\"values\"),o.Arguments=o.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},c3a1:function(t,e,n){var r=n(\"e6f3\"),i=n(\"1691\");t.exports=Object.keys||function(t){return r(t,i)}},c5f6:function(t,e,n){\"use strict\";var r=n(\"7726\"),i=n(\"69a8\"),o=n(\"2d95\"),c=n(\"5dbc\"),u=n(\"6a99\"),a=n(\"79e5\"),s=n(\"9093\").f,f=n(\"11e9\").f,l=n(\"86cc\").f,p=n(\"aa77\").trim,h=\"Number\",v=r[h],d=v,y=v.prototype,b=o(n(\"2aeb\")(y))==h,g=\"trim\"in String.prototype,m=function(t){var e=u(t,!1);if(\"string\"==typeof e&&e.length>2){e=g?e.trim():p(e,3);var n,r,i,o=e.charCodeAt(0);if(43===o||45===o){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+e}for(var c,a=e.slice(2),s=0,f=a.length;s<f;s++)if(c=a.charCodeAt(s),c<48||c>i)return NaN;return parseInt(a,r)}}return+e};if(!v(\" 0o1\")||!v(\"0b1\")||v(\"+0x1\")){v=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof v&&(b?a((function(){y.valueOf.call(n)})):o(n)!=h)?c(new d(m(e)),n,v):m(e)};for(var x,w=n(\"9e1e\")?s(d):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),_=0;w.length>_;_++)i(d,x=w[_])&&!i(v,x)&&l(v,x,f(d,x));v.prototype=y,y.constructor=v,n(\"2aba\")(r,h,v)}},c69a:function(t,e,n){t.exports=!n(\"9e1e\")&&!n(\"79e5\")((function(){return 7!=Object.defineProperty(n(\"230e\")(\"div\"),\"a\",{get:function(){return 7}}).a}))},c8bb:function(t,e,n){t.exports=n(\"54a1\")},ca5a:function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},cadf:function(t,e,n){\"use strict\";var r=n(\"9c6c\"),i=n(\"d53b\"),o=n(\"84f2\"),c=n(\"6821\");t.exports=n(\"01f9\")(Array,\"Array\",(function(t,e){this._t=c(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,\"keys\"==e?n:\"values\"==e?t[n]:[n,t[n]])}),\"values\"),o.Arguments=o.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},cb7c:function(t,e,n){var r=n(\"d3f4\");t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},ccb9:function(t,e,n){e.f=n(\"5168\")},cd1c:function(t,e,n){var r=n(\"e853\");t.exports=function(t,e){return new(r(t))(e)}},cd78:function(t,e,n){var r=n(\"e4ae\"),i=n(\"f772\"),o=n(\"656e\");t.exports=function(t,e){if(r(t),i(e)&&e.constructor===t)return e;var n=o.f(t),c=n.resolve;return c(e),n.promise}},ce10:function(t,e,n){var r=n(\"69a8\"),i=n(\"6821\"),o=n(\"c366\")(!1),c=n(\"613b\")(\"IE_PROTO\");t.exports=function(t,e){var n,u=i(t),a=0,s=[];for(n in u)n!=c&&r(u,n)&&s.push(n);while(e.length>a)r(u,n=e[a++])&&(~o(s,n)||s.push(n));return s}},d2c8:function(t,e,n){var r=n(\"aae3\"),i=n(\"be13\");t.exports=function(t,e,n){if(r(e))throw TypeError(\"String#\"+n+\" doesn't accept regex!\");return String(i(t))}},d2d5:function(t,e,n){n(\"1654\"),n(\"549b\"),t.exports=n(\"584a\").Array.from},d3f4:function(t,e){t.exports=function(t){return\"object\"===typeof t?null!==t:\"function\"===typeof t}},d53b:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},d864:function(t,e,n){var r=n(\"79aa\");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},d8d6:function(t,e,n){n(\"1654\"),n(\"6c1c\"),t.exports=n(\"ccb9\").f(\"iterator\")},d8e8:function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},d9f6:function(t,e,n){var r=n(\"e4ae\"),i=n(\"794b\"),o=n(\"1bc3\"),c=Object.defineProperty;e.f=n(\"8e60\")?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return c(t,e,n)}catch(u){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},dbdb:function(t,e,n){var r=n(\"584a\"),i=n(\"e53d\"),o=\"__core-js_shared__\",c=i[o]||(i[o]={});(t.exports=function(t,e){return c[t]||(c[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:r.version,mode:n(\"b8e3\")?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},dcbc:function(t,e,n){var r=n(\"2aba\");t.exports=function(t,e,n){for(var i in e)r(t,i,e[i],n);return t}},e11e:function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},e4ae:function(t,e,n){var r=n(\"f772\");t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},e53d:function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},e6f3:function(t,e,n){var r=n(\"07e3\"),i=n(\"36c3\"),o=n(\"5b4e\")(!1),c=n(\"5559\")(\"IE_PROTO\");t.exports=function(t,e){var n,u=i(t),a=0,s=[];for(n in u)n!=c&&r(u,n)&&s.push(n);while(e.length>a)r(u,n=e[a++])&&(~o(s,n)||s.push(n));return s}},e853:function(t,e,n){var r=n(\"d3f4\"),i=n(\"1169\"),o=n(\"2b4c\")(\"species\");t.exports=function(t){var e;return i(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!i(e.prototype)||(e=void 0),r(e)&&(e=e[o],null===e&&(e=void 0))),void 0===e?Array:e}},ebd6:function(t,e,n){var r=n(\"cb7c\"),i=n(\"d8e8\"),o=n(\"2b4c\")(\"species\");t.exports=function(t,e){var n,c=r(t).constructor;return void 0===c||void 0==(n=r(c)[o])?e:i(n)}},ebfd:function(t,e,n){var r=n(\"62a0\")(\"meta\"),i=n(\"f772\"),o=n(\"07e3\"),c=n(\"d9f6\").f,u=0,a=Object.isExtensible||function(){return!0},s=!n(\"294c\")((function(){return a(Object.preventExtensions({}))})),f=function(t){c(t,r,{value:{i:\"O\"+ ++u,w:{}}})},l=function(t,e){if(!i(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!o(t,r)){if(!a(t))return\"F\";if(!e)return\"E\";f(t)}return t[r].i},p=function(t,e){if(!o(t,r)){if(!a(t))return!0;if(!e)return!1;f(t)}return t[r].w},h=function(t){return s&&v.NEED&&a(t)&&!o(t,r)&&f(t),t},v=t.exports={KEY:r,NEED:!1,fastKey:l,getWeak:p,onFreeze:h}},ecf0:function(t,e,n){},f1ae:function(t,e,n){\"use strict\";var r=n(\"86cc\"),i=n(\"4630\");t.exports=function(t,e,n){e in t?r.f(t,e,i(0,n)):t[e]=n}},f201:function(t,e,n){var r=n(\"e4ae\"),i=n(\"79aa\"),o=n(\"5168\")(\"species\");t.exports=function(t,e){var n,c=r(t).constructor;return void 0===c||void 0==(n=r(c)[o])?e:i(n)}},f410:function(t,e,n){n(\"1af6\"),t.exports=n(\"584a\").Array.isArray},f605:function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+\": incorrect invocation!\");return t}},f6fd:function(t,e){(function(t){var e=\"currentScript\",n=t.getElementsByTagName(\"script\");e in t||Object.defineProperty(t,e,{get:function(){try{throw new Error}catch(r){var t,e=(/.*at [^\\(]*\\((.*):.+:.+\\)$/gi.exec(r.stack)||[!1])[1];for(t in n)if(n[t].src==e||\"interactive\"==n[t].readyState)return n[t];return null}}})})(document)},f751:function(t,e,n){var r=n(\"5ca1\");r(r.S+r.F,\"Object\",{assign:n(\"7333\")})},f772:function(t,e){t.exports=function(t){return\"object\"===typeof t?null!==t:\"function\"===typeof t}},f921:function(t,e,n){n(\"014b\"),n(\"c207\"),n(\"69d3\"),n(\"765d\"),t.exports=n(\"584a\").Symbol},fa5b:function(t,e,n){t.exports=n(\"5537\")(\"native-function-to-string\",Function.toString)},fab2:function(t,e,n){var r=n(\"7726\").document;t.exports=r&&r.documentElement},fb15:function(t,e,n){\"use strict\";var r;(n.r(e),\"undefined\"!==typeof window)&&(n(\"f6fd\"),(r=window.document.currentScript)&&(r=r.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))&&(n.p=r[1]));n(\"7f7f\");var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"Layout\",{ref:\"layout\",staticClass:\"v-select\",class:t.classes,attrs:{tabindex:\"-1\"},nativeOn:{mouseup:function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"left\",37,e.key,[\"Left\",\"ArrowLeft\"])?null:\"button\"in e&&0!==e.button?null:void(t.isMultiple&&t.$refs.inp.focus())},focusin:function(e){t.$refs.inp.focus(),t.checkFocus_()},focusout:function(e){return t.checkFocus_()},keydown:[function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"])?null:(e.preventDefault(),t.next())},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"])?null:(e.preventDefault(),t.next(!0))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"home\",void 0,e.key,void 0)?null:(e.preventDefault(),t.mark(0))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"end\",void 0,e.key,void 0)?null:(e.preventDefault(),t.mark(1/0))},function(e){if(!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"esc\",27,e.key,[\"Esc\",\"Escape\"]))return null;e.stopPropagation(),~t.marked?t.mark():t.close()},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"delete\",[8,46],e.key,[\"Backspace\",\"Delete\",\"Del\"])?null:t.onKeyDel()},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")?null:t.onKeyDownEnter(e)}],mousedown:function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"left\",37,e.key,[\"Left\",\"ArrowLeft\"])?null:\"button\"in e&&0!==e.button?null:t.open()}},scopedSlots:t._u([{key:\"selected\",fn:function(){return t._l(t.value_,(function(e,r){return n(\"Selected\",t._b({key:e.index,staticClass:\"v-select-btn v-select-selected\",nativeOn:{mouseup:function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"left\",37,e.key,[\"Left\",\"ArrowLeft\"])?null:\"button\"in e&&0!==e.button?null:t.deselect(r)}}},\"Selected\",{option:e,state:t.state,index:r,select:this},!1),[t._l([\"both\",\"selected\"],(function(n){return t._t(n,null,null,{option:e,state:t.state,index:r,select:this})}))],2)}))},proxy:!0},{key:\"input\",fn:function(){return[n(\"input\",t._b({directives:[{name:\"model\",rawName:\"v-model.trim\",value:t.q,expression:\"q\",modifiers:{trim:!0}}],ref:\"inp\",staticClass:\"v-select-inp\",attrs:{placeholder:t.placeholder},domProps:{value:t.q},on:{focus:function(e){t.open().search()},keydown:t.onKeyDown,input:[function(e){e.target.composing||(t.q=e.target.value.trim())},function(e){return t.open()}],blur:function(e){return t.$forceUpdate()}}},\"input\",t.$attrs,!1))]},proxy:!0},{key:\"actions\",fn:function(){return[n(\"button\",{staticClass:\"v-select-btn-clear\",attrs:{type:\"button\",tabindex:\"-1\"},on:{mouseup:function(e){return t.clear()}}}),n(\"button\",{staticClass:\"v-select-btn-dd\",attrs:{type:\"button\",tabindex:\"-1\"},on:{click:function(e){return t.open()}}}),n(\"button\",{staticClass:\"v-select-btn-spinner\",attrs:{type:\"button\",tabindex:\"-1\"}},[t._t(\"spinner\")],2)]},proxy:!0},{key:\"options\",fn:function(){return t._l(t.filtered,(function(e,r){return n(\"Option\",t._b({key:e.index,ref:\"option\"+r,refInFor:!0,staticClass:\"v-select-option\",nativeOn:{mouseup:function(n){return!n.type.indexOf(\"key\")&&t._k(n.keyCode,\"left\",37,n.key,[\"Left\",\"ArrowLeft\"])?null:\"button\"in n&&0!==n.button?null:t.select(e)}}},\"Option\",{option:e,state:t.state,index:r,select:this},!1),[t._l([\"both\",\"option\"],(function(n){return t._t(n,null,null,{option:e,state:t.state,index:r,select:this})}))],2)}))},proxy:!0},t._l(t.layoutSlots,(function(e){return{key:e,fn:function(n){return[t._t(e,null,null,Object.assign({},{state:t.state,select:this},n))]}}}))],null,!0)})},o=[],c=(n(\"8e6e\"),n(\"a745\")),u=n.n(c);function a(t){if(u()(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var s=n(\"774e\"),f=n.n(s),l=n(\"c8bb\"),p=n.n(l);function h(t){if(p()(Object(t))||\"[object Arguments]\"===Object.prototype.toString.call(t))return f()(t)}function v(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}function d(t){return a(t)||h(t)||v()}n(\"2fdb\"),n(\"7514\"),n(\"6762\"),n(\"456d\"),n(\"20d6\"),n(\"386d\"),n(\"3846\");var y=n(\"85f2\"),b=n.n(y);function g(t,e,n){return e in t?b()(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n(\"ac6a\"),n(\"8615\"),n(\"28a5\"),n(\"c5f6\"),n(\"a481\"),n(\"96cf\");var m=n(\"795b\"),x=n.n(m);function w(t,e,n,r,i,o,c){try{var u=t[o](c),a=u.value}catch(N){return void n(N)}u.done?e(a):x.a.resolve(a).then(r,i)}function _(t){return function(){var e=this,n=arguments;return new x.a((function(r,i){var o=t.apply(e,n);function c(t){w(o,r,i,c,u,\"next\",t)}function u(t){w(o,r,i,c,u,\"throw\",t)}c(void 0)}))}}n(\"551c\");var S=n(\"5d58\"),O=n.n(S),k=n(\"67bb\"),j=n.n(k);function E(t){return E=\"function\"===typeof j.a&&\"symbol\"===typeof O.a?function(t){return typeof t}:function(t){return t&&\"function\"===typeof j.a&&t.constructor===j.a&&t!==j.a.prototype?\"symbol\":typeof t},E(t)}function P(t){return P=\"function\"===typeof j.a&&\"symbol\"===E(O.a)?function(t){return E(t)}:function(t){return t&&\"function\"===typeof j.a&&t.constructor===j.a&&t!==j.a.prototype?\"symbol\":E(t)},P(t)}function A(){return L.apply(this,arguments)}function L(){return L=_(regeneratorRuntime.mark((function t(){var e,n,r=arguments;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e=r.length>0&&void 0!==r[0]?r[0]:\"\",t.next=3,fetch(e);case 3:if(n=t.sent,n.ok){t.next=6;break}return t.abrupt(\"return\",Promise.reject(n));case 6:return t.next=8,n.json();case 8:return t.abrupt(\"return\",t.sent);case 9:case\"end\":return t.stop()}}),t)}))),L.apply(this,arguments)}function T(t,e,n){return Math.min(Math.max(t,e),n)}function M(t,e,n){return t=V(t),arguments.length>2?C(t.slice(0,-1),e,{})[t[t.length-1]]=n:C(t,e)}function C(t,e,n){t=V(t);var r=-1,i=t.length,o=arguments.length>2;while(++r<i){var c=e;if(e=e[t[r]],\"object\"!=P(e)){if(!o)return r==i-1?e:void 0;e=c[t[r]]=r<i-1?{}:R(c[t[r]])?n:c[t[r]]}}return e}function F(t){t=V(t);for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return M.bind.apply(M,[null,t].concat(n))}function I(t){return![void 0,\"\",null,NaN].includes(t)}function R(t){return t!==Object(t)}function N(){var t;(t=console).error.apply(t,[\"[@desislavsd/vue-select]: \"].concat(Array.prototype.slice.call(arguments)))}function q(t){return\"[@desislavsd/vue-select]: \"+t}function D(t,e,n){var r;function i(){for(var i=this,o=arguments.length,c=new Array(o),u=0;u<o;u++)c[u]=arguments[u];return clearTimeout(r),r=setTimeout((function(){return e.apply(i,c)}),t),n}return t?i:e}var $=function(t){return t};function G(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return(Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector).apply(t,n)}function V(t){return Array.isArray(t)?t:t.split(\".\").filter(Boolean)}n(\"f751\");var B,U,K={name:\"Option\",props:{option:{},index:{},state:{},tag:{default:\"span\"}},computed:{classes:function(){return{\"-marked\":this.state.marked==this.option,\"-selected\":this.state.selected.includes(this.option)}}},render:function(t){var e=this.classes,n=this.tag,r=this.option,i=this.$slots.default,o=i&&1==i.length&&i[0];return o&&o.tag?(o.data=o.data||{},o.data.class=Object.assign({},o.data.class,e),o):t(n,{class:e},i||[r.label])}},H=K;function W(t,e,n,r,i,o,c,u){var a,s=\"function\"===typeof t?t.options:t;if(e&&(s.render=e,s.staticRenderFns=n,s._compiled=!0),r&&(s.functional=!0),o&&(s._scopeId=\"data-v-\"+o),c?(a=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(c)},s._ssrRegister=a):i&&(a=u?function(){i.call(this,this.$root.$options.shadowRoot)}:i),a)if(s.functional){s._injectStyles=a;var f=s.render;s.render=function(t,e){return a.call(e),f(t,e)}}else{var l=s.beforeCreate;s.beforeCreate=l?[].concat(l,a):[a]}return{exports:t,options:s}}var J,Y,z=W(H,B,U,!1,null,null,null),X=z.exports,Q={mixins:[X]},Z=Q,tt=W(Z,J,Y,!1,null,null,null),et=tt.exports,nt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",[n(\"div\",{staticClass:\"v-select-bar\"},[t._t(\"selected\"),n(\"div\",{staticClass:\"v-select-inp-group\"},[t._t(\"input\"),t._t(\"actions\")],2)],2),n(\"div\",{ref:\"list\",staticClass:\"v-select-list\"},[t._t(\"beforelist\"),t._t(\"options\"),t._t(\"afterlist\")],2)])},rt=[],it={inject:[\"select\"]},ot=it,ct=(n(\"63c6\"),W(ot,nt,rt,!1,null,null,null)),ut=ct.exports;function at(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function st(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?at(n,!0).forEach((function(e){g(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):at(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var ft={name:\"Select\",components:{Option:X,Selected:et,Layout:ut},provide:{select:function(){return this},state:function(){return this.state}},props:{value:{},query:String,from:{type:[Array,Function,String,Object],default:function(){return[]}},as:[String,Array],parse:{type:[Function,String],default:$},fetch:{type:Function,default:function(){var t=_(regeneratorRuntime.mark((function t(e,n){var r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return r=n.url||n,t.next=3,A(r.replace(\"%s\",encodeURIComponent(e)));case 3:return t.abrupt(\"return\",t.sent);case 4:case\"end\":return t.stop()}}),t)})));function e(e,n){return t.apply(this,arguments)}return e}()},filter:{type:[Boolean,Function],default:void 0},filterBy:{type:Function,default:function(t,e){var n=t.label;return~(n+\"\").toLowerCase().indexOf(e.toLowerCase())}},debounce:{type:Number,default:250},tagging:{type:[Boolean,Function]},multiple:{type:Boolean,default:void 0},dynamic:{type:Boolean,default:void 0},tags:{},tagKeys:{type:Array,default:function(){return[]}},validate:{type:Function,default:function(t){var e=this.$attrs;return(t||!e.hasOwnProperty(\"minlength\"))&&(!this.$refs.inp||G(this.$refs.inp,\":valid\"))}},watchAttrs:{default:function(){return[\"required\",\"disabled\",\"readonly\"]}},stateful:Boolean,find:{type:[Function,Boolean],default:function(t){return this.from_(t.filter((function(t){return t.poor})).map((function(t){return t.label})).join(\",\"))}},closeOnSelect:{type:Boolean,default:void 0},clearOnSelect:{type:Boolean,default:void 0},clearOnClose:{type:Boolean,default:void 0}},inheritAttrs:!1,data:function(){return{q:this.query||\"\",marked:-1,queue:null,flags:{loading:!1,focused:!1,opened:!1},value_:[],options:[],asSpec:{rx:/\\s*[,:]\\s*/,order:\"label:value:index\".split(\":\")},checkFocus_:D(10,this.checkFocus)}},computed:{isMultiple:function(){return void 0!=this.multiple?this.multiple:Array.isArray(this.value)},isAsync:function(){return!Array.isArray(this.from)},isDynamic:function(){var t=this.from;return void 0!=this.dynamic?this.dynamic:!(Array.isArray(t)||\"string\"==typeof t&&!~t.indexOf(\"%s\")||\"function\"==typeof t&&!t.length)},isPrimitive:function(){var t=this.as_;return!t||!Object.values(t).some(Boolean)},isInsufficient:function(){var t=this.as_;return Boolean(t&&t.poor)},as_:function(){var t=this;if(this.as&&this.as.length){var e=Array.isArray(this.as)?this.as:(this.as||\"\").split(this.asSpec.rx),n=Boolean(e[0]&&e[1]&&e[0]!=e[1]);return e=this.asSpec.order.map((function(t,n){return\"function\"==typeof e[n]&&e[n]||e[n]&&F(e[n])})).reduce((function(e,n,r){return st({},e,g({},t.asSpec.order[r],n))}),{poor:n}),e.index||N(\"`index` field is required when working with non primitive options\"),e}},filtered:function(){var t=this,e=this.q,n=\"function\"==typeof this.filter?this.filter:this.filterBy;return(I(this.filter)?this.filter:this.isDynamic||!e.length)?this.options:this.options.filter((function(r){return n.call(t,r,e)}))},state:function(){return st({},this.flags,{multiple:this.isMultiple,searching:!!this.q,empty:!this.value_.length,marked:this.filtered[this.marked],selected:this.value_})},classes:function(){var t=this.state,e=this.$attrs;return st({\"-empty\":t.empty,\"-opened\":t.opened,\"-focused\":t.focused,\"-loading\":t.loading,\"-multiple\":t.multiple,\"-selected\":t.selected.length,\"-searching\":t.searching},this.watchAttrs.reduce((function(t,n){return st({},t,g({},\"-\".concat(n),e[n]))}),{}))},debouncedSearch:function(){return D(this.debounce,this.search)},parse_:function(){return\"string\"==typeof this.parse?F(this.parse):this.parse},placeholder:function(){return this.value_.length&&!this.isMultiple?\"\":this.$attrs.placeholder||\"Search..\"},matched:function(){var t=this.q.toLowerCase();return t?this.filtered.findIndex((function(e){return(e.label+\"\").toLowerCase()==t})):-1},layoutSlots:function(){var t=\"selected options both input actions spinner\".split(\" \");return Object.keys(this.$scopedSlots).filter((function(e){return!t.includes(e)}))}},watch:{value:{immediate:!0,handler:function(){var t=_(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(this.value_=this.parseValue(e),this.onChange(),this.value_.some((function(t){return t.poor}))){t.next=4;break}return t.abrupt(\"return\");case 4:if(this.isDynamic){t.next=6;break}return t.abrupt(\"return\",this.search());case 6:if(this.find){t.next=8;break}return t.abrupt(\"return\");case 8:return t.next=10,this.find(this.value_);case 10:n=t.sent,this.value_=this.parseValue(this.value_,n);case 12:case\"end\":return t.stop()}}),t,this)})));function e(e){return t.apply(this,arguments)}return e}()},from:function(){this.queue=null},options:function(t){t&&t.length&&(this.value_=this.parseValue(this.value_))},value_:{immediate:!0,handler:function(t){this.$emit(\"update:tags\",t)}},filtered:function(){this.mark(!this.isDynamic||0)},q:function(t){this.isDynamic&&(this.options=[]),this.debouncedSearch(),this.$emit(\"update:query\",t)},query:function(t){this.q=t||\"\"},queue:function(t){var e=this;this.flags.loading=t&&!!t.finally((function(){t==e.queue&&(e.flags.loading=!1)}))},\"flags.focused\":function(t){return this.$emit(t?\"focus\":\"blur\",this),t?this.open():this.close(!I(this.clearOnClose)||this.clearOnClose)},\"flags.opened\":function(t){this.$emit(t?\"open\":\"close\",this)}},methods:{set:function(t){this.stateful&&(this.value_=I(t)?Array.isArray(t)?t:[t]:[],this.onChange()),I(t)&&(t=Array.isArray(t)?t.map((function(t){return t.value})):t.value),this.$emit(\"input\",t)},search:function(){var t=_(regeneratorRuntime.mark((function t(){var e,n,r,i,o=arguments;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(e=o.length>0&&void 0!==o[0]&&o[0],n=this.q,\"string\"==typeof e&&(n=e),this.validate(n)){t.next=5;break}return t.abrupt(\"return\",new Error(q(\"Invalid query: \"+n)));case 5:return r=this.queue=e||!this.queue||this.isDynamic&&this.queue.q!=n?this.from_(n):this.queue,r.q=n,t.prev=7,t.next=10,r;case 10:i=t.sent,t.next=17;break;case 13:throw t.prev=13,t.t0=t[\"catch\"](7),r==this.queue&&(this.queue=null),t.t0;case 17:if(r==this.queue&&this.q==this.queue.q){t.next=19;break}return t.abrupt(\"return\");case 19:this.options=i;case 20:case\"end\":return t.stop()}}),t,this,[[7,13]])})));function e(){return t.apply(this,arguments)}return e}(),from_:function(){var t=_(regeneratorRuntime.mark((function t(e){var n,r,i,o=this;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(n=this.from,r=this.fetch,!Array.isArray(n)){t.next=5;break}i=n,t.next=14;break;case 5:if(\"function\"!=typeof n){t.next=11;break}return t.next=8,n(e);case 8:i=t.sent,t.next=14;break;case 11:return t.next=13,r(e,n);case 13:i=t.sent;case 14:return t.abrupt(\"return\",(this.parse_(i)||[]).map((function(t){return o.ofRaw(t)})));case 15:case\"end\":return t.stop()}}),t,this)})));function e(e){return t.apply(this,arguments)}return e}(),ofRaw:function(t){var e=this.as_,n=this.asSpec.order.reduce((function(n,r){return st({},n,g({},r,e&&e[r]?e[r](t):t))}),{raw:t});return I(n.label)||(n.label=n.value),I(n.index)||(n.index=n.label),new lt(n)},ofValue:function(t){var e=this.isInsufficient;if(this.isPrimitive)return this.ofRaw(t);var n=t,r=this.as_;r&&r.value&&r.value(n={},t);var i=this.ofRaw(n);return Object.assign(i,{poor:e})},ofPhrase:function(t){var e=this.isInsufficient;if(this.isPrimitive)return this.ofRaw(t);var n={},r=this.as_;return r.value&&r.value(n,t),r.label&&r.label(n,t),Object.assign(this.ofRaw(n),{poor:e,new:!0})},select:function(){var t=_(regeneratorRuntime.mark((function t(e){var n,r,i,o=this,c=arguments;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(n=c.length>1&&void 0!==c[1]&&c[1],r=this.value_.findIndex((function(t){return o.equals(t,e)})),this.$emit(\"select\",e),!~r){t.next=5;break}return t.abrupt(\"return\",this.isMultiple?this.deselect(r):this);case 5:if(!n){t.next=16;break}if(this.$emit(\"create\",e),this.tagging){t.next=9;break}return t.abrupt(\"return\");case 9:if(\"function\"!=typeof this.tagging){t.next=16;break}return t.next=12,this.tagging.call(this.$parent,e,this);case 12:if(i=t.sent,![!1].includes(i)){t.next=15;break}return t.abrupt(\"return\");case 15:e=i instanceof lt?i:this.ofRaw(i);case 16:this.isMultiple&&(e=this.value_.concat(e)),this.set(e);case 18:case\"end\":return t.stop()}}),t,this)})));function e(e){return t.apply(this,arguments)}return e}(),deselect:function(t){if(!this.isMultiple)return this.clear();var e=d(this.value_);e.splice(t,1),this.set(e)},clear:function(){this.set(this.isMultiple?[]:void 0)},exists:function(t){var e=this;return this.value_.some((function(n){return e.equals(n,t)}))},parseValue:function(t,e){var n=this;return I(t)?(e=e||this.options.concat(this.value_),[].concat(t).map((function(t){return t instanceof lt?t:n.ofValue(t)})).map((function(t){return e.find((function(e){return n.equals(t,e)}))||t}))):[]},mark:function(t){if(arguments.length&&!1!==t?!0===t&&(t=~this.matched?this.matched:this.tagging?-1:0):t=-1,t=this.marked=T(-1,t,this.filtered.length-1),~t){var e=this.$refs[\"option\"+t];e=e&&e[0]&&e[0].$el,e&&this.scrollTo(e)}return this},next:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.flags.opened)return this.open();this.mark(this.marked+Math.pow(-1,t))},equals:function(t,e){if(t.index===e.index)return!0;if(t.index==e.index&&[t.index,e.index].every(I))return!0;try{return JSON.stringify(t.index)===JSON.stringify(e.index)}catch(n){return!1}},open:function(){return this.flags.opened?this:(this.flags.opened=!0,this.mark(!0))},close:function(t){return this.flags.opened=!1,(t||(I(this.clearOnSelect)?this.clearOnSelect:!this.isMultiple))&&(this.q=\"\"),this},blur:function(){if(!this.$el)return this;var t=G(this.$el,\":focus\")?this.$el:this.$el.querySelector(\":focus\");return t&&t.blur(),this},scrollTo:function(t){var e=this.$refs.layout.$refs.list;e.scrollTop=Math.round(t.offsetTop+t.offsetHeight-e.offsetHeight/2)},checkFocus:function(){return this.flags.focused=G(this.$el,\":focus\")||!!this.$el.querySelector(\":focus\"),this},onKeyDel:function(){if(!this.q){var t=this.value_.length;t&&this.isMultiple?this.deselect(t-1):this.clear()}},onKeyDownEnter:function(t){if(this.q||~this.marked){t.preventDefault();var e=this.filtered[this.marked];this.select(e||this.ofPhrase(this.q),!e)}},onKeyDown:function(t){this.tagging&&this.q&&this.tagKeys.includes(t.which||t.keyCode||0)&&(!~this.marked||this.filtered[this.marked].label!==this.q)&&(t.preventDefault(),t.stopPropagation(),this.select(this.ofPhrase(this.q)))},onChange:function(){(I(this.closeOnSelect)?this.closeOnSelect:!this.isMultiple||this.isDynamic)&&this.close(),I(this.clearOnSelect)&&!this.clearOnSelect||(this.q=\"\"),this.$emit(\"change\",this.isMultiple?pt(this.value_):this.value_[0])}}};function lt(){Object.assign.apply(Object,[this].concat(Array.prototype.slice.call(arguments)))}function pt(t){return t=d(t),t.raw=t.map((function(t){return t.value})),t}var ht,vt=ft,dt=(n(\"3cba\"),W(vt,i,o,!1,null,null,null)),yt=dt.exports,bt=n(\"9224\"),gt=ht={version:bt[\"a\"],install:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.name,r=void 0===n?\"vSelect\":n,i=e.mixin,o=void 0===i?{}:i;t.component(r,{mixins:[yt,o]})},vSelect:yt,vSelectLayout:ut,vSelectOption:X,vSelectSelected:et};\"undefined\"!=typeof window&&\"undefined\"!=typeof window.Vue&&(window.VueSelect=ht),n.d(e,\"vSelect\",(function(){return yt})),n.d(e,\"vSelectLayout\",(function(){return ut})),n.d(e,\"vSelectOption\",(function(){return X})),n.d(e,\"vSelectSelected\",(function(){return et}));e[\"default\"]=gt},fdef:function(t,e){t.exports=\"\\t\\n\\v\\f\\r \\u2028\\u2029\\ufeff\"}})}));\n//# sourceMappingURL=vue-select.umd.min.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGRlc2lzbGF2c2QvdnVlLXNlbGVjdC9kaXN0L3Z1ZS1zZWxlY3QudW1kLm1pbi5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLEtBQW1ELG9CQUFvQixDQUEySCxDQUFDLGtEQUFrRCxtQkFBbUIsU0FBUyxjQUFjLDRCQUE0QixZQUFZLHFCQUFxQiwyREFBMkQsdUNBQXVDLHFDQUFxQyxvQkFBb0IsRUFBRSxpQkFBaUIsNkZBQTZGLGVBQWUsd0NBQXdDLFNBQVMsRUFBRSxtQkFBbUIsOEJBQThCLHNEQUFzRCwwQkFBMEIsNkNBQTZDLHNCQUFzQiw2REFBNkQsWUFBWSxlQUFlLFNBQVMsaUJBQWlCLGlDQUFpQyxvQkFBb0IsWUFBWSxVQUFVLHNCQUFzQixtQkFBbUIsaURBQWlELHNCQUFzQixFQUFFLHVCQUF1QixhQUFhLHViQUF1YixvTEFBb0wsZ0JBQWdCLE1BQU0sZUFBZSxtQkFBbUIsUUFBUSxLQUFLLEtBQUssbUJBQW1CLGFBQWEsMkNBQTJDLGlCQUFpQixtQkFBbUIsZ0JBQWdCLDhDQUE4Qyx5QkFBeUIsYUFBYSxzQkFBc0IsbUJBQW1CLHNHQUFzRyxtQkFBbUIsd0JBQXdCLGtDQUFrQyxpQkFBaUIsS0FBSyxpQ0FBaUMsNkJBQTZCLFNBQVMsaUJBQWlCLGlDQUFpQyxlQUFlLDZCQUE2QiwwRkFBMEYsa0JBQWtCLDRDQUE0QyxhQUFhLHlEQUF5RCxnQkFBZ0IseUJBQXlCLHNEQUFzRCxTQUFTLGdCQUFnQixxQ0FBcUMsMERBQTBELFVBQVUsaUJBQWlCLHFFQUFxRSw4REFBOEQsaUZBQWlGLG9CQUFvQixzQkFBc0IsT0FBTywrQkFBK0IsZUFBZSx3SEFBd0gsZUFBZSxvQkFBb0IsU0FBUyxFQUFFLDRJQUE0SSxhQUFhLGFBQWEsMkJBQTJCLGFBQWEsYUFBYSx1QkFBdUIsZ0JBQWdCLGlDQUFpQyxvQkFBb0IsZ0RBQWdELG9DQUFvQyxzQkFBc0IsS0FBSyxzQkFBc0IsTUFBTSx5QkFBeUIseUhBQXlILEVBQUUscUJBQXFCLE9BQU8s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a0Isb0NBQW9DLG9CQUFvQixXQUFXLHFDQUFxQyxxQkFBcUIsR0FBRywwQkFBMEIsV0FBVyxpRkFBaUYsc0NBQXNDLG9CQUFvQiwyQkFBMkIscUJBQXFCLE1BQU0sT0FBTyxrQkFBa0IsMklBQTJJLDZCQUE2Qix3Q0FBd0MsWUFBWSxpQkFBaUIsOERBQThELHlDQUF5QyxzQ0FBc0Msc0JBQXNCLDhCQUE4Qix5REFBeUQsSUFBSSx5REFBeUQsU0FBUyxVQUFVLGlCQUFpQixtRUFBbUUsbUJBQW1CLCtHQUErRyxpQkFBaUIseUJBQXlCLHFFQUFxRSx3QkFBd0Isc0JBQXNCLG1DQUFtQyxvRUFBb0UsdUJBQXVCLHdGQUF3RixxQkFBcUIsWUFBWSx5QkFBeUIsb0RBQW9ELDRCQUE0Qix5QkFBeUIsbUJBQW1CLGlDQUFpQywwQ0FBMEMsdUJBQXVCLDRNQUE0TSxxQkFBcUIseU5BQXlOLGNBQWMsaUZBQWlGLGVBQWUsdUNBQXVDLGVBQWUsS0FBSywwRkFBMEYsb0NBQW9DLCtEQUErRCw0REFBNEQsR0FBRyxlQUFlLGNBQWMsRUFBRSxpRUFBaUUsOEdBQThHLFVBQVUscUNBQXFDLFVBQVUscUNBQXFDLFNBQVMsdUNBQXVDLFVBQVUsR0FBRyxnQkFBZ0Isb0JBQW9CLDREQUE0RCxFQUFFO0FBQ3I5bkYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRlc2lzbGF2c2QvdnVlLXNlbGVjdC9kaXN0L3Z1ZS1zZWxlY3QudW1kLm1pbi5qcz8zMTI2Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbih0LGUpe1wib2JqZWN0XCI9PT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9ZSgpOlwiZnVuY3Rpb25cIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGUpOlwib2JqZWN0XCI9PT10eXBlb2YgZXhwb3J0cz9leHBvcnRzW1widnVlLXNlbGVjdFwiXT1lKCk6dFtcInZ1ZS1zZWxlY3RcIl09ZSgpfSkoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBzZWxmP3NlbGY6dGhpcywoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gbihyKXtpZihlW3JdKXJldHVybiBlW3JdLmV4cG9ydHM7dmFyIGk9ZVtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIHRbcl0uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsbiksaS5sPSEwLGkuZXhwb3J0c31yZXR1cm4gbi5tPXQsbi5jPWUsbi5kPWZ1bmN0aW9uKHQsZSxyKXtuLm8odCxlKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7ZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLnI9ZnVuY3Rpb24odCl7XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LG4udD1mdW5jdGlvbih0LGUpe2lmKDEmZSYmKHQ9bih0KSksOCZlKXJldHVybiB0O2lmKDQmZSYmXCJvYmplY3RcIj09PXR5cGVvZiB0JiZ0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIociksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pLDImZSYmXCJzdHJpbmdcIiE9dHlwZW9mIHQpZm9yKHZhciBpIGluIHQpbi5kKHIsaSxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0uYmluZChudWxsLGkpKTtyZXR1cm4gcn0sbi5uPWZ1bmN0aW9uKHQpe3ZhciBlPXQmJnQuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiB0W1wiZGVmYXVsdFwiXX06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIG4uZChlLFwiYVwiLGUpLGV9LG4ubz1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX0sbi5wPVwiXCIsbihuLnM9XCJmYjE1XCIpfSh7XCIwMTRiXCI6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCJlNTNkXCIpLGk9bihcIjA3ZTNcIiksbz1uKFwiOGU2MFwiKSxjPW4oXCI2M2I2XCIpLHU9bihcIjkxMzhcIiksYT1uKFwiZWJmZFwiKS5LRVkscz1uKFwiMjk0Y1wiKSxmPW4oXCJkYmRiXCIpLGw9bihcIjQ1ZjJcIikscD1uKFwiNjJhMFwiKSxoPW4oXCI1MTY4XCIpLHY9bihcImNjYjlcIiksZD1uKFwiNjcxOFwiKSx5PW4oXCI0N2VlXCIpLGI9bihcIjkwMDNcIiksZz1uKFwiZTRhZVwiKSxtPW4oXCJmNzcyXCIpLHg9bihcIjI0MWVcIiksdz1uKFwiMzZjM1wiKSxfPW4oXCIxYmMzXCIpLFM9bihcImFlYmRcIiksTz1uKFwiYTE1OVwiKSxrPW4oXCIwMzk1XCIpLGo9bihcImJmMGJcIiksRT1uKFwiOWFhOVwiKSxQPW4oXCJkOWY2XCIpLEE9bihcImMzYTFcIiksTD1qLmYsVD1QLmYsTT1rLmYsQz1yLlN5bWJvbCxGPXIuSlNPTixJPUYmJkYuc3RyaW5naWZ5LFI9XCJwcm90b3R5cGVcIixOPWgoXCJfaGlkZGVuXCIpLHE9aChcInRvUHJpbWl0aXZlXCIpLEQ9e30ucHJvcGVydHlJc0VudW1lcmFibGUsJD1mKFwic3ltYm9sLXJlZ2lzdHJ5XCIpLEc9ZihcInN5bWJvbHNcIiksVj1mKFwib3Atc3ltYm9sc1wiKSxCPU9iamVjdFtSXSxVPVwiZnVuY3Rpb25cIj09dHlwZW9mIEMmJiEhRS5mLEs9ci5RT2JqZWN0LEg9IUt8fCFLW1JdfHwhS1tSXS5maW5kQ2hpbGQsVz1vJiZzKChmdW5jdGlvbigpe3JldHVybiA3IT1PKFQoe30sXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBUKHRoaXMsXCJhXCIse3ZhbHVlOjd9KS5hfX0pKS5hfSkpP2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj1MKEIsZSk7ciYmZGVsZXRlIEJbZV0sVCh0LGUsbiksciYmdCE9PUImJlQoQixlLHIpfTpULEo9ZnVuY3Rpb24odCl7dmFyIGU9R1t0XT1PKENbUl0pO3JldHVybiBlLl9rPXQsZX0sWT1VJiZcInN5bWJvbFwiPT10eXBlb2YgQy5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBDfSx6PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD09PUImJnooVixlLG4pLGcodCksZT1fKGUsITApLGcobiksaShHLGUpPyhuLmVudW1lcmFibGU/KGkodCxOKSYmdFtOXVtlXSYmKHRbTl1bZV09ITEpLG49TyhuLHtlbnVtZXJhYmxlOlMoMCwhMSl9KSk6KGkodCxOKXx8VCh0LE4sUygxLHt9KSksdFtOXVtlXT0hMCksVyh0LGUsbikpOlQodCxlLG4pfSxYPWZ1bmN0aW9uKHQsZSl7Zyh0KTt2YXIgbixyPXkoZT13KGUpKSxpPTAsbz1yLmxlbmd0aDt3aGlsZShvPmkpeih0LG49cltpKytdLGVbbl0pO3JldHVybiB0fSxRPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/Tyh0KTpYKE8odCksZSl9LFo9ZnVuY3Rpb24odCl7dmFyIGU9RC5jYWxsKHRoaXMsdD1fKHQsITApKTtyZXR1cm4hKHRoaXM9PT1CJiZpKEcsdCkmJiFpKFYsdCkpJiYoIShlfHwhaSh0aGlzLHQpfHwhaShHLHQpfHxpKHRoaXMsTikmJnRoaXNbTl1bdF0pfHxlKX0sdHQ9ZnVuY3Rpb24odCxlKXtpZih0PXcodCksZT1fKGUsITApLHQhPT1CfHwhaShHLGUpfHxpKFYsZSkpe3ZhciBuPUwodCxlKTtyZXR1cm4hbnx8IWkoRyxlKXx8aSh0LE4pJiZ0W05dW2VdfHwobi5lbnVtZXJhYmxlPSEwKSxufX0sZXQ9ZnVuY3Rpb24odCl7dmFyIGUsbj1NKHcodCkpLHI9W10sbz0wO3doaWxlKG4ubGVuZ3RoPm8paShHLGU9bltvKytdKXx8ZT09Tnx8ZT09YXx8ci5wdXNoKGUpO3JldHVybiByfSxudD1mdW5jdGlvbih0KXt2YXIgZSxuPXQ9PT1CLHI9TShuP1Y6dyh0KSksbz1bXSxjPTA7d2hpbGUoci5sZW5ndGg+YykhaShHLGU9cltjKytdKXx8biYmIWkoQixlKXx8by5wdXNoKEdbZV0pO3JldHVybiBvfTtVfHwoQz1mdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBDKXRocm93IFR5cGVFcnJvcihcIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciFcIik7dmFyIHQ9cChhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCksZT1mdW5jdGlvbihuKXt0aGlzPT09QiYmZS5jYWxsKFYsbiksaSh0aGlzLE4pJiZpKHRoaXNbTl0sdCkmJih0aGlzW05dW3RdPSExKSxXKHRoaXMsdCxTKDEsbikpfTtyZXR1cm4gbyYmSCYmVyhCLHQse2NvbmZpZ3VyYWJsZTohMCxzZXQ6ZX0pLEoodCl9LHUoQ1tSXSxcInRvU3RyaW5nXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2t9KSksai5mPXR0LFAuZj16LG4oXCI2YWJmXCIpLmY9ay5mPWV0LG4oXCIzNTVkXCIpLmY9WixFLmY9bnQsbyYmIW4oXCJiOGUzXCIpJiZ1KEIsXCJwcm9wZXJ0eUlzRW51bWVyYWJsZVwiLFosITApLHYuZj1mdW5jdGlvbih0KXtyZXR1cm4gSihoKHQpKX0pLGMoYy5HK2MuVytjLkYqIVUse1N5bWJvbDpDfSk7Zm9yKHZhciBydD1cImhhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzXCIuc3BsaXQoXCIsXCIpLGl0PTA7cnQubGVuZ3RoPml0OyloKHJ0W2l0KytdKTtmb3IodmFyIG90PUEoaC5zdG9yZSksY3Q9MDtvdC5sZW5ndGg+Y3Q7KWQob3RbY3QrK10pO2MoYy5TK2MuRiohVSxcIlN5bWJvbFwiLHtmb3I6ZnVuY3Rpb24odCl7cmV0dXJuIGkoJCx0Kz1cIlwiKT8kW3RdOiRbdF09Qyh0KX0sa2V5Rm9yOmZ1bmN0aW9uKHQpe2lmKCFZKHQpKXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBhIHN5bWJvbCFcIik7Zm9yKHZhciBlIGluICQpaWYoJFtlXT09PXQpcmV0dXJuIGV9LHVzZVNldHRlcjpmdW5jdGlvbigpe0g9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe0g9ITF9fSksYyhjLlMrYy5GKiFVLFwiT2JqZWN0XCIse2NyZWF0ZTpRLGRlZmluZVByb3BlcnR5OnosZGVmaW5lUHJvcGVydGllczpYLGdldE93blByb3BlcnR5RGVzY3JpcHRvcjp0dCxnZXRPd25Qcm9wZXJ0eU5hbWVzOmV0LGdldE93blByb3BlcnR5U3ltYm9sczpudH0pO3ZhciB1dD1zKChmdW5jdGlvbigpe0UuZigxKX0pKTtjKGMuUytjLkYqdXQsXCJPYmplY3RcIix7Z2V0T3duUHJvcGVydHlTeW1ib2xzOmZ1bmN0aW9uKHQpe3JldHVybiBFLmYoeCh0KSl9fSksRiYmYyhjLlMrYy5GKighVXx8cygoZnVuY3Rpb24oKXt2YXIgdD1DKCk7cmV0dXJuXCJbbnVsbF1cIiE9SShbdF0pfHxcInt9XCIhPUkoe2E6dH0pfHxcInt9XCIhPUkoT2JqZWN0KHQpKX0pKSksXCJKU09OXCIse3N0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgZSxuLHI9W3RdLGk9MTt3aGlsZShhcmd1bWVudHMubGVuZ3RoPmkpci5wdXNoKGFyZ3VtZW50c1tpKytdKTtpZihuPWU9clsxXSwobShlKXx8dm9pZCAwIT09dCkmJiFZKHQpKXJldHVybiBiKGUpfHwoZT1mdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4mJihlPW4uY2FsbCh0aGlzLHQsZSkpLCFZKGUpKXJldHVybiBlfSksclsxXT1lLEkuYXBwbHkoRixyKX19KSxDW1JdW3FdfHxuKFwiMzVlOFwiKShDW1JdLHEsQ1tSXS52YWx1ZU9mKSxsKEMsXCJTeW1ib2xcIiksbChNYXRoLFwiTWF0aFwiLCEwKSxsKHIuSlNPTixcIkpTT05cIiwhMCl9LFwiMDFmOVwiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiMmQwMFwiKSxpPW4oXCI1Y2ExXCIpLG89bihcIjJhYmFcIiksYz1uKFwiMzJlOVwiKSx1PW4oXCI4NGYyXCIpLGE9bihcIjQxYTBcIikscz1uKFwiN2YyMFwiKSxmPW4oXCIzOGZkXCIpLGw9bihcIjJiNGNcIikoXCJpdGVyYXRvclwiKSxwPSEoW10ua2V5cyYmXCJuZXh0XCJpbltdLmtleXMoKSksaD1cIkBAaXRlcmF0b3JcIix2PVwia2V5c1wiLGQ9XCJ2YWx1ZXNcIix5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixiLGcsbSx4KXthKG4sZSxiKTt2YXIgdyxfLFMsTz1mdW5jdGlvbih0KXtpZighcCYmdCBpbiBQKXJldHVybiBQW3RdO3N3aXRjaCh0KXtjYXNlIHY6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9O2Nhc2UgZDpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyx0KX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fSxrPWUrXCIgSXRlcmF0b3JcIixqPWc9PWQsRT0hMSxQPXQucHJvdG90eXBlLEE9UFtsXXx8UFtoXXx8ZyYmUFtnXSxMPUF8fE8oZyksVD1nP2o/TyhcImVudHJpZXNcIik6TDp2b2lkIDAsTT1cIkFycmF5XCI9PWUmJlAuZW50cmllc3x8QTtpZihNJiYoUz1mKE0uY2FsbChuZXcgdCkpLFMhPT1PYmplY3QucHJvdG90eXBlJiZTLm5leHQmJihzKFMsaywhMCkscnx8XCJmdW5jdGlvblwiPT10eXBlb2YgU1tsXXx8YyhTLGwseSkpKSxqJiZBJiZBLm5hbWUhPT1kJiYoRT0hMCxMPWZ1bmN0aW9uKCl7cmV0dXJuIEEuY2FsbCh0aGlzKX0pLHImJiF4fHwhcCYmIUUmJlBbbF18fGMoUCxsLEwpLHVbZV09TCx1W2tdPXksZylpZih3PXt2YWx1ZXM6aj9MOk8oZCksa2V5czptP0w6Tyh2KSxlbnRyaWVzOlR9LHgpZm9yKF8gaW4gdylfIGluIFB8fG8oUCxfLHdbX10pO2Vsc2UgaShpLlAraS5GKihwfHxFKSxlLHcpO3JldHVybiB3fX0sXCIwMmY0XCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI0NTg4XCIpLGk9bihcImJlMTNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBvLGMsdT1TdHJpbmcoaShlKSksYT1yKG4pLHM9dS5sZW5ndGg7cmV0dXJuIGE8MHx8YT49cz90P1wiXCI6dm9pZCAwOihvPXUuY2hhckNvZGVBdChhKSxvPDU1Mjk2fHxvPjU2MzE5fHxhKzE9PT1zfHwoYz11LmNoYXJDb2RlQXQoYSsxKSk8NTYzMjB8fGM+NTczNDM/dD91LmNoYXJBdChhKTpvOnQ/dS5zbGljZShhLGErMik6Yy01NjMyMCsoby01NTI5Njw8MTApKzY1NTM2KX19fSxcIjAzOTBcIjpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcIjAyZjRcIikoITApO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGUrKG4/cih0LGUpLmxlbmd0aDoxKX19LFwiMDM5NVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiMzZjM1wiKSxpPW4oXCI2YWJmXCIpLmYsbz17fS50b1N0cmluZyxjPVwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KTpbXSx1PWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gaSh0KX1jYXRjaChlKXtyZXR1cm4gYy5zbGljZSgpfX07dC5leHBvcnRzLmY9ZnVuY3Rpb24odCl7cmV0dXJuIGMmJlwiW29iamVjdCBXaW5kb3ddXCI9PW8uY2FsbCh0KT91KHQpOmkocih0KSl9fSxcIjA3ZTNcIjpmdW5jdGlvbih0LGUpe3ZhciBuPXt9Lmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuLmNhbGwodCxlKX19LFwiMGE0OVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiOWI0M1wiKSxpPW4oXCI2MjZhXCIpLG89bihcIjRiZjhcIiksYz1uKFwiOWRlZlwiKSx1PW4oXCJjZDFjXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPTE9PXQsYT0yPT10LHM9Mz09dCxmPTQ9PXQsbD02PT10LHA9NT09dHx8bCxoPWV8fHU7cmV0dXJuIGZ1bmN0aW9uKGUsdSx2KXtmb3IodmFyIGQseSxiPW8oZSksZz1pKGIpLG09cih1LHYsMykseD1jKGcubGVuZ3RoKSx3PTAsXz1uP2goZSx4KTphP2goZSwwKTp2b2lkIDA7eD53O3crKylpZigocHx8dyBpbiBnKSYmKGQ9Z1t3XSx5PW0oZCx3LGIpLHQpKWlmKG4pX1t3XT15O2Vsc2UgaWYoeSlzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gZDtjYXNlIDY6cmV0dXJuIHc7Y2FzZSAyOl8ucHVzaChkKX1lbHNlIGlmKGYpcmV0dXJuITE7cmV0dXJuIGw/LTE6c3x8Zj9mOl99fX0sXCIwYmZiXCI6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCJjYjdjXCIpO3QuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0PXIodGhpcyksZT1cIlwiO3JldHVybiB0Lmdsb2JhbCYmKGUrPVwiZ1wiKSx0Lmlnbm9yZUNhc2UmJihlKz1cImlcIiksdC5tdWx0aWxpbmUmJihlKz1cIm1cIiksdC51bmljb2RlJiYoZSs9XCJ1XCIpLHQuc3RpY2t5JiYoZSs9XCJ5XCIpLGV9fSxcIjBkNThcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImNlMTBcIiksaT1uKFwiZTExZVwiKTt0LmV4cG9ydHM9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsaSl9fSxcIjBmYzlcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjNhMzhcIiksaT1NYXRoLm1heCxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0PXIodCksdDwwP2kodCtlLDApOm8odCxlKX19LDExNjk6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCIyZDk1XCIpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm5cIkFycmF5XCI9PXIodCl9fSwxMTczOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHIpe2lmKCEodCBpbnN0YW5jZW9mIGUpfHx2b2lkIDAhPT1yJiZyIGluIHQpdGhyb3cgVHlwZUVycm9yKG4rXCI6IGluY29ycmVjdCBpbnZvY2F0aW9uIVwiKTtyZXR1cm4gdH19LFwiMTFlOVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNTJhN1wiKSxpPW4oXCI0NjMwXCIpLG89bihcIjY4MjFcIiksYz1uKFwiNmE5OVwiKSx1PW4oXCI2OWE4XCIpLGE9bihcImM2OWFcIikscz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1uKFwiOWUxZVwiKT9zOmZ1bmN0aW9uKHQsZSl7aWYodD1vKHQpLGU9YyhlLCEwKSxhKXRyeXtyZXR1cm4gcyh0LGUpfWNhdGNoKG4pe31pZih1KHQsZSkpcmV0dXJuIGkoIXIuZi5jYWxsKHQsZSksdFtlXSl9fSwxNDk1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiODZjY1wiKSxpPW4oXCJjYjdjXCIpLG89bihcIjBkNThcIik7dC5leHBvcnRzPW4oXCI5ZTFlXCIpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZSl7aSh0KTt2YXIgbixjPW8oZSksdT1jLmxlbmd0aCxhPTA7d2hpbGUodT5hKXIuZih0LG49Y1thKytdLGVbbl0pO3JldHVybiB0fX0sMTY1NDpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcIjcxYzFcIikoITApO24oXCIzMGYxXCIpKFN0cmluZyxcIlN0cmluZ1wiLChmdW5jdGlvbih0KXt0aGlzLl90PVN0cmluZyh0KSx0aGlzLl9pPTB9KSwoZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuX3Qsbj10aGlzLl9pO3JldHVybiBuPj1lLmxlbmd0aD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Oih0PXIoZSxuKSx0aGlzLl9pKz10Lmxlbmd0aCx7dmFsdWU6dCxkb25lOiExfSl9KSl9LDE2OTE6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9XCJjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2ZcIi5zcGxpdChcIixcIil9LDE5OTE6ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksbyxjPW4oXCI5YjQzXCIpLHU9bihcIjMxZjRcIiksYT1uKFwiZmFiMlwiKSxzPW4oXCIyMzBlXCIpLGY9bihcIjc3MjZcIiksbD1mLnByb2Nlc3MscD1mLnNldEltbWVkaWF0ZSxoPWYuY2xlYXJJbW1lZGlhdGUsdj1mLk1lc3NhZ2VDaGFubmVsLGQ9Zi5EaXNwYXRjaCx5PTAsYj17fSxnPVwib25yZWFkeXN0YXRlY2hhbmdlXCIsbT1mdW5jdGlvbigpe3ZhciB0PSt0aGlzO2lmKGIuaGFzT3duUHJvcGVydHkodCkpe3ZhciBlPWJbdF07ZGVsZXRlIGJbdF0sZSgpfX0seD1mdW5jdGlvbih0KXttLmNhbGwodC5kYXRhKX07cCYmaHx8KHA9ZnVuY3Rpb24odCl7dmFyIGU9W10sbj0xO3doaWxlKGFyZ3VtZW50cy5sZW5ndGg+billLnB1c2goYXJndW1lbnRzW24rK10pO3JldHVybiBiWysreV09ZnVuY3Rpb24oKXt1KFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDpGdW5jdGlvbih0KSxlKX0scih5KSx5fSxoPWZ1bmN0aW9uKHQpe2RlbGV0ZSBiW3RdfSxcInByb2Nlc3NcIj09bihcIjJkOTVcIikobCk/cj1mdW5jdGlvbih0KXtsLm5leHRUaWNrKGMobSx0LDEpKX06ZCYmZC5ub3c/cj1mdW5jdGlvbih0KXtkLm5vdyhjKG0sdCwxKSl9OnY/KGk9bmV3IHYsbz1pLnBvcnQyLGkucG9ydDEub25tZXNzYWdlPXgscj1jKG8ucG9zdE1lc3NhZ2UsbywxKSk6Zi5hZGRFdmVudExpc3RlbmVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwb3N0TWVzc2FnZSYmIWYuaW1wb3J0U2NyaXB0cz8ocj1mdW5jdGlvbih0KXtmLnBvc3RNZXNzYWdlKHQrXCJcIixcIipcIil9LGYuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIix4LCExKSk6cj1nIGluIHMoXCJzY3JpcHRcIik/ZnVuY3Rpb24odCl7YS5hcHBlbmRDaGlsZChzKFwic2NyaXB0XCIpKVtnXT1mdW5jdGlvbigpe2EucmVtb3ZlQ2hpbGQodGhpcyksbS5jYWxsKHQpfX06ZnVuY3Rpb24odCl7c2V0VGltZW91dChjKG0sdCwxKSwwKX0pLHQuZXhwb3J0cz17c2V0OnAsY2xlYXI6aH19LFwiMWFmNlwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNjNiNlwiKTtyKHIuUyxcIkFycmF5XCIse2lzQXJyYXk6bihcIjkwMDNcIil9KX0sXCIxYmMzXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJmNzcyXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFyKHQpKXJldHVybiB0O3ZhciBuLGk7aWYoZSYmXCJmdW5jdGlvblwiPT10eXBlb2Yobj10LnRvU3RyaW5nKSYmIXIoaT1uLmNhbGwodCkpKXJldHVybiBpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mKG49dC52YWx1ZU9mKSYmIXIoaT1uLmNhbGwodCkpKXJldHVybiBpO2lmKCFlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihpPW4uY2FsbCh0KSkpcmV0dXJuIGk7dGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpfX0sXCIxZWM5XCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJmNzcyXCIpLGk9bihcImU1M2RcIikuZG9jdW1lbnQsbz1yKGkpJiZyKGkuY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvP2kuY3JlYXRlRWxlbWVudCh0KTp7fX19LFwiMWZhOFwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiY2I3Y1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSl7dHJ5e3JldHVybiBpP2UocihuKVswXSxuWzFdKTplKG4pfWNhdGNoKGMpe3ZhciBvPXRbXCJyZXR1cm5cIl07dGhyb3cgdm9pZCAwIT09byYmcihvLmNhbGwodCkpLGN9fX0sXCIyMGQ2XCI6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCI1Y2ExXCIpLGk9bihcIjBhNDlcIikoNiksbz1cImZpbmRJbmRleFwiLGM9ITA7byBpbltdJiZBcnJheSgxKVtvXSgoZnVuY3Rpb24oKXtjPSExfSkpLHIoci5QK3IuRipjLFwiQXJyYXlcIix7ZmluZEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksbihcIjljNmNcIikobyl9LFwiMjBmZFwiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiZDlmNlwiKSxpPW4oXCJhZWJkXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7ZSBpbiB0P3IuZih0LGUsaSgwLG4pKTp0W2VdPW59fSxcIjIxNGZcIjpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7bihcImIwYzVcIik7dmFyIHI9bihcIjJhYmFcIiksaT1uKFwiMzJlOVwiKSxvPW4oXCI3OWU1XCIpLGM9bihcImJlMTNcIiksdT1uKFwiMmI0Y1wiKSxhPW4oXCI1MjBhXCIpLHM9dShcInNwZWNpZXNcIiksZj0hbygoZnVuY3Rpb24oKXt2YXIgdD0vLi87cmV0dXJuIHQuZXhlYz1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0Lmdyb3Vwcz17YTpcIjdcIn0sdH0sXCI3XCIhPT1cIlwiLnJlcGxhY2UodCxcIiQ8YT5cIil9KSksbD1mdW5jdGlvbigpe3ZhciB0PS8oPzopLyxlPXQuZXhlYzt0LmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBuPVwiYWJcIi5zcGxpdCh0KTtyZXR1cm4gMj09PW4ubGVuZ3RoJiZcImFcIj09PW5bMF0mJlwiYlwiPT09blsxXX0oKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBwPXUodCksaD0hbygoZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gZVtwXT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT1cIlwiW3RdKGUpfSkpLHY9aD8hbygoZnVuY3Rpb24oKXt2YXIgZT0hMSxuPS9hLztyZXR1cm4gbi5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIGU9ITAsbnVsbH0sXCJzcGxpdFwiPT09dCYmKG4uY29uc3RydWN0b3I9e30sbi5jb25zdHJ1Y3RvcltzXT1mdW5jdGlvbigpe3JldHVybiBufSksbltwXShcIlwiKSwhZX0pKTp2b2lkIDA7aWYoIWh8fCF2fHxcInJlcGxhY2VcIj09PXQmJiFmfHxcInNwbGl0XCI9PT10JiYhbCl7dmFyIGQ9Ly4vW3BdLHk9bihjLHAsXCJcIlt0XSwoZnVuY3Rpb24odCxlLG4scixpKXtyZXR1cm4gZS5leGVjPT09YT9oJiYhaT97ZG9uZTohMCx2YWx1ZTpkLmNhbGwoZSxuLHIpfTp7ZG9uZTohMCx2YWx1ZTp0LmNhbGwobixlLHIpfTp7ZG9uZTohMX19KSksYj15WzBdLGc9eVsxXTtyKFN0cmluZy5wcm90b3R5cGUsdCxiKSxpKFJlZ0V4cC5wcm90b3R5cGUscCwyPT1lP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIGcuY2FsbCh0LHRoaXMsZSl9OmZ1bmN0aW9uKHQpe3JldHVybiBnLmNhbGwodCx0aGlzKX0pfX19LFwiMjMwZVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZDNmNFwiKSxpPW4oXCI3NzI2XCIpLmRvY3VtZW50LG89cihpKSYmcihpLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbz9pLmNyZWF0ZUVsZW1lbnQodCk6e319fSxcIjIzYzZcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjJkOTVcIiksaT1uKFwiMmI0Y1wiKShcInRvU3RyaW5nVGFnXCIpLG89XCJBcmd1bWVudHNcIj09cihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLGM9ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbZV19Y2F0Y2gobil7fX07dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLG4sdTtyZXR1cm4gdm9pZCAwPT09dD9cIlVuZGVmaW5lZFwiOm51bGw9PT10P1wiTnVsbFwiOlwic3RyaW5nXCI9PXR5cGVvZihuPWMoZT1PYmplY3QodCksaSkpP246bz9yKGUpOlwiT2JqZWN0XCI9PSh1PXIoZSkpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNhbGxlZT9cIkFyZ3VtZW50c1wiOnV9fSxcIjI0MWVcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjI1ZWJcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qocih0KSl9fSxcIjI0YzVcIjpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsaSxvLGMsdT1uKFwiYjhlM1wiKSxhPW4oXCJlNTNkXCIpLHM9bihcImQ4NjRcIiksZj1uKFwiNDBjM1wiKSxsPW4oXCI2M2I2XCIpLHA9bihcImY3NzJcIiksaD1uKFwiNzlhYVwiKSx2PW4oXCIxMTczXCIpLGQ9bihcImEyMmFcIikseT1uKFwiZjIwMVwiKSxiPW4oXCI0MTc4XCIpLnNldCxnPW4oXCJhYmEyXCIpKCksbT1uKFwiNjU2ZVwiKSx4PW4oXCI0NDM5XCIpLHc9bihcImJjMTNcIiksXz1uKFwiY2Q3OFwiKSxTPVwiUHJvbWlzZVwiLE89YS5UeXBlRXJyb3Isaz1hLnByb2Nlc3Msaj1rJiZrLnZlcnNpb25zLEU9aiYmai52OHx8XCJcIixQPWFbU10sQT1cInByb2Nlc3NcIj09ZihrKSxMPWZ1bmN0aW9uKCl7fSxUPWk9bS5mLE09ISFmdW5jdGlvbigpe3RyeXt2YXIgdD1QLnJlc29sdmUoMSksZT0odC5jb25zdHJ1Y3Rvcj17fSlbbihcIjUxNjhcIikoXCJzcGVjaWVzXCIpXT1mdW5jdGlvbih0KXt0KEwsTCl9O3JldHVybihBfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpJiZ0LnRoZW4oTClpbnN0YW5jZW9mIGUmJjAhPT1FLmluZGV4T2YoXCI2LjZcIikmJi0xPT09dy5pbmRleE9mKFwiQ2hyb21lLzY2XCIpfWNhdGNoKHIpe319KCksQz1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4hKCFwKHQpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZihlPXQudGhlbikpJiZlfSxGPWZ1bmN0aW9uKHQsZSl7aWYoIXQuX24pe3QuX249ITA7dmFyIG49dC5fYztnKChmdW5jdGlvbigpe3ZhciByPXQuX3YsaT0xPT10Ll9zLG89MCxjPWZ1bmN0aW9uKGUpe3ZhciBuLG8sYyx1PWk/ZS5vazplLmZhaWwsYT1lLnJlc29sdmUscz1lLnJlamVjdCxmPWUuZG9tYWluO3RyeXt1PyhpfHwoMj09dC5faCYmTih0KSx0Ll9oPTEpLCEwPT09dT9uPXI6KGYmJmYuZW50ZXIoKSxuPXUociksZiYmKGYuZXhpdCgpLGM9ITApKSxuPT09ZS5wcm9taXNlP3MoTyhcIlByb21pc2UtY2hhaW4gY3ljbGVcIikpOihvPUMobikpP28uY2FsbChuLGEscyk6YShuKSk6cyhyKX1jYXRjaChsKXtmJiYhYyYmZi5leGl0KCkscyhsKX19O3doaWxlKG4ubGVuZ3RoPm8pYyhuW28rK10pO3QuX2M9W10sdC5fbj0hMSxlJiYhdC5faCYmSSh0KX0pKX19LEk9ZnVuY3Rpb24odCl7Yi5jYWxsKGEsKGZ1bmN0aW9uKCl7dmFyIGUsbixyLGk9dC5fdixvPVIodCk7aWYobyYmKGU9eCgoZnVuY3Rpb24oKXtBP2suZW1pdChcInVuaGFuZGxlZFJlamVjdGlvblwiLGksdCk6KG49YS5vbnVuaGFuZGxlZHJlamVjdGlvbik/bih7cHJvbWlzZTp0LHJlYXNvbjppfSk6KHI9YS5jb25zb2xlKSYmci5lcnJvciYmci5lcnJvcihcIlVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvblwiLGkpfSkpLHQuX2g9QXx8Uih0KT8yOjEpLHQuX2E9dm9pZCAwLG8mJmUuZSl0aHJvdyBlLnZ9KSl9LFI9ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10Ll9oJiYwPT09KHQuX2F8fHQuX2MpLmxlbmd0aH0sTj1mdW5jdGlvbih0KXtiLmNhbGwoYSwoZnVuY3Rpb24oKXt2YXIgZTtBP2suZW1pdChcInJlamVjdGlvbkhhbmRsZWRcIix0KTooZT1hLm9ucmVqZWN0aW9uaGFuZGxlZCkmJmUoe3Byb21pc2U6dCxyZWFzb246dC5fdn0pfSkpfSxxPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS5fZHx8KGUuX2Q9ITAsZT1lLl93fHxlLGUuX3Y9dCxlLl9zPTIsZS5fYXx8KGUuX2E9ZS5fYy5zbGljZSgpKSxGKGUsITApKX0sRD1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXM7aWYoIW4uX2Qpe24uX2Q9ITAsbj1uLl93fHxuO3RyeXtpZihuPT09dCl0aHJvdyBPKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7KGU9Qyh0KSk/ZygoZnVuY3Rpb24oKXt2YXIgcj17X3c6bixfZDohMX07dHJ5e2UuY2FsbCh0LHMoRCxyLDEpLHMocSxyLDEpKX1jYXRjaChpKXtxLmNhbGwocixpKX19KSk6KG4uX3Y9dCxuLl9zPTEsRihuLCExKSl9Y2F0Y2gocil7cS5jYWxsKHtfdzpuLF9kOiExfSxyKX19fTtNfHwoUD1mdW5jdGlvbih0KXt2KHRoaXMsUCxTLFwiX2hcIiksaCh0KSxyLmNhbGwodGhpcyk7dHJ5e3QocyhELHRoaXMsMSkscyhxLHRoaXMsMSkpfWNhdGNoKGUpe3EuY2FsbCh0aGlzLGUpfX0scj1mdW5jdGlvbih0KXt0aGlzLl9jPVtdLHRoaXMuX2E9dm9pZCAwLHRoaXMuX3M9MCx0aGlzLl9kPSExLHRoaXMuX3Y9dm9pZCAwLHRoaXMuX2g9MCx0aGlzLl9uPSExfSxyLnByb3RvdHlwZT1uKFwiNWM5NVwiKShQLnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbih0LGUpe3ZhciBuPVQoeSh0aGlzLFApKTtyZXR1cm4gbi5vaz1cImZ1bmN0aW9uXCIhPXR5cGVvZiB0fHx0LG4uZmFpbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiZlLG4uZG9tYWluPUE/ay5kb21haW46dm9pZCAwLHRoaXMuX2MucHVzaChuKSx0aGlzLl9hJiZ0aGlzLl9hLnB1c2gobiksdGhpcy5fcyYmRih0aGlzLCExKSxuLnByb21pc2V9LGNhdGNoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLHQpfX0pLG89ZnVuY3Rpb24oKXt2YXIgdD1uZXcgcjt0aGlzLnByb21pc2U9dCx0aGlzLnJlc29sdmU9cyhELHQsMSksdGhpcy5yZWplY3Q9cyhxLHQsMSl9LG0uZj1UPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09UHx8dD09PWM/bmV3IG8odCk6aSh0KX0pLGwobC5HK2wuVytsLkYqIU0se1Byb21pc2U6UH0pLG4oXCI0NWYyXCIpKFAsUyksbihcIjRjOTVcIikoUyksYz1uKFwiNTg0YVwiKVtTXSxsKGwuUytsLkYqIU0sUyx7cmVqZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPVQodGhpcyksbj1lLnJlamVjdDtyZXR1cm4gbih0KSxlLnByb21pc2V9fSksbChsLlMrbC5GKih1fHwhTSksUyx7cmVzb2x2ZTpmdW5jdGlvbih0KXtyZXR1cm4gXyh1JiZ0aGlzPT09Yz9QOnRoaXMsdCl9fSksbChsLlMrbC5GKiEoTSYmbihcIjRlZTFcIikoKGZ1bmN0aW9uKHQpe1AuYWxsKHQpW1wiY2F0Y2hcIl0oTCl9KSkpLFMse2FsbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49VChlKSxyPW4ucmVzb2x2ZSxpPW4ucmVqZWN0LG89eCgoZnVuY3Rpb24oKXt2YXIgbj1bXSxvPTAsYz0xO2QodCwhMSwoZnVuY3Rpb24odCl7dmFyIHU9bysrLGE9ITE7bi5wdXNoKHZvaWQgMCksYysrLGUucmVzb2x2ZSh0KS50aGVuKChmdW5jdGlvbih0KXthfHwoYT0hMCxuW3VdPXQsLS1jfHxyKG4pKX0pLGkpfSkpLC0tY3x8cihuKX0pKTtyZXR1cm4gby5lJiZpKG8udiksbi5wcm9taXNlfSxyYWNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1UKGUpLHI9bi5yZWplY3QsaT14KChmdW5jdGlvbigpe2QodCwhMSwoZnVuY3Rpb24odCl7ZS5yZXNvbHZlKHQpLnRoZW4obi5yZXNvbHZlLHIpfSkpfSkpO3JldHVybiBpLmUmJnIoaS52KSxuLnByb21pc2V9fSl9LFwiMjVlYlwiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09dCl0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIrdCk7cmV0dXJuIHR9fSwyNjIxOmZ1bmN0aW9uKHQsZSl7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LFwiMjdlZVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiMjNjNlwiKSxpPW4oXCIyYjRjXCIpKFwiaXRlcmF0b3JcIiksbz1uKFwiODRmMlwiKTt0LmV4cG9ydHM9bihcIjgzNzhcIikuZ2V0SXRlcmF0b3JNZXRob2Q9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT10KXJldHVybiB0W2ldfHx0W1wiQEBpdGVyYXRvclwiXXx8b1tyKHQpXX19LFwiMjhhNVwiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiYWFlM1wiKSxpPW4oXCJjYjdjXCIpLG89bihcImViZDZcIiksYz1uKFwiMDM5MFwiKSx1PW4oXCI5ZGVmXCIpLGE9bihcIjVmMWJcIikscz1uKFwiNTIwYVwiKSxmPW4oXCI3OWU1XCIpLGw9TWF0aC5taW4scD1bXS5wdXNoLGg9XCJzcGxpdFwiLHY9XCJsZW5ndGhcIixkPVwibGFzdEluZGV4XCIseT00Mjk0OTY3Mjk1LGI9IWYoKGZ1bmN0aW9uKCl7UmVnRXhwKHksXCJ5XCIpfSkpO24oXCIyMTRmXCIpKFwic3BsaXRcIiwyLChmdW5jdGlvbih0LGUsbixmKXt2YXIgZztyZXR1cm4gZz1cImNcIj09XCJhYmJjXCJbaF0oLyhiKSovKVsxXXx8NCE9XCJ0ZXN0XCJbaF0oLyg/OikvLC0xKVt2XXx8MiE9XCJhYlwiW2hdKC8oPzphYikqLylbdl18fDQhPVwiLlwiW2hdKC8oLj8pKC4/KS8pW3ZdfHxcIi5cIltoXSgvKCkoKS8pW3ZdPjF8fFwiXCJbaF0oLy4/Lylbdl0/ZnVuY3Rpb24odCxlKXt2YXIgaT1TdHJpbmcodGhpcyk7aWYodm9pZCAwPT09dCYmMD09PWUpcmV0dXJuW107aWYoIXIodCkpcmV0dXJuIG4uY2FsbChpLHQsZSk7dmFyIG8sYyx1LGE9W10sZj0odC5pZ25vcmVDYXNlP1wiaVwiOlwiXCIpKyh0Lm11bHRpbGluZT9cIm1cIjpcIlwiKSsodC51bmljb2RlP1widVwiOlwiXCIpKyh0LnN0aWNreT9cInlcIjpcIlwiKSxsPTAsaD12b2lkIDA9PT1lP3k6ZT4+PjAsYj1uZXcgUmVnRXhwKHQuc291cmNlLGYrXCJnXCIpO3doaWxlKG89cy5jYWxsKGIsaSkpe2lmKGM9YltkXSxjPmwmJihhLnB1c2goaS5zbGljZShsLG8uaW5kZXgpKSxvW3ZdPjEmJm8uaW5kZXg8aVt2XSYmcC5hcHBseShhLG8uc2xpY2UoMSkpLHU9b1swXVt2XSxsPWMsYVt2XT49aCkpYnJlYWs7YltkXT09PW8uaW5kZXgmJmJbZF0rK31yZXR1cm4gbD09PWlbdl0/IXUmJmIudGVzdChcIlwiKXx8YS5wdXNoKFwiXCIpOmEucHVzaChpLnNsaWNlKGwpKSxhW3ZdPmg/YS5zbGljZSgwLGgpOmF9OlwiMFwiW2hdKHZvaWQgMCwwKVt2XT9mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10JiYwPT09ZT9bXTpuLmNhbGwodGhpcyx0LGUpfTpuLFtmdW5jdGlvbihuLHIpe3ZhciBpPXQodGhpcyksbz12b2lkIDA9PW4/dm9pZCAwOm5bZV07cmV0dXJuIHZvaWQgMCE9PW8/by5jYWxsKG4saSxyKTpnLmNhbGwoU3RyaW5nKGkpLG4scil9LGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZihnLHQsdGhpcyxlLGchPT1uKTtpZihyLmRvbmUpcmV0dXJuIHIudmFsdWU7dmFyIHM9aSh0KSxwPVN0cmluZyh0aGlzKSxoPW8ocyxSZWdFeHApLHY9cy51bmljb2RlLGQ9KHMuaWdub3JlQ2FzZT9cImlcIjpcIlwiKSsocy5tdWx0aWxpbmU/XCJtXCI6XCJcIikrKHMudW5pY29kZT9cInVcIjpcIlwiKSsoYj9cInlcIjpcImdcIiksbT1uZXcgaChiP3M6XCJeKD86XCIrcy5zb3VyY2UrXCIpXCIsZCkseD12b2lkIDA9PT1lP3k6ZT4+PjA7aWYoMD09PXgpcmV0dXJuW107aWYoMD09PXAubGVuZ3RoKXJldHVybiBudWxsPT09YShtLHApP1twXTpbXTt2YXIgdz0wLF89MCxTPVtdO3doaWxlKF88cC5sZW5ndGgpe20ubGFzdEluZGV4PWI/XzowO3ZhciBPLGs9YShtLGI/cDpwLnNsaWNlKF8pKTtpZihudWxsPT09a3x8KE89bCh1KG0ubGFzdEluZGV4KyhiPzA6XykpLHAubGVuZ3RoKSk9PT13KV89YyhwLF8sdik7ZWxzZXtpZihTLnB1c2gocC5zbGljZSh3LF8pKSxTLmxlbmd0aD09PXgpcmV0dXJuIFM7Zm9yKHZhciBqPTE7ajw9ay5sZW5ndGgtMTtqKyspaWYoUy5wdXNoKGtbal0pLFMubGVuZ3RoPT09eClyZXR1cm4gUztfPXc9T319cmV0dXJuIFMucHVzaChwLnNsaWNlKHcpKSxTfV19KSl9LFwiMjk0Y1wiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4hIXQoKX1jYXRjaChlKXtyZXR1cm4hMH19fSxcIjJhYmFcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjc3MjZcIiksaT1uKFwiMzJlOVwiKSxvPW4oXCI2OWE4XCIpLGM9bihcImNhNWFcIikoXCJzcmNcIiksdT1uKFwiZmE1YlwiKSxhPVwidG9TdHJpbmdcIixzPShcIlwiK3UpLnNwbGl0KGEpO24oXCI4Mzc4XCIpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIHUuY2FsbCh0KX0sKHQuZXhwb3J0cz1mdW5jdGlvbih0LGUsbix1KXt2YXIgYT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBuO2EmJihvKG4sXCJuYW1lXCIpfHxpKG4sXCJuYW1lXCIsZSkpLHRbZV0hPT1uJiYoYSYmKG8obixjKXx8aShuLGMsdFtlXT9cIlwiK3RbZV06cy5qb2luKFN0cmluZyhlKSkpKSx0PT09cj90W2VdPW46dT90W2VdP3RbZV09bjppKHQsZSxuKTooZGVsZXRlIHRbZV0saSh0LGUsbikpKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSxhLChmdW5jdGlvbigpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMmJnRoaXNbY118fHUuY2FsbCh0aGlzKX0pKX0sXCIyYWViXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJjYjdjXCIpLGk9bihcIjE0OTVcIiksbz1uKFwiZTExZVwiKSxjPW4oXCI2MTNiXCIpKFwiSUVfUFJPVE9cIiksdT1mdW5jdGlvbigpe30sYT1cInByb3RvdHlwZVwiLHM9ZnVuY3Rpb24oKXt2YXIgdCxlPW4oXCIyMzBlXCIpKFwiaWZyYW1lXCIpLHI9by5sZW5ndGgsaT1cIjxcIixjPVwiPlwiO2Uuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixuKFwiZmFiMlwiKS5hcHBlbmRDaGlsZChlKSxlLnNyYz1cImphdmFzY3JpcHQ6XCIsdD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQsdC5vcGVuKCksdC53cml0ZShpK1wic2NyaXB0XCIrYytcImRvY3VtZW50LkY9T2JqZWN0XCIraStcIi9zY3JpcHRcIitjKSx0LmNsb3NlKCkscz10LkY7d2hpbGUoci0tKWRlbGV0ZSBzW2FdW29bcl1dO3JldHVybiBzKCl9O3QuZXhwb3J0cz1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiBudWxsIT09dD8odVthXT1yKHQpLG49bmV3IHUsdVthXT1udWxsLG5bY109dCk6bj1zKCksdm9pZCAwPT09ZT9uOmkobixlKX19LFwiMmI0Y1wiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNTUzN1wiKShcIndrc1wiKSxpPW4oXCJjYTVhXCIpLG89bihcIjc3MjZcIikuU3ltYm9sLGM9XCJmdW5jdGlvblwiPT10eXBlb2Ygbyx1PXQuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gclt0XXx8KHJbdF09YyYmb1t0XXx8KGM/bzppKShcIlN5bWJvbC5cIit0KSl9O3Uuc3RvcmU9cn0sXCIyZDAwXCI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ITF9LFwiMmQ5NVwiOmZ1bmN0aW9uKHQsZSl7dmFyIG49e30udG9TdHJpbmc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuLmNhbGwodCkuc2xpY2UoOCwtMSl9fSxcIjJmZGJcIjpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcIjVjYTFcIiksaT1uKFwiZDJjOFwiKSxvPVwiaW5jbHVkZXNcIjtyKHIuUCtyLkYqbihcIjUxNDdcIikobyksXCJTdHJpbmdcIix7aW5jbHVkZXM6ZnVuY3Rpb24odCl7cmV0dXJuISF+aSh0aGlzLHQsbykuaW5kZXhPZih0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sMzAyNDpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIHI9dm9pZCAwPT09bjtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gcj90KCk6dC5jYWxsKG4pO2Nhc2UgMTpyZXR1cm4gcj90KGVbMF0pOnQuY2FsbChuLGVbMF0pO2Nhc2UgMjpyZXR1cm4gcj90KGVbMF0sZVsxXSk6dC5jYWxsKG4sZVswXSxlWzFdKTtjYXNlIDM6cmV0dXJuIHI/dChlWzBdLGVbMV0sZVsyXSk6dC5jYWxsKG4sZVswXSxlWzFdLGVbMl0pO2Nhc2UgNDpyZXR1cm4gcj90KGVbMF0sZVsxXSxlWzJdLGVbM10pOnQuY2FsbChuLGVbMF0sZVsxXSxlWzJdLGVbM10pfXJldHVybiB0LmFwcGx5KG4sZSl9fSxcIjMwZjFcIjpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcImI4ZTNcIiksaT1uKFwiNjNiNlwiKSxvPW4oXCI5MTM4XCIpLGM9bihcIjM1ZThcIiksdT1uKFwiNDgxYlwiKSxhPW4oXCI4ZjYwXCIpLHM9bihcIjQ1ZjJcIiksZj1uKFwiNTNlMlwiKSxsPW4oXCI1MTY4XCIpKFwiaXRlcmF0b3JcIikscD0hKFtdLmtleXMmJlwibmV4dFwiaW5bXS5rZXlzKCkpLGg9XCJAQGl0ZXJhdG9yXCIsdj1cImtleXNcIixkPVwidmFsdWVzXCIseT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sYixnLG0seCl7YShuLGUsYik7dmFyIHcsXyxTLE89ZnVuY3Rpb24odCl7aWYoIXAmJnQgaW4gUClyZXR1cm4gUFt0XTtzd2l0Y2godCl7Y2FzZSB2OnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLHQpfTtjYXNlIGQ6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLHQpfX0saz1lK1wiIEl0ZXJhdG9yXCIsaj1nPT1kLEU9ITEsUD10LnByb3RvdHlwZSxBPVBbbF18fFBbaF18fGcmJlBbZ10sTD1BfHxPKGcpLFQ9Zz9qP08oXCJlbnRyaWVzXCIpOkw6dm9pZCAwLE09XCJBcnJheVwiPT1lJiZQLmVudHJpZXN8fEE7aWYoTSYmKFM9ZihNLmNhbGwobmV3IHQpKSxTIT09T2JqZWN0LnByb3RvdHlwZSYmUy5uZXh0JiYocyhTLGssITApLHJ8fFwiZnVuY3Rpb25cIj09dHlwZW9mIFNbbF18fGMoUyxsLHkpKSksaiYmQSYmQS5uYW1lIT09ZCYmKEU9ITAsTD1mdW5jdGlvbigpe3JldHVybiBBLmNhbGwodGhpcyl9KSxyJiYheHx8IXAmJiFFJiZQW2xdfHxjKFAsbCxMKSx1W2VdPUwsdVtrXT15LGcpaWYodz17dmFsdWVzOmo/TDpPKGQpLGtleXM6bT9MOk8odiksZW50cmllczpUfSx4KWZvcihfIGluIHcpXyBpbiBQfHxvKFAsXyx3W19dKTtlbHNlIGkoaS5QK2kuRioocHx8RSksZSx3KTtyZXR1cm4gd319LFwiMzFmNFwiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj12b2lkIDA9PT1uO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiByP3QoKTp0LmNhbGwobik7Y2FzZSAxOnJldHVybiByP3QoZVswXSk6dC5jYWxsKG4sZVswXSk7Y2FzZSAyOnJldHVybiByP3QoZVswXSxlWzFdKTp0LmNhbGwobixlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4gcj90KGVbMF0sZVsxXSxlWzJdKTp0LmNhbGwobixlWzBdLGVbMV0sZVsyXSk7Y2FzZSA0OnJldHVybiByP3QoZVswXSxlWzFdLGVbMl0sZVszXSk6dC5jYWxsKG4sZVswXSxlWzFdLGVbMl0sZVszXSl9cmV0dXJuIHQuYXBwbHkobixlKX19LFwiMzJlOVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiODZjY1wiKSxpPW4oXCI0NjMwXCIpO3QuZXhwb3J0cz1uKFwiOWUxZVwiKT9mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIuZih0LGUsaSgxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW4sdH19LFwiMzJmY1wiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZTUzZFwiKS5kb2N1bWVudDt0LmV4cG9ydHM9ciYmci5kb2N1bWVudEVsZW1lbnR9LFwiMzM1Y1wiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNmI0Y1wiKTt0LmV4cG9ydHM9T2JqZWN0KFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuXCJTdHJpbmdcIj09cih0KT90LnNwbGl0KFwiXCIpOk9iamVjdCh0KX19LFwiMzNhNFwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiODRmMlwiKSxpPW4oXCIyYjRjXCIpKFwiaXRlcmF0b3JcIiksbz1BcnJheS5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiYoci5BcnJheT09PXR8fG9baV09PT10KX19LFwiMzU1ZFwiOmZ1bmN0aW9uKHQsZSl7ZS5mPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlfSxcIjM1ZThcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImQ5ZjZcIiksaT1uKFwiYWViZFwiKTt0LmV4cG9ydHM9bihcIjhlNjBcIik/ZnVuY3Rpb24odCxlLG4pe3JldHVybiByLmYodCxlLGkoMSxuKSl9OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1uLHR9fSwzNjIwOmZ1bmN0aW9uKHQsZSxuKXt9LFwiMzZjM1wiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiMzM1Y1wiKSxpPW4oXCIyNWViXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcihpKHQpKX19LDM3MDI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI0ODFiXCIpLGk9bihcIjUxNjhcIikoXCJpdGVyYXRvclwiKSxvPUFycmF5LnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihyLkFycmF5PT09dHx8b1tpXT09PXQpfX0sMzg0NjpmdW5jdGlvbih0LGUsbil7bihcIjllMWVcIikmJlwiZ1wiIT0vLi9nLmZsYWdzJiZuKFwiODZjY1wiKS5mKFJlZ0V4cC5wcm90b3R5cGUsXCJmbGFnc1wiLHtjb25maWd1cmFibGU6ITAsZ2V0Om4oXCIwYmZiXCIpfSl9LFwiMzg2ZFwiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiY2I3Y1wiKSxpPW4oXCI4M2ExXCIpLG89bihcIjVmMWJcIik7bihcIjIxNGZcIikoXCJzZWFyY2hcIiwxLChmdW5jdGlvbih0LGUsbixjKXtyZXR1cm5bZnVuY3Rpb24obil7dmFyIHI9dCh0aGlzKSxpPXZvaWQgMD09bj92b2lkIDA6bltlXTtyZXR1cm4gdm9pZCAwIT09aT9pLmNhbGwobixyKTpuZXcgUmVnRXhwKG4pW2VdKFN0cmluZyhyKSl9LGZ1bmN0aW9uKHQpe3ZhciBlPWMobix0LHRoaXMpO2lmKGUuZG9uZSlyZXR1cm4gZS52YWx1ZTt2YXIgdT1yKHQpLGE9U3RyaW5nKHRoaXMpLHM9dS5sYXN0SW5kZXg7aShzLDApfHwodS5sYXN0SW5kZXg9MCk7dmFyIGY9byh1LGEpO3JldHVybiBpKHUubGFzdEluZGV4LHMpfHwodS5sYXN0SW5kZXg9cyksbnVsbD09PWY/LTE6Zi5pbmRleH1dfSkpfSxcIjM4ZmRcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjY5YThcIiksaT1uKFwiNGJmOFwiKSxvPW4oXCI2MTNiXCIpKFwiSUVfUFJPVE9cIiksYz1PYmplY3QucHJvdG90eXBlO3QuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQpe3JldHVybiB0PWkodCkscih0LG8pP3Rbb106XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9jOm51bGx9fSxcIjNhMzhcIjpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguY2VpbCxyPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0PSt0KT8wOih0PjA/cjpuKSh0KX19LFwiM2MxMVwiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiNjNiNlwiKSxpPW4oXCI1ODRhXCIpLG89bihcImU1M2RcIiksYz1uKFwiZjIwMVwiKSx1PW4oXCJjZDc4XCIpO3Ioci5QK3IuUixcIlByb21pc2VcIix7ZmluYWxseTpmdW5jdGlvbih0KXt2YXIgZT1jKHRoaXMsaS5Qcm9taXNlfHxvLlByb21pc2UpLG49XCJmdW5jdGlvblwiPT10eXBlb2YgdDtyZXR1cm4gdGhpcy50aGVuKG4/ZnVuY3Rpb24obil7cmV0dXJuIHUoZSx0KCkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9OnQsbj9mdW5jdGlvbihuKXtyZXR1cm4gdShlLHQoKSkudGhlbigoZnVuY3Rpb24oKXt0aHJvdyBufSkpfTp0KX19KX0sXCIzY2JhXCI6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCJlY2YwXCIpLGk9bi5uKHIpO2kuYX0sXCI0MGMzXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI2YjRjXCIpLGk9bihcIjUxNjhcIikoXCJ0b1N0cmluZ1RhZ1wiKSxvPVwiQXJndW1lbnRzXCI9PXIoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKSxjPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKG4pe319O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxuLHU7cmV0dXJuIHZvaWQgMD09PXQ/XCJVbmRlZmluZWRcIjpudWxsPT09dD9cIk51bGxcIjpcInN0cmluZ1wiPT10eXBlb2Yobj1jKGU9T2JqZWN0KHQpLGkpKT9uOm8/cihlKTpcIk9iamVjdFwiPT0odT1yKGUpKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jYWxsZWU/XCJBcmd1bWVudHNcIjp1fX0sNDE3ODpmdW5jdGlvbih0LGUsbil7dmFyIHIsaSxvLGM9bihcImQ4NjRcIiksdT1uKFwiMzAyNFwiKSxhPW4oXCIzMmZjXCIpLHM9bihcIjFlYzlcIiksZj1uKFwiZTUzZFwiKSxsPWYucHJvY2VzcyxwPWYuc2V0SW1tZWRpYXRlLGg9Zi5jbGVhckltbWVkaWF0ZSx2PWYuTWVzc2FnZUNoYW5uZWwsZD1mLkRpc3BhdGNoLHk9MCxiPXt9LGc9XCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixtPWZ1bmN0aW9uKCl7dmFyIHQ9K3RoaXM7aWYoYi5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIGU9Ylt0XTtkZWxldGUgYlt0XSxlKCl9fSx4PWZ1bmN0aW9uKHQpe20uY2FsbCh0LmRhdGEpfTtwJiZofHwocD1mdW5jdGlvbih0KXt2YXIgZT1bXSxuPTE7d2hpbGUoYXJndW1lbnRzLmxlbmd0aD5uKWUucHVzaChhcmd1bWVudHNbbisrXSk7cmV0dXJuIGJbKyt5XT1mdW5jdGlvbigpe3UoXCJmdW5jdGlvblwiPT10eXBlb2YgdD90OkZ1bmN0aW9uKHQpLGUpfSxyKHkpLHl9LGg9ZnVuY3Rpb24odCl7ZGVsZXRlIGJbdF19LFwicHJvY2Vzc1wiPT1uKFwiNmI0Y1wiKShsKT9yPWZ1bmN0aW9uKHQpe2wubmV4dFRpY2soYyhtLHQsMSkpfTpkJiZkLm5vdz9yPWZ1bmN0aW9uKHQpe2Qubm93KGMobSx0LDEpKX06dj8oaT1uZXcgdixvPWkucG9ydDIsaS5wb3J0MS5vbm1lc3NhZ2U9eCxyPWMoby5wb3N0TWVzc2FnZSxvLDEpKTpmLmFkZEV2ZW50TGlzdGVuZXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHBvc3RNZXNzYWdlJiYhZi5pbXBvcnRTY3JpcHRzPyhyPWZ1bmN0aW9uKHQpe2YucG9zdE1lc3NhZ2UodCtcIlwiLFwiKlwiKX0sZi5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLHgsITEpKTpyPWcgaW4gcyhcInNjcmlwdFwiKT9mdW5jdGlvbih0KXthLmFwcGVuZENoaWxkKHMoXCJzY3JpcHRcIikpW2ddPWZ1bmN0aW9uKCl7YS5yZW1vdmVDaGlsZCh0aGlzKSxtLmNhbGwodCl9fTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KGMobSx0LDEpLDApfSksdC5leHBvcnRzPXtzZXQ6cCxjbGVhcjpofX0sXCI0MWEwXCI6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCIyYWViXCIpLGk9bihcIjQ2MzBcIiksbz1uKFwiN2YyMFwiKSxjPXt9O24oXCIzMmU5XCIpKGMsbihcIjJiNGNcIikoXCJpdGVyYXRvclwiKSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3QucHJvdG90eXBlPXIoYyx7bmV4dDppKDEsbil9KSxvKHQsZStcIiBJdGVyYXRvclwiKX19LFwiNDNmY1wiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiNjNiNlwiKSxpPW4oXCI2NTZlXCIpLG89bihcIjQ0MzlcIik7cihyLlMsXCJQcm9taXNlXCIse3RyeTpmdW5jdGlvbih0KXt2YXIgZT1pLmYodGhpcyksbj1vKHQpO3JldHVybihuLmU/ZS5yZWplY3Q6ZS5yZXNvbHZlKShuLnYpLGUucHJvbWlzZX19KX0sNDQzOTpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJue2U6ITEsdjp0KCl9fWNhdGNoKGUpe3JldHVybntlOiEwLHY6ZX19fX0sXCI0NTRmXCI6ZnVuY3Rpb24odCxlLG4pe24oXCI0NmE3XCIpO3ZhciByPW4oXCI1ODRhXCIpLk9iamVjdDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiByLmRlZmluZVByb3BlcnR5KHQsZSxuKX19LFwiNDU2ZFwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNGJmOFwiKSxpPW4oXCIwZDU4XCIpO24oXCI1ZWRhXCIpKFwia2V5c1wiLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShyKHQpKX19KSl9LDQ1ODg6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLmNlaWwscj1NYXRoLmZsb29yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odD0rdCk/MDoodD4wP3I6bikodCl9fSxcIjQ1ZjJcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImQ5ZjZcIikuZixpPW4oXCIwN2UzXCIpLG89bihcIjUxNjhcIikoXCJ0b1N0cmluZ1RhZ1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3QmJiFpKHQ9bj90OnQucHJvdG90eXBlLG8pJiZyKHQsbyx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmV9KX19LDQ2MzA6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3cml0YWJsZTohKDQmdCksdmFsdWU6ZX19fSxcIjQ2YTdcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjYzYjZcIik7cihyLlMrci5GKiFuKFwiOGU2MFwiKSxcIk9iamVjdFwiLHtkZWZpbmVQcm9wZXJ0eTpuKFwiZDlmNlwiKS5mfSl9LFwiNDdlZVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiYzNhMVwiKSxpPW4oXCI5YWE5XCIpLG89bihcIjM1NWRcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1pLmY7aWYobil7dmFyIGMsdT1uKHQpLGE9by5mLHM9MDt3aGlsZSh1Lmxlbmd0aD5zKWEuY2FsbCh0LGM9dVtzKytdKSYmZS5wdXNoKGMpfXJldHVybiBlfX0sXCI0ODFiXCI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9e319LFwiNGE1OVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiOWI0M1wiKSxpPW4oXCIxZmE4XCIpLG89bihcIjMzYTRcIiksYz1uKFwiY2I3Y1wiKSx1PW4oXCI5ZGVmXCIpLGE9bihcIjI3ZWVcIikscz17fSxmPXt9O2U9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGwscCl7dmFyIGgsdixkLHksYj1wP2Z1bmN0aW9uKCl7cmV0dXJuIHR9OmEodCksZz1yKG4sbCxlPzI6MSksbT0wO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGIpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGl0ZXJhYmxlIVwiKTtpZihvKGIpKXtmb3IoaD11KHQubGVuZ3RoKTtoPm07bSsrKWlmKHk9ZT9nKGModj10W21dKVswXSx2WzFdKTpnKHRbbV0pLHk9PT1zfHx5PT09ZilyZXR1cm4geX1lbHNlIGZvcihkPWIuY2FsbCh0KTshKHY9ZC5uZXh0KCkpLmRvbmU7KWlmKHk9aShkLGcsdi52YWx1ZSxlKSx5PT09c3x8eT09PWYpcmV0dXJuIHl9O2UuQlJFQUs9cyxlLlJFVFVSTj1mfSxcIjRiZjhcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImJlMTNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qocih0KSl9fSxcIjRjOTVcIjpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcImU1M2RcIiksaT1uKFwiNTg0YVwiKSxvPW4oXCJkOWY2XCIpLGM9bihcIjhlNjBcIiksdT1uKFwiNTE2OFwiKShcInNwZWNpZXNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIGlbdF0/aVt0XTpyW3RdO2MmJmUmJiFlW3VdJiZvLmYoZSx1LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSxcIjRlZTFcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjUxNjhcIikoXCJpdGVyYXRvclwiKSxpPSExO3RyeXt2YXIgbz1bN11bcl0oKTtvW1wicmV0dXJuXCJdPWZ1bmN0aW9uKCl7aT0hMH0sQXJyYXkuZnJvbShvLChmdW5jdGlvbigpe3Rocm93IDJ9KSl9Y2F0Y2goYyl7fXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFlJiYhaSlyZXR1cm4hMTt2YXIgbj0hMTt0cnl7dmFyIG89WzddLHU9b1tyXSgpO3UubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOm49ITB9fSxvW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHV9LHQobyl9Y2F0Y2goYyl7fXJldHVybiBufX0sXCI1MDRjXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI5ZTFlXCIpLGk9bihcIjBkNThcIiksbz1uKFwiNjgyMVwiKSxjPW4oXCI1MmE3XCIpLmY7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbix1PW8oZSksYT1pKHUpLHM9YS5sZW5ndGgsZj0wLGw9W107d2hpbGUocz5mKW49YVtmKytdLHImJiFjLmNhbGwodSxuKXx8bC5wdXNoKHQ/W24sdVtuXV06dVtuXSk7cmV0dXJuIGx9fX0sXCI1MGVkXCI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm57dmFsdWU6ZSxkb25lOiEhdH19fSw1MTQ3OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiMmI0Y1wiKShcIm1hdGNoXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT0vLi87dHJ5e1wiLy4vXCJbdF0oZSl9Y2F0Y2gobil7dHJ5e3JldHVybiBlW3JdPSExLCFcIi8uL1wiW3RdKGUpfWNhdGNoKGkpe319cmV0dXJuITB9fSw1MTY4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZGJkYlwiKShcIndrc1wiKSxpPW4oXCI2MmEwXCIpLG89bihcImU1M2RcIikuU3ltYm9sLGM9XCJmdW5jdGlvblwiPT10eXBlb2Ygbyx1PXQuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gclt0XXx8KHJbdF09YyYmb1t0XXx8KGM/bzppKShcIlN5bWJvbC5cIit0KSl9O3Uuc3RvcmU9cn0sXCI1MjBhXCI6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCIwYmZiXCIpLGk9UmVnRXhwLnByb3RvdHlwZS5leGVjLG89U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLGM9aSx1PVwibGFzdEluZGV4XCIsYT1mdW5jdGlvbigpe3ZhciB0PS9hLyxlPS9iKi9nO3JldHVybiBpLmNhbGwodCxcImFcIiksaS5jYWxsKGUsXCJhXCIpLDAhPT10W3VdfHwwIT09ZVt1XX0oKSxzPXZvaWQgMCE9PS8oKT8/Ly5leGVjKFwiXCIpWzFdLGY9YXx8cztmJiYoYz1mdW5jdGlvbih0KXt2YXIgZSxuLGMsZixsPXRoaXM7cmV0dXJuIHMmJihuPW5ldyBSZWdFeHAoXCJeXCIrbC5zb3VyY2UrXCIkKD8hXFxcXHMpXCIsci5jYWxsKGwpKSksYSYmKGU9bFt1XSksYz1pLmNhbGwobCx0KSxhJiZjJiYobFt1XT1sLmdsb2JhbD9jLmluZGV4K2NbMF0ubGVuZ3RoOmUpLHMmJmMmJmMubGVuZ3RoPjEmJm8uY2FsbChjWzBdLG4sKGZ1bmN0aW9uKCl7Zm9yKGY9MTtmPGFyZ3VtZW50cy5sZW5ndGgtMjtmKyspdm9pZCAwPT09YXJndW1lbnRzW2ZdJiYoY1tmXT12b2lkIDApfSkpLGN9KSx0LmV4cG9ydHM9Y30sXCI1MmE3XCI6ZnVuY3Rpb24odCxlKXtlLmY9e30ucHJvcGVydHlJc0VudW1lcmFibGV9LFwiNTNlMlwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiMDdlM1wiKSxpPW4oXCIyNDFlXCIpLG89bihcIjU1NTlcIikoXCJJRV9QUk9UT1wiKSxjPU9iamVjdC5wcm90b3R5cGU7dC5leHBvcnRzPU9iamVjdC5nZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQ9aSh0KSxyKHQsbyk/dFtvXTpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNvbnN0cnVjdG9yJiZ0IGluc3RhbmNlb2YgdC5jb25zdHJ1Y3Rvcj90LmNvbnN0cnVjdG9yLnByb3RvdHlwZTp0IGluc3RhbmNlb2YgT2JqZWN0P2M6bnVsbH19LFwiNTQ5YlwiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiZDg2NFwiKSxpPW4oXCI2M2I2XCIpLG89bihcIjI0MWVcIiksYz1uKFwiYjBkY1wiKSx1PW4oXCIzNzAyXCIpLGE9bihcImI0NDdcIikscz1uKFwiMjBmZFwiKSxmPW4oXCI3Y2Q2XCIpO2koaS5TK2kuRiohbihcIjRlZTFcIikoKGZ1bmN0aW9uKHQpe0FycmF5LmZyb20odCl9KSksXCJBcnJheVwiLHtmcm9tOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxsLHA9byh0KSxoPVwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXM/dGhpczpBcnJheSx2PWFyZ3VtZW50cy5sZW5ndGgsZD12PjE/YXJndW1lbnRzWzFdOnZvaWQgMCx5PXZvaWQgMCE9PWQsYj0wLGc9ZihwKTtpZih5JiYoZD1yKGQsdj4yP2FyZ3VtZW50c1syXTp2b2lkIDAsMikpLHZvaWQgMD09Z3x8aD09QXJyYXkmJnUoZykpZm9yKGU9YShwLmxlbmd0aCksbj1uZXcgaChlKTtlPmI7YisrKXMobixiLHk/ZChwW2JdLGIpOnBbYl0pO2Vsc2UgZm9yKGw9Zy5jYWxsKHApLG49bmV3IGg7IShpPWwubmV4dCgpKS5kb25lO2IrKylzKG4sYix5P2MobCxkLFtpLnZhbHVlLGJdLCEwKTppLnZhbHVlKTtyZXR1cm4gbi5sZW5ndGg9YixufX0pfSxcIjU0YTFcIjpmdW5jdGlvbih0LGUsbil7bihcIjZjMWNcIiksbihcIjE2NTRcIiksdC5leHBvcnRzPW4oXCI5NWQ1XCIpfSxcIjU1MWNcIjpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsaSxvLGMsdT1uKFwiMmQwMFwiKSxhPW4oXCI3NzI2XCIpLHM9bihcIjliNDNcIiksZj1uKFwiMjNjNlwiKSxsPW4oXCI1Y2ExXCIpLHA9bihcImQzZjRcIiksaD1uKFwiZDhlOFwiKSx2PW4oXCJmNjA1XCIpLGQ9bihcIjRhNTlcIikseT1uKFwiZWJkNlwiKSxiPW4oXCIxOTkxXCIpLnNldCxnPW4oXCI4MDc5XCIpKCksbT1uKFwiYTViOFwiKSx4PW4oXCI5YzgwXCIpLHc9bihcImEyNWZcIiksXz1uKFwiYmNhYVwiKSxTPVwiUHJvbWlzZVwiLE89YS5UeXBlRXJyb3Isaz1hLnByb2Nlc3Msaj1rJiZrLnZlcnNpb25zLEU9aiYmai52OHx8XCJcIixQPWFbU10sQT1cInByb2Nlc3NcIj09ZihrKSxMPWZ1bmN0aW9uKCl7fSxUPWk9bS5mLE09ISFmdW5jdGlvbigpe3RyeXt2YXIgdD1QLnJlc29sdmUoMSksZT0odC5jb25zdHJ1Y3Rvcj17fSlbbihcIjJiNGNcIikoXCJzcGVjaWVzXCIpXT1mdW5jdGlvbih0KXt0KEwsTCl9O3JldHVybihBfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpJiZ0LnRoZW4oTClpbnN0YW5jZW9mIGUmJjAhPT1FLmluZGV4T2YoXCI2LjZcIikmJi0xPT09dy5pbmRleE9mKFwiQ2hyb21lLzY2XCIpfWNhdGNoKHIpe319KCksQz1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4hKCFwKHQpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZihlPXQudGhlbikpJiZlfSxGPWZ1bmN0aW9uKHQsZSl7aWYoIXQuX24pe3QuX249ITA7dmFyIG49dC5fYztnKChmdW5jdGlvbigpe3ZhciByPXQuX3YsaT0xPT10Ll9zLG89MCxjPWZ1bmN0aW9uKGUpe3ZhciBuLG8sYyx1PWk/ZS5vazplLmZhaWwsYT1lLnJlc29sdmUscz1lLnJlamVjdCxmPWUuZG9tYWluO3RyeXt1PyhpfHwoMj09dC5faCYmTih0KSx0Ll9oPTEpLCEwPT09dT9uPXI6KGYmJmYuZW50ZXIoKSxuPXUociksZiYmKGYuZXhpdCgpLGM9ITApKSxuPT09ZS5wcm9taXNlP3MoTyhcIlByb21pc2UtY2hhaW4gY3ljbGVcIikpOihvPUMobikpP28uY2FsbChuLGEscyk6YShuKSk6cyhyKX1jYXRjaChsKXtmJiYhYyYmZi5leGl0KCkscyhsKX19O3doaWxlKG4ubGVuZ3RoPm8pYyhuW28rK10pO3QuX2M9W10sdC5fbj0hMSxlJiYhdC5faCYmSSh0KX0pKX19LEk9ZnVuY3Rpb24odCl7Yi5jYWxsKGEsKGZ1bmN0aW9uKCl7dmFyIGUsbixyLGk9dC5fdixvPVIodCk7aWYobyYmKGU9eCgoZnVuY3Rpb24oKXtBP2suZW1pdChcInVuaGFuZGxlZFJlamVjdGlvblwiLGksdCk6KG49YS5vbnVuaGFuZGxlZHJlamVjdGlvbik/bih7cHJvbWlzZTp0LHJlYXNvbjppfSk6KHI9YS5jb25zb2xlKSYmci5lcnJvciYmci5lcnJvcihcIlVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvblwiLGkpfSkpLHQuX2g9QXx8Uih0KT8yOjEpLHQuX2E9dm9pZCAwLG8mJmUuZSl0aHJvdyBlLnZ9KSl9LFI9ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10Ll9oJiYwPT09KHQuX2F8fHQuX2MpLmxlbmd0aH0sTj1mdW5jdGlvbih0KXtiLmNhbGwoYSwoZnVuY3Rpb24oKXt2YXIgZTtBP2suZW1pdChcInJlamVjdGlvbkhhbmRsZWRcIix0KTooZT1hLm9ucmVqZWN0aW9uaGFuZGxlZCkmJmUoe3Byb21pc2U6dCxyZWFzb246dC5fdn0pfSkpfSxxPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS5fZHx8KGUuX2Q9ITAsZT1lLl93fHxlLGUuX3Y9dCxlLl9zPTIsZS5fYXx8KGUuX2E9ZS5fYy5zbGljZSgpKSxGKGUsITApKX0sRD1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXM7aWYoIW4uX2Qpe24uX2Q9ITAsbj1uLl93fHxuO3RyeXtpZihuPT09dCl0aHJvdyBPKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7KGU9Qyh0KSk/ZygoZnVuY3Rpb24oKXt2YXIgcj17X3c6bixfZDohMX07dHJ5e2UuY2FsbCh0LHMoRCxyLDEpLHMocSxyLDEpKX1jYXRjaChpKXtxLmNhbGwocixpKX19KSk6KG4uX3Y9dCxuLl9zPTEsRihuLCExKSl9Y2F0Y2gocil7cS5jYWxsKHtfdzpuLF9kOiExfSxyKX19fTtNfHwoUD1mdW5jdGlvbih0KXt2KHRoaXMsUCxTLFwiX2hcIiksaCh0KSxyLmNhbGwodGhpcyk7dHJ5e3QocyhELHRoaXMsMSkscyhxLHRoaXMsMSkpfWNhdGNoKGUpe3EuY2FsbCh0aGlzLGUpfX0scj1mdW5jdGlvbih0KXt0aGlzLl9jPVtdLHRoaXMuX2E9dm9pZCAwLHRoaXMuX3M9MCx0aGlzLl9kPSExLHRoaXMuX3Y9dm9pZCAwLHRoaXMuX2g9MCx0aGlzLl9uPSExfSxyLnByb3RvdHlwZT1uKFwiZGNiY1wiKShQLnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbih0LGUpe3ZhciBuPVQoeSh0aGlzLFApKTtyZXR1cm4gbi5vaz1cImZ1bmN0aW9uXCIhPXR5cGVvZiB0fHx0LG4uZmFpbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiZlLG4uZG9tYWluPUE/ay5kb21haW46dm9pZCAwLHRoaXMuX2MucHVzaChuKSx0aGlzLl9hJiZ0aGlzLl9hLnB1c2gobiksdGhpcy5fcyYmRih0aGlzLCExKSxuLnByb21pc2V9LGNhdGNoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLHQpfX0pLG89ZnVuY3Rpb24oKXt2YXIgdD1uZXcgcjt0aGlzLnByb21pc2U9dCx0aGlzLnJlc29sdmU9cyhELHQsMSksdGhpcy5yZWplY3Q9cyhxLHQsMSl9LG0uZj1UPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09UHx8dD09PWM/bmV3IG8odCk6aSh0KX0pLGwobC5HK2wuVytsLkYqIU0se1Byb21pc2U6UH0pLG4oXCI3ZjIwXCIpKFAsUyksbihcIjdhNTZcIikoUyksYz1uKFwiODM3OFwiKVtTXSxsKGwuUytsLkYqIU0sUyx7cmVqZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPVQodGhpcyksbj1lLnJlamVjdDtyZXR1cm4gbih0KSxlLnByb21pc2V9fSksbChsLlMrbC5GKih1fHwhTSksUyx7cmVzb2x2ZTpmdW5jdGlvbih0KXtyZXR1cm4gXyh1JiZ0aGlzPT09Yz9QOnRoaXMsdCl9fSksbChsLlMrbC5GKiEoTSYmbihcIjVjYzVcIikoKGZ1bmN0aW9uKHQpe1AuYWxsKHQpW1wiY2F0Y2hcIl0oTCl9KSkpLFMse2FsbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49VChlKSxyPW4ucmVzb2x2ZSxpPW4ucmVqZWN0LG89eCgoZnVuY3Rpb24oKXt2YXIgbj1bXSxvPTAsYz0xO2QodCwhMSwoZnVuY3Rpb24odCl7dmFyIHU9bysrLGE9ITE7bi5wdXNoKHZvaWQgMCksYysrLGUucmVzb2x2ZSh0KS50aGVuKChmdW5jdGlvbih0KXthfHwoYT0hMCxuW3VdPXQsLS1jfHxyKG4pKX0pLGkpfSkpLC0tY3x8cihuKX0pKTtyZXR1cm4gby5lJiZpKG8udiksbi5wcm9taXNlfSxyYWNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1UKGUpLHI9bi5yZWplY3QsaT14KChmdW5jdGlvbigpe2QodCwhMSwoZnVuY3Rpb24odCl7ZS5yZXNvbHZlKHQpLnRoZW4obi5yZXNvbHZlLHIpfSkpfSkpO3JldHVybiBpLmUmJnIoaS52KSxuLnByb21pc2V9fSl9LDU1Mzc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI4Mzc4XCIpLGk9bihcIjc3MjZcIiksbz1cIl9fY29yZS1qc19zaGFyZWRfX1wiLGM9aVtvXXx8KGlbb109e30pOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY1t0XXx8KGNbdF09dm9pZCAwIT09ZT9lOnt9KX0pKFwidmVyc2lvbnNcIixbXSkucHVzaCh7dmVyc2lvbjpyLnZlcnNpb24sbW9kZTpuKFwiMmQwMFwiKT9cInB1cmVcIjpcImdsb2JhbFwiLGNvcHlyaWdodDpcIsKpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSlcIn0pfSw1NTU5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZGJkYlwiKShcImtleXNcIiksaT1uKFwiNjJhMFwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHJbdF18fChyW3RdPWkodCkpfX0sXCI1ODRhXCI6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmV4cG9ydHM9e3ZlcnNpb246XCIyLjYuMTBcIn07XCJudW1iZXJcIj09dHlwZW9mIF9fZSYmKF9fZT1uKX0sXCI1YjRlXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCIzNmMzXCIpLGk9bihcImI0NDdcIiksbz1uKFwiMGZjOVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixjKXt2YXIgdSxhPXIoZSkscz1pKGEubGVuZ3RoKSxmPW8oYyxzKTtpZih0JiZuIT1uKXt3aGlsZShzPmYpaWYodT1hW2YrK10sdSE9dSlyZXR1cm4hMH1lbHNlIGZvcig7cz5mO2YrKylpZigodHx8ZiBpbiBhKSYmYVtmXT09PW4pcmV0dXJuIHR8fGZ8fDA7cmV0dXJuIXQmJi0xfX19LFwiNWM5NVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiMzVlOFwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaSBpbiBlKW4mJnRbaV0/dFtpXT1lW2ldOnIodCxpLGVbaV0pO3JldHVybiB0fX0sXCI1Y2ExXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI3NzI2XCIpLGk9bihcIjgzNzhcIiksbz1uKFwiMzJlOVwiKSxjPW4oXCIyYWJhXCIpLHU9bihcIjliNDNcIiksYT1cInByb3RvdHlwZVwiLHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBmLGwscCxoLHY9dCZzLkYsZD10JnMuRyx5PXQmcy5TLGI9dCZzLlAsZz10JnMuQixtPWQ/cjp5P3JbZV18fChyW2VdPXt9KToocltlXXx8e30pW2FdLHg9ZD9pOmlbZV18fChpW2VdPXt9KSx3PXhbYV18fCh4W2FdPXt9KTtmb3IoZiBpbiBkJiYobj1lKSxuKWw9IXYmJm0mJnZvaWQgMCE9PW1bZl0scD0obD9tOm4pW2ZdLGg9ZyYmbD91KHAscik6YiYmXCJmdW5jdGlvblwiPT10eXBlb2YgcD91KEZ1bmN0aW9uLmNhbGwscCk6cCxtJiZjKG0sZixwLHQmcy5VKSx4W2ZdIT1wJiZvKHgsZixoKSxiJiZ3W2ZdIT1wJiYod1tmXT1wKX07ci5jb3JlPWkscy5GPTEscy5HPTIscy5TPTQscy5QPTgscy5CPTE2LHMuVz0zMixzLlU9NjQscy5SPTEyOCx0LmV4cG9ydHM9c30sXCI1Y2M1XCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCIyYjRjXCIpKFwiaXRlcmF0b3JcIiksaT0hMTt0cnl7dmFyIG89WzddW3JdKCk7b1tcInJldHVyblwiXT1mdW5jdGlvbigpe2k9ITB9LEFycmF5LmZyb20obywoZnVuY3Rpb24oKXt0aHJvdyAyfSkpfWNhdGNoKGMpe310LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighZSYmIWkpcmV0dXJuITE7dmFyIG49ITE7dHJ5e3ZhciBvPVs3XSx1PW9bcl0oKTt1Lm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpuPSEwfX0sb1tyXT1mdW5jdGlvbigpe3JldHVybiB1fSx0KG8pfWNhdGNoKGMpe31yZXR1cm4gbn19LFwiNWQ1OFwiOmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bihcImQ4ZDZcIil9LFwiNWRiY1wiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZDNmNFwiKSxpPW4oXCI4Yjk3XCIpLnNldDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBvLGM9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gYyE9PW4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIGMmJihvPWMucHJvdG90eXBlKSE9PW4ucHJvdG90eXBlJiZyKG8pJiZpJiZpKHQsbyksdH19LFwiNWVkYVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNWNhMVwiKSxpPW4oXCI4Mzc4XCIpLG89bihcIjc5ZTVcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49KGkuT2JqZWN0fHx7fSlbdF18fE9iamVjdFt0XSxjPXt9O2NbdF09ZShuKSxyKHIuUytyLkYqbygoZnVuY3Rpb24oKXtuKDEpfSkpLFwiT2JqZWN0XCIsYyl9fSxcIjVmMWJcIjpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcIjIzYzZcIiksaT1SZWdFeHAucHJvdG90eXBlLmV4ZWM7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5leGVjO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuKXt2YXIgbz1uLmNhbGwodCxlKTtpZihcIm9iamVjdFwiIT09dHlwZW9mIG8pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJlZ0V4cCBleGVjIG1ldGhvZCByZXR1cm5lZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBPYmplY3Qgb3IgbnVsbFwiKTtyZXR1cm4gb31pZihcIlJlZ0V4cFwiIT09cih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlclwiKTtyZXR1cm4gaS5jYWxsKHQsZSl9fSxcIjYxM2JcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjU1MzdcIikoXCJrZXlzXCIpLGk9bihcImNhNWFcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByW3RdfHwoclt0XT1pKHQpKX19LFwiNjI2YVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiMmQ5NVwiKTt0LmV4cG9ydHM9T2JqZWN0KFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuXCJTdHJpbmdcIj09cih0KT90LnNwbGl0KFwiXCIpOk9iamVjdCh0KX19LFwiNjJhMFwiOmZ1bmN0aW9uKHQsZSl7dmFyIG49MCxyPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVyblwiU3ltYm9sKFwiLmNvbmNhdCh2b2lkIDA9PT10P1wiXCI6dCxcIilfXCIsKCsrbityKS50b1N0cmluZygzNikpfX0sXCI2M2I2XCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJlNTNkXCIpLGk9bihcIjU4NGFcIiksbz1uKFwiZDg2NFwiKSxjPW4oXCIzNWU4XCIpLHU9bihcIjA3ZTNcIiksYT1cInByb3RvdHlwZVwiLHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBmLGwscCxoPXQmcy5GLHY9dCZzLkcsZD10JnMuUyx5PXQmcy5QLGI9dCZzLkIsZz10JnMuVyxtPXY/aTppW2VdfHwoaVtlXT17fSkseD1tW2FdLHc9dj9yOmQ/cltlXToocltlXXx8e30pW2FdO2ZvcihmIGluIHYmJihuPWUpLG4pbD0haCYmdyYmdm9pZCAwIT09d1tmXSxsJiZ1KG0sZil8fChwPWw/d1tmXTpuW2ZdLG1bZl09diYmXCJmdW5jdGlvblwiIT10eXBlb2Ygd1tmXT9uW2ZdOmImJmw/byhwLHIpOmcmJndbZl09PXA/ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oZSxuLHIpe2lmKHRoaXMgaW5zdGFuY2VvZiB0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgdDtjYXNlIDE6cmV0dXJuIG5ldyB0KGUpO2Nhc2UgMjpyZXR1cm4gbmV3IHQoZSxuKX1yZXR1cm4gbmV3IHQoZSxuLHIpfXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIGVbYV09dFthXSxlfShwKTp5JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwP28oRnVuY3Rpb24uY2FsbCxwKTpwLHkmJigobS52aXJ0dWFsfHwobS52aXJ0dWFsPXt9KSlbZl09cCx0JnMuUiYmeCYmIXhbZl0mJmMoeCxmLHApKSl9O3MuRj0xLHMuRz0yLHMuUz00LHMuUD04LHMuQj0xNixzLlc9MzIscy5VPTY0LHMuUj0xMjgsdC5leHBvcnRzPXN9LFwiNjNjNlwiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiMzYyMFwiKSxpPW4ubihyKTtpLmF9LFwiNjU2ZVwiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiNzlhYVwiKTtmdW5jdGlvbiBpKHQpe3ZhciBlLG47dGhpcy5wcm9taXNlPW5ldyB0KChmdW5jdGlvbih0LHIpe2lmKHZvaWQgMCE9PWV8fHZvaWQgMCE9PW4pdGhyb3cgVHlwZUVycm9yKFwiQmFkIFByb21pc2UgY29uc3RydWN0b3JcIik7ZT10LG49cn0pKSx0aGlzLnJlc29sdmU9cihlKSx0aGlzLnJlamVjdD1yKG4pfXQuZXhwb3J0cy5mPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaSh0KX19LDY3MTg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJlNTNkXCIpLGk9bihcIjU4NGFcIiksbz1uKFwiYjhlM1wiKSxjPW4oXCJjY2I5XCIpLHU9bihcImQ5ZjZcIikuZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9aS5TeW1ib2x8fChpLlN5bWJvbD1vP3t9OnIuU3ltYm9sfHx7fSk7XCJfXCI9PXQuY2hhckF0KDApfHx0IGluIGV8fHUoZSx0LHt2YWx1ZTpjLmYodCl9KX19LDY3NjI6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCI1Y2ExXCIpLGk9bihcImMzNjZcIikoITApO3Ioci5QLFwiQXJyYXlcIix7aW5jbHVkZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxuKFwiOWM2Y1wiKShcImluY2x1ZGVzXCIpfSxcIjY3YmJcIjpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPW4oXCJmOTIxXCIpfSw2ODIxOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNjI2YVwiKSxpPW4oXCJiZTEzXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcihpKHQpKX19LFwiNjk2ZVwiOmZ1bmN0aW9uKHQsZSxuKXtuKFwiYzIwN1wiKSxuKFwiMTY1NFwiKSxuKFwiNmMxY1wiKSxuKFwiMjRjNVwiKSxuKFwiM2MxMVwiKSxuKFwiNDNmY1wiKSx0LmV4cG9ydHM9bihcIjU4NGFcIikuUHJvbWlzZX0sXCI2OWE4XCI6ZnVuY3Rpb24odCxlKXt2YXIgbj17fS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5jYWxsKHQsZSl9fSxcIjY5ZDNcIjpmdW5jdGlvbih0LGUsbil7bihcIjY3MThcIikoXCJhc3luY0l0ZXJhdG9yXCIpfSxcIjZhOTlcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImQzZjRcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIXIodCkpcmV0dXJuIHQ7dmFyIG4saTtpZihlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihpPW4uY2FsbCh0KSkpcmV0dXJuIGk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Yobj10LnZhbHVlT2YpJiYhcihpPW4uY2FsbCh0KSkpcmV0dXJuIGk7aWYoIWUmJlwiZnVuY3Rpb25cIj09dHlwZW9mKG49dC50b1N0cmluZykmJiFyKGk9bi5jYWxsKHQpKSlyZXR1cm4gaTt0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9fSxcIjZhYmZcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImU2ZjNcIiksaT1uKFwiMTY5MVwiKS5jb25jYXQoXCJsZW5ndGhcIixcInByb3RvdHlwZVwiKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsaSl9fSxcIjZiNGNcIjpmdW5jdGlvbih0LGUpe3ZhciBuPXt9LnRvU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5jYWxsKHQpLnNsaWNlKDgsLTEpfX0sXCI2YzFjXCI6ZnVuY3Rpb24odCxlLG4pe24oXCJjMzY3XCIpO2Zvcih2YXIgcj1uKFwiZTUzZFwiKSxpPW4oXCIzNWU4XCIpLG89bihcIjQ4MWJcIiksYz1uKFwiNTE2OFwiKShcInRvU3RyaW5nVGFnXCIpLHU9XCJDU1NSdWxlTGlzdCxDU1NTdHlsZURlY2xhcmF0aW9uLENTU1ZhbHVlTGlzdCxDbGllbnRSZWN0TGlzdCxET01SZWN0TGlzdCxET01TdHJpbmdMaXN0LERPTVRva2VuTGlzdCxEYXRhVHJhbnNmZXJJdGVtTGlzdCxGaWxlTGlzdCxIVE1MQWxsQ29sbGVjdGlvbixIVE1MQ29sbGVjdGlvbixIVE1MRm9ybUVsZW1lbnQsSFRNTFNlbGVjdEVsZW1lbnQsTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCxTVkdQYXRoU2VnTGlzdCxTVkdQb2ludExpc3QsU1ZHU3RyaW5nTGlzdCxTVkdUcmFuc2Zvcm1MaXN0LFNvdXJjZUJ1ZmZlckxpc3QsU3R5bGVTaGVldExpc3QsVGV4dFRyYWNrQ3VlTGlzdCxUZXh0VHJhY2tMaXN0LFRvdWNoTGlzdFwiLnNwbGl0KFwiLFwiKSxhPTA7YTx1Lmxlbmd0aDthKyspe3ZhciBzPXVbYV0sZj1yW3NdLGw9ZiYmZi5wcm90b3R5cGU7bCYmIWxbY10mJmkobCxjLHMpLG9bc109by5BcnJheX19LFwiNzFjMVwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiM2EzOFwiKSxpPW4oXCIyNWViXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgbyxjLHU9U3RyaW5nKGkoZSkpLGE9cihuKSxzPXUubGVuZ3RoO3JldHVybiBhPDB8fGE+PXM/dD9cIlwiOnZvaWQgMDoobz11LmNoYXJDb2RlQXQoYSksbzw1NTI5Nnx8bz41NjMxOXx8YSsxPT09c3x8KGM9dS5jaGFyQ29kZUF0KGErMSkpPDU2MzIwfHxjPjU3MzQzP3Q/dS5jaGFyQXQoYSk6bzp0P3Uuc2xpY2UoYSxhKzIpOmMtNTYzMjArKG8tNTUyOTY8PDEwKSs2NTUzNil9fX0sNzMzMzpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcIjllMWVcIiksaT1uKFwiMGQ1OFwiKSxvPW4oXCIyNjIxXCIpLGM9bihcIjUyYTdcIiksdT1uKFwiNGJmOFwiKSxhPW4oXCI2MjZhXCIpLHM9T2JqZWN0LmFzc2lnbjt0LmV4cG9ydHM9IXN8fG4oXCI3OWU1XCIpKChmdW5jdGlvbigpe3ZhciB0PXt9LGU9e30sbj1TeW1ib2woKSxyPVwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIjtyZXR1cm4gdFtuXT03LHIuc3BsaXQoXCJcIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XT10fSkpLDchPXMoe30sdClbbl18fE9iamVjdC5rZXlzKHMoe30sZSkpLmpvaW4oXCJcIikhPXJ9KSk/ZnVuY3Rpb24odCxlKXt2YXIgbj11KHQpLHM9YXJndW1lbnRzLmxlbmd0aCxmPTEsbD1vLmYscD1jLmY7d2hpbGUocz5mKXt2YXIgaCx2PWEoYXJndW1lbnRzW2YrK10pLGQ9bD9pKHYpLmNvbmNhdChsKHYpKTppKHYpLHk9ZC5sZW5ndGgsYj0wO3doaWxlKHk+YiloPWRbYisrXSxyJiYhcC5jYWxsKHYsaCl8fChuW2hdPXZbaF0pfXJldHVybiBufTpzfSw3NTE0OmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiNWNhMVwiKSxpPW4oXCIwYTQ5XCIpKDUpLG89XCJmaW5kXCIsYz0hMDtvIGluW10mJkFycmF5KDEpW29dKChmdW5jdGlvbigpe2M9ITF9KSkscihyLlArci5GKmMsXCJBcnJheVwiLHtmaW5kOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksbihcIjljNmNcIikobyl9LFwiNzY1ZFwiOmZ1bmN0aW9uKHQsZSxuKXtuKFwiNjcxOFwiKShcIm9ic2VydmFibGVcIil9LDc3MjY6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmV4cG9ydHM9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XCJudW1iZXJcIj09dHlwZW9mIF9fZyYmKF9fZz1uKX0sXCI3NzRlXCI6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz1uKFwiZDJkNVwiKX0sXCI3N2YxXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI0NTg4XCIpLGk9TWF0aC5tYXgsbz1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD1yKHQpLHQ8MD9pKHQrZSwwKTpvKHQsZSl9fSxcIjc5NGJcIjpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPSFuKFwiOGU2MFwiKSYmIW4oXCIyOTRjXCIpKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkobihcIjFlYzlcIikoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSl9LFwiNzk1YlwiOmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bihcIjY5NmVcIil9LFwiNzlhYVwiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGEgZnVuY3Rpb24hXCIpO3JldHVybiB0fX0sXCI3OWU1XCI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKGUpe3JldHVybiEwfX19LFwiN2E1NlwiOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiNzcyNlwiKSxpPW4oXCI4NmNjXCIpLG89bihcIjllMWVcIiksYz1uKFwiMmI0Y1wiKShcInNwZWNpZXNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXJbdF07byYmZSYmIWVbY10mJmkuZihlLGMse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LFwiN2NkNlwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNDBjM1wiKSxpPW4oXCI1MTY4XCIpKFwiaXRlcmF0b3JcIiksbz1uKFwiNDgxYlwiKTt0LmV4cG9ydHM9bihcIjU4NGFcIikuZ2V0SXRlcmF0b3JNZXRob2Q9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT10KXJldHVybiB0W2ldfHx0W1wiQEBpdGVyYXRvclwiXXx8b1tyKHQpXX19LFwiN2U5MFwiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZDlmNlwiKSxpPW4oXCJlNGFlXCIpLG89bihcImMzYTFcIik7dC5leHBvcnRzPW4oXCI4ZTYwXCIpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZSl7aSh0KTt2YXIgbixjPW8oZSksdT1jLmxlbmd0aCxhPTA7d2hpbGUodT5hKXIuZih0LG49Y1thKytdLGVbbl0pO3JldHVybiB0fX0sXCI3ZjIwXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI4NmNjXCIpLmYsaT1uKFwiNjlhOFwiKSxvPW4oXCIyYjRjXCIpKFwidG9TdHJpbmdUYWdcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt0JiYhaSh0PW4/dDp0LnByb3RvdHlwZSxvKSYmcih0LG8se2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTplfSl9fSxcIjdmN2ZcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjg2Y2NcIikuZixpPUZ1bmN0aW9uLnByb3RvdHlwZSxvPS9eXFxzKmZ1bmN0aW9uIChbXiAoXSopLyxjPVwibmFtZVwiO2MgaW4gaXx8bihcIjllMWVcIikmJnIoaSxjLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3JldHVybihcIlwiK3RoaXMpLm1hdGNoKG8pWzFdfWNhdGNoKHQpe3JldHVyblwiXCJ9fX0pfSw4MDc5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNzcyNlwiKSxpPW4oXCIxOTkxXCIpLnNldCxvPXIuTXV0YXRpb25PYnNlcnZlcnx8ci5XZWJLaXRNdXRhdGlvbk9ic2VydmVyLGM9ci5wcm9jZXNzLHU9ci5Qcm9taXNlLGE9XCJwcm9jZXNzXCI9PW4oXCIyZDk1XCIpKGMpO3QuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0LGUsbixzPWZ1bmN0aW9uKCl7dmFyIHIsaTthJiYocj1jLmRvbWFpbikmJnIuZXhpdCgpO3doaWxlKHQpe2k9dC5mbix0PXQubmV4dDt0cnl7aSgpfWNhdGNoKG8pe3Rocm93IHQ/bigpOmU9dm9pZCAwLG99fWU9dm9pZCAwLHImJnIuZW50ZXIoKX07aWYoYSluPWZ1bmN0aW9uKCl7Yy5uZXh0VGljayhzKX07ZWxzZSBpZighb3x8ci5uYXZpZ2F0b3ImJnIubmF2aWdhdG9yLnN0YW5kYWxvbmUpaWYodSYmdS5yZXNvbHZlKXt2YXIgZj11LnJlc29sdmUodm9pZCAwKTtuPWZ1bmN0aW9uKCl7Zi50aGVuKHMpfX1lbHNlIG49ZnVuY3Rpb24oKXtpLmNhbGwocixzKX07ZWxzZXt2YXIgbD0hMCxwPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO25ldyBvKHMpLm9ic2VydmUocCx7Y2hhcmFjdGVyRGF0YTohMH0pLG49ZnVuY3Rpb24oKXtwLmRhdGE9bD0hbH19cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBpPXtmbjpyLG5leHQ6dm9pZCAwfTtlJiYoZS5uZXh0PWkpLHR8fCh0PWksbigpKSxlPWl9fX0sODM3ODpmdW5jdGlvbih0LGUpe3ZhciBuPXQuZXhwb3J0cz17dmVyc2lvbjpcIjIuNi4xMFwifTtcIm51bWJlclwiPT10eXBlb2YgX19lJiYoX19lPW4pfSxcIjgzYTFcIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lPzAhPT10fHwxL3Q9PT0xL2U6dCE9dCYmZSE9ZX19LDg0MzY6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt9fSxcIjg0ZjJcIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17fX0sXCI4NWYyXCI6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz1uKFwiNDU0ZlwiKX0sODYxNTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjVjYTFcIiksaT1uKFwiNTA0Y1wiKSghMSk7cihyLlMsXCJPYmplY3RcIix7dmFsdWVzOmZ1bmN0aW9uKHQpe3JldHVybiBpKHQpfX0pfSxcIjg2Y2NcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImNiN2NcIiksaT1uKFwiYzY5YVwiKSxvPW4oXCI2YTk5XCIpLGM9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZj1uKFwiOWUxZVwiKT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24odCxlLG4pe2lmKHIodCksZT1vKGUsITApLHIobiksaSl0cnl7cmV0dXJuIGModCxlLG4pfWNhdGNoKHUpe31pZihcImdldFwiaW4gbnx8XCJzZXRcImluIG4pdGhyb3cgVHlwZUVycm9yKFwiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhXCIpO3JldHVyblwidmFsdWVcImluIG4mJih0W2VdPW4udmFsdWUpLHR9fSxcIjhiOTdcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImQzZjRcIiksaT1uKFwiY2I3Y1wiKSxvPWZ1bmN0aW9uKHQsZSl7aWYoaSh0KSwhcihlKSYmbnVsbCE9PWUpdGhyb3cgVHlwZUVycm9yKGUrXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpfTt0LmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fChcIl9fcHJvdG9fX1wiaW57fT9mdW5jdGlvbih0LGUscil7dHJ5e3I9bihcIjliNDNcIikoRnVuY3Rpb24uY2FsbCxuKFwiMTFlOVwiKS5mKE9iamVjdC5wcm90b3R5cGUsXCJfX3Byb3RvX19cIikuc2V0LDIpLHIodCxbXSksZT0hKHQgaW5zdGFuY2VvZiBBcnJheSl9Y2F0Y2goaSl7ZT0hMH1yZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gbyh0LG4pLGU/dC5fX3Byb3RvX189bjpyKHQsbiksdH19KHt9LCExKTp2b2lkIDApLGNoZWNrOm99fSxcIjhlNjBcIjpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPSFuKFwiMjk0Y1wiKSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LFwiYVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpfSxcIjhlNmVcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjVjYTFcIiksaT1uKFwiOTkwYlwiKSxvPW4oXCI2ODIxXCIpLGM9bihcIjExZTlcIiksdT1uKFwiZjFhZVwiKTtyKHIuUyxcIk9iamVjdFwiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scj1vKHQpLGE9Yy5mLHM9aShyKSxmPXt9LGw9MDt3aGlsZShzLmxlbmd0aD5sKW49YShyLGU9c1tsKytdKSx2b2lkIDAhPT1uJiZ1KGYsZSxuKTtyZXR1cm4gZn19KX0sXCI4ZjYwXCI6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCJhMTU5XCIpLGk9bihcImFlYmRcIiksbz1uKFwiNDVmMlwiKSxjPXt9O24oXCIzNWU4XCIpKGMsbihcIjUxNjhcIikoXCJpdGVyYXRvclwiKSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3QucHJvdG90eXBlPXIoYyx7bmV4dDppKDEsbil9KSxvKHQsZStcIiBJdGVyYXRvclwiKX19LDkwMDM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI2YjRjXCIpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm5cIkFycmF5XCI9PXIodCl9fSw5MDkzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiY2UxMFwiKSxpPW4oXCJlMTFlXCIpLmNvbmNhdChcImxlbmd0aFwiLFwicHJvdG90eXBlXCIpO2UuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxpKX19LDkxMzg6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz1uKFwiMzVlOFwiKX0sOTIyNDpmdW5jdGlvbih0KXt0LmV4cG9ydHM9SlNPTi5wYXJzZSgne1wiYVwiOlwiMC41LjFcIn0nKX0sXCI5NWQ1XCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI0MGMzXCIpLGk9bihcIjUxNjhcIikoXCJpdGVyYXRvclwiKSxvPW4oXCI0ODFiXCIpO3QuZXhwb3J0cz1uKFwiNTg0YVwiKS5pc0l0ZXJhYmxlPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KTtyZXR1cm4gdm9pZCAwIT09ZVtpXXx8XCJAQGl0ZXJhdG9yXCJpbiBlfHxvLmhhc093blByb3BlcnR5KHIoZSkpfX0sXCI5NmNmXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWZ1bmN0aW9uKHQpe1widXNlIHN0cmljdFwiO3ZhciBlLG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksaT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxvPWkuaXRlcmF0b3J8fFwiQEBpdGVyYXRvclwiLGM9aS5hc3luY0l0ZXJhdG9yfHxcIkBAYXN5bmNJdGVyYXRvclwiLHU9aS50b1N0cmluZ1RhZ3x8XCJAQHRvU3RyaW5nVGFnXCI7ZnVuY3Rpb24gYSh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGQ/ZTpkLG89T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksYz1uZXcgUChyfHxbXSk7cmV0dXJuIG8uX2ludm9rZT1PKHQsbixjKSxvfWZ1bmN0aW9uIHModCxlLG4pe3RyeXtyZXR1cm57dHlwZTpcIm5vcm1hbFwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2gocil7cmV0dXJue3R5cGU6XCJ0aHJvd1wiLGFyZzpyfX19dC53cmFwPWE7dmFyIGY9XCJzdXNwZW5kZWRTdGFydFwiLGw9XCJzdXNwZW5kZWRZaWVsZFwiLHA9XCJleGVjdXRpbmdcIixoPVwiY29tcGxldGVkXCIsdj17fTtmdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIHkoKXt9ZnVuY3Rpb24gYigpe312YXIgZz17fTtnW29dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3ZhciBtPU9iamVjdC5nZXRQcm90b3R5cGVPZix4PW0mJm0obShBKFtdKSkpO3gmJnghPT1uJiZyLmNhbGwoeCxvKSYmKGc9eCk7dmFyIHc9Yi5wcm90b3R5cGU9ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnKTtmdW5jdGlvbiBfKHQpe1tcIm5leHRcIixcInRocm93XCIsXCJyZXR1cm5cIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9fSkpfWZ1bmN0aW9uIFModCl7ZnVuY3Rpb24gZShuLGksbyxjKXt2YXIgdT1zKHRbbl0sdCxpKTtpZihcInRocm93XCIhPT11LnR5cGUpe3ZhciBhPXUuYXJnLGY9YS52YWx1ZTtyZXR1cm4gZiYmXCJvYmplY3RcIj09PXR5cGVvZiBmJiZyLmNhbGwoZixcIl9fYXdhaXRcIik/UHJvbWlzZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7ZShcIm5leHRcIix0LG8sYyl9KSwoZnVuY3Rpb24odCl7ZShcInRocm93XCIsdCxvLGMpfSkpOlByb21pc2UucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbih0KXthLnZhbHVlPXQsbyhhKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZShcInRocm93XCIsdCxvLGMpfSkpfWModS5hcmcpfXZhciBuO2Z1bmN0aW9uIGkodCxyKXtmdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe2UodCxyLG4saSl9KSl9cmV0dXJuIG49bj9uLnRoZW4oaSxpKTppKCl9dGhpcy5faW52b2tlPWl9ZnVuY3Rpb24gTyh0LGUsbil7dmFyIHI9ZjtyZXR1cm4gZnVuY3Rpb24oaSxvKXtpZihyPT09cCl0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO2lmKHI9PT1oKXtpZihcInRocm93XCI9PT1pKXRocm93IG87cmV0dXJuIEwoKX1uLm1ldGhvZD1pLG4uYXJnPW87d2hpbGUoMSl7dmFyIGM9bi5kZWxlZ2F0ZTtpZihjKXt2YXIgdT1rKGMsbik7aWYodSl7aWYodT09PXYpY29udGludWU7cmV0dXJuIHV9fWlmKFwibmV4dFwiPT09bi5tZXRob2Qpbi5zZW50PW4uX3NlbnQ9bi5hcmc7ZWxzZSBpZihcInRocm93XCI9PT1uLm1ldGhvZCl7aWYocj09PWYpdGhyb3cgcj1oLG4uYXJnO24uZGlzcGF0Y2hFeGNlcHRpb24obi5hcmcpfWVsc2VcInJldHVyblwiPT09bi5tZXRob2QmJm4uYWJydXB0KFwicmV0dXJuXCIsbi5hcmcpO3I9cDt2YXIgYT1zKHQsZSxuKTtpZihcIm5vcm1hbFwiPT09YS50eXBlKXtpZihyPW4uZG9uZT9oOmwsYS5hcmc9PT12KWNvbnRpbnVlO3JldHVybnt2YWx1ZTphLmFyZyxkb25lOm4uZG9uZX19XCJ0aHJvd1wiPT09YS50eXBlJiYocj1oLG4ubWV0aG9kPVwidGhyb3dcIixuLmFyZz1hLmFyZyl9fX1mdW5jdGlvbiBrKHQsbil7dmFyIHI9dC5pdGVyYXRvcltuLm1ldGhvZF07aWYocj09PWUpe2lmKG4uZGVsZWdhdGU9bnVsbCxcInRocm93XCI9PT1uLm1ldGhvZCl7aWYodC5pdGVyYXRvcltcInJldHVyblwiXSYmKG4ubWV0aG9kPVwicmV0dXJuXCIsbi5hcmc9ZSxrKHQsbiksXCJ0aHJvd1wiPT09bi5tZXRob2QpKXJldHVybiB2O24ubWV0aG9kPVwidGhyb3dcIixuLmFyZz1uZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKX1yZXR1cm4gdn12YXIgaT1zKHIsdC5pdGVyYXRvcixuLmFyZyk7aWYoXCJ0aHJvd1wiPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD1cInRocm93XCIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHY7dmFyIG89aS5hcmc7cmV0dXJuIG8/by5kb25lPyhuW3QucmVzdWx0TmFtZV09by52YWx1ZSxuLm5leHQ9dC5uZXh0TG9jLFwicmV0dXJuXCIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPVwibmV4dFwiLG4uYXJnPWUpLG4uZGVsZWdhdGU9bnVsbCx2KTpvOihuLm1ldGhvZD1cInRocm93XCIsbi5hcmc9bmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpLG4uZGVsZWdhdGU9bnVsbCx2KX1mdW5jdGlvbiBqKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIEUodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9XCJub3JtYWxcIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gUCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6XCJyb290XCJ9XSx0LmZvckVhY2goaix0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBBKHQpe2lmKHQpe3ZhciBuPXRbb107aWYobilyZXR1cm4gbi5jYWxsKHQpO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiB0Lm5leHQpcmV0dXJuIHQ7aWYoIWlzTmFOKHQubGVuZ3RoKSl7dmFyIGk9LTEsYz1mdW5jdGlvbiBuKCl7d2hpbGUoKytpPHQubGVuZ3RoKWlmKHIuY2FsbCh0LGkpKXJldHVybiBuLnZhbHVlPXRbaV0sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9ZSxuLmRvbmU9ITAsbn07cmV0dXJuIGMubmV4dD1jfX1yZXR1cm57bmV4dDpMfX1mdW5jdGlvbiBMKCl7cmV0dXJue3ZhbHVlOmUsZG9uZTohMH19cmV0dXJuIHkucHJvdG90eXBlPXcuY29uc3RydWN0b3I9YixiLmNvbnN0cnVjdG9yPXksYlt1XT15LmRpc3BsYXlOYW1lPVwiR2VuZXJhdG9yRnVuY3Rpb25cIix0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9XCJmdW5jdGlvblwiPT09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXl8fFwiR2VuZXJhdG9yRnVuY3Rpb25cIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sdC5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYik6KHQuX19wcm90b19fPWIsdSBpbiB0fHwodFt1XT1cIkdlbmVyYXRvckZ1bmN0aW9uXCIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpLHR9LHQuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LF8oUy5wcm90b3R5cGUpLFMucHJvdG90eXBlW2NdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQuQXN5bmNJdGVyYXRvcj1TLHQuYXN5bmM9ZnVuY3Rpb24oZSxuLHIsaSl7dmFyIG89bmV3IFMoYShlLG4scixpKSk7cmV0dXJuIHQuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTpvLm5leHQoKX0pKX0sXyh3KSx3W3VdPVwiR2VuZXJhdG9yXCIsd1tvXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx3LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCJbb2JqZWN0IEdlbmVyYXRvcl1cIn0sdC5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaChuKTtyZXR1cm4gZS5yZXZlcnNlKCksZnVuY3Rpb24gbigpe3doaWxlKGUubGVuZ3RoKXt2YXIgcj1lLnBvcCgpO2lmKHIgaW4gdClyZXR1cm4gbi52YWx1ZT1yLG4uZG9uZT0hMSxufXJldHVybiBuLmRvbmU9ITAsbn19LHQudmFsdWVzPUEsUC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlAscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9ZSx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPVwibmV4dFwiLHRoaXMuYXJnPWUsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goRSksIXQpZm9yKHZhciBuIGluIHRoaXMpXCJ0XCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPWUpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXSxlPXQuY29tcGxldGlvbjtpZihcInRocm93XCI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIG49dGhpcztmdW5jdGlvbiBpKHIsaSl7cmV0dXJuIHUudHlwZT1cInRocm93XCIsdS5hcmc9dCxuLm5leHQ9cixpJiYobi5tZXRob2Q9XCJuZXh0XCIsbi5hcmc9ZSksISFpfWZvcih2YXIgbz10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bz49MDstLW8pe3ZhciBjPXRoaXMudHJ5RW50cmllc1tvXSx1PWMuY29tcGxldGlvbjtpZihcInJvb3RcIj09PWMudHJ5TG9jKXJldHVybiBpKFwiZW5kXCIpO2lmKGMudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBhPXIuY2FsbChjLFwiY2F0Y2hMb2NcIikscz1yLmNhbGwoYyxcImZpbmFsbHlMb2NcIik7aWYoYSYmcyl7aWYodGhpcy5wcmV2PGMuY2F0Y2hMb2MpcmV0dXJuIGkoYy5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGMuZmluYWxseUxvYylyZXR1cm4gaShjLmZpbmFsbHlMb2MpfWVsc2UgaWYoYSl7aWYodGhpcy5wcmV2PGMuY2F0Y2hMb2MpcmV0dXJuIGkoYy5jYXRjaExvYywhMCl9ZWxzZXtpZighcyl0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtpZih0aGlzLnByZXY8Yy5maW5hbGx5TG9jKXJldHVybiBpKGMuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBpPXRoaXMudHJ5RW50cmllc1tuXTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoaSxcImZpbmFsbHlMb2NcIikmJnRoaXMucHJldjxpLmZpbmFsbHlMb2Mpe3ZhciBvPWk7YnJlYWt9fW8mJihcImJyZWFrXCI9PT10fHxcImNvbnRpbnVlXCI9PT10KSYmby50cnlMb2M8PWUmJmU8PW8uZmluYWxseUxvYyYmKG89bnVsbCk7dmFyIGM9bz9vLmNvbXBsZXRpb246e307cmV0dXJuIGMudHlwZT10LGMuYXJnPWUsbz8odGhpcy5tZXRob2Q9XCJuZXh0XCIsdGhpcy5uZXh0PW8uZmluYWxseUxvYyx2KTp0aGlzLmNvbXBsZXRlKGMpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKFwidGhyb3dcIj09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm5cImJyZWFrXCI9PT10LnR5cGV8fFwiY29udGludWVcIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6XCJyZXR1cm5cIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPVwicmV0dXJuXCIsdGhpcy5uZXh0PVwiZW5kXCIpOlwibm9ybWFsXCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksdn0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxFKG4pLHZ9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoXCJ0aHJvd1wiPT09ci50eXBlKXt2YXIgaT1yLmFyZztFKG4pfXJldHVybiBpfX10aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24odCxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpBKHQpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LFwibmV4dFwiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz1lKSx2fX0sdH0odC5leHBvcnRzKTt0cnl7cmVnZW5lcmF0b3JSdW50aW1lPXJ9Y2F0Y2goaSl7RnVuY3Rpb24oXCJyXCIsXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHIpfX0sXCI5OTBiXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI5MDkzXCIpLGk9bihcIjI2MjFcIiksbz1uKFwiY2I3Y1wiKSxjPW4oXCI3NzI2XCIpLlJlZmxlY3Q7dC5leHBvcnRzPWMmJmMub3duS2V5c3x8ZnVuY3Rpb24odCl7dmFyIGU9ci5mKG8odCkpLG49aS5mO3JldHVybiBuP2UuY29uY2F0KG4odCkpOmV9fSxcIjlhYTlcIjpmdW5jdGlvbih0LGUpe2UuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSxcIjliNDNcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImQ4ZThcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtpZihyKHQpLHZvaWQgMD09PWUpcmV0dXJuIHQ7c3dpdGNoKG4pe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuY2FsbChlLG4pfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuIHQuY2FsbChlLG4scil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24obixyLGkpe3JldHVybiB0LmNhbGwoZSxuLHIsaSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19fSxcIjljNmNcIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjJiNGNcIikoXCJ1bnNjb3BhYmxlc1wiKSxpPUFycmF5LnByb3RvdHlwZTt2b2lkIDA9PWlbcl0mJm4oXCIzMmU5XCIpKGkscix7fSksdC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lbcl1bdF09ITB9fSxcIjljODBcIjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJue2U6ITEsdjp0KCl9fWNhdGNoKGUpe3JldHVybntlOiEwLHY6ZX19fX0sXCI5ZGVmXCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI0NTg4XCIpLGk9TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/aShyKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxcIjllMWVcIjpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPSFuKFwiNzllNVwiKSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LFwiYVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpfSxhMTU5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZTRhZVwiKSxpPW4oXCI3ZTkwXCIpLG89bihcIjE2OTFcIiksYz1uKFwiNTU1OVwiKShcIklFX1BST1RPXCIpLHU9ZnVuY3Rpb24oKXt9LGE9XCJwcm90b3R5cGVcIixzPWZ1bmN0aW9uKCl7dmFyIHQsZT1uKFwiMWVjOVwiKShcImlmcmFtZVwiKSxyPW8ubGVuZ3RoLGk9XCI8XCIsYz1cIj5cIjtlLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsbihcIjMyZmNcIikuYXBwZW5kQ2hpbGQoZSksZS5zcmM9XCJqYXZhc2NyaXB0OlwiLHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50LHQub3BlbigpLHQud3JpdGUoaStcInNjcmlwdFwiK2MrXCJkb2N1bWVudC5GPU9iamVjdFwiK2krXCIvc2NyaXB0XCIrYyksdC5jbG9zZSgpLHM9dC5GO3doaWxlKHItLSlkZWxldGUgc1thXVtvW3JdXTtyZXR1cm4gcygpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KHVbYV09cih0KSxuPW5ldyB1LHVbYV09bnVsbCxuW2NdPXQpOm49cygpLHZvaWQgMD09PWU/bjppKG4sZSl9fSxhMjJhOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZDg2NFwiKSxpPW4oXCJiMGRjXCIpLG89bihcIjM3MDJcIiksYz1uKFwiZTRhZVwiKSx1PW4oXCJiNDQ3XCIpLGE9bihcIjdjZDZcIikscz17fSxmPXt9O2U9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGwscCl7dmFyIGgsdixkLHksYj1wP2Z1bmN0aW9uKCl7cmV0dXJuIHR9OmEodCksZz1yKG4sbCxlPzI6MSksbT0wO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGIpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGl0ZXJhYmxlIVwiKTtpZihvKGIpKXtmb3IoaD11KHQubGVuZ3RoKTtoPm07bSsrKWlmKHk9ZT9nKGModj10W21dKVswXSx2WzFdKTpnKHRbbV0pLHk9PT1zfHx5PT09ZilyZXR1cm4geX1lbHNlIGZvcihkPWIuY2FsbCh0KTshKHY9ZC5uZXh0KCkpLmRvbmU7KWlmKHk9aShkLGcsdi52YWx1ZSxlKSx5PT09c3x8eT09PWYpcmV0dXJuIHl9O2UuQlJFQUs9cyxlLlJFVFVSTj1mfSxhMjVmOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNzcyNlwiKSxpPXIubmF2aWdhdG9yO3QuZXhwb3J0cz1pJiZpLnVzZXJBZ2VudHx8XCJcIn0sYTQ4MTpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcImNiN2NcIiksaT1uKFwiNGJmOFwiKSxvPW4oXCI5ZGVmXCIpLGM9bihcIjQ1ODhcIiksdT1uKFwiMDM5MFwiKSxhPW4oXCI1ZjFiXCIpLHM9TWF0aC5tYXgsZj1NYXRoLm1pbixsPU1hdGguZmxvb3IscD0vXFwkKFskJmAnXXxcXGRcXGQ/fDxbXj5dKj4pL2csaD0vXFwkKFskJmAnXXxcXGRcXGQ/KS9nLHY9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/dDpTdHJpbmcodCl9O24oXCIyMTRmXCIpKFwicmVwbGFjZVwiLDIsKGZ1bmN0aW9uKHQsZSxuLGQpe3JldHVybltmdW5jdGlvbihyLGkpe3ZhciBvPXQodGhpcyksYz12b2lkIDA9PXI/dm9pZCAwOnJbZV07cmV0dXJuIHZvaWQgMCE9PWM/Yy5jYWxsKHIsbyxpKTpuLmNhbGwoU3RyaW5nKG8pLHIsaSl9LGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZChuLHQsdGhpcyxlKTtpZihpLmRvbmUpcmV0dXJuIGkudmFsdWU7dmFyIGw9cih0KSxwPVN0cmluZyh0aGlzKSxoPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBlO2h8fChlPVN0cmluZyhlKSk7dmFyIGI9bC5nbG9iYWw7aWYoYil7dmFyIGc9bC51bmljb2RlO2wubGFzdEluZGV4PTB9dmFyIG09W107d2hpbGUoMSl7dmFyIHg9YShsLHApO2lmKG51bGw9PT14KWJyZWFrO2lmKG0ucHVzaCh4KSwhYilicmVhazt2YXIgdz1TdHJpbmcoeFswXSk7XCJcIj09PXcmJihsLmxhc3RJbmRleD11KHAsbyhsLmxhc3RJbmRleCksZykpfWZvcih2YXIgXz1cIlwiLFM9MCxPPTA7TzxtLmxlbmd0aDtPKyspe3g9bVtPXTtmb3IodmFyIGs9U3RyaW5nKHhbMF0pLGo9cyhmKGMoeC5pbmRleCkscC5sZW5ndGgpLDApLEU9W10sUD0xO1A8eC5sZW5ndGg7UCsrKUUucHVzaCh2KHhbUF0pKTt2YXIgQT14Lmdyb3VwcztpZihoKXt2YXIgTD1ba10uY29uY2F0KEUsaixwKTt2b2lkIDAhPT1BJiZMLnB1c2goQSk7dmFyIFQ9U3RyaW5nKGUuYXBwbHkodm9pZCAwLEwpKX1lbHNlIFQ9eShrLHAsaixFLEEsZSk7aj49UyYmKF8rPXAuc2xpY2UoUyxqKStULFM9aitrLmxlbmd0aCl9cmV0dXJuIF8rcC5zbGljZShTKX1dO2Z1bmN0aW9uIHkodCxlLHIsbyxjLHUpe3ZhciBhPXIrdC5sZW5ndGgscz1vLmxlbmd0aCxmPWg7cmV0dXJuIHZvaWQgMCE9PWMmJihjPWkoYyksZj1wKSxuLmNhbGwodSxmLChmdW5jdGlvbihuLGkpe3ZhciB1O3N3aXRjaChpLmNoYXJBdCgwKSl7Y2FzZVwiJFwiOnJldHVyblwiJFwiO2Nhc2VcIiZcIjpyZXR1cm4gdDtjYXNlXCJgXCI6cmV0dXJuIGUuc2xpY2UoMCxyKTtjYXNlXCInXCI6cmV0dXJuIGUuc2xpY2UoYSk7Y2FzZVwiPFwiOnU9Y1tpLnNsaWNlKDEsLTEpXTticmVhaztkZWZhdWx0OnZhciBmPStpO2lmKDA9PT1mKXJldHVybiBuO2lmKGY+cyl7dmFyIHA9bChmLzEwKTtyZXR1cm4gMD09PXA/bjpwPD1zP3ZvaWQgMD09PW9bcC0xXT9pLmNoYXJBdCgxKTpvW3AtMV0raS5jaGFyQXQoMSk6bn11PW9bZi0xXX1yZXR1cm4gdm9pZCAwPT09dT9cIlwiOnV9KSl9fSkpfSxhNWI4OmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiZDhlOFwiKTtmdW5jdGlvbiBpKHQpe3ZhciBlLG47dGhpcy5wcm9taXNlPW5ldyB0KChmdW5jdGlvbih0LHIpe2lmKHZvaWQgMCE9PWV8fHZvaWQgMCE9PW4pdGhyb3cgVHlwZUVycm9yKFwiQmFkIFByb21pc2UgY29uc3RydWN0b3JcIik7ZT10LG49cn0pKSx0aGlzLnJlc29sdmU9cihlKSx0aGlzLnJlamVjdD1yKG4pfXQuZXhwb3J0cy5mPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaSh0KX19LGE3NDU6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz1uKFwiZjQxMFwiKX0sYWE3NzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjVjYTFcIiksaT1uKFwiYmUxM1wiKSxvPW4oXCI3OWU1XCIpLGM9bihcImZkZWZcIiksdT1cIltcIitjK1wiXVwiLGE9XCLigIvChVwiLHM9UmVnRXhwKFwiXlwiK3UrdStcIipcIiksZj1SZWdFeHAodSt1K1wiKiRcIiksbD1mdW5jdGlvbih0LGUsbil7dmFyIGk9e30sdT1vKChmdW5jdGlvbigpe3JldHVybiEhY1t0XSgpfHxhW3RdKCkhPWF9KSkscz1pW3RdPXU/ZShwKTpjW3RdO24mJihpW25dPXMpLHIoci5QK3IuRip1LFwiU3RyaW5nXCIsaSl9LHA9bC50cmltPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9U3RyaW5nKGkodCkpLDEmZSYmKHQ9dC5yZXBsYWNlKHMsXCJcIikpLDImZSYmKHQ9dC5yZXBsYWNlKGYsXCJcIikpLHR9O3QuZXhwb3J0cz1sfSxhYWUzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZDNmNFwiKSxpPW4oXCIyZDk1XCIpLG89bihcIjJiNGNcIikoXCJtYXRjaFwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHIodCkmJih2b2lkIDAhPT0oZT10W29dKT8hIWU6XCJSZWdFeHBcIj09aSh0KSl9fSxhYmEyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZTUzZFwiKSxpPW4oXCI0MTc4XCIpLnNldCxvPXIuTXV0YXRpb25PYnNlcnZlcnx8ci5XZWJLaXRNdXRhdGlvbk9ic2VydmVyLGM9ci5wcm9jZXNzLHU9ci5Qcm9taXNlLGE9XCJwcm9jZXNzXCI9PW4oXCI2YjRjXCIpKGMpO3QuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0LGUsbixzPWZ1bmN0aW9uKCl7dmFyIHIsaTthJiYocj1jLmRvbWFpbikmJnIuZXhpdCgpO3doaWxlKHQpe2k9dC5mbix0PXQubmV4dDt0cnl7aSgpfWNhdGNoKG8pe3Rocm93IHQ/bigpOmU9dm9pZCAwLG99fWU9dm9pZCAwLHImJnIuZW50ZXIoKX07aWYoYSluPWZ1bmN0aW9uKCl7Yy5uZXh0VGljayhzKX07ZWxzZSBpZighb3x8ci5uYXZpZ2F0b3ImJnIubmF2aWdhdG9yLnN0YW5kYWxvbmUpaWYodSYmdS5yZXNvbHZlKXt2YXIgZj11LnJlc29sdmUodm9pZCAwKTtuPWZ1bmN0aW9uKCl7Zi50aGVuKHMpfX1lbHNlIG49ZnVuY3Rpb24oKXtpLmNhbGwocixzKX07ZWxzZXt2YXIgbD0hMCxwPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO25ldyBvKHMpLm9ic2VydmUocCx7Y2hhcmFjdGVyRGF0YTohMH0pLG49ZnVuY3Rpb24oKXtwLmRhdGE9bD0hbH19cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBpPXtmbjpyLG5leHQ6dm9pZCAwfTtlJiYoZS5uZXh0PWkpLHR8fCh0PWksbigpKSxlPWl9fX0sYWM2YTpmdW5jdGlvbih0LGUsbil7Zm9yKHZhciByPW4oXCJjYWRmXCIpLGk9bihcIjBkNThcIiksbz1uKFwiMmFiYVwiKSxjPW4oXCI3NzI2XCIpLHU9bihcIjMyZTlcIiksYT1uKFwiODRmMlwiKSxzPW4oXCIyYjRjXCIpLGY9cyhcIml0ZXJhdG9yXCIpLGw9cyhcInRvU3RyaW5nVGFnXCIpLHA9YS5BcnJheSxoPXtDU1NSdWxlTGlzdDohMCxDU1NTdHlsZURlY2xhcmF0aW9uOiExLENTU1ZhbHVlTGlzdDohMSxDbGllbnRSZWN0TGlzdDohMSxET01SZWN0TGlzdDohMSxET01TdHJpbmdMaXN0OiExLERPTVRva2VuTGlzdDohMCxEYXRhVHJhbnNmZXJJdGVtTGlzdDohMSxGaWxlTGlzdDohMSxIVE1MQWxsQ29sbGVjdGlvbjohMSxIVE1MQ29sbGVjdGlvbjohMSxIVE1MRm9ybUVsZW1lbnQ6ITEsSFRNTFNlbGVjdEVsZW1lbnQ6ITEsTWVkaWFMaXN0OiEwLE1pbWVUeXBlQXJyYXk6ITEsTmFtZWROb2RlTWFwOiExLE5vZGVMaXN0OiEwLFBhaW50UmVxdWVzdExpc3Q6ITEsUGx1Z2luOiExLFBsdWdpbkFycmF5OiExLFNWR0xlbmd0aExpc3Q6ITEsU1ZHTnVtYmVyTGlzdDohMSxTVkdQYXRoU2VnTGlzdDohMSxTVkdQb2ludExpc3Q6ITEsU1ZHU3RyaW5nTGlzdDohMSxTVkdUcmFuc2Zvcm1MaXN0OiExLFNvdXJjZUJ1ZmZlckxpc3Q6ITEsU3R5bGVTaGVldExpc3Q6ITAsVGV4dFRyYWNrQ3VlTGlzdDohMSxUZXh0VHJhY2tMaXN0OiExLFRvdWNoTGlzdDohMX0sdj1pKGgpLGQ9MDtkPHYubGVuZ3RoO2QrKyl7dmFyIHksYj12W2RdLGc9aFtiXSxtPWNbYl0seD1tJiZtLnByb3RvdHlwZTtpZih4JiYoeFtmXXx8dSh4LGYscCkseFtsXXx8dSh4LGwsYiksYVtiXT1wLGcpKWZvcih5IGluIHIpeFt5XXx8byh4LHksclt5XSwhMCl9fSxhZWJkOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fX0sYjBjNTpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcIjUyMGFcIik7bihcIjVjYTFcIikoe3RhcmdldDpcIlJlZ0V4cFwiLHByb3RvOiEwLGZvcmNlZDpyIT09Ly4vLmV4ZWN9LHtleGVjOnJ9KX0sYjBkYzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImU0YWVcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGkpe3RyeXtyZXR1cm4gaT9lKHIobilbMF0sblsxXSk6ZShuKX1jYXRjaChjKXt2YXIgbz10W1wicmV0dXJuXCJdO3Rocm93IHZvaWQgMCE9PW8mJnIoby5jYWxsKHQpKSxjfX19LGI0NDc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCIzYTM4XCIpLGk9TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/aShyKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxiOGUzOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPSEwfSxiYzEzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZTUzZFwiKSxpPXIubmF2aWdhdG9yO3QuZXhwb3J0cz1pJiZpLnVzZXJBZ2VudHx8XCJcIn0sYmNhYTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcImNiN2NcIiksaT1uKFwiZDNmNFwiKSxvPW4oXCJhNWI4XCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHIodCksaShlKSYmZS5jb25zdHJ1Y3Rvcj09PXQpcmV0dXJuIGU7dmFyIG49by5mKHQpLGM9bi5yZXNvbHZlO3JldHVybiBjKGUpLG4ucHJvbWlzZX19LGJlMTM6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT10KXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIit0KTtyZXR1cm4gdH19LGJmMGI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCIzNTVkXCIpLGk9bihcImFlYmRcIiksbz1uKFwiMzZjM1wiKSxjPW4oXCIxYmMzXCIpLHU9bihcIjA3ZTNcIiksYT1uKFwiNzk0YlwiKSxzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ZS5mPW4oXCI4ZTYwXCIpP3M6ZnVuY3Rpb24odCxlKXtpZih0PW8odCksZT1jKGUsITApLGEpdHJ5e3JldHVybiBzKHQsZSl9Y2F0Y2gobil7fWlmKHUodCxlKSlyZXR1cm4gaSghci5mLmNhbGwodCxlKSx0W2VdKX19LGMyMDc6ZnVuY3Rpb24odCxlKXt9LGMzNjY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI2ODIxXCIpLGk9bihcIjlkZWZcIiksbz1uKFwiNzdmMVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixjKXt2YXIgdSxhPXIoZSkscz1pKGEubGVuZ3RoKSxmPW8oYyxzKTtpZih0JiZuIT1uKXt3aGlsZShzPmYpaWYodT1hW2YrK10sdSE9dSlyZXR1cm4hMH1lbHNlIGZvcig7cz5mO2YrKylpZigodHx8ZiBpbiBhKSYmYVtmXT09PW4pcmV0dXJuIHR8fGZ8fDA7cmV0dXJuIXQmJi0xfX19LGMzNjc6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCI4NDM2XCIpLGk9bihcIjUwZWRcIiksbz1uKFwiNDgxYlwiKSxjPW4oXCIzNmMzXCIpO3QuZXhwb3J0cz1uKFwiMzBmMVwiKShBcnJheSxcIkFycmF5XCIsKGZ1bmN0aW9uKHQsZSl7dGhpcy5fdD1jKHQpLHRoaXMuX2k9MCx0aGlzLl9rPWV9KSwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90LGU9dGhpcy5fayxuPXRoaXMuX2krKztyZXR1cm4hdHx8bj49dC5sZW5ndGg/KHRoaXMuX3Q9dm9pZCAwLGkoMSkpOmkoMCxcImtleXNcIj09ZT9uOlwidmFsdWVzXCI9PWU/dFtuXTpbbix0W25dXSl9KSxcInZhbHVlc1wiKSxvLkFyZ3VtZW50cz1vLkFycmF5LHIoXCJrZXlzXCIpLHIoXCJ2YWx1ZXNcIikscihcImVudHJpZXNcIil9LGMzYTE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJlNmYzXCIpLGk9bihcIjE2OTFcIik7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LGkpfX0sYzVmNjpmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcIjc3MjZcIiksaT1uKFwiNjlhOFwiKSxvPW4oXCIyZDk1XCIpLGM9bihcIjVkYmNcIiksdT1uKFwiNmE5OVwiKSxhPW4oXCI3OWU1XCIpLHM9bihcIjkwOTNcIikuZixmPW4oXCIxMWU5XCIpLmYsbD1uKFwiODZjY1wiKS5mLHA9bihcImFhNzdcIikudHJpbSxoPVwiTnVtYmVyXCIsdj1yW2hdLGQ9dix5PXYucHJvdG90eXBlLGI9byhuKFwiMmFlYlwiKSh5KSk9PWgsZz1cInRyaW1cImluIFN0cmluZy5wcm90b3R5cGUsbT1mdW5jdGlvbih0KXt2YXIgZT11KHQsITEpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiZlLmxlbmd0aD4yKXtlPWc/ZS50cmltKCk6cChlLDMpO3ZhciBuLHIsaSxvPWUuY2hhckNvZGVBdCgwKTtpZig0Mz09PW98fDQ1PT09byl7aWYobj1lLmNoYXJDb2RlQXQoMiksODg9PT1ufHwxMjA9PT1uKXJldHVybiBOYU59ZWxzZSBpZig0OD09PW8pe3N3aXRjaChlLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODpyPTIsaT00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOnI9OCxpPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK2V9Zm9yKHZhciBjLGE9ZS5zbGljZSgyKSxzPTAsZj1hLmxlbmd0aDtzPGY7cysrKWlmKGM9YS5jaGFyQ29kZUF0KHMpLGM8NDh8fGM+aSlyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChhLHIpfX1yZXR1cm4rZX07aWYoIXYoXCIgMG8xXCIpfHwhdihcIjBiMVwiKXx8dihcIisweDFcIikpe3Y9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDwxPzA6dCxuPXRoaXM7cmV0dXJuIG4gaW5zdGFuY2VvZiB2JiYoYj9hKChmdW5jdGlvbigpe3kudmFsdWVPZi5jYWxsKG4pfSkpOm8obikhPWgpP2MobmV3IGQobShlKSksbix2KTptKGUpfTtmb3IodmFyIHgsdz1uKFwiOWUxZVwiKT9zKGQpOlwiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXJcIi5zcGxpdChcIixcIiksXz0wO3cubGVuZ3RoPl87XysrKWkoZCx4PXdbX10pJiYhaSh2LHgpJiZsKHYseCxmKGQseCkpO3YucHJvdG90eXBlPXkseS5jb25zdHJ1Y3Rvcj12LG4oXCIyYWJhXCIpKHIsaCx2KX19LGM2OWE6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz0hbihcIjllMWVcIikmJiFuKFwiNzllNVwiKSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4oXCIyMzBlXCIpKFwiZGl2XCIpLFwiYVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpfSxjOGJiOmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bihcIjU0YTFcIil9LGNhNWE6ZnVuY3Rpb24odCxlKXt2YXIgbj0wLHI9TWF0aC5yYW5kb20oKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJTeW1ib2woXCIuY29uY2F0KHZvaWQgMD09PXQ/XCJcIjp0LFwiKV9cIiwoKytuK3IpLnRvU3RyaW5nKDM2KSl9fSxjYWRmOmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiOWM2Y1wiKSxpPW4oXCJkNTNiXCIpLG89bihcIjg0ZjJcIiksYz1uKFwiNjgyMVwiKTt0LmV4cG9ydHM9bihcIjAxZjlcIikoQXJyYXksXCJBcnJheVwiLChmdW5jdGlvbih0LGUpe3RoaXMuX3Q9Yyh0KSx0aGlzLl9pPTAsdGhpcy5faz1lfSksKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdCxlPXRoaXMuX2ssbj10aGlzLl9pKys7cmV0dXJuIXR8fG4+PXQubGVuZ3RoPyh0aGlzLl90PXZvaWQgMCxpKDEpKTppKDAsXCJrZXlzXCI9PWU/bjpcInZhbHVlc1wiPT1lP3Rbbl06W24sdFtuXV0pfSksXCJ2YWx1ZXNcIiksby5Bcmd1bWVudHM9by5BcnJheSxyKFwia2V5c1wiKSxyKFwidmFsdWVzXCIpLHIoXCJlbnRyaWVzXCIpfSxjYjdjOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZDNmNFwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGFuIG9iamVjdCFcIik7cmV0dXJuIHR9fSxjY2I5OmZ1bmN0aW9uKHQsZSxuKXtlLmY9bihcIjUxNjhcIil9LGNkMWM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJlODUzXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcocih0KSkoZSl9fSxjZDc4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiZTRhZVwiKSxpPW4oXCJmNzcyXCIpLG89bihcIjY1NmVcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYocih0KSxpKGUpJiZlLmNvbnN0cnVjdG9yPT09dClyZXR1cm4gZTt2YXIgbj1vLmYodCksYz1uLnJlc29sdmU7cmV0dXJuIGMoZSksbi5wcm9taXNlfX0sY2UxMDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjY5YThcIiksaT1uKFwiNjgyMVwiKSxvPW4oXCJjMzY2XCIpKCExKSxjPW4oXCI2MTNiXCIpKFwiSUVfUFJPVE9cIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sdT1pKHQpLGE9MCxzPVtdO2ZvcihuIGluIHUpbiE9YyYmcih1LG4pJiZzLnB1c2gobik7d2hpbGUoZS5sZW5ndGg+YSlyKHUsbj1lW2ErK10pJiYofm8ocyxuKXx8cy5wdXNoKG4pKTtyZXR1cm4gc319LGQyYzg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJhYWUzXCIpLGk9bihcImJlMTNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtpZihyKGUpKXRocm93IFR5cGVFcnJvcihcIlN0cmluZyNcIituK1wiIGRvZXNuJ3QgYWNjZXB0IHJlZ2V4IVwiKTtyZXR1cm4gU3RyaW5nKGkodCkpfX0sZDJkNTpmdW5jdGlvbih0LGUsbil7bihcIjE2NTRcIiksbihcIjU0OWJcIiksdC5leHBvcnRzPW4oXCI1ODRhXCIpLkFycmF5LmZyb219LGQzZjQ6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiB0P251bGwhPT10OlwiZnVuY3Rpb25cIj09PXR5cGVvZiB0fX0sZDUzYjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybnt2YWx1ZTplLGRvbmU6ISF0fX19LGQ4NjQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCI3OWFhXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7aWYocih0KSx2b2lkIDA9PT1lKXJldHVybiB0O3N3aXRjaChuKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0LmNhbGwoZSxuKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihuLHIpe3JldHVybiB0LmNhbGwoZSxuLHIpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKG4scixpKXtyZXR1cm4gdC5jYWxsKGUsbixyLGkpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fX0sZDhkNjpmdW5jdGlvbih0LGUsbil7bihcIjE2NTRcIiksbihcIjZjMWNcIiksdC5leHBvcnRzPW4oXCJjY2I5XCIpLmYoXCJpdGVyYXRvclwiKX0sZDhlODpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBhIGZ1bmN0aW9uIVwiKTtyZXR1cm4gdH19LGQ5ZjY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJlNGFlXCIpLGk9bihcIjc5NGJcIiksbz1uKFwiMWJjM1wiKSxjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9bihcIjhlNjBcIik/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXtpZihyKHQpLGU9byhlLCEwKSxyKG4pLGkpdHJ5e3JldHVybiBjKHQsZSxuKX1jYXRjaCh1KXt9aWYoXCJnZXRcImluIG58fFwic2V0XCJpbiBuKXRocm93IFR5cGVFcnJvcihcIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIVwiKTtyZXR1cm5cInZhbHVlXCJpbiBuJiYodFtlXT1uLnZhbHVlKSx0fX0sZGJkYjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjU4NGFcIiksaT1uKFwiZTUzZFwiKSxvPVwiX19jb3JlLWpzX3NoYXJlZF9fXCIsYz1pW29dfHwoaVtvXT17fSk7KHQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBjW3RdfHwoY1t0XT12b2lkIDAhPT1lP2U6e30pfSkoXCJ2ZXJzaW9uc1wiLFtdKS5wdXNoKHt2ZXJzaW9uOnIudmVyc2lvbixtb2RlOm4oXCJiOGUzXCIpP1wicHVyZVwiOlwiZ2xvYmFsXCIsY29weXJpZ2h0OlwiwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KVwifSl9LGRjYmM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCIyYWJhXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpIGluIGUpcih0LGksZVtpXSxuKTtyZXR1cm4gdH19LGUxMWU6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9XCJjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2ZcIi5zcGxpdChcIixcIil9LGU0YWU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJmNzcyXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighcih0KSl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYW4gb2JqZWN0IVwiKTtyZXR1cm4gdH19LGU1M2Q6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmV4cG9ydHM9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XCJudW1iZXJcIj09dHlwZW9mIF9fZyYmKF9fZz1uKX0sZTZmMzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjA3ZTNcIiksaT1uKFwiMzZjM1wiKSxvPW4oXCI1YjRlXCIpKCExKSxjPW4oXCI1NTU5XCIpKFwiSUVfUFJPVE9cIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sdT1pKHQpLGE9MCxzPVtdO2ZvcihuIGluIHUpbiE9YyYmcih1LG4pJiZzLnB1c2gobik7d2hpbGUoZS5sZW5ndGg+YSlyKHUsbj1lW2ErK10pJiYofm8ocyxuKXx8cy5wdXNoKG4pKTtyZXR1cm4gc319LGU4NTM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJkM2Y0XCIpLGk9bihcIjExNjlcIiksbz1uKFwiMmI0Y1wiKShcInNwZWNpZXNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBpKHQpJiYoZT10LmNvbnN0cnVjdG9yLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGV8fGUhPT1BcnJheSYmIWkoZS5wcm90b3R5cGUpfHwoZT12b2lkIDApLHIoZSkmJihlPWVbb10sbnVsbD09PWUmJihlPXZvaWQgMCkpKSx2b2lkIDA9PT1lP0FycmF5OmV9fSxlYmQ2OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiY2I3Y1wiKSxpPW4oXCJkOGU4XCIpLG89bihcIjJiNGNcIikoXCJzcGVjaWVzXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLGM9cih0KS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09Y3x8dm9pZCAwPT0obj1yKGMpW29dKT9lOmkobil9fSxlYmZkOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNjJhMFwiKShcIm1ldGFcIiksaT1uKFwiZjc3MlwiKSxvPW4oXCIwN2UzXCIpLGM9bihcImQ5ZjZcIikuZix1PTAsYT1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSxzPSFuKFwiMjk0Y1wiKSgoZnVuY3Rpb24oKXtyZXR1cm4gYShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pKSxmPWZ1bmN0aW9uKHQpe2ModCxyLHt2YWx1ZTp7aTpcIk9cIisgKyt1LHc6e319fSl9LGw9ZnVuY3Rpb24odCxlKXtpZighaSh0KSlyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdD90OihcInN0cmluZ1wiPT10eXBlb2YgdD9cIlNcIjpcIlBcIikrdDtpZighbyh0LHIpKXtpZighYSh0KSlyZXR1cm5cIkZcIjtpZighZSlyZXR1cm5cIkVcIjtmKHQpfXJldHVybiB0W3JdLml9LHA9ZnVuY3Rpb24odCxlKXtpZighbyh0LHIpKXtpZighYSh0KSlyZXR1cm4hMDtpZighZSlyZXR1cm4hMTtmKHQpfXJldHVybiB0W3JdLnd9LGg9ZnVuY3Rpb24odCl7cmV0dXJuIHMmJnYuTkVFRCYmYSh0KSYmIW8odCxyKSYmZih0KSx0fSx2PXQuZXhwb3J0cz17S0VZOnIsTkVFRDohMSxmYXN0S2V5OmwsZ2V0V2VhazpwLG9uRnJlZXplOmh9fSxlY2YwOmZ1bmN0aW9uKHQsZSxuKXt9LGYxYWU6ZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCI4NmNjXCIpLGk9bihcIjQ2MzBcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtlIGluIHQ/ci5mKHQsZSxpKDAsbikpOnRbZV09bn19LGYyMDE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oXCJlNGFlXCIpLGk9bihcIjc5YWFcIiksbz1uKFwiNTE2OFwiKShcInNwZWNpZXNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sYz1yKHQpLmNvbnN0cnVjdG9yO3JldHVybiB2b2lkIDA9PT1jfHx2b2lkIDA9PShuPXIoYylbb10pP2U6aShuKX19LGY0MTA6ZnVuY3Rpb24odCxlLG4pe24oXCIxYWY2XCIpLHQuZXhwb3J0cz1uKFwiNTg0YVwiKS5BcnJheS5pc0FycmF5fSxmNjA1OmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHIpe2lmKCEodCBpbnN0YW5jZW9mIGUpfHx2b2lkIDAhPT1yJiZyIGluIHQpdGhyb3cgVHlwZUVycm9yKG4rXCI6IGluY29ycmVjdCBpbnZvY2F0aW9uIVwiKTtyZXR1cm4gdH19LGY2ZmQ6ZnVuY3Rpb24odCxlKXsoZnVuY3Rpb24odCl7dmFyIGU9XCJjdXJyZW50U2NyaXB0XCIsbj10LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO2UgaW4gdHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Z2V0OmZ1bmN0aW9uKCl7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChyKXt2YXIgdCxlPSgvLiphdCBbXlxcKF0qXFwoKC4qKTouKzouK1xcKSQvZ2kuZXhlYyhyLnN0YWNrKXx8WyExXSlbMV07Zm9yKHQgaW4gbilpZihuW3RdLnNyYz09ZXx8XCJpbnRlcmFjdGl2ZVwiPT1uW3RdLnJlYWR5U3RhdGUpcmV0dXJuIG5bdF07cmV0dXJuIG51bGx9fX0pfSkoZG9jdW1lbnQpfSxmNzUxOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKFwiNWNhMVwiKTtyKHIuUytyLkYsXCJPYmplY3RcIix7YXNzaWduOm4oXCI3MzMzXCIpfSl9LGY3NzI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiB0P251bGwhPT10OlwiZnVuY3Rpb25cIj09PXR5cGVvZiB0fX0sZjkyMTpmdW5jdGlvbih0LGUsbil7bihcIjAxNGJcIiksbihcImMyMDdcIiksbihcIjY5ZDNcIiksbihcIjc2NWRcIiksdC5leHBvcnRzPW4oXCI1ODRhXCIpLlN5bWJvbH0sZmE1YjpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPW4oXCI1NTM3XCIpKFwibmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZ1wiLEZ1bmN0aW9uLnRvU3RyaW5nKX0sZmFiMjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bihcIjc3MjZcIikuZG9jdW1lbnQ7dC5leHBvcnRzPXImJnIuZG9jdW1lbnRFbGVtZW50fSxmYjE1OmZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcjsobi5yKGUpLFwidW5kZWZpbmVkXCIhPT10eXBlb2Ygd2luZG93KSYmKG4oXCJmNmZkXCIpLChyPXdpbmRvdy5kb2N1bWVudC5jdXJyZW50U2NyaXB0KSYmKHI9ci5zcmMubWF0Y2goLyguK1xcLylbXi9dK1xcLmpzKFxcPy4qKT8kLykpJiYobi5wPXJbMV0pKTtuKFwiN2Y3ZlwiKTt2YXIgaT1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbihcIkxheW91dFwiLHtyZWY6XCJsYXlvdXRcIixzdGF0aWNDbGFzczpcInYtc2VsZWN0XCIsY2xhc3M6dC5jbGFzc2VzLGF0dHJzOnt0YWJpbmRleDpcIi0xXCJ9LG5hdGl2ZU9uOnttb3VzZXVwOmZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGUuaW5kZXhPZihcImtleVwiKSYmdC5fayhlLmtleUNvZGUsXCJsZWZ0XCIsMzcsZS5rZXksW1wiTGVmdFwiLFwiQXJyb3dMZWZ0XCJdKT9udWxsOlwiYnV0dG9uXCJpbiBlJiYwIT09ZS5idXR0b24/bnVsbDp2b2lkKHQuaXNNdWx0aXBsZSYmdC4kcmVmcy5pbnAuZm9jdXMoKSl9LGZvY3VzaW46ZnVuY3Rpb24oZSl7dC4kcmVmcy5pbnAuZm9jdXMoKSx0LmNoZWNrRm9jdXNfKCl9LGZvY3Vzb3V0OmZ1bmN0aW9uKGUpe3JldHVybiB0LmNoZWNrRm9jdXNfKCl9LGtleWRvd246W2Z1bmN0aW9uKGUpe3JldHVybiFlLnR5cGUuaW5kZXhPZihcImtleVwiKSYmdC5fayhlLmtleUNvZGUsXCJkb3duXCIsNDAsZS5rZXksW1wiRG93blwiLFwiQXJyb3dEb3duXCJdKT9udWxsOihlLnByZXZlbnREZWZhdWx0KCksdC5uZXh0KCkpfSxmdW5jdGlvbihlKXtyZXR1cm4hZS50eXBlLmluZGV4T2YoXCJrZXlcIikmJnQuX2soZS5rZXlDb2RlLFwidXBcIiwzOCxlLmtleSxbXCJVcFwiLFwiQXJyb3dVcFwiXSk/bnVsbDooZS5wcmV2ZW50RGVmYXVsdCgpLHQubmV4dCghMCkpfSxmdW5jdGlvbihlKXtyZXR1cm4hZS50eXBlLmluZGV4T2YoXCJrZXlcIikmJnQuX2soZS5rZXlDb2RlLFwiaG9tZVwiLHZvaWQgMCxlLmtleSx2b2lkIDApP251bGw6KGUucHJldmVudERlZmF1bHQoKSx0Lm1hcmsoMCkpfSxmdW5jdGlvbihlKXtyZXR1cm4hZS50eXBlLmluZGV4T2YoXCJrZXlcIikmJnQuX2soZS5rZXlDb2RlLFwiZW5kXCIsdm9pZCAwLGUua2V5LHZvaWQgMCk/bnVsbDooZS5wcmV2ZW50RGVmYXVsdCgpLHQubWFyaygxLzApKX0sZnVuY3Rpb24oZSl7aWYoIWUudHlwZS5pbmRleE9mKFwia2V5XCIpJiZ0Ll9rKGUua2V5Q29kZSxcImVzY1wiLDI3LGUua2V5LFtcIkVzY1wiLFwiRXNjYXBlXCJdKSlyZXR1cm4gbnVsbDtlLnN0b3BQcm9wYWdhdGlvbigpLH50Lm1hcmtlZD90Lm1hcmsoKTp0LmNsb3NlKCl9LGZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGUuaW5kZXhPZihcImtleVwiKSYmdC5fayhlLmtleUNvZGUsXCJkZWxldGVcIixbOCw0Nl0sZS5rZXksW1wiQmFja3NwYWNlXCIsXCJEZWxldGVcIixcIkRlbFwiXSk/bnVsbDp0Lm9uS2V5RGVsKCl9LGZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGUuaW5kZXhPZihcImtleVwiKSYmdC5fayhlLmtleUNvZGUsXCJlbnRlclwiLDEzLGUua2V5LFwiRW50ZXJcIik/bnVsbDp0Lm9uS2V5RG93bkVudGVyKGUpfV0sbW91c2Vkb3duOmZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGUuaW5kZXhPZihcImtleVwiKSYmdC5fayhlLmtleUNvZGUsXCJsZWZ0XCIsMzcsZS5rZXksW1wiTGVmdFwiLFwiQXJyb3dMZWZ0XCJdKT9udWxsOlwiYnV0dG9uXCJpbiBlJiYwIT09ZS5idXR0b24/bnVsbDp0Lm9wZW4oKX19LHNjb3BlZFNsb3RzOnQuX3UoW3trZXk6XCJzZWxlY3RlZFwiLGZuOmZ1bmN0aW9uKCl7cmV0dXJuIHQuX2wodC52YWx1ZV8sKGZ1bmN0aW9uKGUscil7cmV0dXJuIG4oXCJTZWxlY3RlZFwiLHQuX2Ioe2tleTplLmluZGV4LHN0YXRpY0NsYXNzOlwidi1zZWxlY3QtYnRuIHYtc2VsZWN0LXNlbGVjdGVkXCIsbmF0aXZlT246e21vdXNldXA6ZnVuY3Rpb24oZSl7cmV0dXJuIWUudHlwZS5pbmRleE9mKFwia2V5XCIpJiZ0Ll9rKGUua2V5Q29kZSxcImxlZnRcIiwzNyxlLmtleSxbXCJMZWZ0XCIsXCJBcnJvd0xlZnRcIl0pP251bGw6XCJidXR0b25cImluIGUmJjAhPT1lLmJ1dHRvbj9udWxsOnQuZGVzZWxlY3Qocil9fX0sXCJTZWxlY3RlZFwiLHtvcHRpb246ZSxzdGF0ZTp0LnN0YXRlLGluZGV4OnIsc2VsZWN0OnRoaXN9LCExKSxbdC5fbChbXCJib3RoXCIsXCJzZWxlY3RlZFwiXSwoZnVuY3Rpb24obil7cmV0dXJuIHQuX3QobixudWxsLG51bGwse29wdGlvbjplLHN0YXRlOnQuc3RhdGUsaW5kZXg6cixzZWxlY3Q6dGhpc30pfSkpXSwyKX0pKX0scHJveHk6ITB9LHtrZXk6XCJpbnB1dFwiLGZuOmZ1bmN0aW9uKCl7cmV0dXJuW24oXCJpbnB1dFwiLHQuX2Ioe2RpcmVjdGl2ZXM6W3tuYW1lOlwibW9kZWxcIixyYXdOYW1lOlwidi1tb2RlbC50cmltXCIsdmFsdWU6dC5xLGV4cHJlc3Npb246XCJxXCIsbW9kaWZpZXJzOnt0cmltOiEwfX1dLHJlZjpcImlucFwiLHN0YXRpY0NsYXNzOlwidi1zZWxlY3QtaW5wXCIsYXR0cnM6e3BsYWNlaG9sZGVyOnQucGxhY2Vob2xkZXJ9LGRvbVByb3BzOnt2YWx1ZTp0LnF9LG9uOntmb2N1czpmdW5jdGlvbihlKXt0Lm9wZW4oKS5zZWFyY2goKX0sa2V5ZG93bjp0Lm9uS2V5RG93bixpbnB1dDpbZnVuY3Rpb24oZSl7ZS50YXJnZXQuY29tcG9zaW5nfHwodC5xPWUudGFyZ2V0LnZhbHVlLnRyaW0oKSl9LGZ1bmN0aW9uKGUpe3JldHVybiB0Lm9wZW4oKX1dLGJsdXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuJGZvcmNlVXBkYXRlKCl9fX0sXCJpbnB1dFwiLHQuJGF0dHJzLCExKSldfSxwcm94eTohMH0se2tleTpcImFjdGlvbnNcIixmbjpmdW5jdGlvbigpe3JldHVybltuKFwiYnV0dG9uXCIse3N0YXRpY0NsYXNzOlwidi1zZWxlY3QtYnRuLWNsZWFyXCIsYXR0cnM6e3R5cGU6XCJidXR0b25cIix0YWJpbmRleDpcIi0xXCJ9LG9uOnttb3VzZXVwOmZ1bmN0aW9uKGUpe3JldHVybiB0LmNsZWFyKCl9fX0pLG4oXCJidXR0b25cIix7c3RhdGljQ2xhc3M6XCJ2LXNlbGVjdC1idG4tZGRcIixhdHRyczp7dHlwZTpcImJ1dHRvblwiLHRhYmluZGV4OlwiLTFcIn0sb246e2NsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0Lm9wZW4oKX19fSksbihcImJ1dHRvblwiLHtzdGF0aWNDbGFzczpcInYtc2VsZWN0LWJ0bi1zcGlubmVyXCIsYXR0cnM6e3R5cGU6XCJidXR0b25cIix0YWJpbmRleDpcIi0xXCJ9fSxbdC5fdChcInNwaW5uZXJcIildLDIpXX0scHJveHk6ITB9LHtrZXk6XCJvcHRpb25zXCIsZm46ZnVuY3Rpb24oKXtyZXR1cm4gdC5fbCh0LmZpbHRlcmVkLChmdW5jdGlvbihlLHIpe3JldHVybiBuKFwiT3B0aW9uXCIsdC5fYih7a2V5OmUuaW5kZXgscmVmOlwib3B0aW9uXCIrcixyZWZJbkZvcjohMCxzdGF0aWNDbGFzczpcInYtc2VsZWN0LW9wdGlvblwiLG5hdGl2ZU9uOnttb3VzZXVwOmZ1bmN0aW9uKG4pe3JldHVybiFuLnR5cGUuaW5kZXhPZihcImtleVwiKSYmdC5fayhuLmtleUNvZGUsXCJsZWZ0XCIsMzcsbi5rZXksW1wiTGVmdFwiLFwiQXJyb3dMZWZ0XCJdKT9udWxsOlwiYnV0dG9uXCJpbiBuJiYwIT09bi5idXR0b24/bnVsbDp0LnNlbGVjdChlKX19fSxcIk9wdGlvblwiLHtvcHRpb246ZSxzdGF0ZTp0LnN0YXRlLGluZGV4OnIsc2VsZWN0OnRoaXN9LCExKSxbdC5fbChbXCJib3RoXCIsXCJvcHRpb25cIl0sKGZ1bmN0aW9uKG4pe3JldHVybiB0Ll90KG4sbnVsbCxudWxsLHtvcHRpb246ZSxzdGF0ZTp0LnN0YXRlLGluZGV4OnIsc2VsZWN0OnRoaXN9KX0pKV0sMil9KSl9LHByb3h5OiEwfSx0Ll9sKHQubGF5b3V0U2xvdHMsKGZ1bmN0aW9uKGUpe3JldHVybntrZXk6ZSxmbjpmdW5jdGlvbihuKXtyZXR1cm5bdC5fdChlLG51bGwsbnVsbCxPYmplY3QuYXNzaWduKHt9LHtzdGF0ZTp0LnN0YXRlLHNlbGVjdDp0aGlzfSxuKSldfX19KSldLG51bGwsITApfSl9LG89W10sYz0obihcIjhlNmVcIiksbihcImE3NDVcIikpLHU9bi5uKGMpO2Z1bmN0aW9uIGEodCl7aWYodSgpKHQpKXtmb3IodmFyIGU9MCxuPW5ldyBBcnJheSh0Lmxlbmd0aCk7ZTx0Lmxlbmd0aDtlKyspbltlXT10W2VdO3JldHVybiBufX12YXIgcz1uKFwiNzc0ZVwiKSxmPW4ubihzKSxsPW4oXCJjOGJiXCIpLHA9bi5uKGwpO2Z1bmN0aW9uIGgodCl7aWYocCgpKE9iamVjdCh0KSl8fFwiW29iamVjdCBBcmd1bWVudHNdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpcmV0dXJuIGYoKSh0KX1mdW5jdGlvbiB2KCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIGEodCl8fGgodCl8fHYoKX1uKFwiMmZkYlwiKSxuKFwiNzUxNFwiKSxuKFwiNjc2MlwiKSxuKFwiNDU2ZFwiKSxuKFwiMjBkNlwiKSxuKFwiMzg2ZFwiKSxuKFwiMzg0NlwiKTt2YXIgeT1uKFwiODVmMlwiKSxiPW4ubih5KTtmdW5jdGlvbiBnKHQsZSxuKXtyZXR1cm4gZSBpbiB0P2IoKSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH1uKFwiYWM2YVwiKSxuKFwiODYxNVwiKSxuKFwiMjhhNVwiKSxuKFwiYzVmNlwiKSxuKFwiYTQ4MVwiKSxuKFwiOTZjZlwiKTt2YXIgbT1uKFwiNzk1YlwiKSx4PW4ubihtKTtmdW5jdGlvbiB3KHQsZSxuLHIsaSxvLGMpe3RyeXt2YXIgdT10W29dKGMpLGE9dS52YWx1ZX1jYXRjaChOKXtyZXR1cm4gdm9pZCBuKE4pfXUuZG9uZT9lKGEpOnguYS5yZXNvbHZlKGEpLnRoZW4ocixpKX1mdW5jdGlvbiBfKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyB4LmEoKGZ1bmN0aW9uKHIsaSl7dmFyIG89dC5hcHBseShlLG4pO2Z1bmN0aW9uIGModCl7dyhvLHIsaSxjLHUsXCJuZXh0XCIsdCl9ZnVuY3Rpb24gdSh0KXt3KG8scixpLGMsdSxcInRocm93XCIsdCl9Yyh2b2lkIDApfSkpfX1uKFwiNTUxY1wiKTt2YXIgUz1uKFwiNWQ1OFwiKSxPPW4ubihTKSxrPW4oXCI2N2JiXCIpLGo9bi5uKGspO2Z1bmN0aW9uIEUodCl7cmV0dXJuIEU9XCJmdW5jdGlvblwiPT09dHlwZW9mIGouYSYmXCJzeW1ib2xcIj09PXR5cGVvZiBPLmE/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGouYSYmdC5jb25zdHJ1Y3Rvcj09PWouYSYmdCE9PWouYS5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0sRSh0KX1mdW5jdGlvbiBQKHQpe3JldHVybiBQPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBqLmEmJlwic3ltYm9sXCI9PT1FKE8uYSk/ZnVuY3Rpb24odCl7cmV0dXJuIEUodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PT10eXBlb2Ygai5hJiZ0LmNvbnN0cnVjdG9yPT09ai5hJiZ0IT09ai5hLnByb3RvdHlwZT9cInN5bWJvbFwiOkUodCl9LFAodCl9ZnVuY3Rpb24gQSgpe3JldHVybiBMLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBMKCl7cmV0dXJuIEw9XyhyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBlLG4scj1hcmd1bWVudHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXt3aGlsZSgxKXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIGU9ci5sZW5ndGg+MCYmdm9pZCAwIT09clswXT9yWzBdOlwiXCIsdC5uZXh0PTMsZmV0Y2goZSk7Y2FzZSAzOmlmKG49dC5zZW50LG4ub2spe3QubmV4dD02O2JyZWFrfXJldHVybiB0LmFicnVwdChcInJldHVyblwiLFByb21pc2UucmVqZWN0KG4pKTtjYXNlIDY6cmV0dXJuIHQubmV4dD04LG4uanNvbigpO2Nhc2UgODpyZXR1cm4gdC5hYnJ1cHQoXCJyZXR1cm5cIix0LnNlbnQpO2Nhc2UgOTpjYXNlXCJlbmRcIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpLEwuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFQodCxlLG4pe3JldHVybiBNYXRoLm1pbihNYXRoLm1heCh0LGUpLG4pfWZ1bmN0aW9uIE0odCxlLG4pe3JldHVybiB0PVYodCksYXJndW1lbnRzLmxlbmd0aD4yP0ModC5zbGljZSgwLC0xKSxlLHt9KVt0W3QubGVuZ3RoLTFdXT1uOkModCxlKX1mdW5jdGlvbiBDKHQsZSxuKXt0PVYodCk7dmFyIHI9LTEsaT10Lmxlbmd0aCxvPWFyZ3VtZW50cy5sZW5ndGg+Mjt3aGlsZSgrK3I8aSl7dmFyIGM9ZTtpZihlPWVbdFtyXV0sXCJvYmplY3RcIiE9UChlKSl7aWYoIW8pcmV0dXJuIHI9PWktMT9lOnZvaWQgMDtlPWNbdFtyXV09cjxpLTE/e306UihjW3Rbcl1dKT9uOmNbdFtyXV19fXJldHVybiBlfWZ1bmN0aW9uIEYodCl7dD1WKHQpO2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGU+MT9lLTE6MCkscj0xO3I8ZTtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm4gTS5iaW5kLmFwcGx5KE0sW251bGwsdF0uY29uY2F0KG4pKX1mdW5jdGlvbiBJKHQpe3JldHVybiFbdm9pZCAwLFwiXCIsbnVsbCxOYU5dLmluY2x1ZGVzKHQpfWZ1bmN0aW9uIFIodCl7cmV0dXJuIHQhPT1PYmplY3QodCl9ZnVuY3Rpb24gTigpe3ZhciB0Oyh0PWNvbnNvbGUpLmVycm9yLmFwcGx5KHQsW1wiW0BkZXNpc2xhdnNkL3Z1ZS1zZWxlY3RdOiBcIl0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKX1mdW5jdGlvbiBxKHQpe3JldHVyblwiW0BkZXNpc2xhdnNkL3Z1ZS1zZWxlY3RdOiBcIit0fWZ1bmN0aW9uIEQodCxlLG4pe3ZhciByO2Z1bmN0aW9uIGkoKXtmb3IodmFyIGk9dGhpcyxvPWFyZ3VtZW50cy5sZW5ndGgsYz1uZXcgQXJyYXkobyksdT0wO3U8bzt1KyspY1t1XT1hcmd1bWVudHNbdV07cmV0dXJuIGNsZWFyVGltZW91dChyKSxyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkoaSxjKX0pLHQpLG59cmV0dXJuIHQ/aTplfXZhciAkPWZ1bmN0aW9uKHQpe3JldHVybiB0fTtmdW5jdGlvbiBHKHQpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGU+MT9lLTE6MCkscj0xO3I8ZTtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm4oRWxlbWVudC5wcm90b3R5cGUubWF0Y2hlc3x8RWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3J8fEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvcikuYXBwbHkodCxuKX1mdW5jdGlvbiBWKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Q6dC5zcGxpdChcIi5cIikuZmlsdGVyKEJvb2xlYW4pfW4oXCJmNzUxXCIpO3ZhciBCLFUsSz17bmFtZTpcIk9wdGlvblwiLHByb3BzOntvcHRpb246e30saW5kZXg6e30sc3RhdGU6e30sdGFnOntkZWZhdWx0Olwic3BhblwifX0sY29tcHV0ZWQ6e2NsYXNzZXM6ZnVuY3Rpb24oKXtyZXR1cm57XCItbWFya2VkXCI6dGhpcy5zdGF0ZS5tYXJrZWQ9PXRoaXMub3B0aW9uLFwiLXNlbGVjdGVkXCI6dGhpcy5zdGF0ZS5zZWxlY3RlZC5pbmNsdWRlcyh0aGlzLm9wdGlvbil9fX0scmVuZGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2xhc3NlcyxuPXRoaXMudGFnLHI9dGhpcy5vcHRpb24saT10aGlzLiRzbG90cy5kZWZhdWx0LG89aSYmMT09aS5sZW5ndGgmJmlbMF07cmV0dXJuIG8mJm8udGFnPyhvLmRhdGE9by5kYXRhfHx7fSxvLmRhdGEuY2xhc3M9T2JqZWN0LmFzc2lnbih7fSxvLmRhdGEuY2xhc3MsZSksbyk6dChuLHtjbGFzczplfSxpfHxbci5sYWJlbF0pfX0sSD1LO2Z1bmN0aW9uIFcodCxlLG4scixpLG8sYyx1KXt2YXIgYSxzPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB0P3Qub3B0aW9uczp0O2lmKGUmJihzLnJlbmRlcj1lLHMuc3RhdGljUmVuZGVyRm5zPW4scy5fY29tcGlsZWQ9ITApLHImJihzLmZ1bmN0aW9uYWw9ITApLG8mJihzLl9zY29wZUlkPVwiZGF0YS12LVwiK28pLGM/KGE9ZnVuY3Rpb24odCl7dD10fHx0aGlzLiR2bm9kZSYmdGhpcy4kdm5vZGUuc3NyQ29udGV4dHx8dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LiR2bm9kZSYmdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQsdHx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9ffHwodD1fX1ZVRV9TU1JfQ09OVEVYVF9fKSxpJiZpLmNhbGwodGhpcyx0KSx0JiZ0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cyYmdC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKGMpfSxzLl9zc3JSZWdpc3Rlcj1hKTppJiYoYT11P2Z1bmN0aW9uKCl7aS5jYWxsKHRoaXMsdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KX06aSksYSlpZihzLmZ1bmN0aW9uYWwpe3MuX2luamVjdFN0eWxlcz1hO3ZhciBmPXMucmVuZGVyO3MucmVuZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEuY2FsbChlKSxmKHQsZSl9fWVsc2V7dmFyIGw9cy5iZWZvcmVDcmVhdGU7cy5iZWZvcmVDcmVhdGU9bD9bXS5jb25jYXQobCxhKTpbYV19cmV0dXJue2V4cG9ydHM6dCxvcHRpb25zOnN9fXZhciBKLFksej1XKEgsQixVLCExLG51bGwsbnVsbCxudWxsKSxYPXouZXhwb3J0cyxRPXttaXhpbnM6W1hdfSxaPVEsdHQ9VyhaLEosWSwhMSxudWxsLG51bGwsbnVsbCksZXQ9dHQuZXhwb3J0cyxudD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbihcImRpdlwiLFtuKFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidi1zZWxlY3QtYmFyXCJ9LFt0Ll90KFwic2VsZWN0ZWRcIiksbihcImRpdlwiLHtzdGF0aWNDbGFzczpcInYtc2VsZWN0LWlucC1ncm91cFwifSxbdC5fdChcImlucHV0XCIpLHQuX3QoXCJhY3Rpb25zXCIpXSwyKV0sMiksbihcImRpdlwiLHtyZWY6XCJsaXN0XCIsc3RhdGljQ2xhc3M6XCJ2LXNlbGVjdC1saXN0XCJ9LFt0Ll90KFwiYmVmb3JlbGlzdFwiKSx0Ll90KFwib3B0aW9uc1wiKSx0Ll90KFwiYWZ0ZXJsaXN0XCIpXSwyKV0pfSxydD1bXSxpdD17aW5qZWN0OltcInNlbGVjdFwiXX0sb3Q9aXQsY3Q9KG4oXCI2M2M2XCIpLFcob3QsbnQscnQsITEsbnVsbCxudWxsLG51bGwpKSx1dD1jdC5leHBvcnRzO2Z1bmN0aW9uIGF0KHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBzdCh0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9hdChuLCEwKS5mb3JFYWNoKChmdW5jdGlvbihlKXtnKHQsZSxuW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTphdChuKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSl9cmV0dXJuIHR9dmFyIGZ0PXtuYW1lOlwiU2VsZWN0XCIsY29tcG9uZW50czp7T3B0aW9uOlgsU2VsZWN0ZWQ6ZXQsTGF5b3V0OnV0fSxwcm92aWRlOntzZWxlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sc3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZX19LHByb3BzOnt2YWx1ZTp7fSxxdWVyeTpTdHJpbmcsZnJvbTp7dHlwZTpbQXJyYXksRnVuY3Rpb24sU3RyaW5nLE9iamVjdF0sZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybltdfX0sYXM6W1N0cmluZyxBcnJheV0scGFyc2U6e3R5cGU6W0Z1bmN0aW9uLFN0cmluZ10sZGVmYXVsdDokfSxmZXRjaDp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9XyhyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdChlLG4pe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7d2hpbGUoMSlzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPW4udXJsfHxuLHQubmV4dD0zLEEoci5yZXBsYWNlKFwiJXNcIixlbmNvZGVVUklDb21wb25lbnQoZSkpKTtjYXNlIDM6cmV0dXJuIHQuYWJydXB0KFwicmV0dXJuXCIsdC5zZW50KTtjYXNlIDQ6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKTtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBlfSgpfSxmaWx0ZXI6e3R5cGU6W0Jvb2xlYW4sRnVuY3Rpb25dLGRlZmF1bHQ6dm9pZCAwfSxmaWx0ZXJCeTp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5sYWJlbDtyZXR1cm5+KG4rXCJcIikudG9Mb3dlckNhc2UoKS5pbmRleE9mKGUudG9Mb3dlckNhc2UoKSl9fSxkZWJvdW5jZTp7dHlwZTpOdW1iZXIsZGVmYXVsdDoyNTB9LHRhZ2dpbmc6e3R5cGU6W0Jvb2xlYW4sRnVuY3Rpb25dfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxkeW5hbWljOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDB9LHRhZ3M6e30sdGFnS2V5czp7dHlwZTpBcnJheSxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuW119fSx2YWxpZGF0ZTp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuJGF0dHJzO3JldHVybih0fHwhZS5oYXNPd25Qcm9wZXJ0eShcIm1pbmxlbmd0aFwiKSkmJighdGhpcy4kcmVmcy5pbnB8fEcodGhpcy4kcmVmcy5pbnAsXCI6dmFsaWRcIikpfX0sd2F0Y2hBdHRyczp7ZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybltcInJlcXVpcmVkXCIsXCJkaXNhYmxlZFwiLFwicmVhZG9ubHlcIl19fSxzdGF0ZWZ1bDpCb29sZWFuLGZpbmQ6e3R5cGU6W0Z1bmN0aW9uLEJvb2xlYW5dLGRlZmF1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZnJvbV8odC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBvb3J9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sYWJlbH0pKS5qb2luKFwiLFwiKSl9fSxjbG9zZU9uU2VsZWN0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDB9LGNsZWFyT25TZWxlY3Q6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMH0sY2xlYXJPbkNsb3NlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDB9fSxpbmhlcml0QXR0cnM6ITEsZGF0YTpmdW5jdGlvbigpe3JldHVybntxOnRoaXMucXVlcnl8fFwiXCIsbWFya2VkOi0xLHF1ZXVlOm51bGwsZmxhZ3M6e2xvYWRpbmc6ITEsZm9jdXNlZDohMSxvcGVuZWQ6ITF9LHZhbHVlXzpbXSxvcHRpb25zOltdLGFzU3BlYzp7cng6L1xccypbLDpdXFxzKi8sb3JkZXI6XCJsYWJlbDp2YWx1ZTppbmRleFwiLnNwbGl0KFwiOlwiKX0sY2hlY2tGb2N1c186RCgxMCx0aGlzLmNoZWNrRm9jdXMpfX0sY29tcHV0ZWQ6e2lzTXVsdGlwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT10aGlzLm11bHRpcGxlP3RoaXMubXVsdGlwbGU6QXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKX0saXNBc3luYzpmdW5jdGlvbigpe3JldHVybiFBcnJheS5pc0FycmF5KHRoaXMuZnJvbSl9LGlzRHluYW1pYzpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZnJvbTtyZXR1cm4gdm9pZCAwIT10aGlzLmR5bmFtaWM/dGhpcy5keW5hbWljOiEoQXJyYXkuaXNBcnJheSh0KXx8XCJzdHJpbmdcIj09dHlwZW9mIHQmJiF+dC5pbmRleE9mKFwiJXNcIil8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJiF0Lmxlbmd0aCl9LGlzUHJpbWl0aXZlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hc187cmV0dXJuIXR8fCFPYmplY3QudmFsdWVzKHQpLnNvbWUoQm9vbGVhbil9LGlzSW5zdWZmaWNpZW50OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hc187cmV0dXJuIEJvb2xlYW4odCYmdC5wb29yKX0sYXNfOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLmFzJiZ0aGlzLmFzLmxlbmd0aCl7dmFyIGU9QXJyYXkuaXNBcnJheSh0aGlzLmFzKT90aGlzLmFzOih0aGlzLmFzfHxcIlwiKS5zcGxpdCh0aGlzLmFzU3BlYy5yeCksbj1Cb29sZWFuKGVbMF0mJmVbMV0mJmVbMF0hPWVbMV0pO3JldHVybiBlPXRoaXMuYXNTcGVjLm9yZGVyLm1hcCgoZnVuY3Rpb24odCxuKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlW25dJiZlW25dfHxlW25dJiZGKGVbbl0pfSkpLnJlZHVjZSgoZnVuY3Rpb24oZSxuLHIpe3JldHVybiBzdCh7fSxlLGcoe30sdC5hc1NwZWMub3JkZXJbcl0sbikpfSkse3Bvb3I6bn0pLGUuaW5kZXh8fE4oXCJgaW5kZXhgIGZpZWxkIGlzIHJlcXVpcmVkIHdoZW4gd29ya2luZyB3aXRoIG5vbiBwcmltaXRpdmUgb3B0aW9uc1wiKSxlfX0sZmlsdGVyZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5xLG49XCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5maWx0ZXI/dGhpcy5maWx0ZXI6dGhpcy5maWx0ZXJCeTtyZXR1cm4oSSh0aGlzLmZpbHRlcik/dGhpcy5maWx0ZXI6dGhpcy5pc0R5bmFtaWN8fCFlLmxlbmd0aCk/dGhpcy5vcHRpb25zOnRoaXMub3B0aW9ucy5maWx0ZXIoKGZ1bmN0aW9uKHIpe3JldHVybiBuLmNhbGwodCxyLGUpfSkpfSxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBzdCh7fSx0aGlzLmZsYWdzLHttdWx0aXBsZTp0aGlzLmlzTXVsdGlwbGUsc2VhcmNoaW5nOiEhdGhpcy5xLGVtcHR5OiF0aGlzLnZhbHVlXy5sZW5ndGgsbWFya2VkOnRoaXMuZmlsdGVyZWRbdGhpcy5tYXJrZWRdLHNlbGVjdGVkOnRoaXMudmFsdWVffSl9LGNsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN0YXRlLGU9dGhpcy4kYXR0cnM7cmV0dXJuIHN0KHtcIi1lbXB0eVwiOnQuZW1wdHksXCItb3BlbmVkXCI6dC5vcGVuZWQsXCItZm9jdXNlZFwiOnQuZm9jdXNlZCxcIi1sb2FkaW5nXCI6dC5sb2FkaW5nLFwiLW11bHRpcGxlXCI6dC5tdWx0aXBsZSxcIi1zZWxlY3RlZFwiOnQuc2VsZWN0ZWQubGVuZ3RoLFwiLXNlYXJjaGluZ1wiOnQuc2VhcmNoaW5nfSx0aGlzLndhdGNoQXR0cnMucmVkdWNlKChmdW5jdGlvbih0LG4pe3JldHVybiBzdCh7fSx0LGcoe30sXCItXCIuY29uY2F0KG4pLGVbbl0pKX0pLHt9KSl9LGRlYm91bmNlZFNlYXJjaDpmdW5jdGlvbigpe3JldHVybiBEKHRoaXMuZGVib3VuY2UsdGhpcy5zZWFyY2gpfSxwYXJzZV86ZnVuY3Rpb24oKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdGhpcy5wYXJzZT9GKHRoaXMucGFyc2UpOnRoaXMucGFyc2V9LHBsYWNlaG9sZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVfLmxlbmd0aCYmIXRoaXMuaXNNdWx0aXBsZT9cIlwiOnRoaXMuJGF0dHJzLnBsYWNlaG9sZGVyfHxcIlNlYXJjaC4uXCJ9LG1hdGNoZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnEudG9Mb3dlckNhc2UoKTtyZXR1cm4gdD90aGlzLmZpbHRlcmVkLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuKGUubGFiZWwrXCJcIikudG9Mb3dlckNhc2UoKT09dH0pKTotMX0sbGF5b3V0U2xvdHM6ZnVuY3Rpb24oKXt2YXIgdD1cInNlbGVjdGVkIG9wdGlvbnMgYm90aCBpbnB1dCBhY3Rpb25zIHNwaW5uZXJcIi5zcGxpdChcIiBcIik7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuJHNjb3BlZFNsb3RzKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiF0LmluY2x1ZGVzKGUpfSkpfX0sd2F0Y2g6e3ZhbHVlOntpbW1lZGlhdGU6ITAsaGFuZGxlcjpmdW5jdGlvbigpe3ZhciB0PV8ocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXt3aGlsZSgxKXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYodGhpcy52YWx1ZV89dGhpcy5wYXJzZVZhbHVlKGUpLHRoaXMub25DaGFuZ2UoKSx0aGlzLnZhbHVlXy5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wb29yfSkpKXt0Lm5leHQ9NDticmVha31yZXR1cm4gdC5hYnJ1cHQoXCJyZXR1cm5cIik7Y2FzZSA0OmlmKHRoaXMuaXNEeW5hbWljKXt0Lm5leHQ9NjticmVha31yZXR1cm4gdC5hYnJ1cHQoXCJyZXR1cm5cIix0aGlzLnNlYXJjaCgpKTtjYXNlIDY6aWYodGhpcy5maW5kKXt0Lm5leHQ9ODticmVha31yZXR1cm4gdC5hYnJ1cHQoXCJyZXR1cm5cIik7Y2FzZSA4OnJldHVybiB0Lm5leHQ9MTAsdGhpcy5maW5kKHRoaXMudmFsdWVfKTtjYXNlIDEwOm49dC5zZW50LHRoaXMudmFsdWVfPXRoaXMucGFyc2VWYWx1ZSh0aGlzLnZhbHVlXyxuKTtjYXNlIDEyOmNhc2VcImVuZFwiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKTtmdW5jdGlvbiBlKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZX0oKX0sZnJvbTpmdW5jdGlvbigpe3RoaXMucXVldWU9bnVsbH0sb3B0aW9uczpmdW5jdGlvbih0KXt0JiZ0Lmxlbmd0aCYmKHRoaXMudmFsdWVfPXRoaXMucGFyc2VWYWx1ZSh0aGlzLnZhbHVlXykpfSx2YWx1ZV86e2ltbWVkaWF0ZTohMCxoYW5kbGVyOmZ1bmN0aW9uKHQpe3RoaXMuJGVtaXQoXCJ1cGRhdGU6dGFnc1wiLHQpfX0sZmlsdGVyZWQ6ZnVuY3Rpb24oKXt0aGlzLm1hcmsoIXRoaXMuaXNEeW5hbWljfHwwKX0scTpmdW5jdGlvbih0KXt0aGlzLmlzRHluYW1pYyYmKHRoaXMub3B0aW9ucz1bXSksdGhpcy5kZWJvdW5jZWRTZWFyY2goKSx0aGlzLiRlbWl0KFwidXBkYXRlOnF1ZXJ5XCIsdCl9LHF1ZXJ5OmZ1bmN0aW9uKHQpe3RoaXMucT10fHxcIlwifSxxdWV1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuZmxhZ3MubG9hZGluZz10JiYhIXQuZmluYWxseSgoZnVuY3Rpb24oKXt0PT1lLnF1ZXVlJiYoZS5mbGFncy5sb2FkaW5nPSExKX0pKX0sXCJmbGFncy5mb2N1c2VkXCI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuJGVtaXQodD9cImZvY3VzXCI6XCJibHVyXCIsdGhpcyksdD90aGlzLm9wZW4oKTp0aGlzLmNsb3NlKCFJKHRoaXMuY2xlYXJPbkNsb3NlKXx8dGhpcy5jbGVhck9uQ2xvc2UpfSxcImZsYWdzLm9wZW5lZFwiOmZ1bmN0aW9uKHQpe3RoaXMuJGVtaXQodD9cIm9wZW5cIjpcImNsb3NlXCIsdGhpcyl9fSxtZXRob2RzOntzZXQ6ZnVuY3Rpb24odCl7dGhpcy5zdGF0ZWZ1bCYmKHRoaXMudmFsdWVfPUkodCk/QXJyYXkuaXNBcnJheSh0KT90Olt0XTpbXSx0aGlzLm9uQ2hhbmdlKCkpLEkodCkmJih0PUFycmF5LmlzQXJyYXkodCk/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpOnQudmFsdWUpLHRoaXMuJGVtaXQoXCJpbnB1dFwiLHQpfSxzZWFyY2g6ZnVuY3Rpb24oKXt2YXIgdD1fKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIGUsbixyLGksbz1hcmd1bWVudHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXt3aGlsZSgxKXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoZT1vLmxlbmd0aD4wJiZ2b2lkIDAhPT1vWzBdJiZvWzBdLG49dGhpcy5xLFwic3RyaW5nXCI9PXR5cGVvZiBlJiYobj1lKSx0aGlzLnZhbGlkYXRlKG4pKXt0Lm5leHQ9NTticmVha31yZXR1cm4gdC5hYnJ1cHQoXCJyZXR1cm5cIixuZXcgRXJyb3IocShcIkludmFsaWQgcXVlcnk6IFwiK24pKSk7Y2FzZSA1OnJldHVybiByPXRoaXMucXVldWU9ZXx8IXRoaXMucXVldWV8fHRoaXMuaXNEeW5hbWljJiZ0aGlzLnF1ZXVlLnEhPW4/dGhpcy5mcm9tXyhuKTp0aGlzLnF1ZXVlLHIucT1uLHQucHJldj03LHQubmV4dD0xMCxyO2Nhc2UgMTA6aT10LnNlbnQsdC5uZXh0PTE3O2JyZWFrO2Nhc2UgMTM6dGhyb3cgdC5wcmV2PTEzLHQudDA9dFtcImNhdGNoXCJdKDcpLHI9PXRoaXMucXVldWUmJih0aGlzLnF1ZXVlPW51bGwpLHQudDA7Y2FzZSAxNzppZihyPT10aGlzLnF1ZXVlJiZ0aGlzLnE9PXRoaXMucXVldWUucSl7dC5uZXh0PTE5O2JyZWFrfXJldHVybiB0LmFicnVwdChcInJldHVyblwiKTtjYXNlIDE5OnRoaXMub3B0aW9ucz1pO2Nhc2UgMjA6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzcsMTNdXSl9KSkpO2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGV9KCksZnJvbV86ZnVuY3Rpb24oKXt2YXIgdD1fKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLHIsaSxvPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXt3aGlsZSgxKXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYobj10aGlzLmZyb20scj10aGlzLmZldGNoLCFBcnJheS5pc0FycmF5KG4pKXt0Lm5leHQ9NTticmVha31pPW4sdC5uZXh0PTE0O2JyZWFrO2Nhc2UgNTppZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXt0Lm5leHQ9MTE7YnJlYWt9cmV0dXJuIHQubmV4dD04LG4oZSk7Y2FzZSA4Omk9dC5zZW50LHQubmV4dD0xNDticmVhaztjYXNlIDExOnJldHVybiB0Lm5leHQ9MTMscihlLG4pO2Nhc2UgMTM6aT10LnNlbnQ7Y2FzZSAxNDpyZXR1cm4gdC5hYnJ1cHQoXCJyZXR1cm5cIiwodGhpcy5wYXJzZV8oaSl8fFtdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvLm9mUmF3KHQpfSkpKTtjYXNlIDE1OmNhc2VcImVuZFwiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKTtmdW5jdGlvbiBlKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZX0oKSxvZlJhdzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmFzXyxuPXRoaXMuYXNTcGVjLm9yZGVyLnJlZHVjZSgoZnVuY3Rpb24obixyKXtyZXR1cm4gc3Qoe30sbixnKHt9LHIsZSYmZVtyXT9lW3JdKHQpOnQpKX0pLHtyYXc6dH0pO3JldHVybiBJKG4ubGFiZWwpfHwobi5sYWJlbD1uLnZhbHVlKSxJKG4uaW5kZXgpfHwobi5pbmRleD1uLmxhYmVsKSxuZXcgbHQobil9LG9mVmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc0luc3VmZmljaWVudDtpZih0aGlzLmlzUHJpbWl0aXZlKXJldHVybiB0aGlzLm9mUmF3KHQpO3ZhciBuPXQscj10aGlzLmFzXztyJiZyLnZhbHVlJiZyLnZhbHVlKG49e30sdCk7dmFyIGk9dGhpcy5vZlJhdyhuKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihpLHtwb29yOmV9KX0sb2ZQaHJhc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc0luc3VmZmljaWVudDtpZih0aGlzLmlzUHJpbWl0aXZlKXJldHVybiB0aGlzLm9mUmF3KHQpO3ZhciBuPXt9LHI9dGhpcy5hc187cmV0dXJuIHIudmFsdWUmJnIudmFsdWUobix0KSxyLmxhYmVsJiZyLmxhYmVsKG4sdCksT2JqZWN0LmFzc2lnbih0aGlzLm9mUmF3KG4pLHtwb29yOmUsbmV3OiEwfSl9LHNlbGVjdDpmdW5jdGlvbigpe3ZhciB0PV8ocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIG4scixpLG89dGhpcyxjPWFyZ3VtZW50cztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe3doaWxlKDEpc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihuPWMubGVuZ3RoPjEmJnZvaWQgMCE9PWNbMV0mJmNbMV0scj10aGlzLnZhbHVlXy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiBvLmVxdWFscyh0LGUpfSkpLHRoaXMuJGVtaXQoXCJzZWxlY3RcIixlKSwhfnIpe3QubmV4dD01O2JyZWFrfXJldHVybiB0LmFicnVwdChcInJldHVyblwiLHRoaXMuaXNNdWx0aXBsZT90aGlzLmRlc2VsZWN0KHIpOnRoaXMpO2Nhc2UgNTppZighbil7dC5uZXh0PTE2O2JyZWFrfWlmKHRoaXMuJGVtaXQoXCJjcmVhdGVcIixlKSx0aGlzLnRhZ2dpbmcpe3QubmV4dD05O2JyZWFrfXJldHVybiB0LmFicnVwdChcInJldHVyblwiKTtjYXNlIDk6aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdGhpcy50YWdnaW5nKXt0Lm5leHQ9MTY7YnJlYWt9cmV0dXJuIHQubmV4dD0xMix0aGlzLnRhZ2dpbmcuY2FsbCh0aGlzLiRwYXJlbnQsZSx0aGlzKTtjYXNlIDEyOmlmKGk9dC5zZW50LCFbITFdLmluY2x1ZGVzKGkpKXt0Lm5leHQ9MTU7YnJlYWt9cmV0dXJuIHQuYWJydXB0KFwicmV0dXJuXCIpO2Nhc2UgMTU6ZT1pIGluc3RhbmNlb2YgbHQ/aTp0aGlzLm9mUmF3KGkpO2Nhc2UgMTY6dGhpcy5pc011bHRpcGxlJiYoZT10aGlzLnZhbHVlXy5jb25jYXQoZSkpLHRoaXMuc2V0KGUpO2Nhc2UgMTg6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpO2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBlfSgpLGRlc2VsZWN0OmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzTXVsdGlwbGUpcmV0dXJuIHRoaXMuY2xlYXIoKTt2YXIgZT1kKHRoaXMudmFsdWVfKTtlLnNwbGljZSh0LDEpLHRoaXMuc2V0KGUpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuc2V0KHRoaXMuaXNNdWx0aXBsZT9bXTp2b2lkIDApfSxleGlzdHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy52YWx1ZV8uc29tZSgoZnVuY3Rpb24obil7cmV0dXJuIGUuZXF1YWxzKG4sdCl9KSl9LHBhcnNlVmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBJKHQpPyhlPWV8fHRoaXMub3B0aW9ucy5jb25jYXQodGhpcy52YWx1ZV8pLFtdLmNvbmNhdCh0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgbHQ/dDpuLm9mVmFsdWUodCl9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gbi5lcXVhbHModCxlKX0pKXx8dH0pKSk6W119LG1hcms6ZnVuY3Rpb24odCl7aWYoYXJndW1lbnRzLmxlbmd0aCYmITEhPT10PyEwPT09dCYmKHQ9fnRoaXMubWF0Y2hlZD90aGlzLm1hdGNoZWQ6dGhpcy50YWdnaW5nPy0xOjApOnQ9LTEsdD10aGlzLm1hcmtlZD1UKC0xLHQsdGhpcy5maWx0ZXJlZC5sZW5ndGgtMSksfnQpe3ZhciBlPXRoaXMuJHJlZnNbXCJvcHRpb25cIit0XTtlPWUmJmVbMF0mJmVbMF0uJGVsLGUmJnRoaXMuc2Nyb2xsVG8oZSl9cmV0dXJuIHRoaXN9LG5leHQ6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2lmKCF0aGlzLmZsYWdzLm9wZW5lZClyZXR1cm4gdGhpcy5vcGVuKCk7dGhpcy5tYXJrKHRoaXMubWFya2VkK01hdGgucG93KC0xLHQpKX0sZXF1YWxzOmZ1bmN0aW9uKHQsZSl7aWYodC5pbmRleD09PWUuaW5kZXgpcmV0dXJuITA7aWYodC5pbmRleD09ZS5pbmRleCYmW3QuaW5kZXgsZS5pbmRleF0uZXZlcnkoSSkpcmV0dXJuITA7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0LmluZGV4KT09PUpTT04uc3RyaW5naWZ5KGUuaW5kZXgpfWNhdGNoKG4pe3JldHVybiExfX0sb3BlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYWdzLm9wZW5lZD90aGlzOih0aGlzLmZsYWdzLm9wZW5lZD0hMCx0aGlzLm1hcmsoITApKX0sY2xvc2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmxhZ3Mub3BlbmVkPSExLCh0fHwoSSh0aGlzLmNsZWFyT25TZWxlY3QpP3RoaXMuY2xlYXJPblNlbGVjdDohdGhpcy5pc011bHRpcGxlKSkmJih0aGlzLnE9XCJcIiksdGhpc30sYmx1cjpmdW5jdGlvbigpe2lmKCF0aGlzLiRlbClyZXR1cm4gdGhpczt2YXIgdD1HKHRoaXMuJGVsLFwiOmZvY3VzXCIpP3RoaXMuJGVsOnRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoXCI6Zm9jdXNcIik7cmV0dXJuIHQmJnQuYmx1cigpLHRoaXN9LHNjcm9sbFRvOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuJHJlZnMubGF5b3V0LiRyZWZzLmxpc3Q7ZS5zY3JvbGxUb3A9TWF0aC5yb3VuZCh0Lm9mZnNldFRvcCt0Lm9mZnNldEhlaWdodC1lLm9mZnNldEhlaWdodC8yKX0sY2hlY2tGb2N1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYWdzLmZvY3VzZWQ9Ryh0aGlzLiRlbCxcIjpmb2N1c1wiKXx8ISF0aGlzLiRlbC5xdWVyeVNlbGVjdG9yKFwiOmZvY3VzXCIpLHRoaXN9LG9uS2V5RGVsOmZ1bmN0aW9uKCl7aWYoIXRoaXMucSl7dmFyIHQ9dGhpcy52YWx1ZV8ubGVuZ3RoO3QmJnRoaXMuaXNNdWx0aXBsZT90aGlzLmRlc2VsZWN0KHQtMSk6dGhpcy5jbGVhcigpfX0sb25LZXlEb3duRW50ZXI6ZnVuY3Rpb24odCl7aWYodGhpcy5xfHx+dGhpcy5tYXJrZWQpe3QucHJldmVudERlZmF1bHQoKTt2YXIgZT10aGlzLmZpbHRlcmVkW3RoaXMubWFya2VkXTt0aGlzLnNlbGVjdChlfHx0aGlzLm9mUGhyYXNlKHRoaXMucSksIWUpfX0sb25LZXlEb3duOmZ1bmN0aW9uKHQpe3RoaXMudGFnZ2luZyYmdGhpcy5xJiZ0aGlzLnRhZ0tleXMuaW5jbHVkZXModC53aGljaHx8dC5rZXlDb2RlfHwwKSYmKCF+dGhpcy5tYXJrZWR8fHRoaXMuZmlsdGVyZWRbdGhpcy5tYXJrZWRdLmxhYmVsIT09dGhpcy5xKSYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuc2VsZWN0KHRoaXMub2ZQaHJhc2UodGhpcy5xKSkpfSxvbkNoYW5nZTpmdW5jdGlvbigpeyhJKHRoaXMuY2xvc2VPblNlbGVjdCk/dGhpcy5jbG9zZU9uU2VsZWN0OiF0aGlzLmlzTXVsdGlwbGV8fHRoaXMuaXNEeW5hbWljKSYmdGhpcy5jbG9zZSgpLEkodGhpcy5jbGVhck9uU2VsZWN0KSYmIXRoaXMuY2xlYXJPblNlbGVjdHx8KHRoaXMucT1cIlwiKSx0aGlzLiRlbWl0KFwiY2hhbmdlXCIsdGhpcy5pc011bHRpcGxlP3B0KHRoaXMudmFsdWVfKTp0aGlzLnZhbHVlX1swXSl9fX07ZnVuY3Rpb24gbHQoKXtPYmplY3QuYXNzaWduLmFwcGx5KE9iamVjdCxbdGhpc10uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKX1mdW5jdGlvbiBwdCh0KXtyZXR1cm4gdD1kKHQpLHQucmF3PXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKSx0fXZhciBodCx2dD1mdCxkdD0obihcIjNjYmFcIiksVyh2dCxpLG8sITEsbnVsbCxudWxsLG51bGwpKSx5dD1kdC5leHBvcnRzLGJ0PW4oXCI5MjI0XCIpLGd0PWh0PXt2ZXJzaW9uOmJ0W1wiYVwiXSxpbnN0YWxsOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPWUubmFtZSxyPXZvaWQgMD09PW4/XCJ2U2VsZWN0XCI6bixpPWUubWl4aW4sbz12b2lkIDA9PT1pP3t9Omk7dC5jb21wb25lbnQocix7bWl4aW5zOlt5dCxvXX0pfSx2U2VsZWN0Onl0LHZTZWxlY3RMYXlvdXQ6dXQsdlNlbGVjdE9wdGlvbjpYLHZTZWxlY3RTZWxlY3RlZDpldH07XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdy5WdWUmJih3aW5kb3cuVnVlU2VsZWN0PWh0KSxuLmQoZSxcInZTZWxlY3RcIiwoZnVuY3Rpb24oKXtyZXR1cm4geXR9KSksbi5kKGUsXCJ2U2VsZWN0TGF5b3V0XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV0fSkpLG4uZChlLFwidlNlbGVjdE9wdGlvblwiLChmdW5jdGlvbigpe3JldHVybiBYfSkpLG4uZChlLFwidlNlbGVjdFNlbGVjdGVkXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGV0fSkpO2VbXCJkZWZhdWx0XCJdPWd0fSxmZGVmOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPVwiXFx0XFxuXFx2XFxmXFxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXFx1MjAyOFxcdTIwMjlcXHVmZWZmXCJ9fSl9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12dWUtc2VsZWN0LnVtZC5taW4uanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@desislavsd/vue-select/dist/vue-select.umd.min.js\n");
/***/ }),
/***/ "./node_modules/@mathieustan/vue-datepicker/dist/vue-datepicker.esm.js":
/*!*****************************************************************************!*\
!*** ./node_modules/@mathieustan/vue-datepicker/dist/vue-datepicker.esm.js ***!
\*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ VueDatePicker: () => (/* binding */ Me),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! body-scroll-lock */ \"./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js\");\n/* harmony import */ var body_scroll_lock__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_1__);\n/*!\n * Vue-datepicker v0.2.11\n * (c) 2019-2020 Mathieu Stanowski\n */\nvar a=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},o={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekStart:0,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\".concat(t).concat(e[(n-20)%10]||e[n]||e[0],\"]\")},buttonValidate:\"Ok\",buttonCancel:\"Cancel\",rangeHeaderText:\"From %d To %d\"},s={name:\"fr\",weekdays:\"Dimanche_Lundi_Mardi_Mercredi_Jeudi_Vendredi_Samedi\".split(\"_\"),months:\"Janvier_Février_Mars_Avril_Mai_Juin_Juillet_Août_Septembre_Octobre_Novembre_Décembre\".split(\"_\"),weekStart:1,weekdaysShort:\"Dim_Lun_Mar_Mer_Jeu_Ven_Sam\".split(\"_\"),monthsShort:\"Janv_Févr_Mars_Avr_Mai_Juin_Juil_Août_Sept_Oct_Nov_Déc\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Je_Ve_Sa\".split(\"_\"),ordinal:function(t){return t},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},buttonValidate:\"Ok\",buttonCancel:\"Annuler\",rangeHeaderText:\"Du %d Au %d\"},c={name:\"es\",monthsShort:\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\"),weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),months:\"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre\".split(\"_\"),weekStart:1,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},ordinal:function(t){return\"\".concat(t,\"º\")},buttonValidate:\"Ok\",buttonCancel:\"Anular\",rangeHeaderText:\"Del %d Al %d\"},l={name:\"de\",weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),months:\"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.\".split(\"_\"),ordinal:function(t){return\"\".concat(t,\".\")},weekStart:1,formats:{LTS:\"HH:mm:ss\",LT:\"HH:mm\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},buttonValidate:\"Ok\",buttonCancel:\"Abbrechen\",rangeHeaderText:\"Vom %d Bis %d\"},u={name:\"he\",weekdays:\"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת\".split(\"_\"),weekdaysShort:\"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳\".split(\"_\"),weekdaysMin:\"א׳_ב׳_ג׳_ד׳_ה׳_ו_ש׳\".split(\"_\"),months:\"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר\".split(\"_\"),monthsShort:\"ינו_פבר_מרץ_אפר_מאי_יונ_יול_אוג_ספט_אוק_נוב_דצמ\".split(\"_\"),ordinal:function(t){return t},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [ב]MMMM YYYY\",LLL:\"D [ב]MMMM YYYY HH:mm\",LLLL:\"dddd, D [ב]MMMM YYYY HH:mm\",l:\"D/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},buttonValidate:\"אישור\",buttonCancel:\"ביטול\",rangeHeaderText:\"מתאריך %d עד תאריך %d\"},d={name:\"ru\",weekdays:\"Воскресенье_Понедельник_Вторник_Среда_Четверг_Пятница_Суббота\".split(\"_\"),weekdaysShort:\"Вс_Пн_Вт_Ср_Чт_Пт_Сб\".split(\"_\"),weekdaysMin:\"Вс_Пн_Вт_Ср_Чт_Пт_Сб\".split(\"_\"),months:\"Январь_Февраль_Март_Апрель_Май_Июнь_Июль_Август_Сентябрь_Октябрь_Ноябрь_Декабрь\".split(\"_\"),monthsShort:\"Янв_Фев_Мар_Апр_Май_Июн_Июл_Авг_Сен_Окт_Ноя_Дек\".split(\"_\"),weekStart:1,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},ordinal:function(t){return t},buttonValidate:\"Ок\",buttonCancel:\"Отмена\",rangeHeaderText:\"От %d До %d\"},h={name:\"sv\",weekdays:\"Söndag_Måndag_Tisdag_Onsdag_Torsdag_Fredag_Lördag\".split(\"_\"),weekdaysShort:\"Sön_Mån_Tis_Ons_Tor_Fre_Lör\".split(\"_\"),weekdaysMin:\"Sö_Må_Ti_On_To_Fr_Lö\".split(\"_\"),months:\"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekStart:0,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\".concat(t).concat(e[(n-20)%10]||e[n]||e[0],\"]\")},buttonValidate:\"Ok\",buttonCancel:\"Avbryt\",rangeHeaderText:\"Från %d till %d\"},p=Object.freeze({__proto__:null,fr:s,en:o,es:c,de:l,he:u,ru:d,sv:h}),f=[\"name\",\"weekdays\",\"weekdaysShort\",\"weekdaysMin\",\"weekStart\",\"months\",\"monthsShort\",\"ordinal\",\"formats\",\"buttonCancel\",\"buttonValidate\",\"rangeHeaderText\"],m={date:\"DD MMMM YYYY\",month:\"MMMM YYYY\",quarter:\"YYYY-[Q]Q\",year:\"YYYY\",range:\"DD MMMM YYYY\"},v={date:\"YYYY-MM-DD\",month:\"YYYY-MM\",quarter:\"YYYY-Q\",year:\"YYYY\",range:\"YYYY-MM-DD\"},y={date:\"dddd DD MMMM\",month:\"MMMM\",quarter:\"[Q]Q\",year:\"YYYY\",range:\"DD MMMM YYYY\"},g=1900,b=3e3,D=\"date\",_=\"month\",k=\"quarter\",O=\"year\",M=/(%d)+/,w=Object.freeze({enter:13,tab:9,delete:46,esc:27,space:32,up:38,down:40,left:37,right:39,end:35,home:36,del:46,backspace:8,insert:45,pageup:33,pagedown:34});function Y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function S(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?Y(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Y(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var x=vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({name:\"Localable\",props:{locale:{type:Object,default:function(){return{lang:void 0}}}},computed:{currentLocale:function(){var t=this.locale.lang;return S(S({},this.locale),{},{lang:this.getLocale(t)})}},methods:{getDefaultLang:function(){return(this.$vuedatepicker&&this.$vuedatepicker.lang||window.navigator.userLanguage||window.navigator.language||\"en\").substr(0,2)},isValidLocale:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=Object.keys(t);return e.length>0&&e.every((function(t){return f.includes(t)}))},getLocale:function(t){return this.isValidLocale(t)?t:p[t]||this.getLocale(this.getDefaultLang())}}}),C=vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({name:\"Mobile\",props:{mobileBreakpoint:{type:[Number,String],default:576,validator:function(t){return!isNaN(Number(t))}}},data:function(){return{width:0,mobile:!1,resizeTimeout:void 0}},computed:{isMobile:function(){return this.mobile}},created:function(){var t=this;window&&(window.addEventListener(\"resize\",this.onResize,{passive:!0}),this.$on(\"hook:destroyed\",(function(){window.removeEventListener(\"resize\",t.onResize,{passive:!0})})),this.update())},methods:{onResize:function(){clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(this.update,200)},update:function(){var t=this.getClientWidth();this.width=t,this.mobile=t<parseInt(this.mobileBreakpoint,10)},getClientWidth:function(){return\"undefined\"==typeof document?0:Math.max(document.documentElement.clientWidth,window.innerWidth||0)}}});\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof __webpack_require__.g?__webpack_require__.g:\"undefined\"!=typeof self&&self;function $(t,e){return t(e={exports:{}},e.exports),e.exports}var L=$((function(t){function e(n){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?t.exports=e=function(t){return typeof t}:t.exports=e=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},e(n)}t.exports=e})),j=[\"click\"],P=[],T={instances:P,bind:E,update:function(t,e){JSON.stringify(e.value)!==JSON.stringify(e.oldValue)&&E(t,e)},unbind:A};function E(t,e){var n=e.value;A(t);var r=n,i=\"function\"==typeof r,a=\"object\"===L(r);if((i||a)&&!(!1===r.isActive)){var o=function(t){var e=t.el,n=t.handler;return{el:e,eventHandlers:j.map((function(t){return{event:t,handler:function(t){return function(t){var e=t.event,n=t.el,r=t.handler,i=e.path||(e.composedPath?e.composedPath():void 0);if(i?i.indexOf(n)<0:!n.contains(e.target))return r(e,n)}({event:t,el:e,handler:n})}}}))}}({el:t,handler:i?r:r.handler});o.eventHandlers.forEach((function(t){var e=t.event,n=t.handler;return setTimeout((function(){return document.addEventListener(e,n,!1)}),0)})),P.push(o)}}function A(t){var e=P.findIndex((function(e){return e.el===t}));-1!==e&&(P[e].eventHandlers.forEach((function(t){var e=t.event,n=t.handler;return document.removeEventListener(e,n,!1)})),P.splice(e,1))}var H={model:{prop:\"value\",event:\"input\"},props:{value:{type:Boolean,required:!1}},data:function(){return{isActive:!1}},watch:{value:{handler:function(t){this.isActive=t},immediate:!0},isActive:function(t){t!==this.value&&this.$emit(\"input\",t)}}};function N(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=function i(a){n(a),t.removeEventListener(e,i,r)};t.addEventListener(e,i,r)}function B(t){var e=L(t);return\"boolean\"===e||\"string\"===e||t.nodeType===Node.ELEMENT_NODE}function F(t){if(null!=t&&\"\"!==t)return isNaN(+t)?String(t):\"\".concat(Number(t),\"px\")}function I(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"default\",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return t.$scopedSlots[e]?t.$scopedSlots[e]&&t.$scopedSlots[e](n):!t.$slots[e]||n&&!r?void 0:t.$slots[e]}function V(t){if(!t||t.nodeType!==Node.ELEMENT_NODE)return 0;var e=+window.getComputedStyle(t).getPropertyValue(\"z-index\");return e||V(t.parentNode)}var z={mixins:[H],props:{activator:{default:void 0,validator:function(t){return[\"string\",\"object\"].includes(L(t))}},disabled:{type:Boolean,default:!1}},data:function(){return{activatorElement:void 0,activatorNode:[]}},watch:{activator:\"resetActivator\"},mounted:function(){var t,e,n,r=(e=\"activator\",n=!0,(t=this).$slots[e]&&t.$scopedSlots[e]&&t.$scopedSlots[e].name?n?\"v-slot\":\"scoped\":t.$slots[e]?\"normal\":t.$scopedSlots[e]?\"scoped\":void 0);r&&[\"v-slot\",\"normal\"].includes(r)&&console.error('The activator slot must be bound, try \\'<template v-slot:activator=\"{ on }\"><button v-on=\"on\">\\'',this),this.getActivator()},methods:{resetActivator:function(){this.activatorElement=void 0,this.getActivator()},genActivator:function(){var t=I(this,\"activator\",Object.assign(this.getValueProxy(),{attrs:{role:\"button\",\"aria-haspopup\":!0,\"aria-expanded\":String(this.isActive)}}))||[];return this.activatorNode=t,t},getActivator:function(t){if(this.activatorElement)return this.activatorElement;var e;if(this.activator){var n=document;e=\"string\"==typeof this.activator?n.querySelector(this.activator):this.activator.$el?this.activator.$el:this.activator}else t?e=t.currentTarget||t.target:this.activatorNode.length&&(e=this.activatorNode[0].elm);return this.activatorElement=e,this.activatorElement},getContentSlot:function(){return I(this,\"default\",this.getValueProxy(),!0)},getValueProxy:function(){var t=this;return{get value(){return t.isActive},set value(e){t.isActive=e}}}}};var W=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r};var q=function(t){if(Array.isArray(t))return W(t)};var R=function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)};var J=function(t,e){if(t){if(\"string\"==typeof t)return W(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?W(t,e):void 0}};var X=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")};var Q=function(t){return q(t)||R(t)||J(t)||X()};function U(t,e){if(t){var n=function(t){var e=t.getBoundingClientRect();return{top:Math.round(e.top),left:Math.round(e.left),bottom:Math.round(e.bottom),right:Math.round(e.right),width:Math.round(e.width),height:Math.round(e.height)}}(t);if(!1!==e){var r=window.getComputedStyle(t);n.left=parseInt(r.marginLeft||0),n.top=parseInt(r.marginTop||0)}return n}}function Z(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function G(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?Z(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Z(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var K={name:\"VDMenu\",mixins:[z,{name:\"Detachable\",mixins:[{name:\"Bootable\",data:function(){return{isBooted:!1}},computed:{hasContent:function(){return this.isBooted||this.isActive}},watch:{isActive:function(){this.isBooted=!0}},methods:{showLazyContent:function(t){return this.hasContent&&t?t():[this.$createElement()]}}}],props:{attach:{validator:B,default:!1},contentClass:{type:String,default:\"\"}},data:function(){return{activatorNode:void 0,hasDetached:!1}},watch:{attach:function(){this.hasDetached=!1,this.initDetach()},hasContent:function(){this.$nextTick(this.initDetach)}},beforeMount:function(){var t=this;this.$nextTick((function(){t.activatorNode&&(Array.isArray(t.activatorNode)?t.activatorNode:[t.activatorNode]).forEach((function(e){if(e.elm&&t.$el.parentNode){var n=t.$el===t.$el.parentNode.firstChild?t.$el:t.$el.nextSibling;t.$el.parentNode.insertBefore(e.elm,n)}}))}))},mounted:function(){this.hasContent&&this.initDetach()},deactivated:function(){this.isActive=!1},beforeDestroy:function(){try{if(this.$refs.content&&this.$refs.content.parentNode&&this.$refs.content.parentNode.removeChild(this.$refs.content),this.activatorNode)(Array.isArray(this.activatorNode)?this.activatorNode:[this.activatorNode]).forEach((function(t){t.elm&&t.elm.parentNode&&t.elm.parentNode.removeChild(t.elm)}))}catch(t){console.error(t)}},methods:{initDetach:function(){var t;this._isDestroyed||!this.$refs.content||this.hasDetached||\"\"===this.attach||!0===this.attach||((t=!1===this.attach?document.querySelector(\"#app\")||document.querySelector(\"body\"):\"string\"==typeof this.attach?document.querySelector(this.attach):this.attach)?(t.appendChild(this.$refs.content),this.hasDetached=!0):console.error(\"Unable to locate target '\".concat(this.attach,\"'\"),this))}}},{name:\"DynamicPosition\",data:function(){return{activatorFixed:!1,dimensions:{activator:{top:0,left:0,bottom:0,right:0,width:0,height:0,offsetTop:0,scrollHeight:0,offsetLeft:0},content:{top:0,left:0,bottom:0,right:0,width:0,height:0,offsetTop:0,scrollHeight:0}},isContentActive:!1,pageWidth:0,pageYOffset:0}},computed:{isAttached:function(){return!1!==this.attach},computedLeft:function(){var t=this.dimensions,e=t.activator,n=t.content,r=(this.isAttached?e.offsetLeft:e.left)||0;return this.rtl?e.right-n.width:r},computedTop:function(){var t=this.dimensions.activator,e=t.height;return((this.isAttached?t.offsetTop:t.top+this.pageYOffset)||0)+e},hasActivator:function(){return Boolean(this.$slots.activator)||Boolean(this.$scopedSlots.activator)||Boolean(this.activator)}},watch:{disabled:function(t){t&&this.callDeactivate()},isActive:function(t){this.disabled||(t?this.callActivate():this.callDeactivate())}},methods:{activate:function(){},deactivate:function(){},callActivate:function(){this.activate()},callDeactivate:function(){this.isContentActive=!1,this.deactivate()},calcLeft:function(t){return F(this.isAttached?this.computedLeft:this.calcXOverflow(this.computedLeft,t))},calcTop:function(){return F(this.isAttached?this.computedTop:this.calcYOverflow(this.computedTop))},calcXOverflow:function(t,e){var n=t+e-this.pageWidth+12;return(t=(!this.left||this.right)&&n>0?Math.max(t-n,0):Math.max(t,12))+(window.pageXOffset||document.documentElement.scrollLeft)},calcYOverflow:function(t){var e=this.pageYOffset+(window.innerHeight||document.documentElement.clientHeight),n=this.dimensions,r=n.activator,i=(n.content||{}).height,a=e<t+i;return a&&r.top>i?t=this.pageYOffset+(r.top-i):a&&!this.allowOverflow?t=e-i-12:t<this.pageYOffset&&!this.allowOverflow&&(t=this.pageYOffset+12),t<12?12:t},detectOrigin:function(t,e){var n=parseInt(t.split(\"px\")[0]),r=parseInt(e.split(\"px\")[0]),i=this.dimensions.activator,a=[];return a.push(i.top<r-this.pageYOffset?\"top\":\"bottom\"),a.push(i.left===n?\"left\":\"right\"),this.origin||a.join(\" \")},checkForPageYOffset:function(){this.pageYOffset=this.activatorFixed?0:window.pageYOffset||document.documentElement.scrollTop},checkActivatorFixed:function(){if(!this.isAttached){var t=this.getActivator();this.activatorFixed=function(t){for(var e=[\"fixed\",\"sticky\"],n=t;n;){if(e.includes(window.getComputedStyle(n).position))return!0;n=n.offsetParent}return!1}(t)}},sneakPeek:function(t){var e=this;requestAnimationFrame((function(){var n=e.$refs.content;n&&\"none\"===n.style.display?(n.style.display=\"inline-block\",t(),n.style.display=\"none\"):t()}))},startTransition:function(){var t=this;return new Promise((function(e){return requestAnimationFrame((function(){t.isContentActive=t.isActive,e()}))}))},updateDimensions:function(){var t=this;this.checkActivatorFixed(),this.checkForPageYOffset(),this.pageWidth=window.innerWidth||document.documentElement.clientWidth;var e={},n=this.getActivator();n&&(e.activator=U(n,this.attach),e.activator.offsetLeft=n.offsetLeft,this.isAttached?e.activator.offsetTop=n.offsetTop:e.activator.offsetTop=0,this.sneakPeek((function(){e.content=U(t.$refs.content,t.attach),t.dimensions=e})))}}},{data:function(){return{stackMinZIndex:1e3}},computed:{activeZIndex:function(){var t=this.$refs.content,e=this.isActive?this.getMaxZIndex()+2:V(t);return parseInt(e)}},methods:{getMaxZIndex:function(){var t=this.$el,e=Q(document.getElementsByClassName(\"menu__content--active\")),n=[this.stackMinZIndex,V(t)].concat(Q(e.map((function(t){return V(t)}))));return Math.max.apply(Math,Q(n))}}}],directives:{Resize:{inserted:function(t,e){var n=e.value,r=e.options||{passive:!0},i=!1,a=function(){i||(i=!0,window.requestAnimationFrame(n),i=!1)};window.addEventListener(\"resize\",a,r),Object.assign(t,{onResize:{resizeCallback:a,options:r,running:i}}),e.modifiers&&e.modifiers.quiet||a()},unbind:function(t){if(t.onResize){var e=t.onResize,n=e.resizeCallback,r=e.options;window.removeEventListener(\"resize\",n,r),delete t.onResize}}}},props:{transition:{type:String,default:\"menu-transition\"},origin:{type:String,default:void 0},allowOverflow:{type:Boolean,default:!1},rtl:{type:Boolean,default:!1},minWidth:{type:[Number,String],default:void 0},maxWidth:{type:[Number,String],default:void 0},maxHeight:{type:[Number,String],default:\"auto\"},zIndex:{type:Number,default:void 0},bottomSheet:{type:Boolean,default:!1}},data:function(){return{resizeTimeout:0,defaultOffset:8}},computed:{styles:function(){return{maxHeight:this.calculedMenuMaxHeight,minWidth:this.calculedMenuWidth,maxWidth:this.calculedMaxWidth,top:this.calculedTop,left:this.calculedLeft,transformOrigin:this.detectedOrigin,zIndex:this.zIndex||this.activeZIndex}},calculedMenuMaxHeight:function(){return F(this.maxHeight)},calculedMaxWidth:function(){return F(this.maxWidth)},calculedMenuWidth:function(){if(this.minWidth)return F(this.minWidth);var t=Math.min(this.dimensions.activator.width,Math.max(this.pageWidth-24,0)),e=(parseInt(this.calculedMaxWidth)===1*this.calculedMaxWidth?this.calculedMaxWidth:parseInt((this.calculedMaxWidth||\"\").split(\"px\")[0]))||t;return F(Math.min(e,t))},calculedLeft:function(){var t=Math.max(this.dimensions.content.width,parseFloat(this.calculedMenuWidth));return this.calcLeft(t)||\"0\"},calculedTop:function(){return this.calcTop()||\"0\"},detectedOrigin:function(){return this.detectOrigin(this.calculedLeft,this.calculedTop)}},mounted:function(){this.isActive&&this.callActivate()},methods:{activate:function(){var t=this;this.updateDimensions(),requestAnimationFrame((function(){t.startTransition().then((function(){t.$emit(\"transitionEnd\")}))}))},callDeactivate:function(){this.isContentActive=!1},onResize:function(){this.isActive&&(this.$refs.content.offsetWidth,this.updateDimensions(),clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(this.updateDimensions,100))},genTransition:function(){return this.$createElement(\"transition\",{props:{name:this.transition}},[this.genContent()])},genContent:function(){var t={attrs:{role:this.$attrs.role||\"menu\"},staticClass:\"vd-menu__content\",class:G(G({},this.contentClass&&a({},this.contentClass,!0)),{},{\"vd-menu__content--active\":this.isActive,\"vd-menu__content--fixed\":this.activatorFixed,\"vd-menu__content--bottomsheet\":this.bottomSheet}),style:this.styles,directives:[{name:\"show\",value:this.isContentActive}],ref:\"content\",on:{click:function(t){return t.stopPropagation()}}};return this.$createElement(\"div\",t,[this.hasContent&&this.getContentSlot()])}},render:function(t){var e=this;return t(\"div\",{staticClass:\"vd-menu\",class:{\"menu--attached\":this.isAttached},directives:[{arg:\"500\",name:\"resize\",value:this.onResize}]},[!this.activator&&this.genActivator(),this.showLazyContent((function(){return[e.genTransition()]}))])}};function tt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function et(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?tt(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):tt(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function nt(t){return Boolean(t)&&Boolean(t.match(/^(#|(rgb|hsl)a?\\()/))}var rt={props:{color:{type:String}},methods:{setBackgroundColor:function(t,e){return nt(t)?e?et(et({},e),{},{style:et(et({},e.style),{},{\"background-color\":\"\".concat(t),\"border-color\":\"\".concat(t)})}):{\"background-color\":\"\".concat(t),\"border-color\":\"\".concat(t)}:e},setTextColor:function(t,e){return nt(t)?e?et(et({},e),{},{style:et(et({},e.style),{},{color:\"\".concat(t)})}):{color:\"\".concat(t)}:e}}},it={close:{path:\"M193.94 256L296.5 153.44l21.15-21.15c3.12-3.12 3.12-8.19 0-11.31l-22.63-22.63c-3.12-3.12-8.19-3.12-11.31 0L160 222.06 36.29 98.34c-3.12-3.12-8.19-3.12-11.31 0L2.34 120.97c-3.12 3.12-3.12 8.19 0 11.31L126.06 256 2.34 379.71c-3.12 3.12-3.12 8.19 0 11.31l22.63 22.63c3.12 3.12 8.19 3.12 11.31 0L160 289.94 262.56 392.5l21.15 21.15c3.12 3.12 8.19 3.12 11.31 0l22.63-22.63c3.12-3.12 3.12-8.19 0-11.31L193.94 256z\",viewBox:\"0 0 320 512\"},calendarAlt:{path:\"M400 64h-48V12c0-6.6-5.4-12-12-12h-8c-6.6 0-12 5.4-12 12v52H128V12c0-6.6-5.4-12-12-12h-8c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM48 96h352c8.8 0 16 7.2 16 16v48H32v-48c0-8.8 7.2-16 16-16zm352 384H48c-8.8 0-16-7.2-16-16V192h384v272c0 8.8-7.2 16-16 16zM148 320h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm96 0h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm96 0h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-96 96h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-96 0h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm192 0h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12z\",viewBox:\"0 0 448 512\"},chevronLeft:{path:\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\",viewBox:\"0 0 24 24\"},chevronRight:{path:\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\",viewBox:\"0 0 24 24\"}};function at(){for(var t=arguments,e=arguments.length,n=new Array(e),i=0;i<e;i++)n[i]=t[i];return vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({mixins:n})}function ot(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function st(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?ot(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ot(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var ct=at(rt).extend({name:\"VDIcon\",inheritAttrs:!1,props:{size:{type:[Number,String]},disabled:{type:Boolean,default:!1}},computed:{hasClickListener:function(){return Boolean(this.$listeners.click)}},methods:{getIconName:function(){return this.$slots.default?this.$slots.default[0].text&&this.$slots.default[0].text.trim():\"\"},getIcon:function(){var t=this.getIconName();return it[t]||t},getDefaultData:function(){return{staticClass:\"vd-icon\",class:{\"vd-icon--disabled\":this.disabled,\"vd-icon--link\":this.hasClickListener},attrs:st({\"aria-hidden\":!this.hasClickListener,disabled:this.hasClickListener&&this.disabled,type:this.hasClickListener?\"button\":void 0},this.$attrs),on:this.$listeners}},renderSvgIcon:function(t,e){var n=this.hasClickListener?\"button\":\"span\",r=F(this.size),i=st(st({},this.getDefaultData()),{},{style:st({},r&&{fontSize:r,height:r,width:r})}),a={attrs:{xmlns:\"http://www.w3.org/2000/svg\",viewBox:t.viewBox,height:this.size||16,width:this.size||16,role:\"img\",\"aria-hidden\":!0,\"data-icon\":this.getIconName()}};return e(n,this.setTextColor(this.color,i),[e(\"svg\",a,[e(\"path\",{attrs:{fill:\"currentColor\",d:t.path}})])])}},render:function(t){var e=this.getIcon();return this.renderSvgIcon(e,t)}}),lt=at(rt).extend({name:\"VDPickerCustomInput\",inject:[\"VDPicker\"],props:{clearable:{type:Boolean},closeOnClickOutside:{type:Boolean,default:!0},color:{type:String},date:{type:[Object,Date,String]},disabled:{type:Boolean,default:!1},id:{type:String},isDateDefined:{type:Boolean,default:!1},isMenuActive:{type:Boolean,default:!1},name:{type:String},noCalendarIcon:{type:Boolean,default:!1},placeholder:{type:String},tabindex:{type:[String,Number]}},computed:{classes:function(){return{\"vd-picker__input--disabled\":this.disabled,\"vd-picker__input--is-active\":this.isMenuActive,\"vd-picker__input--no-date\":!this.isDateDefined}},computedColor:function(){return this.disabled?\"\":this.isMenuActive?this.color:\"\"},isDirty:function(){return this.isDateDefined}},methods:{onKeyDown:function(t){this.$emit(\"keydown\",t)},clearableCallback:function(){this.$emit(\"clearDate\")},genCalendarIcon:function(){var t=[];this.VDPicker.$slots[\"input-icon\"]?t.push(this.VDPicker.$slots[\"input-icon\"]):t.push(this.$createElement(ct,{props:{disabled:this.disabled}},[\"calendarAlt\"]));var e=this.$createElement(\"div\",{staticClass:\"vd-picker__input-icon__wrapper\"},t);return this.$createElement(\"div\",{staticClass:\"vd-picker__input-icon\"},[e])},genInput:function(){return this.$createElement(\"input\",{attrs:{id:this.id,name:this.name,disabled:this.disabled,\"aria-disabled\":this.disabled,placeholder:this.placeholder,tabindex:this.tabindex,role:\"text\",type:\"text\",readonly:!0,\"aria-readonly\":!0},domProps:{value:this.date},on:{keydown:this.onKeyDown},ref:\"input\"})},genClearIcon:function(){var t=this,e=this.isDirty?\"close\":\"\",n={attrs:{\"aria-label\":\"clearable icon\",color:this.color,disabled:this.disabled},on:{click:function(e){e.preventDefault(),e.stopPropagation(),t.clearableCallback()},mouseup:function(t){t.preventDefault(),t.stopPropagation()}}},r=this.$createElement(\"div\",{staticClass:\"vd-picker__input-clear__icon\"},[this.$createElement(ct,n,e)]);return this.$createElement(\"div\",{staticClass:\"vd-picker__input-clear\"},[r])}},render:function(t){return t(\"div\",this.setTextColor(this.computedColor,{staticClass:\"vd-picker__input\",class:this.classes}),[!this.noCalendarIcon&&this.genCalendarIcon(),this.genInput(),this.clearable&&this.genClearIcon()])}}),ut=at(rt,H).extend({name:\"VDOverlay\",props:{absolute:{type:Boolean,default:!1},color:{type:String,default:\"rgba(93, 106, 137)\"},opacity:{type:[Number,String],default:.84},value:{default:!0},zIndex:{type:[Number,String],default:void 0}},computed:{classes:function(){return{\"vd-overlay--absolute\":this.absolute,\"vd-overlay--active\":this.isActive}},styles:function(){return{zIndex:this.zIndex}},computedOpacity:function(){return Number(this.isActive?this.opacity:0)},overlayInner:function(){var t=this.setBackgroundColor(this.color,{staticClass:\"vd-overlay__inner\",style:{opacity:this.computedOpacity}});return this.$createElement(\"div\",t)}},methods:{genContent:function(){return this.$createElement(\"div\",{staticClass:\"vd-overlay__content\"},this.$slots.default)}},render:function(t){var e=[this.overlayInner];return this.isActive&&e.push(this.genContent()),t(\"div\",{staticClass:\"vd-overlay\",class:this.classes,style:this.styles},e)}}),dt=vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(ut),ht=vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend({name:\"Overlayable\",props:{overlayColor:{type:String,default:void 0},overlayOpacity:{type:[Number,String],default:void 0}},data:function(){return{overlay:void 0}},beforeDestroy:function(){this.removeOverlay()},methods:{scrollListener:function(t){if(\"keydown\"===t.type){if([\"INPUT\",\"TEXTAREA\",\"SELECT\"].includes(t.target.tagName)||t.target.isContentEditable)return;var e=[w.up,w.pageup],n=[w.down,w.pagedown];if(e.includes(t.keyCode))t.deltaY=-1;else{if(!n.includes(t.keyCode))return;t.deltaY=1}}(t.target===this.overlay||\"keydown\"!==t.type&&t.target===document.body||this.checkPath(t))&&t.preventDefault()},hasScrollbar:function(t){if(!t||t.nodeType!==Node.ELEMENT_NODE)return!1;var e=window.getComputedStyle(t);return[\"auto\",\"scroll\"].includes(e.overflowY)&&t.scrollHeight>t.clientHeight},shouldScroll:function(t,e){return 0===t.scrollTop&&e<0||t.scrollTop+t.clientHeight===t.scrollHeight&&e>0},isInside:function(t,e){return t===e||null!==t&&t!==document.body&&this.isInside(t.parentNode,e)},checkPath:function(t){var e=t.path||this.composedPath(t),n=t.deltaY;if(\"keydown\"===t.type&&e[0]===document.body){var r=this.$refs.dialog,i=window.getSelection()&&window.getSelection().anchorNode;return!(r&&this.hasScrollbar(r)&&this.isInside(i,r))||this.shouldScroll(r,n)}for(var a=0;a<e.length;a++){var o=e[a];if(o===document)return!0;if(o===document.documentElement)return!0;if(o===this.$refs.content)return!0;if(this.hasScrollbar(o))return this.shouldScroll(o,n)}return!0},composedPath:function(t){if(t.composedPath)return t.composedPath();for(var e=[],n=t.target;n;){if(e.push(n),\"HTML\"===n.tagName)return e.push(document),e.push(window),e;n=n.parentElement}return e},hideScroll:function(){window.addEventListener(\"wheel\",this.scrollListener,{passive:!1}),window.addEventListener(\"keydown\",this.scrollListener)},showScroll:function(){document.documentElement.classList.remove(\"overflow-y-hidden\"),window.removeEventListener(\"wheel\",this.scrollListener),window.removeEventListener(\"keydown\",this.scrollListener)},createOverlay:function(){var t=new dt({propsData:{absolute:this.absolute,value:!1,color:this.overlayColor,opacity:this.overlayOpacity}});t.$mount();var e=document.querySelector(\"#app\")||document.querySelector(\"body\"),n=this.absolute?this.$el.parentNode:e;n&&n.insertBefore(t.$el,n.firstChild),this.overlay=t},genOverlay:function(){var t=this;return this.hideScroll(),this.overlay||this.createOverlay(),requestAnimationFrame((function(){t.overlay&&(void 0!==t.activeZIndex?t.overlay.zIndex=String(t.activeZIndex-1):t.$el&&(t.overlay.zIndex=V(t.$el)),t.overlay.value=!0)})),!0},removeOverlay:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.overlay&&(N(this.overlay.$el,\"transitionend\",(function(){t.overlay&&t.overlay.$el&&t.overlay.$el.parentNode&&!t.overlay.value&&(t.overlay.$el.parentNode.removeChild(t.overlay.$el),t.overlay.$destroy(),t.overlay=null)})),this.overlay.value=!1),e&&this.showScroll()}}});var pt=function(t){if(Array.isArray(t))return t};var ft=function(t,e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(t){i=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(i)throw a}}return n}};var mt=function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")};var vt=function(t,e){return pt(t)||ft(t,e)||J(t,e)||mt()},yt=$((function(t,e){t.exports=function(t,e,n){var r=e.prototype,i=r.format;n.en.ordinal=function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"},r.format=function(t){var e=this,n=this.$locale(),r=this.$utils(),a=(t||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|gggg|Do|X|x|k{1,2}|S/g,(function(t){switch(t){case\"Q\":return Math.ceil((e.$M+1)/3);case\"Do\":return n.ordinal(e.$D);case\"gggg\":return e.weekYear();case\"wo\":return n.ordinal(e.week(),\"W\");case\"w\":case\"ww\":return r.s(e.week(),\"w\"===t?1:2,\"0\");case\"k\":case\"kk\":return r.s(String(0===e.$H?24:e.$H),\"k\"===t?1:2,\"0\");case\"X\":return Math.floor(e.$d.getTime()/1e3);case\"x\":return e.$d.getTime();default:return t}}));return i.bind(this)(a)}}})),gt=$((function(t,e){t.exports=function(t,e){e.prototype.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)}}})),bt=$((function(t,e){t.exports=function(t,e){e.prototype.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)}}})),Dt=$((function(t,e){t.exports=function(t,e,n){e.prototype.isToday=function(){var t=n();return this.format(\"YYYY-MM-DD\")===t.format(\"YYYY-MM-DD\")}}})),_t=$((function(t,e){var n,r;t.exports=(n=\"month\",r=\"quarter\",function(t,e){var i=e.prototype;i.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var a=i.add;i.add=function(t,e){return t=Number(t),this.$utils().p(e)===r?this.add(3*t,n):a.bind(this)(t,e)};var o=i.startOf;i.startOf=function(t,e){var i=this.$utils(),a=!!i.u(e)||e;if(i.p(t)===r){var s=this.quarter()-1;return a?this.month(3*s).startOf(n).startOf(\"day\"):this.month(3*s+2).endOf(n).endOf(\"day\")}return o.bind(this)(t,e)}})})),kt=$((function(t,e){t.exports=function(t,e,n){var r=(new Date).getTimezoneOffset(),i=e.prototype;n.utc=function(t,n){return new e({date:t,utc:!0,format:n})},i.utc=function(){return n(this.toDate(),{locale:this.$L,utc:!0})},i.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var a=i.parse;i.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),a.call(this,t)};var o=i.init;i.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else o.call(this)};var s=i.utcOffset;i.utcOffset=function(t){var e=this.$utils().u;if(e(t))return this.$u?0:e(this.$offset)?s.call(this):this.$offset;var n,i=Math.abs(t)<=16?60*t:t;return 0!==t?(n=this.local().add(i+r,\"minute\")).$offset=i:n=this.utc(),n};var c=i.format;i.format=function(t){var e=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return c.call(this,e)},i.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+r;return this.$d.valueOf()-6e4*t},i.isUTC=function(){return!!this.$u},i.toISOString=function(){return this.toDate().toISOString()},i.toString=function(){return this.toDate().toUTCString()}}})),Ot=$((function(t,e){t.exports=function(t,e){e.prototype.weekday=function(t){var e=this.$locale().weekStart||0,n=this.$W,r=(n<e?n+7:n)-e;return this.$utils().u(t)?r:this.subtract(r,\"day\").add(t,\"day\")}}})),Mt=$((function(t,e){var n,r;t.exports=(n=\"week\",r=\"year\",function(t,e){var i=e.prototype;i.week=function(t){if(void 0===t&&(t=null),null!==t)return this.add(7*(t-this.week()),\"day\");var e=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var i=this.startOf(r).add(1,r).date(e),a=this.endOf(n);if(i.isBefore(a))return 1}var o=this.startOf(r).date(e).startOf(n).subtract(1,\"millisecond\"),s=this.diff(o,n,!0);return s<0?this.startOf(\"week\").week():Math.ceil(s)},i.weeks=function(t){return void 0===t&&(t=null),this.week(t)}})}));function wt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"date\";return v[t]}function Yt(t,e){var n=t.regexText,r=t.startDate,i=t.endDate,a=n.replace(M,\"\".concat(r).concat(e?\"|\":\"\")).replace(M,\"\".concat(i).concat(e?\"|\":\"\"));return e?a.split(\"|\"):a}function St(t){return 3*t}function xt(t){var e=t.date,n=t.min,r=t.max,i=t.type,a=void 0===i?\"date\":i,o=t.allowedFn,s=e.format(wt(a));return(!o||o(s))&&(!n||$t(s,n,a)||jt(s,n,a))&&(!r||$t(s,r,a)||Lt(s,r,a))}function Ct(t){var e=t.date,n=t.type,r=void 0===n?\"date\":n,i=t.locale;return $t(Et({date:e,locale:i,format:wt(r)}),Et({date:void 0,locale:i,format:wt(r)}),\"quarter\"===r?\"month\":r)}function $t(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"date\";return dayjs__WEBPACK_IMPORTED_MODULE_1___default()(t,wt(n)).isSame(dayjs__WEBPACK_IMPORTED_MODULE_1___default()(e,wt(n)),n)}function Lt(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"day\";if(\"year\"===n)return Boolean(e)&&t<dayjs__WEBPACK_IMPORTED_MODULE_1___default()(e,\"YYYY-MM-DD\").get(n);var r=dayjs__WEBPACK_IMPORTED_MODULE_1___default().isDayjs(t)?t:dayjs__WEBPACK_IMPORTED_MODULE_1___default()(t).startOf(\"day\");return Boolean(e)&&r.isBefore(dayjs__WEBPACK_IMPORTED_MODULE_1___default()(e).startOf(\"day\"),n)}function jt(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"day\";if(\"year\"===n)return Boolean(e)&&t>dayjs__WEBPACK_IMPORTED_MODULE_1___default()(e,\"YYYY-MM-DD\").get(n);var r=dayjs__WEBPACK_IMPORTED_MODULE_1___default().isDayjs(t)?t:dayjs__WEBPACK_IMPORTED_MODULE_1___default()(t).startOf(\"day\");return Boolean(e)&&r.isAfter(dayjs__WEBPACK_IMPORTED_MODULE_1___default()(e).startOf(\"day\"),n)}function Pt(t,e,n){return jt(t,e)&&Lt(t,n)}function Tt(t){var e=t.date,n=t.locale,r=void 0===n?{lang:o}:n,a=t.type;return\"year\"===(void 0===a?\"date\":a)?dayjs__WEBPACK_IMPORTED_MODULE_1___default()(e).utc():dayjs__WEBPACK_IMPORTED_MODULE_1___default()(e).locale(r.lang)}function Et(t){var e=t.date,n=t.locale,r=t.format;return Tt({date:e,locale:n}).format(r)}function At(t){var e=t.year,n=t.month;return Tt({locale:t.locale}).year(e).month(n).startOf(\"month\")}function Ht(t){var e=t.startDate,n=t.endDate,r=t.locale,i=t.interval,a=void 0===i?\"day\":i,o=Tt({date:e,locale:r}),s=Tt({date:n,locale:r}).diff(o,a);return Q(Array(s+1).keys()).map((function(t){return o.add(t,a)}))}function Nt(t){var e=t.headerFormat,n=t.locale,r=t.date,i=t.range,a=t.rangeHeaderText;if(i&&a){var o=Ft({dates:r,locale:n,format:e}).split(\" ~ \"),s=vt(o,2),c=Yt({regexText:a,startDate:s[0],endDate:s[1]},!0),l=vt(c,2),u=l[0],d=l[1];return[u.trim(),d.trim()]}return r?Et({date:r,locale:n,format:e}):\"--\"}function Bt(t){var e=t.date,n=t.type,r=t.locale;if(e)return Et({date:e,locale:r,format:wt(n)})}function Ft(t){var e=t.dates,n=void 0===e?{}:e,r=t.locale,i=t.format,a=n.start,o=n.end;return a||o?!a&&o?\"__ ~ \".concat(Tt({date:o,locale:r}).startOf(\"day\").format(i)):a&&!o?\"\".concat(Tt({date:a,locale:r}).startOf(\"day\").format(i),\" ~ __\"):\"\".concat(Tt({date:a,locale:r}).startOf(\"day\").format(i),\" ~ \").concat(Tt({date:o,locale:r}).startOf(\"day\").format(i)):\"__ ~ __\"}dayjs__WEBPACK_IMPORTED_MODULE_1___default().extend(yt),dayjs__WEBPACK_IMPORTED_MODULE_1___default().extend(gt),dayjs__WEBPACK_IMPORTED_MODULE_1___default().extend(bt),dayjs__WEBPACK_IMPORTED_MODULE_1___default().extend(Dt),dayjs__WEBPACK_IMPORTED_MODULE_1___default().extend(_t),dayjs__WEBPACK_IMPORTED_MODULE_1___default().extend(kt),dayjs__WEBPACK_IMPORTED_MODULE_1___default().extend(Ot),dayjs__WEBPACK_IMPORTED_MODULE_1___default().extend(Mt);var It=at(rt).extend({name:\"VDPickerControls\",props:{pickerDate:{type:Object,required:!0},transitionName:{type:String},color:{type:String},mode:{type:String,default:\"date\"},min:{type:[String,Number,Date]},max:{type:[String,Number,Date]}},computed:{monthFormatted:function(){return this.pickerDate.getMonthFormatted()},yearFormatted:function(){return this.pickerDate.getYearFormatted()},isPreviousDateDisabled:function(){var t=[\"month\",\"quarter\"].includes(this.mode),e=parseInt(this.yearFormatted,10)-1;return Lt(t?e:\"\".concat(this.yearFormatted,\"-\").concat(this.pickerDate.month),this.min,t?\"year\":\"month\")},isNextDateDisabled:function(){var t=[\"month\",\"quarter\"].includes(this.mode),e=parseInt(this.yearFormatted,10)+1;return jt(t?e:\"\".concat(this.yearFormatted,\"-\").concat(this.pickerDate.month+2),this.max,t?\"year\":\"month\")}},methods:{onNavigationClick:function(t){this.$emit(\"on-navigation-click\",t)},genPrevButton:function(){var t=this,e=this.$createElement(ct,\"chevronLeft\");return this.$createElement(\"button\",{staticClass:\"vd-picker__controls-prev\",attrs:{disabled:this.isPreviousDateDisabled,type:\"button\"},on:{click:function(){return t.onNavigationClick(\"prev\")}}},[e])},genNextButton:function(){var t=this,e=this.$createElement(ct,\"chevronRight\");return this.$createElement(\"button\",{staticClass:\"vd-picker__controls-next\",attrs:{disabled:this.isNextDateDisabled,type:\"button\"},on:{click:function(){return t.onNavigationClick(\"next\")}}},[e])},genSelectors:function(){return this.$createElement(\"div\",{staticClass:\"vd-picker__controls-wrapper\"},[\"date\"===this.mode&&this.genMonthSelector(),this.genYearSelector()])},genChildrenSelectors:function(t){var e=this,n=t.value,r=t.key,i=t.type;return this.$createElement(\"div\",this.setTextColor(this.color,{key:r,staticClass:\"vd-picker__controls-label\"}),[this.$createElement(\"button\",{attrs:{type:\"button\"},on:{click:function(){return e.$emit(\"update-mode\",i)}}},[n])])},genMonthSelector:function(){var t=this;return this.$createElement(\"transition-group\",{staticClass:\"vd-picker__controls-month\",props:{name:this.transitionName,tag:\"span\"}},[this.pickerDate.month].map((function(e){return t.genChildrenSelectors({value:t.monthFormatted,key:e,type:\"month\"})})))},genYearSelector:function(){var t=this;return this.$createElement(\"transition-group\",{staticClass:\"vd-picker__controls-year\",class:{\"vd-picker__controls-year--center\":[\"month\",\"quarter\"].includes(this.mode)},props:{name:this.transitionName,tag:\"span\"}},[this.pickerDate.year].map((function(e){return t.genChildrenSelectors({value:t.yearFormatted,key:e,type:\"year\"})})))}},render:function(t){return t(\"div\",{staticClass:\"vd-picker__controls\"},[this.genPrevButton(),this.genSelectors(),this.genNextButton()])}});function Vt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function zt(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?Vt(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Vt(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var Wt=at(rt).extend({name:\"VDPickerHeader\",props:{formattedHeaderYear:{type:String},formattedHeaderDate:{type:[Array,String]},color:{type:String},mode:{type:String},mutableDate:{type:[String,Object]},range:{type:Boolean},transitionName:{type:String},type:{tpye:Boolean}},computed:{classes:function(){return a({\"vd-picker-header--range\":this.range},\"vd-picker-header--\".concat(this.type),this.type)},year:function(){return this.mutableDate?this.formattedHeaderYear:\"-\"},dateFormatted:function(){return this.formattedHeaderDate},isDateVisible:function(){return!this.range&&\"year\"!==this.type}},methods:{genYear:function(){var t=this,e=this.$createElement(\"span\",{staticClass:\"vd-picker-header__year-button\",on:{click:function(){return t.$emit(\"update-mode\",\"year\")}}},[this.year]),n={staticClass:\"vd-picker-header__year\",class:{\"vd-picker-header__year--active\":\"year\"===this.mode}};return this.$createElement(\"div\",n,[e])},genDate:function(){var t=this,e=this.genTransitionGroup({date:this.dateFormatted,isActive:\"year\"!==this.mode,onClick:function(){return t.$emit(\"update-mode\",\"date\")}});return this.$createElement(\"div\",{staticClass:\"vd-picker-header__wrap\"},[e])},genRangeDate:function(){var t=this.genTransitionGroup({date:this.dateFormatted[0],isActive:Boolean(this.mutableDate.start)}),e=this.genTransitionGroup({date:this.dateFormatted[1],isActive:Boolean(this.mutableDate.end)});return this.$createElement(\"div\",{staticClass:\"vd-picker-header__wrap\"},[t,e])},genTransitionGroup:function(t){var e=this,n=t.date,r=t.isActive,i=t.onClick;return this.$createElement(\"transition-group\",{staticClass:\"vd-picker-header__date\",class:{\"vd-picker-header__date--active\":r},props:{name:this.transitionName,tag:\"div\"}},[n].map((function(t){return function(t){return e.$createElement(\"span\",{staticClass:\"vd-picker-header__wrap-button\",key:t,on:zt({},i&&{click:i})},[t])}(t)})))}},render:function(t){return t(\"div\",this.setBackgroundColor(this.color,{staticClass:\"vd-picker-header\",class:this.classes}),[!this.range&&this.genYear(),this.isDateVisible&&this.genDate(),this.range&&this.genRangeDate()])}});function qt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Rt(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?qt(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):qt(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var Jt=at(rt,x).extend({name:\"VDPickerPresets\",props:{rangePresets:{type:Array},mutableDate:{type:Object},minDate:{type:[String,Number,Date]},maxDate:{type:[String,Number,Date]},color:{type:String}},computed:{presetsFormatted:function(){var t=this;if(this.rangePresets)return this.rangePresets.map((function(e){return Rt(Rt({},e),{},{availableDates:(n={dates:e.dates,minDate:t.minDate,maxDate:t.maxDate,locale:t.currentLocale},r=n.dates,a=void 0===r?{}:r,o=n.minDate,s=n.maxDate,c=n.locale,l=a.start,u=a.end,d=o||Tt({locale:c}).year(g),h=s||Tt({locale:c}).year(b),Ht({startDate:l,endDate:u,locale:c}).filter((function(t){return t.isSameOrAfter(d,\"day\")&&t.isSameOrBefore(dayjs__WEBPACK_IMPORTED_MODULE_1___default()(h,\"day\"))})))});var n,r,a,o,s,c,l,u,d,h})).splice(0,6)}},methods:{isPresetSelected:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.availableDates,n=void 0===e?[]:e;return!(0===n.length||!this.mutableDate)&&($t(n[0],this.mutableDate.start)&&$t(n[n.length-1],this.mutableDate.end))},isPresetValid:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.availableDates,n=void 0===e?[]:e;return!!this.mutableDate&&n.length>0},setPresetDates:function(t){var e=t.availableDates;this.isPresetSelected({availableDates:e})||this.$emit(\"update-range\",{start:e[0],end:e[e.length-1]})},genWrapper:function(){return this.$createElement(\"div\",{staticClass:\"vd-picker-presets__wrapper\"},this.presetsFormatted.map(this.genButton))},genButton:function(t,e){var n=this,r=this.$createElement(\"div\",this.setBackgroundColor(this.color,{staticClass:\"vd-picker-preset__effect\"})),i=this.$createElement(\"div\",{staticClass:\"vd-picker-preset__name\",domProps:{innerHTML:t.name}});return this.$createElement(\"button\",{key:e,staticClass:\"vd-picker-preset\",class:{\"vd-picker-preset--selected\":this.isPresetSelected(t),\"vd-picker-preset--disabled\":!this.isPresetValid(t)},attrs:{type:\"button\"},on:{click:function(){return n.setPresetDates(t)}}},[r,i])}},render:function(t){if(this.presetsFormatted)return t(\"div\",{staticClass:\"vd-picker-presets\"},[this.genWrapper()])}});function Xt(t,e){var n=t.changedTouches[0];e.touchendX=n.clientX,e.touchendY=n.clientY,e.end&&e.end(Object.assign(t,e)),function(t){var e=t.touchstartX,n=t.touchendX,r=t.touchstartY,i=t.touchendY;t.offsetX=n-e,t.offsetY=i-r,Math.abs(t.offsetY)<.5*Math.abs(t.offsetX)&&(t.left&&n<e-16&&t.left(t),t.right&&n>e+16&&t.right(t)),Math.abs(t.offsetX)<.5*Math.abs(t.offsetY)&&(t.up&&i<r-16&&t.up(t),t.down&&i>r+16&&t.down(t))}(e)}function Qt(t){var e={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:t.left,right:t.right,up:t.up,down:t.down,start:t.start,move:t.move,end:t.end};return{touchstart:function(t){return function(t,e){var n=t.changedTouches[0];e.touchstartX=n.clientX,e.touchstartY=n.clientY,e.start&&e.start(Object.assign(t,e))}(t,e)},touchend:function(t){return Xt(t,e)},touchmove:function(t){return function(t,e){var n=t.changedTouches[0];e.touchmoveX=n.clientX,e.touchmoveY=n.clientY,e.move&&e.move(Object.assign(t,e))}(t,e)}}}var Ut={inserted:function(t,e,n){var r=e.value,i=r.parent?t.parentElement:t,a=r.options||{passive:!0};if(i){var o=Qt(e.value);i._touchHandlers=Object(i._touchHandlers),i._touchHandlers[n.context._uid]=o,Object.keys(o).forEach((function(t){i.addEventListener(t,o[t],a)}))}},unbind:function(t,e,n){var r=e.value.parent?t.parentElement:t;if(r&&r._touchHandlers){var i=r._touchHandlers[n.context._uid];Object.keys(i).forEach((function(t){r.removeEventListener(t,i[t])})),delete r._touchHandlers[n.context._uid]}}};function Zt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}var Gt=at(rt,x).extend({name:\"VDPickerTableDay\",inject:[\"VDPicker\"],props:{allowedDates:{type:Function},color:{type:String},day:{type:Object,required:!0},maxDate:{type:[String,Number,Date]},minDate:{type:[String,Number,Date]},mutableDate:{type:[String,Object]},range:{type:Boolean},rangeCurrentHoveredDay:{type:String,default:void 0}},computed:{classes:function(){return{\"vd-picker__table-day--selected\":this.isSelected&&!this.isDisabled,\"vd-picker__table-day--between\":this.range&&this.isBetween,\"vd-picker__table-day--in-range\":this.range&&this.isInRange,\"vd-picker__table-day--first\":this.range&&this.firstInRange,\"vd-picker__table-day--last\":this.range&&this.lastInRange&&Boolean(this.mutableDate.end),\"vd-picker__table-day--select-start\":this.range&&!this.mutableDate.start,\"vd-picker__table-day--select-end\":this.range&&this.mutableDate.start&&!this.mutableDate.end,\"vd-picker__table-day--disabled\":this.isDisabled}},formattedDay:function(){return this.day.format(\"D\")},isCurrent:function(){return Ct({date:this.day,type:\"date\",locale:this.currentLocale})},isSelected:function(){return this.range?[].concat(Q(this.mutableDate.start?[this.mutableDate.start.startOf(\"day\").unix()]:[]),Q(this.mutableDate.end?[this.mutableDate.end.startOf(\"day\").unix()]:[])).includes(this.day.unix()):this.mutableDate&&this.mutableDate.startOf(\"day\").unix()===this.day.unix()},isBetween:function(){return!(!this.mutableDate.start&&!this.mutableDate.end)&&Pt(this.day,this.mutableDate.start,this.mutableDate.end)},isInRange:function(){return!!this.rangeCurrentHoveredDay&&(Lt(this.rangeCurrentHoveredDay,this.mutableDate.end)?Pt(this.day,this.rangeCurrentHoveredDay,this.mutableDate.end):Pt(this.day,this.mutableDate.start,this.rangeCurrentHoveredDay))},firstInRange:function(){return this.mutableDate.start&&this.mutableDate.start.startOf(\"day\").unix()===this.day.unix()},lastInRange:function(){return this.mutableDate.end&&this.mutableDate.end.startOf(\"day\").unix()===this.day.unix()},isDateAllowed:function(){return xt({date:this.day,min:this.minDate,max:this.maxDate,allowedFn:this.allowedDates})},isDisabled:function(){return!this.isDateAllowed},scopedSlotDay:function(){return I(this.VDPicker,\"day\")}},methods:{onDayClick:function(t){this.$emit(\"select-day\",t)},genWrapper:function(){return this.$createElement(\"div\",{staticClass:\"vd-picker__table-day__wrapper\",attrs:{\"data-date\":this.day.format(\"YYYY-MM-DD\")}},[this.isCurrent&&this.genDayCurrent(),this.genDayEffect(),this.genDayText()])},genDayCurrent:function(){return this.$createElement(\"span\",{staticClass:\"vd-picker__table-day__current\"})},genDayEffect:function(){return this.$createElement(\"span\",{staticClass:\"vd-picker__table-day__effect\"})},genDayText:function(){if(!this.scopedSlotDay)return this.$createElement(\"span\",{staticClass:\"vd-picker__table-day__text\"},[this.formattedDay]);var t={formattedDay:this.formattedDay,isCurrent:this.isToday,isSelected:this.isSelected&&!this.isDisabled,isBetween:this.range&&this.isBetween,isInRange:this.range&&this.isInRange,isFirstRangeDay:this.range&&this.firstInRange,isLastRangeDay:this.range&&this.lastInRange&&Boolean(this.mutableDate.end),isFirstSelectedDay:this.range&&!this.mutableDate.start,isLastSelectedDay:this.range&&this.mutableDate.start&&!this.mutableDate.end,isDisabled:this.isDisabled},e=this.VDPicker.$scopedSlots.day(function(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?Zt(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Zt(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({day:this.formattedDay},t));return this.$createElement(\"span\",{staticClass:\"vd-picker__table-day__text\"},[e])}},render:function(t){var e=this,n={staticClass:\"vd-picker__table-day\",class:this.classes,attrs:{type:\"button\",disabled:this.isDisabled,\"data-date\":this.day.format(\"YYYY-MM-DD\")},on:{click:function(){return e.onDayClick(e.day)}}};return t(\"button\",this.setTextColor(this.color,n),[this.genWrapper()])}}),Kt=at(rt).extend({name:\"VDPickerTableDate\",directives:{Touch:Ut},props:{allowedDates:{type:Function},color:{type:String},pickerDate:{type:[String,Object]},isRangeSelected:{type:Boolean},maxDate:{type:[String,Number,Date]},minDate:{type:[String,Number,Date]},mutableDate:{type:[String,Object]},range:{type:Boolean},transitionName:{type:String}},data:function(){return{rangeCurrentHoveredDay:void 0}},computed:{weekDays:function(){return this.pickerDate.getWeekDays()},spaceBeforeFirstDay:function(){return Q(Array(this.pickerDate.getWeekStart()).keys())}},watch:{rangeCurrentHoveredDay:function(t){t&&this.$emit(\"update-hovered-day\",t)}},methods:{onDayClick:function(t){this.rangeCurrentHoveredDay=void 0,this.$emit(\"select-date\",t)},handleMouseMove:function(t){var e=t.target,n=\"string\"==typeof e.className&&\"vd-picker__table-days\"===e.className.split(\" \")[0];if(this.range&&!this.isRangeSelected&&!n){var r=e.dataset.date;if(!r)return this.handleMouseMove({target:e.parentNode});var i=r===this.rangeCurrentHoveredDay;r&&!i&&(this.rangeCurrentHoveredDay=e.dataset.date)}},genWeek:function(){var t=this;return this.$createElement(\"div\",{staticClass:\"vd-picker__table-week\"},this.weekDays.map((function(e,n){return t.$createElement(\"div\",{key:n,domProps:{innerHTML:e},staticClass:\"vd-picker__table-weekday\"})})))},genDaysWrapper:function(){return this.$createElement(\"transition-group\",{staticClass:\"vd-picker__table-days__wrapper\",props:{name:this.transitionName,tag:\"div\"}},[this.pickerDate].map(this.genDays))},genDays:function(t){var e=this;return this.$createElement(\"div\",{staticClass:\"vd-picker__table-days\",key:t.month,on:{mousemove:this.handleMouseMove}},[this.spaceBeforeFirstDay.map((function(t){return e.$createElement(\"div\",{staticClass:\"vd-picker__table-day\",key:\"space-\".concat(t)})})),this.pickerDate.getDays().map(this.genDay)])},genDay:function(t,e){return this.$createElement(Gt,{key:e,props:{allowedDates:this.allowedDates,color:this.color,day:t,maxDate:this.maxDate,minDate:this.minDate,mutableDate:this.mutableDate,range:this.range,rangeCurrentHoveredDay:this.rangeCurrentHoveredDay,locale:this.currentLocale},on:{\"select-day\":this.onDayClick}})}},render:function(t){var e=this;return t(\"div\",{staticClass:\"vd-picker__table\",directives:[{name:\"touch\",value:{left:function(){return e.$emit(\"update-month\",\"next\")},right:function(){return e.$emit(\"update-month\",\"prev\")}}}],on:{touchstart:function(t){return t.stopPropagation()}}},[this.genWeek(),this.genDaysWrapper()])}}),te={name:\"VDPickerValidate\",mixins:[rt],props:{buttonValidate:{type:String},buttonCancel:{type:String},color:{type:String},range:{type:Boolean},mutableDate:{type:Object}},computed:{isDisabledValidation:function(){return!!this.range&&(\"object\"!==L(this.mutableDate)||!Object.values(this.mutableDate).every((function(t){return Boolean(t)})))}},methods:{genButtonCancel:function(){var t=this;return this.$createElement(\"button\",{staticClass:\"vd-picker-validate__button vd-picker-validate__button-cancel\",attrs:{type:\"button\"},on:{click:function(){return t.$emit(\"cancel\")}}},[this.genButtonEffect(),this.genButtonText(this.buttonCancel)])},genButtonValidate:function(){var t=this;return this.$createElement(\"button\",this.setTextColor(this.color,{staticClass:\"vd-picker-validate__button vd-picker-validate__button-validate\",attrs:{type:\"button\",disabled:this.isDisabledValidation},on:{click:function(){return t.$emit(\"validate\")}}}),[this.genButtonEffect(),this.genButtonText(this.buttonValidate)])},genButtonEffect:function(){return this.$createElement(\"div\",this.setBackgroundColor(this.color,{staticClass:\"vd-picker-validate__effect\"}))},genButtonText:function(t){return this.$createElement(\"div\",{staticClass:\"vd-picker-validate__name\",domProps:{innerHTML:t}})}},render:function(t){return t(\"div\",{staticClass:\"vd-picker-validate\"},[this.genButtonCancel(),this.genButtonValidate()])}};function ee(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ne(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?ee(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ee(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var re=at(rt,x).extend({name:\"VDPickerMonths\",props:{active:{type:Boolean,default:!1},allowedDates:{type:Function},color:{type:String,default:String},pickerDate:{type:Object,default:Object},max:{type:[String,Number,Date]},min:{type:[String,Number,Date]},mutableDate:{type:Object,default:void 0},range:{type:Boolean,default:!1},transitionName:{type:String,default:String},type:{type:String},visibleYearsNumber:{type:Number,default:10}},computed:{yearFormatted:function(){return this.pickerDate.getYearFormatted()},getMonths:function(){return this.pickerDate.getMonths()}},methods:{isCurrent:function(t){return Ct({date:At({year:this.pickerDate.year,month:t,locale:this.currentLocale}),type:\"month\",locale:this.currentLocale})},isSelected:function(t){if(this.range||!this.mutableDate)return!1;var e=At({year:this.pickerDate.year,month:t,locale:this.currentLocale});return $t(this.mutableDate.format(\"YYYY-MM\"),e.format(\"YYYY-MM\"),\"month\")},isAllowed:function(t){return xt({date:At({year:this.yearFormatted,month:t,locale:this.currentLocale}),min:this.min,max:this.max,type:\"month\",allowedFn:this.allowedDates})},genTransition:function(){return this.$createElement(\"transition-group\",{staticClass:\"vd-picker__months-inner\",props:{tag:\"div\",name:this.transitionName}},[this.pickerDate.year].map(this.genMonthList))},genMonthList:function(t){return this.$createElement(\"div\",{staticClass:\"vd-picker__months-list\",key:t},[this.getMonths.map(this.genMonthButton)])},genMonthButton:function(t,e){var n=this,r=this.isCurrent(e)&&!this.isSelected(e),i=this.isSelected(e),a=this.$createElement(\"button\",{key:e,staticClass:\"vd-picker__months-button\",style:ne(ne({},r&&{\"border-color\":this.color}),i&&ne(ne({},this.setTextColor(\"#fff\")),this.setBackgroundColor(this.color))),attrs:{type:\"button\",disabled:!this.isAllowed(e)},on:{click:function(){return n.$emit(\"input\",e,\"month\")}}},[t]);return this.$createElement(\"div\",{staticClass:\"vd-picker__months-button__wrapper\"},[a])}},render:function(t){return t(\"div\",{staticClass:\"vd-picker__months\"},[this.genTransition()])}});function ie(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ae(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?ie(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ie(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var oe=at(rt,x).extend({name:\"VDPickerQuarters\",props:{active:{type:Boolean,default:!1},allowedDates:{type:Function},color:{type:String,default:String},pickerDate:{type:Object,default:Object},max:{type:[String,Number,Date]},min:{type:[String,Number,Date]},mutableDate:{type:Object,default:void 0},transitionName:{type:String,default:String}},computed:{getQuarters:function(){return this.pickerDate.getQuarters()}},methods:{isCurrent:function(t){return Ct({date:At({year:this.pickerDate.year,month:t,locale:this.currentLocale}),type:\"quarter\",locale:this.currentLocale})},isSelected:function(t){if(!this.mutableDate)return!1;var e=At({year:this.pickerDate.year,month:t,locale:this.currentLocale});return $t(this.mutableDate.format(\"YYYY-MM\"),e.format(\"YYYY-MM\"),\"month\")},isAllowed:function(t){return xt({date:At({year:this.pickerDate.year,month:t,locale:this.currentLocale}),min:this.min,max:this.max,type:\"month\",allowedFn:this.allowedDates})},genTransition:function(){return this.$createElement(\"transition-group\",{staticClass:\"vd-picker__quarters-inner\",props:{tag:\"div\",name:this.transitionName}},[this.pickerDate.year].map(this.genQuarterList))},genQuarterList:function(t){return this.$createElement(\"div\",{staticClass:\"vd-picker__quarters-list\",key:t},[this.getQuarters.map(this.genQuarterButton)])},genQuarterButton:function(t,e){var n=this,r=St(e),i=this.isCurrent(r)&&!this.isSelected(r),a=this.isSelected(r),o=this.$createElement(\"button\",{key:e,staticClass:\"vd-picker__quarters-button\",style:ae(ae({},i&&{\"border-color\":this.color}),a&&ae(ae({},this.setTextColor(\"#fff\")),this.setBackgroundColor(this.color))),attrs:{type:\"button\",disabled:!this.isAllowed(e)},on:{click:function(){return n.$emit(\"input\",e,\"quarter\")}}},[t]);return this.$createElement(\"div\",{staticClass:\"vd-picker__quarters-button__wrapper\"},[o])}},render:function(t){return t(\"div\",{staticClass:\"vd-picker__quarters\"},[this.genTransition()])}});function se(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ce(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?se(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):se(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var le=at(rt).extend({name:\"VDPickerYears\",props:{active:{type:Boolean,default:!1},allowedDates:{type:Function},color:{type:String,default:String},mutableDate:{type:Object,default:void 0},pickerDate:{type:Object,default:Object},max:{type:[String,Number,Date]},min:{type:[String,Number,Date]},visibleYearsNumber:{type:Number,default:10},range:{type:Boolean,default:!1}},computed:{yearFormatted:function(){return this.pickerDate.getYearFormatted()},activeYear:function(){if(!this.range)return this.mutableDate&&this.mutableDate.format(\"YYYY\")},getYears:function(){return this.pickerDate.generateYearsRange({activeYear:this.activeYear,visibleYearsNumber:this.visibleYearsNumber,min:this.min,max:this.max})}},watch:{active:{handler:function(t){t&&!this.range&&setTimeout(this.computeScrollPosition)},immediate:!0}},methods:{isCurrent:function(t){return Ct({date:At({year:t,month:0,locale:this.currentLocale}),type:\"year\",locale:this.currentLocale})},isSelected:function(t){return this.activeYear===String(t)},isAllowed:function(t){return xt({date:At({year:t,month:0,locale:this.currentLocale}),min:this.min,max:this.max,type:\"year\",allowedFn:this.allowedDates})},computeScrollPosition:function(){var t=this.$el.getElementsByClassName(\"active\")[0];this.$el.scrollTop=function(t){var e=t.activeItem,n=t.container,r=t.min,i=t.max;return e?e.offsetTop-n.offsetHeight/2+e.offsetHeight/2:r||i?0:n.scrollHeight/2-n.offsetHeight/2}({activeItem:t,container:this.$el,min:this.min,max:this.max})},genYearButton:function(t){var e=this,n=this.isCurrent(t)&&!this.isSelected(t),r=this.isSelected(t);return this.$createElement(\"li\",{key:t,staticClass:\"vd-picker__years-button\",class:{active:this.isSelected(t)},style:ce(ce({},n&&{\"border-color\":this.color}),r&&ce(ce({},this.setTextColor(\"#fff\")),this.setBackgroundColor(this.color))),attrs:{disabled:!this.isAllowed(t)},on:{click:function(){return e.$emit(\"input\",t,\"year\")}}},[t])}},render:function(t){var e=this;return t(\"ul\",{staticClass:\"vd-picker__years\"},this.getYears.map((function(t){return e.genYearButton(t)})))}});var ue=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")};function de(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var he=function(t,e,n){return e&&de(t.prototype,e),n&&de(t,n),t},pe=function(){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{lang:o};ue(this,t),dayjs__WEBPACK_IMPORTED_MODULE_1___default().locale(r.lang),this.locale=r,this.start=dayjs__WEBPACK_IMPORTED_MODULE_1___default()().year(n).month(e).startOf(\"month\"),this.end=this.start.endOf(\"month\"),this.month=e,this.year=n}return he(t,[{key:\"getWeekStart\",value:function(){return this.start.weekday()}},{key:\"getDays\",value:function(){return Array.from(Ht({startDate:this.start,endDate:this.end,locale:this.locale}))}},{key:\"getWeekDays\",value:function(){var t=this.locale,e=t.lang,n=t.weekDays,r=Q(e.weekdaysShort);return e.weekStart&&1===e.weekStart&&r.push(r.shift()),n||r}},{key:\"getMonths\",value:function(){return Array.apply(0,Array(12)).map((function(t,e){return dayjs__WEBPACK_IMPORTED_MODULE_1___default()().month(e).format(\"MMM\")}))}},{key:\"getQuarters\",value:function(){return Array.apply(0,Array(4)).map((function(t,e){var n=dayjs__WEBPACK_IMPORTED_MODULE_1___default()().quarter(e+1).startOf(\"quarter\").format(\"MMMM\"),r=dayjs__WEBPACK_IMPORTED_MODULE_1___default()().quarter(e+1).endOf(\"quarter\").format(\"MMMM\");return\"\".concat(n,\" - \").concat(r)}))}},{key:\"getMonthFormatted\",value:function(){return this.start.format(\"MMMM\")}},{key:\"getYearFormatted\",value:function(){return this.start.format(\"YYYY\")}},{key:\"generateYearsRange\",value:function(t){var e=t.activeYear,n=t.visibleYearsNumber,r=t.min,a=t.max,o=parseInt(e,10)||parseInt(dayjs__WEBPACK_IMPORTED_MODULE_1___default()().format(\"YYYY\"),10),s=a?parseInt(a,10):o+n,c=Math.min(s,r?parseInt(r,10):o-n);return Q(Array(s-c+1).keys()).map((function(t){return s-t}))}}]),t}();function fe(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function me(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?fe(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):fe(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var ve=at(rt,ht,x).extend({name:\"VDPickerAgenda\",props:{allowedDates:{type:Function},buttonCancel:{type:String},buttonValidate:{type:String},color:{type:String},date:{type:[Date,Object]},headerFormat:{type:String},fullscreen:{type:Boolean,default:!1},maxDate:{type:[String,Number,Date]},minDate:{type:[String,Number,Date]},name:{type:String},noHeader:{type:Boolean,default:!1},range:{type:Boolean,default:!1},rangeHeaderText:{type:String,default:String},rangePresets:{type:Array,default:void 0},rtl:{type:Boolean,default:!1},type:{type:String,default:\"date\"},validate:{type:Boolean,default:!1},value:{type:Boolean,default:!1},visibleYearsNumber:{type:Number}},data:function(){return{height:\"auto\",pickerDate:void 0,mutableDate:void 0,mode:D,transitionDaysName:\"slide-h-next\",transitionLabelName:\"slide-v-next\"}},computed:{classes:function(){return{\"vd-picker--rtl\":this.rtl,\"vd-picker--bottomsheet\":this.fullscreen,\"vd-picker--no-header\":this.noHeader,\"vd-picker--validate\":this.validate,\"vd-picker--range\":this.range,\"vd-picker--range-selecting\":this.range&&!this.isRangeSelected}},isRangeSelected:function(){return!!this.range&&(\"object\"===L(this.mutableDate)&&Object.values(this.mutableDate).every((function(t){return Boolean(t)})))},formatters:function(){return t={headerFormat:this.headerFormat,locale:this.locale,maxDate:this.maxDate,minDate:this.minDate,mutableDate:this.mutableDate,range:this.range,rangeHeaderText:this.rangeHeaderText},e=t.headerFormat,n=t.locale,r=t.maxDate,i=t.minDate,a=t.mutableDate,o=t.range,s=t.rangeHeaderText,{formattedHeaderYear:Et({date:a,locale:n,format:\"YYYY\"}),formattedHeaderDate:Nt({date:a,headerFormat:e,locale:n,range:o,rangeHeaderText:s}),minDate:i,maxDate:r,minMonth:Bt({date:i,type:\"month\",locale:n}),maxMonth:Bt({date:r,type:\"month\",locale:n}),minYear:Bt({date:i,type:\"year\",locale:n}),maxYear:Bt({date:r,type:\"year\",locale:n})};var t,e,n,r,i,a,o,s}},created:function(){this.initAgenda()},beforeDestroy:function(){(0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__.clearAllBodyScrollLocks)()},watch:{value:\"initAgenda\",date:\"initDatesForPicker\",type:\"updateMode\",fullscreen:{handler:function(t){var r=this;this.$nextTick((function(){var i=r.$refs.body;t?((0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__.disableBodyScroll)(i),r.genOverlay()):(r.removeOverlay(!1),(0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__.enableBodyScroll)(i))}))},immediate:!0},mode:function(t){var r=this;\"year\"===t&&this.fullscreen&&((0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__.enableBodyScroll)(this.$refs.body),this.$nextTick((function(){(0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__.disableBodyScroll)(r.$el.querySelector(\".vd-picker__years\"))})))}},methods:{initAgenda:function(){this.initDatesForPicker(this.date),this.updateMode(this.type)},updateTransitions:function(t){this.transitionDaysName=\"slide-h-\".concat(t),this.transitionLabelName=\"slide-v-\".concat(t)},reOrderSelectedDate:function(t){this.mutableDate&&(Lt(t,this.mutableDate.start)?this.mutableDate={start:void 0,end:this.mutableDate.start}:jt(t,this.mutableDate.end)&&(this.mutableDate={start:this.mutableDate.end,end:void 0}))},selectDate:function(t){if(this.range)return this.isRangeSelected||!this.mutableDate.start&&!this.mutableDate.end?void(this.mutableDate={start:t.clone(),end:void 0}):(this.reOrderSelectedDate(t),void this.emitSelectedDate(me(me(me({},this.mutableDate),this.mutableDate.start&&{end:t.clone()}),this.mutableDate.end&&{start:t.clone()})));var e,n,r=(e=t,n=this.mutableDate,dayjs__WEBPACK_IMPORTED_MODULE_1___default()(e).isAfter(dayjs__WEBPACK_IMPORTED_MODULE_1___default()(n))?\"next\":\"prev\");this.updateTransitions(r),this.emitSelectedDate(t.clone())},emitSelectedDate:function(t){this.range&&(this.pickerDate=new pe(t.end.month(),t.end.year(),this.currentLocale)),this.mutableDate=t,this.$emit(\"selectDate\",this.mutableDate)},initDatesForPicker:function(t){var e=Tt({date:this.range?t.end||t.start:t,locale:this.currentLocale});if(jt(e,this.maxDate)&&(e=Tt({date:this.maxDate,locale:this.currentLocale})),this.range)return this.pickerDate=new pe(e.month(),e.year(),this.currentLocale),void(this.mutableDate=t);null==t&&\"quarter\"===this.type&&(e=e.month(e.quarter())),null!=t&&\"quarter\"===this.type&&(e=e.month(St(e.month()))),this.pickerDate=new pe(e.month(),e.year(),this.currentLocale),this.mutableDate=t&&t.month(e.month()).clone()},changeMonth:function(t){var e=this.pickerDate.month+(\"prev\"===t?-1:1),n=this.pickerDate.year;(e>11||e<0)&&(n+=\"prev\"===t?-1:1,e=\"prev\"===t?11:0),this.updateTransitions(t),this.pickerDate=new pe(e,n,this.currentLocale)},changeYear:function(t){var e=this.pickerDate.year+(\"prev\"===t?-1:1),n=this.pickerDate.month;this.updateTransitions(t),this.pickerDate=new pe(n,e,this.currentLocale)},updateMode:function(t){this.mode=t},updateSelectedYearMonth:function(t,e){var n=function(t,e,n){return\"year\"===n?{year:t,month:e.month}:\"quarter\"===n?{year:e.year,month:St(t)}:{year:e.year,month:t}}(t,this.pickerDate,e),r=n.year,i=n.month;if(this.pickerDate=new pe(i,r,this.currentLocale),e===O&&\"year\"!==this.type){var a=\"quarter\"===this.type?\"quarter\":\"month\";return this.updateMode(a)}if(\"date\"===this.type)this.updateMode(\"date\");else{var o=At({year:this.pickerDate.year,month:this.pickerDate.month,locale:this.currentLocale});this.selectDate(o)}},genTitle:function(){var t=this,e=this.$createElement(\"p\",this.name),n=this.$createElement(ct,{on:{click:function(){return t.$emit(\"close\")}}},[\"close\"]);return this.$createElement(\"div\",{staticClass:\"vd-picker__title\"},[e,this.$createElement(\"div\",{staticClass:\"vd-picker__title-close\"},[n])])},genHeader:function(){return this.$createElement(Wt,{props:me(me({},this.formatters),{},{color:this.color,mode:this.yearMonthMode,mutableDate:this.mutableDate,range:this.range,transitionName:this.transitionLabelName,type:this.type}),on:{\"update-mode\":this.updateMode}})},genPresets:function(){return this.$createElement(Jt,{props:{rangePresets:this.rangePresets,mutableDate:this.mutableDate,minDate:this.minDate,maxDate:this.maxDate,color:this.color,locale:this.locale},on:{\"update-range\":this.emitSelectedDate}})},genBody:function(){var t=[this.mode!==O&&this.genControls(),this.mode===D&&this.genTableDate(),this.mode===_&&this.genMonths(),this.mode===k&&this.genQuarters(),this.mode===O&&this.genYears()];return this.$createElement(\"div\",{staticClass:\"vd-picker__body\",ref:\"body\"},t)},genControls:function(){return this.$createElement(It,{props:{pickerDate:this.pickerDate,transitionName:this.transitionLabelName,color:this.color,min:this.minDate,max:this.maxDate,mode:this.mode},on:{\"on-navigation-click\":this.mode===D?this.changeMonth:this.changeYear,\"update-mode\":this.updateMode}})},genTableDate:function(){return this.$createElement(Kt,{props:{allowedDates:this.allowedDates,color:this.color,pickerDate:this.pickerDate,isRangeSelected:this.isRangeSelected,locale:this.currentLocale,maxDate:this.maxDate,minDate:this.minDate,mutableDate:this.mutableDate,range:this.range,transitionName:this.transitionDaysName},on:{\"update-month\":this.changeMonth,\"update-hovered-day\":this.reOrderSelectedDate,\"select-date\":this.selectDate}})},genMonths:function(){var t=this.formatters,e=t.minMonth,n=t.maxMonth;return this.$createElement(re,{props:{active:this.mode===_,allowedDates:this.type===_?this.allowedDates:void 0,color:this.color,locale:this.currentLocale,max:n,min:e,mutableDate:this.mutableDate,pickerDate:this.pickerDate,range:this.range,transitionName:this.transitionDaysName},on:{input:this.updateSelectedYearMonth}})},genQuarters:function(){var t=this.formatters,e=t.minMonth,n=t.maxMonth;return this.$createElement(oe,{props:{active:this.mode===k,allowedDates:this.type===k?this.allowedDates:void 0,color:this.color,locale:this.currentLocale,max:n,min:e,mutableDate:this.mutableDate,pickerDate:this.pickerDate,transitionName:this.transitionDaysName},on:{input:this.updateSelectedYearMonth}})},genYears:function(){var t=this.formatters,e=t.minYear,n=t.maxYear;return this.$createElement(le,{props:{active:this.mode===O,allowedDates:this.type===O?this.allowedDates:void 0,color:this.color,max:n,min:e,mutableDate:this.mutableDate,pickerDate:this.pickerDate,range:this.range,visibleYearsNumber:this.visibleYearsNumber},on:{input:this.updateSelectedYearMonth}})},genValidate:function(){var t=this;return this.$createElement(te,{props:{buttonValidate:this.buttonValidate,buttonCancel:this.buttonCancel,color:this.color,mutableDate:this.mutableDate,range:this.range},on:{cancel:function(){return t.$emit(\"close\")},validate:function(){return t.$emit(\"validateDate\")}}})}},render:function(t){return t(\"div\",{staticClass:\"vd-picker\",class:this.classes,ref:\"datepicker\"},[this.fullscreen&&this.genTitle(),!this.noHeader&&this.genHeader(),this.range&&this.genPresets(),this.genBody(),this.validate&&this.genValidate()])}});function ye(t){var e=t.message,n=t.vm;if(n){if(n.$_alreadyWarned=n.$_alreadyWarned||[],n.$_alreadyWarned.includes(e))return;n.$_alreadyWarned.push(e)}return\"[VueDatePicker] \".concat(e)+(n?function(t){if(t._isVue&&t.$parent){for(var e=[],n=0;t;){if(e.length>0){var r=e[e.length-1];if(r.constructor===t.constructor){n++,t=t.$parent;continue}n>0&&(e[e.length-1]=[r,n],n=0)}e.push(t),t=t.$parent}return\"\\n\\nfound in\\n\\n\"+e.map((function(t,e){return\"\".concat(0===e?\"---\\x3e \":\" \".repeat(5+2*e)).concat(Array.isArray(t)?\"\".concat(De(t[0]),\"... (\").concat(t[1],\" recursive calls)\"):De(t))})).join(\"\\n\")}return\"\\n\\n(found in \".concat(De(t),\")\")}(n):\"\")}function ge(t,e){var n=ye({message:t,vm:e});null!=n&&console.warn(n)}var be=/(?:^|[-_])(\\w)/g;function De(t,e){if(t.$root===t)return\"<Root>\";var n=\"function\"==typeof t&&null!=t.cid?t.options:t._isVue?t.$options||t.constructor.options:t||{},r=n.name||n._componentTag,i=n.__file;if(!r&&i){var a=i.match(/([^/\\\\]+)\\.vue$/);r=a&&a[1]}return(r?\"<\".concat(r.replace(be,(function(t){return t.toUpperCase()})).replace(/[-_]/g,\"\"),\">\"):\"<Anonymous>\")+(i&&!1!==e?\" at \".concat(i):\"\")}function _e(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ke(t){for(var e=arguments,n=1;n<arguments.length;n++){var r=null!=e[n]?e[n]:{};n%2?_e(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):_e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var Oe={minWidth:\"290px\",maxWidth:\"315px\"},Me=at(x,C).extend({name:\"VDPicker\",provide:function(){return{VDPicker:this}},directives:{ClickOutside:T},props:{id:{type:String,default:void 0},name:{type:String,default:\"datepicker\"},clearable:{type:Boolean,default:!1},validate:{type:Boolean,default:!1},buttonValidate:{type:String,default:void 0},buttonCancel:{type:String,default:void 0},type:{type:String,default:\"date\"},range:{type:Boolean,default:!1},rangeInputText:{type:String,default:\"%d ~ %d\"},rangeHeaderText:{type:String,default:void 0},rangePresets:{type:Array,default:void 0},value:{type:[String,Object,Number,Date]},format:{type:String,default:void 0},formatHeader:{type:String,default:void 0},visible:{type:Boolean,default:!1},placeholder:{type:String,default:\"YYYY-MM-DD\"},color:{type:String,default:\"#4f88ff\"},contentClass:{type:String,default:\"\"},allowedDates:{type:Function},minDate:{type:[String,Number,Date]},maxDate:{type:[String,Number,Date]},visibleYearsNumber:{type:Number,default:10},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1},noCalendarIcon:{type:Boolean,default:!1},fullscreenMobile:{type:Boolean,default:!1},tabindex:{type:[String,Number],default:\"0\"},rtl:{type:Boolean,default:!1},origin:{type:String,default:void 0},allowOverflow:{type:Boolean,default:!0},attach:{validator:B,default:!1},zIndex:{type:Number,default:1002}},data:function(){return{date:void 0,isMenuActive:!1,isBooted:!1,activator:void 0}},computed:{classes:function(){return{\"vd-wrapper--inline\":this.inline,\"vd-wrapper--disabled\":this.disabled,\"vd-wrapper--rtl\":this.rtl}},componentId:function(){return this.id||\"datepicker_\".concat(\"_\".concat(Math.random().toString(36).substr(2,9)))},inputFormat:function(){return this.format?this.format:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"date\";return m[t]}(this.range?\"range\":this.type)},headerFormat:function(){return this.formatHeader?this.formatHeader:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"date\";return y[t]}(this.range?\"range\":this.type)},outputFormat:function(){return wt(this.range?\"range\":this.type)},textsFormat:function(){var t=this.currentLocale.lang,e=t.buttonValidate,n=t.buttonCancel,r=t.rangeHeaderText;return{buttonValidate:this.buttonValidate||e,buttonCancel:this.buttonCancel||n,rangeHeaderText:this.rangeHeaderText||r}},internalDate:{get:function(){return t=this.value,e={range:this.range,locale:this.currentLocale,type:this.type},n=e.range,r=e.locale,i=e.type,n?{start:t&&null!=t.start?Tt({date:t.start,locale:r}):void 0,end:t&&null!=t.end?Tt({date:t.end,locale:r}):void 0}:null!=t?Tt({date:t,locale:r,type:i}):void 0;var t,e,n,r,i},set:function(t){this.date=t}},isDateDefined:function(){var t=!this.range&&this.internalDate,e=this.range&&this.internalDate&&this.internalDate.start&&this.internalDate.end;return Boolean(t)||Boolean(e)},formattedInputDate:function(){return function(t){var e=t.inputFormat,n=t.internalDate,r=t.isDateDefined,i=t.locale,a=t.range,o=t.rangeInputText,s=t.type;if(r){if(a&&o){var c=Ft({dates:n,locale:i,format:e}).split(\" ~ \"),l=vt(c,2);return Yt({regexText:o,startDate:l[0],endDate:l[1]})}var u=n.month(),d=\"quarter\"===s?St(u):u;return Et({date:n.set(\"month\",d),locale:i,format:e})}}({inputFormat:this.inputFormat,internalDate:this.internalDate,isDateDefined:this.isDateDefined,locale:this.currentLocale,range:this.range,rangeInputText:this.rangeInputText,type:this.type})},isFullScreenMode:function(){return this.fullscreenMobile&&this.isMobile}},watch:{visible:{handler:function(t){this.isMenuActive=t},immediate:!0},isFullScreenMode:function(){var t=this;this.isMenuActive&&(this.hideDatePicker(),setTimeout((function(){t.showDatePicker()}),200))}},created:function(){var t,e,n,r,i=this;[\"no-input\"].forEach((function(t){var e,n,r;i.$attrs.hasOwnProperty(t)&&(n=(e={original:t,vm:i}).original,r=e.vm,ge(\"[REMOVED] '\".concat(n,\"' has been removed. You can safely omit it.\"),r))})),this.$attrs.hasOwnProperty(\"fullscreen-breakpoint\")&&(e=(t={original:\"fullscreen-mobile\",replacement:\"mobile-breakpoint\",vm:this}).original,n=t.replacement,r=t.vm,ge(\"[UPGRADE] '\".concat(e,\"' is deprecated, use '\").concat(n,\"' instead.\"),r))},mounted:function(){this.activator=this.$refs.activator},beforeDestroy:function(){this.hideDatePicker(),this.$emit(\"onDestroy\")},methods:{showDatePicker:function(){this.disabled||(this.isMenuActive=!0,this.$emit(\"onOpen\"))},hideDatePicker:function(){this.isMenuActive&&(this.isMenuActive=!1,this.isBooted=!1,(0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__.clearAllBodyScrollLocks)(),this.$emit(\"onClose\"))},changeDate:function(t){this.internalDate=t,this.validate||this.validateDate()},validateDate:function(){var t,e;this.date?(this.$emit(\"input\",(t=this.date,e=this.outputFormat,this.range?{start:t.start.format(e),end:t.end&&t.end.format(e)}:t.format(e))),this.$emit(\"onChange\"),this.hideDatePicker()):this.hideDatePicker()},onKeyDown:function(t){var e=t.keyCode;if(this.$refs.menu)return[w.esc,w.tab].includes(e)?this.hideDatePicker(t):void 0},onClearDate:function(){this.$emit(\"input\",void 0),this.$emit(\"onChange\")},genContent:function(){return this.inline?[this.genAgenda()]:[this.$scopedSlots.activator?this.genActivator():this.genCustomInput(),this.genMenuWithContent()]},genActivator:function(){return this.$createElement(\"div\",{staticClass:\"vd-activator\",directives:[{name:\"click-outside\",value:{isActive:this.isMenuActive&&!this.isFullScreenMode,handler:this.hideDatePicker}}],on:{click:this.showDatePicker,keydown:this.onKeyDown},ref:\"activator\"},[this.$scopedSlots.activator({date:this.formattedInputDate})])},genCustomInput:function(){return this.$createElement(lt,{props:{clearable:this.clearable,color:this.color,date:this.formattedInputDate,disabled:this.disabled,id:this.componentId,isDateDefined:this.isDateDefined,isMenuActive:this.isMenuActive,name:this.name,noCalendarIcon:this.noCalendarIcon,placeholder:this.placeholder,tabindex:this.tabindex},directives:[{name:\"click-outside\",value:{isActive:this.isMenuActive&&!this.isFullScreenMode,handler:this.hideDatePicker}}],nativeOn:{click:this.showDatePicker},on:{keydown:this.onKeyDown,clearDate:this.onClearDate},ref:\"activator\"})},genMenuWithContent:function(){var t=this,e=this.isFullScreenMode,n=ke(ke({},Oe),{},{value:this.isMenuActive,origin:this.origin,allowOverflow:this.allowOverflow,attach:!e&&this.attach,transition:e?\"slide-in-out-transition\":\"scale-transition\",bottomSheet:e}),r=this.activator;return this.$createElement(K,{attrs:{role:\"menu\"},props:ke(ke({},n),{},{activator:r}),on:{transitionEnd:function(){t.isBooted=!0}},ref:\"menu\"},[this.genAgenda()])},genAgenda:function(){return this.$createElement(ve,{props:{allowedDates:this.allowedDates,buttonCancel:this.textsFormat.buttonCancel,buttonValidate:this.textsFormat.buttonValidate,color:this.color,date:this.internalDate,fullscreen:this.isBooted&&this.isMenuActive&&this.isFullScreenMode,headerFormat:this.headerFormat,locale:this.currentLocale,maxDate:this.maxDate,minDate:this.minDate,name:this.name,noHeader:this.noHeader,range:this.range,rangeHeaderText:this.textsFormat.rangeHeaderText,rangePresets:this.rangePresets,rtl:this.rtl,type:this.type,validate:this.validate,value:this.isMenuActive,visibleYearsNumber:this.visibleYearsNumber},on:{selectDate:this.changeDate,validateDate:this.validateDate,close:this.hideDatePicker},directives:[{name:\"click-outside\",value:{isActive:this.isBooted&&this.isMenuActive,handler:this.hideDatePicker}}],ref:\"agenda\"})}},render:function(t){return t(\"div\",{staticClass:\"vd-wrapper\",class:this.classes},this.genContent())}}),we=Object.freeze({__proto__:null,VueDatePicker:Me});var Ye={installed:!1,version:\"0.2.11\",install:function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.installed){t.installed=!0,vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]!==e&&console.error(\"Multiple instances of Vue detected.\");var i=n.components||{},a=n.options||{};e.prototype.$vuedatepicker=a,vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"].prototype.$vuedatepicker=a,Object.entries(i).forEach((function(t){var n=vt(t,2),r=n[0],i=n[1];e.component(r,i)}))}}},Se=Ye.install;Ye.install=function(t,e){Se.call(Ye,t,{components:we,options:e})},\"undefined\"!=typeof window&&window.Vue&&window.Vue.use(Ye);/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Ye);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQG1hdGhpZXVzdGFuL3Z1ZS1kYXRlcGlja2VyL2Rpc3QvdnVlLWRhdGVwaWNrZXIuZXNtLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNnSixzQkFBc0IseUNBQXlDLGtEQUFrRCxXQUFXLElBQUksc1lBQXNZLGlIQUFpSCxxQkFBcUIsb0NBQW9DLHlEQUF5RCwyRUFBMkUsSUFBSSxrWkFBa1osU0FBUyxVQUFVLGdIQUFnSCwwRUFBMEUsSUFBSSw0WUFBNFksMklBQTJJLHFCQUFxQix1QkFBdUIsMEVBQTBFLElBQUksa1dBQWtXLHVCQUF1QixzQkFBc0Isb0hBQW9ILDhFQUE4RSxJQUFJLDJWQUEyVixTQUFTLFVBQVUsMk1BQTJNLHFGQUFxRixJQUFJLDhYQUE4WCxpSEFBaUgscUJBQXFCLFNBQVMseUVBQXlFLElBQUksK1hBQStYLGlIQUFpSCxxQkFBcUIsb0NBQW9DLHlEQUF5RCw2RUFBNkUsa0JBQWtCLGtEQUFrRCxrS0FBa0ssMkZBQTJGLElBQUksa0ZBQWtGLElBQUksaUZBQWlGLGlGQUFpRiwwSUFBMEksRUFBRSxnQkFBZ0IscUJBQXFCLGlDQUFpQyxzQ0FBc0MsNEJBQTRCLHVEQUF1RCxzQkFBc0IsU0FBUyxjQUFjLHdCQUF3QixtQkFBbUIsS0FBSyx5QkFBeUIseUNBQXlDLFlBQVkscUlBQXFJLGdFQUFnRSxHQUFHLFNBQVMsTUFBTSwyQ0FBQyxTQUFTLHdCQUF3QixRQUFRLCtCQUErQixPQUFPLGVBQWUsV0FBVyx5QkFBeUIsdUJBQXVCLGFBQWEsZ0JBQWdCLEVBQUUsdUJBQXVCLEdBQUcsVUFBVSwwQkFBMEIsa0lBQWtJLDBCQUEwQiwrREFBK0Qsa0JBQWtCLHdDQUF3QyxxQkFBcUIsR0FBRyx1QkFBdUIsNkVBQTZFLElBQUksMkNBQUMsU0FBUyxxQkFBcUIsa0JBQWtCLHVEQUF1RCwwQkFBMEIsaUJBQWlCLE9BQU8sd0NBQXdDLFdBQVcsb0JBQW9CLG9CQUFvQixvQkFBb0IsV0FBVyx5REFBeUQsV0FBVyx3Q0FBd0MsZ0RBQWdELFdBQVcsRUFBRSxrQkFBa0IsVUFBVSxvQkFBb0IsZ0ZBQWdGLG1CQUFtQiw0QkFBNEIsOERBQThELDJCQUEyQiwyR0FBMkcsRUFBRSxnR0FBZ0cscUJBQU0sQ0FBQyxxQkFBTSxnQ0FBZ0MsZ0JBQWdCLFlBQVksV0FBVyxzQkFBc0IscUJBQXFCLGNBQWMsMEZBQTBGLGdCQUFnQix5QkFBeUIsb0dBQW9HLE1BQU0sWUFBWSx1QkFBdUIsd0NBQXdDLDZEQUE2RCxXQUFXLGdCQUFnQixjQUFjLEtBQUssaURBQWlELCtCQUErQixrQkFBa0IsdUJBQXVCLE9BQU8sc0NBQXNDLE9BQU8sNEJBQTRCLG1CQUFtQixvRkFBb0Ysd0RBQXdELEVBQUUsdUJBQXVCLElBQUksSUFBSSxFQUFFLDJCQUEyQixFQUFFLHFDQUFxQywwQkFBMEIsOEJBQThCLHlDQUF5QyxLQUFLLGNBQWMsY0FBYywrQkFBK0IsZ0JBQWdCLEdBQUcsaURBQWlELDBCQUEwQiw0Q0FBNEMsa0JBQWtCLE9BQU8sT0FBTywyQkFBMkIsUUFBUSxPQUFPLDBCQUEwQixpQkFBaUIsT0FBTyxhQUFhLFFBQVEsT0FBTyxvQkFBb0IsZ0JBQWdCLGNBQWMsc0JBQXNCLHlDQUF5QyxrQkFBa0IsOEVBQThFLG1DQUFtQywwQkFBMEIsY0FBYyxXQUFXLGtFQUFrRSxjQUFjLHdFQUF3RSxjQUFjLGtJQUFrSSwyREFBMkQsd0dBQXdHLGNBQWMsK0NBQStDLDhEQUE4RCwwQkFBMEIsT0FBTyxrQkFBa0IsV0FBVyxxQ0FBcUMsMENBQTBDLFdBQVcseUJBQXlCLGlCQUFpQixPQUFPLDBDQUEwQyxRQUFRLDJCQUEyQixvQkFBb0IsMEtBQTBLLHlIQUF5SCxJQUFJLGtEQUFrRCxVQUFVLDBCQUEwQixpREFBaUQseUJBQXlCLDZEQUE2RCxPQUFPLHdFQUF3RSxPQUFPLDhCQUE4QiwwQkFBMEIsc0RBQXNELE1BQU0sbUJBQW1CLGVBQWUsdUhBQXVILDRGQUE0RixxREFBcUQsMkJBQTJCLGlEQUFpRCwwQkFBMEIsV0FBVyxPQUFPLFlBQVksa0JBQWtCLGNBQWMsa0JBQWtCLG9CQUFvQixvQ0FBb0MsMkJBQTJCLElBQUksY0FBYyxVQUFVLGtCQUFrQixpQ0FBaUMsa0JBQWtCLGtGQUFrRixvQkFBb0IsTUFBTSxvQ0FBb0Msb0RBQW9ELGlMQUFpTCxpQkFBaUIsNkpBQTZKLGtCQUFrQiw4QkFBOEIsZ0JBQWdCLE1BQU0sa0JBQWtCLGdDQUFnQyxPQUFPLDJKQUEySixJQUFJLFdBQVcsaUNBQWlDLGdFQUFnRSxVQUFVLGdCQUFnQixxQkFBcUIsaUNBQWlDLHNDQUFzQyw0QkFBNEIsdURBQXVELHNCQUFzQixTQUFTLGNBQWMsd0JBQXdCLG1CQUFtQixLQUFLLHlCQUF5Qix5Q0FBeUMsWUFBWSxxSUFBcUksZ0VBQWdFLEdBQUcsU0FBUyxPQUFPLHlCQUF5QiwyQkFBMkIsZ0NBQWdDLE9BQU8sYUFBYSxXQUFXLHNCQUFzQixxQ0FBcUMsUUFBUSxvQkFBb0Isa0JBQWtCLFVBQVUsNEJBQTRCLHdEQUF3RCxTQUFTLFFBQVEsdUJBQXVCLGVBQWUsd0JBQXdCLGlCQUFpQixPQUFPLHFDQUFxQyxRQUFRLGtCQUFrQixzQ0FBc0MsdUJBQXVCLGlDQUFpQyx3QkFBd0IsV0FBVywyQkFBMkIseUdBQXlHLDRCQUE0QixrRUFBa0Usd0NBQXdDLEdBQUcsR0FBRyxvQkFBb0IsbUNBQW1DLHdCQUF3QixpQkFBaUIsMEJBQTBCLElBQUksd09BQXdPLDZEQUE2RCxHQUFHLFNBQVMsa0JBQWtCLFVBQVUsc0JBQXNCLE1BQU0sbVlBQW1ZLEVBQUUsdUNBQXVDLE9BQU8sOEJBQThCLFdBQVcsdUZBQXVGLFVBQVUsMkVBQTJFLCtDQUErQyxXQUFXLHNCQUFzQix1QkFBdUIseUJBQXlCLDJGQUEyRixrQ0FBa0Msd0JBQXdCLDJDQUEyQyxrRUFBa0UseUJBQXlCLHNHQUFzRyxRQUFRLHFCQUFxQix5QkFBeUIsc0JBQXNCLDhEQUE4RCxVQUFVLHFCQUFxQix3QkFBd0IseUJBQXlCLGdCQUFnQiwyQkFBMkIsMENBQTBDLHNCQUFzQixvRkFBb0Ysb0JBQW9CLGdGQUFnRiw2QkFBNkIsNEJBQTRCLGlJQUFpSSwyQkFBMkIsbUlBQW1JLGlCQUFpQiwwSkFBMEosNEJBQTRCLCtGQUErRixrSEFBa0gsZ0NBQWdDLDhGQUE4RixnQ0FBZ0MscUJBQXFCLDBCQUEwQixnQ0FBZ0MsaUNBQWlDLEVBQUUsRUFBRSw0REFBNEQsaUJBQWlCLFNBQVMsS0FBSyx1QkFBdUIsV0FBVyxrQ0FBa0Msc0JBQXNCLDRGQUE0RixHQUFHLDRCQUE0QixXQUFXLGdDQUFnQyx5Q0FBeUMsaUNBQWlDLEdBQUcsR0FBRyw2QkFBNkIsV0FBVyw2SEFBNkgsUUFBUSx1QkFBdUIsMEtBQTBLLHFEQUFxRCxNQUFNLEVBQUUsZ0JBQWdCLE9BQU8sb0JBQW9CLFdBQVcsd0JBQXdCLG9FQUFvRSxvQkFBb0IsVUFBVSx3QkFBd0Isc0lBQXNJLFlBQVksS0FBSyxtQ0FBbUMsY0FBYyxRQUFRLHVCQUF1Qiw0QkFBNEIsV0FBVyxtQkFBbUIsZ0RBQWdELHVEQUF1RCxVQUFVLHNDQUFzQyxzQ0FBc0Msb0JBQW9CLGVBQWUsZ0RBQWdELDhEQUE4RCxRQUFRLFlBQVksc0NBQXNDLFNBQVMsMkJBQTJCLGdCQUFnQix3QkFBd0IsTUFBTSx3QkFBd0IsV0FBVyxvQ0FBb0MsV0FBVyxvQ0FBb0MsWUFBWSxvQ0FBb0MsU0FBUywyQkFBMkIsY0FBYyx5QkFBeUIsaUJBQWlCLE9BQU8saUNBQWlDLFdBQVcsa0JBQWtCLE9BQU8sMk5BQTJOLGtDQUFrQyx5QkFBeUIsNkJBQTZCLHdCQUF3Qiw4QkFBOEIseUNBQXlDLDBOQUEwTix3QkFBd0IseUJBQXlCLGlGQUFpRiw2QkFBNkIsd0JBQXdCLDJCQUEyQiwyQkFBMkIsOERBQThELG9CQUFvQixtQ0FBbUMsVUFBVSxvQkFBb0IsV0FBVywwREFBMEQscUNBQXFDLHlCQUF5QixHQUFHLEdBQUcsMkJBQTJCLHdCQUF3QixxQkFBcUIsa0tBQWtLLDBCQUEwQix5Q0FBeUMsT0FBTyxzQkFBc0Isc0JBQXNCLHVCQUF1QixPQUFPLE9BQU8sOEJBQThCLDRDQUE0Qyx3QkFBd0IsMEJBQTBCLEVBQUUsd0lBQXdJLGlDQUFpQyx1Q0FBdUMsb0JBQW9CLGtCQUFrQiw4QkFBOEIsOEVBQThFLG9CQUFvQixXQUFXLGdCQUFnQiw2QkFBNkIsaUNBQWlDLGNBQWMsNENBQTRDLEVBQUUsd0VBQXdFLDBCQUEwQixPQUFPLGlCQUFpQixxQkFBcUIsaUNBQWlDLHNDQUFzQyw0QkFBNEIsdURBQXVELHNCQUFzQixTQUFTLGVBQWUsd0JBQXdCLG1CQUFtQixLQUFLLHlCQUF5QiwwQ0FBMEMsWUFBWSxzSUFBc0ksZ0VBQWdFLEdBQUcsU0FBUyxlQUFlLDBEQUEwRCxRQUFRLE9BQU8sT0FBTyxhQUFhLFVBQVUsaUNBQWlDLHVCQUF1QixNQUFNLEVBQUUsY0FBYyxZQUFZLEVBQUUsNERBQTRELEVBQUUsR0FBRyw0REFBNEQsR0FBRyw0QkFBNEIsdUJBQXVCLE1BQU0sRUFBRSxjQUFjLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxHQUFHLG1CQUFtQixLQUFLLEtBQUssT0FBTyxxYkFBcWIsY0FBYyx3N0JBQXc3QixjQUFjLHlFQUF5RSxlQUFlLDRFQUE0RSxjQUFjLDBEQUEwRCxJQUFJLGNBQWMsT0FBTywyQ0FBQyxTQUFTLFNBQVMsRUFBRSxpQkFBaUIscUJBQXFCLGlDQUFpQyxzQ0FBc0MsNEJBQTRCLHVEQUF1RCxzQkFBc0IsU0FBUyxlQUFlLHdCQUF3QixtQkFBbUIsS0FBSyx5QkFBeUIsMENBQTBDLFlBQVksc0lBQXNJLGdFQUFnRSxHQUFHLFNBQVMsc0JBQXNCLHFDQUFxQyxNQUFNLHFCQUFxQixXQUFXLHlCQUF5QixXQUFXLDRCQUE0Qix1Q0FBdUMsVUFBVSx1QkFBdUIsOEZBQThGLG9CQUFvQix5QkFBeUIsZ0JBQWdCLDJCQUEyQixPQUFPLDZCQUE2Qix3RUFBd0UsV0FBVyw4SEFBOEgsa0NBQWtDLDZCQUE2QixxRUFBcUUsMEJBQTBCLEVBQUUsV0FBVyxLQUFLLDRCQUE0QixFQUFFLEtBQUssT0FBTywySkFBMkosaUVBQWlFLE9BQU8sOEJBQThCLE9BQU8sb0JBQW9CLHFCQUFxQixnQ0FBZ0Msb0JBQW9CLHNEQUFzRCxXQUFXLGFBQWEsc0JBQXNCLHdCQUF3QixRQUFRLFlBQVksT0FBTywwQkFBMEIsV0FBVyx3QkFBd0IsS0FBSyxZQUFZLGdCQUFnQix3QkFBd0IsZUFBZSx3QkFBd0IsT0FBTyxZQUFZLGlCQUFpQix3QkFBd0IsY0FBYyxZQUFZLFdBQVcsc0JBQXNCLFdBQVcsbUJBQW1CLE9BQU8sNElBQTRJLDBCQUEwQix3REFBd0Qsb0JBQW9CLDJCQUEyQixVQUFVLHNCQUFzQix3QkFBd0IsOEJBQThCLHdCQUF3Qiw0QkFBNEIsU0FBUyw2R0FBNkcsT0FBTyx3QkFBd0IsbUJBQW1CLGlDQUFpQyw2Q0FBNkMsSUFBSSxrQ0FBa0Msb0NBQW9DLE1BQU0scUJBQXFCLG9DQUFvQyxPQUFPLDBMQUEwTCxXQUFXLGdCQUFnQixLQUFLLHVCQUF1QixhQUFhLEVBQUUseUJBQXlCLHdDQUF3QyxPQUFPLHNFQUFzRSxLQUFLLGtCQUFrQiw2REFBNkQscUJBQXFCLHlDQUF5Qyw4QkFBOEIsMkNBQTJDLGdDQUFnQyxrQ0FBa0MscUNBQXFDLE9BQU8sb0JBQW9CLHFEQUFxRCxrREFBa0QsdUdBQXVHLHNCQUFzQix3QkFBd0IsVUFBVSx3QkFBd0IsUUFBUSx5Q0FBeUMsVUFBVSxpQ0FBaUMsUUFBUSxXQUFXLFNBQVMscUNBQXFDLFdBQVcsbUJBQW1CLE9BQU8seUVBQXlFLG1CQUFtQixPQUFPLG9CQUFvQiw0QkFBNEIsNENBQTRDLHlCQUF5QiwwQ0FBMEMsdUNBQXVDLDhCQUE4QixFQUFFLHFDQUFxQyxVQUFVLHNCQUFzQixrQ0FBa0Msa0NBQWtDLHVCQUF1QixvQkFBb0IsMEJBQTBCLHlEQUF5RCw4REFBOEQsS0FBSyxLQUFLLDJDQUFDLGVBQWUsMkNBQUMsU0FBUywwQkFBMEIsY0FBYywyQkFBMkIsaUJBQWlCLHFDQUFxQyxpQkFBaUIsT0FBTyxnQkFBZ0IsMEJBQTBCLHFCQUFxQixVQUFVLDJCQUEyQix1QkFBdUIsK0ZBQStGLDRDQUE0QyxxQ0FBcUMsS0FBSyxpQ0FBaUMsWUFBWSwrR0FBK0csMEJBQTBCLCtDQUErQyxpQ0FBaUMsNkVBQTZFLDRCQUE0Qiw4RUFBOEUsd0JBQXdCLHlFQUF5RSx1QkFBdUIsOENBQThDLDZDQUE2QyxrRkFBa0YsNkVBQTZFLFlBQVksV0FBVyxLQUFLLFdBQVcseUJBQXlCLHlDQUF5QyxtQ0FBbUMsc0RBQXNELFNBQVMsMEJBQTBCLDBDQUEwQyx3QkFBd0IsRUFBRSxFQUFFLHlFQUF5RSxrQkFBa0IsU0FBUyx1QkFBdUIscURBQXFELFdBQVcseURBQXlELHVCQUF1QixpTEFBaUwsMEJBQTBCLGNBQWMsV0FBVyxxRkFBcUYsRUFBRSxXQUFXLDJHQUEyRyxxREFBcUQsdUJBQXVCLFdBQVcsOEZBQThGLHFJQUFxSSxNQUFNLDBCQUEwQix3RUFBd0UsOERBQThELGdLQUFnSyxpREFBaUQsRUFBRSxtQkFBbUIsOEJBQThCLHFCQUFxQiw2REFBNkQsNEJBQTRCLElBQUksaUNBQWlDLDJEQUEyRCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxXQUFXLGtCQUFrQixrS0FBa0sscUJBQXFCLG9DQUFvQyxxQkFBcUIsMEJBQTBCLDZCQUE2Qix5QkFBeUIsb0NBQW9DLDJDQUEyQyxzQkFBc0IsdUhBQXVILElBQUksa0JBQWtCLFVBQVUscUNBQXFDLGdDQUFnQywrQkFBK0Isd0NBQXdDLHNEQUFzRCxzRUFBc0UsOENBQThDLDhCQUE4QixrQkFBa0IsR0FBRyx5QkFBeUIsdUJBQXVCLHdCQUF3Qix3Q0FBd0MsNkNBQTZDLHVCQUF1Qix3QkFBd0IseUNBQXlDLDhDQUE4Qyx1QkFBdUIsMEJBQTBCLCtCQUErQixVQUFVLDREQUE0RCx1QkFBdUIsUUFBUSwrQ0FBK0Msa0JBQWtCLHNCQUFzQiw0RkFBNEYsWUFBWSxvQkFBb0IsNkVBQTZFLGdCQUFnQix3QkFBd0Isa0NBQWtDLGVBQWUsdUJBQXVCLDJGQUEyRiwwQkFBMEIsRUFBRSx1QkFBdUIsMEJBQTBCLG1EQUFtRCxvQkFBb0IsY0FBYyx1QkFBdUIsRUFBRSxrQkFBa0Isd0JBQXdCLHNCQUFzQixFQUFFLG9CQUFvQix3QkFBd0Isc0JBQXNCLEdBQUcsY0FBYyxvQkFBb0IseUZBQXlGLGFBQWEsa0JBQWtCLFlBQVksY0FBYyw0TUFBNE0sbUJBQW1CLGtCQUFrQix3QkFBd0Isc0JBQXNCLG1FQUFtRSwrQkFBK0IsMEVBQTBFLGVBQWUscUJBQXFCLCtDQUErQyxzQkFBc0Isc0JBQXNCLHFEQUFxRCwrQkFBK0Isb0JBQW9CLGdCQUFnQiwwQkFBMEIsbUNBQW1DLHVCQUF1QixxQ0FBcUMsdUJBQXVCLHdCQUF3QixnQ0FBZ0MsNERBQTRELGtFQUFrRSx1QkFBdUIsUUFBUSwyQ0FBMkMsa0JBQWtCLG1CQUFtQiwwRUFBMEUsa0NBQWtDLHNDQUFzQyx1REFBdUQsMEJBQTBCLHVGQUF1RixvREFBb0QscUJBQXFCLDBDQUEwQyxFQUFFLEdBQUcsY0FBYyxvRUFBb0UsWUFBWSxpQkFBaUIsa0lBQWtJLHdCQUF3QixlQUFlLFdBQVcsZUFBZSw0RkFBNEYseUVBQXlFLGVBQWUsdURBQXVELGNBQWMsNkJBQTZCLE1BQU0sa0NBQWtDLDJCQUEyQixpQkFBaUIsb0VBQW9FLE9BQU8sNENBQUMsaUJBQWlCLDRDQUFDLGFBQWEsaUJBQWlCLG1FQUFtRSxtQ0FBbUMsNENBQUMsd0JBQXdCLE1BQU0sb0RBQVMsTUFBTSw0Q0FBQyxtQkFBbUIsOEJBQThCLDRDQUFDLHNCQUFzQixpQkFBaUIsbUVBQW1FLG1DQUFtQyw0Q0FBQyx3QkFBd0IsTUFBTSxvREFBUyxNQUFNLDRDQUFDLG1CQUFtQiw2QkFBNkIsNENBQUMsc0JBQXNCLG1CQUFtQix3QkFBd0IsZUFBZSxzQ0FBc0MsT0FBTyxZQUFZLHFDQUFxQyw0Q0FBQyxVQUFVLDRDQUFDLG1CQUFtQixlQUFlLG1DQUFtQyxXQUFXLGdCQUFnQixZQUFZLGVBQWUsdUJBQXVCLFdBQVcsZ0JBQWdCLG9DQUFvQyxlQUFlLGlGQUFpRixnQkFBZ0IsUUFBUSxnQkFBZ0IsWUFBWSw2Q0FBNkMsa0JBQWtCLEdBQUcsZUFBZSx1RUFBdUUsU0FBUyxVQUFVLDBCQUEwQiwrQkFBK0Isd0NBQXdDLDZCQUE2QiwwQkFBMEIsYUFBYSx5QkFBeUIsT0FBTyxlQUFlLGlDQUFpQyxnQkFBZ0IsNkJBQTZCLEVBQUUsZUFBZSw2QkFBNkIsMkNBQTJDLHFDQUFxQyxnQkFBZ0IsZ0RBQWdELGdCQUFnQixrREFBa0QsZ0JBQWdCLDZDQUE2QyxnQkFBZ0Isc0NBQXNDLG1EQUFRLEtBQUssbURBQVEsS0FBSyxtREFBUSxLQUFLLG1EQUFRLEtBQUssbURBQVEsS0FBSyxtREFBUSxLQUFLLG1EQUFRLEtBQUssbURBQVEsS0FBSyxzQkFBc0IsK0JBQStCLFlBQVksd0JBQXdCLGlCQUFpQixZQUFZLFFBQVEsWUFBWSxPQUFPLDJCQUEyQixNQUFNLDBCQUEwQixNQUFNLDJCQUEyQixXQUFXLDBCQUEwQiwyQ0FBMkMsMEJBQTBCLDBDQUEwQyxtQ0FBbUMsa0ZBQWtGLHlHQUF5RywrQkFBK0Isa0ZBQWtGLDRHQUE0RyxVQUFVLDhCQUE4QixvQ0FBb0MsMEJBQTBCLG1EQUFtRCxxQ0FBcUMsOENBQThDLG1EQUFtRCxLQUFLLGlCQUFpQixxQ0FBcUMsTUFBTSwwQkFBMEIsb0RBQW9ELHFDQUFxQyw4Q0FBOEMsK0NBQStDLEtBQUssaUJBQWlCLHFDQUFxQyxNQUFNLHlCQUF5QixrQ0FBa0MsMENBQTBDLHVFQUF1RSxrQ0FBa0Msc0NBQXNDLCtEQUErRCw4Q0FBOEMsaUNBQWlDLE9BQU8sY0FBYyxLQUFLLGlCQUFpQixrQ0FBa0MsUUFBUSw2QkFBNkIsV0FBVywrQ0FBK0MsK0NBQStDLHFDQUFxQywwQ0FBMEMsK0JBQStCLDBDQUEwQyxFQUFFLElBQUksNEJBQTRCLFdBQVcsK0NBQStDLDhDQUE4QywyRUFBMkUsUUFBUSxxQ0FBcUMseUNBQXlDLCtCQUErQix3Q0FBd0MsRUFBRSxLQUFLLG9CQUFvQixnQkFBZ0Isa0NBQWtDLG1FQUFtRSxFQUFFLGlCQUFpQixxQkFBcUIsaUNBQWlDLHNDQUFzQyw0QkFBNEIsdURBQXVELHNCQUFzQixTQUFTLGVBQWUsd0JBQXdCLG1CQUFtQixLQUFLLHlCQUF5QiwwQ0FBMEMsWUFBWSxzSUFBc0ksZ0VBQWdFLEdBQUcsU0FBUyxzQkFBc0IsNkJBQTZCLHFCQUFxQixZQUFZLHNCQUFzQixvQkFBb0IsUUFBUSxZQUFZLE9BQU8sWUFBWSxjQUFjLHFCQUFxQixRQUFRLGFBQWEsaUJBQWlCLFlBQVksT0FBTyxjQUFjLFdBQVcsbUJBQW1CLFVBQVUscUNBQXFDLG1EQUFtRCxpQkFBaUIscURBQXFELDBCQUEwQixnQ0FBZ0MsMEJBQTBCLHVDQUF1QyxVQUFVLG1CQUFtQix5Q0FBeUMsZ0RBQWdELGlCQUFpQix1Q0FBdUMsaUJBQWlCLDRDQUE0QyxzREFBc0Qsd0NBQXdDLG9CQUFvQixzQ0FBc0MsdUVBQXVFLHNDQUFzQyxFQUFFLGtDQUFrQyxxQ0FBcUMsTUFBTSx5QkFBeUIsK0JBQStCLG9FQUFvRSw2QkFBNkIsa0VBQWtFLEVBQUUsa0NBQWtDLHFDQUFxQyxRQUFRLGdDQUFnQyw2Q0FBNkMsK0NBQStDLDRDQUE0QyxtQ0FBbUMsUUFBUSxvQ0FBb0Msc0JBQXNCLG1CQUFtQixnQ0FBZ0MsMERBQTBELEtBQUssUUFBUSxFQUFFLE1BQU0sSUFBSSxLQUFLLG9CQUFvQixtREFBbUQsa0RBQWtELHFHQUFxRyxFQUFFLGlCQUFpQixxQkFBcUIsaUNBQWlDLHNDQUFzQyw0QkFBNEIsdURBQXVELHNCQUFzQixTQUFTLGVBQWUsd0JBQXdCLG1CQUFtQixLQUFLLHlCQUF5QiwwQ0FBMEMsWUFBWSxzSUFBc0ksZ0VBQWdFLEdBQUcsU0FBUyx3QkFBd0IsOEJBQThCLGNBQWMsV0FBVyxjQUFjLFlBQVksVUFBVSwwQkFBMEIsVUFBVSwwQkFBMEIsUUFBUSxhQUFhLFdBQVcsNEJBQTRCLFdBQVcsK0RBQStELGVBQWUsTUFBTSxFQUFFLG1CQUFtQix5RUFBeUUsMEJBQTBCLGlFQUFpRSxTQUFTLG1CQUFtQixTQUFTLGNBQWMsK0JBQStCLHNCQUFzQixrREFBa0QsNENBQUMsV0FBVyxJQUFJLEVBQUUsd0JBQXdCLGdCQUFnQixVQUFVLDRCQUE0QiwrREFBK0Qsc0NBQXNDLG9IQUFvSCwwQkFBMEIsK0RBQStELHNDQUFzQyxxQ0FBcUMsNEJBQTRCLHVCQUF1Qix1QkFBdUIsaUJBQWlCLDhCQUE4Qiw2QkFBNkIsRUFBRSx1QkFBdUIsa0NBQWtDLHlDQUF5Qyw0Q0FBNEMseUJBQXlCLDJFQUEyRSx1Q0FBdUMsZ0NBQWdDLCtDQUErQyxrQkFBa0IsRUFBRSxxQ0FBcUMsNENBQTRDLDBHQUEwRyxRQUFRLGNBQWMsS0FBSyxpQkFBaUIsNkJBQTZCLFNBQVMsb0JBQW9CLHlDQUF5QyxnQ0FBZ0MsdUJBQXVCLEVBQUUsaUJBQWlCLDBCQUEwQix5RkFBeUYsZ0VBQWdFLDhOQUE4TixJQUFJLGVBQWUsT0FBTyxxTEFBcUwsT0FBTyx1QkFBdUIscUJBQXFCLDBCQUEwQixxRkFBcUYsTUFBTSxzQkFBc0IsZUFBZSx1QkFBdUIscUJBQXFCLDBCQUEwQixpRkFBaUYsUUFBUSxRQUFRLHlCQUF5Qix5REFBeUQsWUFBWSxNQUFNLGtCQUFrQixpSEFBaUgsNkJBQTZCLElBQUksd0JBQXdCLHVDQUF1Qyx3QkFBd0IsdUNBQXVDLG9DQUFvQyw4QkFBOEIsOENBQThDLGlCQUFpQixxQkFBcUIsaUNBQWlDLHNDQUFzQyw0QkFBNEIsdURBQXVELHNCQUFzQixTQUFTLHdCQUF3QixtREFBbUQsY0FBYyxjQUFjLFFBQVEsWUFBWSxNQUFNLHdCQUF3QixVQUFVLDBCQUEwQixVQUFVLDBCQUEwQixjQUFjLHFCQUFxQixRQUFRLGFBQWEseUJBQXlCLDRCQUE0QixXQUFXLG1CQUFtQixPQUFPLHVpQkFBdWlCLHlCQUF5Qiw0QkFBNEIsc0JBQXNCLFdBQVcsb0RBQW9ELEVBQUUsdUJBQXVCLHNSQUFzUixzQkFBc0Isa0hBQWtILHNCQUFzQiwwTkFBME4seUJBQXlCLDhGQUE4Rix3QkFBd0IsMEZBQTBGLDBCQUEwQixXQUFXLDRFQUE0RSxFQUFFLHVCQUF1QiwwQkFBMEIsMEJBQTBCLCtCQUErQixVQUFVLHVCQUF1QiwyQkFBMkIsdUJBQXVCLGtDQUFrQyxtREFBbUQsMkNBQTJDLCtFQUErRSwwQkFBMEIsbUNBQW1DLDRDQUE0QyxFQUFFLHlCQUF5QixtQ0FBbUMsMkNBQTJDLEVBQUUsdUJBQXVCLDBEQUEwRCx5Q0FBeUMsc0JBQXNCLE9BQU8sb2NBQW9jLDhDQUE4Qyx3QkFBd0IsbUJBQW1CLEtBQUsseUJBQXlCLDBDQUEwQyxZQUFZLHNJQUFzSSxnRUFBZ0UsR0FBRyxTQUFTLEVBQUUsc0JBQXNCLEtBQUssbUNBQW1DLHlDQUF5QyxPQUFPLG9CQUFvQixjQUFjLDZEQUE2RCxpRkFBaUYsS0FBSyxpQkFBaUIsOEJBQThCLHdFQUF3RSxvQkFBb0IscUNBQXFDLFNBQVMsUUFBUSxjQUFjLGNBQWMsUUFBUSxZQUFZLGFBQWEscUJBQXFCLGtCQUFrQixhQUFhLFVBQVUsMEJBQTBCLFVBQVUsMEJBQTBCLGNBQWMscUJBQXFCLFFBQVEsYUFBYSxpQkFBaUIsYUFBYSxpQkFBaUIsT0FBTywrQkFBK0IsV0FBVyxvQkFBb0IscUNBQXFDLGdDQUFnQyx3REFBd0QsUUFBUSxtQ0FBbUMsdUNBQXVDLFVBQVUsdUJBQXVCLCtEQUErRCw2QkFBNkIsbUdBQW1HLDBDQUEwQyxxQkFBcUIsbUNBQW1DLG9CQUFvQixFQUFFLHNDQUFzQyxxREFBcUQsb0JBQW9CLFdBQVcsa0NBQWtDLG9DQUFvQyxrQ0FBa0MsK0JBQStCLGdCQUFnQixZQUFZLHdDQUF3QyxFQUFFLElBQUksMkJBQTJCLCtDQUErQyxvREFBb0Qsb0NBQW9DLHNDQUFzQyxxQkFBcUIsV0FBVyxrQ0FBa0Msb0RBQW9ELGdDQUFnQyw0Q0FBNEMsK0JBQStCLDBEQUEwRCxFQUFFLGdEQUFnRCxzQkFBc0IsK0JBQStCLGFBQWEsMk5BQTJOLEtBQUssOEJBQThCLEdBQUcsb0JBQW9CLFdBQVcsZ0JBQWdCLDRDQUE0QyxvQkFBb0IsZ0JBQWdCLHNDQUFzQyxrQkFBa0Isd0NBQXdDLE1BQU0sdUJBQXVCLDZCQUE2QiwwQ0FBMEMsTUFBTSwyQ0FBMkMsZ0JBQWdCLFlBQVksZUFBZSxZQUFZLFFBQVEsWUFBWSxRQUFRLGFBQWEsY0FBYyxhQUFhLFdBQVcsZ0NBQWdDLHlHQUF5RyxrQkFBa0IsS0FBSyxVQUFVLDJCQUEyQixXQUFXLHFDQUFxQyxrRkFBa0YsY0FBYyxLQUFLLGlCQUFpQiwyQkFBMkIsaUVBQWlFLDhCQUE4QixXQUFXLGtFQUFrRSxvRkFBb0YsaURBQWlELEtBQUssaUJBQWlCLDZCQUE2QixvRUFBb0UsNEJBQTRCLHFFQUFxRSx5Q0FBeUMsR0FBRywyQkFBMkIsa0NBQWtDLGlEQUFpRCxhQUFhLEdBQUcsb0JBQW9CLGdCQUFnQixpQ0FBaUMsc0RBQXNELGlCQUFpQixxQkFBcUIsaUNBQWlDLHNDQUFzQyw0QkFBNEIsdURBQXVELHNCQUFzQixTQUFTLGVBQWUsd0JBQXdCLG1CQUFtQixLQUFLLHlCQUF5QiwwQ0FBMEMsWUFBWSxzSUFBc0ksZ0VBQWdFLEdBQUcsU0FBUyx3QkFBd0IsNkJBQTZCLFFBQVEsd0JBQXdCLGVBQWUsY0FBYyxRQUFRLDJCQUEyQixhQUFhLDJCQUEyQixNQUFNLDBCQUEwQixNQUFNLDBCQUEwQixjQUFjLDJCQUEyQixRQUFRLHdCQUF3QixpQkFBaUIsMkJBQTJCLE9BQU8sWUFBWSxxQkFBcUIsd0JBQXdCLFdBQVcseUJBQXlCLDBDQUEwQyxzQkFBc0Isb0NBQW9DLFVBQVUsc0JBQXNCLFdBQVcsU0FBUyw0REFBNEQseUNBQXlDLEVBQUUsd0JBQXdCLDBDQUEwQyxVQUFVLDREQUE0RCxFQUFFLDBFQUEwRSx1QkFBdUIsV0FBVyxTQUFTLDBEQUEwRCxxRUFBcUUsRUFBRSwwQkFBMEIsK0NBQStDLDZDQUE2QyxvQ0FBb0MsZ0RBQWdELDBCQUEwQixrQ0FBa0MsMkNBQTJDLDRDQUE0Qyw4QkFBOEIseUdBQXlHLDJEQUEyRCxLQUFLLDBCQUEwQixhQUFhLHlFQUF5RSwwQ0FBMEMsS0FBSyxpQkFBaUIsb0NBQW9DLE1BQU0sa0NBQWtDLGdEQUFnRCxPQUFPLG9CQUFvQixnQkFBZ0IsZ0NBQWdDLDBCQUEwQixFQUFFLGlCQUFpQixxQkFBcUIsaUNBQWlDLHNDQUFzQyw0QkFBNEIsdURBQXVELHNCQUFzQixTQUFTLGVBQWUsd0JBQXdCLG1CQUFtQixLQUFLLHlCQUF5QiwwQ0FBMEMsWUFBWSxzSUFBc0ksZ0VBQWdFLEdBQUcsU0FBUyx3QkFBd0IsK0JBQStCLFFBQVEsd0JBQXdCLGVBQWUsY0FBYyxRQUFRLDJCQUEyQixhQUFhLDJCQUEyQixNQUFNLDBCQUEwQixNQUFNLDBCQUEwQixjQUFjLDJCQUEyQixpQkFBaUIsNEJBQTRCLFdBQVcsdUJBQXVCLHNDQUFzQyxVQUFVLHNCQUFzQixXQUFXLFNBQVMsNERBQTRELDJDQUEyQyxFQUFFLHdCQUF3Qiw4QkFBOEIsVUFBVSw0REFBNEQsRUFBRSwwRUFBMEUsdUJBQXVCLFdBQVcsU0FBUyw0REFBNEQscUVBQXFFLEVBQUUsMEJBQTBCLCtDQUErQywrQ0FBK0Msb0NBQW9DLGtEQUFrRCw0QkFBNEIsa0NBQWtDLDZDQUE2QyxnREFBZ0QsZ0NBQWdDLGlIQUFpSCw2REFBNkQsS0FBSywwQkFBMEIsYUFBYSx5RUFBeUUsMENBQTBDLEtBQUssaUJBQWlCLHNDQUFzQyxNQUFNLGtDQUFrQyxrREFBa0QsT0FBTyxvQkFBb0IsZ0JBQWdCLGtDQUFrQywwQkFBMEIsRUFBRSxpQkFBaUIscUJBQXFCLGlDQUFpQyxzQ0FBc0MsNEJBQTRCLHVEQUF1RCxzQkFBc0IsU0FBUyxlQUFlLHdCQUF3QixtQkFBbUIsS0FBSyx5QkFBeUIsMENBQTBDLFlBQVksc0lBQXNJLGdFQUFnRSxHQUFHLFNBQVMsc0JBQXNCLDRCQUE0QixRQUFRLHdCQUF3QixlQUFlLGNBQWMsUUFBUSwyQkFBMkIsY0FBYywyQkFBMkIsYUFBYSwyQkFBMkIsTUFBTSwwQkFBMEIsTUFBTSwwQkFBMEIscUJBQXFCLHVCQUF1QixRQUFRLHlCQUF5QixXQUFXLHlCQUF5QiwwQ0FBMEMsdUJBQXVCLHdFQUF3RSxxQkFBcUIsMkNBQTJDLGdHQUFnRyxHQUFHLFFBQVEsUUFBUSxvQkFBb0IsdURBQXVELGVBQWUsVUFBVSxzQkFBc0IsV0FBVyxTQUFTLHlDQUF5Qyx3Q0FBd0MsRUFBRSx3QkFBd0IsbUNBQW1DLHVCQUF1QixXQUFXLFNBQVMseUNBQXlDLG9FQUFvRSxFQUFFLGtDQUFrQyxtREFBbUQsK0JBQStCLGlEQUFpRCxnR0FBZ0csRUFBRSwwREFBMEQsRUFBRSwyQkFBMkIseUVBQXlFLGlDQUFpQyxtREFBbUQsMEJBQTBCLGVBQWUsS0FBSywwQkFBMEIsYUFBYSx5RUFBeUUsNEJBQTRCLEtBQUssaUJBQWlCLG1DQUFtQyxPQUFPLG9CQUFvQixXQUFXLGVBQWUsK0JBQStCLGdDQUFnQywwQkFBMEIsS0FBSyxFQUFFLHFCQUFxQiwrRUFBK0UsaUJBQWlCLFlBQVksV0FBVyxLQUFLLFdBQVcsK0dBQStHLHVCQUF1Qix5Q0FBeUMsZUFBZSxnQkFBZ0IsOERBQThELFFBQVEsV0FBVyxtREFBUSxrQ0FBa0MsNENBQUMsaUdBQWlHLGNBQWMsb0NBQW9DLDZCQUE2QixFQUFFLCtCQUErQixzQkFBc0IseURBQXlELElBQUksRUFBRSxtQ0FBbUMsNkRBQTZELDZEQUE2RCxFQUFFLGlDQUFpQyxtREFBbUQsT0FBTyw0Q0FBQywwQkFBMEIsSUFBSSxFQUFFLG1DQUFtQyxrREFBa0QsTUFBTSw0Q0FBQyxvREFBb0QsNENBQUMsZ0RBQWdELG1DQUFtQyxJQUFJLEVBQUUseUNBQXlDLGtDQUFrQyxFQUFFLHdDQUF3QyxrQ0FBa0MsRUFBRSwyQ0FBMkMscUZBQXFGLDRDQUFDLGdGQUFnRiwrQ0FBK0MsV0FBVyxJQUFJLEtBQUssR0FBRyxpQkFBaUIscUJBQXFCLGlDQUFpQyxzQ0FBc0MsNEJBQTRCLHVEQUF1RCxzQkFBc0IsU0FBUyxlQUFlLHdCQUF3QixtQkFBbUIsS0FBSyx5QkFBeUIsMENBQTBDLFlBQVksc0lBQXNJLGdFQUFnRSxHQUFHLFNBQVMsMkJBQTJCLDZCQUE2QixjQUFjLGNBQWMsZUFBZSxZQUFZLGlCQUFpQixZQUFZLFFBQVEsWUFBWSxPQUFPLG1CQUFtQixlQUFlLFlBQVksYUFBYSx3QkFBd0IsVUFBVSwwQkFBMEIsVUFBVSwwQkFBMEIsT0FBTyxZQUFZLFdBQVcsd0JBQXdCLFFBQVEsd0JBQXdCLGtCQUFrQiwyQkFBMkIsZUFBZSwwQkFBMEIsTUFBTSx3QkFBd0IsT0FBTywyQkFBMkIsV0FBVyx3QkFBd0IsUUFBUSx3QkFBd0IscUJBQXFCLGFBQWEsaUJBQWlCLE9BQU8sZ0lBQWdJLFdBQVcsbUJBQW1CLE9BQU8sME9BQTBPLDRCQUE0Qix3R0FBd0csa0JBQWtCLElBQUksdUJBQXVCLFVBQVUsK0tBQStLLG9HQUFvRyx3QkFBd0IsOEJBQThCLDBCQUEwQix5REFBeUQsbUNBQW1DLDZCQUE2QixlQUFlLDZCQUE2QixjQUFjLDRCQUE0QixjQUFjLDRCQUE0QixHQUFHLHFCQUFxQixvQkFBb0Isa0JBQWtCLDBCQUEwQix5RUFBQyxHQUFHLFFBQVEsMkVBQTJFLG9CQUFvQixXQUFXLDJCQUEyQixtQkFBbUIsR0FBRyxtRUFBQyx5Q0FBeUMsa0VBQUMsS0FBSyxHQUFHLGNBQWMsa0JBQWtCLFdBQVcsOEJBQThCLGtFQUFDLDZDQUE2QyxtRUFBQywyQ0FBMkMsS0FBSyxVQUFVLHNCQUFzQiw4REFBOEQsK0JBQStCLDJGQUEyRixpQ0FBaUMsa0VBQWtFLHdDQUF3QyxnREFBZ0Qsc0NBQXNDLEdBQUcsd0JBQXdCLGlIQUFpSCwyQkFBMkIscUVBQXFFLDRDQUE0QyxjQUFjLHlCQUF5QixnQkFBZ0IsSUFBSSxrQ0FBa0MsNENBQUMsWUFBWSw0Q0FBQyxvQkFBb0IsMkRBQTJELDhCQUE4QixpSkFBaUosZ0NBQWdDLFVBQVUsMkRBQTJELEVBQUUsOEJBQThCLDRDQUE0Qyw0R0FBNEcsaU9BQWlPLHlCQUF5QixxRUFBcUUsNkhBQTZILHdCQUF3QixxRUFBcUUseUVBQXlFLHdCQUF3QixZQUFZLHVDQUF1QyxzQkFBc0Isa0JBQWtCLHFCQUFxQixnQkFBZ0Isd0JBQXdCLEVBQUUscUJBQXFCLHlDQUF5Qyw2RUFBNkUsOENBQThDLDBCQUEwQiw4Q0FBOEMsS0FBSyxVQUFVLGdGQUFnRixFQUFFLG9CQUFvQixxQkFBcUIsMEVBQTBFLElBQUksaUJBQWlCLDBCQUEwQixZQUFZLGtDQUFrQywrQkFBK0IsK0JBQStCLHFDQUFxQyxRQUFRLHNCQUFzQiwrQkFBK0IsY0FBYyxvQkFBb0IsRUFBRSw4SUFBOEksTUFBTSwrQkFBK0IsRUFBRSx1QkFBdUIsK0JBQStCLE9BQU8sMElBQTBJLEtBQUssc0NBQXNDLEVBQUUsb0JBQW9CLDhLQUE4SyxrQ0FBa0MseUNBQXlDLElBQUksd0JBQXdCLCtCQUErQixPQUFPLHFJQUFxSSxLQUFLLG9HQUFvRyxFQUFFLHlCQUF5QiwrQkFBK0IsT0FBTyx5UUFBeVEsS0FBSyw2R0FBNkcsRUFBRSxzQkFBc0IsZ0RBQWdELCtCQUErQixPQUFPLGdQQUFnUCxLQUFLLG9DQUFvQyxFQUFFLHdCQUF3QixnREFBZ0QsK0JBQStCLE9BQU8sK05BQStOLEtBQUssb0NBQW9DLEVBQUUscUJBQXFCLDhDQUE4QywrQkFBK0IsT0FBTywwTkFBME4sS0FBSyxvQ0FBb0MsRUFBRSx3QkFBd0IsV0FBVywrQkFBK0IsT0FBTyxpSUFBaUksS0FBSyxrQkFBa0Isd0JBQXdCLHFCQUFxQixpQ0FBaUMsR0FBRyxvQkFBb0IsZ0JBQWdCLDREQUE0RCxzSkFBc0osRUFBRSxlQUFlLHVCQUF1QixNQUFNLGdGQUFnRiwwQkFBMEIsa0RBQWtELHdCQUF3QixpQkFBaUIsRUFBRSxFQUFFLGVBQWUsb0JBQW9CLGtDQUFrQyxnQkFBZ0IsU0FBUywrQkFBK0Isc0JBQXNCLDhDQUE4QyxnSkFBZ0osY0FBYyx5Q0FBeUMsUUFBUSxpQkFBaUIsVUFBVSxlQUFlLEVBQUUseUJBQXlCLHlCQUF5QixpQkFBaUIsOEJBQThCLGtHQUFrRyxzQ0FBc0MsVUFBVSxpQ0FBaUMsVUFBVSw4Q0FBOEMsdUJBQXVCLDJFQUEyRSxpQkFBaUIscUJBQXFCLGlDQUFpQyxzQ0FBc0MsNEJBQTRCLHVEQUF1RCxzQkFBc0IsU0FBUyxlQUFlLHdCQUF3QixtQkFBbUIsS0FBSyx5QkFBeUIsMENBQTBDLFlBQVksc0lBQXNJLGdFQUFnRSxHQUFHLFNBQVMsUUFBUSxrQ0FBa0Msb0JBQW9CLG1DQUFtQyxPQUFPLGVBQWUsYUFBYSxlQUFlLFFBQVEsSUFBSSwyQkFBMkIsT0FBTyxpQ0FBaUMsWUFBWSx3QkFBd0IsV0FBVyx3QkFBd0IsaUJBQWlCLDJCQUEyQixlQUFlLDJCQUEyQixPQUFPLDJCQUEyQixRQUFRLHdCQUF3QixpQkFBaUIsOEJBQThCLGtCQUFrQiwyQkFBMkIsZUFBZSwwQkFBMEIsUUFBUSxpQ0FBaUMsU0FBUywyQkFBMkIsZUFBZSwyQkFBMkIsVUFBVSx3QkFBd0IsY0FBYyxpQ0FBaUMsUUFBUSw4QkFBOEIsZUFBZSx1QkFBdUIsZUFBZSxjQUFjLFVBQVUsMEJBQTBCLFVBQVUsMEJBQTBCLHFCQUFxQix1QkFBdUIsV0FBVyx3QkFBd0IsU0FBUyx3QkFBd0IsV0FBVyx3QkFBd0IsaUJBQWlCLHdCQUF3QixtQkFBbUIsd0JBQXdCLFdBQVcsaUNBQWlDLE1BQU0sd0JBQXdCLFNBQVMsMkJBQTJCLGdCQUFnQix3QkFBd0IsU0FBUyx1QkFBdUIsU0FBUywwQkFBMEIsaUJBQWlCLE9BQU8sMERBQTBELFdBQVcsbUJBQW1CLE9BQU8sa0dBQWtHLHdCQUF3Qix5RkFBeUYsd0JBQXdCLDBDQUEwQyxvRUFBb0UsWUFBWSwrQkFBK0IseUJBQXlCLHNEQUFzRCxvRUFBb0UsWUFBWSwrQkFBK0IseUJBQXlCLHdDQUF3Qyx3QkFBd0Isc0ZBQXNGLE9BQU8saUhBQWlILGVBQWUsZUFBZSx1QkFBdUIsMERBQTBELGtDQUFrQywyQkFBMkIsc0JBQXNCLGdDQUFnQyxvQkFBb0IsU0FBUyxhQUFhLHVCQUF1QixTQUFTLGNBQWMsaUJBQWlCLGFBQWEsMEJBQTBCLHFIQUFxSCw4QkFBOEIsK0JBQStCLG1CQUFtQix3R0FBd0csTUFBTSxTQUFTLFVBQVUsMEJBQTBCLHlCQUF5QixXQUFXLHdDQUF3QyxFQUFFLHdDQUF3QyxXQUFXLHdDQUF3QyxHQUFHLEVBQUUsMExBQTBMLEVBQUUsNkJBQTZCLDZDQUE2QyxRQUFRLFNBQVMsb0JBQW9CLG9CQUFvQixjQUFjLDZCQUE2QixXQUFXLGlFQUFpRSxtQkFBbUIsU0FBUyxvQkFBb0IsbUJBQW1CLGtDQUFrQyxVQUFVLG1DQUFtQyxnQkFBZ0IsK0ZBQStGLCtEQUErRCxxRUFBcUUsaUhBQWlILG9CQUFvQixvQ0FBb0MsMEJBQTBCLDhDQUE4QyxVQUFVLDBCQUEwQiwyREFBMkQsMkJBQTJCLDBEQUEwRCx5RUFBQywwQkFBMEIsd0JBQXdCLHVEQUF1RCx5QkFBeUIsUUFBUSwyRUFBMkUsbURBQW1ELG1GQUFtRix1QkFBdUIsZ0JBQWdCLGlGQUFpRix3QkFBd0Isa0RBQWtELHVCQUF1Qix3SUFBd0kseUJBQXlCLGtDQUFrQyx3Q0FBd0MsNEJBQTRCLGdGQUFnRixNQUFNLGlEQUFpRCxpQkFBaUIsK0JBQStCLDZCQUE2QixJQUFJLDJCQUEyQiwrQkFBK0IsT0FBTyx3UkFBd1IsY0FBYyw0QkFBNEIsZ0ZBQWdGLFlBQVksMEJBQTBCLEtBQUssa0RBQWtELGlCQUFpQixFQUFFLCtCQUErQiw2Q0FBNkMsT0FBTyxFQUFFLDJLQUEySyxtQkFBbUIsOEJBQThCLE9BQU8sWUFBWSxlQUFlLE1BQU0sRUFBRSxZQUFZLE1BQU0seUJBQXlCLGVBQWUsWUFBWSxxQkFBcUIsc0JBQXNCLCtCQUErQixPQUFPLG9rQkFBb2tCLEtBQUssb0ZBQW9GLGNBQWMsNEJBQTRCLHVFQUF1RSxlQUFlLEdBQUcsb0JBQW9CLGdCQUFnQiw0Q0FBNEMscUJBQXFCLG9CQUFvQixnQ0FBZ0MsRUFBRSxRQUFRLG9EQUFvRCxnRUFBZ0UsaUJBQWlCLGVBQWUsMkNBQUMsMkRBQTJELHNCQUFzQixpQkFBaUIsNkJBQTZCLDJDQUFDLG1FQUFtRSw0QkFBNEIsaUJBQWlCLEtBQUssZUFBZSx5QkFBeUIsY0FBYyx3QkFBd0IsRUFBRSw0REFBNEQsaUVBQWUsRUFBRSxFQUE2QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AbWF0aGlldXN0YW4vdnVlLWRhdGVwaWNrZXIvZGlzdC92dWUtZGF0ZXBpY2tlci5lc20uanM/MTY3OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIFZ1ZS1kYXRlcGlja2VyIHYwLjIuMTFcbiAqIChjKSAyMDE5LTIwMjAgTWF0aGlldSBTdGFub3dza2lcbiAqL1xuaW1wb3J0e2NsZWFyQWxsQm9keVNjcm9sbExvY2tzIGFzIHQsZGlzYWJsZUJvZHlTY3JvbGwgYXMgZSxlbmFibGVCb2R5U2Nyb2xsIGFzIG59ZnJvbVwiYm9keS1zY3JvbGwtbG9ja1wiO2ltcG9ydCByIGZyb21cInZ1ZVwiO2ltcG9ydCBpIGZyb21cImRheWpzXCI7dmFyIGE9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fSxvPXtuYW1lOlwiZW5cIix3ZWVrZGF5czpcIlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5XCIuc3BsaXQoXCJfXCIpLHdlZWtkYXlzU2hvcnQ6XCJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXRcIi5zcGxpdChcIl9cIiksd2Vla2RheXNNaW46XCJTdV9Nb19UdV9XZV9UaF9Gcl9TYVwiLnNwbGl0KFwiX1wiKSxtb250aHM6XCJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyXCIuc3BsaXQoXCJfXCIpLG1vbnRoc1Nob3J0OlwiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWNcIi5zcGxpdChcIl9cIiksd2Vla1N0YXJ0OjAsZm9ybWF0czp7TFQ6XCJISDptbVwiLExUUzpcIkhIOm1tOnNzXCIsTDpcIkREL01NL1lZWVlcIixMTDpcIkQgTU1NTSBZWVlZXCIsTExMOlwiRCBNTU1NIFlZWVkgSEg6bW1cIixMTExMOlwiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW1cIn0sb3JkaW5hbDpmdW5jdGlvbih0KXt2YXIgZT1bXCJ0aFwiLFwic3RcIixcIm5kXCIsXCJyZFwiXSxuPXQlMTAwO3JldHVyblwiW1wiLmNvbmNhdCh0KS5jb25jYXQoZVsobi0yMCklMTBdfHxlW25dfHxlWzBdLFwiXVwiKX0sYnV0dG9uVmFsaWRhdGU6XCJPa1wiLGJ1dHRvbkNhbmNlbDpcIkNhbmNlbFwiLHJhbmdlSGVhZGVyVGV4dDpcIkZyb20gJWQgVG8gJWRcIn0scz17bmFtZTpcImZyXCIsd2Vla2RheXM6XCJEaW1hbmNoZV9MdW5kaV9NYXJkaV9NZXJjcmVkaV9KZXVkaV9WZW5kcmVkaV9TYW1lZGlcIi5zcGxpdChcIl9cIiksbW9udGhzOlwiSmFudmllcl9Gw6l2cmllcl9NYXJzX0F2cmlsX01haV9KdWluX0p1aWxsZXRfQW/Du3RfU2VwdGVtYnJlX09jdG9icmVfTm92ZW1icmVfRMOpY2VtYnJlXCIuc3BsaXQoXCJfXCIpLHdlZWtTdGFydDoxLHdlZWtkYXlzU2hvcnQ6XCJEaW1fTHVuX01hcl9NZXJfSmV1X1Zlbl9TYW1cIi5zcGxpdChcIl9cIiksbW9udGhzU2hvcnQ6XCJKYW52X0bDqXZyX01hcnNfQXZyX01haV9KdWluX0p1aWxfQW/Du3RfU2VwdF9PY3RfTm92X0TDqWNcIi5zcGxpdChcIl9cIiksd2Vla2RheXNNaW46XCJEaV9MdV9NYV9NZV9KZV9WZV9TYVwiLnNwbGl0KFwiX1wiKSxvcmRpbmFsOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxmb3JtYXRzOntMVDpcIkhIOm1tXCIsTFRTOlwiSEg6bW06c3NcIixMOlwiREQuTU0uWVlZWVwiLExMOlwiRCBNTU1NIFlZWVlcIixMTEw6XCJEIE1NTU0gWVlZWSBISDptbVwiLExMTEw6XCJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tXCJ9LGJ1dHRvblZhbGlkYXRlOlwiT2tcIixidXR0b25DYW5jZWw6XCJBbm51bGVyXCIscmFuZ2VIZWFkZXJUZXh0OlwiRHUgJWQgQXUgJWRcIn0sYz17bmFtZTpcImVzXCIsbW9udGhzU2hvcnQ6XCJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpY1wiLnNwbGl0KFwiX1wiKSx3ZWVrZGF5czpcImRvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkb1wiLnNwbGl0KFwiX1wiKSx3ZWVrZGF5c1Nob3J0OlwiZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuXCIuc3BsaXQoXCJfXCIpLHdlZWtkYXlzTWluOlwiZG9fbHVfbWFfbWlfanVfdmlfc8OhXCIuc3BsaXQoXCJfXCIpLG1vbnRoczpcIkVuZXJvX0ZlYnJlcm9fTWFyem9fQWJyaWxfTWF5b19KdW5pb19KdWxpb19BZ29zdG9fU2VwdGllbWJyZV9PY3R1YnJlX05vdmllbWJyZV9EaWNpZW1icmVcIi5zcGxpdChcIl9cIiksd2Vla1N0YXJ0OjEsZm9ybWF0czp7TFQ6XCJIOm1tXCIsTFRTOlwiSDptbTpzc1wiLEw6XCJERC9NTS9ZWVlZXCIsTEw6XCJEIFtkZV0gTU1NTSBbZGVdIFlZWVlcIixMTEw6XCJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbVwiLExMTEw6XCJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbVwifSxvcmRpbmFsOmZ1bmN0aW9uKHQpe3JldHVyblwiXCIuY29uY2F0KHQsXCLCulwiKX0sYnV0dG9uVmFsaWRhdGU6XCJPa1wiLGJ1dHRvbkNhbmNlbDpcIkFudWxhclwiLHJhbmdlSGVhZGVyVGV4dDpcIkRlbCAlZCBBbCAlZFwifSxsPXtuYW1lOlwiZGVcIix3ZWVrZGF5czpcIlNvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnXCIuc3BsaXQoXCJfXCIpLHdlZWtkYXlzU2hvcnQ6XCJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS5cIi5zcGxpdChcIl9cIiksbW9udGhzOlwiSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXJcIi5zcGxpdChcIl9cIiksbW9udGhzU2hvcnQ6XCJKYW4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6LlwiLnNwbGl0KFwiX1wiKSxvcmRpbmFsOmZ1bmN0aW9uKHQpe3JldHVyblwiXCIuY29uY2F0KHQsXCIuXCIpfSx3ZWVrU3RhcnQ6MSxmb3JtYXRzOntMVFM6XCJISDptbTpzc1wiLExUOlwiSEg6bW1cIixMOlwiREQuTU0uWVlZWVwiLExMOlwiRC4gTU1NTSBZWVlZXCIsTExMOlwiRC4gTU1NTSBZWVlZIEhIOm1tXCIsTExMTDpcImRkZGQsIEQuIE1NTU0gWVlZWSBISDptbVwifSxidXR0b25WYWxpZGF0ZTpcIk9rXCIsYnV0dG9uQ2FuY2VsOlwiQWJicmVjaGVuXCIscmFuZ2VIZWFkZXJUZXh0OlwiVm9tICVkIEJpcyAlZFwifSx1PXtuYW1lOlwiaGVcIix3ZWVrZGF5czpcIteo15DXqdeV159f16nXoNeZX9ep15zXmdep15lf16jXkdeZ16LXmV/Xl9ee15nXqdeZX9ep15nXqdeZX9ep15HXqlwiLnNwbGl0KFwiX1wiKSx3ZWVrZGF5c1Nob3J0Olwi15DXs1/XkdezX9eS17Nf15PXs1/XlNezX9eV17Nf16nXs1wiLnNwbGl0KFwiX1wiKSx3ZWVrZGF5c01pbjpcIteQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XlV/XqdezXCIuc3BsaXQoXCJfXCIpLG1vbnRoczpcIteZ16DXldeQ16hf16TXkdeo15XXkNeoX9ee16jXpV/XkNek16jXmdecX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXldeh15hf16HXpNeY157XkdeoX9eQ15XXp9eY15XXkdeoX9eg15XXkdee15HXqF/Xk9em157XkdeoXCIuc3BsaXQoXCJfXCIpLG1vbnRoc1Nob3J0Olwi15nXoNeVX9ek15HXqF/Xnteo16Vf15DXpNeoX9ee15DXmV/XmdeV16Bf15nXldecX9eQ15XXkl/Xodek15hf15DXldenX9eg15XXkV/Xk9em155cIi5zcGxpdChcIl9cIiksb3JkaW5hbDpmdW5jdGlvbih0KXtyZXR1cm4gdH0sZm9ybWF0czp7TFQ6XCJISDptbVwiLExUUzpcIkhIOm1tOnNzXCIsTDpcIkREL01NL1lZWVlcIixMTDpcIkQgW9eRXU1NTU0gWVlZWVwiLExMTDpcIkQgW9eRXU1NTU0gWVlZWSBISDptbVwiLExMTEw6XCJkZGRkLCBEIFvXkV1NTU1NIFlZWVkgSEg6bW1cIixsOlwiRC9NL1lZWVlcIixsbDpcIkQgTU1NIFlZWVlcIixsbGw6XCJEIE1NTSBZWVlZIEhIOm1tXCIsbGxsbDpcImRkZCwgRCBNTU0gWVlZWSBISDptbVwifSxidXR0b25WYWxpZGF0ZTpcIteQ15nXqdeV16hcIixidXR0b25DYW5jZWw6XCLXkdeZ15jXldecXCIscmFuZ2VIZWFkZXJUZXh0Olwi157XqteQ16jXmdeaICVkINei15Mg16rXkNeo15nXmiAlZFwifSxkPXtuYW1lOlwicnVcIix3ZWVrZGF5czpcItCS0L7RgdC60YDQtdGB0LXQvdGM0LVf0J/QvtC90LXQtNC10LvRjNC90LjQul/QktGC0L7RgNC90LjQul/QodGA0LXQtNCwX9Cn0LXRgtCy0LXRgNCzX9Cf0Y/RgtC90LjRhtCwX9Ch0YPQsdCx0L7RgtCwXCIuc3BsaXQoXCJfXCIpLHdlZWtkYXlzU2hvcnQ6XCLQktGBX9Cf0L1f0JLRgl/QodGAX9Cn0YJf0J/Rgl/QodCxXCIuc3BsaXQoXCJfXCIpLHdlZWtkYXlzTWluOlwi0JLRgV/Qn9C9X9CS0YJf0KHRgF/Qp9GCX9Cf0YJf0KHQsVwiLnNwbGl0KFwiX1wiKSxtb250aHM6XCLQr9C90LLQsNGA0Yxf0KTQtdCy0YDQsNC70Yxf0JzQsNGA0YJf0JDQv9GA0LXQu9GMX9Cc0LDQuV/QmNGO0L3RjF/QmNGO0LvRjF/QkNCy0LPRg9GB0YJf0KHQtdC90YLRj9Cx0YDRjF/QntC60YLRj9Cx0YDRjF/QndC+0Y/QsdGA0Yxf0JTQtdC60LDQsdGA0YxcIi5zcGxpdChcIl9cIiksbW9udGhzU2hvcnQ6XCLQr9C90LJf0KTQtdCyX9Cc0LDRgF/QkNC/0YBf0JzQsNC5X9CY0Y7QvV/QmNGO0Ltf0JDQstCzX9Ch0LXQvV/QntC60YJf0J3QvtGPX9CU0LXQulwiLnNwbGl0KFwiX1wiKSx3ZWVrU3RhcnQ6MSxmb3JtYXRzOntMVDpcIkhIOm1tXCIsTFRTOlwiSEg6bW06c3NcIixMOlwiREQuTU0uWVlZWVwiLExMOlwiRCBNTU1NIFlZWVlcIixMTEw6XCJEIE1NTU0gWVlZWSBISDptbVwiLExMTEw6XCJkZGRkLCBEIE1NTU0gWVlZWSBISDptbVwifSxvcmRpbmFsOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxidXR0b25WYWxpZGF0ZTpcItCe0LpcIixidXR0b25DYW5jZWw6XCLQntGC0LzQtdC90LBcIixyYW5nZUhlYWRlclRleHQ6XCLQntGCICVkINCU0L4gJWRcIn0saD17bmFtZTpcInN2XCIsd2Vla2RheXM6XCJTw7ZuZGFnX03DpW5kYWdfVGlzZGFnX09uc2RhZ19Ub3JzZGFnX0ZyZWRhZ19Mw7ZyZGFnXCIuc3BsaXQoXCJfXCIpLHdlZWtkYXlzU2hvcnQ6XCJTw7ZuX03DpW5fVGlzX09uc19Ub3JfRnJlX0zDtnJcIi5zcGxpdChcIl9cIiksd2Vla2RheXNNaW46XCJTw7ZfTcOlX1RpX09uX1RvX0ZyX0zDtlwiLnNwbGl0KFwiX1wiKSxtb250aHM6XCJqYW51YXJpX2ZlYnJ1YXJpX21hcnNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3RpX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyXCIuc3BsaXQoXCJfXCIpLG1vbnRoc1Nob3J0OlwiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWNcIi5zcGxpdChcIl9cIiksd2Vla1N0YXJ0OjAsZm9ybWF0czp7TFQ6XCJISDptbVwiLExUUzpcIkhIOm1tOnNzXCIsTDpcIllZWVktTU0tRERcIixMTDpcIkQgTU1NTSBZWVlZXCIsTExMOlwiRCBNTU1NIFlZWVkgSEg6bW1cIixMTExMOlwiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW1cIn0sb3JkaW5hbDpmdW5jdGlvbih0KXt2YXIgZT1bXCJ0aFwiLFwic3RcIixcIm5kXCIsXCJyZFwiXSxuPXQlMTAwO3JldHVyblwiW1wiLmNvbmNhdCh0KS5jb25jYXQoZVsobi0yMCklMTBdfHxlW25dfHxlWzBdLFwiXVwiKX0sYnV0dG9uVmFsaWRhdGU6XCJPa1wiLGJ1dHRvbkNhbmNlbDpcIkF2YnJ5dFwiLHJhbmdlSGVhZGVyVGV4dDpcIkZyw6VuICVkIHRpbGwgJWRcIn0scD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxmcjpzLGVuOm8sZXM6YyxkZTpsLGhlOnUscnU6ZCxzdjpofSksZj1bXCJuYW1lXCIsXCJ3ZWVrZGF5c1wiLFwid2Vla2RheXNTaG9ydFwiLFwid2Vla2RheXNNaW5cIixcIndlZWtTdGFydFwiLFwibW9udGhzXCIsXCJtb250aHNTaG9ydFwiLFwib3JkaW5hbFwiLFwiZm9ybWF0c1wiLFwiYnV0dG9uQ2FuY2VsXCIsXCJidXR0b25WYWxpZGF0ZVwiLFwicmFuZ2VIZWFkZXJUZXh0XCJdLG09e2RhdGU6XCJERCBNTU1NIFlZWVlcIixtb250aDpcIk1NTU0gWVlZWVwiLHF1YXJ0ZXI6XCJZWVlZLVtRXVFcIix5ZWFyOlwiWVlZWVwiLHJhbmdlOlwiREQgTU1NTSBZWVlZXCJ9LHY9e2RhdGU6XCJZWVlZLU1NLUREXCIsbW9udGg6XCJZWVlZLU1NXCIscXVhcnRlcjpcIllZWVktUVwiLHllYXI6XCJZWVlZXCIscmFuZ2U6XCJZWVlZLU1NLUREXCJ9LHk9e2RhdGU6XCJkZGRkIEREIE1NTU1cIixtb250aDpcIk1NTU1cIixxdWFydGVyOlwiW1FdUVwiLHllYXI6XCJZWVlZXCIscmFuZ2U6XCJERCBNTU1NIFlZWVlcIn0sZz0xOTAwLGI9M2UzLEQ9XCJkYXRlXCIsXz1cIm1vbnRoXCIsaz1cInF1YXJ0ZXJcIixPPVwieWVhclwiLE09LyglZCkrLyx3PU9iamVjdC5mcmVlemUoe2VudGVyOjEzLHRhYjo5LGRlbGV0ZTo0Nixlc2M6Mjcsc3BhY2U6MzIsdXA6MzgsZG93bjo0MCxsZWZ0OjM3LHJpZ2h0OjM5LGVuZDozNSxob21lOjM2LGRlbDo0NixiYWNrc3BhY2U6OCxpbnNlcnQ6NDUscGFnZXVwOjMzLHBhZ2Vkb3duOjM0fSk7ZnVuY3Rpb24gWSh0LGUpe3ZhciBuPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gUyh0KXtmb3IodmFyIGU9YXJndW1lbnRzLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1udWxsIT1lW25dP2Vbbl06e307biUyP1koT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihlKXthKHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpZKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSkpfXJldHVybiB0fXZhciB4PXIuZXh0ZW5kKHtuYW1lOlwiTG9jYWxhYmxlXCIscHJvcHM6e2xvY2FsZTp7dHlwZTpPYmplY3QsZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybntsYW5nOnZvaWQgMH19fX0sY29tcHV0ZWQ6e2N1cnJlbnRMb2NhbGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxvY2FsZS5sYW5nO3JldHVybiBTKFMoe30sdGhpcy5sb2NhbGUpLHt9LHtsYW5nOnRoaXMuZ2V0TG9jYWxlKHQpfSl9fSxtZXRob2RzOntnZXREZWZhdWx0TGFuZzpmdW5jdGlvbigpe3JldHVybih0aGlzLiR2dWVkYXRlcGlja2VyJiZ0aGlzLiR2dWVkYXRlcGlja2VyLmxhbmd8fHdpbmRvdy5uYXZpZ2F0b3IudXNlckxhbmd1YWdlfHx3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlfHxcImVuXCIpLnN1YnN0cigwLDIpfSxpc1ZhbGlkTG9jYWxlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGU9T2JqZWN0LmtleXModCk7cmV0dXJuIGUubGVuZ3RoPjAmJmUuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBmLmluY2x1ZGVzKHQpfSkpfSxnZXRMb2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaXNWYWxpZExvY2FsZSh0KT90OnBbdF18fHRoaXMuZ2V0TG9jYWxlKHRoaXMuZ2V0RGVmYXVsdExhbmcoKSl9fX0pLEM9ci5leHRlbmQoe25hbWU6XCJNb2JpbGVcIixwcm9wczp7bW9iaWxlQnJlYWtwb2ludDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDo1NzYsdmFsaWRhdG9yOmZ1bmN0aW9uKHQpe3JldHVybiFpc05hTihOdW1iZXIodCkpfX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57d2lkdGg6MCxtb2JpbGU6ITEscmVzaXplVGltZW91dDp2b2lkIDB9fSxjb21wdXRlZDp7aXNNb2JpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb2JpbGV9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt3aW5kb3cmJih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHRoaXMub25SZXNpemUse3Bhc3NpdmU6ITB9KSx0aGlzLiRvbihcImhvb2s6ZGVzdHJveWVkXCIsKGZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix0Lm9uUmVzaXplLHtwYXNzaXZlOiEwfSl9KSksdGhpcy51cGRhdGUoKSl9LG1ldGhvZHM6e29uUmVzaXplOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dCksdGhpcy5yZXNpemVUaW1lb3V0PXNldFRpbWVvdXQodGhpcy51cGRhdGUsMjAwKX0sdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRDbGllbnRXaWR0aCgpO3RoaXMud2lkdGg9dCx0aGlzLm1vYmlsZT10PHBhcnNlSW50KHRoaXMubW9iaWxlQnJlYWtwb2ludCwxMCl9LGdldENsaWVudFdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuXCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50PzA6TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLHdpbmRvdy5pbm5lcldpZHRofHwwKX19fSk7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZiYmc2VsZjtmdW5jdGlvbiAkKHQsZSl7cmV0dXJuIHQoZT17ZXhwb3J0czp7fX0sZS5leHBvcnRzKSxlLmV4cG9ydHN9dmFyIEw9JCgoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/dC5leHBvcnRzPWU9ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTp0LmV4cG9ydHM9ZT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiB0fSxlKG4pfXQuZXhwb3J0cz1lfSkpLGo9W1wiY2xpY2tcIl0sUD1bXSxUPXtpbnN0YW5jZXM6UCxiaW5kOkUsdXBkYXRlOmZ1bmN0aW9uKHQsZSl7SlNPTi5zdHJpbmdpZnkoZS52YWx1ZSkhPT1KU09OLnN0cmluZ2lmeShlLm9sZFZhbHVlKSYmRSh0LGUpfSx1bmJpbmQ6QX07ZnVuY3Rpb24gRSh0LGUpe3ZhciBuPWUudmFsdWU7QSh0KTt2YXIgcj1uLGk9XCJmdW5jdGlvblwiPT10eXBlb2YgcixhPVwib2JqZWN0XCI9PT1MKHIpO2lmKChpfHxhKSYmISghMT09PXIuaXNBY3RpdmUpKXt2YXIgbz1mdW5jdGlvbih0KXt2YXIgZT10LmVsLG49dC5oYW5kbGVyO3JldHVybntlbDplLGV2ZW50SGFuZGxlcnM6ai5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybntldmVudDp0LGhhbmRsZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXQuZXZlbnQsbj10LmVsLHI9dC5oYW5kbGVyLGk9ZS5wYXRofHwoZS5jb21wb3NlZFBhdGg/ZS5jb21wb3NlZFBhdGgoKTp2b2lkIDApO2lmKGk/aS5pbmRleE9mKG4pPDA6IW4uY29udGFpbnMoZS50YXJnZXQpKXJldHVybiByKGUsbil9KHtldmVudDp0LGVsOmUsaGFuZGxlcjpufSl9fX0pKX19KHtlbDp0LGhhbmRsZXI6aT9yOnIuaGFuZGxlcn0pO28uZXZlbnRIYW5kbGVycy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmV2ZW50LG49dC5oYW5kbGVyO3JldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGUsbiwhMSl9KSwwKX0pKSxQLnB1c2gobyl9fWZ1bmN0aW9uIEEodCl7dmFyIGU9UC5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVsPT09dH0pKTstMSE9PWUmJihQW2VdLmV2ZW50SGFuZGxlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5ldmVudCxuPXQuaGFuZGxlcjtyZXR1cm4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4sITEpfSkpLFAuc3BsaWNlKGUsMSkpfXZhciBIPXttb2RlbDp7cHJvcDpcInZhbHVlXCIsZXZlbnQ6XCJpbnB1dFwifSxwcm9wczp7dmFsdWU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57aXNBY3RpdmU6ITF9fSx3YXRjaDp7dmFsdWU6e2hhbmRsZXI6ZnVuY3Rpb24odCl7dGhpcy5pc0FjdGl2ZT10fSxpbW1lZGlhdGU6ITB9LGlzQWN0aXZlOmZ1bmN0aW9uKHQpe3QhPT10aGlzLnZhbHVlJiZ0aGlzLiRlbWl0KFwiaW5wdXRcIix0KX19fTtmdW5jdGlvbiBOKHQsZSxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLGk9ZnVuY3Rpb24gaShhKXtuKGEpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGkscil9O3QuYWRkRXZlbnRMaXN0ZW5lcihlLGkscil9ZnVuY3Rpb24gQih0KXt2YXIgZT1MKHQpO3JldHVyblwiYm9vbGVhblwiPT09ZXx8XCJzdHJpbmdcIj09PWV8fHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX1mdW5jdGlvbiBGKHQpe2lmKG51bGwhPXQmJlwiXCIhPT10KXJldHVybiBpc05hTigrdCk/U3RyaW5nKHQpOlwiXCIuY29uY2F0KE51bWJlcih0KSxcInB4XCIpfWZ1bmN0aW9uIEkodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlwiZGVmYXVsdFwiLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9LHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTtyZXR1cm4gdC4kc2NvcGVkU2xvdHNbZV0/dC4kc2NvcGVkU2xvdHNbZV0mJnQuJHNjb3BlZFNsb3RzW2VdKG4pOiF0LiRzbG90c1tlXXx8biYmIXI/dm9pZCAwOnQuJHNsb3RzW2VdfWZ1bmN0aW9uIFYodCl7aWYoIXR8fHQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gMDt2YXIgZT0rd2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShcInotaW5kZXhcIik7cmV0dXJuIGV8fFYodC5wYXJlbnROb2RlKX12YXIgej17bWl4aW5zOltIXSxwcm9wczp7YWN0aXZhdG9yOntkZWZhdWx0OnZvaWQgMCx2YWxpZGF0b3I6ZnVuY3Rpb24odCl7cmV0dXJuW1wic3RyaW5nXCIsXCJvYmplY3RcIl0uaW5jbHVkZXMoTCh0KSl9fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2FjdGl2YXRvckVsZW1lbnQ6dm9pZCAwLGFjdGl2YXRvck5vZGU6W119fSx3YXRjaDp7YWN0aXZhdG9yOlwicmVzZXRBY3RpdmF0b3JcIn0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0LGUsbixyPShlPVwiYWN0aXZhdG9yXCIsbj0hMCwodD10aGlzKS4kc2xvdHNbZV0mJnQuJHNjb3BlZFNsb3RzW2VdJiZ0LiRzY29wZWRTbG90c1tlXS5uYW1lP24/XCJ2LXNsb3RcIjpcInNjb3BlZFwiOnQuJHNsb3RzW2VdP1wibm9ybWFsXCI6dC4kc2NvcGVkU2xvdHNbZV0/XCJzY29wZWRcIjp2b2lkIDApO3ImJltcInYtc2xvdFwiLFwibm9ybWFsXCJdLmluY2x1ZGVzKHIpJiZjb25zb2xlLmVycm9yKCdUaGUgYWN0aXZhdG9yIHNsb3QgbXVzdCBiZSBib3VuZCwgdHJ5IFxcJzx0ZW1wbGF0ZSB2LXNsb3Q6YWN0aXZhdG9yPVwieyBvbiB9XCI+PGJ1dHRvbiB2LW9uPVwib25cIj5cXCcnLHRoaXMpLHRoaXMuZ2V0QWN0aXZhdG9yKCl9LG1ldGhvZHM6e3Jlc2V0QWN0aXZhdG9yOmZ1bmN0aW9uKCl7dGhpcy5hY3RpdmF0b3JFbGVtZW50PXZvaWQgMCx0aGlzLmdldEFjdGl2YXRvcigpfSxnZW5BY3RpdmF0b3I6ZnVuY3Rpb24oKXt2YXIgdD1JKHRoaXMsXCJhY3RpdmF0b3JcIixPYmplY3QuYXNzaWduKHRoaXMuZ2V0VmFsdWVQcm94eSgpLHthdHRyczp7cm9sZTpcImJ1dHRvblwiLFwiYXJpYS1oYXNwb3B1cFwiOiEwLFwiYXJpYS1leHBhbmRlZFwiOlN0cmluZyh0aGlzLmlzQWN0aXZlKX19KSl8fFtdO3JldHVybiB0aGlzLmFjdGl2YXRvck5vZGU9dCx0fSxnZXRBY3RpdmF0b3I6ZnVuY3Rpb24odCl7aWYodGhpcy5hY3RpdmF0b3JFbGVtZW50KXJldHVybiB0aGlzLmFjdGl2YXRvckVsZW1lbnQ7dmFyIGU7aWYodGhpcy5hY3RpdmF0b3Ipe3ZhciBuPWRvY3VtZW50O2U9XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMuYWN0aXZhdG9yP24ucXVlcnlTZWxlY3Rvcih0aGlzLmFjdGl2YXRvcik6dGhpcy5hY3RpdmF0b3IuJGVsP3RoaXMuYWN0aXZhdG9yLiRlbDp0aGlzLmFjdGl2YXRvcn1lbHNlIHQ/ZT10LmN1cnJlbnRUYXJnZXR8fHQudGFyZ2V0OnRoaXMuYWN0aXZhdG9yTm9kZS5sZW5ndGgmJihlPXRoaXMuYWN0aXZhdG9yTm9kZVswXS5lbG0pO3JldHVybiB0aGlzLmFjdGl2YXRvckVsZW1lbnQ9ZSx0aGlzLmFjdGl2YXRvckVsZW1lbnR9LGdldENvbnRlbnRTbG90OmZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyxcImRlZmF1bHRcIix0aGlzLmdldFZhbHVlUHJveHkoKSwhMCl9LGdldFZhbHVlUHJveHk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybntnZXQgdmFsdWUoKXtyZXR1cm4gdC5pc0FjdGl2ZX0sc2V0IHZhbHVlKGUpe3QuaXNBY3RpdmU9ZX19fX19O3ZhciBXPWZ1bmN0aW9uKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9O3ZhciBxPWZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIFcodCl9O3ZhciBSPWZ1bmN0aW9uKHQpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCkpcmV0dXJuIEFycmF5LmZyb20odCl9O3ZhciBKPWZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIFcodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20odCk6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1codCxlKTp2b2lkIDB9fTt2YXIgWD1mdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfTt2YXIgUT1mdW5jdGlvbih0KXtyZXR1cm4gcSh0KXx8Uih0KXx8Sih0KXx8WCgpfTtmdW5jdGlvbiBVKHQsZSl7aWYodCl7dmFyIG49ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOk1hdGgucm91bmQoZS50b3ApLGxlZnQ6TWF0aC5yb3VuZChlLmxlZnQpLGJvdHRvbTpNYXRoLnJvdW5kKGUuYm90dG9tKSxyaWdodDpNYXRoLnJvdW5kKGUucmlnaHQpLHdpZHRoOk1hdGgucm91bmQoZS53aWR0aCksaGVpZ2h0Ok1hdGgucm91bmQoZS5oZWlnaHQpfX0odCk7aWYoITEhPT1lKXt2YXIgcj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KTtuLmxlZnQ9cGFyc2VJbnQoci5tYXJnaW5MZWZ0fHwwKSxuLnRvcD1wYXJzZUludChyLm1hcmdpblRvcHx8MCl9cmV0dXJuIG59fWZ1bmN0aW9uIFoodCxlKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihyPXIuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEcodCl7Zm9yKHZhciBlPWFyZ3VtZW50cyxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHI9bnVsbCE9ZVtuXT9lW25dOnt9O24lMj9aKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YSh0LGUscltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6WihPYmplY3QocikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpKX0pKX1yZXR1cm4gdH12YXIgSz17bmFtZTpcIlZETWVudVwiLG1peGluczpbeix7bmFtZTpcIkRldGFjaGFibGVcIixtaXhpbnM6W3tuYW1lOlwiQm9vdGFibGVcIixkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2lzQm9vdGVkOiExfX0sY29tcHV0ZWQ6e2hhc0NvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0Jvb3RlZHx8dGhpcy5pc0FjdGl2ZX19LHdhdGNoOntpc0FjdGl2ZTpmdW5jdGlvbigpe3RoaXMuaXNCb290ZWQ9ITB9fSxtZXRob2RzOntzaG93TGF6eUNvbnRlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzQ29udGVudCYmdD90KCk6W3RoaXMuJGNyZWF0ZUVsZW1lbnQoKV19fX1dLHByb3BzOnthdHRhY2g6e3ZhbGlkYXRvcjpCLGRlZmF1bHQ6ITF9LGNvbnRlbnRDbGFzczp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlwifX0sZGF0YTpmdW5jdGlvbigpe3JldHVybnthY3RpdmF0b3JOb2RlOnZvaWQgMCxoYXNEZXRhY2hlZDohMX19LHdhdGNoOnthdHRhY2g6ZnVuY3Rpb24oKXt0aGlzLmhhc0RldGFjaGVkPSExLHRoaXMuaW5pdERldGFjaCgpfSxoYXNDb250ZW50OmZ1bmN0aW9uKCl7dGhpcy4kbmV4dFRpY2sodGhpcy5pbml0RGV0YWNoKX19LGJlZm9yZU1vdW50OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLiRuZXh0VGljaygoZnVuY3Rpb24oKXt0LmFjdGl2YXRvck5vZGUmJihBcnJheS5pc0FycmF5KHQuYWN0aXZhdG9yTm9kZSk/dC5hY3RpdmF0b3JOb2RlOlt0LmFjdGl2YXRvck5vZGVdKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihlLmVsbSYmdC4kZWwucGFyZW50Tm9kZSl7dmFyIG49dC4kZWw9PT10LiRlbC5wYXJlbnROb2RlLmZpcnN0Q2hpbGQ/dC4kZWw6dC4kZWwubmV4dFNpYmxpbmc7dC4kZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZS5lbG0sbil9fSkpfSkpfSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy5oYXNDb250ZW50JiZ0aGlzLmluaXREZXRhY2goKX0sZGVhY3RpdmF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmlzQWN0aXZlPSExfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dHJ5e2lmKHRoaXMuJHJlZnMuY29udGVudCYmdGhpcy4kcmVmcy5jb250ZW50LnBhcmVudE5vZGUmJnRoaXMuJHJlZnMuY29udGVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuJHJlZnMuY29udGVudCksdGhpcy5hY3RpdmF0b3JOb2RlKShBcnJheS5pc0FycmF5KHRoaXMuYWN0aXZhdG9yTm9kZSk/dGhpcy5hY3RpdmF0b3JOb2RlOlt0aGlzLmFjdGl2YXRvck5vZGVdKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmVsbSYmdC5lbG0ucGFyZW50Tm9kZSYmdC5lbG0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0LmVsbSl9KSl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcih0KX19LG1ldGhvZHM6e2luaXREZXRhY2g6ZnVuY3Rpb24oKXt2YXIgdDt0aGlzLl9pc0Rlc3Ryb3llZHx8IXRoaXMuJHJlZnMuY29udGVudHx8dGhpcy5oYXNEZXRhY2hlZHx8XCJcIj09PXRoaXMuYXR0YWNofHwhMD09PXRoaXMuYXR0YWNofHwoKHQ9ITE9PT10aGlzLmF0dGFjaD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKXx8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImJvZHlcIik6XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMuYXR0YWNoP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5hdHRhY2gpOnRoaXMuYXR0YWNoKT8odC5hcHBlbmRDaGlsZCh0aGlzLiRyZWZzLmNvbnRlbnQpLHRoaXMuaGFzRGV0YWNoZWQ9ITApOmNvbnNvbGUuZXJyb3IoXCJVbmFibGUgdG8gbG9jYXRlIHRhcmdldCAnXCIuY29uY2F0KHRoaXMuYXR0YWNoLFwiJ1wiKSx0aGlzKSl9fX0se25hbWU6XCJEeW5hbWljUG9zaXRpb25cIixkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2FjdGl2YXRvckZpeGVkOiExLGRpbWVuc2lvbnM6e2FjdGl2YXRvcjp7dG9wOjAsbGVmdDowLGJvdHRvbTowLHJpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MCxvZmZzZXRUb3A6MCxzY3JvbGxIZWlnaHQ6MCxvZmZzZXRMZWZ0OjB9LGNvbnRlbnQ6e3RvcDowLGxlZnQ6MCxib3R0b206MCxyaWdodDowLHdpZHRoOjAsaGVpZ2h0OjAsb2Zmc2V0VG9wOjAsc2Nyb2xsSGVpZ2h0OjB9fSxpc0NvbnRlbnRBY3RpdmU6ITEscGFnZVdpZHRoOjAscGFnZVlPZmZzZXQ6MH19LGNvbXB1dGVkOntpc0F0dGFjaGVkOmZ1bmN0aW9uKCl7cmV0dXJuITEhPT10aGlzLmF0dGFjaH0sY29tcHV0ZWRMZWZ0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kaW1lbnNpb25zLGU9dC5hY3RpdmF0b3Isbj10LmNvbnRlbnQscj0odGhpcy5pc0F0dGFjaGVkP2Uub2Zmc2V0TGVmdDplLmxlZnQpfHwwO3JldHVybiB0aGlzLnJ0bD9lLnJpZ2h0LW4ud2lkdGg6cn0sY29tcHV0ZWRUb3A6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRpbWVuc2lvbnMuYWN0aXZhdG9yLGU9dC5oZWlnaHQ7cmV0dXJuKCh0aGlzLmlzQXR0YWNoZWQ/dC5vZmZzZXRUb3A6dC50b3ArdGhpcy5wYWdlWU9mZnNldCl8fDApK2V9LGhhc0FjdGl2YXRvcjpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuJHNsb3RzLmFjdGl2YXRvcil8fEJvb2xlYW4odGhpcy4kc2NvcGVkU2xvdHMuYWN0aXZhdG9yKXx8Qm9vbGVhbih0aGlzLmFjdGl2YXRvcil9fSx3YXRjaDp7ZGlzYWJsZWQ6ZnVuY3Rpb24odCl7dCYmdGhpcy5jYWxsRGVhY3RpdmF0ZSgpfSxpc0FjdGl2ZTpmdW5jdGlvbih0KXt0aGlzLmRpc2FibGVkfHwodD90aGlzLmNhbGxBY3RpdmF0ZSgpOnRoaXMuY2FsbERlYWN0aXZhdGUoKSl9fSxtZXRob2RzOnthY3RpdmF0ZTpmdW5jdGlvbigpe30sZGVhY3RpdmF0ZTpmdW5jdGlvbigpe30sY2FsbEFjdGl2YXRlOmZ1bmN0aW9uKCl7dGhpcy5hY3RpdmF0ZSgpfSxjYWxsRGVhY3RpdmF0ZTpmdW5jdGlvbigpe3RoaXMuaXNDb250ZW50QWN0aXZlPSExLHRoaXMuZGVhY3RpdmF0ZSgpfSxjYWxjTGVmdDpmdW5jdGlvbih0KXtyZXR1cm4gRih0aGlzLmlzQXR0YWNoZWQ/dGhpcy5jb21wdXRlZExlZnQ6dGhpcy5jYWxjWE92ZXJmbG93KHRoaXMuY29tcHV0ZWRMZWZ0LHQpKX0sY2FsY1RvcDpmdW5jdGlvbigpe3JldHVybiBGKHRoaXMuaXNBdHRhY2hlZD90aGlzLmNvbXB1dGVkVG9wOnRoaXMuY2FsY1lPdmVyZmxvdyh0aGlzLmNvbXB1dGVkVG9wKSl9LGNhbGNYT3ZlcmZsb3c6ZnVuY3Rpb24odCxlKXt2YXIgbj10K2UtdGhpcy5wYWdlV2lkdGgrMTI7cmV0dXJuKHQ9KCF0aGlzLmxlZnR8fHRoaXMucmlnaHQpJiZuPjA/TWF0aC5tYXgodC1uLDApOk1hdGgubWF4KHQsMTIpKSsod2luZG93LnBhZ2VYT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCl9LGNhbGNZT3ZlcmZsb3c6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYWdlWU9mZnNldCsod2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSxuPXRoaXMuZGltZW5zaW9ucyxyPW4uYWN0aXZhdG9yLGk9KG4uY29udGVudHx8e30pLmhlaWdodCxhPWU8dCtpO3JldHVybiBhJiZyLnRvcD5pP3Q9dGhpcy5wYWdlWU9mZnNldCsoci50b3AtaSk6YSYmIXRoaXMuYWxsb3dPdmVyZmxvdz90PWUtaS0xMjp0PHRoaXMucGFnZVlPZmZzZXQmJiF0aGlzLmFsbG93T3ZlcmZsb3cmJih0PXRoaXMucGFnZVlPZmZzZXQrMTIpLHQ8MTI/MTI6dH0sZGV0ZWN0T3JpZ2luOmZ1bmN0aW9uKHQsZSl7dmFyIG49cGFyc2VJbnQodC5zcGxpdChcInB4XCIpWzBdKSxyPXBhcnNlSW50KGUuc3BsaXQoXCJweFwiKVswXSksaT10aGlzLmRpbWVuc2lvbnMuYWN0aXZhdG9yLGE9W107cmV0dXJuIGEucHVzaChpLnRvcDxyLXRoaXMucGFnZVlPZmZzZXQ/XCJ0b3BcIjpcImJvdHRvbVwiKSxhLnB1c2goaS5sZWZ0PT09bj9cImxlZnRcIjpcInJpZ2h0XCIpLHRoaXMub3JpZ2lufHxhLmpvaW4oXCIgXCIpfSxjaGVja0ZvclBhZ2VZT2Zmc2V0OmZ1bmN0aW9uKCl7dGhpcy5wYWdlWU9mZnNldD10aGlzLmFjdGl2YXRvckZpeGVkPzA6d2luZG93LnBhZ2VZT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfSxjaGVja0FjdGl2YXRvckZpeGVkOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNBdHRhY2hlZCl7dmFyIHQ9dGhpcy5nZXRBY3RpdmF0b3IoKTt0aGlzLmFjdGl2YXRvckZpeGVkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXCJmaXhlZFwiLFwic3RpY2t5XCJdLG49dDtuOyl7aWYoZS5pbmNsdWRlcyh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuKS5wb3NpdGlvbikpcmV0dXJuITA7bj1uLm9mZnNldFBhcmVudH1yZXR1cm4hMX0odCl9fSxzbmVha1BlZWs6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7dmFyIG49ZS4kcmVmcy5jb250ZW50O24mJlwibm9uZVwiPT09bi5zdHlsZS5kaXNwbGF5PyhuLnN0eWxlLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIix0KCksbi5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKTp0KCl9KSl9LHN0YXJ0VHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe3QuaXNDb250ZW50QWN0aXZlPXQuaXNBY3RpdmUsZSgpfSkpfSkpfSx1cGRhdGVEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmNoZWNrQWN0aXZhdG9yRml4ZWQoKSx0aGlzLmNoZWNrRm9yUGFnZVlPZmZzZXQoKSx0aGlzLnBhZ2VXaWR0aD13aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO3ZhciBlPXt9LG49dGhpcy5nZXRBY3RpdmF0b3IoKTtuJiYoZS5hY3RpdmF0b3I9VShuLHRoaXMuYXR0YWNoKSxlLmFjdGl2YXRvci5vZmZzZXRMZWZ0PW4ub2Zmc2V0TGVmdCx0aGlzLmlzQXR0YWNoZWQ/ZS5hY3RpdmF0b3Iub2Zmc2V0VG9wPW4ub2Zmc2V0VG9wOmUuYWN0aXZhdG9yLm9mZnNldFRvcD0wLHRoaXMuc25lYWtQZWVrKChmdW5jdGlvbigpe2UuY29udGVudD1VKHQuJHJlZnMuY29udGVudCx0LmF0dGFjaCksdC5kaW1lbnNpb25zPWV9KSkpfX19LHtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3N0YWNrTWluWkluZGV4OjFlM319LGNvbXB1dGVkOnthY3RpdmVaSW5kZXg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRyZWZzLmNvbnRlbnQsZT10aGlzLmlzQWN0aXZlP3RoaXMuZ2V0TWF4WkluZGV4KCkrMjpWKHQpO3JldHVybiBwYXJzZUludChlKX19LG1ldGhvZHM6e2dldE1heFpJbmRleDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJGVsLGU9UShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWVudV9fY29udGVudC0tYWN0aXZlXCIpKSxuPVt0aGlzLnN0YWNrTWluWkluZGV4LFYodCldLmNvbmNhdChRKGUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gVih0KX0pKSkpO3JldHVybiBNYXRoLm1heC5hcHBseShNYXRoLFEobikpfX19XSxkaXJlY3RpdmVzOntSZXNpemU6e2luc2VydGVkOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS52YWx1ZSxyPWUub3B0aW9uc3x8e3Bhc3NpdmU6ITB9LGk9ITEsYT1mdW5jdGlvbigpe2l8fChpPSEwLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobiksaT0hMSl9O3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsYSxyKSxPYmplY3QuYXNzaWduKHQse29uUmVzaXplOntyZXNpemVDYWxsYmFjazphLG9wdGlvbnM6cixydW5uaW5nOml9fSksZS5tb2RpZmllcnMmJmUubW9kaWZpZXJzLnF1aWV0fHxhKCl9LHVuYmluZDpmdW5jdGlvbih0KXtpZih0Lm9uUmVzaXplKXt2YXIgZT10Lm9uUmVzaXplLG49ZS5yZXNpemVDYWxsYmFjayxyPWUub3B0aW9uczt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLG4sciksZGVsZXRlIHQub25SZXNpemV9fX19LHByb3BzOnt0cmFuc2l0aW9uOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwibWVudS10cmFuc2l0aW9uXCJ9LG9yaWdpbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDB9LGFsbG93T3ZlcmZsb3c6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxydGw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtaW5XaWR0aDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDp2b2lkIDB9LG1heFdpZHRoOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OnZvaWQgMH0sbWF4SGVpZ2h0Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OlwiYXV0b1wifSx6SW5kZXg6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6dm9pZCAwfSxib3R0b21TaGVldDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3Jlc2l6ZVRpbWVvdXQ6MCxkZWZhdWx0T2Zmc2V0Ojh9fSxjb21wdXRlZDp7c3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJue21heEhlaWdodDp0aGlzLmNhbGN1bGVkTWVudU1heEhlaWdodCxtaW5XaWR0aDp0aGlzLmNhbGN1bGVkTWVudVdpZHRoLG1heFdpZHRoOnRoaXMuY2FsY3VsZWRNYXhXaWR0aCx0b3A6dGhpcy5jYWxjdWxlZFRvcCxsZWZ0OnRoaXMuY2FsY3VsZWRMZWZ0LHRyYW5zZm9ybU9yaWdpbjp0aGlzLmRldGVjdGVkT3JpZ2luLHpJbmRleDp0aGlzLnpJbmRleHx8dGhpcy5hY3RpdmVaSW5kZXh9fSxjYWxjdWxlZE1lbnVNYXhIZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gRih0aGlzLm1heEhlaWdodCl9LGNhbGN1bGVkTWF4V2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gRih0aGlzLm1heFdpZHRoKX0sY2FsY3VsZWRNZW51V2lkdGg6ZnVuY3Rpb24oKXtpZih0aGlzLm1pbldpZHRoKXJldHVybiBGKHRoaXMubWluV2lkdGgpO3ZhciB0PU1hdGgubWluKHRoaXMuZGltZW5zaW9ucy5hY3RpdmF0b3Iud2lkdGgsTWF0aC5tYXgodGhpcy5wYWdlV2lkdGgtMjQsMCkpLGU9KHBhcnNlSW50KHRoaXMuY2FsY3VsZWRNYXhXaWR0aCk9PT0xKnRoaXMuY2FsY3VsZWRNYXhXaWR0aD90aGlzLmNhbGN1bGVkTWF4V2lkdGg6cGFyc2VJbnQoKHRoaXMuY2FsY3VsZWRNYXhXaWR0aHx8XCJcIikuc3BsaXQoXCJweFwiKVswXSkpfHx0O3JldHVybiBGKE1hdGgubWluKGUsdCkpfSxjYWxjdWxlZExlZnQ6ZnVuY3Rpb24oKXt2YXIgdD1NYXRoLm1heCh0aGlzLmRpbWVuc2lvbnMuY29udGVudC53aWR0aCxwYXJzZUZsb2F0KHRoaXMuY2FsY3VsZWRNZW51V2lkdGgpKTtyZXR1cm4gdGhpcy5jYWxjTGVmdCh0KXx8XCIwXCJ9LGNhbGN1bGVkVG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FsY1RvcCgpfHxcIjBcIn0sZGV0ZWN0ZWRPcmlnaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZXRlY3RPcmlnaW4odGhpcy5jYWxjdWxlZExlZnQsdGhpcy5jYWxjdWxlZFRvcCl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy5pc0FjdGl2ZSYmdGhpcy5jYWxsQWN0aXZhdGUoKX0sbWV0aG9kczp7YWN0aXZhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMudXBkYXRlRGltZW5zaW9ucygpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXt0LnN0YXJ0VHJhbnNpdGlvbigpLnRoZW4oKGZ1bmN0aW9uKCl7dC4kZW1pdChcInRyYW5zaXRpb25FbmRcIil9KSl9KSl9LGNhbGxEZWFjdGl2YXRlOmZ1bmN0aW9uKCl7dGhpcy5pc0NvbnRlbnRBY3RpdmU9ITF9LG9uUmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5pc0FjdGl2ZSYmKHRoaXMuJHJlZnMuY29udGVudC5vZmZzZXRXaWR0aCx0aGlzLnVwZGF0ZURpbWVuc2lvbnMoKSxjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KSx0aGlzLnJlc2l6ZVRpbWVvdXQ9c2V0VGltZW91dCh0aGlzLnVwZGF0ZURpbWVuc2lvbnMsMTAwKSl9LGdlblRyYW5zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcInRyYW5zaXRpb25cIix7cHJvcHM6e25hbWU6dGhpcy50cmFuc2l0aW9ufX0sW3RoaXMuZ2VuQ29udGVudCgpXSl9LGdlbkNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgdD17YXR0cnM6e3JvbGU6dGhpcy4kYXR0cnMucm9sZXx8XCJtZW51XCJ9LHN0YXRpY0NsYXNzOlwidmQtbWVudV9fY29udGVudFwiLGNsYXNzOkcoRyh7fSx0aGlzLmNvbnRlbnRDbGFzcyYmYSh7fSx0aGlzLmNvbnRlbnRDbGFzcywhMCkpLHt9LHtcInZkLW1lbnVfX2NvbnRlbnQtLWFjdGl2ZVwiOnRoaXMuaXNBY3RpdmUsXCJ2ZC1tZW51X19jb250ZW50LS1maXhlZFwiOnRoaXMuYWN0aXZhdG9yRml4ZWQsXCJ2ZC1tZW51X19jb250ZW50LS1ib3R0b21zaGVldFwiOnRoaXMuYm90dG9tU2hlZXR9KSxzdHlsZTp0aGlzLnN0eWxlcyxkaXJlY3RpdmVzOlt7bmFtZTpcInNob3dcIix2YWx1ZTp0aGlzLmlzQ29udGVudEFjdGl2ZX1dLHJlZjpcImNvbnRlbnRcIixvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3RvcFByb3BhZ2F0aW9uKCl9fX07cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix0LFt0aGlzLmhhc0NvbnRlbnQmJnRoaXMuZ2V0Q29udGVudFNsb3QoKV0pfX0scmVuZGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1tZW51XCIsY2xhc3M6e1wibWVudS0tYXR0YWNoZWRcIjp0aGlzLmlzQXR0YWNoZWR9LGRpcmVjdGl2ZXM6W3thcmc6XCI1MDBcIixuYW1lOlwicmVzaXplXCIsdmFsdWU6dGhpcy5vblJlc2l6ZX1dfSxbIXRoaXMuYWN0aXZhdG9yJiZ0aGlzLmdlbkFjdGl2YXRvcigpLHRoaXMuc2hvd0xhenlDb250ZW50KChmdW5jdGlvbigpe3JldHVybltlLmdlblRyYW5zaXRpb24oKV19KSldKX19O2Z1bmN0aW9uIHR0KHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBldCh0KXtmb3IodmFyIGU9YXJndW1lbnRzLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1udWxsIT1lW25dP2Vbbl06e307biUyP3R0KE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YSh0LGUscltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6dHQoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9ZnVuY3Rpb24gbnQodCl7cmV0dXJuIEJvb2xlYW4odCkmJkJvb2xlYW4odC5tYXRjaCgvXigjfChyZ2J8aHNsKWE/XFwoKS8pKX12YXIgcnQ9e3Byb3BzOntjb2xvcjp7dHlwZTpTdHJpbmd9fSxtZXRob2RzOntzZXRCYWNrZ3JvdW5kQ29sb3I6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnQodCk/ZT9ldChldCh7fSxlKSx7fSx7c3R5bGU6ZXQoZXQoe30sZS5zdHlsZSkse30se1wiYmFja2dyb3VuZC1jb2xvclwiOlwiXCIuY29uY2F0KHQpLFwiYm9yZGVyLWNvbG9yXCI6XCJcIi5jb25jYXQodCl9KX0pOntcImJhY2tncm91bmQtY29sb3JcIjpcIlwiLmNvbmNhdCh0KSxcImJvcmRlci1jb2xvclwiOlwiXCIuY29uY2F0KHQpfTplfSxzZXRUZXh0Q29sb3I6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnQodCk/ZT9ldChldCh7fSxlKSx7fSx7c3R5bGU6ZXQoZXQoe30sZS5zdHlsZSkse30se2NvbG9yOlwiXCIuY29uY2F0KHQpfSl9KTp7Y29sb3I6XCJcIi5jb25jYXQodCl9OmV9fX0saXQ9e2Nsb3NlOntwYXRoOlwiTTE5My45NCAyNTZMMjk2LjUgMTUzLjQ0bDIxLjE1LTIxLjE1YzMuMTItMy4xMiAzLjEyLTguMTkgMC0xMS4zMWwtMjIuNjMtMjIuNjNjLTMuMTItMy4xMi04LjE5LTMuMTItMTEuMzEgMEwxNjAgMjIyLjA2IDM2LjI5IDk4LjM0Yy0zLjEyLTMuMTItOC4xOS0zLjEyLTExLjMxIDBMMi4zNCAxMjAuOTdjLTMuMTIgMy4xMi0zLjEyIDguMTkgMCAxMS4zMUwxMjYuMDYgMjU2IDIuMzQgMzc5LjcxYy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsMjIuNjMgMjIuNjNjMy4xMiAzLjEyIDguMTkgMy4xMiAxMS4zMSAwTDE2MCAyODkuOTQgMjYyLjU2IDM5Mi41bDIxLjE1IDIxLjE1YzMuMTIgMy4xMiA4LjE5IDMuMTIgMTEuMzEgMGwyMi42My0yMi42M2MzLjEyLTMuMTIgMy4xMi04LjE5IDAtMTEuMzFMMTkzLjk0IDI1NnpcIix2aWV3Qm94OlwiMCAwIDMyMCA1MTJcIn0sY2FsZW5kYXJBbHQ6e3BhdGg6XCJNNDAwIDY0aC00OFYxMmMwLTYuNi01LjQtMTItMTItMTJoLThjLTYuNiAwLTEyIDUuNC0xMiAxMnY1MkgxMjhWMTJjMC02LjYtNS40LTEyLTEyLTEyaC04Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDk2aDM1MmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhIMzJ2LTQ4YzAtOC44IDcuMi0xNiAxNi0xNnptMzUyIDM4NEg0OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MmgzODR2MjcyYzAgOC44LTcuMiAxNi0xNiAxNnpNMTQ4IDMyMGgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJ6bTk2IDBoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyem05NiAwaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMnptLTk2IDk2aC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMnptLTk2IDBoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyem0xOTIgMGgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJ6XCIsdmlld0JveDpcIjAgMCA0NDggNTEyXCJ9LGNoZXZyb25MZWZ0OntwYXRoOlwiTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6XCIsdmlld0JveDpcIjAgMCAyNCAyNFwifSxjaGV2cm9uUmlnaHQ6e3BhdGg6XCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCIsdmlld0JveDpcIjAgMCAyNCAyNFwifX07ZnVuY3Rpb24gYXQoKXtmb3IodmFyIHQ9YXJndW1lbnRzLGU9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheShlKSxpPTA7aTxlO2krKyluW2ldPXRbaV07cmV0dXJuIHIuZXh0ZW5kKHttaXhpbnM6bn0pfWZ1bmN0aW9uIG90KHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBzdCh0KXtmb3IodmFyIGU9YXJndW1lbnRzLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1udWxsIT1lW25dP2Vbbl06e307biUyP290KE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YSh0LGUscltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6b3QoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9dmFyIGN0PWF0KHJ0KS5leHRlbmQoe25hbWU6XCJWREljb25cIixpbmhlcml0QXR0cnM6ITEscHJvcHM6e3NpemU6e3R5cGU6W051bWJlcixTdHJpbmddfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxjb21wdXRlZDp7aGFzQ2xpY2tMaXN0ZW5lcjpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuJGxpc3RlbmVycy5jbGljayl9fSxtZXRob2RzOntnZXRJY29uTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRzbG90cy5kZWZhdWx0P3RoaXMuJHNsb3RzLmRlZmF1bHRbMF0udGV4dCYmdGhpcy4kc2xvdHMuZGVmYXVsdFswXS50ZXh0LnRyaW0oKTpcIlwifSxnZXRJY29uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRJY29uTmFtZSgpO3JldHVybiBpdFt0XXx8dH0sZ2V0RGVmYXVsdERhdGE6ZnVuY3Rpb24oKXtyZXR1cm57c3RhdGljQ2xhc3M6XCJ2ZC1pY29uXCIsY2xhc3M6e1widmQtaWNvbi0tZGlzYWJsZWRcIjp0aGlzLmRpc2FibGVkLFwidmQtaWNvbi0tbGlua1wiOnRoaXMuaGFzQ2xpY2tMaXN0ZW5lcn0sYXR0cnM6c3Qoe1wiYXJpYS1oaWRkZW5cIjohdGhpcy5oYXNDbGlja0xpc3RlbmVyLGRpc2FibGVkOnRoaXMuaGFzQ2xpY2tMaXN0ZW5lciYmdGhpcy5kaXNhYmxlZCx0eXBlOnRoaXMuaGFzQ2xpY2tMaXN0ZW5lcj9cImJ1dHRvblwiOnZvaWQgMH0sdGhpcy4kYXR0cnMpLG9uOnRoaXMuJGxpc3RlbmVyc319LHJlbmRlclN2Z0ljb246ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmhhc0NsaWNrTGlzdGVuZXI/XCJidXR0b25cIjpcInNwYW5cIixyPUYodGhpcy5zaXplKSxpPXN0KHN0KHt9LHRoaXMuZ2V0RGVmYXVsdERhdGEoKSkse30se3N0eWxlOnN0KHt9LHImJntmb250U2l6ZTpyLGhlaWdodDpyLHdpZHRoOnJ9KX0pLGE9e2F0dHJzOnt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDp0LnZpZXdCb3gsaGVpZ2h0OnRoaXMuc2l6ZXx8MTYsd2lkdGg6dGhpcy5zaXplfHwxNixyb2xlOlwiaW1nXCIsXCJhcmlhLWhpZGRlblwiOiEwLFwiZGF0YS1pY29uXCI6dGhpcy5nZXRJY29uTmFtZSgpfX07cmV0dXJuIGUobix0aGlzLnNldFRleHRDb2xvcih0aGlzLmNvbG9yLGkpLFtlKFwic3ZnXCIsYSxbZShcInBhdGhcIix7YXR0cnM6e2ZpbGw6XCJjdXJyZW50Q29sb3JcIixkOnQucGF0aH19KV0pXSl9fSxyZW5kZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRJY29uKCk7cmV0dXJuIHRoaXMucmVuZGVyU3ZnSWNvbihlLHQpfX0pLGx0PWF0KHJ0KS5leHRlbmQoe25hbWU6XCJWRFBpY2tlckN1c3RvbUlucHV0XCIsaW5qZWN0OltcIlZEUGlja2VyXCJdLHByb3BzOntjbGVhcmFibGU6e3R5cGU6Qm9vbGVhbn0sY2xvc2VPbkNsaWNrT3V0c2lkZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGNvbG9yOnt0eXBlOlN0cmluZ30sZGF0ZTp7dHlwZTpbT2JqZWN0LERhdGUsU3RyaW5nXX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpZDp7dHlwZTpTdHJpbmd9LGlzRGF0ZURlZmluZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpc01lbnVBY3RpdmU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxuYW1lOnt0eXBlOlN0cmluZ30sbm9DYWxlbmRhckljb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmd9LHRhYmluZGV4Ont0eXBlOltTdHJpbmcsTnVtYmVyXX19LGNvbXB1dGVkOntjbGFzc2VzOmZ1bmN0aW9uKCl7cmV0dXJue1widmQtcGlja2VyX19pbnB1dC0tZGlzYWJsZWRcIjp0aGlzLmRpc2FibGVkLFwidmQtcGlja2VyX19pbnB1dC0taXMtYWN0aXZlXCI6dGhpcy5pc01lbnVBY3RpdmUsXCJ2ZC1waWNrZXJfX2lucHV0LS1uby1kYXRlXCI6IXRoaXMuaXNEYXRlRGVmaW5lZH19LGNvbXB1dGVkQ29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD9cIlwiOnRoaXMuaXNNZW51QWN0aXZlP3RoaXMuY29sb3I6XCJcIn0saXNEaXJ0eTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRGF0ZURlZmluZWR9fSxtZXRob2RzOntvbktleURvd246ZnVuY3Rpb24odCl7dGhpcy4kZW1pdChcImtleWRvd25cIix0KX0sY2xlYXJhYmxlQ2FsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLiRlbWl0KFwiY2xlYXJEYXRlXCIpfSxnZW5DYWxlbmRhckljb246ZnVuY3Rpb24oKXt2YXIgdD1bXTt0aGlzLlZEUGlja2VyLiRzbG90c1tcImlucHV0LWljb25cIl0/dC5wdXNoKHRoaXMuVkRQaWNrZXIuJHNsb3RzW1wiaW5wdXQtaWNvblwiXSk6dC5wdXNoKHRoaXMuJGNyZWF0ZUVsZW1lbnQoY3Qse3Byb3BzOntkaXNhYmxlZDp0aGlzLmRpc2FibGVkfX0sW1wiY2FsZW5kYXJBbHRcIl0pKTt2YXIgZT10aGlzLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX19pbnB1dC1pY29uX193cmFwcGVyXCJ9LHQpO3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX19pbnB1dC1pY29uXCJ9LFtlXSl9LGdlbklucHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLHthdHRyczp7aWQ6dGhpcy5pZCxuYW1lOnRoaXMubmFtZSxkaXNhYmxlZDp0aGlzLmRpc2FibGVkLFwiYXJpYS1kaXNhYmxlZFwiOnRoaXMuZGlzYWJsZWQscGxhY2Vob2xkZXI6dGhpcy5wbGFjZWhvbGRlcix0YWJpbmRleDp0aGlzLnRhYmluZGV4LHJvbGU6XCJ0ZXh0XCIsdHlwZTpcInRleHRcIixyZWFkb25seTohMCxcImFyaWEtcmVhZG9ubHlcIjohMH0sZG9tUHJvcHM6e3ZhbHVlOnRoaXMuZGF0ZX0sb246e2tleWRvd246dGhpcy5vbktleURvd259LHJlZjpcImlucHV0XCJ9KX0sZ2VuQ2xlYXJJY29uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuaXNEaXJ0eT9cImNsb3NlXCI6XCJcIixuPXthdHRyczp7XCJhcmlhLWxhYmVsXCI6XCJjbGVhcmFibGUgaWNvblwiLGNvbG9yOnRoaXMuY29sb3IsZGlzYWJsZWQ6dGhpcy5kaXNhYmxlZH0sb246e2NsaWNrOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHQuY2xlYXJhYmxlQ2FsbGJhY2soKX0sbW91c2V1cDpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKX19fSxyPXRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX2lucHV0LWNsZWFyX19pY29uXCJ9LFt0aGlzLiRjcmVhdGVFbGVtZW50KGN0LG4sZSldKTtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9faW5wdXQtY2xlYXJcIn0sW3JdKX19LHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChcImRpdlwiLHRoaXMuc2V0VGV4dENvbG9yKHRoaXMuY29tcHV0ZWRDb2xvcix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX2lucHV0XCIsY2xhc3M6dGhpcy5jbGFzc2VzfSksWyF0aGlzLm5vQ2FsZW5kYXJJY29uJiZ0aGlzLmdlbkNhbGVuZGFySWNvbigpLHRoaXMuZ2VuSW5wdXQoKSx0aGlzLmNsZWFyYWJsZSYmdGhpcy5nZW5DbGVhckljb24oKV0pfX0pLHV0PWF0KHJ0LEgpLmV4dGVuZCh7bmFtZTpcIlZET3ZlcmxheVwiLHByb3BzOnthYnNvbHV0ZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwicmdiYSg5MywgMTA2LCAxMzcpXCJ9LG9wYWNpdHk6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6Ljg0fSx2YWx1ZTp7ZGVmYXVsdDohMH0sekluZGV4Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OnZvaWQgMH19LGNvbXB1dGVkOntjbGFzc2VzOmZ1bmN0aW9uKCl7cmV0dXJue1widmQtb3ZlcmxheS0tYWJzb2x1dGVcIjp0aGlzLmFic29sdXRlLFwidmQtb3ZlcmxheS0tYWN0aXZlXCI6dGhpcy5pc0FjdGl2ZX19LHN0eWxlczpmdW5jdGlvbigpe3JldHVybnt6SW5kZXg6dGhpcy56SW5kZXh9fSxjb21wdXRlZE9wYWNpdHk6ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyKHRoaXMuaXNBY3RpdmU/dGhpcy5vcGFjaXR5OjApfSxvdmVybGF5SW5uZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNldEJhY2tncm91bmRDb2xvcih0aGlzLmNvbG9yLHtzdGF0aWNDbGFzczpcInZkLW92ZXJsYXlfX2lubmVyXCIsc3R5bGU6e29wYWNpdHk6dGhpcy5jb21wdXRlZE9wYWNpdHl9fSk7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix0KX19LG1ldGhvZHM6e2dlbkNvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLW92ZXJsYXlfX2NvbnRlbnRcIn0sdGhpcy4kc2xvdHMuZGVmYXVsdCl9fSxyZW5kZXI6ZnVuY3Rpb24odCl7dmFyIGU9W3RoaXMub3ZlcmxheUlubmVyXTtyZXR1cm4gdGhpcy5pc0FjdGl2ZSYmZS5wdXNoKHRoaXMuZ2VuQ29udGVudCgpKSx0KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtb3ZlcmxheVwiLGNsYXNzOnRoaXMuY2xhc3NlcyxzdHlsZTp0aGlzLnN0eWxlc30sZSl9fSksZHQ9ci5leHRlbmQodXQpLGh0PXIuZXh0ZW5kKHtuYW1lOlwiT3ZlcmxheWFibGVcIixwcm9wczp7b3ZlcmxheUNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMH0sb3ZlcmxheU9wYWNpdHk6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6dm9pZCAwfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntvdmVybGF5OnZvaWQgMH19LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZU92ZXJsYXkoKX0sbWV0aG9kczp7c2Nyb2xsTGlzdGVuZXI6ZnVuY3Rpb24odCl7aWYoXCJrZXlkb3duXCI9PT10LnR5cGUpe2lmKFtcIklOUFVUXCIsXCJURVhUQVJFQVwiLFwiU0VMRUNUXCJdLmluY2x1ZGVzKHQudGFyZ2V0LnRhZ05hbWUpfHx0LnRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSlyZXR1cm47dmFyIGU9W3cudXAsdy5wYWdldXBdLG49W3cuZG93bix3LnBhZ2Vkb3duXTtpZihlLmluY2x1ZGVzKHQua2V5Q29kZSkpdC5kZWx0YVk9LTE7ZWxzZXtpZighbi5pbmNsdWRlcyh0LmtleUNvZGUpKXJldHVybjt0LmRlbHRhWT0xfX0odC50YXJnZXQ9PT10aGlzLm92ZXJsYXl8fFwia2V5ZG93blwiIT09dC50eXBlJiZ0LnRhcmdldD09PWRvY3VtZW50LmJvZHl8fHRoaXMuY2hlY2tQYXRoKHQpKSYmdC5wcmV2ZW50RGVmYXVsdCgpfSxoYXNTY3JvbGxiYXI6ZnVuY3Rpb24odCl7aWYoIXR8fHQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4hMTt2YXIgZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KTtyZXR1cm5bXCJhdXRvXCIsXCJzY3JvbGxcIl0uaW5jbHVkZXMoZS5vdmVyZmxvd1kpJiZ0LnNjcm9sbEhlaWdodD50LmNsaWVudEhlaWdodH0sc2hvdWxkU2Nyb2xsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10LnNjcm9sbFRvcCYmZTwwfHx0LnNjcm9sbFRvcCt0LmNsaWVudEhlaWdodD09PXQuc2Nyb2xsSGVpZ2h0JiZlPjB9LGlzSW5zaWRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxudWxsIT09dCYmdCE9PWRvY3VtZW50LmJvZHkmJnRoaXMuaXNJbnNpZGUodC5wYXJlbnROb2RlLGUpfSxjaGVja1BhdGg6ZnVuY3Rpb24odCl7dmFyIGU9dC5wYXRofHx0aGlzLmNvbXBvc2VkUGF0aCh0KSxuPXQuZGVsdGFZO2lmKFwia2V5ZG93blwiPT09dC50eXBlJiZlWzBdPT09ZG9jdW1lbnQuYm9keSl7dmFyIHI9dGhpcy4kcmVmcy5kaWFsb2csaT13aW5kb3cuZ2V0U2VsZWN0aW9uKCkmJndpbmRvdy5nZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlO3JldHVybiEociYmdGhpcy5oYXNTY3JvbGxiYXIocikmJnRoaXMuaXNJbnNpZGUoaSxyKSl8fHRoaXMuc2hvdWxkU2Nyb2xsKHIsbil9Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBvPWVbYV07aWYobz09PWRvY3VtZW50KXJldHVybiEwO2lmKG89PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpcmV0dXJuITA7aWYobz09PXRoaXMuJHJlZnMuY29udGVudClyZXR1cm4hMDtpZih0aGlzLmhhc1Njcm9sbGJhcihvKSlyZXR1cm4gdGhpcy5zaG91bGRTY3JvbGwobyxuKX1yZXR1cm4hMH0sY29tcG9zZWRQYXRoOmZ1bmN0aW9uKHQpe2lmKHQuY29tcG9zZWRQYXRoKXJldHVybiB0LmNvbXBvc2VkUGF0aCgpO2Zvcih2YXIgZT1bXSxuPXQudGFyZ2V0O247KXtpZihlLnB1c2gobiksXCJIVE1MXCI9PT1uLnRhZ05hbWUpcmV0dXJuIGUucHVzaChkb2N1bWVudCksZS5wdXNoKHdpbmRvdyksZTtuPW4ucGFyZW50RWxlbWVudH1yZXR1cm4gZX0saGlkZVNjcm9sbDpmdW5jdGlvbigpe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwid2hlZWxcIix0aGlzLnNjcm9sbExpc3RlbmVyLHtwYXNzaXZlOiExfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsdGhpcy5zY3JvbGxMaXN0ZW5lcil9LHNob3dTY3JvbGw6ZnVuY3Rpb24oKXtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcIm92ZXJmbG93LXktaGlkZGVuXCIpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwid2hlZWxcIix0aGlzLnNjcm9sbExpc3RlbmVyKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIix0aGlzLnNjcm9sbExpc3RlbmVyKX0sY3JlYXRlT3ZlcmxheTpmdW5jdGlvbigpe3ZhciB0PW5ldyBkdCh7cHJvcHNEYXRhOnthYnNvbHV0ZTp0aGlzLmFic29sdXRlLHZhbHVlOiExLGNvbG9yOnRoaXMub3ZlcmxheUNvbG9yLG9wYWNpdHk6dGhpcy5vdmVybGF5T3BhY2l0eX19KTt0LiRtb3VudCgpO3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiYm9keVwiKSxuPXRoaXMuYWJzb2x1dGU/dGhpcy4kZWwucGFyZW50Tm9kZTplO24mJm4uaW5zZXJ0QmVmb3JlKHQuJGVsLG4uZmlyc3RDaGlsZCksdGhpcy5vdmVybGF5PXR9LGdlbk92ZXJsYXk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmhpZGVTY3JvbGwoKSx0aGlzLm92ZXJsYXl8fHRoaXMuY3JlYXRlT3ZlcmxheSgpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXt0Lm92ZXJsYXkmJih2b2lkIDAhPT10LmFjdGl2ZVpJbmRleD90Lm92ZXJsYXkuekluZGV4PVN0cmluZyh0LmFjdGl2ZVpJbmRleC0xKTp0LiRlbCYmKHQub3ZlcmxheS56SW5kZXg9Vih0LiRlbCkpLHQub3ZlcmxheS52YWx1ZT0hMCl9KSksITB9LHJlbW92ZU92ZXJsYXk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTt0aGlzLm92ZXJsYXkmJihOKHRoaXMub3ZlcmxheS4kZWwsXCJ0cmFuc2l0aW9uZW5kXCIsKGZ1bmN0aW9uKCl7dC5vdmVybGF5JiZ0Lm92ZXJsYXkuJGVsJiZ0Lm92ZXJsYXkuJGVsLnBhcmVudE5vZGUmJiF0Lm92ZXJsYXkudmFsdWUmJih0Lm92ZXJsYXkuJGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5vdmVybGF5LiRlbCksdC5vdmVybGF5LiRkZXN0cm95KCksdC5vdmVybGF5PW51bGwpfSkpLHRoaXMub3ZlcmxheS52YWx1ZT0hMSksZSYmdGhpcy5zaG93U2Nyb2xsKCl9fX0pO3ZhciBwdD1mdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fTt2YXIgZnQ9ZnVuY3Rpb24odCxlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKXt2YXIgbj1bXSxyPSEwLGk9ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgbyxzPXRbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0obz1zLm5leHQoKSkuZG9uZSkmJihuLnB1c2goby52YWx1ZSksIWV8fG4ubGVuZ3RoIT09ZSk7cj0hMCk7fWNhdGNoKHQpe2k9ITAsYT10fWZpbmFsbHl7dHJ5e3J8fG51bGw9PXMucmV0dXJufHxzLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBhfX1yZXR1cm4gbn19O3ZhciBtdD1mdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9O3ZhciB2dD1mdW5jdGlvbih0LGUpe3JldHVybiBwdCh0KXx8ZnQodCxlKXx8Sih0LGUpfHxtdCgpfSx5dD0kKChmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZS5wcm90b3R5cGUsaT1yLmZvcm1hdDtuLmVuLm9yZGluYWw9ZnVuY3Rpb24odCl7dmFyIGU9W1widGhcIixcInN0XCIsXCJuZFwiLFwicmRcIl0sbj10JTEwMDtyZXR1cm5cIltcIit0KyhlWyhuLTIwKSUxMF18fGVbbl18fGVbMF0pK1wiXVwifSxyLmZvcm1hdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy4kbG9jYWxlKCkscj10aGlzLiR1dGlscygpLGE9KHR8fFwiWVlZWS1NTS1ERFRISDptbTpzc1pcIikucmVwbGFjZSgvXFxbKFteXFxdXSspXXxRfHdvfHd3fHd8Z2dnZ3xEb3xYfHh8a3sxLDJ9fFMvZywoZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2VcIlFcIjpyZXR1cm4gTWF0aC5jZWlsKChlLiRNKzEpLzMpO2Nhc2VcIkRvXCI6cmV0dXJuIG4ub3JkaW5hbChlLiREKTtjYXNlXCJnZ2dnXCI6cmV0dXJuIGUud2Vla1llYXIoKTtjYXNlXCJ3b1wiOnJldHVybiBuLm9yZGluYWwoZS53ZWVrKCksXCJXXCIpO2Nhc2VcIndcIjpjYXNlXCJ3d1wiOnJldHVybiByLnMoZS53ZWVrKCksXCJ3XCI9PT10PzE6MixcIjBcIik7Y2FzZVwia1wiOmNhc2VcImtrXCI6cmV0dXJuIHIucyhTdHJpbmcoMD09PWUuJEg/MjQ6ZS4kSCksXCJrXCI9PT10PzE6MixcIjBcIik7Y2FzZVwiWFwiOnJldHVybiBNYXRoLmZsb29yKGUuJGQuZ2V0VGltZSgpLzFlMyk7Y2FzZVwieFwiOnJldHVybiBlLiRkLmdldFRpbWUoKTtkZWZhdWx0OnJldHVybiB0fX0pKTtyZXR1cm4gaS5iaW5kKHRoaXMpKGEpfX19KSksZ3Q9JCgoZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlLnByb3RvdHlwZS5pc1NhbWVPckFmdGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaXNTYW1lKHQsZSl8fHRoaXMuaXNBZnRlcih0LGUpfX19KSksYnQ9JCgoZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlLnByb3RvdHlwZS5pc1NhbWVPckJlZm9yZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmlzU2FtZSh0LGUpfHx0aGlzLmlzQmVmb3JlKHQsZSl9fX0pKSxEdD0kKChmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7ZS5wcm90b3R5cGUuaXNUb2RheT1mdW5jdGlvbigpe3ZhciB0PW4oKTtyZXR1cm4gdGhpcy5mb3JtYXQoXCJZWVlZLU1NLUREXCIpPT09dC5mb3JtYXQoXCJZWVlZLU1NLUREXCIpfX19KSksX3Q9JCgoZnVuY3Rpb24odCxlKXt2YXIgbixyO3QuZXhwb3J0cz0obj1cIm1vbnRoXCIscj1cInF1YXJ0ZXJcIixmdW5jdGlvbih0LGUpe3ZhciBpPWUucHJvdG90eXBlO2kucXVhcnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kdXRpbHMoKS51KHQpP01hdGguY2VpbCgodGhpcy5tb250aCgpKzEpLzMpOnRoaXMubW9udGgodGhpcy5tb250aCgpJTMrMyoodC0xKSl9O3ZhciBhPWkuYWRkO2kuYWRkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9TnVtYmVyKHQpLHRoaXMuJHV0aWxzKCkucChlKT09PXI/dGhpcy5hZGQoMyp0LG4pOmEuYmluZCh0aGlzKSh0LGUpfTt2YXIgbz1pLnN0YXJ0T2Y7aS5zdGFydE9mPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy4kdXRpbHMoKSxhPSEhaS51KGUpfHxlO2lmKGkucCh0KT09PXIpe3ZhciBzPXRoaXMucXVhcnRlcigpLTE7cmV0dXJuIGE/dGhpcy5tb250aCgzKnMpLnN0YXJ0T2Yobikuc3RhcnRPZihcImRheVwiKTp0aGlzLm1vbnRoKDMqcysyKS5lbmRPZihuKS5lbmRPZihcImRheVwiKX1yZXR1cm4gby5iaW5kKHRoaXMpKHQsZSl9fSl9KSksa3Q9JCgoZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPShuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKSxpPWUucHJvdG90eXBlO24udXRjPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyBlKHtkYXRlOnQsdXRjOiEwLGZvcm1hdDpufSl9LGkudXRjPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy50b0RhdGUoKSx7bG9jYWxlOnRoaXMuJEwsdXRjOiEwfSl9LGkubG9jYWw9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnRvRGF0ZSgpLHtsb2NhbGU6dGhpcy4kTCx1dGM6ITF9KX07dmFyIGE9aS5wYXJzZTtpLnBhcnNlPWZ1bmN0aW9uKHQpe3QudXRjJiYodGhpcy4kdT0hMCksdGhpcy4kdXRpbHMoKS51KHQuJG9mZnNldCl8fCh0aGlzLiRvZmZzZXQ9dC4kb2Zmc2V0KSxhLmNhbGwodGhpcyx0KX07dmFyIG89aS5pbml0O2kuaW5pdD1mdW5jdGlvbigpe2lmKHRoaXMuJHUpe3ZhciB0PXRoaXMuJGQ7dGhpcy4keT10LmdldFVUQ0Z1bGxZZWFyKCksdGhpcy4kTT10LmdldFVUQ01vbnRoKCksdGhpcy4kRD10LmdldFVUQ0RhdGUoKSx0aGlzLiRXPXQuZ2V0VVRDRGF5KCksdGhpcy4kSD10LmdldFVUQ0hvdXJzKCksdGhpcy4kbT10LmdldFVUQ01pbnV0ZXMoKSx0aGlzLiRzPXQuZ2V0VVRDU2Vjb25kcygpLHRoaXMuJG1zPXQuZ2V0VVRDTWlsbGlzZWNvbmRzKCl9ZWxzZSBvLmNhbGwodGhpcyl9O3ZhciBzPWkudXRjT2Zmc2V0O2kudXRjT2Zmc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuJHV0aWxzKCkudTtpZihlKHQpKXJldHVybiB0aGlzLiR1PzA6ZSh0aGlzLiRvZmZzZXQpP3MuY2FsbCh0aGlzKTp0aGlzLiRvZmZzZXQ7dmFyIG4saT1NYXRoLmFicyh0KTw9MTY/NjAqdDp0O3JldHVybiAwIT09dD8obj10aGlzLmxvY2FsKCkuYWRkKGkrcixcIm1pbnV0ZVwiKSkuJG9mZnNldD1pOm49dGhpcy51dGMoKSxufTt2YXIgYz1pLmZvcm1hdDtpLmZvcm1hdD1mdW5jdGlvbih0KXt2YXIgZT10fHwodGhpcy4kdT9cIllZWVktTU0tRERUSEg6bW06c3NbWl1cIjpcIlwiKTtyZXR1cm4gYy5jYWxsKHRoaXMsZSl9LGkudmFsdWVPZj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuJHV0aWxzKCkudSh0aGlzLiRvZmZzZXQpPzA6dGhpcy4kb2Zmc2V0K3I7cmV0dXJuIHRoaXMuJGQudmFsdWVPZigpLTZlNCp0fSxpLmlzVVRDPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLiR1fSxpLnRvSVNPU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKX0saS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvRGF0ZSgpLnRvVVRDU3RyaW5nKCl9fX0pKSxPdD0kKChmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2UucHJvdG90eXBlLndlZWtkYXk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy4kbG9jYWxlKCkud2Vla1N0YXJ0fHwwLG49dGhpcy4kVyxyPShuPGU/bis3Om4pLWU7cmV0dXJuIHRoaXMuJHV0aWxzKCkudSh0KT9yOnRoaXMuc3VidHJhY3QocixcImRheVwiKS5hZGQodCxcImRheVwiKX19fSkpLE10PSQoKGZ1bmN0aW9uKHQsZSl7dmFyIG4scjt0LmV4cG9ydHM9KG49XCJ3ZWVrXCIscj1cInllYXJcIixmdW5jdGlvbih0LGUpe3ZhciBpPWUucHJvdG90eXBlO2kud2Vlaz1mdW5jdGlvbih0KXtpZih2b2lkIDA9PT10JiYodD1udWxsKSxudWxsIT09dClyZXR1cm4gdGhpcy5hZGQoNyoodC10aGlzLndlZWsoKSksXCJkYXlcIik7dmFyIGU9dGhpcy4kbG9jYWxlKCkueWVhclN0YXJ0fHwxO2lmKDExPT09dGhpcy5tb250aCgpJiZ0aGlzLmRhdGUoKT4yNSl7dmFyIGk9dGhpcy5zdGFydE9mKHIpLmFkZCgxLHIpLmRhdGUoZSksYT10aGlzLmVuZE9mKG4pO2lmKGkuaXNCZWZvcmUoYSkpcmV0dXJuIDF9dmFyIG89dGhpcy5zdGFydE9mKHIpLmRhdGUoZSkuc3RhcnRPZihuKS5zdWJ0cmFjdCgxLFwibWlsbGlzZWNvbmRcIikscz10aGlzLmRpZmYobyxuLCEwKTtyZXR1cm4gczwwP3RoaXMuc3RhcnRPZihcIndlZWtcIikud2VlaygpOk1hdGguY2VpbChzKX0saS53ZWVrcz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksdGhpcy53ZWVrKHQpfX0pfSkpO2Z1bmN0aW9uIHd0KCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwiZGF0ZVwiO3JldHVybiB2W3RdfWZ1bmN0aW9uIFl0KHQsZSl7dmFyIG49dC5yZWdleFRleHQscj10LnN0YXJ0RGF0ZSxpPXQuZW5kRGF0ZSxhPW4ucmVwbGFjZShNLFwiXCIuY29uY2F0KHIpLmNvbmNhdChlP1wifFwiOlwiXCIpKS5yZXBsYWNlKE0sXCJcIi5jb25jYXQoaSkuY29uY2F0KGU/XCJ8XCI6XCJcIikpO3JldHVybiBlP2Euc3BsaXQoXCJ8XCIpOmF9ZnVuY3Rpb24gU3QodCl7cmV0dXJuIDMqdH1mdW5jdGlvbiB4dCh0KXt2YXIgZT10LmRhdGUsbj10Lm1pbixyPXQubWF4LGk9dC50eXBlLGE9dm9pZCAwPT09aT9cImRhdGVcIjppLG89dC5hbGxvd2VkRm4scz1lLmZvcm1hdCh3dChhKSk7cmV0dXJuKCFvfHxvKHMpKSYmKCFufHwkdChzLG4sYSl8fGp0KHMsbixhKSkmJighcnx8JHQocyxyLGEpfHxMdChzLHIsYSkpfWZ1bmN0aW9uIEN0KHQpe3ZhciBlPXQuZGF0ZSxuPXQudHlwZSxyPXZvaWQgMD09PW4/XCJkYXRlXCI6bixpPXQubG9jYWxlO3JldHVybiAkdChFdCh7ZGF0ZTplLGxvY2FsZTppLGZvcm1hdDp3dChyKX0pLEV0KHtkYXRlOnZvaWQgMCxsb2NhbGU6aSxmb3JtYXQ6d3Qocil9KSxcInF1YXJ0ZXJcIj09PXI/XCJtb250aFwiOnIpfWZ1bmN0aW9uICR0KHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOlwiZGF0ZVwiO3JldHVybiBpKHQsd3QobikpLmlzU2FtZShpKGUsd3QobikpLG4pfWZ1bmN0aW9uIEx0KHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOlwiZGF5XCI7aWYoXCJ5ZWFyXCI9PT1uKXJldHVybiBCb29sZWFuKGUpJiZ0PGkoZSxcIllZWVktTU0tRERcIikuZ2V0KG4pO3ZhciByPWkuaXNEYXlqcyh0KT90OmkodCkuc3RhcnRPZihcImRheVwiKTtyZXR1cm4gQm9vbGVhbihlKSYmci5pc0JlZm9yZShpKGUpLnN0YXJ0T2YoXCJkYXlcIiksbil9ZnVuY3Rpb24ganQodCxlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06XCJkYXlcIjtpZihcInllYXJcIj09PW4pcmV0dXJuIEJvb2xlYW4oZSkmJnQ+aShlLFwiWVlZWS1NTS1ERFwiKS5nZXQobik7dmFyIHI9aS5pc0RheWpzKHQpP3Q6aSh0KS5zdGFydE9mKFwiZGF5XCIpO3JldHVybiBCb29sZWFuKGUpJiZyLmlzQWZ0ZXIoaShlKS5zdGFydE9mKFwiZGF5XCIpLG4pfWZ1bmN0aW9uIFB0KHQsZSxuKXtyZXR1cm4ganQodCxlKSYmTHQodCxuKX1mdW5jdGlvbiBUdCh0KXt2YXIgZT10LmRhdGUsbj10LmxvY2FsZSxyPXZvaWQgMD09PW4/e2xhbmc6b306bixhPXQudHlwZTtyZXR1cm5cInllYXJcIj09PSh2b2lkIDA9PT1hP1wiZGF0ZVwiOmEpP2koZSkudXRjKCk6aShlKS5sb2NhbGUoci5sYW5nKX1mdW5jdGlvbiBFdCh0KXt2YXIgZT10LmRhdGUsbj10LmxvY2FsZSxyPXQuZm9ybWF0O3JldHVybiBUdCh7ZGF0ZTplLGxvY2FsZTpufSkuZm9ybWF0KHIpfWZ1bmN0aW9uIEF0KHQpe3ZhciBlPXQueWVhcixuPXQubW9udGg7cmV0dXJuIFR0KHtsb2NhbGU6dC5sb2NhbGV9KS55ZWFyKGUpLm1vbnRoKG4pLnN0YXJ0T2YoXCJtb250aFwiKX1mdW5jdGlvbiBIdCh0KXt2YXIgZT10LnN0YXJ0RGF0ZSxuPXQuZW5kRGF0ZSxyPXQubG9jYWxlLGk9dC5pbnRlcnZhbCxhPXZvaWQgMD09PWk/XCJkYXlcIjppLG89VHQoe2RhdGU6ZSxsb2NhbGU6cn0pLHM9VHQoe2RhdGU6bixsb2NhbGU6cn0pLmRpZmYobyxhKTtyZXR1cm4gUShBcnJheShzKzEpLmtleXMoKSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gby5hZGQodCxhKX0pKX1mdW5jdGlvbiBOdCh0KXt2YXIgZT10LmhlYWRlckZvcm1hdCxuPXQubG9jYWxlLHI9dC5kYXRlLGk9dC5yYW5nZSxhPXQucmFuZ2VIZWFkZXJUZXh0O2lmKGkmJmEpe3ZhciBvPUZ0KHtkYXRlczpyLGxvY2FsZTpuLGZvcm1hdDplfSkuc3BsaXQoXCIgfiBcIikscz12dChvLDIpLGM9WXQoe3JlZ2V4VGV4dDphLHN0YXJ0RGF0ZTpzWzBdLGVuZERhdGU6c1sxXX0sITApLGw9dnQoYywyKSx1PWxbMF0sZD1sWzFdO3JldHVyblt1LnRyaW0oKSxkLnRyaW0oKV19cmV0dXJuIHI/RXQoe2RhdGU6cixsb2NhbGU6bixmb3JtYXQ6ZX0pOlwiLS1cIn1mdW5jdGlvbiBCdCh0KXt2YXIgZT10LmRhdGUsbj10LnR5cGUscj10LmxvY2FsZTtpZihlKXJldHVybiBFdCh7ZGF0ZTplLGxvY2FsZTpyLGZvcm1hdDp3dChuKX0pfWZ1bmN0aW9uIEZ0KHQpe3ZhciBlPXQuZGF0ZXMsbj12b2lkIDA9PT1lP3t9OmUscj10LmxvY2FsZSxpPXQuZm9ybWF0LGE9bi5zdGFydCxvPW4uZW5kO3JldHVybiBhfHxvPyFhJiZvP1wiX18gfiBcIi5jb25jYXQoVHQoe2RhdGU6byxsb2NhbGU6cn0pLnN0YXJ0T2YoXCJkYXlcIikuZm9ybWF0KGkpKTphJiYhbz9cIlwiLmNvbmNhdChUdCh7ZGF0ZTphLGxvY2FsZTpyfSkuc3RhcnRPZihcImRheVwiKS5mb3JtYXQoaSksXCIgfiBfX1wiKTpcIlwiLmNvbmNhdChUdCh7ZGF0ZTphLGxvY2FsZTpyfSkuc3RhcnRPZihcImRheVwiKS5mb3JtYXQoaSksXCIgfiBcIikuY29uY2F0KFR0KHtkYXRlOm8sbG9jYWxlOnJ9KS5zdGFydE9mKFwiZGF5XCIpLmZvcm1hdChpKSk6XCJfXyB+IF9fXCJ9aS5leHRlbmQoeXQpLGkuZXh0ZW5kKGd0KSxpLmV4dGVuZChidCksaS5leHRlbmQoRHQpLGkuZXh0ZW5kKF90KSxpLmV4dGVuZChrdCksaS5leHRlbmQoT3QpLGkuZXh0ZW5kKE10KTt2YXIgSXQ9YXQocnQpLmV4dGVuZCh7bmFtZTpcIlZEUGlja2VyQ29udHJvbHNcIixwcm9wczp7cGlja2VyRGF0ZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LHRyYW5zaXRpb25OYW1lOnt0eXBlOlN0cmluZ30sY29sb3I6e3R5cGU6U3RyaW5nfSxtb2RlOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiZGF0ZVwifSxtaW46e3R5cGU6W1N0cmluZyxOdW1iZXIsRGF0ZV19LG1heDp7dHlwZTpbU3RyaW5nLE51bWJlcixEYXRlXX19LGNvbXB1dGVkOnttb250aEZvcm1hdHRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpY2tlckRhdGUuZ2V0TW9udGhGb3JtYXR0ZWQoKX0seWVhckZvcm1hdHRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpY2tlckRhdGUuZ2V0WWVhckZvcm1hdHRlZCgpfSxpc1ByZXZpb3VzRGF0ZURpc2FibGVkOmZ1bmN0aW9uKCl7dmFyIHQ9W1wibW9udGhcIixcInF1YXJ0ZXJcIl0uaW5jbHVkZXModGhpcy5tb2RlKSxlPXBhcnNlSW50KHRoaXMueWVhckZvcm1hdHRlZCwxMCktMTtyZXR1cm4gTHQodD9lOlwiXCIuY29uY2F0KHRoaXMueWVhckZvcm1hdHRlZCxcIi1cIikuY29uY2F0KHRoaXMucGlja2VyRGF0ZS5tb250aCksdGhpcy5taW4sdD9cInllYXJcIjpcIm1vbnRoXCIpfSxpc05leHREYXRlRGlzYWJsZWQ6ZnVuY3Rpb24oKXt2YXIgdD1bXCJtb250aFwiLFwicXVhcnRlclwiXS5pbmNsdWRlcyh0aGlzLm1vZGUpLGU9cGFyc2VJbnQodGhpcy55ZWFyRm9ybWF0dGVkLDEwKSsxO3JldHVybiBqdCh0P2U6XCJcIi5jb25jYXQodGhpcy55ZWFyRm9ybWF0dGVkLFwiLVwiKS5jb25jYXQodGhpcy5waWNrZXJEYXRlLm1vbnRoKzIpLHRoaXMubWF4LHQ/XCJ5ZWFyXCI6XCJtb250aFwiKX19LG1ldGhvZHM6e29uTmF2aWdhdGlvbkNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuJGVtaXQoXCJvbi1uYXZpZ2F0aW9uLWNsaWNrXCIsdCl9LGdlblByZXZCdXR0b246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy4kY3JlYXRlRWxlbWVudChjdCxcImNoZXZyb25MZWZ0XCIpO3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX19jb250cm9scy1wcmV2XCIsYXR0cnM6e2Rpc2FibGVkOnRoaXMuaXNQcmV2aW91c0RhdGVEaXNhYmxlZCx0eXBlOlwiYnV0dG9uXCJ9LG9uOntjbGljazpmdW5jdGlvbigpe3JldHVybiB0Lm9uTmF2aWdhdGlvbkNsaWNrKFwicHJldlwiKX19fSxbZV0pfSxnZW5OZXh0QnV0dG9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuJGNyZWF0ZUVsZW1lbnQoY3QsXCJjaGV2cm9uUmlnaHRcIik7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX2NvbnRyb2xzLW5leHRcIixhdHRyczp7ZGlzYWJsZWQ6dGhpcy5pc05leHREYXRlRGlzYWJsZWQsdHlwZTpcImJ1dHRvblwifSxvbjp7Y2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdC5vbk5hdmlnYXRpb25DbGljayhcIm5leHRcIil9fX0sW2VdKX0sZ2VuU2VsZWN0b3JzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX2NvbnRyb2xzLXdyYXBwZXJcIn0sW1wiZGF0ZVwiPT09dGhpcy5tb2RlJiZ0aGlzLmdlbk1vbnRoU2VsZWN0b3IoKSx0aGlzLmdlblllYXJTZWxlY3RvcigpXSl9LGdlbkNoaWxkcmVuU2VsZWN0b3JzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LnZhbHVlLHI9dC5rZXksaT10LnR5cGU7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix0aGlzLnNldFRleHRDb2xvcih0aGlzLmNvbG9yLHtrZXk6cixzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9fY29udHJvbHMtbGFiZWxcIn0pLFt0aGlzLiRjcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse2F0dHJzOnt0eXBlOlwiYnV0dG9uXCJ9LG9uOntjbGljazpmdW5jdGlvbigpe3JldHVybiBlLiRlbWl0KFwidXBkYXRlLW1vZGVcIixpKX19fSxbbl0pXSl9LGdlbk1vbnRoU2VsZWN0b3I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwidHJhbnNpdGlvbi1ncm91cFwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9fY29udHJvbHMtbW9udGhcIixwcm9wczp7bmFtZTp0aGlzLnRyYW5zaXRpb25OYW1lLHRhZzpcInNwYW5cIn19LFt0aGlzLnBpY2tlckRhdGUubW9udGhdLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZ2VuQ2hpbGRyZW5TZWxlY3RvcnMoe3ZhbHVlOnQubW9udGhGb3JtYXR0ZWQsa2V5OmUsdHlwZTpcIm1vbnRoXCJ9KX0pKSl9LGdlblllYXJTZWxlY3RvcjpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJ0cmFuc2l0aW9uLWdyb3VwXCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX19jb250cm9scy15ZWFyXCIsY2xhc3M6e1widmQtcGlja2VyX19jb250cm9scy15ZWFyLS1jZW50ZXJcIjpbXCJtb250aFwiLFwicXVhcnRlclwiXS5pbmNsdWRlcyh0aGlzLm1vZGUpfSxwcm9wczp7bmFtZTp0aGlzLnRyYW5zaXRpb25OYW1lLHRhZzpcInNwYW5cIn19LFt0aGlzLnBpY2tlckRhdGUueWVhcl0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5nZW5DaGlsZHJlblNlbGVjdG9ycyh7dmFsdWU6dC55ZWFyRm9ybWF0dGVkLGtleTplLHR5cGU6XCJ5ZWFyXCJ9KX0pKSl9fSxyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX2NvbnRyb2xzXCJ9LFt0aGlzLmdlblByZXZCdXR0b24oKSx0aGlzLmdlblNlbGVjdG9ycygpLHRoaXMuZ2VuTmV4dEJ1dHRvbigpXSl9fSk7ZnVuY3Rpb24gVnQodCxlKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihyPXIuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHp0KHQpe2Zvcih2YXIgZT1hcmd1bWVudHMsbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciByPW51bGwhPWVbbl0/ZVtuXTp7fTtuJTI/VnQoT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihlKXthKHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpWdChPYmplY3QocikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpKX0pKX1yZXR1cm4gdH12YXIgV3Q9YXQocnQpLmV4dGVuZCh7bmFtZTpcIlZEUGlja2VySGVhZGVyXCIscHJvcHM6e2Zvcm1hdHRlZEhlYWRlclllYXI6e3R5cGU6U3RyaW5nfSxmb3JtYXR0ZWRIZWFkZXJEYXRlOnt0eXBlOltBcnJheSxTdHJpbmddfSxjb2xvcjp7dHlwZTpTdHJpbmd9LG1vZGU6e3R5cGU6U3RyaW5nfSxtdXRhYmxlRGF0ZTp7dHlwZTpbU3RyaW5nLE9iamVjdF19LHJhbmdlOnt0eXBlOkJvb2xlYW59LHRyYW5zaXRpb25OYW1lOnt0eXBlOlN0cmluZ30sdHlwZTp7dHB5ZTpCb29sZWFufX0sY29tcHV0ZWQ6e2NsYXNzZXM6ZnVuY3Rpb24oKXtyZXR1cm4gYSh7XCJ2ZC1waWNrZXItaGVhZGVyLS1yYW5nZVwiOnRoaXMucmFuZ2V9LFwidmQtcGlja2VyLWhlYWRlci0tXCIuY29uY2F0KHRoaXMudHlwZSksdGhpcy50eXBlKX0seWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm11dGFibGVEYXRlP3RoaXMuZm9ybWF0dGVkSGVhZGVyWWVhcjpcIi1cIn0sZGF0ZUZvcm1hdHRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvcm1hdHRlZEhlYWRlckRhdGV9LGlzRGF0ZVZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5yYW5nZSYmXCJ5ZWFyXCIhPT10aGlzLnR5cGV9fSxtZXRob2RzOntnZW5ZZWFyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyLWhlYWRlcl9feWVhci1idXR0b25cIixvbjp7Y2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdC4kZW1pdChcInVwZGF0ZS1tb2RlXCIsXCJ5ZWFyXCIpfX19LFt0aGlzLnllYXJdKSxuPXtzdGF0aWNDbGFzczpcInZkLXBpY2tlci1oZWFkZXJfX3llYXJcIixjbGFzczp7XCJ2ZC1waWNrZXItaGVhZGVyX195ZWFyLS1hY3RpdmVcIjpcInllYXJcIj09PXRoaXMubW9kZX19O3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIsbixbZV0pfSxnZW5EYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuZ2VuVHJhbnNpdGlvbkdyb3VwKHtkYXRlOnRoaXMuZGF0ZUZvcm1hdHRlZCxpc0FjdGl2ZTpcInllYXJcIiE9PXRoaXMubW9kZSxvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHQuJGVtaXQoXCJ1cGRhdGUtbW9kZVwiLFwiZGF0ZVwiKX19KTtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlci1oZWFkZXJfX3dyYXBcIn0sW2VdKX0sZ2VuUmFuZ2VEYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZW5UcmFuc2l0aW9uR3JvdXAoe2RhdGU6dGhpcy5kYXRlRm9ybWF0dGVkWzBdLGlzQWN0aXZlOkJvb2xlYW4odGhpcy5tdXRhYmxlRGF0ZS5zdGFydCl9KSxlPXRoaXMuZ2VuVHJhbnNpdGlvbkdyb3VwKHtkYXRlOnRoaXMuZGF0ZUZvcm1hdHRlZFsxXSxpc0FjdGl2ZTpCb29sZWFuKHRoaXMubXV0YWJsZURhdGUuZW5kKX0pO3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyLWhlYWRlcl9fd3JhcFwifSxbdCxlXSl9LGdlblRyYW5zaXRpb25Hcm91cDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dC5kYXRlLHI9dC5pc0FjdGl2ZSxpPXQub25DbGljaztyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcInRyYW5zaXRpb24tZ3JvdXBcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXItaGVhZGVyX19kYXRlXCIsY2xhc3M6e1widmQtcGlja2VyLWhlYWRlcl9fZGF0ZS0tYWN0aXZlXCI6cn0scHJvcHM6e25hbWU6dGhpcy50cmFuc2l0aW9uTmFtZSx0YWc6XCJkaXZcIn19LFtuXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS4kY3JlYXRlRWxlbWVudChcInNwYW5cIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXItaGVhZGVyX193cmFwLWJ1dHRvblwiLGtleTp0LG9uOnp0KHt9LGkmJntjbGljazppfSl9LFt0XSl9KHQpfSkpKX19LHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChcImRpdlwiLHRoaXMuc2V0QmFja2dyb3VuZENvbG9yKHRoaXMuY29sb3Ise3N0YXRpY0NsYXNzOlwidmQtcGlja2VyLWhlYWRlclwiLGNsYXNzOnRoaXMuY2xhc3Nlc30pLFshdGhpcy5yYW5nZSYmdGhpcy5nZW5ZZWFyKCksdGhpcy5pc0RhdGVWaXNpYmxlJiZ0aGlzLmdlbkRhdGUoKSx0aGlzLnJhbmdlJiZ0aGlzLmdlblJhbmdlRGF0ZSgpXSl9fSk7ZnVuY3Rpb24gcXQodCxlKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihyPXIuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFJ0KHQpe2Zvcih2YXIgZT1hcmd1bWVudHMsbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciByPW51bGwhPWVbbl0/ZVtuXTp7fTtuJTI/cXQoT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihlKXthKHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpxdChPYmplY3QocikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpKX0pKX1yZXR1cm4gdH12YXIgSnQ9YXQocnQseCkuZXh0ZW5kKHtuYW1lOlwiVkRQaWNrZXJQcmVzZXRzXCIscHJvcHM6e3JhbmdlUHJlc2V0czp7dHlwZTpBcnJheX0sbXV0YWJsZURhdGU6e3R5cGU6T2JqZWN0fSxtaW5EYXRlOnt0eXBlOltTdHJpbmcsTnVtYmVyLERhdGVdfSxtYXhEYXRlOnt0eXBlOltTdHJpbmcsTnVtYmVyLERhdGVdfSxjb2xvcjp7dHlwZTpTdHJpbmd9fSxjb21wdXRlZDp7cHJlc2V0c0Zvcm1hdHRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodGhpcy5yYW5nZVByZXNldHMpcmV0dXJuIHRoaXMucmFuZ2VQcmVzZXRzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIFJ0KFJ0KHt9LGUpLHt9LHthdmFpbGFibGVEYXRlczoobj17ZGF0ZXM6ZS5kYXRlcyxtaW5EYXRlOnQubWluRGF0ZSxtYXhEYXRlOnQubWF4RGF0ZSxsb2NhbGU6dC5jdXJyZW50TG9jYWxlfSxyPW4uZGF0ZXMsYT12b2lkIDA9PT1yP3t9OnIsbz1uLm1pbkRhdGUscz1uLm1heERhdGUsYz1uLmxvY2FsZSxsPWEuc3RhcnQsdT1hLmVuZCxkPW98fFR0KHtsb2NhbGU6Y30pLnllYXIoZyksaD1zfHxUdCh7bG9jYWxlOmN9KS55ZWFyKGIpLEh0KHtzdGFydERhdGU6bCxlbmREYXRlOnUsbG9jYWxlOmN9KS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzU2FtZU9yQWZ0ZXIoZCxcImRheVwiKSYmdC5pc1NhbWVPckJlZm9yZShpKGgsXCJkYXlcIikpfSkpKX0pO3ZhciBuLHIsYSxvLHMsYyxsLHUsZCxofSkpLnNwbGljZSgwLDYpfX0sbWV0aG9kczp7aXNQcmVzZXRTZWxlY3RlZDpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxlPXQuYXZhaWxhYmxlRGF0ZXMsbj12b2lkIDA9PT1lP1tdOmU7cmV0dXJuISgwPT09bi5sZW5ndGh8fCF0aGlzLm11dGFibGVEYXRlKSYmKCR0KG5bMF0sdGhpcy5tdXRhYmxlRGF0ZS5zdGFydCkmJiR0KG5bbi5sZW5ndGgtMV0sdGhpcy5tdXRhYmxlRGF0ZS5lbmQpKX0saXNQcmVzZXRWYWxpZDpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxlPXQuYXZhaWxhYmxlRGF0ZXMsbj12b2lkIDA9PT1lP1tdOmU7cmV0dXJuISF0aGlzLm11dGFibGVEYXRlJiZuLmxlbmd0aD4wfSxzZXRQcmVzZXREYXRlczpmdW5jdGlvbih0KXt2YXIgZT10LmF2YWlsYWJsZURhdGVzO3RoaXMuaXNQcmVzZXRTZWxlY3RlZCh7YXZhaWxhYmxlRGF0ZXM6ZX0pfHx0aGlzLiRlbWl0KFwidXBkYXRlLXJhbmdlXCIse3N0YXJ0OmVbMF0sZW5kOmVbZS5sZW5ndGgtMV19KX0sZ2VuV3JhcHBlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyLXByZXNldHNfX3dyYXBwZXJcIn0sdGhpcy5wcmVzZXRzRm9ybWF0dGVkLm1hcCh0aGlzLmdlbkJ1dHRvbikpfSxnZW5CdXR0b246ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9dGhpcy4kY3JlYXRlRWxlbWVudChcImRpdlwiLHRoaXMuc2V0QmFja2dyb3VuZENvbG9yKHRoaXMuY29sb3Ise3N0YXRpY0NsYXNzOlwidmQtcGlja2VyLXByZXNldF9fZWZmZWN0XCJ9KSksaT10aGlzLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyLXByZXNldF9fbmFtZVwiLGRvbVByb3BzOntpbm5lckhUTUw6dC5uYW1lfX0pO3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse2tleTplLHN0YXRpY0NsYXNzOlwidmQtcGlja2VyLXByZXNldFwiLGNsYXNzOntcInZkLXBpY2tlci1wcmVzZXQtLXNlbGVjdGVkXCI6dGhpcy5pc1ByZXNldFNlbGVjdGVkKHQpLFwidmQtcGlja2VyLXByZXNldC0tZGlzYWJsZWRcIjohdGhpcy5pc1ByZXNldFZhbGlkKHQpfSxhdHRyczp7dHlwZTpcImJ1dHRvblwifSxvbjp7Y2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbi5zZXRQcmVzZXREYXRlcyh0KX19fSxbcixpXSl9fSxyZW5kZXI6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmVzZXRzRm9ybWF0dGVkKXJldHVybiB0KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyLXByZXNldHNcIn0sW3RoaXMuZ2VuV3JhcHBlcigpXSl9fSk7ZnVuY3Rpb24gWHQodCxlKXt2YXIgbj10LmNoYW5nZWRUb3VjaGVzWzBdO2UudG91Y2hlbmRYPW4uY2xpZW50WCxlLnRvdWNoZW5kWT1uLmNsaWVudFksZS5lbmQmJmUuZW5kKE9iamVjdC5hc3NpZ24odCxlKSksZnVuY3Rpb24odCl7dmFyIGU9dC50b3VjaHN0YXJ0WCxuPXQudG91Y2hlbmRYLHI9dC50b3VjaHN0YXJ0WSxpPXQudG91Y2hlbmRZO3Qub2Zmc2V0WD1uLWUsdC5vZmZzZXRZPWktcixNYXRoLmFicyh0Lm9mZnNldFkpPC41Kk1hdGguYWJzKHQub2Zmc2V0WCkmJih0LmxlZnQmJm48ZS0xNiYmdC5sZWZ0KHQpLHQucmlnaHQmJm4+ZSsxNiYmdC5yaWdodCh0KSksTWF0aC5hYnModC5vZmZzZXRYKTwuNSpNYXRoLmFicyh0Lm9mZnNldFkpJiYodC51cCYmaTxyLTE2JiZ0LnVwKHQpLHQuZG93biYmaT5yKzE2JiZ0LmRvd24odCkpfShlKX1mdW5jdGlvbiBRdCh0KXt2YXIgZT17dG91Y2hzdGFydFg6MCx0b3VjaHN0YXJ0WTowLHRvdWNoZW5kWDowLHRvdWNoZW5kWTowLHRvdWNobW92ZVg6MCx0b3VjaG1vdmVZOjAsb2Zmc2V0WDowLG9mZnNldFk6MCxsZWZ0OnQubGVmdCxyaWdodDp0LnJpZ2h0LHVwOnQudXAsZG93bjp0LmRvd24sc3RhcnQ6dC5zdGFydCxtb3ZlOnQubW92ZSxlbmQ6dC5lbmR9O3JldHVybnt0b3VjaHN0YXJ0OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuPXQuY2hhbmdlZFRvdWNoZXNbMF07ZS50b3VjaHN0YXJ0WD1uLmNsaWVudFgsZS50b3VjaHN0YXJ0WT1uLmNsaWVudFksZS5zdGFydCYmZS5zdGFydChPYmplY3QuYXNzaWduKHQsZSkpfSh0LGUpfSx0b3VjaGVuZDpmdW5jdGlvbih0KXtyZXR1cm4gWHQodCxlKX0sdG91Y2htb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuPXQuY2hhbmdlZFRvdWNoZXNbMF07ZS50b3VjaG1vdmVYPW4uY2xpZW50WCxlLnRvdWNobW92ZVk9bi5jbGllbnRZLGUubW92ZSYmZS5tb3ZlKE9iamVjdC5hc3NpZ24odCxlKSl9KHQsZSl9fX12YXIgVXQ9e2luc2VydGVkOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1lLnZhbHVlLGk9ci5wYXJlbnQ/dC5wYXJlbnRFbGVtZW50OnQsYT1yLm9wdGlvbnN8fHtwYXNzaXZlOiEwfTtpZihpKXt2YXIgbz1RdChlLnZhbHVlKTtpLl90b3VjaEhhbmRsZXJzPU9iamVjdChpLl90b3VjaEhhbmRsZXJzKSxpLl90b3VjaEhhbmRsZXJzW24uY29udGV4dC5fdWlkXT1vLE9iamVjdC5rZXlzKG8pLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kuYWRkRXZlbnRMaXN0ZW5lcih0LG9bdF0sYSl9KSl9fSx1bmJpbmQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWUudmFsdWUucGFyZW50P3QucGFyZW50RWxlbWVudDp0O2lmKHImJnIuX3RvdWNoSGFuZGxlcnMpe3ZhciBpPXIuX3RvdWNoSGFuZGxlcnNbbi5jb250ZXh0Ll91aWRdO09iamVjdC5rZXlzKGkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3IucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGlbdF0pfSkpLGRlbGV0ZSByLl90b3VjaEhhbmRsZXJzW24uY29udGV4dC5fdWlkXX19fTtmdW5jdGlvbiBadCh0LGUpe3ZhciBuPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59dmFyIEd0PWF0KHJ0LHgpLmV4dGVuZCh7bmFtZTpcIlZEUGlja2VyVGFibGVEYXlcIixpbmplY3Q6W1wiVkRQaWNrZXJcIl0scHJvcHM6e2FsbG93ZWREYXRlczp7dHlwZTpGdW5jdGlvbn0sY29sb3I6e3R5cGU6U3RyaW5nfSxkYXk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSxtYXhEYXRlOnt0eXBlOltTdHJpbmcsTnVtYmVyLERhdGVdfSxtaW5EYXRlOnt0eXBlOltTdHJpbmcsTnVtYmVyLERhdGVdfSxtdXRhYmxlRGF0ZTp7dHlwZTpbU3RyaW5nLE9iamVjdF19LHJhbmdlOnt0eXBlOkJvb2xlYW59LHJhbmdlQ3VycmVudEhvdmVyZWREYXk6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6dm9pZCAwfX0sY29tcHV0ZWQ6e2NsYXNzZXM6ZnVuY3Rpb24oKXtyZXR1cm57XCJ2ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWRcIjp0aGlzLmlzU2VsZWN0ZWQmJiF0aGlzLmlzRGlzYWJsZWQsXCJ2ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlblwiOnRoaXMucmFuZ2UmJnRoaXMuaXNCZXR3ZWVuLFwidmQtcGlja2VyX190YWJsZS1kYXktLWluLXJhbmdlXCI6dGhpcy5yYW5nZSYmdGhpcy5pc0luUmFuZ2UsXCJ2ZC1waWNrZXJfX3RhYmxlLWRheS0tZmlyc3RcIjp0aGlzLnJhbmdlJiZ0aGlzLmZpcnN0SW5SYW5nZSxcInZkLXBpY2tlcl9fdGFibGUtZGF5LS1sYXN0XCI6dGhpcy5yYW5nZSYmdGhpcy5sYXN0SW5SYW5nZSYmQm9vbGVhbih0aGlzLm11dGFibGVEYXRlLmVuZCksXCJ2ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0LXN0YXJ0XCI6dGhpcy5yYW5nZSYmIXRoaXMubXV0YWJsZURhdGUuc3RhcnQsXCJ2ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0LWVuZFwiOnRoaXMucmFuZ2UmJnRoaXMubXV0YWJsZURhdGUuc3RhcnQmJiF0aGlzLm11dGFibGVEYXRlLmVuZCxcInZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZFwiOnRoaXMuaXNEaXNhYmxlZH19LGZvcm1hdHRlZERheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRheS5mb3JtYXQoXCJEXCIpfSxpc0N1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gQ3Qoe2RhdGU6dGhpcy5kYXksdHlwZTpcImRhdGVcIixsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlfSl9LGlzU2VsZWN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5nZT9bXS5jb25jYXQoUSh0aGlzLm11dGFibGVEYXRlLnN0YXJ0P1t0aGlzLm11dGFibGVEYXRlLnN0YXJ0LnN0YXJ0T2YoXCJkYXlcIikudW5peCgpXTpbXSksUSh0aGlzLm11dGFibGVEYXRlLmVuZD9bdGhpcy5tdXRhYmxlRGF0ZS5lbmQuc3RhcnRPZihcImRheVwiKS51bml4KCldOltdKSkuaW5jbHVkZXModGhpcy5kYXkudW5peCgpKTp0aGlzLm11dGFibGVEYXRlJiZ0aGlzLm11dGFibGVEYXRlLnN0YXJ0T2YoXCJkYXlcIikudW5peCgpPT09dGhpcy5kYXkudW5peCgpfSxpc0JldHdlZW46ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLm11dGFibGVEYXRlLnN0YXJ0JiYhdGhpcy5tdXRhYmxlRGF0ZS5lbmQpJiZQdCh0aGlzLmRheSx0aGlzLm11dGFibGVEYXRlLnN0YXJ0LHRoaXMubXV0YWJsZURhdGUuZW5kKX0saXNJblJhbmdlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnJhbmdlQ3VycmVudEhvdmVyZWREYXkmJihMdCh0aGlzLnJhbmdlQ3VycmVudEhvdmVyZWREYXksdGhpcy5tdXRhYmxlRGF0ZS5lbmQpP1B0KHRoaXMuZGF5LHRoaXMucmFuZ2VDdXJyZW50SG92ZXJlZERheSx0aGlzLm11dGFibGVEYXRlLmVuZCk6UHQodGhpcy5kYXksdGhpcy5tdXRhYmxlRGF0ZS5zdGFydCx0aGlzLnJhbmdlQ3VycmVudEhvdmVyZWREYXkpKX0sZmlyc3RJblJhbmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXV0YWJsZURhdGUuc3RhcnQmJnRoaXMubXV0YWJsZURhdGUuc3RhcnQuc3RhcnRPZihcImRheVwiKS51bml4KCk9PT10aGlzLmRheS51bml4KCl9LGxhc3RJblJhbmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXV0YWJsZURhdGUuZW5kJiZ0aGlzLm11dGFibGVEYXRlLmVuZC5zdGFydE9mKFwiZGF5XCIpLnVuaXgoKT09PXRoaXMuZGF5LnVuaXgoKX0saXNEYXRlQWxsb3dlZDpmdW5jdGlvbigpe3JldHVybiB4dCh7ZGF0ZTp0aGlzLmRheSxtaW46dGhpcy5taW5EYXRlLG1heDp0aGlzLm1heERhdGUsYWxsb3dlZEZuOnRoaXMuYWxsb3dlZERhdGVzfSl9LGlzRGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0RhdGVBbGxvd2VkfSxzY29wZWRTbG90RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5WRFBpY2tlcixcImRheVwiKX19LG1ldGhvZHM6e29uRGF5Q2xpY2s6ZnVuY3Rpb24odCl7dGhpcy4kZW1pdChcInNlbGVjdC1kYXlcIix0KX0sZ2VuV3JhcHBlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXJcIixhdHRyczp7XCJkYXRhLWRhdGVcIjp0aGlzLmRheS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpfX0sW3RoaXMuaXNDdXJyZW50JiZ0aGlzLmdlbkRheUN1cnJlbnQoKSx0aGlzLmdlbkRheUVmZmVjdCgpLHRoaXMuZ2VuRGF5VGV4dCgpXSl9LGdlbkRheUN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcInNwYW5cIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX3RhYmxlLWRheV9fY3VycmVudFwifSl9LGdlbkRheUVmZmVjdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwic3BhblwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9fdGFibGUtZGF5X19lZmZlY3RcIn0pfSxnZW5EYXlUZXh0OmZ1bmN0aW9uKCl7aWYoIXRoaXMuc2NvcGVkU2xvdERheSlyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcInNwYW5cIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX3RhYmxlLWRheV9fdGV4dFwifSxbdGhpcy5mb3JtYXR0ZWREYXldKTt2YXIgdD17Zm9ybWF0dGVkRGF5OnRoaXMuZm9ybWF0dGVkRGF5LGlzQ3VycmVudDp0aGlzLmlzVG9kYXksaXNTZWxlY3RlZDp0aGlzLmlzU2VsZWN0ZWQmJiF0aGlzLmlzRGlzYWJsZWQsaXNCZXR3ZWVuOnRoaXMucmFuZ2UmJnRoaXMuaXNCZXR3ZWVuLGlzSW5SYW5nZTp0aGlzLnJhbmdlJiZ0aGlzLmlzSW5SYW5nZSxpc0ZpcnN0UmFuZ2VEYXk6dGhpcy5yYW5nZSYmdGhpcy5maXJzdEluUmFuZ2UsaXNMYXN0UmFuZ2VEYXk6dGhpcy5yYW5nZSYmdGhpcy5sYXN0SW5SYW5nZSYmQm9vbGVhbih0aGlzLm11dGFibGVEYXRlLmVuZCksaXNGaXJzdFNlbGVjdGVkRGF5OnRoaXMucmFuZ2UmJiF0aGlzLm11dGFibGVEYXRlLnN0YXJ0LGlzTGFzdFNlbGVjdGVkRGF5OnRoaXMucmFuZ2UmJnRoaXMubXV0YWJsZURhdGUuc3RhcnQmJiF0aGlzLm11dGFibGVEYXRlLmVuZCxpc0Rpc2FibGVkOnRoaXMuaXNEaXNhYmxlZH0sZT10aGlzLlZEUGlja2VyLiRzY29wZWRTbG90cy5kYXkoZnVuY3Rpb24odCl7Zm9yKHZhciBlPWFyZ3VtZW50cyxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHI9bnVsbCE9ZVtuXT9lW25dOnt9O24lMj9adChPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2EodCxlLHJbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOlp0KE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSkpfXJldHVybiB0fSh7ZGF5OnRoaXMuZm9ybWF0dGVkRGF5fSx0KSk7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX190YWJsZS1kYXlfX3RleHRcIn0sW2VdKX19LHJlbmRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49e3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX190YWJsZS1kYXlcIixjbGFzczp0aGlzLmNsYXNzZXMsYXR0cnM6e3R5cGU6XCJidXR0b25cIixkaXNhYmxlZDp0aGlzLmlzRGlzYWJsZWQsXCJkYXRhLWRhdGVcIjp0aGlzLmRheS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpfSxvbjp7Y2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkRheUNsaWNrKGUuZGF5KX19fTtyZXR1cm4gdChcImJ1dHRvblwiLHRoaXMuc2V0VGV4dENvbG9yKHRoaXMuY29sb3IsbiksW3RoaXMuZ2VuV3JhcHBlcigpXSl9fSksS3Q9YXQocnQpLmV4dGVuZCh7bmFtZTpcIlZEUGlja2VyVGFibGVEYXRlXCIsZGlyZWN0aXZlczp7VG91Y2g6VXR9LHByb3BzOnthbGxvd2VkRGF0ZXM6e3R5cGU6RnVuY3Rpb259LGNvbG9yOnt0eXBlOlN0cmluZ30scGlja2VyRGF0ZTp7dHlwZTpbU3RyaW5nLE9iamVjdF19LGlzUmFuZ2VTZWxlY3RlZDp7dHlwZTpCb29sZWFufSxtYXhEYXRlOnt0eXBlOltTdHJpbmcsTnVtYmVyLERhdGVdfSxtaW5EYXRlOnt0eXBlOltTdHJpbmcsTnVtYmVyLERhdGVdfSxtdXRhYmxlRGF0ZTp7dHlwZTpbU3RyaW5nLE9iamVjdF19LHJhbmdlOnt0eXBlOkJvb2xlYW59LHRyYW5zaXRpb25OYW1lOnt0eXBlOlN0cmluZ319LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57cmFuZ2VDdXJyZW50SG92ZXJlZERheTp2b2lkIDB9fSxjb21wdXRlZDp7d2Vla0RheXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5waWNrZXJEYXRlLmdldFdlZWtEYXlzKCl9LHNwYWNlQmVmb3JlRmlyc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4gUShBcnJheSh0aGlzLnBpY2tlckRhdGUuZ2V0V2Vla1N0YXJ0KCkpLmtleXMoKSl9fSx3YXRjaDp7cmFuZ2VDdXJyZW50SG92ZXJlZERheTpmdW5jdGlvbih0KXt0JiZ0aGlzLiRlbWl0KFwidXBkYXRlLWhvdmVyZWQtZGF5XCIsdCl9fSxtZXRob2RzOntvbkRheUNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMucmFuZ2VDdXJyZW50SG92ZXJlZERheT12b2lkIDAsdGhpcy4kZW1pdChcInNlbGVjdC1kYXRlXCIsdCl9LGhhbmRsZU1vdXNlTW92ZTpmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldCxuPVwic3RyaW5nXCI9PXR5cGVvZiBlLmNsYXNzTmFtZSYmXCJ2ZC1waWNrZXJfX3RhYmxlLWRheXNcIj09PWUuY2xhc3NOYW1lLnNwbGl0KFwiIFwiKVswXTtpZih0aGlzLnJhbmdlJiYhdGhpcy5pc1JhbmdlU2VsZWN0ZWQmJiFuKXt2YXIgcj1lLmRhdGFzZXQuZGF0ZTtpZighcilyZXR1cm4gdGhpcy5oYW5kbGVNb3VzZU1vdmUoe3RhcmdldDplLnBhcmVudE5vZGV9KTt2YXIgaT1yPT09dGhpcy5yYW5nZUN1cnJlbnRIb3ZlcmVkRGF5O3ImJiFpJiYodGhpcy5yYW5nZUN1cnJlbnRIb3ZlcmVkRGF5PWUuZGF0YXNldC5kYXRlKX19LGdlbldlZWs6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX190YWJsZS13ZWVrXCJ9LHRoaXMud2Vla0RheXMubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiB0LiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse2tleTpuLGRvbVByb3BzOntpbm5lckhUTUw6ZX0sc3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX3RhYmxlLXdlZWtkYXlcIn0pfSkpKX0sZ2VuRGF5c1dyYXBwZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcInRyYW5zaXRpb24tZ3JvdXBcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX3RhYmxlLWRheXNfX3dyYXBwZXJcIixwcm9wczp7bmFtZTp0aGlzLnRyYW5zaXRpb25OYW1lLHRhZzpcImRpdlwifX0sW3RoaXMucGlja2VyRGF0ZV0ubWFwKHRoaXMuZ2VuRGF5cykpfSxnZW5EYXlzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX3RhYmxlLWRheXNcIixrZXk6dC5tb250aCxvbjp7bW91c2Vtb3ZlOnRoaXMuaGFuZGxlTW91c2VNb3ZlfX0sW3RoaXMuc3BhY2VCZWZvcmVGaXJzdERheS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX190YWJsZS1kYXlcIixrZXk6XCJzcGFjZS1cIi5jb25jYXQodCl9KX0pKSx0aGlzLnBpY2tlckRhdGUuZ2V0RGF5cygpLm1hcCh0aGlzLmdlbkRheSldKX0sZ2VuRGF5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoR3Qse2tleTplLHByb3BzOnthbGxvd2VkRGF0ZXM6dGhpcy5hbGxvd2VkRGF0ZXMsY29sb3I6dGhpcy5jb2xvcixkYXk6dCxtYXhEYXRlOnRoaXMubWF4RGF0ZSxtaW5EYXRlOnRoaXMubWluRGF0ZSxtdXRhYmxlRGF0ZTp0aGlzLm11dGFibGVEYXRlLHJhbmdlOnRoaXMucmFuZ2UscmFuZ2VDdXJyZW50SG92ZXJlZERheTp0aGlzLnJhbmdlQ3VycmVudEhvdmVyZWREYXksbG9jYWxlOnRoaXMuY3VycmVudExvY2FsZX0sb246e1wic2VsZWN0LWRheVwiOnRoaXMub25EYXlDbGlja319KX19LHJlbmRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtcGlja2VyX190YWJsZVwiLGRpcmVjdGl2ZXM6W3tuYW1lOlwidG91Y2hcIix2YWx1ZTp7bGVmdDpmdW5jdGlvbigpe3JldHVybiBlLiRlbWl0KFwidXBkYXRlLW1vbnRoXCIsXCJuZXh0XCIpfSxyaWdodDpmdW5jdGlvbigpe3JldHVybiBlLiRlbWl0KFwidXBkYXRlLW1vbnRoXCIsXCJwcmV2XCIpfX19XSxvbjp7dG91Y2hzdGFydDpmdW5jdGlvbih0KXtyZXR1cm4gdC5zdG9wUHJvcGFnYXRpb24oKX19fSxbdGhpcy5nZW5XZWVrKCksdGhpcy5nZW5EYXlzV3JhcHBlcigpXSl9fSksdGU9e25hbWU6XCJWRFBpY2tlclZhbGlkYXRlXCIsbWl4aW5zOltydF0scHJvcHM6e2J1dHRvblZhbGlkYXRlOnt0eXBlOlN0cmluZ30sYnV0dG9uQ2FuY2VsOnt0eXBlOlN0cmluZ30sY29sb3I6e3R5cGU6U3RyaW5nfSxyYW5nZTp7dHlwZTpCb29sZWFufSxtdXRhYmxlRGF0ZTp7dHlwZTpPYmplY3R9fSxjb21wdXRlZDp7aXNEaXNhYmxlZFZhbGlkYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucmFuZ2UmJihcIm9iamVjdFwiIT09TCh0aGlzLm11dGFibGVEYXRlKXx8IU9iamVjdC52YWx1ZXModGhpcy5tdXRhYmxlRGF0ZSkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBCb29sZWFuKHQpfSkpKX19LG1ldGhvZHM6e2dlbkJ1dHRvbkNhbmNlbDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbiB2ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbi1jYW5jZWxcIixhdHRyczp7dHlwZTpcImJ1dHRvblwifSxvbjp7Y2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdC4kZW1pdChcImNhbmNlbFwiKX19fSxbdGhpcy5nZW5CdXR0b25FZmZlY3QoKSx0aGlzLmdlbkJ1dHRvblRleHQodGhpcy5idXR0b25DYW5jZWwpXSl9LGdlbkJ1dHRvblZhbGlkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHRoaXMuc2V0VGV4dENvbG9yKHRoaXMuY29sb3Ise3N0YXRpY0NsYXNzOlwidmQtcGlja2VyLXZhbGlkYXRlX19idXR0b24gdmQtcGlja2VyLXZhbGlkYXRlX19idXR0b24tdmFsaWRhdGVcIixhdHRyczp7dHlwZTpcImJ1dHRvblwiLGRpc2FibGVkOnRoaXMuaXNEaXNhYmxlZFZhbGlkYXRpb259LG9uOntjbGljazpmdW5jdGlvbigpe3JldHVybiB0LiRlbWl0KFwidmFsaWRhdGVcIil9fX0pLFt0aGlzLmdlbkJ1dHRvbkVmZmVjdCgpLHRoaXMuZ2VuQnV0dG9uVGV4dCh0aGlzLmJ1dHRvblZhbGlkYXRlKV0pfSxnZW5CdXR0b25FZmZlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcImRpdlwiLHRoaXMuc2V0QmFja2dyb3VuZENvbG9yKHRoaXMuY29sb3Ise3N0YXRpY0NsYXNzOlwidmQtcGlja2VyLXZhbGlkYXRlX19lZmZlY3RcIn0pKX0sZ2VuQnV0dG9uVGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlci12YWxpZGF0ZV9fbmFtZVwiLGRvbVByb3BzOntpbm5lckhUTUw6dH19KX19LHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlci12YWxpZGF0ZVwifSxbdGhpcy5nZW5CdXR0b25DYW5jZWwoKSx0aGlzLmdlbkJ1dHRvblZhbGlkYXRlKCldKX19O2Z1bmN0aW9uIGVlKHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBuZSh0KXtmb3IodmFyIGU9YXJndW1lbnRzLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1udWxsIT1lW25dP2Vbbl06e307biUyP2VlKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YSh0LGUscltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6ZWUoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9dmFyIHJlPWF0KHJ0LHgpLmV4dGVuZCh7bmFtZTpcIlZEUGlja2VyTW9udGhzXCIscHJvcHM6e2FjdGl2ZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGFsbG93ZWREYXRlczp7dHlwZTpGdW5jdGlvbn0sY29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6U3RyaW5nfSxwaWNrZXJEYXRlOnt0eXBlOk9iamVjdCxkZWZhdWx0Ok9iamVjdH0sbWF4Ont0eXBlOltTdHJpbmcsTnVtYmVyLERhdGVdfSxtaW46e3R5cGU6W1N0cmluZyxOdW1iZXIsRGF0ZV19LG11dGFibGVEYXRlOnt0eXBlOk9iamVjdCxkZWZhdWx0OnZvaWQgMH0scmFuZ2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0cmFuc2l0aW9uTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpTdHJpbmd9LHR5cGU6e3R5cGU6U3RyaW5nfSx2aXNpYmxlWWVhcnNOdW1iZXI6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MTB9fSxjb21wdXRlZDp7eWVhckZvcm1hdHRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpY2tlckRhdGUuZ2V0WWVhckZvcm1hdHRlZCgpfSxnZXRNb250aHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5waWNrZXJEYXRlLmdldE1vbnRocygpfX0sbWV0aG9kczp7aXNDdXJyZW50OmZ1bmN0aW9uKHQpe3JldHVybiBDdCh7ZGF0ZTpBdCh7eWVhcjp0aGlzLnBpY2tlckRhdGUueWVhcixtb250aDp0LGxvY2FsZTp0aGlzLmN1cnJlbnRMb2NhbGV9KSx0eXBlOlwibW9udGhcIixsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlfSl9LGlzU2VsZWN0ZWQ6ZnVuY3Rpb24odCl7aWYodGhpcy5yYW5nZXx8IXRoaXMubXV0YWJsZURhdGUpcmV0dXJuITE7dmFyIGU9QXQoe3llYXI6dGhpcy5waWNrZXJEYXRlLnllYXIsbW9udGg6dCxsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlfSk7cmV0dXJuICR0KHRoaXMubXV0YWJsZURhdGUuZm9ybWF0KFwiWVlZWS1NTVwiKSxlLmZvcm1hdChcIllZWVktTU1cIiksXCJtb250aFwiKX0saXNBbGxvd2VkOmZ1bmN0aW9uKHQpe3JldHVybiB4dCh7ZGF0ZTpBdCh7eWVhcjp0aGlzLnllYXJGb3JtYXR0ZWQsbW9udGg6dCxsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlfSksbWluOnRoaXMubWluLG1heDp0aGlzLm1heCx0eXBlOlwibW9udGhcIixhbGxvd2VkRm46dGhpcy5hbGxvd2VkRGF0ZXN9KX0sZ2VuVHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwidHJhbnNpdGlvbi1ncm91cFwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9fbW9udGhzLWlubmVyXCIscHJvcHM6e3RhZzpcImRpdlwiLG5hbWU6dGhpcy50cmFuc2l0aW9uTmFtZX19LFt0aGlzLnBpY2tlckRhdGUueWVhcl0ubWFwKHRoaXMuZ2VuTW9udGhMaXN0KSl9LGdlbk1vbnRoTGlzdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9fbW9udGhzLWxpc3RcIixrZXk6dH0sW3RoaXMuZ2V0TW9udGhzLm1hcCh0aGlzLmdlbk1vbnRoQnV0dG9uKV0pfSxnZW5Nb250aEJ1dHRvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj10aGlzLmlzQ3VycmVudChlKSYmIXRoaXMuaXNTZWxlY3RlZChlKSxpPXRoaXMuaXNTZWxlY3RlZChlKSxhPXRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7a2V5OmUsc3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX21vbnRocy1idXR0b25cIixzdHlsZTpuZShuZSh7fSxyJiZ7XCJib3JkZXItY29sb3JcIjp0aGlzLmNvbG9yfSksaSYmbmUobmUoe30sdGhpcy5zZXRUZXh0Q29sb3IoXCIjZmZmXCIpKSx0aGlzLnNldEJhY2tncm91bmRDb2xvcih0aGlzLmNvbG9yKSkpLGF0dHJzOnt0eXBlOlwiYnV0dG9uXCIsZGlzYWJsZWQ6IXRoaXMuaXNBbGxvd2VkKGUpfSxvbjp7Y2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbi4kZW1pdChcImlucHV0XCIsZSxcIm1vbnRoXCIpfX19LFt0XSk7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX21vbnRocy1idXR0b25fX3dyYXBwZXJcIn0sW2FdKX19LHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9fbW9udGhzXCJ9LFt0aGlzLmdlblRyYW5zaXRpb24oKV0pfX0pO2Z1bmN0aW9uIGllKHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBhZSh0KXtmb3IodmFyIGU9YXJndW1lbnRzLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1udWxsIT1lW25dP2Vbbl06e307biUyP2llKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YSh0LGUscltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6aWUoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9dmFyIG9lPWF0KHJ0LHgpLmV4dGVuZCh7bmFtZTpcIlZEUGlja2VyUXVhcnRlcnNcIixwcm9wczp7YWN0aXZlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYWxsb3dlZERhdGVzOnt0eXBlOkZ1bmN0aW9ufSxjb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDpTdHJpbmd9LHBpY2tlckRhdGU6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6T2JqZWN0fSxtYXg6e3R5cGU6W1N0cmluZyxOdW1iZXIsRGF0ZV19LG1pbjp7dHlwZTpbU3RyaW5nLE51bWJlcixEYXRlXX0sbXV0YWJsZURhdGU6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6dm9pZCAwfSx0cmFuc2l0aW9uTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpTdHJpbmd9fSxjb21wdXRlZDp7Z2V0UXVhcnRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5waWNrZXJEYXRlLmdldFF1YXJ0ZXJzKCl9fSxtZXRob2RzOntpc0N1cnJlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIEN0KHtkYXRlOkF0KHt5ZWFyOnRoaXMucGlja2VyRGF0ZS55ZWFyLG1vbnRoOnQsbG9jYWxlOnRoaXMuY3VycmVudExvY2FsZX0pLHR5cGU6XCJxdWFydGVyXCIsbG9jYWxlOnRoaXMuY3VycmVudExvY2FsZX0pfSxpc1NlbGVjdGVkOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLm11dGFibGVEYXRlKXJldHVybiExO3ZhciBlPUF0KHt5ZWFyOnRoaXMucGlja2VyRGF0ZS55ZWFyLG1vbnRoOnQsbG9jYWxlOnRoaXMuY3VycmVudExvY2FsZX0pO3JldHVybiAkdCh0aGlzLm11dGFibGVEYXRlLmZvcm1hdChcIllZWVktTU1cIiksZS5mb3JtYXQoXCJZWVlZLU1NXCIpLFwibW9udGhcIil9LGlzQWxsb3dlZDpmdW5jdGlvbih0KXtyZXR1cm4geHQoe2RhdGU6QXQoe3llYXI6dGhpcy5waWNrZXJEYXRlLnllYXIsbW9udGg6dCxsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlfSksbWluOnRoaXMubWluLG1heDp0aGlzLm1heCx0eXBlOlwibW9udGhcIixhbGxvd2VkRm46dGhpcy5hbGxvd2VkRGF0ZXN9KX0sZ2VuVHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwidHJhbnNpdGlvbi1ncm91cFwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9fcXVhcnRlcnMtaW5uZXJcIixwcm9wczp7dGFnOlwiZGl2XCIsbmFtZTp0aGlzLnRyYW5zaXRpb25OYW1lfX0sW3RoaXMucGlja2VyRGF0ZS55ZWFyXS5tYXAodGhpcy5nZW5RdWFydGVyTGlzdCkpfSxnZW5RdWFydGVyTGlzdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9fcXVhcnRlcnMtbGlzdFwiLGtleTp0fSxbdGhpcy5nZXRRdWFydGVycy5tYXAodGhpcy5nZW5RdWFydGVyQnV0dG9uKV0pfSxnZW5RdWFydGVyQnV0dG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPVN0KGUpLGk9dGhpcy5pc0N1cnJlbnQocikmJiF0aGlzLmlzU2VsZWN0ZWQociksYT10aGlzLmlzU2VsZWN0ZWQociksbz10aGlzLiRjcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse2tleTplLHN0YXRpY0NsYXNzOlwidmQtcGlja2VyX19xdWFydGVycy1idXR0b25cIixzdHlsZTphZShhZSh7fSxpJiZ7XCJib3JkZXItY29sb3JcIjp0aGlzLmNvbG9yfSksYSYmYWUoYWUoe30sdGhpcy5zZXRUZXh0Q29sb3IoXCIjZmZmXCIpKSx0aGlzLnNldEJhY2tncm91bmRDb2xvcih0aGlzLmNvbG9yKSkpLGF0dHJzOnt0eXBlOlwiYnV0dG9uXCIsZGlzYWJsZWQ6IXRoaXMuaXNBbGxvd2VkKGUpfSxvbjp7Y2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbi4kZW1pdChcImlucHV0XCIsZSxcInF1YXJ0ZXJcIil9fX0sW3RdKTtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9fcXVhcnRlcnMtYnV0dG9uX193cmFwcGVyXCJ9LFtvXSl9fSxyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX3F1YXJ0ZXJzXCJ9LFt0aGlzLmdlblRyYW5zaXRpb24oKV0pfX0pO2Z1bmN0aW9uIHNlKHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBjZSh0KXtmb3IodmFyIGU9YXJndW1lbnRzLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1udWxsIT1lW25dP2Vbbl06e307biUyP3NlKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YSh0LGUscltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6c2UoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9dmFyIGxlPWF0KHJ0KS5leHRlbmQoe25hbWU6XCJWRFBpY2tlclllYXJzXCIscHJvcHM6e2FjdGl2ZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGFsbG93ZWREYXRlczp7dHlwZTpGdW5jdGlvbn0sY29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6U3RyaW5nfSxtdXRhYmxlRGF0ZTp7dHlwZTpPYmplY3QsZGVmYXVsdDp2b2lkIDB9LHBpY2tlckRhdGU6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6T2JqZWN0fSxtYXg6e3R5cGU6W1N0cmluZyxOdW1iZXIsRGF0ZV19LG1pbjp7dHlwZTpbU3RyaW5nLE51bWJlcixEYXRlXX0sdmlzaWJsZVllYXJzTnVtYmVyOnt0eXBlOk51bWJlcixkZWZhdWx0OjEwfSxyYW5nZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxjb21wdXRlZDp7eWVhckZvcm1hdHRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpY2tlckRhdGUuZ2V0WWVhckZvcm1hdHRlZCgpfSxhY3RpdmVZZWFyOmZ1bmN0aW9uKCl7aWYoIXRoaXMucmFuZ2UpcmV0dXJuIHRoaXMubXV0YWJsZURhdGUmJnRoaXMubXV0YWJsZURhdGUuZm9ybWF0KFwiWVlZWVwiKX0sZ2V0WWVhcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5waWNrZXJEYXRlLmdlbmVyYXRlWWVhcnNSYW5nZSh7YWN0aXZlWWVhcjp0aGlzLmFjdGl2ZVllYXIsdmlzaWJsZVllYXJzTnVtYmVyOnRoaXMudmlzaWJsZVllYXJzTnVtYmVyLG1pbjp0aGlzLm1pbixtYXg6dGhpcy5tYXh9KX19LHdhdGNoOnthY3RpdmU6e2hhbmRsZXI6ZnVuY3Rpb24odCl7dCYmIXRoaXMucmFuZ2UmJnNldFRpbWVvdXQodGhpcy5jb21wdXRlU2Nyb2xsUG9zaXRpb24pfSxpbW1lZGlhdGU6ITB9fSxtZXRob2RzOntpc0N1cnJlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIEN0KHtkYXRlOkF0KHt5ZWFyOnQsbW9udGg6MCxsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlfSksdHlwZTpcInllYXJcIixsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlfSl9LGlzU2VsZWN0ZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWN0aXZlWWVhcj09PVN0cmluZyh0KX0saXNBbGxvd2VkOmZ1bmN0aW9uKHQpe3JldHVybiB4dCh7ZGF0ZTpBdCh7eWVhcjp0LG1vbnRoOjAsbG9jYWxlOnRoaXMuY3VycmVudExvY2FsZX0pLG1pbjp0aGlzLm1pbixtYXg6dGhpcy5tYXgsdHlwZTpcInllYXJcIixhbGxvd2VkRm46dGhpcy5hbGxvd2VkRGF0ZXN9KX0sY29tcHV0ZVNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kZWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFjdGl2ZVwiKVswXTt0aGlzLiRlbC5zY3JvbGxUb3A9ZnVuY3Rpb24odCl7dmFyIGU9dC5hY3RpdmVJdGVtLG49dC5jb250YWluZXIscj10Lm1pbixpPXQubWF4O3JldHVybiBlP2Uub2Zmc2V0VG9wLW4ub2Zmc2V0SGVpZ2h0LzIrZS5vZmZzZXRIZWlnaHQvMjpyfHxpPzA6bi5zY3JvbGxIZWlnaHQvMi1uLm9mZnNldEhlaWdodC8yfSh7YWN0aXZlSXRlbTp0LGNvbnRhaW5lcjp0aGlzLiRlbCxtaW46dGhpcy5taW4sbWF4OnRoaXMubWF4fSl9LGdlblllYXJCdXR0b246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuaXNDdXJyZW50KHQpJiYhdGhpcy5pc1NlbGVjdGVkKHQpLHI9dGhpcy5pc1NlbGVjdGVkKHQpO3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwibGlcIix7a2V5OnQsc3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX3llYXJzLWJ1dHRvblwiLGNsYXNzOnthY3RpdmU6dGhpcy5pc1NlbGVjdGVkKHQpfSxzdHlsZTpjZShjZSh7fSxuJiZ7XCJib3JkZXItY29sb3JcIjp0aGlzLmNvbG9yfSksciYmY2UoY2Uoe30sdGhpcy5zZXRUZXh0Q29sb3IoXCIjZmZmXCIpKSx0aGlzLnNldEJhY2tncm91bmRDb2xvcih0aGlzLmNvbG9yKSkpLGF0dHJzOntkaXNhYmxlZDohdGhpcy5pc0FsbG93ZWQodCl9LG9uOntjbGljazpmdW5jdGlvbigpe3JldHVybiBlLiRlbWl0KFwiaW5wdXRcIix0LFwieWVhclwiKX19fSxbdF0pfX0scmVuZGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHQoXCJ1bFwiLHtzdGF0aWNDbGFzczpcInZkLXBpY2tlcl9feWVhcnNcIn0sdGhpcy5nZXRZZWFycy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmdlblllYXJCdXR0b24odCl9KSkpfX0pO3ZhciB1ZT1mdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9O2Z1bmN0aW9uIGRlKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX12YXIgaGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlJiZkZSh0LnByb3RvdHlwZSxlKSxuJiZkZSh0LG4pLHR9LHBlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7bGFuZzpvfTt1ZSh0aGlzLHQpLGkubG9jYWxlKHIubGFuZyksdGhpcy5sb2NhbGU9cix0aGlzLnN0YXJ0PWkoKS55ZWFyKG4pLm1vbnRoKGUpLnN0YXJ0T2YoXCJtb250aFwiKSx0aGlzLmVuZD10aGlzLnN0YXJ0LmVuZE9mKFwibW9udGhcIiksdGhpcy5tb250aD1lLHRoaXMueWVhcj1ufXJldHVybiBoZSh0LFt7a2V5OlwiZ2V0V2Vla1N0YXJ0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC53ZWVrZGF5KCl9fSx7a2V5OlwiZ2V0RGF5c1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oSHQoe3N0YXJ0RGF0ZTp0aGlzLnN0YXJ0LGVuZERhdGU6dGhpcy5lbmQsbG9jYWxlOnRoaXMubG9jYWxlfSkpfX0se2tleTpcImdldFdlZWtEYXlzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxvY2FsZSxlPXQubGFuZyxuPXQud2Vla0RheXMscj1RKGUud2Vla2RheXNTaG9ydCk7cmV0dXJuIGUud2Vla1N0YXJ0JiYxPT09ZS53ZWVrU3RhcnQmJnIucHVzaChyLnNoaWZ0KCkpLG58fHJ9fSx7a2V5OlwiZ2V0TW9udGhzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuYXBwbHkoMCxBcnJheSgxMikpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gaSgpLm1vbnRoKGUpLmZvcm1hdChcIk1NTVwiKX0pKX19LHtrZXk6XCJnZXRRdWFydGVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmFwcGx5KDAsQXJyYXkoNCkpLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgbj1pKCkucXVhcnRlcihlKzEpLnN0YXJ0T2YoXCJxdWFydGVyXCIpLmZvcm1hdChcIk1NTU1cIikscj1pKCkucXVhcnRlcihlKzEpLmVuZE9mKFwicXVhcnRlclwiKS5mb3JtYXQoXCJNTU1NXCIpO3JldHVyblwiXCIuY29uY2F0KG4sXCIgLSBcIikuY29uY2F0KHIpfSkpfX0se2tleTpcImdldE1vbnRoRm9ybWF0dGVkXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5mb3JtYXQoXCJNTU1NXCIpfX0se2tleTpcImdldFllYXJGb3JtYXR0ZWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LmZvcm1hdChcIllZWVlcIil9fSx7a2V5OlwiZ2VuZXJhdGVZZWFyc1JhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5hY3RpdmVZZWFyLG49dC52aXNpYmxlWWVhcnNOdW1iZXIscj10Lm1pbixhPXQubWF4LG89cGFyc2VJbnQoZSwxMCl8fHBhcnNlSW50KGkoKS5mb3JtYXQoXCJZWVlZXCIpLDEwKSxzPWE/cGFyc2VJbnQoYSwxMCk6bytuLGM9TWF0aC5taW4ocyxyP3BhcnNlSW50KHIsMTApOm8tbik7cmV0dXJuIFEoQXJyYXkocy1jKzEpLmtleXMoKSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcy10fSkpfX1dKSx0fSgpO2Z1bmN0aW9uIGZlKHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBtZSh0KXtmb3IodmFyIGU9YXJndW1lbnRzLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1udWxsIT1lW25dP2Vbbl06e307biUyP2ZlKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YSh0LGUscltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6ZmUoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9dmFyIHZlPWF0KHJ0LGh0LHgpLmV4dGVuZCh7bmFtZTpcIlZEUGlja2VyQWdlbmRhXCIscHJvcHM6e2FsbG93ZWREYXRlczp7dHlwZTpGdW5jdGlvbn0sYnV0dG9uQ2FuY2VsOnt0eXBlOlN0cmluZ30sYnV0dG9uVmFsaWRhdGU6e3R5cGU6U3RyaW5nfSxjb2xvcjp7dHlwZTpTdHJpbmd9LGRhdGU6e3R5cGU6W0RhdGUsT2JqZWN0XX0saGVhZGVyRm9ybWF0Ont0eXBlOlN0cmluZ30sZnVsbHNjcmVlbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1heERhdGU6e3R5cGU6W1N0cmluZyxOdW1iZXIsRGF0ZV19LG1pbkRhdGU6e3R5cGU6W1N0cmluZyxOdW1iZXIsRGF0ZV19LG5hbWU6e3R5cGU6U3RyaW5nfSxub0hlYWRlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHJhbmdlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scmFuZ2VIZWFkZXJUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OlN0cmluZ30scmFuZ2VQcmVzZXRzOnt0eXBlOkFycmF5LGRlZmF1bHQ6dm9pZCAwfSxydGw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0eXBlOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiZGF0ZVwifSx2YWxpZGF0ZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHZhbHVlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdmlzaWJsZVllYXJzTnVtYmVyOnt0eXBlOk51bWJlcn19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57aGVpZ2h0OlwiYXV0b1wiLHBpY2tlckRhdGU6dm9pZCAwLG11dGFibGVEYXRlOnZvaWQgMCxtb2RlOkQsdHJhbnNpdGlvbkRheXNOYW1lOlwic2xpZGUtaC1uZXh0XCIsdHJhbnNpdGlvbkxhYmVsTmFtZTpcInNsaWRlLXYtbmV4dFwifX0sY29tcHV0ZWQ6e2NsYXNzZXM6ZnVuY3Rpb24oKXtyZXR1cm57XCJ2ZC1waWNrZXItLXJ0bFwiOnRoaXMucnRsLFwidmQtcGlja2VyLS1ib3R0b21zaGVldFwiOnRoaXMuZnVsbHNjcmVlbixcInZkLXBpY2tlci0tbm8taGVhZGVyXCI6dGhpcy5ub0hlYWRlcixcInZkLXBpY2tlci0tdmFsaWRhdGVcIjp0aGlzLnZhbGlkYXRlLFwidmQtcGlja2VyLS1yYW5nZVwiOnRoaXMucmFuZ2UsXCJ2ZC1waWNrZXItLXJhbmdlLXNlbGVjdGluZ1wiOnRoaXMucmFuZ2UmJiF0aGlzLmlzUmFuZ2VTZWxlY3RlZH19LGlzUmFuZ2VTZWxlY3RlZDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5yYW5nZSYmKFwib2JqZWN0XCI9PT1MKHRoaXMubXV0YWJsZURhdGUpJiZPYmplY3QudmFsdWVzKHRoaXMubXV0YWJsZURhdGUpLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gQm9vbGVhbih0KX0pKSl9LGZvcm1hdHRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdD17aGVhZGVyRm9ybWF0OnRoaXMuaGVhZGVyRm9ybWF0LGxvY2FsZTp0aGlzLmxvY2FsZSxtYXhEYXRlOnRoaXMubWF4RGF0ZSxtaW5EYXRlOnRoaXMubWluRGF0ZSxtdXRhYmxlRGF0ZTp0aGlzLm11dGFibGVEYXRlLHJhbmdlOnRoaXMucmFuZ2UscmFuZ2VIZWFkZXJUZXh0OnRoaXMucmFuZ2VIZWFkZXJUZXh0fSxlPXQuaGVhZGVyRm9ybWF0LG49dC5sb2NhbGUscj10Lm1heERhdGUsaT10Lm1pbkRhdGUsYT10Lm11dGFibGVEYXRlLG89dC5yYW5nZSxzPXQucmFuZ2VIZWFkZXJUZXh0LHtmb3JtYXR0ZWRIZWFkZXJZZWFyOkV0KHtkYXRlOmEsbG9jYWxlOm4sZm9ybWF0OlwiWVlZWVwifSksZm9ybWF0dGVkSGVhZGVyRGF0ZTpOdCh7ZGF0ZTphLGhlYWRlckZvcm1hdDplLGxvY2FsZTpuLHJhbmdlOm8scmFuZ2VIZWFkZXJUZXh0OnN9KSxtaW5EYXRlOmksbWF4RGF0ZTpyLG1pbk1vbnRoOkJ0KHtkYXRlOmksdHlwZTpcIm1vbnRoXCIsbG9jYWxlOm59KSxtYXhNb250aDpCdCh7ZGF0ZTpyLHR5cGU6XCJtb250aFwiLGxvY2FsZTpufSksbWluWWVhcjpCdCh7ZGF0ZTppLHR5cGU6XCJ5ZWFyXCIsbG9jYWxlOm59KSxtYXhZZWFyOkJ0KHtkYXRlOnIsdHlwZTpcInllYXJcIixsb2NhbGU6bn0pfTt2YXIgdCxlLG4scixpLGEsbyxzfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuaW5pdEFnZW5kYSgpfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dCgpfSx3YXRjaDp7dmFsdWU6XCJpbml0QWdlbmRhXCIsZGF0ZTpcImluaXREYXRlc0ZvclBpY2tlclwiLHR5cGU6XCJ1cGRhdGVNb2RlXCIsZnVsbHNjcmVlbjp7aGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgcj10aGlzO3RoaXMuJG5leHRUaWNrKChmdW5jdGlvbigpe3ZhciBpPXIuJHJlZnMuYm9keTt0PyhlKGkpLHIuZ2VuT3ZlcmxheSgpKTooci5yZW1vdmVPdmVybGF5KCExKSxuKGkpKX0pKX0saW1tZWRpYXRlOiEwfSxtb2RlOmZ1bmN0aW9uKHQpe3ZhciByPXRoaXM7XCJ5ZWFyXCI9PT10JiZ0aGlzLmZ1bGxzY3JlZW4mJihuKHRoaXMuJHJlZnMuYm9keSksdGhpcy4kbmV4dFRpY2soKGZ1bmN0aW9uKCl7ZShyLiRlbC5xdWVyeVNlbGVjdG9yKFwiLnZkLXBpY2tlcl9feWVhcnNcIikpfSkpKX19LG1ldGhvZHM6e2luaXRBZ2VuZGE6ZnVuY3Rpb24oKXt0aGlzLmluaXREYXRlc0ZvclBpY2tlcih0aGlzLmRhdGUpLHRoaXMudXBkYXRlTW9kZSh0aGlzLnR5cGUpfSx1cGRhdGVUcmFuc2l0aW9uczpmdW5jdGlvbih0KXt0aGlzLnRyYW5zaXRpb25EYXlzTmFtZT1cInNsaWRlLWgtXCIuY29uY2F0KHQpLHRoaXMudHJhbnNpdGlvbkxhYmVsTmFtZT1cInNsaWRlLXYtXCIuY29uY2F0KHQpfSxyZU9yZGVyU2VsZWN0ZWREYXRlOmZ1bmN0aW9uKHQpe3RoaXMubXV0YWJsZURhdGUmJihMdCh0LHRoaXMubXV0YWJsZURhdGUuc3RhcnQpP3RoaXMubXV0YWJsZURhdGU9e3N0YXJ0OnZvaWQgMCxlbmQ6dGhpcy5tdXRhYmxlRGF0ZS5zdGFydH06anQodCx0aGlzLm11dGFibGVEYXRlLmVuZCkmJih0aGlzLm11dGFibGVEYXRlPXtzdGFydDp0aGlzLm11dGFibGVEYXRlLmVuZCxlbmQ6dm9pZCAwfSkpfSxzZWxlY3REYXRlOmZ1bmN0aW9uKHQpe2lmKHRoaXMucmFuZ2UpcmV0dXJuIHRoaXMuaXNSYW5nZVNlbGVjdGVkfHwhdGhpcy5tdXRhYmxlRGF0ZS5zdGFydCYmIXRoaXMubXV0YWJsZURhdGUuZW5kP3ZvaWQodGhpcy5tdXRhYmxlRGF0ZT17c3RhcnQ6dC5jbG9uZSgpLGVuZDp2b2lkIDB9KToodGhpcy5yZU9yZGVyU2VsZWN0ZWREYXRlKHQpLHZvaWQgdGhpcy5lbWl0U2VsZWN0ZWREYXRlKG1lKG1lKG1lKHt9LHRoaXMubXV0YWJsZURhdGUpLHRoaXMubXV0YWJsZURhdGUuc3RhcnQmJntlbmQ6dC5jbG9uZSgpfSksdGhpcy5tdXRhYmxlRGF0ZS5lbmQmJntzdGFydDp0LmNsb25lKCl9KSkpO3ZhciBlLG4scj0oZT10LG49dGhpcy5tdXRhYmxlRGF0ZSxpKGUpLmlzQWZ0ZXIoaShuKSk/XCJuZXh0XCI6XCJwcmV2XCIpO3RoaXMudXBkYXRlVHJhbnNpdGlvbnMociksdGhpcy5lbWl0U2VsZWN0ZWREYXRlKHQuY2xvbmUoKSl9LGVtaXRTZWxlY3RlZERhdGU6ZnVuY3Rpb24odCl7dGhpcy5yYW5nZSYmKHRoaXMucGlja2VyRGF0ZT1uZXcgcGUodC5lbmQubW9udGgoKSx0LmVuZC55ZWFyKCksdGhpcy5jdXJyZW50TG9jYWxlKSksdGhpcy5tdXRhYmxlRGF0ZT10LHRoaXMuJGVtaXQoXCJzZWxlY3REYXRlXCIsdGhpcy5tdXRhYmxlRGF0ZSl9LGluaXREYXRlc0ZvclBpY2tlcjpmdW5jdGlvbih0KXt2YXIgZT1UdCh7ZGF0ZTp0aGlzLnJhbmdlP3QuZW5kfHx0LnN0YXJ0OnQsbG9jYWxlOnRoaXMuY3VycmVudExvY2FsZX0pO2lmKGp0KGUsdGhpcy5tYXhEYXRlKSYmKGU9VHQoe2RhdGU6dGhpcy5tYXhEYXRlLGxvY2FsZTp0aGlzLmN1cnJlbnRMb2NhbGV9KSksdGhpcy5yYW5nZSlyZXR1cm4gdGhpcy5waWNrZXJEYXRlPW5ldyBwZShlLm1vbnRoKCksZS55ZWFyKCksdGhpcy5jdXJyZW50TG9jYWxlKSx2b2lkKHRoaXMubXV0YWJsZURhdGU9dCk7bnVsbD09dCYmXCJxdWFydGVyXCI9PT10aGlzLnR5cGUmJihlPWUubW9udGgoZS5xdWFydGVyKCkpKSxudWxsIT10JiZcInF1YXJ0ZXJcIj09PXRoaXMudHlwZSYmKGU9ZS5tb250aChTdChlLm1vbnRoKCkpKSksdGhpcy5waWNrZXJEYXRlPW5ldyBwZShlLm1vbnRoKCksZS55ZWFyKCksdGhpcy5jdXJyZW50TG9jYWxlKSx0aGlzLm11dGFibGVEYXRlPXQmJnQubW9udGgoZS5tb250aCgpKS5jbG9uZSgpfSxjaGFuZ2VNb250aDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBpY2tlckRhdGUubW9udGgrKFwicHJldlwiPT09dD8tMToxKSxuPXRoaXMucGlja2VyRGF0ZS55ZWFyOyhlPjExfHxlPDApJiYobis9XCJwcmV2XCI9PT10Py0xOjEsZT1cInByZXZcIj09PXQ/MTE6MCksdGhpcy51cGRhdGVUcmFuc2l0aW9ucyh0KSx0aGlzLnBpY2tlckRhdGU9bmV3IHBlKGUsbix0aGlzLmN1cnJlbnRMb2NhbGUpfSxjaGFuZ2VZZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGlja2VyRGF0ZS55ZWFyKyhcInByZXZcIj09PXQ/LTE6MSksbj10aGlzLnBpY2tlckRhdGUubW9udGg7dGhpcy51cGRhdGVUcmFuc2l0aW9ucyh0KSx0aGlzLnBpY2tlckRhdGU9bmV3IHBlKG4sZSx0aGlzLmN1cnJlbnRMb2NhbGUpfSx1cGRhdGVNb2RlOmZ1bmN0aW9uKHQpe3RoaXMubW9kZT10fSx1cGRhdGVTZWxlY3RlZFllYXJNb250aDpmdW5jdGlvbih0LGUpe3ZhciBuPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5cInllYXJcIj09PW4/e3llYXI6dCxtb250aDplLm1vbnRofTpcInF1YXJ0ZXJcIj09PW4/e3llYXI6ZS55ZWFyLG1vbnRoOlN0KHQpfTp7eWVhcjplLnllYXIsbW9udGg6dH19KHQsdGhpcy5waWNrZXJEYXRlLGUpLHI9bi55ZWFyLGk9bi5tb250aDtpZih0aGlzLnBpY2tlckRhdGU9bmV3IHBlKGkscix0aGlzLmN1cnJlbnRMb2NhbGUpLGU9PT1PJiZcInllYXJcIiE9PXRoaXMudHlwZSl7dmFyIGE9XCJxdWFydGVyXCI9PT10aGlzLnR5cGU/XCJxdWFydGVyXCI6XCJtb250aFwiO3JldHVybiB0aGlzLnVwZGF0ZU1vZGUoYSl9aWYoXCJkYXRlXCI9PT10aGlzLnR5cGUpdGhpcy51cGRhdGVNb2RlKFwiZGF0ZVwiKTtlbHNle3ZhciBvPUF0KHt5ZWFyOnRoaXMucGlja2VyRGF0ZS55ZWFyLG1vbnRoOnRoaXMucGlja2VyRGF0ZS5tb250aCxsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlfSk7dGhpcy5zZWxlY3REYXRlKG8pfX0sZ2VuVGl0bGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy4kY3JlYXRlRWxlbWVudChcInBcIix0aGlzLm5hbWUpLG49dGhpcy4kY3JlYXRlRWxlbWVudChjdCx7b246e2NsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHQuJGVtaXQoXCJjbG9zZVwiKX19fSxbXCJjbG9zZVwiXSk7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX3RpdGxlXCJ9LFtlLHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX3RpdGxlLWNsb3NlXCJ9LFtuXSldKX0sZ2VuSGVhZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoV3Qse3Byb3BzOm1lKG1lKHt9LHRoaXMuZm9ybWF0dGVycykse30se2NvbG9yOnRoaXMuY29sb3IsbW9kZTp0aGlzLnllYXJNb250aE1vZGUsbXV0YWJsZURhdGU6dGhpcy5tdXRhYmxlRGF0ZSxyYW5nZTp0aGlzLnJhbmdlLHRyYW5zaXRpb25OYW1lOnRoaXMudHJhbnNpdGlvbkxhYmVsTmFtZSx0eXBlOnRoaXMudHlwZX0pLG9uOntcInVwZGF0ZS1tb2RlXCI6dGhpcy51cGRhdGVNb2RlfX0pfSxnZW5QcmVzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoSnQse3Byb3BzOntyYW5nZVByZXNldHM6dGhpcy5yYW5nZVByZXNldHMsbXV0YWJsZURhdGU6dGhpcy5tdXRhYmxlRGF0ZSxtaW5EYXRlOnRoaXMubWluRGF0ZSxtYXhEYXRlOnRoaXMubWF4RGF0ZSxjb2xvcjp0aGlzLmNvbG9yLGxvY2FsZTp0aGlzLmxvY2FsZX0sb246e1widXBkYXRlLXJhbmdlXCI6dGhpcy5lbWl0U2VsZWN0ZWREYXRlfX0pfSxnZW5Cb2R5OmZ1bmN0aW9uKCl7dmFyIHQ9W3RoaXMubW9kZSE9PU8mJnRoaXMuZ2VuQ29udHJvbHMoKSx0aGlzLm1vZGU9PT1EJiZ0aGlzLmdlblRhYmxlRGF0ZSgpLHRoaXMubW9kZT09PV8mJnRoaXMuZ2VuTW9udGhzKCksdGhpcy5tb2RlPT09ayYmdGhpcy5nZW5RdWFydGVycygpLHRoaXMubW9kZT09PU8mJnRoaXMuZ2VuWWVhcnMoKV07cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJfX2JvZHlcIixyZWY6XCJib2R5XCJ9LHQpfSxnZW5Db250cm9sczpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KEl0LHtwcm9wczp7cGlja2VyRGF0ZTp0aGlzLnBpY2tlckRhdGUsdHJhbnNpdGlvbk5hbWU6dGhpcy50cmFuc2l0aW9uTGFiZWxOYW1lLGNvbG9yOnRoaXMuY29sb3IsbWluOnRoaXMubWluRGF0ZSxtYXg6dGhpcy5tYXhEYXRlLG1vZGU6dGhpcy5tb2RlfSxvbjp7XCJvbi1uYXZpZ2F0aW9uLWNsaWNrXCI6dGhpcy5tb2RlPT09RD90aGlzLmNoYW5nZU1vbnRoOnRoaXMuY2hhbmdlWWVhcixcInVwZGF0ZS1tb2RlXCI6dGhpcy51cGRhdGVNb2RlfX0pfSxnZW5UYWJsZURhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChLdCx7cHJvcHM6e2FsbG93ZWREYXRlczp0aGlzLmFsbG93ZWREYXRlcyxjb2xvcjp0aGlzLmNvbG9yLHBpY2tlckRhdGU6dGhpcy5waWNrZXJEYXRlLGlzUmFuZ2VTZWxlY3RlZDp0aGlzLmlzUmFuZ2VTZWxlY3RlZCxsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlLG1heERhdGU6dGhpcy5tYXhEYXRlLG1pbkRhdGU6dGhpcy5taW5EYXRlLG11dGFibGVEYXRlOnRoaXMubXV0YWJsZURhdGUscmFuZ2U6dGhpcy5yYW5nZSx0cmFuc2l0aW9uTmFtZTp0aGlzLnRyYW5zaXRpb25EYXlzTmFtZX0sb246e1widXBkYXRlLW1vbnRoXCI6dGhpcy5jaGFuZ2VNb250aCxcInVwZGF0ZS1ob3ZlcmVkLWRheVwiOnRoaXMucmVPcmRlclNlbGVjdGVkRGF0ZSxcInNlbGVjdC1kYXRlXCI6dGhpcy5zZWxlY3REYXRlfX0pfSxnZW5Nb250aHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmZvcm1hdHRlcnMsZT10Lm1pbk1vbnRoLG49dC5tYXhNb250aDtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChyZSx7cHJvcHM6e2FjdGl2ZTp0aGlzLm1vZGU9PT1fLGFsbG93ZWREYXRlczp0aGlzLnR5cGU9PT1fP3RoaXMuYWxsb3dlZERhdGVzOnZvaWQgMCxjb2xvcjp0aGlzLmNvbG9yLGxvY2FsZTp0aGlzLmN1cnJlbnRMb2NhbGUsbWF4Om4sbWluOmUsbXV0YWJsZURhdGU6dGhpcy5tdXRhYmxlRGF0ZSxwaWNrZXJEYXRlOnRoaXMucGlja2VyRGF0ZSxyYW5nZTp0aGlzLnJhbmdlLHRyYW5zaXRpb25OYW1lOnRoaXMudHJhbnNpdGlvbkRheXNOYW1lfSxvbjp7aW5wdXQ6dGhpcy51cGRhdGVTZWxlY3RlZFllYXJNb250aH19KX0sZ2VuUXVhcnRlcnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmZvcm1hdHRlcnMsZT10Lm1pbk1vbnRoLG49dC5tYXhNb250aDtyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudChvZSx7cHJvcHM6e2FjdGl2ZTp0aGlzLm1vZGU9PT1rLGFsbG93ZWREYXRlczp0aGlzLnR5cGU9PT1rP3RoaXMuYWxsb3dlZERhdGVzOnZvaWQgMCxjb2xvcjp0aGlzLmNvbG9yLGxvY2FsZTp0aGlzLmN1cnJlbnRMb2NhbGUsbWF4Om4sbWluOmUsbXV0YWJsZURhdGU6dGhpcy5tdXRhYmxlRGF0ZSxwaWNrZXJEYXRlOnRoaXMucGlja2VyRGF0ZSx0cmFuc2l0aW9uTmFtZTp0aGlzLnRyYW5zaXRpb25EYXlzTmFtZX0sb246e2lucHV0OnRoaXMudXBkYXRlU2VsZWN0ZWRZZWFyTW9udGh9fSl9LGdlblllYXJzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5mb3JtYXR0ZXJzLGU9dC5taW5ZZWFyLG49dC5tYXhZZWFyO3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KGxlLHtwcm9wczp7YWN0aXZlOnRoaXMubW9kZT09PU8sYWxsb3dlZERhdGVzOnRoaXMudHlwZT09PU8/dGhpcy5hbGxvd2VkRGF0ZXM6dm9pZCAwLGNvbG9yOnRoaXMuY29sb3IsbWF4Om4sbWluOmUsbXV0YWJsZURhdGU6dGhpcy5tdXRhYmxlRGF0ZSxwaWNrZXJEYXRlOnRoaXMucGlja2VyRGF0ZSxyYW5nZTp0aGlzLnJhbmdlLHZpc2libGVZZWFyc051bWJlcjp0aGlzLnZpc2libGVZZWFyc051bWJlcn0sb246e2lucHV0OnRoaXMudXBkYXRlU2VsZWN0ZWRZZWFyTW9udGh9fSl9LGdlblZhbGlkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudCh0ZSx7cHJvcHM6e2J1dHRvblZhbGlkYXRlOnRoaXMuYnV0dG9uVmFsaWRhdGUsYnV0dG9uQ2FuY2VsOnRoaXMuYnV0dG9uQ2FuY2VsLGNvbG9yOnRoaXMuY29sb3IsbXV0YWJsZURhdGU6dGhpcy5tdXRhYmxlRGF0ZSxyYW5nZTp0aGlzLnJhbmdlfSxvbjp7Y2FuY2VsOmZ1bmN0aW9uKCl7cmV0dXJuIHQuJGVtaXQoXCJjbG9zZVwiKX0sdmFsaWRhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdC4kZW1pdChcInZhbGlkYXRlRGF0ZVwiKX19fSl9fSxyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoXCJkaXZcIix7c3RhdGljQ2xhc3M6XCJ2ZC1waWNrZXJcIixjbGFzczp0aGlzLmNsYXNzZXMscmVmOlwiZGF0ZXBpY2tlclwifSxbdGhpcy5mdWxsc2NyZWVuJiZ0aGlzLmdlblRpdGxlKCksIXRoaXMubm9IZWFkZXImJnRoaXMuZ2VuSGVhZGVyKCksdGhpcy5yYW5nZSYmdGhpcy5nZW5QcmVzZXRzKCksdGhpcy5nZW5Cb2R5KCksdGhpcy52YWxpZGF0ZSYmdGhpcy5nZW5WYWxpZGF0ZSgpXSl9fSk7ZnVuY3Rpb24geWUodCl7dmFyIGU9dC5tZXNzYWdlLG49dC52bTtpZihuKXtpZihuLiRfYWxyZWFkeVdhcm5lZD1uLiRfYWxyZWFkeVdhcm5lZHx8W10sbi4kX2FscmVhZHlXYXJuZWQuaW5jbHVkZXMoZSkpcmV0dXJuO24uJF9hbHJlYWR5V2FybmVkLnB1c2goZSl9cmV0dXJuXCJbVnVlRGF0ZVBpY2tlcl0gXCIuY29uY2F0KGUpKyhuP2Z1bmN0aW9uKHQpe2lmKHQuX2lzVnVlJiZ0LiRwYXJlbnQpe2Zvcih2YXIgZT1bXSxuPTA7dDspe2lmKGUubGVuZ3RoPjApe3ZhciByPWVbZS5sZW5ndGgtMV07aWYoci5jb25zdHJ1Y3Rvcj09PXQuY29uc3RydWN0b3Ipe24rKyx0PXQuJHBhcmVudDtjb250aW51ZX1uPjAmJihlW2UubGVuZ3RoLTFdPVtyLG5dLG49MCl9ZS5wdXNoKHQpLHQ9dC4kcGFyZW50fXJldHVyblwiXFxuXFxuZm91bmQgaW5cXG5cXG5cIitlLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm5cIlwiLmNvbmNhdCgwPT09ZT9cIi0tLVxceDNlIFwiOlwiIFwiLnJlcGVhdCg1KzIqZSkpLmNvbmNhdChBcnJheS5pc0FycmF5KHQpP1wiXCIuY29uY2F0KERlKHRbMF0pLFwiLi4uIChcIikuY29uY2F0KHRbMV0sXCIgcmVjdXJzaXZlIGNhbGxzKVwiKTpEZSh0KSl9KSkuam9pbihcIlxcblwiKX1yZXR1cm5cIlxcblxcbihmb3VuZCBpbiBcIi5jb25jYXQoRGUodCksXCIpXCIpfShuKTpcIlwiKX1mdW5jdGlvbiBnZSh0LGUpe3ZhciBuPXllKHttZXNzYWdlOnQsdm06ZX0pO251bGwhPW4mJmNvbnNvbGUud2FybihuKX12YXIgYmU9Lyg/Ol58Wy1fXSkoXFx3KS9nO2Z1bmN0aW9uIERlKHQsZSl7aWYodC4kcm9vdD09PXQpcmV0dXJuXCI8Um9vdD5cIjt2YXIgbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZudWxsIT10LmNpZD90Lm9wdGlvbnM6dC5faXNWdWU/dC4kb3B0aW9uc3x8dC5jb25zdHJ1Y3Rvci5vcHRpb25zOnR8fHt9LHI9bi5uYW1lfHxuLl9jb21wb25lbnRUYWcsaT1uLl9fZmlsZTtpZighciYmaSl7dmFyIGE9aS5tYXRjaCgvKFteL1xcXFxdKylcXC52dWUkLyk7cj1hJiZhWzFdfXJldHVybihyP1wiPFwiLmNvbmNhdChyLnJlcGxhY2UoYmUsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KSkucmVwbGFjZSgvWy1fXS9nLFwiXCIpLFwiPlwiKTpcIjxBbm9ueW1vdXM+XCIpKyhpJiYhMSE9PWU/XCIgYXQgXCIuY29uY2F0KGkpOlwiXCIpfWZ1bmN0aW9uIF9lKHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBrZSh0KXtmb3IodmFyIGU9YXJndW1lbnRzLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1udWxsIT1lW25dP2Vbbl06e307biUyP19lKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YSh0LGUscltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6X2UoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9dmFyIE9lPXttaW5XaWR0aDpcIjI5MHB4XCIsbWF4V2lkdGg6XCIzMTVweFwifSxNZT1hdCh4LEMpLmV4dGVuZCh7bmFtZTpcIlZEUGlja2VyXCIscHJvdmlkZTpmdW5jdGlvbigpe3JldHVybntWRFBpY2tlcjp0aGlzfX0sZGlyZWN0aXZlczp7Q2xpY2tPdXRzaWRlOlR9LHByb3BzOntpZDp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDB9LG5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJkYXRlcGlja2VyXCJ9LGNsZWFyYWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHZhbGlkYXRlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYnV0dG9uVmFsaWRhdGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6dm9pZCAwfSxidXR0b25DYW5jZWw6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6dm9pZCAwfSx0eXBlOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiZGF0ZVwifSxyYW5nZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHJhbmdlSW5wdXRUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OlwiJWQgfiAlZFwifSxyYW5nZUhlYWRlclRleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6dm9pZCAwfSxyYW5nZVByZXNldHM6e3R5cGU6QXJyYXksZGVmYXVsdDp2b2lkIDB9LHZhbHVlOnt0eXBlOltTdHJpbmcsT2JqZWN0LE51bWJlcixEYXRlXX0sZm9ybWF0Ont0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMH0sZm9ybWF0SGVhZGVyOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMH0sdmlzaWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiWVlZWS1NTS1ERFwifSxjb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIiM0Zjg4ZmZcIn0sY29udGVudENsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiXCJ9LGFsbG93ZWREYXRlczp7dHlwZTpGdW5jdGlvbn0sbWluRGF0ZTp7dHlwZTpbU3RyaW5nLE51bWJlcixEYXRlXX0sbWF4RGF0ZTp7dHlwZTpbU3RyaW5nLE51bWJlcixEYXRlXX0sdmlzaWJsZVllYXJzTnVtYmVyOnt0eXBlOk51bWJlcixkZWZhdWx0OjEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGlubGluZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG5vSGVhZGVyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbm9DYWxlbmRhckljb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmdWxsc2NyZWVuTW9iaWxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGFiaW5kZXg6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6XCIwXCJ9LHJ0bDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG9yaWdpbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDB9LGFsbG93T3ZlcmZsb3c6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxhdHRhY2g6e3ZhbGlkYXRvcjpCLGRlZmF1bHQ6ITF9LHpJbmRleDp7dHlwZTpOdW1iZXIsZGVmYXVsdDoxMDAyfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntkYXRlOnZvaWQgMCxpc01lbnVBY3RpdmU6ITEsaXNCb290ZWQ6ITEsYWN0aXZhdG9yOnZvaWQgMH19LGNvbXB1dGVkOntjbGFzc2VzOmZ1bmN0aW9uKCl7cmV0dXJue1widmQtd3JhcHBlci0taW5saW5lXCI6dGhpcy5pbmxpbmUsXCJ2ZC13cmFwcGVyLS1kaXNhYmxlZFwiOnRoaXMuZGlzYWJsZWQsXCJ2ZC13cmFwcGVyLS1ydGxcIjp0aGlzLnJ0bH19LGNvbXBvbmVudElkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR8fFwiZGF0ZXBpY2tlcl9cIi5jb25jYXQoXCJfXCIuY29uY2F0KE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLDkpKSl9LGlucHV0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybWF0P3RoaXMuZm9ybWF0OmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwiZGF0ZVwiO3JldHVybiBtW3RdfSh0aGlzLnJhbmdlP1wicmFuZ2VcIjp0aGlzLnR5cGUpfSxoZWFkZXJGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb3JtYXRIZWFkZXI/dGhpcy5mb3JtYXRIZWFkZXI6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCJkYXRlXCI7cmV0dXJuIHlbdF19KHRoaXMucmFuZ2U/XCJyYW5nZVwiOnRoaXMudHlwZSl9LG91dHB1dEZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB3dCh0aGlzLnJhbmdlP1wicmFuZ2VcIjp0aGlzLnR5cGUpfSx0ZXh0c0Zvcm1hdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY3VycmVudExvY2FsZS5sYW5nLGU9dC5idXR0b25WYWxpZGF0ZSxuPXQuYnV0dG9uQ2FuY2VsLHI9dC5yYW5nZUhlYWRlclRleHQ7cmV0dXJue2J1dHRvblZhbGlkYXRlOnRoaXMuYnV0dG9uVmFsaWRhdGV8fGUsYnV0dG9uQ2FuY2VsOnRoaXMuYnV0dG9uQ2FuY2VsfHxuLHJhbmdlSGVhZGVyVGV4dDp0aGlzLnJhbmdlSGVhZGVyVGV4dHx8cn19LGludGVybmFsRGF0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQ9dGhpcy52YWx1ZSxlPXtyYW5nZTp0aGlzLnJhbmdlLGxvY2FsZTp0aGlzLmN1cnJlbnRMb2NhbGUsdHlwZTp0aGlzLnR5cGV9LG49ZS5yYW5nZSxyPWUubG9jYWxlLGk9ZS50eXBlLG4/e3N0YXJ0OnQmJm51bGwhPXQuc3RhcnQ/VHQoe2RhdGU6dC5zdGFydCxsb2NhbGU6cn0pOnZvaWQgMCxlbmQ6dCYmbnVsbCE9dC5lbmQ/VHQoe2RhdGU6dC5lbmQsbG9jYWxlOnJ9KTp2b2lkIDB9Om51bGwhPXQ/VHQoe2RhdGU6dCxsb2NhbGU6cix0eXBlOml9KTp2b2lkIDA7dmFyIHQsZSxuLHIsaX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuZGF0ZT10fX0saXNEYXRlRGVmaW5lZDpmdW5jdGlvbigpe3ZhciB0PSF0aGlzLnJhbmdlJiZ0aGlzLmludGVybmFsRGF0ZSxlPXRoaXMucmFuZ2UmJnRoaXMuaW50ZXJuYWxEYXRlJiZ0aGlzLmludGVybmFsRGF0ZS5zdGFydCYmdGhpcy5pbnRlcm5hbERhdGUuZW5kO3JldHVybiBCb29sZWFuKHQpfHxCb29sZWFuKGUpfSxmb3JtYXR0ZWRJbnB1dERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC5pbnB1dEZvcm1hdCxuPXQuaW50ZXJuYWxEYXRlLHI9dC5pc0RhdGVEZWZpbmVkLGk9dC5sb2NhbGUsYT10LnJhbmdlLG89dC5yYW5nZUlucHV0VGV4dCxzPXQudHlwZTtpZihyKXtpZihhJiZvKXt2YXIgYz1GdCh7ZGF0ZXM6bixsb2NhbGU6aSxmb3JtYXQ6ZX0pLnNwbGl0KFwiIH4gXCIpLGw9dnQoYywyKTtyZXR1cm4gWXQoe3JlZ2V4VGV4dDpvLHN0YXJ0RGF0ZTpsWzBdLGVuZERhdGU6bFsxXX0pfXZhciB1PW4ubW9udGgoKSxkPVwicXVhcnRlclwiPT09cz9TdCh1KTp1O3JldHVybiBFdCh7ZGF0ZTpuLnNldChcIm1vbnRoXCIsZCksbG9jYWxlOmksZm9ybWF0OmV9KX19KHtpbnB1dEZvcm1hdDp0aGlzLmlucHV0Rm9ybWF0LGludGVybmFsRGF0ZTp0aGlzLmludGVybmFsRGF0ZSxpc0RhdGVEZWZpbmVkOnRoaXMuaXNEYXRlRGVmaW5lZCxsb2NhbGU6dGhpcy5jdXJyZW50TG9jYWxlLHJhbmdlOnRoaXMucmFuZ2UscmFuZ2VJbnB1dFRleHQ6dGhpcy5yYW5nZUlucHV0VGV4dCx0eXBlOnRoaXMudHlwZX0pfSxpc0Z1bGxTY3JlZW5Nb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnVsbHNjcmVlbk1vYmlsZSYmdGhpcy5pc01vYmlsZX19LHdhdGNoOnt2aXNpYmxlOntoYW5kbGVyOmZ1bmN0aW9uKHQpe3RoaXMuaXNNZW51QWN0aXZlPXR9LGltbWVkaWF0ZTohMH0saXNGdWxsU2NyZWVuTW9kZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5pc01lbnVBY3RpdmUmJih0aGlzLmhpZGVEYXRlUGlja2VyKCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LnNob3dEYXRlUGlja2VyKCl9KSwyMDApKX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgdCxlLG4scixpPXRoaXM7W1wibm8taW5wdXRcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGUsbixyO2kuJGF0dHJzLmhhc093blByb3BlcnR5KHQpJiYobj0oZT17b3JpZ2luYWw6dCx2bTppfSkub3JpZ2luYWwscj1lLnZtLGdlKFwiW1JFTU9WRURdICdcIi5jb25jYXQobixcIicgaGFzIGJlZW4gcmVtb3ZlZC4gWW91IGNhbiBzYWZlbHkgb21pdCBpdC5cIikscikpfSkpLHRoaXMuJGF0dHJzLmhhc093blByb3BlcnR5KFwiZnVsbHNjcmVlbi1icmVha3BvaW50XCIpJiYoZT0odD17b3JpZ2luYWw6XCJmdWxsc2NyZWVuLW1vYmlsZVwiLHJlcGxhY2VtZW50OlwibW9iaWxlLWJyZWFrcG9pbnRcIix2bTp0aGlzfSkub3JpZ2luYWwsbj10LnJlcGxhY2VtZW50LHI9dC52bSxnZShcIltVUEdSQURFXSAnXCIuY29uY2F0KGUsXCInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnXCIpLmNvbmNhdChuLFwiJyBpbnN0ZWFkLlwiKSxyKSl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2YXRvcj10aGlzLiRyZWZzLmFjdGl2YXRvcn0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuaGlkZURhdGVQaWNrZXIoKSx0aGlzLiRlbWl0KFwib25EZXN0cm95XCIpfSxtZXRob2RzOntzaG93RGF0ZVBpY2tlcjpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLmlzTWVudUFjdGl2ZT0hMCx0aGlzLiRlbWl0KFwib25PcGVuXCIpKX0saGlkZURhdGVQaWNrZXI6ZnVuY3Rpb24oKXt0aGlzLmlzTWVudUFjdGl2ZSYmKHRoaXMuaXNNZW51QWN0aXZlPSExLHRoaXMuaXNCb290ZWQ9ITEsdCgpLHRoaXMuJGVtaXQoXCJvbkNsb3NlXCIpKX0sY2hhbmdlRGF0ZTpmdW5jdGlvbih0KXt0aGlzLmludGVybmFsRGF0ZT10LHRoaXMudmFsaWRhdGV8fHRoaXMudmFsaWRhdGVEYXRlKCl9LHZhbGlkYXRlRGF0ZTpmdW5jdGlvbigpe3ZhciB0LGU7dGhpcy5kYXRlPyh0aGlzLiRlbWl0KFwiaW5wdXRcIiwodD10aGlzLmRhdGUsZT10aGlzLm91dHB1dEZvcm1hdCx0aGlzLnJhbmdlP3tzdGFydDp0LnN0YXJ0LmZvcm1hdChlKSxlbmQ6dC5lbmQmJnQuZW5kLmZvcm1hdChlKX06dC5mb3JtYXQoZSkpKSx0aGlzLiRlbWl0KFwib25DaGFuZ2VcIiksdGhpcy5oaWRlRGF0ZVBpY2tlcigpKTp0aGlzLmhpZGVEYXRlUGlja2VyKCl9LG9uS2V5RG93bjpmdW5jdGlvbih0KXt2YXIgZT10LmtleUNvZGU7aWYodGhpcy4kcmVmcy5tZW51KXJldHVyblt3LmVzYyx3LnRhYl0uaW5jbHVkZXMoZSk/dGhpcy5oaWRlRGF0ZVBpY2tlcih0KTp2b2lkIDB9LG9uQ2xlYXJEYXRlOmZ1bmN0aW9uKCl7dGhpcy4kZW1pdChcImlucHV0XCIsdm9pZCAwKSx0aGlzLiRlbWl0KFwib25DaGFuZ2VcIil9LGdlbkNvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmxpbmU/W3RoaXMuZ2VuQWdlbmRhKCldOlt0aGlzLiRzY29wZWRTbG90cy5hY3RpdmF0b3I/dGhpcy5nZW5BY3RpdmF0b3IoKTp0aGlzLmdlbkN1c3RvbUlucHV0KCksdGhpcy5nZW5NZW51V2l0aENvbnRlbnQoKV19LGdlbkFjdGl2YXRvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KFwiZGl2XCIse3N0YXRpY0NsYXNzOlwidmQtYWN0aXZhdG9yXCIsZGlyZWN0aXZlczpbe25hbWU6XCJjbGljay1vdXRzaWRlXCIsdmFsdWU6e2lzQWN0aXZlOnRoaXMuaXNNZW51QWN0aXZlJiYhdGhpcy5pc0Z1bGxTY3JlZW5Nb2RlLGhhbmRsZXI6dGhpcy5oaWRlRGF0ZVBpY2tlcn19XSxvbjp7Y2xpY2s6dGhpcy5zaG93RGF0ZVBpY2tlcixrZXlkb3duOnRoaXMub25LZXlEb3dufSxyZWY6XCJhY3RpdmF0b3JcIn0sW3RoaXMuJHNjb3BlZFNsb3RzLmFjdGl2YXRvcih7ZGF0ZTp0aGlzLmZvcm1hdHRlZElucHV0RGF0ZX0pXSl9LGdlbkN1c3RvbUlucHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQobHQse3Byb3BzOntjbGVhcmFibGU6dGhpcy5jbGVhcmFibGUsY29sb3I6dGhpcy5jb2xvcixkYXRlOnRoaXMuZm9ybWF0dGVkSW5wdXREYXRlLGRpc2FibGVkOnRoaXMuZGlzYWJsZWQsaWQ6dGhpcy5jb21wb25lbnRJZCxpc0RhdGVEZWZpbmVkOnRoaXMuaXNEYXRlRGVmaW5lZCxpc01lbnVBY3RpdmU6dGhpcy5pc01lbnVBY3RpdmUsbmFtZTp0aGlzLm5hbWUsbm9DYWxlbmRhckljb246dGhpcy5ub0NhbGVuZGFySWNvbixwbGFjZWhvbGRlcjp0aGlzLnBsYWNlaG9sZGVyLHRhYmluZGV4OnRoaXMudGFiaW5kZXh9LGRpcmVjdGl2ZXM6W3tuYW1lOlwiY2xpY2stb3V0c2lkZVwiLHZhbHVlOntpc0FjdGl2ZTp0aGlzLmlzTWVudUFjdGl2ZSYmIXRoaXMuaXNGdWxsU2NyZWVuTW9kZSxoYW5kbGVyOnRoaXMuaGlkZURhdGVQaWNrZXJ9fV0sbmF0aXZlT246e2NsaWNrOnRoaXMuc2hvd0RhdGVQaWNrZXJ9LG9uOntrZXlkb3duOnRoaXMub25LZXlEb3duLGNsZWFyRGF0ZTp0aGlzLm9uQ2xlYXJEYXRlfSxyZWY6XCJhY3RpdmF0b3JcIn0pfSxnZW5NZW51V2l0aENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5pc0Z1bGxTY3JlZW5Nb2RlLG49a2Uoa2Uoe30sT2UpLHt9LHt2YWx1ZTp0aGlzLmlzTWVudUFjdGl2ZSxvcmlnaW46dGhpcy5vcmlnaW4sYWxsb3dPdmVyZmxvdzp0aGlzLmFsbG93T3ZlcmZsb3csYXR0YWNoOiFlJiZ0aGlzLmF0dGFjaCx0cmFuc2l0aW9uOmU/XCJzbGlkZS1pbi1vdXQtdHJhbnNpdGlvblwiOlwic2NhbGUtdHJhbnNpdGlvblwiLGJvdHRvbVNoZWV0OmV9KSxyPXRoaXMuYWN0aXZhdG9yO3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KEsse2F0dHJzOntyb2xlOlwibWVudVwifSxwcm9wczprZShrZSh7fSxuKSx7fSx7YWN0aXZhdG9yOnJ9KSxvbjp7dHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe3QuaXNCb290ZWQ9ITB9fSxyZWY6XCJtZW51XCJ9LFt0aGlzLmdlbkFnZW5kYSgpXSl9LGdlbkFnZW5kYTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRjcmVhdGVFbGVtZW50KHZlLHtwcm9wczp7YWxsb3dlZERhdGVzOnRoaXMuYWxsb3dlZERhdGVzLGJ1dHRvbkNhbmNlbDp0aGlzLnRleHRzRm9ybWF0LmJ1dHRvbkNhbmNlbCxidXR0b25WYWxpZGF0ZTp0aGlzLnRleHRzRm9ybWF0LmJ1dHRvblZhbGlkYXRlLGNvbG9yOnRoaXMuY29sb3IsZGF0ZTp0aGlzLmludGVybmFsRGF0ZSxmdWxsc2NyZWVuOnRoaXMuaXNCb290ZWQmJnRoaXMuaXNNZW51QWN0aXZlJiZ0aGlzLmlzRnVsbFNjcmVlbk1vZGUsaGVhZGVyRm9ybWF0OnRoaXMuaGVhZGVyRm9ybWF0LGxvY2FsZTp0aGlzLmN1cnJlbnRMb2NhbGUsbWF4RGF0ZTp0aGlzLm1heERhdGUsbWluRGF0ZTp0aGlzLm1pbkRhdGUsbmFtZTp0aGlzLm5hbWUsbm9IZWFkZXI6dGhpcy5ub0hlYWRlcixyYW5nZTp0aGlzLnJhbmdlLHJhbmdlSGVhZGVyVGV4dDp0aGlzLnRleHRzRm9ybWF0LnJhbmdlSGVhZGVyVGV4dCxyYW5nZVByZXNldHM6dGhpcy5yYW5nZVByZXNldHMscnRsOnRoaXMucnRsLHR5cGU6dGhpcy50eXBlLHZhbGlkYXRlOnRoaXMudmFsaWRhdGUsdmFsdWU6dGhpcy5pc01lbnVBY3RpdmUsdmlzaWJsZVllYXJzTnVtYmVyOnRoaXMudmlzaWJsZVllYXJzTnVtYmVyfSxvbjp7c2VsZWN0RGF0ZTp0aGlzLmNoYW5nZURhdGUsdmFsaWRhdGVEYXRlOnRoaXMudmFsaWRhdGVEYXRlLGNsb3NlOnRoaXMuaGlkZURhdGVQaWNrZXJ9LGRpcmVjdGl2ZXM6W3tuYW1lOlwiY2xpY2stb3V0c2lkZVwiLHZhbHVlOntpc0FjdGl2ZTp0aGlzLmlzQm9vdGVkJiZ0aGlzLmlzTWVudUFjdGl2ZSxoYW5kbGVyOnRoaXMuaGlkZURhdGVQaWNrZXJ9fV0scmVmOlwiYWdlbmRhXCJ9KX19LHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChcImRpdlwiLHtzdGF0aWNDbGFzczpcInZkLXdyYXBwZXJcIixjbGFzczp0aGlzLmNsYXNzZXN9LHRoaXMuZ2VuQ29udGVudCgpKX19KSx3ZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxWdWVEYXRlUGlja2VyOk1lfSk7dmFyIFllPXtpbnN0YWxsZWQ6ITEsdmVyc2lvbjpcIjAuMi4xMVwiLGluc3RhbGw6ZnVuY3Rpb24gdChlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYoIXQuaW5zdGFsbGVkKXt0Lmluc3RhbGxlZD0hMCxyIT09ZSYmY29uc29sZS5lcnJvcihcIk11bHRpcGxlIGluc3RhbmNlcyBvZiBWdWUgZGV0ZWN0ZWQuXCIpO3ZhciBpPW4uY29tcG9uZW50c3x8e30sYT1uLm9wdGlvbnN8fHt9O2UucHJvdG90eXBlLiR2dWVkYXRlcGlja2VyPWEsci5wcm90b3R5cGUuJHZ1ZWRhdGVwaWNrZXI9YSxPYmplY3QuZW50cmllcyhpKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj12dCh0LDIpLHI9blswXSxpPW5bMV07ZS5jb21wb25lbnQocixpKX0pKX19fSxTZT1ZZS5pbnN0YWxsO1llLmluc3RhbGw9ZnVuY3Rpb24odCxlKXtTZS5jYWxsKFllLHQse2NvbXBvbmVudHM6d2Usb3B0aW9uczplfSl9LFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5WdWUmJndpbmRvdy5WdWUudXNlKFllKTtleHBvcnQgZGVmYXVsdCBZZTtleHBvcnR7TWUgYXMgVnVlRGF0ZVBpY2tlcn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@mathieustan/vue-datepicker/dist/vue-datepicker.esm.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/index.js":
/*!**************************************************!*\
!*** ./node_modules/async-validator/es/index.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babel-runtime/helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/async-validator/es/util.js\");\n/* harmony import */ var _validator___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./validator/ */ \"./node_modules/async-validator/es/validator/index.js\");\n/* harmony import */ var _messages__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./messages */ \"./node_modules/async-validator/es/messages.js\");\n\n\n\n\n\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\nfunction Schema(descriptor) {\n this.rules = null;\n this._messages = _messages__WEBPACK_IMPORTED_MODULE_4__.messages;\n this.define(descriptor);\n}\n\nSchema.prototype = {\n messages: function messages(_messages) {\n if (_messages) {\n this._messages = (0,_util__WEBPACK_IMPORTED_MODULE_2__.deepMerge)((0,_messages__WEBPACK_IMPORTED_MODULE_4__.newMessages)(), _messages);\n }\n return this._messages;\n },\n define: function define(rules) {\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n if ((typeof rules === 'undefined' ? 'undefined' : (0,babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(rules)) !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n this.rules = {};\n var z = void 0;\n var item = void 0;\n for (z in rules) {\n if (rules.hasOwnProperty(z)) {\n item = rules[z];\n this.rules[z] = Array.isArray(item) ? item : [item];\n }\n }\n },\n validate: function validate(source_) {\n var _this = this;\n\n var o = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var oc = arguments[2];\n\n var source = source_;\n var options = o;\n var callback = oc;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n function complete(results) {\n var i = void 0;\n var field = void 0;\n var errors = [];\n var fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n errors = errors.concat.apply(errors, e);\n } else {\n errors.push(e);\n }\n }\n\n for (i = 0; i < results.length; i++) {\n add(results[i]);\n }\n if (!errors.length) {\n errors = null;\n fields = null;\n } else {\n for (i = 0; i < errors.length; i++) {\n field = errors[i].field;\n fields[field] = fields[field] || [];\n fields[field].push(errors[i]);\n }\n }\n callback(errors, fields);\n }\n\n if (options.messages) {\n var messages = this.messages();\n if (messages === _messages__WEBPACK_IMPORTED_MODULE_4__.messages) {\n messages = (0,_messages__WEBPACK_IMPORTED_MODULE_4__.newMessages)();\n }\n (0,_util__WEBPACK_IMPORTED_MODULE_2__.deepMerge)(messages, options.messages);\n options.messages = messages;\n } else {\n options.messages = this.messages();\n }\n var arr = void 0;\n var value = void 0;\n var series = {};\n var keys = options.keys || Object.keys(this.rules);\n keys.forEach(function (z) {\n arr = _this.rules[z];\n value = source[z];\n arr.forEach(function (r) {\n var rule = r;\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = (0,babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, source);\n }\n value = source[z] = rule.transform(value);\n }\n if (typeof rule === 'function') {\n rule = {\n validator: rule\n };\n } else {\n rule = (0,babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, rule);\n }\n rule.validator = _this.getValidationMethod(rule);\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = _this.getType(rule);\n if (!rule.validator) {\n return;\n }\n series[z] = series[z] || [];\n series[z].push({\n rule: rule,\n value: value,\n source: source,\n field: z\n });\n });\n });\n var errorFields = {};\n (0,_util__WEBPACK_IMPORTED_MODULE_2__.asyncMap)(series, options, function (data, doIt) {\n var rule = data.rule;\n var deep = (rule.type === 'object' || rule.type === 'array') && ((0,babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(rule.fields) === 'object' || (0,babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(rule.defaultField) === 'object');\n deep = deep && (rule.required || !rule.required && data.value);\n rule.field = data.field;\n function addFullfield(key, schema) {\n return (0,babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, schema, {\n fullField: rule.fullField + '.' + key\n });\n }\n\n function cb() {\n var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var errors = e;\n if (!Array.isArray(errors)) {\n errors = [errors];\n }\n if (errors.length) {\n (0,_util__WEBPACK_IMPORTED_MODULE_2__.warning)('async-validator:', errors);\n }\n if (errors.length && rule.message) {\n errors = [].concat(rule.message);\n }\n\n errors = errors.map((0,_util__WEBPACK_IMPORTED_MODULE_2__.complementError)(rule));\n\n if (options.first && errors.length) {\n errorFields[rule.field] = 1;\n return doIt(errors);\n }\n if (!deep) {\n doIt(errors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message) {\n errors = [].concat(rule.message).map((0,_util__WEBPACK_IMPORTED_MODULE_2__.complementError)(rule));\n } else if (options.error) {\n errors = [options.error(rule, (0,_util__WEBPACK_IMPORTED_MODULE_2__.format)(options.messages.required, rule.field))];\n } else {\n errors = [];\n }\n return doIt(errors);\n }\n\n var fieldsSchema = {};\n if (rule.defaultField) {\n for (var k in data.value) {\n if (data.value.hasOwnProperty(k)) {\n fieldsSchema[k] = rule.defaultField;\n }\n }\n }\n fieldsSchema = (0,babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, fieldsSchema, data.rule.fields);\n for (var f in fieldsSchema) {\n if (fieldsSchema.hasOwnProperty(f)) {\n var fieldSchema = Array.isArray(fieldsSchema[f]) ? fieldsSchema[f] : [fieldsSchema[f]];\n fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f));\n }\n }\n var schema = new Schema(fieldsSchema);\n schema.messages(options.messages);\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n schema.validate(data.value, data.rule.options || options, function (errs) {\n doIt(errs && errs.length ? errors.concat(errs) : errs);\n });\n }\n }\n\n var res = rule.validator(rule, data.value, cb, data.source, options);\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n complete(results);\n });\n },\n getType: function getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n if (typeof rule.validator !== 'function' && rule.type && !_validator___WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasOwnProperty(rule.type)) {\n throw new Error((0,_util__WEBPACK_IMPORTED_MODULE_2__.format)('Unknown rule type %s', rule.type));\n }\n return rule.type || 'string';\n },\n getValidationMethod: function getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n var keys = Object.keys(rule);\n var messageIndex = keys.indexOf('message');\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n if (keys.length === 1 && keys[0] === 'required') {\n return _validator___WEBPACK_IMPORTED_MODULE_3__[\"default\"].required;\n }\n return _validator___WEBPACK_IMPORTED_MODULE_3__[\"default\"][this.getType(rule)] || false;\n }\n};\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error('Cannot register a validator by type, validator is not a function');\n }\n _validator___WEBPACK_IMPORTED_MODULE_3__[\"default\"][type] = validator;\n};\n\nSchema.messages = _messages__WEBPACK_IMPORTED_MODULE_4__.messages;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Schema);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFxRDtBQUNGO0FBQzRCO0FBQ3pDO0FBQ2dDOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFlO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdEQUFTLENBQUMsc0RBQVc7QUFDNUM7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCx3RUFBTztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0Isb0JBQW9CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1Isb0JBQW9CLG1CQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCLCtDQUFlO0FBQ3RDLG1CQUFtQixzREFBVztBQUM5QjtBQUNBLE1BQU0sZ0RBQVM7QUFDZjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix5RUFBUSxHQUFHO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLGlCQUFpQix5RUFBUSxHQUFHO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksK0NBQVE7QUFDWjtBQUNBLHVFQUF1RSx3RUFBTyw4QkFBOEIsd0VBQU87QUFDbkg7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5RUFBUSxHQUFHO0FBQzFCO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOENBQU87QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLHNEQUFlOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxzREFBZTtBQUNsRSxjQUFjO0FBQ2QsNENBQTRDLDZDQUFNO0FBQ2xELGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHlFQUFRLEdBQUc7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxtREFBVTtBQUN4RSxzQkFBc0IsNkNBQU07QUFDNUI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQVU7QUFDdkI7QUFDQSxXQUFXLG1EQUFVO0FBQ3JCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLG1EQUFVO0FBQ1o7O0FBRUEsa0JBQWtCLCtDQUFlOztBQUVqQyxpRUFBZSxNQUFNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy9pbmRleC5qcz9lNmFiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZXh0ZW5kcyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgX3R5cGVvZiBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvdHlwZW9mJztcbmltcG9ydCB7IGZvcm1hdCwgY29tcGxlbWVudEVycm9yLCBhc3luY01hcCwgd2FybmluZywgZGVlcE1lcmdlIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB2YWxpZGF0b3JzIGZyb20gJy4vdmFsaWRhdG9yLyc7XG5pbXBvcnQgeyBtZXNzYWdlcyBhcyBkZWZhdWx0TWVzc2FnZXMsIG5ld01lc3NhZ2VzIH0gZnJvbSAnLi9tZXNzYWdlcyc7XG5cbi8qKlxuICogIEVuY2Fwc3VsYXRlcyBhIHZhbGlkYXRpb24gc2NoZW1hLlxuICpcbiAqICBAcGFyYW0gZGVzY3JpcHRvciBBbiBvYmplY3QgZGVjbGFyaW5nIHZhbGlkYXRpb24gcnVsZXNcbiAqICBmb3IgdGhpcyBzY2hlbWEuXG4gKi9cbmZ1bmN0aW9uIFNjaGVtYShkZXNjcmlwdG9yKSB7XG4gIHRoaXMucnVsZXMgPSBudWxsO1xuICB0aGlzLl9tZXNzYWdlcyA9IGRlZmF1bHRNZXNzYWdlcztcbiAgdGhpcy5kZWZpbmUoZGVzY3JpcHRvcik7XG59XG5cblNjaGVtYS5wcm90b3R5cGUgPSB7XG4gIG1lc3NhZ2VzOiBmdW5jdGlvbiBtZXNzYWdlcyhfbWVzc2FnZXMpIHtcbiAgICBpZiAoX21lc3NhZ2VzKSB7XG4gICAgICB0aGlzLl9tZXNzYWdlcyA9IGRlZXBNZXJnZShuZXdNZXNzYWdlcygpLCBfbWVzc2FnZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZXM7XG4gIH0sXG4gIGRlZmluZTogZnVuY3Rpb24gZGVmaW5lKHJ1bGVzKSB7XG4gICAgaWYgKCFydWxlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29uZmlndXJlIGEgc2NoZW1hIHdpdGggbm8gcnVsZXMnKTtcbiAgICB9XG4gICAgaWYgKCh0eXBlb2YgcnVsZXMgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKHJ1bGVzKSkgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocnVsZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bGVzIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIHRoaXMucnVsZXMgPSB7fTtcbiAgICB2YXIgeiA9IHZvaWQgMDtcbiAgICB2YXIgaXRlbSA9IHZvaWQgMDtcbiAgICBmb3IgKHogaW4gcnVsZXMpIHtcbiAgICAgIGlmIChydWxlcy5oYXNPd25Qcm9wZXJ0eSh6KSkge1xuICAgICAgICBpdGVtID0gcnVsZXNbel07XG4gICAgICAgIHRoaXMucnVsZXNbel0gPSBBcnJheS5pc0FycmF5KGl0ZW0pID8gaXRlbSA6IFtpdGVtXTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHZhbGlkYXRlOiBmdW5jdGlvbiB2YWxpZGF0ZShzb3VyY2VfKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBvID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICB2YXIgb2MgPSBhcmd1bWVudHNbMl07XG5cbiAgICB2YXIgc291cmNlID0gc291cmNlXztcbiAgICB2YXIgb3B0aW9ucyA9IG87XG4gICAgdmFyIGNhbGxiYWNrID0gb2M7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIGlmICghdGhpcy5ydWxlcyB8fCBPYmplY3Qua2V5cyh0aGlzLnJ1bGVzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb21wbGV0ZShyZXN1bHRzKSB7XG4gICAgICB2YXIgaSA9IHZvaWQgMDtcbiAgICAgIHZhciBmaWVsZCA9IHZvaWQgMDtcbiAgICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICAgIHZhciBmaWVsZHMgPSB7fTtcblxuICAgICAgZnVuY3Rpb24gYWRkKGUpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHtcbiAgICAgICAgICBlcnJvcnMgPSBlcnJvcnMuY29uY2F0LmFwcGx5KGVycm9ycywgZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYWRkKHJlc3VsdHNbaV0pO1xuICAgICAgfVxuICAgICAgaWYgKCFlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIGVycm9ycyA9IG51bGw7XG4gICAgICAgIGZpZWxkcyA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXJyb3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgZmllbGQgPSBlcnJvcnNbaV0uZmllbGQ7XG4gICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IGZpZWxkc1tmaWVsZF0gfHwgW107XG4gICAgICAgICAgZmllbGRzW2ZpZWxkXS5wdXNoKGVycm9yc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKGVycm9ycywgZmllbGRzKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5tZXNzYWdlcykge1xuICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcygpO1xuICAgICAgaWYgKG1lc3NhZ2VzID09PSBkZWZhdWx0TWVzc2FnZXMpIHtcbiAgICAgICAgbWVzc2FnZXMgPSBuZXdNZXNzYWdlcygpO1xuICAgICAgfVxuICAgICAgZGVlcE1lcmdlKG1lc3NhZ2VzLCBvcHRpb25zLm1lc3NhZ2VzKTtcbiAgICAgIG9wdGlvbnMubWVzc2FnZXMgPSBtZXNzYWdlcztcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMoKTtcbiAgICB9XG4gICAgdmFyIGFyciA9IHZvaWQgMDtcbiAgICB2YXIgdmFsdWUgPSB2b2lkIDA7XG4gICAgdmFyIHNlcmllcyA9IHt9O1xuICAgIHZhciBrZXlzID0gb3B0aW9ucy5rZXlzIHx8IE9iamVjdC5rZXlzKHRoaXMucnVsZXMpO1xuICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoeikge1xuICAgICAgYXJyID0gX3RoaXMucnVsZXNbel07XG4gICAgICB2YWx1ZSA9IHNvdXJjZVt6XTtcbiAgICAgIGFyci5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHZhciBydWxlID0gcjtcbiAgICAgICAgaWYgKHR5cGVvZiBydWxlLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGlmIChzb3VyY2UgPT09IHNvdXJjZV8pIHtcbiAgICAgICAgICAgIHNvdXJjZSA9IF9leHRlbmRzKHt9LCBzb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YWx1ZSA9IHNvdXJjZVt6XSA9IHJ1bGUudHJhbnNmb3JtKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHJ1bGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBydWxlID0ge1xuICAgICAgICAgICAgdmFsaWRhdG9yOiBydWxlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBydWxlID0gX2V4dGVuZHMoe30sIHJ1bGUpO1xuICAgICAgICB9XG4gICAgICAgIHJ1bGUudmFsaWRhdG9yID0gX3RoaXMuZ2V0VmFsaWRhdGlvbk1ldGhvZChydWxlKTtcbiAgICAgICAgcnVsZS5maWVsZCA9IHo7XG4gICAgICAgIHJ1bGUuZnVsbEZpZWxkID0gcnVsZS5mdWxsRmllbGQgfHwgejtcbiAgICAgICAgcnVsZS50eXBlID0gX3RoaXMuZ2V0VHlwZShydWxlKTtcbiAgICAgICAgaWYgKCFydWxlLnZhbGlkYXRvcikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXJpZXNbel0gPSBzZXJpZXNbel0gfHwgW107XG4gICAgICAgIHNlcmllc1t6XS5wdXNoKHtcbiAgICAgICAgICBydWxlOiBydWxlLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgICBmaWVsZDogelxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHZhciBlcnJvckZpZWxkcyA9IHt9O1xuICAgIGFzeW5jTWFwKHNlcmllcywgb3B0aW9ucywgZnVuY3Rpb24gKGRhdGEsIGRvSXQpIHtcbiAgICAgIHZhciBydWxlID0gZGF0YS5ydWxlO1xuICAgICAgdmFyIGRlZXAgPSAocnVsZS50eXBlID09PSAnb2JqZWN0JyB8fCBydWxlLnR5cGUgPT09ICdhcnJheScpICYmIChfdHlwZW9mKHJ1bGUuZmllbGRzKSA9PT0gJ29iamVjdCcgfHwgX3R5cGVvZihydWxlLmRlZmF1bHRGaWVsZCkgPT09ICdvYmplY3QnKTtcbiAgICAgIGRlZXAgPSBkZWVwICYmIChydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIGRhdGEudmFsdWUpO1xuICAgICAgcnVsZS5maWVsZCA9IGRhdGEuZmllbGQ7XG4gICAgICBmdW5jdGlvbiBhZGRGdWxsZmllbGQoa2V5LCBzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBzY2hlbWEsIHtcbiAgICAgICAgICBmdWxsRmllbGQ6IHJ1bGUuZnVsbEZpZWxkICsgJy4nICsga2V5XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYigpIHtcbiAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuXG4gICAgICAgIHZhciBlcnJvcnMgPSBlO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXJyb3JzKSkge1xuICAgICAgICAgIGVycm9ycyA9IFtlcnJvcnNdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgd2FybmluZygnYXN5bmMtdmFsaWRhdG9yOicsIGVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggJiYgcnVsZS5tZXNzYWdlKSB7XG4gICAgICAgICAgZXJyb3JzID0gW10uY29uY2F0KHJ1bGUubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBlcnJvcnMgPSBlcnJvcnMubWFwKGNvbXBsZW1lbnRFcnJvcihydWxlKSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZmlyc3QgJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGVycm9yRmllbGRzW3J1bGUuZmllbGRdID0gMTtcbiAgICAgICAgICByZXR1cm4gZG9JdChlcnJvcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVlcCkge1xuICAgICAgICAgIGRvSXQoZXJyb3JzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBpZiBydWxlIGlzIHJlcXVpcmVkIGJ1dCB0aGUgdGFyZ2V0IG9iamVjdFxuICAgICAgICAgIC8vIGRvZXMgbm90IGV4aXN0IGZhaWwgYXQgdGhlIHJ1bGUgbGV2ZWwgYW5kIGRvbid0XG4gICAgICAgICAgLy8gZ28gZGVlcGVyXG4gICAgICAgICAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgIWRhdGEudmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChydWxlLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgZXJyb3JzID0gW10uY29uY2F0KHJ1bGUubWVzc2FnZSkubWFwKGNvbXBsZW1lbnRFcnJvcihydWxlKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZXJyb3IpIHtcbiAgICAgICAgICAgICAgZXJyb3JzID0gW29wdGlvbnMuZXJyb3IocnVsZSwgZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucmVxdWlyZWQsIHJ1bGUuZmllbGQpKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlcnJvcnMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkb0l0KGVycm9ycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGZpZWxkc1NjaGVtYSA9IHt9O1xuICAgICAgICAgIGlmIChydWxlLmRlZmF1bHRGaWVsZCkge1xuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBkYXRhLnZhbHVlKSB7XG4gICAgICAgICAgICAgIGlmIChkYXRhLnZhbHVlLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgZmllbGRzU2NoZW1hW2tdID0gcnVsZS5kZWZhdWx0RmllbGQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZmllbGRzU2NoZW1hID0gX2V4dGVuZHMoe30sIGZpZWxkc1NjaGVtYSwgZGF0YS5ydWxlLmZpZWxkcyk7XG4gICAgICAgICAgZm9yICh2YXIgZiBpbiBmaWVsZHNTY2hlbWEpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZHNTY2hlbWEuaGFzT3duUHJvcGVydHkoZikpIHtcbiAgICAgICAgICAgICAgdmFyIGZpZWxkU2NoZW1hID0gQXJyYXkuaXNBcnJheShmaWVsZHNTY2hlbWFbZl0pID8gZmllbGRzU2NoZW1hW2ZdIDogW2ZpZWxkc1NjaGVtYVtmXV07XG4gICAgICAgICAgICAgIGZpZWxkc1NjaGVtYVtmXSA9IGZpZWxkU2NoZW1hLm1hcChhZGRGdWxsZmllbGQuYmluZChudWxsLCBmKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBzY2hlbWEgPSBuZXcgU2NoZW1hKGZpZWxkc1NjaGVtYSk7XG4gICAgICAgICAgc2NoZW1hLm1lc3NhZ2VzKG9wdGlvbnMubWVzc2FnZXMpO1xuICAgICAgICAgIGlmIChkYXRhLnJ1bGUub3B0aW9ucykge1xuICAgICAgICAgICAgZGF0YS5ydWxlLm9wdGlvbnMubWVzc2FnZXMgPSBvcHRpb25zLm1lc3NhZ2VzO1xuICAgICAgICAgICAgZGF0YS5ydWxlLm9wdGlvbnMuZXJyb3IgPSBvcHRpb25zLmVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzY2hlbWEudmFsaWRhdGUoZGF0YS52YWx1ZSwgZGF0YS5ydWxlLm9wdGlvbnMgfHwgb3B0aW9ucywgZnVuY3Rpb24gKGVycnMpIHtcbiAgICAgICAgICAgIGRvSXQoZXJycyAmJiBlcnJzLmxlbmd0aCA/IGVycm9ycy5jb25jYXQoZXJycykgOiBlcnJzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgcmVzID0gcnVsZS52YWxpZGF0b3IocnVsZSwgZGF0YS52YWx1ZSwgY2IsIGRhdGEuc291cmNlLCBvcHRpb25zKTtcbiAgICAgIGlmIChyZXMgJiYgcmVzLnRoZW4pIHtcbiAgICAgICAgcmVzLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjYigpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIHJldHVybiBjYihlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgIGNvbXBsZXRlKHJlc3VsdHMpO1xuICAgIH0pO1xuICB9LFxuICBnZXRUeXBlOiBmdW5jdGlvbiBnZXRUeXBlKHJ1bGUpIHtcbiAgICBpZiAocnVsZS50eXBlID09PSB1bmRlZmluZWQgJiYgcnVsZS5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICBydWxlLnR5cGUgPSAncGF0dGVybic7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcnVsZS52YWxpZGF0b3IgIT09ICdmdW5jdGlvbicgJiYgcnVsZS50eXBlICYmICF2YWxpZGF0b3JzLmhhc093blByb3BlcnR5KHJ1bGUudHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXQoJ1Vua25vd24gcnVsZSB0eXBlICVzJywgcnVsZS50eXBlKSk7XG4gICAgfVxuICAgIHJldHVybiBydWxlLnR5cGUgfHwgJ3N0cmluZyc7XG4gIH0sXG4gIGdldFZhbGlkYXRpb25NZXRob2Q6IGZ1bmN0aW9uIGdldFZhbGlkYXRpb25NZXRob2QocnVsZSkge1xuICAgIGlmICh0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBydWxlLnZhbGlkYXRvcjtcbiAgICB9XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhydWxlKTtcbiAgICB2YXIgbWVzc2FnZUluZGV4ID0ga2V5cy5pbmRleE9mKCdtZXNzYWdlJyk7XG4gICAgaWYgKG1lc3NhZ2VJbmRleCAhPT0gLTEpIHtcbiAgICAgIGtleXMuc3BsaWNlKG1lc3NhZ2VJbmRleCwgMSk7XG4gICAgfVxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSAncmVxdWlyZWQnKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5yZXF1aXJlZDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnNbdGhpcy5nZXRUeXBlKHJ1bGUpXSB8fCBmYWxzZTtcbiAgfVxufTtcblxuU2NoZW1hLnJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIodHlwZSwgdmFsaWRhdG9yKSB7XG4gIGlmICh0eXBlb2YgdmFsaWRhdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVnaXN0ZXIgYSB2YWxpZGF0b3IgYnkgdHlwZSwgdmFsaWRhdG9yIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgdmFsaWRhdG9yc1t0eXBlXSA9IHZhbGlkYXRvcjtcbn07XG5cblNjaGVtYS5tZXNzYWdlcyA9IGRlZmF1bHRNZXNzYWdlcztcblxuZXhwb3J0IGRlZmF1bHQgU2NoZW1hOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/index.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/messages.js":
/*!*****************************************************!*\
!*** ./node_modules/async-validator/es/messages.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ messages: () => (/* binding */ messages),\n/* harmony export */ newMessages: () => (/* binding */ newMessages)\n/* harmony export */ });\nfunction newMessages() {\n return {\n 'default': 'Validation error on field %s',\n required: '%s is required',\n 'enum': '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid'\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n boolean: '%s is not a %s',\n integer: '%s is not an %s',\n float: '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s'\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters'\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s'\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length'\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s'\n },\n clone: function clone() {\n var cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n }\n };\n}\n\nvar messages = newMessages();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL21lc3NhZ2VzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy9tZXNzYWdlcy5qcz81ZjYzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBuZXdNZXNzYWdlcygpIHtcbiAgcmV0dXJuIHtcbiAgICAnZGVmYXVsdCc6ICdWYWxpZGF0aW9uIGVycm9yIG9uIGZpZWxkICVzJyxcbiAgICByZXF1aXJlZDogJyVzIGlzIHJlcXVpcmVkJyxcbiAgICAnZW51bSc6ICclcyBtdXN0IGJlIG9uZSBvZiAlcycsXG4gICAgd2hpdGVzcGFjZTogJyVzIGNhbm5vdCBiZSBlbXB0eScsXG4gICAgZGF0ZToge1xuICAgICAgZm9ybWF0OiAnJXMgZGF0ZSAlcyBpcyBpbnZhbGlkIGZvciBmb3JtYXQgJXMnLFxuICAgICAgcGFyc2U6ICclcyBkYXRlIGNvdWxkIG5vdCBiZSBwYXJzZWQsICVzIGlzIGludmFsaWQgJyxcbiAgICAgIGludmFsaWQ6ICclcyBkYXRlICVzIGlzIGludmFsaWQnXG4gICAgfSxcbiAgICB0eXBlczoge1xuICAgICAgc3RyaW5nOiAnJXMgaXMgbm90IGEgJXMnLFxuICAgICAgbWV0aG9kOiAnJXMgaXMgbm90IGEgJXMgKGZ1bmN0aW9uKScsXG4gICAgICBhcnJheTogJyVzIGlzIG5vdCBhbiAlcycsXG4gICAgICBvYmplY3Q6ICclcyBpcyBub3QgYW4gJXMnLFxuICAgICAgbnVtYmVyOiAnJXMgaXMgbm90IGEgJXMnLFxuICAgICAgZGF0ZTogJyVzIGlzIG5vdCBhICVzJyxcbiAgICAgIGJvb2xlYW46ICclcyBpcyBub3QgYSAlcycsXG4gICAgICBpbnRlZ2VyOiAnJXMgaXMgbm90IGFuICVzJyxcbiAgICAgIGZsb2F0OiAnJXMgaXMgbm90IGEgJXMnLFxuICAgICAgcmVnZXhwOiAnJXMgaXMgbm90IGEgdmFsaWQgJXMnLFxuICAgICAgZW1haWw6ICclcyBpcyBub3QgYSB2YWxpZCAlcycsXG4gICAgICB1cmw6ICclcyBpcyBub3QgYSB2YWxpZCAlcycsXG4gICAgICBoZXg6ICclcyBpcyBub3QgYSB2YWxpZCAlcydcbiAgICB9LFxuICAgIHN0cmluZzoge1xuICAgICAgbGVuOiAnJXMgbXVzdCBiZSBleGFjdGx5ICVzIGNoYXJhY3RlcnMnLFxuICAgICAgbWluOiAnJXMgbXVzdCBiZSBhdCBsZWFzdCAlcyBjaGFyYWN0ZXJzJyxcbiAgICAgIG1heDogJyVzIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAlcyBjaGFyYWN0ZXJzJyxcbiAgICAgIHJhbmdlOiAnJXMgbXVzdCBiZSBiZXR3ZWVuICVzIGFuZCAlcyBjaGFyYWN0ZXJzJ1xuICAgIH0sXG4gICAgbnVtYmVyOiB7XG4gICAgICBsZW46ICclcyBtdXN0IGVxdWFsICVzJyxcbiAgICAgIG1pbjogJyVzIGNhbm5vdCBiZSBsZXNzIHRoYW4gJXMnLFxuICAgICAgbWF4OiAnJXMgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAlcycsXG4gICAgICByYW5nZTogJyVzIG11c3QgYmUgYmV0d2VlbiAlcyBhbmQgJXMnXG4gICAgfSxcbiAgICBhcnJheToge1xuICAgICAgbGVuOiAnJXMgbXVzdCBiZSBleGFjdGx5ICVzIGluIGxlbmd0aCcsXG4gICAgICBtaW46ICclcyBjYW5ub3QgYmUgbGVzcyB0aGFuICVzIGluIGxlbmd0aCcsXG4gICAgICBtYXg6ICclcyBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuICVzIGluIGxlbmd0aCcsXG4gICAgICByYW5nZTogJyVzIG11c3QgYmUgYmV0d2VlbiAlcyBhbmQgJXMgaW4gbGVuZ3RoJ1xuICAgIH0sXG4gICAgcGF0dGVybjoge1xuICAgICAgbWlzbWF0Y2g6ICclcyB2YWx1ZSAlcyBkb2VzIG5vdCBtYXRjaCBwYXR0ZXJuICVzJ1xuICAgIH0sXG4gICAgY2xvbmU6IGZ1bmN0aW9uIGNsb25lKCkge1xuICAgICAgdmFyIGNsb25lZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcykpO1xuICAgICAgY2xvbmVkLmNsb25lID0gdGhpcy5jbG9uZTtcbiAgICAgIHJldHVybiBjbG9uZWQ7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgdmFyIG1lc3NhZ2VzID0gbmV3TWVzc2FnZXMoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/messages.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/rule/enum.js":
/*!******************************************************!*\
!*** ./node_modules/async-validator/es/rule/enum.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\nvar ENUM = 'enum';\n\n/**\n * Rule for validating a value exists in an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, source, errors, options) {\n rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n if (rule[ENUM].indexOf(value) === -1) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_0__.format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', ')));\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (enumerable);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvZW51bS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnQztBQUNoQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHlDQUFXO0FBQzNCO0FBQ0E7O0FBRUEsaUVBQWUsVUFBVSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvcnVsZS9lbnVtLmpzPzJkMTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuLi91dGlsJztcbnZhciBFTlVNID0gJ2VudW0nO1xuXG4vKipcbiAqICBSdWxlIGZvciB2YWxpZGF0aW5nIGEgdmFsdWUgZXhpc3RzIGluIGFuIGVudW1lcmFibGUgbGlzdC5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gZXJyb3JzIEFuIGFycmF5IG9mIGVycm9ycyB0aGF0IHRoaXMgcnVsZSBtYXkgYWRkXG4gKiAgdmFsaWRhdGlvbiBlcnJvcnMgdG8uXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gZW51bWVyYWJsZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgcnVsZVtFTlVNXSA9IEFycmF5LmlzQXJyYXkocnVsZVtFTlVNXSkgPyBydWxlW0VOVU1dIDogW107XG4gIGlmIChydWxlW0VOVU1dLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuICAgIGVycm9ycy5wdXNoKHV0aWwuZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNbRU5VTV0sIHJ1bGUuZnVsbEZpZWxkLCBydWxlW0VOVU1dLmpvaW4oJywgJykpKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBlbnVtZXJhYmxlOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/rule/enum.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/rule/index.js":
/*!*******************************************************!*\
!*** ./node_modules/async-validator/es/rule/index.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _required__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./required */ \"./node_modules/async-validator/es/rule/required.js\");\n/* harmony import */ var _whitespace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./whitespace */ \"./node_modules/async-validator/es/rule/whitespace.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./type */ \"./node_modules/async-validator/es/rule/type.js\");\n/* harmony import */ var _range__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./range */ \"./node_modules/async-validator/es/rule/range.js\");\n/* harmony import */ var _enum__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./enum */ \"./node_modules/async-validator/es/rule/enum.js\");\n/* harmony import */ var _pattern__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pattern */ \"./node_modules/async-validator/es/rule/pattern.js\");\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n required: _required__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n whitespace: _whitespace__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n type: _type__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n range: _range__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n 'enum': _enum__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n pattern: _pattern__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFrQztBQUNJO0FBQ1o7QUFDRTtBQUNFO0FBQ0U7O0FBRWhDLGlFQUFlO0FBQ2YsWUFBWSxpREFBUTtBQUNwQixjQUFjLG1EQUFVO0FBQ3hCLFFBQVEsNkNBQUk7QUFDWixTQUFTLDhDQUFLO0FBQ2QsVUFBVSw2Q0FBUTtBQUNsQixXQUFXLGdEQUFPO0FBQ2xCLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvaW5kZXguanM/MWVkYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVxdWlyZWQgZnJvbSAnLi9yZXF1aXJlZCc7XG5pbXBvcnQgd2hpdGVzcGFjZSBmcm9tICcuL3doaXRlc3BhY2UnO1xuaW1wb3J0IHR5cGUgZnJvbSAnLi90eXBlJztcbmltcG9ydCByYW5nZSBmcm9tICcuL3JhbmdlJztcbmltcG9ydCBlbnVtUnVsZSBmcm9tICcuL2VudW0nO1xuaW1wb3J0IHBhdHRlcm4gZnJvbSAnLi9wYXR0ZXJuJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICByZXF1aXJlZDogcmVxdWlyZWQsXG4gIHdoaXRlc3BhY2U6IHdoaXRlc3BhY2UsXG4gIHR5cGU6IHR5cGUsXG4gIHJhbmdlOiByYW5nZSxcbiAgJ2VudW0nOiBlbnVtUnVsZSxcbiAgcGF0dGVybjogcGF0dGVyblxufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/rule/index.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/rule/pattern.js":
/*!*********************************************************!*\
!*** ./node_modules/async-validator/es/rule/pattern.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n/**\n * Rule for validating a regular expression pattern.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n if (!rule.pattern.test(value)) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_0__.format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n if (!_pattern.test(value)) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_0__.format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n }\n }\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (pattern);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvcGF0dGVybi5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnQzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IseUNBQVc7QUFDL0I7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLG9CQUFvQix5Q0FBVztBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxPQUFPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy9ydWxlL3BhdHRlcm4uanM/ODY3OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4uL3V0aWwnO1xuXG4vKipcbiAqICBSdWxlIGZvciB2YWxpZGF0aW5nIGEgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4uXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIGVycm9ycyBBbiBhcnJheSBvZiBlcnJvcnMgdGhhdCB0aGlzIHJ1bGUgbWF5IGFkZFxuICogIHZhbGlkYXRpb24gZXJyb3JzIHRvLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIHBhdHRlcm4ocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKSB7XG4gIGlmIChydWxlLnBhdHRlcm4pIHtcbiAgICBpZiAocnVsZS5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAvLyBpZiBhIFJlZ0V4cCBpbnN0YW5jZSBpcyBwYXNzZWQsIHJlc2V0IGBsYXN0SW5kZXhgIGluIGNhc2UgaXRzIGBnbG9iYWxgXG4gICAgICAvLyBmbGFnIGlzIGFjY2lkZW50YWxseSBzZXQgdG8gYHRydWVgLCB3aGljaCBpbiBhIHZhbGlkYXRpb24gc2NlbmFyaW9cbiAgICAgIC8vIGlzIG5vdCBuZWNlc3NhcnkgYW5kIHRoZSByZXN1bHQgbWlnaHQgYmUgbWlzbGVhZGluZ1xuICAgICAgcnVsZS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgICBpZiAoIXJ1bGUucGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICBlcnJvcnMucHVzaCh1dGlsLmZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnBhdHRlcm4ubWlzbWF0Y2gsIHJ1bGUuZnVsbEZpZWxkLCB2YWx1ZSwgcnVsZS5wYXR0ZXJuKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcnVsZS5wYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIF9wYXR0ZXJuID0gbmV3IFJlZ0V4cChydWxlLnBhdHRlcm4pO1xuICAgICAgaWYgKCFfcGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICBlcnJvcnMucHVzaCh1dGlsLmZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnBhdHRlcm4ubWlzbWF0Y2gsIHJ1bGUuZnVsbEZpZWxkLCB2YWx1ZSwgcnVsZS5wYXR0ZXJuKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhdHRlcm47Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/rule/pattern.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/rule/range.js":
/*!*******************************************************!*\
!*** ./node_modules/async-validator/es/rule/range.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n/**\n * Rule for validating minimum and maximum allowed values.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction range(rule, value, source, errors, options) {\n var len = typeof rule.len === 'number';\n var min = typeof rule.min === 'number';\n var max = typeof rule.max === 'number';\n // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var val = value;\n var key = null;\n var num = typeof value === 'number';\n var str = typeof value === 'string';\n var arr = Array.isArray(value);\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n }\n // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n if (!key) {\n return false;\n }\n if (arr) {\n val = value.length;\n }\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n if (len) {\n if (val !== rule.len) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_0__.format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_0__.format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_0__.format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_0__.format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (range);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvcmFuZ2UuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBZ0M7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlDQUFXO0FBQzdCO0FBQ0EsSUFBSTtBQUNKLGdCQUFnQix5Q0FBVztBQUMzQixJQUFJO0FBQ0osZ0JBQWdCLHlDQUFXO0FBQzNCLElBQUk7QUFDSixnQkFBZ0IseUNBQVc7QUFDM0I7QUFDQTs7QUFFQSxpRUFBZSxLQUFLIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy9ydWxlL3JhbmdlLmpzPzcyZjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuLi91dGlsJztcblxuLyoqXG4gKiAgUnVsZSBmb3IgdmFsaWRhdGluZyBtaW5pbXVtIGFuZCBtYXhpbXVtIGFsbG93ZWQgdmFsdWVzLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBlcnJvcnMgQW4gYXJyYXkgb2YgZXJyb3JzIHRoYXQgdGhpcyBydWxlIG1heSBhZGRcbiAqICB2YWxpZGF0aW9uIGVycm9ycyB0by5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiByYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgdmFyIGxlbiA9IHR5cGVvZiBydWxlLmxlbiA9PT0gJ251bWJlcic7XG4gIHZhciBtaW4gPSB0eXBlb2YgcnVsZS5taW4gPT09ICdudW1iZXInO1xuICB2YXIgbWF4ID0gdHlwZW9mIHJ1bGUubWF4ID09PSAnbnVtYmVyJztcbiAgLy8g5q2j5YiZ5Yy56YWN56CB54K56IyD5Zu05LuOVSswMTAwMDDkuIDnm7TliLBVKzEwRkZGRueahOaWh+Wtl++8iOihpeWFheW5s+mdolN1cHBsZW1lbnRhcnkgUGxhbmXvvIlcbiAgdmFyIHNwUmVnZXhwID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl0vZztcbiAgdmFyIHZhbCA9IHZhbHVlO1xuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIG51bSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG4gIHZhciBzdHIgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xuICB2YXIgYXJyID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIGlmIChudW0pIHtcbiAgICBrZXkgPSAnbnVtYmVyJztcbiAgfSBlbHNlIGlmIChzdHIpIHtcbiAgICBrZXkgPSAnc3RyaW5nJztcbiAgfSBlbHNlIGlmIChhcnIpIHtcbiAgICBrZXkgPSAnYXJyYXknO1xuICB9XG4gIC8vIGlmIHRoZSB2YWx1ZSBpcyBub3Qgb2YgYSBzdXBwb3J0ZWQgdHlwZSBmb3IgcmFuZ2UgdmFsaWRhdGlvblxuICAvLyB0aGUgdmFsaWRhdGlvbiBydWxlIHJ1bGUgc2hvdWxkIHVzZSB0aGVcbiAgLy8gdHlwZSBwcm9wZXJ0eSB0byBhbHNvIHRlc3QgZm9yIGEgcGFydGljdWxhciB0eXBlXG4gIGlmICgha2V5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChhcnIpIHtcbiAgICB2YWwgPSB2YWx1ZS5sZW5ndGg7XG4gIH1cbiAgaWYgKHN0cikge1xuICAgIC8vIOWkhOeQhueggeeCueWkp+S6jlUrMDEwMDAw55qE5paH5a2XbGVuZ3Ro5bGe5oCn5LiN5YeG56Gu55qEYnVn77yM5aaCXCLwoK638KCut/CgrrdcIi5sZW5naHQgIT09IDNcbiAgICB2YWwgPSB2YWx1ZS5yZXBsYWNlKHNwUmVnZXhwLCAnXycpLmxlbmd0aDtcbiAgfVxuICBpZiAobGVuKSB7XG4gICAgaWYgKHZhbCAhPT0gcnVsZS5sZW4pIHtcbiAgICAgIGVycm9ycy5wdXNoKHV0aWwuZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNba2V5XS5sZW4sIHJ1bGUuZnVsbEZpZWxkLCBydWxlLmxlbikpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChtaW4gJiYgIW1heCAmJiB2YWwgPCBydWxlLm1pbikge1xuICAgIGVycm9ycy5wdXNoKHV0aWwuZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNba2V5XS5taW4sIHJ1bGUuZnVsbEZpZWxkLCBydWxlLm1pbikpO1xuICB9IGVsc2UgaWYgKG1heCAmJiAhbWluICYmIHZhbCA+IHJ1bGUubWF4KSB7XG4gICAgZXJyb3JzLnB1c2godXRpbC5mb3JtYXQob3B0aW9ucy5tZXNzYWdlc1trZXldLm1heCwgcnVsZS5mdWxsRmllbGQsIHJ1bGUubWF4KSk7XG4gIH0gZWxzZSBpZiAobWluICYmIG1heCAmJiAodmFsIDwgcnVsZS5taW4gfHwgdmFsID4gcnVsZS5tYXgpKSB7XG4gICAgZXJyb3JzLnB1c2godXRpbC5mb3JtYXQob3B0aW9ucy5tZXNzYWdlc1trZXldLnJhbmdlLCBydWxlLmZ1bGxGaWVsZCwgcnVsZS5taW4sIHJ1bGUubWF4KSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgcmFuZ2U7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/rule/range.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/rule/required.js":
/*!**********************************************************!*\
!*** ./node_modules/async-validator/es/rule/required.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n/**\n * Rule for validating required fields.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction required(rule, value, source, errors, options, type) {\n if (rule.required && (!source.hasOwnProperty(rule.field) || _util__WEBPACK_IMPORTED_MODULE_0__.isEmptyValue(value, type || rule.type))) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_0__.format(options.messages.required, rule.fullField));\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (required);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvcmVxdWlyZWQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBZ0M7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCwrQ0FBaUI7QUFDL0UsZ0JBQWdCLHlDQUFXO0FBQzNCO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvcnVsZS9yZXF1aXJlZC5qcz83Nzc1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi4vdXRpbCc7XG5cbi8qKlxuICogIFJ1bGUgZm9yIHZhbGlkYXRpbmcgcmVxdWlyZWQgZmllbGRzLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBlcnJvcnMgQW4gYXJyYXkgb2YgZXJyb3JzIHRoYXQgdGhpcyBydWxlIG1heSBhZGRcbiAqICB2YWxpZGF0aW9uIGVycm9ycyB0by5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiByZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMsIHR5cGUpIHtcbiAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgKCFzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCkgfHwgdXRpbC5pc0VtcHR5VmFsdWUodmFsdWUsIHR5cGUgfHwgcnVsZS50eXBlKSkpIHtcbiAgICBlcnJvcnMucHVzaCh1dGlsLmZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnJlcXVpcmVkLCBydWxlLmZ1bGxGaWVsZCkpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlcXVpcmVkOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/rule/required.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/rule/type.js":
/*!******************************************************!*\
!*** ./node_modules/async-validator/es/rule/type.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n/* harmony import */ var _required__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./required */ \"./node_modules/async-validator/es/rule/required.js\");\n\n\n\n\n/* eslint max-len:0 */\n\nvar pattern = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n url: new RegExp('^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$', 'i'),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\n\nvar types = {\n integer: function integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n float: function float(value) {\n return types.number(value) && !types.integer(value);\n },\n array: function array(value) {\n return Array.isArray(value);\n },\n regexp: function regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date: function date(value) {\n return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function';\n },\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n return typeof value === 'number';\n },\n object: function object(value) {\n return (typeof value === 'undefined' ? 'undefined' : (0,babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) === 'object' && !types.array(value);\n },\n method: function method(value) {\n return typeof value === 'function';\n },\n email: function email(value) {\n return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255;\n },\n url: function url(value) {\n return typeof value === 'string' && !!value.match(pattern.url);\n },\n hex: function hex(value) {\n return typeof value === 'string' && !!value.match(pattern.hex);\n }\n};\n\n/**\n * Rule for validating the type of a value.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n (0,_required__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(rule, value, source, errors, options);\n return;\n }\n var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n var ruleType = rule.type;\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_1__.format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n // straight typeof check\n } else if (ruleType && (typeof value === 'undefined' ? 'undefined' : (0,babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) !== rule.type) {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_1__.format(options.messages.types[ruleType], rule.fullField, rule.type));\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (type);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvdHlwZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQW1EO0FBQ25CO0FBQ0U7O0FBRWxDOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEIseUJBQXlCLDZCQUE2QixJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLGdDQUFnQyxHQUFHO0FBQzdKLDBJQUEwSSxJQUFJLHFCQUFxQixFQUFFLHVNQUF1TSxHQUFHLHNCQUFzQixJQUFJO0FBQ3pZLHFCQUFxQixFQUFFLFVBQVUsRUFBRTtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHlEQUF5RCx3RUFBTztBQUNoRSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFEQUFRO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlDQUFXO0FBQzdCO0FBQ0E7QUFDQSxJQUFJLG1FQUFtRSx3RUFBTztBQUM5RSxnQkFBZ0IseUNBQVc7QUFDM0I7QUFDQTs7QUFFQSxpRUFBZSxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy9ydWxlL3R5cGUuanM/MzJiZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvdHlwZW9mJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgcmVxdWlyZWQgZnJvbSAnLi9yZXF1aXJlZCc7XG5cbi8qIGVzbGludCBtYXgtbGVuOjAgKi9cblxudmFyIHBhdHRlcm4gPSB7XG4gIC8vIGh0dHA6Ly9lbWFpbHJlZ2V4LmNvbS9cbiAgZW1haWw6IC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICB1cmw6IG5ldyBSZWdFeHAoJ14oPyFtYWlsdG86KSg/Oig/Omh0dHB8aHR0cHN8ZnRwKTovL3wvLykoPzpcXFxcUysoPzo6XFxcXFMqKT9AKT8oPzooPzooPzpbMS05XVxcXFxkP3wxXFxcXGRcXFxcZHwyWzAxXVxcXFxkfDIyWzAtM10pKD86XFxcXC4oPzoxP1xcXFxkezEsMn18MlswLTRdXFxcXGR8MjVbMC01XSkpezJ9KD86XFxcXC4oPzpbMC05XVxcXFxkP3wxXFxcXGRcXFxcZHwyWzAtNF1cXFxcZHwyNVswLTRdKSl8KD86KD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKy0/KSpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV0rKSg/OlxcXFwuKD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKy0/KSpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV0rKSooPzpcXFxcLig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmXXsyLH0pKSl8bG9jYWxob3N0KSg/OjpcXFxcZHsyLDV9KT8oPzooL3xcXFxcP3wjKVteXFxcXHNdKik/JCcsICdpJyksXG4gIGhleDogL14jPyhbYS1mMC05XXs2fXxbYS1mMC05XXszfSkkL2lcbn07XG5cbnZhciB0eXBlcyA9IHtcbiAgaW50ZWdlcjogZnVuY3Rpb24gaW50ZWdlcih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlcy5udW1iZXIodmFsdWUpICYmIHBhcnNlSW50KHZhbHVlLCAxMCkgPT09IHZhbHVlO1xuICB9LFxuICBmbG9hdDogZnVuY3Rpb24gZmxvYXQodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZXMubnVtYmVyKHZhbHVlKSAmJiAhdHlwZXMuaW50ZWdlcih2YWx1ZSk7XG4gIH0sXG4gIGFycmF5OiBmdW5jdGlvbiBhcnJheSh2YWx1ZSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgfSxcbiAgcmVnZXhwOiBmdW5jdGlvbiByZWdleHAodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuICEhbmV3IFJlZ0V4cCh2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgZGF0ZTogZnVuY3Rpb24gZGF0ZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUuZ2V0VGltZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUuZ2V0TW9udGggPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlLmdldFllYXIgPT09ICdmdW5jdGlvbic7XG4gIH0sXG4gIG51bWJlcjogZnVuY3Rpb24gbnVtYmVyKHZhbHVlKSB7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgfSxcbiAgb2JqZWN0OiBmdW5jdGlvbiBvYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodmFsdWUpKSA9PT0gJ29iamVjdCcgJiYgIXR5cGVzLmFycmF5KHZhbHVlKTtcbiAgfSxcbiAgbWV0aG9kOiBmdW5jdGlvbiBtZXRob2QodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xuICB9LFxuICBlbWFpbDogZnVuY3Rpb24gZW1haWwodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhIXZhbHVlLm1hdGNoKHBhdHRlcm4uZW1haWwpICYmIHZhbHVlLmxlbmd0aCA8IDI1NTtcbiAgfSxcbiAgdXJsOiBmdW5jdGlvbiB1cmwodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhIXZhbHVlLm1hdGNoKHBhdHRlcm4udXJsKTtcbiAgfSxcbiAgaGV4OiBmdW5jdGlvbiBoZXgodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhIXZhbHVlLm1hdGNoKHBhdHRlcm4uaGV4KTtcbiAgfVxufTtcblxuLyoqXG4gKiAgUnVsZSBmb3IgdmFsaWRhdGluZyB0aGUgdHlwZSBvZiBhIHZhbHVlLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBlcnJvcnMgQW4gYXJyYXkgb2YgZXJyb3JzIHRoYXQgdGhpcyBydWxlIG1heSBhZGRcbiAqICB2YWxpZGF0aW9uIGVycm9ycyB0by5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiB0eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucykge1xuICBpZiAocnVsZS5yZXF1aXJlZCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIGN1c3RvbSA9IFsnaW50ZWdlcicsICdmbG9hdCcsICdhcnJheScsICdyZWdleHAnLCAnb2JqZWN0JywgJ21ldGhvZCcsICdlbWFpbCcsICdudW1iZXInLCAnZGF0ZScsICd1cmwnLCAnaGV4J107XG4gIHZhciBydWxlVHlwZSA9IHJ1bGUudHlwZTtcbiAgaWYgKGN1c3RvbS5pbmRleE9mKHJ1bGVUeXBlKSA+IC0xKSB7XG4gICAgaWYgKCF0eXBlc1tydWxlVHlwZV0odmFsdWUpKSB7XG4gICAgICBlcnJvcnMucHVzaCh1dGlsLmZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnR5cGVzW3J1bGVUeXBlXSwgcnVsZS5mdWxsRmllbGQsIHJ1bGUudHlwZSkpO1xuICAgIH1cbiAgICAvLyBzdHJhaWdodCB0eXBlb2YgY2hlY2tcbiAgfSBlbHNlIGlmIChydWxlVHlwZSAmJiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZih2YWx1ZSkpICE9PSBydWxlLnR5cGUpIHtcbiAgICBlcnJvcnMucHVzaCh1dGlsLmZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnR5cGVzW3J1bGVUeXBlXSwgcnVsZS5mdWxsRmllbGQsIHJ1bGUudHlwZSkpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHR5cGU7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/rule/type.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/rule/whitespace.js":
/*!************************************************************!*\
!*** ./node_modules/async-validator/es/rule/whitespace.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(_util__WEBPACK_IMPORTED_MODULE_0__.format(options.messages.whitespace, rule.fullField));\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (whitespace);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3J1bGUvd2hpdGVzcGFjZS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnQzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IseUNBQVc7QUFDM0I7QUFDQTs7QUFFQSxpRUFBZSxVQUFVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy9ydWxlL3doaXRlc3BhY2UuanM/NjBjNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4uL3V0aWwnO1xuXG4vKipcbiAqICBSdWxlIGZvciB2YWxpZGF0aW5nIHdoaXRlc3BhY2UuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIGVycm9ycyBBbiBhcnJheSBvZiBlcnJvcnMgdGhhdCB0aGlzIHJ1bGUgbWF5IGFkZFxuICogIHZhbGlkYXRpb24gZXJyb3JzIHRvLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIHdoaXRlc3BhY2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKSB7XG4gIGlmICgvXlxccyskLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICBlcnJvcnMucHVzaCh1dGlsLmZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLndoaXRlc3BhY2UsIHJ1bGUuZnVsbEZpZWxkKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2hpdGVzcGFjZTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/rule/whitespace.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/util.js":
/*!*************************************************!*\
!*** ./node_modules/async-validator/es/util.js ***!
\*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ asyncMap: () => (/* binding */ asyncMap),\n/* harmony export */ complementError: () => (/* binding */ complementError),\n/* harmony export */ deepMerge: () => (/* binding */ deepMerge),\n/* harmony export */ format: () => (/* binding */ format),\n/* harmony export */ isEmptyObject: () => (/* binding */ isEmptyObject),\n/* harmony export */ isEmptyValue: () => (/* binding */ isEmptyValue),\n/* harmony export */ warning: () => (/* binding */ warning)\n/* harmony export */ });\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babel-runtime/helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\n\nvar formatRegExp = /%[sdj%]/g;\n\nvar warning = function warning() {};\n\n// don't print warning message when in production env or node runtime\nif ( true && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warning = function warning(type, errors) {\n if (typeof console !== 'undefined' && console.warn) {\n if (errors.every(function (e) {\n return typeof e === 'string';\n })) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nfunction format() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var i = 1;\n var f = args[0];\n var len = args.length;\n if (typeof f === 'function') {\n return f.apply(null, args.slice(1));\n }\n if (typeof f === 'string') {\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n if (i >= len) {\n return x;\n }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n break;\n default:\n return x;\n }\n });\n for (var arg = args[i]; i < len; arg = args[++i]) {\n str += ' ' + arg;\n }\n return str;\n }\n return f;\n}\n\nfunction isNativeStringType(type) {\n return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'pattern';\n}\n\nfunction isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n return false;\n}\n\nfunction isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n var results = [];\n var total = 0;\n var arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors);\n total++;\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(function (a) {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n var original = index;\n index = index + 1;\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n ret.push.apply(ret, objArr[k]);\n });\n return ret;\n}\n\nfunction asyncMap(objArr, option, func, callback) {\n if (option.first) {\n var flattenArr = flattenObjArr(objArr);\n return asyncSerialArray(flattenArr, func, callback);\n }\n var firstFields = option.firstFields || [];\n if (firstFields === true) {\n firstFields = Object.keys(objArr);\n }\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n var next = function next(errors) {\n results.push.apply(results, errors);\n total++;\n if (total === objArrLength) {\n callback(results);\n }\n };\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n}\n\nfunction complementError(rule) {\n return function (oe) {\n if (oe && oe.message) {\n oe.field = oe.field || rule.fullField;\n return oe;\n }\n return {\n message: oe,\n field: oe.field || rule.fullField\n };\n };\n}\n\nfunction deepMerge(target, source) {\n if (source) {\n for (var s in source) {\n if (source.hasOwnProperty(s)) {\n var value = source[s];\n if ((typeof value === 'undefined' ? 'undefined' : (0,babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) === 'object' && (0,babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(target[s]) === 'object') {\n target[s] = (0,babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, target[s], value);\n } else {\n target[s] = value;\n }\n }\n }\n }\n return target;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3V0aWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQXFEO0FBQ0Y7QUFDbkQ7O0FBRU87O0FBRVA7QUFDQSxJQUFJLEtBQXFDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxrRUFBa0UsYUFBYTtBQUMvRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCw0QkFBNEIsU0FBUztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsd0VBQU8seUJBQXlCLHdFQUFPO0FBQ2pHLHNCQUFzQix5RUFBUSxHQUFHO0FBQ2pDLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdXRpbC5qcz8zM2E3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZXh0ZW5kcyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgX3R5cGVvZiBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvdHlwZW9mJztcbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xuXG5leHBvcnQgdmFyIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKCkge307XG5cbi8vIGRvbid0IHByaW50IHdhcm5pbmcgbWVzc2FnZSB3aGVuIGluIHByb2R1Y3Rpb24gZW52IG9yIG5vZGUgcnVudGltZVxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyh0eXBlLCBlcnJvcnMpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgaWYgKGVycm9ycy5ldmVyeShmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGUgPT09ICdzdHJpbmcnO1xuICAgICAgfSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKHR5cGUsIGVycm9ycyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICB2YXIgaSA9IDE7XG4gIHZhciBmID0gYXJnc1swXTtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICBpZiAodHlwZW9mIGYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzLnNsaWNlKDEpKTtcbiAgfVxuICBpZiAodHlwZW9mIGYgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHN0ciA9IFN0cmluZyhmKS5yZXBsYWNlKGZvcm1hdFJlZ0V4cCwgZnVuY3Rpb24gKHgpIHtcbiAgICAgIGlmICh4ID09PSAnJSUnKSB7XG4gICAgICAgIHJldHVybiAnJSc7XG4gICAgICB9XG4gICAgICBpZiAoaSA+PSBsZW4pIHtcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHgpIHtcbiAgICAgICAgY2FzZSAnJXMnOlxuICAgICAgICAgIHJldHVybiBTdHJpbmcoYXJnc1tpKytdKTtcbiAgICAgICAgY2FzZSAnJWQnOlxuICAgICAgICAgIHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcbiAgICAgICAgY2FzZSAnJWonOlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJnc1tpKytdKTtcbiAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3IgKHZhciBhcmcgPSBhcmdzW2ldOyBpIDwgbGVuOyBhcmcgPSBhcmdzWysraV0pIHtcbiAgICAgIHN0ciArPSAnICcgKyBhcmc7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbmZ1bmN0aW9uIGlzTmF0aXZlU3RyaW5nVHlwZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAndXJsJyB8fCB0eXBlID09PSAnaGV4JyB8fCB0eXBlID09PSAnZW1haWwnIHx8IHR5cGUgPT09ICdwYXR0ZXJuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHlWYWx1ZSh2YWx1ZSwgdHlwZSkge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlID09PSAnYXJyYXknICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICF2YWx1ZS5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaXNOYXRpdmVTdHJpbmdUeXBlKHR5cGUpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eU9iamVjdChvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufVxuXG5mdW5jdGlvbiBhc3luY1BhcmFsbGVsQXJyYXkoYXJyLCBmdW5jLCBjYWxsYmFjaykge1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuICB2YXIgdG90YWwgPSAwO1xuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aDtcblxuICBmdW5jdGlvbiBjb3VudChlcnJvcnMpIHtcbiAgICByZXN1bHRzLnB1c2guYXBwbHkocmVzdWx0cywgZXJyb3JzKTtcbiAgICB0b3RhbCsrO1xuICAgIGlmICh0b3RhbCA9PT0gYXJyTGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhyZXN1bHRzKTtcbiAgICB9XG4gIH1cblxuICBhcnIuZm9yRWFjaChmdW5jdGlvbiAoYSkge1xuICAgIGZ1bmMoYSwgY291bnQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXN5bmNTZXJpYWxBcnJheShhcnIsIGZ1bmMsIGNhbGxiYWNrKSB7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoZXJyb3JzKSB7XG4gICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhlcnJvcnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgb3JpZ2luYWwgPSBpbmRleDtcbiAgICBpbmRleCA9IGluZGV4ICsgMTtcbiAgICBpZiAob3JpZ2luYWwgPCBhcnJMZW5ndGgpIHtcbiAgICAgIGZ1bmMoYXJyW29yaWdpbmFsXSwgbmV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKFtdKTtcbiAgICB9XG4gIH1cblxuICBuZXh0KFtdKTtcbn1cblxuZnVuY3Rpb24gZmxhdHRlbk9iakFycihvYmpBcnIpIHtcbiAgdmFyIHJldCA9IFtdO1xuICBPYmplY3Qua2V5cyhvYmpBcnIpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIG9iakFycltrXSk7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXN5bmNNYXAob2JqQXJyLCBvcHRpb24sIGZ1bmMsIGNhbGxiYWNrKSB7XG4gIGlmIChvcHRpb24uZmlyc3QpIHtcbiAgICB2YXIgZmxhdHRlbkFyciA9IGZsYXR0ZW5PYmpBcnIob2JqQXJyKTtcbiAgICByZXR1cm4gYXN5bmNTZXJpYWxBcnJheShmbGF0dGVuQXJyLCBmdW5jLCBjYWxsYmFjayk7XG4gIH1cbiAgdmFyIGZpcnN0RmllbGRzID0gb3B0aW9uLmZpcnN0RmllbGRzIHx8IFtdO1xuICBpZiAoZmlyc3RGaWVsZHMgPT09IHRydWUpIHtcbiAgICBmaXJzdEZpZWxkcyA9IE9iamVjdC5rZXlzKG9iakFycik7XG4gIH1cbiAgdmFyIG9iakFycktleXMgPSBPYmplY3Qua2V5cyhvYmpBcnIpO1xuICB2YXIgb2JqQXJyTGVuZ3RoID0gb2JqQXJyS2V5cy5sZW5ndGg7XG4gIHZhciB0b3RhbCA9IDA7XG4gIHZhciByZXN1bHRzID0gW107XG4gIHZhciBuZXh0ID0gZnVuY3Rpb24gbmV4dChlcnJvcnMpIHtcbiAgICByZXN1bHRzLnB1c2guYXBwbHkocmVzdWx0cywgZXJyb3JzKTtcbiAgICB0b3RhbCsrO1xuICAgIGlmICh0b3RhbCA9PT0gb2JqQXJyTGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhyZXN1bHRzKTtcbiAgICB9XG4gIH07XG4gIG9iakFycktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGFyciA9IG9iakFycltrZXldO1xuICAgIGlmIChmaXJzdEZpZWxkcy5pbmRleE9mKGtleSkgIT09IC0xKSB7XG4gICAgICBhc3luY1NlcmlhbEFycmF5KGFyciwgZnVuYywgbmV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzeW5jUGFyYWxsZWxBcnJheShhcnIsIGZ1bmMsIG5leHQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGVtZW50RXJyb3IocnVsZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKG9lKSB7XG4gICAgaWYgKG9lICYmIG9lLm1lc3NhZ2UpIHtcbiAgICAgIG9lLmZpZWxkID0gb2UuZmllbGQgfHwgcnVsZS5mdWxsRmllbGQ7XG4gICAgICByZXR1cm4gb2U7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiBvZSxcbiAgICAgIGZpZWxkOiBvZS5maWVsZCB8fCBydWxlLmZ1bGxGaWVsZFxuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwTWVyZ2UodGFyZ2V0LCBzb3VyY2UpIHtcbiAgaWYgKHNvdXJjZSkge1xuICAgIGZvciAodmFyIHMgaW4gc291cmNlKSB7XG4gICAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KHMpKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVtzXTtcbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKHZhbHVlKSkgPT09ICdvYmplY3QnICYmIF90eXBlb2YodGFyZ2V0W3NdKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0YXJnZXRbc10gPSBfZXh0ZW5kcyh7fSwgdGFyZ2V0W3NdLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W3NdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/util.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/array.js":
/*!************************************************************!*\
!*** ./node_modules/async-validator/es/validator/array.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n/**\n * Validates an array.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction array(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value, 'array') && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options, 'array');\n if (!(0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value, 'array')) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, value, source, errors, options);\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (array);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9hcnJheS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNkI7QUFDVTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxtREFBWTtBQUNwQjtBQUNBO0FBQ0EsSUFBSSw4Q0FBSztBQUNULFNBQVMsbURBQVk7QUFDckIsTUFBTSw4Q0FBSztBQUNYLE1BQU0sOENBQUs7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxLQUFLIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3IvYXJyYXkuanM/NzVkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcnVsZXMgZnJvbSAnLi4vcnVsZS8nO1xuaW1wb3J0IHsgaXNFbXB0eVZhbHVlIH0gZnJvbSAnLi4vdXRpbCc7XG4vKipcbiAqICBWYWxpZGF0ZXMgYW4gYXJyYXkuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiBhcnJheShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlLCAnYXJyYXknKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucywgJ2FycmF5Jyk7XG4gICAgaWYgKCFpc0VtcHR5VmFsdWUodmFsdWUsICdhcnJheScpKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBydWxlcy5yYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcnJheTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/array.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/boolean.js":
/*!**************************************************************!*\
!*** ./node_modules/async-validator/es/validator/boolean.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n\n\n\n/**\n * Validates a boolean.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction boolean(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_0__.isEmptyValue)(value) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_1__[\"default\"].required(rule, value, source, errors, options);\n if (value !== undefined) {\n _rule___WEBPACK_IMPORTED_MODULE_1__[\"default\"].type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (boolean);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9ib29sZWFuLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF1QztBQUNWOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxtREFBWTtBQUNwQjtBQUNBO0FBQ0EsSUFBSSw4Q0FBSztBQUNUO0FBQ0EsTUFBTSw4Q0FBSztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLE9BQU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9ib29sZWFuLmpzP2E1OTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eVZhbHVlIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgcnVsZXMgZnJvbSAnLi4vcnVsZS8nO1xuXG4vKipcbiAqICBWYWxpZGF0ZXMgYSBib29sZWFuLlxuICpcbiAqICBAcGFyYW0gcnVsZSBUaGUgdmFsaWRhdGlvbiBydWxlLlxuICogIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIG9uIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gYm9vbGVhbihydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYm9vbGVhbjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/boolean.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/date.js":
/*!***********************************************************!*\
!*** ./node_modules/async-validator/es/validator/date.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\nfunction date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n // console.log('validate on %s value', value);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options);\n if (!(0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value)) {\n var dateObject = void 0;\n\n if (typeof value === 'number') {\n dateObject = new Date(value);\n } else {\n dateObject = value;\n }\n\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, dateObject, source, errors, options);\n if (dateObject) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (date);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9kYXRlLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE2QjtBQUNVOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFZO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLDhDQUFLO0FBQ1QsU0FBUyxtREFBWTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUEsTUFBTSw4Q0FBSztBQUNYO0FBQ0EsUUFBUSw4Q0FBSztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL2RhdGUuanM/MjVlZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcnVsZXMgZnJvbSAnLi4vcnVsZS8nO1xuaW1wb3J0IHsgaXNFbXB0eVZhbHVlIH0gZnJvbSAnLi4vdXRpbCc7XG5cbmZ1bmN0aW9uIGRhdGUocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgLy8gY29uc29sZS5sb2coJ2ludGVnZXIgcnVsZSBjYWxsZWQgJWonLCBydWxlKTtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcbiAgLy8gY29uc29sZS5sb2coJ3ZhbGlkYXRlIG9uICVzIHZhbHVlJywgdmFsdWUpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgaWYgKCFpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICB2YXIgZGF0ZU9iamVjdCA9IHZvaWQgMDtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgZGF0ZU9iamVjdCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGVPYmplY3QgPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcnVsZXMudHlwZShydWxlLCBkYXRlT2JqZWN0LCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBpZiAoZGF0ZU9iamVjdCkge1xuICAgICAgICBydWxlcy5yYW5nZShydWxlLCBkYXRlT2JqZWN0LmdldFRpbWUoKSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkYXRlOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/date.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/enum.js":
/*!***********************************************************!*\
!*** ./node_modules/async-validator/es/validator/enum.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\nvar ENUM = 'enum';\n\n/**\n * Validates an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options);\n if (value) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"][ENUM](rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (enumerable);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9lbnVtLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE2QjtBQUNVO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFZO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLDhDQUFLO0FBQ1Q7QUFDQSxNQUFNLDhDQUFLO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsVUFBVSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL2VudW0uanM/Njg2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcnVsZXMgZnJvbSAnLi4vcnVsZS8nO1xuaW1wb3J0IHsgaXNFbXB0eVZhbHVlIH0gZnJvbSAnLi4vdXRpbCc7XG52YXIgRU5VTSA9ICdlbnVtJztcblxuLyoqXG4gKiAgVmFsaWRhdGVzIGFuIGVudW1lcmFibGUgbGlzdC5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIGVudW1lcmFibGUocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcnVsZXNbRU5VTV0ocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW51bWVyYWJsZTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/enum.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/float.js":
/*!************************************************************!*\
!*** ./node_modules/async-validator/es/validator/float.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\n/**\n * Validates a number is a floating point number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction floatFn(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options);\n if (value !== undefined) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, value, source, errors, options);\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (floatFn);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9mbG9hdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNkI7QUFDVTs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsbURBQVk7QUFDcEI7QUFDQTtBQUNBLElBQUksOENBQUs7QUFDVDtBQUNBLE1BQU0sOENBQUs7QUFDWCxNQUFNLDhDQUFLO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsT0FBTyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL2Zsb2F0LmpzP2UwZjIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJ1bGVzIGZyb20gJy4uL3J1bGUvJztcbmltcG9ydCB7IGlzRW1wdHlWYWx1ZSB9IGZyb20gJy4uL3V0aWwnO1xuXG4vKipcbiAqICBWYWxpZGF0ZXMgYSBudW1iZXIgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiBmbG9hdEZuKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgcnVsZXMucmFuZ2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZmxvYXRGbjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/float.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/index.js":
/*!************************************************************!*\
!*** ./node_modules/async-validator/es/validator/index.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./string */ \"./node_modules/async-validator/es/validator/string.js\");\n/* harmony import */ var _method__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./method */ \"./node_modules/async-validator/es/validator/method.js\");\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./number */ \"./node_modules/async-validator/es/validator/number.js\");\n/* harmony import */ var _boolean__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./boolean */ \"./node_modules/async-validator/es/validator/boolean.js\");\n/* harmony import */ var _regexp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./regexp */ \"./node_modules/async-validator/es/validator/regexp.js\");\n/* harmony import */ var _integer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./integer */ \"./node_modules/async-validator/es/validator/integer.js\");\n/* harmony import */ var _float__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./float */ \"./node_modules/async-validator/es/validator/float.js\");\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./array */ \"./node_modules/async-validator/es/validator/array.js\");\n/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./object */ \"./node_modules/async-validator/es/validator/object.js\");\n/* harmony import */ var _enum__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./enum */ \"./node_modules/async-validator/es/validator/enum.js\");\n/* harmony import */ var _pattern__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./pattern */ \"./node_modules/async-validator/es/validator/pattern.js\");\n/* harmony import */ var _date__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./date */ \"./node_modules/async-validator/es/validator/date.js\");\n/* harmony import */ var _required__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./required */ \"./node_modules/async-validator/es/validator/required.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./type */ \"./node_modules/async-validator/es/validator/type.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n string: _string__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n method: _method__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n number: _number__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n boolean: _boolean__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n regexp: _regexp__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n integer: _integer__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n float: _float__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n array: _array__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n object: _object__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n 'enum': _enum__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n pattern: _pattern__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n date: _date__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n url: _type__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n hex: _type__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n email: _type__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n required: _required__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBOEI7QUFDQTtBQUNBO0FBQ0U7QUFDRjtBQUNFO0FBQ0o7QUFDQTtBQUNFO0FBQ0s7QUFDSDtBQUNOO0FBQ1E7QUFDUjs7QUFFMUIsaUVBQWU7QUFDZixVQUFVLCtDQUFNO0FBQ2hCLFVBQVUsK0NBQU07QUFDaEIsVUFBVSwrQ0FBTTtBQUNoQixXQUFXLGdEQUFPO0FBQ2xCLFVBQVUsK0NBQU07QUFDaEIsV0FBVyxnREFBTztBQUNsQixTQUFTLDhDQUFLO0FBQ2QsU0FBUyw4Q0FBSztBQUNkLFVBQVUsK0NBQU07QUFDaEIsVUFBVSw2Q0FBYTtBQUN2QixXQUFXLGlEQUFPO0FBQ2xCLFFBQVEsOENBQUk7QUFDWixPQUFPLDhDQUFJO0FBQ1gsT0FBTyw4Q0FBSTtBQUNYLFNBQVMsOENBQUk7QUFDYixZQUFZLGtEQUFRO0FBQ3BCLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9pbmRleC5qcz83N2EyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHJpbmcgZnJvbSAnLi9zdHJpbmcnO1xuaW1wb3J0IG1ldGhvZCBmcm9tICcuL21ldGhvZCc7XG5pbXBvcnQgbnVtYmVyIGZyb20gJy4vbnVtYmVyJztcbmltcG9ydCBib29sZWFuIGZyb20gJy4vYm9vbGVhbic7XG5pbXBvcnQgcmVnZXhwIGZyb20gJy4vcmVnZXhwJztcbmltcG9ydCBpbnRlZ2VyIGZyb20gJy4vaW50ZWdlcic7XG5pbXBvcnQgZmxvYXQgZnJvbSAnLi9mbG9hdCc7XG5pbXBvcnQgYXJyYXkgZnJvbSAnLi9hcnJheSc7XG5pbXBvcnQgb2JqZWN0IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCBlbnVtVmFsaWRhdG9yIGZyb20gJy4vZW51bSc7XG5pbXBvcnQgcGF0dGVybiBmcm9tICcuL3BhdHRlcm4nO1xuaW1wb3J0IGRhdGUgZnJvbSAnLi9kYXRlJztcbmltcG9ydCByZXF1aXJlZCBmcm9tICcuL3JlcXVpcmVkJztcbmltcG9ydCB0eXBlIGZyb20gJy4vdHlwZSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3RyaW5nOiBzdHJpbmcsXG4gIG1ldGhvZDogbWV0aG9kLFxuICBudW1iZXI6IG51bWJlcixcbiAgYm9vbGVhbjogYm9vbGVhbixcbiAgcmVnZXhwOiByZWdleHAsXG4gIGludGVnZXI6IGludGVnZXIsXG4gIGZsb2F0OiBmbG9hdCxcbiAgYXJyYXk6IGFycmF5LFxuICBvYmplY3Q6IG9iamVjdCxcbiAgJ2VudW0nOiBlbnVtVmFsaWRhdG9yLFxuICBwYXR0ZXJuOiBwYXR0ZXJuLFxuICBkYXRlOiBkYXRlLFxuICB1cmw6IHR5cGUsXG4gIGhleDogdHlwZSxcbiAgZW1haWw6IHR5cGUsXG4gIHJlcXVpcmVkOiByZXF1aXJlZFxufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/index.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/integer.js":
/*!**************************************************************!*\
!*** ./node_modules/async-validator/es/validator/integer.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\n/**\n * Validates a number is an integer.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction integer(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options);\n if (value !== undefined) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, value, source, errors, options);\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (integer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9pbnRlZ2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE2QjtBQUNVOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxtREFBWTtBQUNwQjtBQUNBO0FBQ0EsSUFBSSw4Q0FBSztBQUNUO0FBQ0EsTUFBTSw4Q0FBSztBQUNYLE1BQU0sOENBQUs7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxPQUFPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9lcy92YWxpZGF0b3IvaW50ZWdlci5qcz80Y2E3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBydWxlcyBmcm9tICcuLi9ydWxlLyc7XG5pbXBvcnQgeyBpc0VtcHR5VmFsdWUgfSBmcm9tICcuLi91dGlsJztcblxuLyoqXG4gKiAgVmFsaWRhdGVzIGEgbnVtYmVyIGlzIGFuIGludGVnZXIuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiBpbnRlZ2VyKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgcnVsZXMucmFuZ2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaW50ZWdlcjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/integer.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/method.js":
/*!*************************************************************!*\
!*** ./node_modules/async-validator/es/validator/method.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\n/**\n * Validates a function.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction method(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options);\n if (value !== undefined) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (method);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9tZXRob2QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTZCO0FBQ1U7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFZO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLDhDQUFLO0FBQ1Q7QUFDQSxNQUFNLDhDQUFLO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsTUFBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL21ldGhvZC5qcz80N2M1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBydWxlcyBmcm9tICcuLi9ydWxlLyc7XG5pbXBvcnQgeyBpc0VtcHR5VmFsdWUgfSBmcm9tICcuLi91dGlsJztcblxuLyoqXG4gKiAgVmFsaWRhdGVzIGEgZnVuY3Rpb24uXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gb3B0aW9ucyBUaGUgdmFsaWRhdGlvbiBvcHRpb25zLlxuICogIEBwYXJhbSBvcHRpb25zLm1lc3NhZ2VzIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiBtZXRob2QocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGhvZDsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/method.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/number.js":
/*!*************************************************************!*\
!*** ./node_modules/async-validator/es/validator/number.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\n/**\n * Validates a number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction number(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options);\n if (value !== undefined) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, value, source, errors, options);\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (number);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9udW1iZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTZCO0FBQ1U7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFZO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLDhDQUFLO0FBQ1Q7QUFDQSxNQUFNLDhDQUFLO0FBQ1gsTUFBTSw4Q0FBSztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLE1BQU0iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9udW1iZXIuanM/MzdjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcnVsZXMgZnJvbSAnLi4vcnVsZS8nO1xuaW1wb3J0IHsgaXNFbXB0eVZhbHVlIH0gZnJvbSAnLi4vdXRpbCc7XG5cbi8qKlxuICogIFZhbGlkYXRlcyBhIG51bWJlci5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIG51bWJlcihydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIHJ1bGVzLnJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG51bWJlcjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/number.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/object.js":
/*!*************************************************************!*\
!*** ./node_modules/async-validator/es/validator/object.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\n/**\n * Validates an object.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction object(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options);\n if (value !== undefined) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (object);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9vYmplY3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTZCO0FBQ1U7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFZO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLDhDQUFLO0FBQ1Q7QUFDQSxNQUFNLDhDQUFLO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsTUFBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL29iamVjdC5qcz8wOThmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBydWxlcyBmcm9tICcuLi9ydWxlLyc7XG5pbXBvcnQgeyBpc0VtcHR5VmFsdWUgfSBmcm9tICcuLi91dGlsJztcblxuLyoqXG4gKiAgVmFsaWRhdGVzIGFuIG9iamVjdC5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdChydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgb2JqZWN0OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/object.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/pattern.js":
/*!**************************************************************!*\
!*** ./node_modules/async-validator/es/validator/pattern.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\n/**\n * Validates a regular expression pattern.\n *\n * Performs validation when a rule only contains\n * a pattern property but is not declared as a string type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value, 'string') && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options);\n if (!(0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value, 'string')) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].pattern(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (pattern);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9wYXR0ZXJuLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE2QjtBQUNVOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxtREFBWTtBQUNwQjtBQUNBO0FBQ0EsSUFBSSw4Q0FBSztBQUNULFNBQVMsbURBQVk7QUFDckIsTUFBTSw4Q0FBSztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLE9BQU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9wYXR0ZXJuLmpzPzk5YjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJ1bGVzIGZyb20gJy4uL3J1bGUvJztcbmltcG9ydCB7IGlzRW1wdHlWYWx1ZSB9IGZyb20gJy4uL3V0aWwnO1xuXG4vKipcbiAqICBWYWxpZGF0ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbiAqXG4gKiAgUGVyZm9ybXMgdmFsaWRhdGlvbiB3aGVuIGEgcnVsZSBvbmx5IGNvbnRhaW5zXG4gKiAgYSBwYXR0ZXJuIHByb3BlcnR5IGJ1dCBpcyBub3QgZGVjbGFyZWQgYXMgYSBzdHJpbmcgdHlwZS5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIHBhdHRlcm4ocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ3N0cmluZycpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ3N0cmluZycpKSB7XG4gICAgICBydWxlcy5wYXR0ZXJuKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhdHRlcm47Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/pattern.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/regexp.js":
/*!*************************************************************!*\
!*** ./node_modules/async-validator/es/validator/regexp.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\n/**\n * Validates the regular expression type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction regexp(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options);\n if (!(0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value)) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (regexp);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9yZWdleHAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTZCO0FBQ1U7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFZO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLDhDQUFLO0FBQ1QsU0FBUyxtREFBWTtBQUNyQixNQUFNLDhDQUFLO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsTUFBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL3JlZ2V4cC5qcz9iYmU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBydWxlcyBmcm9tICcuLi9ydWxlLyc7XG5pbXBvcnQgeyBpc0VtcHR5VmFsdWUgfSBmcm9tICcuLi91dGlsJztcblxuLyoqXG4gKiAgVmFsaWRhdGVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdHlwZS5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIHJlZ2V4cChydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgaWYgKCFpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2V4cDsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/regexp.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/required.js":
/*!***************************************************************!*\
!*** ./node_modules/async-validator/es/validator/required.js ***!
\***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n\n\n\nfunction required(rule, value, callback, source, options) {\n var errors = [];\n var type = Array.isArray(value) ? 'array' : typeof value === 'undefined' ? 'undefined' : (0,babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value);\n _rule___WEBPACK_IMPORTED_MODULE_1__[\"default\"].required(rule, value, source, errors, options, type);\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (required);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9yZXF1aXJlZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBbUQ7QUFDdEI7O0FBRTdCO0FBQ0E7QUFDQSwyRkFBMkYsd0VBQU87QUFDbEcsRUFBRSw4Q0FBSztBQUNQO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hc3luYy12YWxpZGF0b3IvZXMvdmFsaWRhdG9yL3JlcXVpcmVkLmpzPzg5NmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90eXBlb2YgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZic7XG5pbXBvcnQgcnVsZXMgZnJvbSAnLi4vcnVsZS8nO1xuXG5mdW5jdGlvbiByZXF1aXJlZChydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB0eXBlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAnYXJyYXknIDogdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZih2YWx1ZSk7XG4gIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucywgdHlwZSk7XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlcXVpcmVkOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/required.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/string.js":
/*!*************************************************************!*\
!*** ./node_modules/async-validator/es/validator/string.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\n/**\n * Performs validation for string types.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction string(rule, value, callback, source, options) {\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value, 'string') && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options, 'string');\n if (!(0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value, 'string')) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, value, source, errors, options);\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].range(rule, value, source, errors, options);\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].pattern(rule, value, source, errors, options);\n if (rule.whitespace === true) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].whitespace(rule, value, source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (string);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9zdHJpbmcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTZCO0FBQ1U7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFZO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLDhDQUFLO0FBQ1QsU0FBUyxtREFBWTtBQUNyQixNQUFNLDhDQUFLO0FBQ1gsTUFBTSw4Q0FBSztBQUNYLE1BQU0sOENBQUs7QUFDWDtBQUNBLFFBQVEsOENBQUs7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLE1BQU0iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci9zdHJpbmcuanM/MDM2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcnVsZXMgZnJvbSAnLi4vcnVsZS8nO1xuaW1wb3J0IHsgaXNFbXB0eVZhbHVlIH0gZnJvbSAnLi4vdXRpbCc7XG5cbi8qKlxuICogIFBlcmZvcm1zIHZhbGlkYXRpb24gZm9yIHN0cmluZyB0eXBlcy5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QgYmVpbmcgdmFsaWRhdGVkLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZyhydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlLCAnc3RyaW5nJykgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMsICdzdHJpbmcnKTtcbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ3N0cmluZycpKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBydWxlcy5yYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgcnVsZXMucGF0dGVybihydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJ1bGUud2hpdGVzcGFjZSA9PT0gdHJ1ZSkge1xuICAgICAgICBydWxlcy53aGl0ZXNwYWNlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmluZzsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/string.js\n");
/***/ }),
/***/ "./node_modules/async-validator/es/validator/type.js":
/*!***********************************************************!*\
!*** ./node_modules/async-validator/es/validator/type.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rule___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../rule/ */ \"./node_modules/async-validator/es/rule/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/async-validator/es/util.js\");\n\n\n\nfunction type(rule, value, callback, source, options) {\n var ruleType = rule.type;\n var errors = [];\n var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n if (validate) {\n if ((0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value, ruleType) && !rule.required) {\n return callback();\n }\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].required(rule, value, source, errors, options, ruleType);\n if (!(0,_util__WEBPACK_IMPORTED_MODULE_1__.isEmptyValue)(value, ruleType)) {\n _rule___WEBPACK_IMPORTED_MODULE_0__[\"default\"].type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (type);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci90eXBlLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE2QjtBQUNVOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxtREFBWTtBQUNwQjtBQUNBO0FBQ0EsSUFBSSw4Q0FBSztBQUNULFNBQVMsbURBQVk7QUFDckIsTUFBTSw4Q0FBSztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2VzL3ZhbGlkYXRvci90eXBlLmpzPzcxMTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJ1bGVzIGZyb20gJy4uL3J1bGUvJztcbmltcG9ydCB7IGlzRW1wdHlWYWx1ZSB9IGZyb20gJy4uL3V0aWwnO1xuXG5mdW5jdGlvbiB0eXBlKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBydWxlVHlwZSA9IHJ1bGUudHlwZTtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSwgcnVsZVR5cGUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zLCBydWxlVHlwZSk7XG4gICAgaWYgKCFpc0VtcHR5VmFsdWUodmFsdWUsIHJ1bGVUeXBlKSkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuICBjYWxsYmFjayhlcnJvcnMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0eXBlOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/async-validator/es/validator/type.js\n");
/***/ }),
/***/ "./node_modules/axios/index.js":
/*!*************************************!*\
!*** ./node_modules/axios/index.js ***!
\*************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports = __webpack_require__(/*! ./lib/axios */ \"./node_modules/axios/lib/axios.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUEsNEZBQXVDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2luZGV4LmpzPzUzZTkiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9heGlvcycpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/index.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/adapters/xhr.js":
/*!************************************************!*\
!*** ./node_modules/axios/lib/adapters/xhr.js ***!
\************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar settle = __webpack_require__(/*! ./../core/settle */ \"./node_modules/axios/lib/core/settle.js\");\nvar cookies = __webpack_require__(/*! ./../helpers/cookies */ \"./node_modules/axios/lib/helpers/cookies.js\");\nvar buildURL = __webpack_require__(/*! ./../helpers/buildURL */ \"./node_modules/axios/lib/helpers/buildURL.js\");\nvar buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ \"./node_modules/axios/lib/core/buildFullPath.js\");\nvar parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ \"./node_modules/axios/lib/helpers/parseHeaders.js\");\nvar isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ \"./node_modules/axios/lib/helpers/isURLSameOrigin.js\");\nvar createError = __webpack_require__(/*! ../core/createError */ \"./node_modules/axios/lib/core/createError.js\");\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 var responseType = config.responseType;\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 ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n 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 if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\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 // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\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 var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : '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 // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && 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 (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\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) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL3hoci5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMscURBQVk7QUFDaEMsYUFBYSxtQkFBTyxDQUFDLGlFQUFrQjtBQUN2QyxjQUFjLG1CQUFPLENBQUMseUVBQXNCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQywyRUFBdUI7QUFDOUMsb0JBQW9CLG1CQUFPLENBQUMsNkVBQXVCO0FBQ25ELG1CQUFtQixtQkFBTyxDQUFDLG1GQUEyQjtBQUN0RCxzQkFBc0IsbUJBQU8sQ0FBQyx5RkFBOEI7QUFDNUQsa0JBQWtCLG1CQUFPLENBQUMseUVBQXFCOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDO0FBQzdDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanM/MWE1YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBzZXR0bGUgPSByZXF1aXJlKCcuLy4uL2NvcmUvc2V0dGxlJyk7XG52YXIgY29va2llcyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9jb29raWVzJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBidWlsZEZ1bGxQYXRoID0gcmVxdWlyZSgnLi4vY29yZS9idWlsZEZ1bGxQYXRoJyk7XG52YXIgcGFyc2VIZWFkZXJzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL3BhcnNlSGVhZGVycycpO1xudmFyIGlzVVJMU2FtZU9yaWdpbiA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9pc1VSTFNhbWVPcmlnaW4nKTtcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvY3JlYXRlRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4aHJBZGFwdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0RGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciByZXF1ZXN0SGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzO1xuICAgIHZhciByZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEocmVxdWVzdERhdGEpKSB7XG4gICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgfVxuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIC8vIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICBpZiAoY29uZmlnLmF1dGgpIHtcbiAgICAgIHZhciB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xuICAgICAgdmFyIHBhc3N3b3JkID0gY29uZmlnLmF1dGgucGFzc3dvcmQgPyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29uZmlnLmF1dGgucGFzc3dvcmQpKSA6ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgICByZXF1ZXN0Lm9wZW4oY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLCB0cnVlKTtcblxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gY29uZmlnLnRpbWVvdXQ7XG5cbiAgICBmdW5jdGlvbiBvbmxvYWRlbmQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gUHJlcGFyZSB0aGUgcmVzcG9uc2VcbiAgICAgIHZhciByZXNwb25zZUhlYWRlcnMgPSAnZ2V0QWxsUmVzcG9uc2VIZWFkZXJzJyBpbiByZXF1ZXN0ID8gcGFyc2VIZWFkZXJzKHJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpIDogbnVsbDtcbiAgICAgIHZhciByZXNwb25zZURhdGEgPSAhcmVzcG9uc2VUeXBlIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnIHx8ICByZXNwb25zZVR5cGUgPT09ICdqc29uJyA/XG4gICAgICAgIHJlcXVlc3QucmVzcG9uc2VUZXh0IDogcmVxdWVzdC5yZXNwb25zZTtcbiAgICAgIHZhciByZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXF1ZXN0LnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHJlcXVlc3Q6IHJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCdvbmxvYWRlbmQnIGluIHJlcXVlc3QpIHtcbiAgICAgIC8vIFVzZSBvbmxvYWRlbmQgaWYgYXZhaWxhYmxlXG4gICAgICByZXF1ZXN0Lm9ubG9hZGVuZCA9IG9ubG9hZGVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGlzdGVuIGZvciByZWFkeSBzdGF0ZSB0byBlbXVsYXRlIG9ubG9hZGVuZFxuICAgICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVMb2FkKCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdC5yZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIHJlcXVlc3QgZXJyb3JlZCBvdXQgYW5kIHdlIGRpZG4ndCBnZXQgYSByZXNwb25zZSwgdGhpcyB3aWxsIGJlXG4gICAgICAgIC8vIGhhbmRsZWQgYnkgb25lcnJvciBpbnN0ZWFkXG4gICAgICAgIC8vIFdpdGggb25lIGV4Y2VwdGlvbjogcmVxdWVzdCB0aGF0IHVzaW5nIGZpbGU6IHByb3RvY29sLCBtb3N0IGJyb3dzZXJzXG4gICAgICAgIC8vIHdpbGwgcmV0dXJuIHN0YXR1cyBhcyAwIGV2ZW4gdGhvdWdoIGl0J3MgYSBzdWNjZXNzZnVsIHJlcXVlc3RcbiAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAwICYmICEocmVxdWVzdC5yZXNwb25zZVVSTCAmJiByZXF1ZXN0LnJlc3BvbnNlVVJMLmluZGV4T2YoJ2ZpbGU6JykgPT09IDApKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlYWR5c3RhdGUgaGFuZGxlciBpcyBjYWxsaW5nIGJlZm9yZSBvbmVycm9yIG9yIG9udGltZW91dCBoYW5kbGVycyxcbiAgICAgICAgLy8gc28gd2Ugc2hvdWxkIGNhbGwgb25sb2FkZW5kIG9uIHRoZSBuZXh0ICd0aWNrJ1xuICAgICAgICBzZXRUaW1lb3V0KG9ubG9hZGVuZCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBicm93c2VyIHJlcXVlc3QgY2FuY2VsbGF0aW9uIChhcyBvcHBvc2VkIHRvIGEgbWFudWFsIGNhbmNlbGxhdGlvbilcbiAgICByZXF1ZXN0Lm9uYWJvcnQgPSBmdW5jdGlvbiBoYW5kbGVBYm9ydCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignUmVxdWVzdCBhYm9ydGVkJywgY29uZmlnLCAnRUNPTk5BQk9SVEVEJywgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xuICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkge1xuICAgICAgLy8gUmVhbCBlcnJvcnMgYXJlIGhpZGRlbiBmcm9tIHVzIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBvbmVycm9yIHNob3VsZCBvbmx5IGZpcmUgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignTmV0d29yayBFcnJvcicsIGNvbmZpZywgbnVsbCwgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICByZXF1ZXN0Lm9udGltZW91dCA9IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKSB7XG4gICAgICB2YXIgdGltZW91dEVycm9yTWVzc2FnZSA9ICd0aW1lb3V0IG9mICcgKyBjb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCc7XG4gICAgICBpZiAoY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKFxuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGNvbmZpZy50cmFuc2l0aW9uYWwgJiYgY29uZmlnLnRyYW5zaXRpb25hbC5jbGFyaWZ5VGltZW91dEVycm9yID8gJ0VUSU1FRE9VVCcgOiAnRUNPTk5BQk9SVEVEJyxcbiAgICAgICAgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgLy8gVGhpcyBpcyBvbmx5IGRvbmUgaWYgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gICAgLy8gU3BlY2lmaWNhbGx5IG5vdCBpZiB3ZSdyZSBpbiBhIHdlYiB3b3JrZXIsIG9yIHJlYWN0LW5hdGl2ZS5cbiAgICBpZiAodXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSkge1xuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICB2YXIgeHNyZlZhbHVlID0gKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMgfHwgaXNVUkxTYW1lT3JpZ2luKGZ1bGxQYXRoKSkgJiYgY29uZmlnLnhzcmZDb29raWVOYW1lID9cbiAgICAgICAgY29va2llcy5yZWFkKGNvbmZpZy54c3JmQ29va2llTmFtZSkgOlxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh4c3JmVmFsdWUpIHtcbiAgICAgICAgcmVxdWVzdEhlYWRlcnNbY29uZmlnLnhzcmZIZWFkZXJOYW1lXSA9IHhzcmZWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycywgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlcXVlc3REYXRhID09PSAndW5kZWZpbmVkJyAmJiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRlbnQtdHlwZScpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgQ29udGVudC1UeXBlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzW2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBoZWFkZXIgdG8gdGhlIHJlcXVlc3RcbiAgICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aENyZWRlbnRpYWxzIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcud2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSAhIWNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlc3BvbnNlVHlwZSB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmIChyZXNwb25zZVR5cGUgJiYgcmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJvZ3Jlc3MgaWYgbmVlZGVkXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25Eb3dubG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgLy8gTm90IGFsbCBicm93c2VycyBzdXBwb3J0IHVwbG9hZCBldmVudHNcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nICYmIHJlcXVlc3QudXBsb2FkKSB7XG4gICAgICByZXF1ZXN0LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgICAvLyBIYW5kbGUgY2FuY2VsbGF0aW9uXG4gICAgICBjb25maWcuY2FuY2VsVG9rZW4ucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uQ2FuY2VsZWQoY2FuY2VsKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcXVlc3QuYWJvcnQoKTtcbiAgICAgICAgcmVqZWN0KGNhbmNlbCk7XG4gICAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3REYXRhKSB7XG4gICAgICByZXF1ZXN0RGF0YSA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gU2VuZCB0aGUgcmVxdWVzdFxuICAgIHJlcXVlc3Quc2VuZChyZXF1ZXN0RGF0YSk7XG4gIH0pO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/adapters/xhr.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/axios.js":
/*!*****************************************!*\
!*** ./node_modules/axios/lib/axios.js ***!
\*****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/axios/lib/utils.js\");\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/axios/lib/helpers/bind.js\");\nvar Axios = __webpack_require__(/*! ./core/Axios */ \"./node_modules/axios/lib/core/Axios.js\");\nvar mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ \"./node_modules/axios/lib/core/mergeConfig.js\");\nvar defaults = __webpack_require__(/*! ./defaults */ \"./node_modules/axios/lib/defaults.js\");\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 = __webpack_require__(/*! ./cancel/Cancel */ \"./node_modules/axios/lib/cancel/Cancel.js\");\naxios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ \"./node_modules/axios/lib/cancel/CancelToken.js\");\naxios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ \"./node_modules/axios/lib/cancel/isCancel.js\");\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = __webpack_require__(/*! ./helpers/spread */ \"./node_modules/axios/lib/helpers/spread.js\");\n\n// Expose isAxiosError\naxios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ \"./node_modules/axios/lib/helpers/isAxiosError.js\");\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports[\"default\"] = axios;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2F4aW9zLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxrREFBUztBQUM3QixXQUFXLG1CQUFPLENBQUMsZ0VBQWdCO0FBQ25DLFlBQVksbUJBQU8sQ0FBQyw0REFBYztBQUNsQyxrQkFBa0IsbUJBQU8sQ0FBQyx3RUFBb0I7QUFDOUMsZUFBZSxtQkFBTyxDQUFDLHdEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxrRUFBaUI7QUFDeEMsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXNCO0FBQ2xELGlCQUFpQixtQkFBTyxDQUFDLHNFQUFtQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsb0VBQWtCOztBQUV6QztBQUNBLHFCQUFxQixtQkFBTyxDQUFDLGdGQUF3Qjs7QUFFckQ7O0FBRUE7QUFDQSx5QkFBc0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2F4aW9zLmpzP2ZhZDYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG52YXIgQXhpb3MgPSByZXF1aXJlKCcuL2NvcmUvQXhpb3MnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vY29yZS9tZXJnZUNvbmZpZycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICB2YXIgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcbiAgdmFyIGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQpO1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG52YXIgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyk7XG5cbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxuYXhpb3MuQXhpb3MgPSBBeGlvcztcblxuLy8gRmFjdG9yeSBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlc1xuYXhpb3MuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XG4gIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhheGlvcy5kZWZhdWx0cywgaW5zdGFuY2VDb25maWcpKTtcbn07XG5cbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxuYXhpb3MuQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsJyk7XG5heGlvcy5DYW5jZWxUb2tlbiA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbFRva2VuJyk7XG5heGlvcy5pc0NhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL2lzQ2FuY2VsJyk7XG5cbi8vIEV4cG9zZSBhbGwvc3ByZWFkXG5heGlvcy5hbGwgPSBmdW5jdGlvbiBhbGwocHJvbWlzZXMpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn07XG5heGlvcy5zcHJlYWQgPSByZXF1aXJlKCcuL2hlbHBlcnMvc3ByZWFkJyk7XG5cbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcbmF4aW9zLmlzQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4vaGVscGVycy9pc0F4aW9zRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBheGlvcztcblxuLy8gQWxsb3cgdXNlIG9mIGRlZmF1bHQgaW1wb3J0IHN5bnRheCBpbiBUeXBlU2NyaXB0XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gYXhpb3M7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/axios.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/cancel/Cancel.js":
/*!*************************************************!*\
!*** ./node_modules/axios/lib/cancel/Cancel.js ***!
\*************************************************/
/***/ ((module) => {
"use strict";
eval("\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWwuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsLmpzP2QyYTIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEEgYENhbmNlbGAgaXMgYW4gb2JqZWN0IHRoYXQgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGNhbmNlbGVkLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlIFRoZSBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBDYW5jZWwobWVzc2FnZSkge1xuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xufVxuXG5DYW5jZWwucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiAnQ2FuY2VsJyArICh0aGlzLm1lc3NhZ2UgPyAnOiAnICsgdGhpcy5tZXNzYWdlIDogJycpO1xufTtcblxuQ2FuY2VsLnByb3RvdHlwZS5fX0NBTkNFTF9fID0gdHJ1ZTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/Cancel.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/cancel/CancelToken.js":
/*!******************************************************!*\
!*** ./node_modules/axios/lib/cancel/CancelToken.js ***!
\******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar Cancel = __webpack_require__(/*! ./Cancel */ \"./node_modules/axios/lib/cancel/Cancel.js\");\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxUb2tlbi5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixhQUFhLG1CQUFPLENBQUMsMkRBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzPzcyYzgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi9DYW5jZWwnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xuICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIHJlc29sdmVQcm9taXNlO1xuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAqL1xuQ2FuY2VsVG9rZW4uc291cmNlID0gZnVuY3Rpb24gc291cmNlKCkge1xuICB2YXIgY2FuY2VsO1xuICB2YXIgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xuICAgIGNhbmNlbCA9IGM7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRva2VuOiB0b2tlbixcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxUb2tlbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/CancelToken.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/cancel/isCancel.js":
/*!***************************************************!*\
!*** ./node_modules/axios/lib/cancel/isCancel.js ***!
\***************************************************/
/***/ ((module) => {
"use strict";
eval("\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcz9jMTdhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0NhbmNlbCh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX19DQU5DRUxfXyk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/isCancel.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/core/Axios.js":
/*!**********************************************!*\
!*** ./node_modules/axios/lib/core/Axios.js ***!
\**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar buildURL = __webpack_require__(/*! ../helpers/buildURL */ \"./node_modules/axios/lib/helpers/buildURL.js\");\nvar InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ \"./node_modules/axios/lib/core/InterceptorManager.js\");\nvar dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ \"./node_modules/axios/lib/core/dispatchRequest.js\");\nvar mergeConfig = __webpack_require__(/*! ./mergeConfig */ \"./node_modules/axios/lib/core/mergeConfig.js\");\nvar validator = __webpack_require__(/*! ../helpers/validator */ \"./node_modules/axios/lib/helpers/validator.js\");\n\nvar validators = validator.validators;\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\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.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(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\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(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsWUFBWSxtQkFBTyxDQUFDLHFEQUFZO0FBQ2hDLGVBQWUsbUJBQU8sQ0FBQyx5RUFBcUI7QUFDNUMseUJBQXlCLG1CQUFPLENBQUMsaUZBQXNCO0FBQ3ZELHNCQUFzQixtQkFBTyxDQUFDLDJFQUFtQjtBQUNqRCxrQkFBa0IsbUJBQU8sQ0FBQyxtRUFBZTtBQUN6QyxnQkFBZ0IsbUJBQU8sQ0FBQywyRUFBc0I7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLEtBQUs7QUFDTDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUM7O0FBRUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanM/MjlmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL21lcmdlQ29uZmlnJyk7XG52YXIgdmFsaWRhdG9yID0gcmVxdWlyZSgnLi4vaGVscGVycy92YWxpZGF0b3InKTtcblxudmFyIHZhbGlkYXRvcnMgPSB2YWxpZGF0b3IudmFsaWRhdG9ycztcbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIEF4aW9zKGluc3RhbmNlQ29uZmlnKSB7XG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAqL1xuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcgPSBhcmd1bWVudHNbMV0gfHwge307XG4gICAgY29uZmlnLnVybCA9IGFyZ3VtZW50c1swXTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gIH1cblxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gIC8vIFNldCBjb25maWcubWV0aG9kXG4gIGlmIChjb25maWcubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IGNvbmZpZy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRzLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSB0aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZy5tZXRob2QgPSAnZ2V0JztcbiAgfVxuXG4gIHZhciB0cmFuc2l0aW9uYWwgPSBjb25maWcudHJhbnNpdGlvbmFsO1xuXG4gIGlmICh0cmFuc2l0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHRyYW5zaXRpb25hbCwge1xuICAgICAgc2lsZW50SlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiwgJzEuMC4wJyksXG4gICAgICBmb3JjZWRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuLCAnMS4wLjAnKSxcbiAgICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiwgJzEuMC4wJylcbiAgICB9LCBmYWxzZSk7XG4gIH1cblxuICAvLyBmaWx0ZXIgb3V0IHNraXBwZWQgaW50ZXJjZXB0b3JzXG4gIHZhciByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICB2YXIgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gdHJ1ZTtcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uIHVuc2hpZnRSZXF1ZXN0SW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3Iuc3luY2hyb25vdXM7XG5cbiAgICByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB2YXIgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluID0gW107XG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24gcHVzaFJlc3BvbnNlSW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHZhciBwcm9taXNlO1xuXG4gIGlmICghc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzKSB7XG4gICAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcblxuICAgIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGNoYWluLCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbik7XG4gICAgY2hhaW4gPSBjaGFpbi5jb25jYXQocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluKTtcblxuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cblxuICB2YXIgbmV3Q29uZmlnID0gY29uZmlnO1xuICB3aGlsZSAocmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgdmFyIG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcbiAgICB2YXIgb25SZWplY3RlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCk7XG4gICAgdHJ5IHtcbiAgICAgIG5ld0NvbmZpZyA9IG9uRnVsZmlsbGVkKG5ld0NvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG9uUmVqZWN0ZWQoZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0KG5ld0NvbmZpZyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxuXG4gIHdoaWxlIChyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKSwgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5BeGlvcy5wcm90b3R5cGUuZ2V0VXJpID0gZnVuY3Rpb24gZ2V0VXJpKGNvbmZpZykge1xuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICByZXR1cm4gYnVpbGRVUkwoY29uZmlnLnVybCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cXD8vLCAnJyk7XG59O1xuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/Axios.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/core/InterceptorManager.js":
/*!***********************************************************!*\
!*** ./node_modules/axios/lib/core/InterceptorManager.js ***!
\***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\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, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvSW50ZXJjZXB0b3JNYW5hZ2VyLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxxREFBWTs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckI7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvSW50ZXJjZXB0b3JNYW5hZ2VyLmpzP2M3OTIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIEludGVyY2VwdG9yTWFuYWdlcigpIHtcbiAgdGhpcy5oYW5kbGVycyA9IFtdO1xufVxuXG4vKipcbiAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxuICpcbiAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoZnVsZmlsbGVkLCByZWplY3RlZCwgb3B0aW9ucykge1xuICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgIGZ1bGZpbGxlZDogZnVsZmlsbGVkLFxuICAgIHJlamVjdGVkOiByZWplY3RlZCxcbiAgICBzeW5jaHJvbm91czogb3B0aW9ucyA/IG9wdGlvbnMuc3luY2hyb25vdXMgOiBmYWxzZSxcbiAgICBydW5XaGVuOiBvcHRpb25zID8gb3B0aW9ucy5ydW5XaGVuIDogbnVsbFxuICB9KTtcbiAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmVqZWN0ID0gZnVuY3Rpb24gZWplY3QoaWQpIHtcbiAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICB9XG59O1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXG4gKlxuICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcbiAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgIGZuKGgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEludGVyY2VwdG9yTWFuYWdlcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/InterceptorManager.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/core/buildFullPath.js":
/*!******************************************************!*\
!*** ./node_modules/axios/lib/core/buildFullPath.js ***!
\******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ \"./node_modules/axios/lib/helpers/isAbsoluteURL.js\");\nvar combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ \"./node_modules/axios/lib/helpers/combineURLs.js\");\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixvQkFBb0IsbUJBQU8sQ0FBQyxtRkFBMEI7QUFDdEQsa0JBQWtCLG1CQUFPLENBQUMsK0VBQXdCOztBQUVsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcz9mMDJkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGlzQWJzb2x1dGVVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwnKTtcbnZhciBjb21iaW5lVVJMcyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvY29tYmluZVVSTHMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIGJhc2VVUkwgd2l0aCB0aGUgcmVxdWVzdGVkVVJMLFxuICogb25seSB3aGVuIHRoZSByZXF1ZXN0ZWRVUkwgaXMgbm90IGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLlxuICogSWYgdGhlIHJlcXVlc3RVUkwgaXMgYWJzb2x1dGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWVzdGVkVVJMIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0ZWRVUkwgQWJzb2x1dGUgb3IgcmVsYXRpdmUgVVJMIHRvIGNvbWJpbmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBmdWxsIHBhdGhcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCkge1xuICBpZiAoYmFzZVVSTCAmJiAhaXNBYnNvbHV0ZVVSTChyZXF1ZXN0ZWRVUkwpKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3RlZFVSTDtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/buildFullPath.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/core/createError.js":
/*!****************************************************!*\
!*** ./node_modules/axios/lib/core/createError.js ***!
\****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar enhanceError = __webpack_require__(/*! ./enhanceError */ \"./node_modules/axios/lib/core/enhanceError.js\");\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsbUJBQW1CLG1CQUFPLENBQUMscUVBQWdCOztBQUUzQztBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2NyZWF0ZUVycm9yLmpzPzc3MGMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW5oYW5jZUVycm9yID0gcmVxdWlyZSgnLi9lbmhhbmNlRXJyb3InKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UsIGNvbmZpZywgZXJyb3IgY29kZSwgcmVxdWVzdCBhbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGNyZWF0ZWQgZXJyb3IuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRXJyb3IobWVzc2FnZSwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIHJldHVybiBlbmhhbmNlRXJyb3IoZXJyb3IsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/createError.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/core/dispatchRequest.js":
/*!********************************************************!*\
!*** ./node_modules/axios/lib/core/dispatchRequest.js ***!
\********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar transformData = __webpack_require__(/*! ./transformData */ \"./node_modules/axios/lib/core/transformData.js\");\nvar isCancel = __webpack_require__(/*! ../cancel/isCancel */ \"./node_modules/axios/lib/cancel/isCancel.js\");\nvar defaults = __webpack_require__(/*! ../defaults */ \"./node_modules/axios/lib/defaults.js\");\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 // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\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.call(\n config,\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.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxxREFBWTtBQUNoQyxvQkFBb0IsbUJBQU8sQ0FBQyx1RUFBaUI7QUFDN0MsZUFBZSxtQkFBTyxDQUFDLHVFQUFvQjtBQUMzQyxlQUFlLG1CQUFPLENBQUMseURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLHVDQUF1QztBQUN2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzPzRkYzkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgdHJhbnNmb3JtRGF0YSA9IHJlcXVpcmUoJy4vdHJhbnNmb3JtRGF0YScpO1xudmFyIGlzQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL2lzQ2FuY2VsJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYWRhcHRlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRpc3BhdGNoUmVxdWVzdChjb25maWcpIHtcbiAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gIC8vIEVuc3VyZSBoZWFkZXJzIGV4aXN0XG4gIGNvbmZpZy5oZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgfHwge307XG5cbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxuICBjb25maWcuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICBjb25maWcsXG4gICAgY29uZmlnLmRhdGEsXG4gICAgY29uZmlnLmhlYWRlcnMsXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcbiAgKTtcblxuICAvLyBGbGF0dGVuIGhlYWRlcnNcbiAgY29uZmlnLmhlYWRlcnMgPSB1dGlscy5tZXJnZShcbiAgICBjb25maWcuaGVhZGVycy5jb21tb24gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnNbY29uZmlnLm1ldGhvZF0gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnNcbiAgKTtcblxuICB1dGlscy5mb3JFYWNoKFxuICAgIFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJywgJ2NvbW1vbiddLFxuICAgIGZ1bmN0aW9uIGNsZWFuSGVhZGVyQ29uZmlnKG1ldGhvZCkge1xuICAgICAgZGVsZXRlIGNvbmZpZy5oZWFkZXJzW21ldGhvZF07XG4gICAgfVxuICApO1xuXG4gIHZhciBhZGFwdGVyID0gY29uZmlnLmFkYXB0ZXIgfHwgZGVmYXVsdHMuYWRhcHRlcjtcblxuICByZXR1cm4gYWRhcHRlcihjb25maWcpLnRoZW4oZnVuY3Rpb24gb25BZGFwdGVyUmVzb2x1dGlvbihyZXNwb25zZSkge1xuICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgcmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgIGNvbmZpZyxcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXG4gICAgKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfSwgZnVuY3Rpb24gb25BZGFwdGVyUmVqZWN0aW9uKHJlYXNvbikge1xuICAgIGlmICghaXNDYW5jZWwocmVhc29uKSkge1xuICAgICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgICAgaWYgKHJlYXNvbiAmJiByZWFzb24ucmVzcG9uc2UpIHtcbiAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWFzb24pO1xuICB9KTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/dispatchRequest.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/core/enhanceError.js":
/*!*****************************************************!*\
!*** ./node_modules/axios/lib/core/enhanceError.js ***!
\*****************************************************/
/***/ ((module) => {
"use strict";
eval("\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 toJSON() {\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZW5oYW5jZUVycm9yLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9lbmhhbmNlRXJyb3IuanM/MGRmMyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXBkYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWcsIGVycm9yIGNvZGUsIGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvciBUaGUgZXJyb3IgdG8gdXBkYXRlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlbmhhbmNlRXJyb3IoZXJyb3IsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgZXJyb3IuY29uZmlnID0gY29uZmlnO1xuICBpZiAoY29kZSkge1xuICAgIGVycm9yLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgZXJyb3IucmVxdWVzdCA9IHJlcXVlc3Q7XG4gIGVycm9yLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gIGVycm9yLmlzQXhpb3NFcnJvciA9IHRydWU7XG5cbiAgZXJyb3IudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBTdGFuZGFyZFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgLy8gTWljcm9zb2Z0XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIG51bWJlcjogdGhpcy5udW1iZXIsXG4gICAgICAvLyBNb3ppbGxhXG4gICAgICBmaWxlTmFtZTogdGhpcy5maWxlTmFtZSxcbiAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcbiAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5jb2x1bW5OdW1iZXIsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIC8vIEF4aW9zXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgY29kZTogdGhpcy5jb2RlXG4gICAgfTtcbiAgfTtcbiAgcmV0dXJuIGVycm9yO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/enhanceError.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/core/mergeConfig.js":
/*!****************************************************!*\
!*** ./node_modules/axios/lib/core/mergeConfig.js ***!
\****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/axios/lib/utils.js\");\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 var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvbWVyZ2VDb25maWcuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsWUFBWSxtQkFBTyxDQUFDLG1EQUFVOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLDJCQUEyQjtBQUMzQixNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzP2JkMTMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtZXJnZUNvbmZpZyhjb25maWcxLCBjb25maWcyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcbiAgdmFyIGNvbmZpZyA9IHt9O1xuXG4gIHZhciB2YWx1ZUZyb21Db25maWcyS2V5cyA9IFsndXJsJywgJ21ldGhvZCcsICdkYXRhJ107XG4gIHZhciBtZXJnZURlZXBQcm9wZXJ0aWVzS2V5cyA9IFsnaGVhZGVycycsICdhdXRoJywgJ3Byb3h5JywgJ3BhcmFtcyddO1xuICB2YXIgZGVmYXVsdFRvQ29uZmlnMktleXMgPSBbXG4gICAgJ2Jhc2VVUkwnLCAndHJhbnNmb3JtUmVxdWVzdCcsICd0cmFuc2Zvcm1SZXNwb25zZScsICdwYXJhbXNTZXJpYWxpemVyJyxcbiAgICAndGltZW91dCcsICd0aW1lb3V0TWVzc2FnZScsICd3aXRoQ3JlZGVudGlhbHMnLCAnYWRhcHRlcicsICdyZXNwb25zZVR5cGUnLCAneHNyZkNvb2tpZU5hbWUnLFxuICAgICd4c3JmSGVhZGVyTmFtZScsICdvblVwbG9hZFByb2dyZXNzJywgJ29uRG93bmxvYWRQcm9ncmVzcycsICdkZWNvbXByZXNzJyxcbiAgICAnbWF4Q29udGVudExlbmd0aCcsICdtYXhCb2R5TGVuZ3RoJywgJ21heFJlZGlyZWN0cycsICd0cmFuc3BvcnQnLCAnaHR0cEFnZW50JyxcbiAgICAnaHR0cHNBZ2VudCcsICdjYW5jZWxUb2tlbicsICdzb2NrZXRQYXRoJywgJ3Jlc3BvbnNlRW5jb2RpbmcnXG4gIF07XG4gIHZhciBkaXJlY3RNZXJnZUtleXMgPSBbJ3ZhbGlkYXRlU3RhdHVzJ107XG5cbiAgZnVuY3Rpb24gZ2V0TWVyZ2VkVmFsdWUodGFyZ2V0LCBzb3VyY2UpIHtcbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHRhcmdldCwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHt9LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gc291cmNlLnNsaWNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICB1dGlscy5mb3JFYWNoKHZhbHVlRnJvbUNvbmZpZzJLZXlzLCBmdW5jdGlvbiB2YWx1ZUZyb21Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH1cbiAgfSk7XG5cbiAgdXRpbHMuZm9yRWFjaChtZXJnZURlZXBQcm9wZXJ0aWVzS2V5cywgbWVyZ2VEZWVwUHJvcGVydGllcyk7XG5cbiAgdXRpbHMuZm9yRWFjaChkZWZhdWx0VG9Db25maWcyS2V5cywgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH0pO1xuXG4gIHV0aWxzLmZvckVhY2goZGlyZWN0TWVyZ2VLZXlzLCBmdW5jdGlvbiBtZXJnZShwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmIChwcm9wIGluIGNvbmZpZzEpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9KTtcblxuICB2YXIgYXhpb3NLZXlzID0gdmFsdWVGcm9tQ29uZmlnMktleXNcbiAgICAuY29uY2F0KG1lcmdlRGVlcFByb3BlcnRpZXNLZXlzKVxuICAgIC5jb25jYXQoZGVmYXVsdFRvQ29uZmlnMktleXMpXG4gICAgLmNvbmNhdChkaXJlY3RNZXJnZUtleXMpO1xuXG4gIHZhciBvdGhlcktleXMgPSBPYmplY3RcbiAgICAua2V5cyhjb25maWcxKVxuICAgIC5jb25jYXQoT2JqZWN0LmtleXMoY29uZmlnMikpXG4gICAgLmZpbHRlcihmdW5jdGlvbiBmaWx0ZXJBeGlvc0tleXMoa2V5KSB7XG4gICAgICByZXR1cm4gYXhpb3NLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTE7XG4gICAgfSk7XG5cbiAgdXRpbHMuZm9yRWFjaChvdGhlcktleXMsIG1lcmdlRGVlcFByb3BlcnRpZXMpO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/mergeConfig.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/core/settle.js":
/*!***********************************************!*\
!*** ./node_modules/axios/lib/core/settle.js ***!
\***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar createError = __webpack_require__(/*! ./createError */ \"./node_modules/axios/lib/core/createError.js\");\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 (!response.status || !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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQixtQkFBTyxDQUFDLG1FQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9zZXR0bGUuanM/ODc2OCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4vY3JlYXRlRXJyb3InKTtcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSkge1xuICB2YXIgdmFsaWRhdGVTdGF0dXMgPSByZXNwb25zZS5jb25maWcudmFsaWRhdGVTdGF0dXM7XG4gIGlmICghcmVzcG9uc2Uuc3RhdHVzIHx8ICF2YWxpZGF0ZVN0YXR1cyB8fCB2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgcmVqZWN0KGNyZWF0ZUVycm9yKFxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcbiAgICAgIG51bGwsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/settle.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/core/transformData.js":
/*!******************************************************!*\
!*** ./node_modules/axios/lib/core/transformData.js ***!
\******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar defaults = __webpack_require__(/*! ./../defaults */ \"./node_modules/axios/lib/defaults.js\");\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 var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvdHJhbnNmb3JtRGF0YS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMscURBQVk7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLDJEQUFlOztBQUV0QztBQUNBO0FBQ0E7QUFDQSxXQUFXLGVBQWU7QUFDMUIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsZ0JBQWdCO0FBQzNCLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvdHJhbnNmb3JtRGF0YS5qcz83NjYyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi8uLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2VcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IGRhdGEgVGhlIGRhdGEgdG8gYmUgdHJhbnNmb3JtZWRcbiAqIEBwYXJhbSB7QXJyYXl9IGhlYWRlcnMgVGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShkYXRhLCBoZWFkZXJzLCBmbnMpIHtcbiAgdmFyIGNvbnRleHQgPSB0aGlzIHx8IGRlZmF1bHRzO1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgdXRpbHMuZm9yRWFjaChmbnMsIGZ1bmN0aW9uIHRyYW5zZm9ybShmbikge1xuICAgIGRhdGEgPSBmbi5jYWxsKGNvbnRleHQsIGRhdGEsIGhlYWRlcnMpO1xuICB9KTtcblxuICByZXR1cm4gZGF0YTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/transformData.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/defaults.js":
/*!********************************************!*\
!*** ./node_modules/axios/lib/defaults.js ***!
\********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("/* provided dependency */ var process = __webpack_require__(/*! process/browser.js */ \"./node_modules/process/browser.js\");\n\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/axios/lib/utils.js\");\nvar normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ \"./node_modules/axios/lib/helpers/normalizeHeaderName.js\");\nvar enhanceError = __webpack_require__(/*! ./core/enhanceError */ \"./node_modules/axios/lib/core/enhanceError.js\");\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 if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = __webpack_require__(/*! ./adapters/xhr */ \"./node_modules/axios/lib/adapters/xhr.js\");\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = __webpack_require__(/*! ./adapters/http */ \"./node_modules/axios/lib/adapters/xhr.js\");\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\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) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\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 maxBodyLength: -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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzLmpzIiwibWFwcGluZ3MiOiI7QUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMsa0RBQVM7QUFDN0IsMEJBQTBCLG1CQUFPLENBQUMsOEZBQStCO0FBQ2pFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUFxQjs7QUFFaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG1CQUFPLENBQUMsZ0VBQWdCO0FBQ3RDLElBQUksZ0JBQWdCLE9BQU8sbURBQW1ELE9BQU87QUFDckY7QUFDQSxjQUFjLG1CQUFPLENBQUMsaUVBQWlCO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy5qcz9lMjIxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIG5vcm1hbGl6ZUhlYWRlck5hbWUgPSByZXF1aXJlKCcuL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZScpO1xudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4vY29yZS9lbmhhbmNlRXJyb3InKTtcblxudmFyIERFRkFVTFRfQ09OVEVOVF9UWVBFID0ge1xuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbmZ1bmN0aW9uIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCB2YWx1ZSkge1xuICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnMpICYmIHV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSkge1xuICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdEFkYXB0ZXIoKSB7XG4gIHZhciBhZGFwdGVyO1xuICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIEZvciBicm93c2VycyB1c2UgWEhSIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy94aHInKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpID09PSAnW29iamVjdCBwcm9jZXNzXScpIHtcbiAgICAvLyBGb3Igbm9kZSB1c2UgSFRUUCBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4vYWRhcHRlcnMvaHR0cCcpO1xuICB9XG4gIHJldHVybiBhZGFwdGVyO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlTYWZlbHkocmF3VmFsdWUsIHBhcnNlciwgZW5jb2Rlcikge1xuICBpZiAodXRpbHMuaXNTdHJpbmcocmF3VmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIChwYXJzZXIgfHwgSlNPTi5wYXJzZSkocmF3VmFsdWUpO1xuICAgICAgcmV0dXJuIHV0aWxzLnRyaW0ocmF3VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm5hbWUgIT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGVuY29kZXIgfHwgSlNPTi5zdHJpbmdpZnkpKHJhd1ZhbHVlKTtcbn1cblxudmFyIGRlZmF1bHRzID0ge1xuXG4gIHRyYW5zaXRpb25hbDoge1xuICAgIHNpbGVudEpTT05QYXJzaW5nOiB0cnVlLFxuICAgIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxuICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IGZhbHNlXG4gIH0sXG5cbiAgYWRhcHRlcjogZ2V0RGVmYXVsdEFkYXB0ZXIoKSxcblxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQWNjZXB0Jyk7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQ29udGVudC1UeXBlJyk7XG5cbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnKTtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc09iamVjdChkYXRhKSB8fCAoaGVhZGVycyAmJiBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICByZXR1cm4gc3RyaW5naWZ5U2FmZWx5KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgdmFyIHRyYW5zaXRpb25hbCA9IHRoaXMudHJhbnNpdGlvbmFsO1xuICAgIHZhciBzaWxlbnRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuc2lsZW50SlNPTlBhcnNpbmc7XG4gICAgdmFyIGZvcmNlZEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5mb3JjZWRKU09OUGFyc2luZztcbiAgICB2YXIgc3RyaWN0SlNPTlBhcnNpbmcgPSAhc2lsZW50SlNPTlBhcnNpbmcgJiYgdGhpcy5yZXNwb25zZVR5cGUgPT09ICdqc29uJztcblxuICAgIGlmIChzdHJpY3RKU09OUGFyc2luZyB8fCAoZm9yY2VkSlNPTlBhcnNpbmcgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgZGF0YS5sZW5ndGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHN0cmljdEpTT05QYXJzaW5nKSB7XG4gICAgICAgICAgaWYgKGUubmFtZSA9PT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICAgICAgdGhyb3cgZW5oYW5jZUVycm9yKGUsIHRoaXMsICdFX0pTT05fUEFSU0UnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICAvKipcbiAgICogQSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBhYm9ydCBhIHJlcXVlc3QuIElmIHNldCB0byAwIChkZWZhdWx0KSBhXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXG4gICAqL1xuICB0aW1lb3V0OiAwLFxuXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXG4gIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJyxcblxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcbiAgbWF4Qm9keUxlbmd0aDogLTEsXG5cbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xuICAgIHJldHVybiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgfVxufTtcblxuZGVmYXVsdHMuaGVhZGVycyA9IHtcbiAgY29tbW9uOiB7XG4gICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonXG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0ge307XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0gdXRpbHMubWVyZ2UoREVGQVVMVF9DT05URU5UX1RZUEUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/defaults.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/bind.js":
/*!************************************************!*\
!*** ./node_modules/axios/lib/helpers/bind.js ***!
\************************************************/
/***/ ((module) => {
"use strict";
eval("\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcz80YmVhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/bind.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/buildURL.js":
/*!****************************************************!*\
!*** ./node_modules/axios/lib/helpers/buildURL.js ***!
\****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nfunction encode(val) {\n return encodeURIComponent(val).\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsWUFBWSxtQkFBTyxDQUFDLHFEQUFZOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanM/YzE3OCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXNTZXJpYWxpemVyKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgIHV0aWxzLmZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiBzZXJpYWxpemUodmFsLCBrZXkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGtleSA9IGtleSArICdbXSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBbdmFsXTtcbiAgICAgIH1cblxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodXRpbHMuaXNEYXRlKHYpKSB7XG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xuICAgICAgICAgIHYgPSBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcnRzLmpvaW4oJyYnKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cblxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/buildURL.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/combineURLs.js":
/*!*******************************************************!*\
!*** ./node_modules/axios/lib/helpers/combineURLs.js ***!
\*******************************************************/
/***/ ((module) => {
"use strict";
eval("\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tYmluZVVSTHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzPzZiYzYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgc3BlY2lmaWVkIFVSTHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVVSTCBUaGUgcmVsYXRpdmUgVVJMXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/combineURLs.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/cookies.js":
/*!***************************************************!*\
!*** ./node_modules/axios/lib/helpers/cookies.js ***!
\***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29va2llcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMscURBQVk7O0FBRWhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwyQ0FBMkM7QUFDM0MsU0FBUzs7QUFFVDtBQUNBLDREQUE0RCx3QkFBd0I7QUFDcEY7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEMsZ0NBQWdDLGNBQWM7QUFDOUM7QUFDQTtBQUNBLEtBQUs7QUFDTCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzPzFkM2YiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgc3VwcG9ydCBkb2N1bWVudC5jb29raWVcbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkge1xuICAgICAgICAgIHZhciBjb29raWUgPSBbXTtcbiAgICAgICAgICBjb29raWUucHVzaChuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNOdW1iZXIoZXhwaXJlcykpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdwYXRoPScgKyBwYXRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcoZG9tYWluKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2RvbWFpbj0nICsgZG9tYWluKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnc2VjdXJlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XG4gICAgICAgICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcbiAgICAgICAgICByZXR1cm4gKG1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzNdKSA6IG51bGwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKG5hbWUpIHtcbiAgICAgICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudiAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKCkge30sXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQoKSB7IHJldHVybiBudWxsOyB9LFxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/cookies.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js":
/*!*********************************************************!*\
!*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***!
\*********************************************************/
/***/ ((module) => {
"use strict";
eval("\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanM/YTIyNyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgVVJMIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0Fic29sdXRlVVJMKHVybCkge1xuICAvLyBBIFVSTCBpcyBjb25zaWRlcmVkIGFic29sdXRlIGlmIGl0IGJlZ2lucyB3aXRoIFwiPHNjaGVtZT46Ly9cIiBvciBcIi8vXCIgKHByb3RvY29sLXJlbGF0aXZlIFVSTCkuXG4gIC8vIFJGQyAzOTg2IGRlZmluZXMgc2NoZW1lIG5hbWUgYXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBmb2xsb3dlZFxuICAvLyBieSBhbnkgY29tYmluYXRpb24gb2YgbGV0dGVycywgZGlnaXRzLCBwbHVzLCBwZXJpb2QsIG9yIGh5cGhlbi5cbiAgcmV0dXJuIC9eKFthLXpdW2EtelxcZFxcK1xcLVxcLl0qOik/XFwvXFwvL2kudGVzdCh1cmwpO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isAbsoluteURL.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/isAxiosError.js":
/*!********************************************************!*\
!*** ./node_modules/axios/lib/helpers/isAxiosError.js ***!
\********************************************************/
/***/ ((module) => {
"use strict";
eval("\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0F4aW9zRXJyb3IuanM/YmQ5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvc1xuICpcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0F4aW9zRXJyb3IocGF5bG9hZCkge1xuICByZXR1cm4gKHR5cGVvZiBwYXlsb2FkID09PSAnb2JqZWN0JykgJiYgKHBheWxvYWQuaXNBeGlvc0Vycm9yID09PSB0cnVlKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isAxiosError.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js":
/*!***********************************************************!*\
!*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***!
\***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxxREFBWTs7QUFFaEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luLmpzPzg3OTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgaGF2ZSBmdWxsIHN1cHBvcnQgb2YgdGhlIEFQSXMgbmVlZGVkIHRvIHRlc3RcbiAgLy8gd2hldGhlciB0aGUgcmVxdWVzdCBVUkwgaXMgb2YgdGhlIHNhbWUgb3JpZ2luIGFzIGN1cnJlbnQgbG9jYXRpb24uXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHZhciBtc2llID0gLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgIHZhciB1cmxQYXJzaW5nTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIHZhciBvcmlnaW5VUkw7XG5cbiAgICAgIC8qKlxuICAgICogUGFyc2UgYSBVUkwgdG8gZGlzY292ZXIgaXQncyBjb21wb25lbnRzXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCBUaGUgVVJMIHRvIGJlIHBhcnNlZFxuICAgICogQHJldHVybnMge09iamVjdH1cbiAgICAqL1xuICAgICAgZnVuY3Rpb24gcmVzb2x2ZVVSTCh1cmwpIHtcbiAgICAgICAgdmFyIGhyZWYgPSB1cmw7XG5cbiAgICAgICAgaWYgKG1zaWUpIHtcbiAgICAgICAgLy8gSUUgbmVlZHMgYXR0cmlidXRlIHNldCB0d2ljZSB0byBub3JtYWxpemUgcHJvcGVydGllc1xuICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuICAgICAgICAgIGhyZWYgPSB1cmxQYXJzaW5nTm9kZS5ocmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG5cbiAgICAgICAgLy8gdXJsUGFyc2luZ05vZGUgcHJvdmlkZXMgdGhlIFVybFV0aWxzIGludGVyZmFjZSAtIGh0dHA6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmx1dGlsc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhyZWY6IHVybFBhcnNpbmdOb2RlLmhyZWYsXG4gICAgICAgICAgcHJvdG9jb2w6IHVybFBhcnNpbmdOb2RlLnByb3RvY29sID8gdXJsUGFyc2luZ05vZGUucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0OiB1cmxQYXJzaW5nTm9kZS5ob3N0LFxuICAgICAgICAgIHNlYXJjaDogdXJsUGFyc2luZ05vZGUuc2VhcmNoID8gdXJsUGFyc2luZ05vZGUuc2VhcmNoLnJlcGxhY2UoL15cXD8vLCAnJykgOiAnJyxcbiAgICAgICAgICBoYXNoOiB1cmxQYXJzaW5nTm9kZS5oYXNoID8gdXJsUGFyc2luZ05vZGUuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6ICcnLFxuICAgICAgICAgIGhvc3RuYW1lOiB1cmxQYXJzaW5nTm9kZS5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiB1cmxQYXJzaW5nTm9kZS5wb3J0LFxuICAgICAgICAgIHBhdGhuYW1lOiAodXJsUGFyc2luZ05vZGUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycpID9cbiAgICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lIDpcbiAgICAgICAgICAgICcvJyArIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIG9yaWdpblVSTCA9IHJlc29sdmVVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuXG4gICAgICAvKipcbiAgICAqIERldGVybWluZSBpZiBhIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBjdXJyZW50IGxvY2F0aW9uXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RVUkwgVGhlIFVSTCB0byB0ZXN0XG4gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgKi9cbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4ocmVxdWVzdFVSTCkge1xuICAgICAgICB2YXIgcGFyc2VkID0gKHV0aWxzLmlzU3RyaW5nKHJlcXVlc3RVUkwpKSA/IHJlc29sdmVVUkwocmVxdWVzdFVSTCkgOiByZXF1ZXN0VVJMO1xuICAgICAgICByZXR1cm4gKHBhcnNlZC5wcm90b2NvbCA9PT0gb3JpZ2luVVJMLnByb3RvY29sICYmXG4gICAgICAgICAgICBwYXJzZWQuaG9zdCA9PT0gb3JpZ2luVVJMLmhvc3QpO1xuICAgICAgfTtcbiAgICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnZzICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isURLSameOrigin.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js":
/*!***************************************************************!*\
!*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***!
\***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/axios/lib/utils.js\");\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMsbURBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lLmpzPzZiMTUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgbm9ybWFsaXplZE5hbWUpIHtcbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiBwcm9jZXNzSGVhZGVyKHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKG5hbWUgIT09IG5vcm1hbGl6ZWROYW1lICYmIG5hbWUudG9VcHBlckNhc2UoKSA9PT0gbm9ybWFsaXplZE5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW25hbWVdO1xuICAgIH1cbiAgfSk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/normalizeHeaderName.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/parseHeaders.js":
/*!********************************************************!*\
!*** ./node_modules/axios/lib/helpers/parseHeaders.js ***!
\********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxxREFBWTs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanM/NTRlOSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuLy8gSGVhZGVycyB3aG9zZSBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkIGJ5IG5vZGVcbi8vIGMuZi4gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9tZXNzYWdlX2hlYWRlcnNcbnZhciBpZ25vcmVEdXBsaWNhdGVPZiA9IFtcbiAgJ2FnZScsICdhdXRob3JpemF0aW9uJywgJ2NvbnRlbnQtbGVuZ3RoJywgJ2NvbnRlbnQtdHlwZScsICdldGFnJyxcbiAgJ2V4cGlyZXMnLCAnZnJvbScsICdob3N0JywgJ2lmLW1vZGlmaWVkLXNpbmNlJywgJ2lmLXVubW9kaWZpZWQtc2luY2UnLFxuICAnbGFzdC1tb2RpZmllZCcsICdsb2NhdGlvbicsICdtYXgtZm9yd2FyZHMnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICdyZWZlcmVyJywgJ3JldHJ5LWFmdGVyJywgJ3VzZXItYWdlbnQnXG5dO1xuXG4vKipcbiAqIFBhcnNlIGhlYWRlcnMgaW50byBhbiBvYmplY3RcbiAqXG4gKiBgYGBcbiAqIERhdGU6IFdlZCwgMjcgQXVnIDIwMTQgMDg6NTg6NDkgR01UXG4gKiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cbiAqIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAqIFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaGVhZGVycyBIZWFkZXJzIG5lZWRpbmcgdG8gYmUgcGFyc2VkXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBIZWFkZXJzIHBhcnNlZCBpbnRvIGFuIG9iamVjdFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlSGVhZGVycyhoZWFkZXJzKSB7XG4gIHZhciBwYXJzZWQgPSB7fTtcbiAgdmFyIGtleTtcbiAgdmFyIHZhbDtcbiAgdmFyIGk7XG5cbiAgaWYgKCFoZWFkZXJzKSB7IHJldHVybiBwYXJzZWQ7IH1cblxuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMuc3BsaXQoJ1xcbicpLCBmdW5jdGlvbiBwYXJzZXIobGluZSkge1xuICAgIGkgPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBrZXkgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKDAsIGkpKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoaSArIDEpKTtcblxuICAgIGlmIChrZXkpIHtcbiAgICAgIGlmIChwYXJzZWRba2V5XSAmJiBpZ25vcmVEdXBsaWNhdGVPZi5pbmRleE9mKGtleSkgPj0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSAocGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSA6IFtdKS5jb25jYXQoW3ZhbF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSBwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldICsgJywgJyArIHZhbCA6IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/parseHeaders.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/spread.js":
/*!**************************************************!*\
!*** ./node_modules/axios/lib/helpers/spread.js ***!
\**************************************************/
/***/ ((module) => {
"use strict";
eval("\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//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwcmVhZC5qcz8yNzI5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/spread.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/helpers/validator.js":
/*!*****************************************************!*\
!*** ./node_modules/axios/lib/helpers/validator.js ***!
\*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar pkg = __webpack_require__(/*! ./../../package.json */ \"./node_modules/axios/package.json\");\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFVBQVUsbUJBQU8sQ0FBQywrREFBc0I7O0FBRXhDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLE9BQU87QUFDekI7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLG1CQUFtQjtBQUM5QixXQUFXLFNBQVM7QUFDcEIsV0FBVyxRQUFRO0FBQ25CLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3ZhbGlkYXRvci5qcz8wMTMyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHBrZyA9IHJlcXVpcmUoJy4vLi4vLi4vcGFja2FnZS5qc29uJyk7XG5cbnZhciB2YWxpZGF0b3JzID0ge307XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5bJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlcicsICdmdW5jdGlvbicsICdzdHJpbmcnLCAnc3ltYm9sJ10uZm9yRWFjaChmdW5jdGlvbih0eXBlLCBpKSB7XG4gIHZhbGlkYXRvcnNbdHlwZV0gPSBmdW5jdGlvbiB2YWxpZGF0b3IodGhpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSB0eXBlIHx8ICdhJyArIChpIDwgMSA/ICduICcgOiAnICcpICsgdHlwZTtcbiAgfTtcbn0pO1xuXG52YXIgZGVwcmVjYXRlZFdhcm5pbmdzID0ge307XG52YXIgY3VycmVudFZlckFyciA9IHBrZy52ZXJzaW9uLnNwbGl0KCcuJyk7XG5cbi8qKlxuICogQ29tcGFyZSBwYWNrYWdlIHZlcnNpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gdmVyc2lvblxuICogQHBhcmFtIHtzdHJpbmc/fSB0aGFuVmVyc2lvblxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzT2xkZXJWZXJzaW9uKHZlcnNpb24sIHRoYW5WZXJzaW9uKSB7XG4gIHZhciBwa2dWZXJzaW9uQXJyID0gdGhhblZlcnNpb24gPyB0aGFuVmVyc2lvbi5zcGxpdCgnLicpIDogY3VycmVudFZlckFycjtcbiAgdmFyIGRlc3RWZXIgPSB2ZXJzaW9uLnNwbGl0KCcuJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgaWYgKHBrZ1ZlcnNpb25BcnJbaV0gPiBkZXN0VmVyW2ldKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHBrZ1ZlcnNpb25BcnJbaV0gPCBkZXN0VmVyW2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBUcmFuc2l0aW9uYWwgb3B0aW9uIHZhbGlkYXRvclxuICogQHBhcmFtIHtmdW5jdGlvbnxib29sZWFuP30gdmFsaWRhdG9yXG4gKiBAcGFyYW0ge3N0cmluZz99IHZlcnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gKi9cbnZhbGlkYXRvcnMudHJhbnNpdGlvbmFsID0gZnVuY3Rpb24gdHJhbnNpdGlvbmFsKHZhbGlkYXRvciwgdmVyc2lvbiwgbWVzc2FnZSkge1xuICB2YXIgaXNEZXByZWNhdGVkID0gdmVyc2lvbiAmJiBpc09sZGVyVmVyc2lvbih2ZXJzaW9uKTtcblxuICBmdW5jdGlvbiBmb3JtYXRNZXNzYWdlKG9wdCwgZGVzYykge1xuICAgIHJldHVybiAnW0F4aW9zIHYnICsgcGtnLnZlcnNpb24gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvcHQsIG9wdHMpIHtcbiAgICBpZiAodmFsaWRhdG9yID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdE1lc3NhZ2Uob3B0LCAnIGhhcyBiZWVuIHJlbW92ZWQgaW4gJyArIHZlcnNpb24pKTtcbiAgICB9XG5cbiAgICBpZiAoaXNEZXByZWNhdGVkICYmICFkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSkge1xuICAgICAgZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0gPSB0cnVlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShcbiAgICAgICAgICBvcHQsXG4gICAgICAgICAgJyBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYnICsgdmVyc2lvbiArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvciA/IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRzKSA6IHRydWU7XG4gIH07XG59O1xuXG4vKipcbiAqIEFzc2VydCBvYmplY3QncyBwcm9wZXJ0aWVzIHR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hXG4gKiBAcGFyYW0ge2Jvb2xlYW4/fSBhbGxvd1Vua25vd25cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRPcHRpb25zKG9wdGlvbnMsIHNjaGVtYSwgYWxsb3dVbmtub3duKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICB2YXIgb3B0ID0ga2V5c1tpXTtcbiAgICB2YXIgdmFsaWRhdG9yID0gc2NoZW1hW29wdF07XG4gICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgdmFyIHZhbHVlID0gb3B0aW9uc1tvcHRdO1xuICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gJyArIG9wdCArICcgbXVzdCBiZSAnICsgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWxsb3dVbmtub3duICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBFcnJvcignVW5rbm93biBvcHRpb24gJyArIG9wdCk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc09sZGVyVmVyc2lvbjogaXNPbGRlclZlcnNpb24sXG4gIGFzc2VydE9wdGlvbnM6IGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnM6IHZhbGlkYXRvcnNcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/validator.js\n");
/***/ }),
/***/ "./node_modules/axios/lib/utils.js":
/*!*****************************************!*\
!*** ./node_modules/axios/lib/utils.js ***!
\*****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/axios/lib/helpers/bind.js\");\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 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 a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\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 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 plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\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.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\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 (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\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\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\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 isPlainObject: isPlainObject,\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 extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTiw0QkFBNEI7QUFDNUIsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSx3Q0FBd0MsT0FBTztBQUMvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzP2M5ZWIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG5cbi8vIHV0aWxzIGlzIGEgbGlicmFyeSBvZiBnZW5lcmljIGhlbHBlciBmdW5jdGlvbnMgbm9uLXNwZWNpZmljIHRvIGF4aW9zXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGb3JtRGF0YVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEZvcm1EYXRhLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGb3JtRGF0YSh2YWwpIHtcbiAgcmV0dXJuICh0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnKSAmJiAodmFsIGluc3RhbmNlb2YgRm9ybURhdGEpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmICh2YWwuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcic7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWwpIHtcbiAgaWYgKHRvU3RyaW5nLmNhbGwodmFsKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbCk7XG4gIHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRGF0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRmlsZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRmlsZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQmxvYih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQmxvYl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJlYW0odmFsKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVVJMU2VhcmNoUGFyYW1zKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zO1xufVxuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gIHJldHVybiBzdHIudHJpbSA/IHN0ci50cmltKCkgOiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudFxuICpcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXG4gKiBCb3RoIGVudmlyb25tZW50cyBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LCBidXQgbm90IGZ1bGx5IHN0YW5kYXJkIGdsb2JhbHMuXG4gKlxuICogd2ViIHdvcmtlcnM6XG4gKiAgdHlwZW9mIHdpbmRvdyAtPiB1bmRlZmluZWRcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXG4gKlxuICogcmVhY3QtbmF0aXZlOlxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcbiAqIG5hdGl2ZXNjcmlwdFxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdOYXRpdmVTY3JpcHQnIG9yICdOUydcbiAqL1xuZnVuY3Rpb24gaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAobmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05hdGl2ZVNjcmlwdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05TJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcbiAgKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0IGludm9raW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGluZGV4LCBhbmQgY29tcGxldGUgYXJyYXkgZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBrZXksIGFuZCBjb21wbGV0ZSBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBjYWxsYmFjayB0byBpbnZva2UgZm9yIGVhY2ggaXRlbVxuICovXG5mdW5jdGlvbiBmb3JFYWNoKG9iaiwgZm4pIHtcbiAgLy8gRG9uJ3QgYm90aGVyIGlmIG5vIHZhbHVlIHByb3ZpZGVkXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgb2JqID0gW29ial07XG4gIH1cblxuICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIGFycmF5IHZhbHVlc1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpbaV0sIGksIG9iaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2tleV0sIGtleSwgb2JqKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIHZhciByZXN1bHQgPSBtZXJnZSh7Zm9vOiAxMjN9LCB7Zm9vOiA0NTZ9KTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxuICogYGBgXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHRba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHt9LCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbC5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3VsdGluZyB2YWx1ZSBvZiBvYmplY3QgYVxuICovXG5mdW5jdGlvbiBleHRlbmQoYSwgYiwgdGhpc0FyZykge1xuICBmb3JFYWNoKGIsIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKHRoaXNBcmcgJiYgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhW2tleV0gPSB2YWw7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGE7XG59XG5cbi8qKlxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cbiAqIEByZXR1cm4ge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5mdW5jdGlvbiBzdHJpcEJPTShjb250ZW50KSB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhOiBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldzogaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzUGxhaW5PYmplY3Q6IGlzUGxhaW5PYmplY3QsXG4gIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlOiBpc0RhdGUsXG4gIGlzRmlsZTogaXNGaWxlLFxuICBpc0Jsb2I6IGlzQmxvYixcbiAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgaXNTdHJlYW06IGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtczogaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzU3RhbmRhcmRCcm93c2VyRW52OiBpc1N0YW5kYXJkQnJvd3NlckVudixcbiAgZm9yRWFjaDogZm9yRWFjaCxcbiAgbWVyZ2U6IG1lcmdlLFxuICBleHRlbmQ6IGV4dGVuZCxcbiAgdHJpbTogdHJpbSxcbiAgc3RyaXBCT006IHN0cmlwQk9NXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/utils.js\n");
/***/ }),
/***/ "./node_modules/babel-helper-vue-jsx-merge-props/index.js":
/*!****************************************************************!*\
!*** ./node_modules/babel-helper-vue-jsx-merge-props/index.js ***!
\****************************************************************/
/***/ ((module) => {
eval("var nestRE = /^(attrs|props|on|nativeOn|class|style|hook)$/\n\nmodule.exports = function mergeJSXProps (objs) {\n return objs.reduce(function (a, b) {\n var aa, bb, key, nestedKey, temp\n for (key in b) {\n aa = a[key]\n bb = b[key]\n if (aa && nestRE.test(key)) {\n // normalize class\n if (key === 'class') {\n if (typeof aa === 'string') {\n temp = aa\n a[key] = aa = {}\n aa[temp] = true\n }\n if (typeof bb === 'string') {\n temp = bb\n b[key] = bb = {}\n bb[temp] = true\n }\n }\n if (key === 'on' || key === 'nativeOn' || key === 'hook') {\n // merge functions\n for (nestedKey in bb) {\n aa[nestedKey] = mergeFn(aa[nestedKey], bb[nestedKey])\n }\n } else if (Array.isArray(aa)) {\n a[key] = aa.concat(bb)\n } else if (Array.isArray(bb)) {\n a[key] = [aa].concat(bb)\n } else {\n for (nestedKey in bb) {\n aa[nestedKey] = bb[nestedKey]\n }\n }\n } else {\n a[key] = b[key]\n }\n }\n return a\n }, {})\n}\n\nfunction mergeFn (a, b) {\n return function () {\n a && a.apply(this, arguments)\n b && b.apply(this, arguments)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtaGVscGVyLXZ1ZS1qc3gtbWVyZ2UtcHJvcHMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtaGVscGVyLXZ1ZS1qc3gtbWVyZ2UtcHJvcHMvaW5kZXguanM/Y2JmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbmVzdFJFID0gL14oYXR0cnN8cHJvcHN8b258bmF0aXZlT258Y2xhc3N8c3R5bGV8aG9vaykkL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1lcmdlSlNYUHJvcHMgKG9ianMpIHtcbiAgcmV0dXJuIG9ianMucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgdmFyIGFhLCBiYiwga2V5LCBuZXN0ZWRLZXksIHRlbXBcbiAgICBmb3IgKGtleSBpbiBiKSB7XG4gICAgICBhYSA9IGFba2V5XVxuICAgICAgYmIgPSBiW2tleV1cbiAgICAgIGlmIChhYSAmJiBuZXN0UkUudGVzdChrZXkpKSB7XG4gICAgICAgIC8vIG5vcm1hbGl6ZSBjbGFzc1xuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBhYSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRlbXAgPSBhYVxuICAgICAgICAgICAgYVtrZXldID0gYWEgPSB7fVxuICAgICAgICAgICAgYWFbdGVtcF0gPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgYmIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0ZW1wID0gYmJcbiAgICAgICAgICAgIGJba2V5XSA9IGJiID0ge31cbiAgICAgICAgICAgIGJiW3RlbXBdID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSAnb24nIHx8IGtleSA9PT0gJ25hdGl2ZU9uJyB8fCBrZXkgPT09ICdob29rJykge1xuICAgICAgICAgIC8vIG1lcmdlIGZ1bmN0aW9uc1xuICAgICAgICAgIGZvciAobmVzdGVkS2V5IGluIGJiKSB7XG4gICAgICAgICAgICBhYVtuZXN0ZWRLZXldID0gbWVyZ2VGbihhYVtuZXN0ZWRLZXldLCBiYltuZXN0ZWRLZXldKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFhKSkge1xuICAgICAgICAgIGFba2V5XSA9IGFhLmNvbmNhdChiYilcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGJiKSkge1xuICAgICAgICAgIGFba2V5XSA9IFthYV0uY29uY2F0KGJiKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAobmVzdGVkS2V5IGluIGJiKSB7XG4gICAgICAgICAgICBhYVtuZXN0ZWRLZXldID0gYmJbbmVzdGVkS2V5XVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYVtrZXldID0gYltrZXldXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhXG4gIH0sIHt9KVxufVxuXG5mdW5jdGlvbiBtZXJnZUZuIChhLCBiKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgYSAmJiBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICBiICYmIGIuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-helper-vue-jsx-merge-props/index.js\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/DashboardComponent.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/DashboardComponent.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _components_admin_widgets_BoxColorWidget_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/admin/widgets/BoxColorWidget.vue */ \"./resources/js/components/admin/widgets/BoxColorWidget.vue\");\n/* harmony import */ var _components_admin_widgets_ChartWidget_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/admin/widgets/ChartWidget.vue */ \"./resources/js/components/admin/widgets/ChartWidget.vue\");\n/* harmony import */ var _components_admin_widgets_HeaderWidget_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/admin/widgets/HeaderWidget.vue */ \"./resources/js/components/admin/widgets/HeaderWidget.vue\");\n/* harmony import */ var _components_admin_widgets_IframeGroupWidget_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/admin/widgets/IframeGroupWidget.vue */ \"./resources/js/components/admin/widgets/IframeGroupWidget.vue\");\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n HeaderWidget: _components_admin_widgets_HeaderWidget_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n BoxColorWidget: _components_admin_widgets_BoxColorWidget_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n ChartWidget: _components_admin_widgets_ChartWidget_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n IframeGroupWidget: _components_admin_widgets_IframeGroupWidget_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n data: function data() {\n return {\n breadcrumbs: [],\n chartLabels: [],\n chartDatasets: [],\n _modules: [],\n search: \"\",\n organizationType: 0,\n organizationList: null,\n count_characterization: 0\n };\n },\n created: function created() {\n this.breadcrumbs = [{\n url: \"/\",\n text: \"Bitácora\"\n }];\n },\n mounted: function mounted() {\n this.loadStats();\n },\n methods: {\n loadStats: function loadStats() {\n var chart2_Canvas = document.getElementById(\"graph2\").getContext(\"2d\");\n var chart2_Data = {\n labels: ['a', 'b', 'c'],\n datasets: [{\n label: \"Información de Prueba\",\n backgroundColor: \"rgba(60,141,188,0.9)\",\n borderColor: \"rgba(60,141,188,0.8)\",\n pointRadius: false,\n pointColor: \"#3b8bba\",\n pointStrokeColor: \"rgba(60,141,188,1)\",\n pointHighlightFill: \"#fff\",\n pointHighlightStroke: \"rgba(60,141,188,1)\",\n data: [1, 2, 1.5]\n }],\n backgroundColor: [\"rgba(255, 99, 132, 0.2)\", \"rgba(54, 162, 235, 0.2)\", \"rgba(255, 206, 86, 0.2)\"],\n borderColor: [\"rgba(255, 99, 132, 1)\", \"rgba(54, 162, 235, 1)\", \"rgba(255, 206, 86, 1)\"],\n borderWidth: 1\n };\n var chart2_Options = {\n maintainAspectRatio: false,\n responsive: true,\n legend: {\n display: true\n },\n scales: {\n xAxes: [{\n gridLines: {\n display: false\n }\n }],\n yAxes: [{\n gridLines: {\n display: false\n }\n }]\n }\n };\n new Chart(chart2_Canvas, {\n type: \"bar\",\n data: chart2_Data,\n options: chart2_Options\n });\n var chart1_Canvas = document.getElementById(\"graph1\").getContext(\"2d\");\n var chart1_Data = {\n labels: ['x', 'y', 'z'],\n datasets: [{\n label: \"Información de Prueba 2\",\n backgroundColor: \"rgba(60,141,188,0.9)\",\n borderColor: \"rgba(60,141,188,0.8)\",\n pointRadius: false,\n pointColor: \"#3b8bba\",\n pointStrokeColor: \"rgba(60,141,188,1)\",\n pointHighlightFill: \"#fff\",\n pointHighlightStroke: \"rgba(60,141,188,1)\",\n data: [4, 2, 3]\n }],\n backgroundColor: [\"rgba(255, 99, 132, 0.2)\", \"rgba(54, 162, 235, 0.2)\", \"rgba(255, 206, 86, 0.2)\"],\n borderColor: [\"rgba(255, 99, 132, 1)\", \"rgba(54, 162, 235, 1)\", \"rgba(255, 206, 86, 1)\"],\n borderWidth: 1\n };\n var chart1_Options = {\n maintainAspectRatio: false,\n responsive: true,\n legend: {\n display: true\n },\n scales: {\n xAxes: [{\n gridLines: {\n display: false\n }\n }],\n yAxes: [{\n gridLines: {\n display: false\n }\n }]\n }\n };\n new Chart(chart1_Canvas, {\n type: \"bar\",\n data: chart1_Data,\n options: chart1_Options\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvRGFzaGJvYXJkQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUEwR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZTtFQUNmSSxVQUFBO0lBQ0FGLFlBQUEsRUFBQUEsa0ZBQUE7SUFDQUYsY0FBQSxFQUFBQSxvRkFBQTtJQUNBQyxXQUFBLEVBQUFBLGlGQUFBO0lBQ0FFLGlCQUFBLEVBQUFBLHVGQUFBQTtFQUNBO0VBQ0FFLElBQUEsV0FBQUEsS0FBQTtJQUNBO01BQ0FDLFdBQUE7TUFDQUMsV0FBQTtNQUNBQyxhQUFBO01BQ0FDLFFBQUE7TUFDQUMsTUFBQTtNQUNBQyxnQkFBQTtNQUNBQyxnQkFBQTtNQUNBQyxzQkFBQTtJQUNBO0VBQ0E7RUFDQUMsT0FBQSxXQUFBQSxRQUFBO0lBQ0EsS0FBQVIsV0FBQTtNQUFBUyxHQUFBO01BQUFDLElBQUE7SUFBQTtFQUNBO0VBQ0FDLE9BQUEsV0FBQUEsUUFBQTtJQUNBLEtBQUFDLFNBQUE7RUFDQTtFQUNBQyxPQUFBO0lBQ0FELFNBQUEsV0FBQUEsVUFBQTtNQUNBLElBQUFFLGFBQUEsR0FBQUMsUUFBQSxDQUFBQyxjQUFBLFdBQUFDLFVBQUE7TUFDQSxJQUFBQyxXQUFBO1FBQ0FDLE1BQUE7UUFDQUMsUUFBQSxHQUNBO1VBQ0FDLEtBQUE7VUFDQUMsZUFBQTtVQUNBQyxXQUFBO1VBQ0FDLFdBQUE7VUFDQUMsVUFBQTtVQUNBQyxnQkFBQTtVQUNBQyxrQkFBQTtVQUNBQyxvQkFBQTtVQUNBN0IsSUFBQTtRQUNBLEVBQ0E7UUFDQXVCLGVBQUEsR0FDQSwyQkFDQSwyQkFDQSwwQkFDQTtRQUNBQyxXQUFBLEdBQ0EseUJBQ0EseUJBQ0Esd0JBQ0E7UUFDQU0sV0FBQTtNQUNBO01BQ0EsSUFBQUMsY0FBQTtRQUNBQyxtQkFBQTtRQUNBQyxVQUFBO1FBQ0FDLE1BQUE7VUFDQUMsT0FBQTtRQUNBO1FBQ0FDLE1BQUE7VUFDQUMsS0FBQSxHQUNBO1lBQ0FDLFNBQUE7Y0FDQUgsT0FBQTtZQUNBO1VBQ0EsRUFDQTtVQUNBSSxLQUFBLEdBQ0E7WUFDQUQsU0FBQTtjQUNBSCxPQUFBO1lBQ0E7VUFDQTtRQUVBO01BQ0E7TUFFQSxJQUFBSyxLQUFBLENBQUF6QixhQUFBO1FBQ0EwQixJQUFBO1FBQ0F6QyxJQUFBLEVBQUFtQixXQUFBO1FBQ0F1QixPQUFBLEVBQUFYO01BQ0E7TUFFQSxJQUFBWSxhQUFBLEdBQUEzQixRQUFBLENBQ0FDLGNBQUEsV0FDQUMsVUFBQTtNQUNBLElBQUEwQixXQUFBO1FBQ0F4QixNQUFBO1FBQ0FDLFFBQUEsR0FDQTtVQUNBQyxLQUFBO1VBQ0FDLGVBQUE7VUFDQUMsV0FBQTtVQUNBQyxXQUFBO1VBQ0FDLFVBQUE7VUFDQUMsZ0JBQUE7VUFDQUMsa0JBQUE7VUFDQUMsb0JBQUE7VUFDQTdCLElBQUE7UUFDQSxFQUNBO1FBQ0F1QixlQUFBLEdBQ0EsMkJBQ0EsMkJBQ0EsMEJBQ0E7UUFDQUMsV0FBQSxHQUNBLHlCQUNBLHlCQUNBLHdCQUNBO1FBQ0FNLFdBQUE7TUFDQTtNQUNBLElBQUFlLGNBQUE7UUFDQWIsbUJBQUE7UUFDQUMsVUFBQTtRQUNBQyxNQUFBO1VBQ0FDLE9BQUE7UUFDQTtRQUNBQyxNQUFBO1VBQ0FDLEtBQUEsR0FDQTtZQUNBQyxTQUFBO2NBQ0FILE9BQUE7WUFDQTtVQUNBLEVBQ0E7VUFDQUksS0FBQSxHQUNBO1lBQ0FELFNBQUE7Y0FDQUgsT0FBQTtZQUNBO1VBQ0E7UUFFQTtNQUNBO01BRUEsSUFBQUssS0FBQSxDQUFBRyxhQUFBO1FBQ0FGLElBQUE7UUFDQXpDLElBQUEsRUFBQTRDLFdBQUE7UUFDQUYsT0FBQSxFQUFBRztNQUNBO0lBQ0E7RUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvRGFzaGJvYXJkQ29tcG9uZW50LnZ1ZT8wMjQwIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8YnIgLz5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWdyb3VwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgdGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS11c2VycyBjLWljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdmFsdWUtbGdcIj4wPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LXVwcGVyY2FzZSBmb250LXdlaWdodC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgID5EYXRvIDE8L3NtYWxsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcyBwcm9ncmVzcy14cyBtdC0zIG1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1iYXIgYmctaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLXZhbHVlbm93PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLXZhbHVlbWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWN1YmVzIGMtaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC12YWx1ZS1sZ1wiPjA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkIHRleHQtdXBwZXJjYXNlIGZvbnQtd2VpZ2h0LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgPkRhdG8gMjwvc21hbGxcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXhzIG10LTMgbWItMFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhciBiZy1zdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVub3c9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY29sLW1kLTYgY29ubmVjdGVkU29ydGFibGUgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1zdWNjZXNzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoYXJ0LXBpZSBtci0xXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICBEaWFncmFtYSAxXG4gICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGFydFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwicmV2ZW51ZS1jaGFydDFcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiAyNTBweFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxjYW52YXNcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImdyYXBoMlwiXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMjUwcHhcIlxuICAgICAgICAgICAgICAgICAgICA+PC9jYW52YXM+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNvbC1tZC02IGNvbm5lY3RlZFNvcnRhYmxlIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoYXJ0LXBpZSBtci0xXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICBEaWFncmFtYSAyXG4gICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGFydFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwicmV2ZW51ZS1jaGFydDJcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiAyNTBweFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxjYW52YXNcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImdyYXBoMVwiXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMjUwcHhcIlxuICAgICAgICAgICAgICAgICAgICA+PC9jYW52YXM+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgQm94Q29sb3JXaWRnZXQgZnJvbSBcIi4uL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9Cb3hDb2xvcldpZGdldC52dWVcIjtcbmltcG9ydCBDaGFydFdpZGdldCBmcm9tIFwiLi4vY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0NoYXJ0V2lkZ2V0LnZ1ZVwiO1xuaW1wb3J0IEhlYWRlcldpZGdldCBmcm9tIFwiLi4vY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0hlYWRlcldpZGdldC52dWVcIjtcbmltcG9ydCBJZnJhbWVHcm91cFdpZGdldCBmcm9tIFwiLi4vY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0lmcmFtZUdyb3VwV2lkZ2V0LnZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wb25lbnRzOiB7XG4gICAgSGVhZGVyV2lkZ2V0LFxuICAgIEJveENvbG9yV2lkZ2V0LFxuICAgIENoYXJ0V2lkZ2V0LFxuICAgIElmcmFtZUdyb3VwV2lkZ2V0LFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBicmVhZGNydW1iczogW10sXG4gICAgICBjaGFydExhYmVsczogW10sXG4gICAgICBjaGFydERhdGFzZXRzOiBbXSxcbiAgICAgIF9tb2R1bGVzOiBbXSxcbiAgICAgIHNlYXJjaDogXCJcIixcbiAgICAgIG9yZ2FuaXphdGlvblR5cGU6IDAsXG4gICAgICBvcmdhbml6YXRpb25MaXN0OiBudWxsLFxuICAgICAgY291bnRfY2hhcmFjdGVyaXphdGlvbjogMCxcbiAgICB9O1xuICB9LFxuICBjcmVhdGVkKCkge1xuICAgIHRoaXMuYnJlYWRjcnVtYnMgPSBbeyB1cmw6IFwiL1wiLCB0ZXh0OiBcIkJpdMOhY29yYVwiIH1dO1xuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMubG9hZFN0YXRzKCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBsb2FkU3RhdHMoKSB7XG4gICAgICB2YXIgY2hhcnQyX0NhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3JhcGgyXCIpLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgIHZhciBjaGFydDJfRGF0YSA9IHtcbiAgICAgICAgbGFiZWxzOiBbJ2EnLCAnYicsICdjJ10sXG4gICAgICAgIGRhdGFzZXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IFwiSW5mb3JtYWNpw7NuIGRlIFBydWViYVwiLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcInJnYmEoNjAsMTQxLDE4OCwwLjkpXCIsXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogXCJyZ2JhKDYwLDE0MSwxODgsMC44KVwiLFxuICAgICAgICAgICAgcG9pbnRSYWRpdXM6IGZhbHNlLFxuICAgICAgICAgICAgcG9pbnRDb2xvcjogXCIjM2I4YmJhXCIsXG4gICAgICAgICAgICBwb2ludFN0cm9rZUNvbG9yOiBcInJnYmEoNjAsMTQxLDE4OCwxKVwiLFxuICAgICAgICAgICAgcG9pbnRIaWdobGlnaHRGaWxsOiBcIiNmZmZcIixcbiAgICAgICAgICAgIHBvaW50SGlnaGxpZ2h0U3Ryb2tlOiBcInJnYmEoNjAsMTQxLDE4OCwxKVwiLFxuICAgICAgICAgICAgZGF0YTogWzEsMiwxLjVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogW1xuICAgICAgICAgIFwicmdiYSgyNTUsIDk5LCAxMzIsIDAuMilcIixcbiAgICAgICAgICBcInJnYmEoNTQsIDE2MiwgMjM1LCAwLjIpXCIsXG4gICAgICAgICAgXCJyZ2JhKDI1NSwgMjA2LCA4NiwgMC4yKVwiLFxuICAgICAgICBdLFxuICAgICAgICBib3JkZXJDb2xvcjogW1xuICAgICAgICAgIFwicmdiYSgyNTUsIDk5LCAxMzIsIDEpXCIsXG4gICAgICAgICAgXCJyZ2JhKDU0LCAxNjIsIDIzNSwgMSlcIixcbiAgICAgICAgICBcInJnYmEoMjU1LCAyMDYsIDg2LCAxKVwiLFxuICAgICAgICBdLFxuICAgICAgICBib3JkZXJXaWR0aDogMSxcbiAgICAgIH07XG4gICAgICB2YXIgY2hhcnQyX09wdGlvbnMgPSB7XG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY2FsZXM6IHtcbiAgICAgICAgICB4QXhlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBncmlkTGluZXM6IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB5QXhlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBncmlkTGluZXM6IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIG5ldyBDaGFydChjaGFydDJfQ2FudmFzLCB7XG4gICAgICAgIHR5cGU6IFwiYmFyXCIsXG4gICAgICAgIGRhdGE6IGNoYXJ0Ml9EYXRhLFxuICAgICAgICBvcHRpb25zOiBjaGFydDJfT3B0aW9ucyxcbiAgICAgIH0pO1xuXG4gICAgICAgICAgdmFyIGNoYXJ0MV9DYW52YXMgPSBkb2N1bWVudFxuICAgICAgICAgICAgLmdldEVsZW1lbnRCeUlkKFwiZ3JhcGgxXCIpXG4gICAgICAgICAgICAuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgICAgIHZhciBjaGFydDFfRGF0YSA9IHtcbiAgICAgICAgICAgIGxhYmVsczogWyd4JywgJ3knLCAneiddLFxuICAgICAgICAgICAgZGF0YXNldHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBcIkluZm9ybWFjacOzbiBkZSBQcnVlYmEgMlwiLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCJyZ2JhKDYwLDE0MSwxODgsMC45KVwiLFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBcInJnYmEoNjAsMTQxLDE4OCwwLjgpXCIsXG4gICAgICAgICAgICAgICAgcG9pbnRSYWRpdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBvaW50Q29sb3I6IFwiIzNiOGJiYVwiLFxuICAgICAgICAgICAgICAgIHBvaW50U3Ryb2tlQ29sb3I6IFwicmdiYSg2MCwxNDEsMTg4LDEpXCIsXG4gICAgICAgICAgICAgICAgcG9pbnRIaWdobGlnaHRGaWxsOiBcIiNmZmZcIixcbiAgICAgICAgICAgICAgICBwb2ludEhpZ2hsaWdodFN0cm9rZTogXCJyZ2JhKDYwLDE0MSwxODgsMSlcIixcbiAgICAgICAgICAgICAgICBkYXRhOiBbNCwyLDNdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogW1xuICAgICAgICAgICAgICBcInJnYmEoMjU1LCA5OSwgMTMyLCAwLjIpXCIsXG4gICAgICAgICAgICAgIFwicmdiYSg1NCwgMTYyLCAyMzUsIDAuMilcIixcbiAgICAgICAgICAgICAgXCJyZ2JhKDI1NSwgMjA2LCA4NiwgMC4yKVwiLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBbXG4gICAgICAgICAgICAgIFwicmdiYSgyNTUsIDk5LCAxMzIsIDEpXCIsXG4gICAgICAgICAgICAgIFwicmdiYSg1NCwgMTYyLCAyMzUsIDEpXCIsXG4gICAgICAgICAgICAgIFwicmdiYSgyNTUsIDIwNiwgODYsIDEpXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgY2hhcnQxX09wdGlvbnMgPSB7XG4gICAgICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY2FsZXM6IHtcbiAgICAgICAgICAgICAgeEF4ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBncmlkTGluZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHlBeGVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZ3JpZExpbmVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgbmV3IENoYXJ0KGNoYXJ0MV9DYW52YXMsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYmFyXCIsXG4gICAgICAgICAgICBkYXRhOiBjaGFydDFfRGF0YSxcbiAgICAgICAgICAgIG9wdGlvbnM6IGNoYXJ0MV9PcHRpb25zLFxuICAgICAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG4iXSwibmFtZXMiOlsiQm94Q29sb3JXaWRnZXQiLCJDaGFydFdpZGdldCIsIkhlYWRlcldpZGdldCIsIklmcmFtZUdyb3VwV2lkZ2V0IiwiY29tcG9uZW50cyIsImRhdGEiLCJicmVhZGNydW1icyIsImNoYXJ0TGFiZWxzIiwiY2hhcnREYXRhc2V0cyIsIl9tb2R1bGVzIiwic2VhcmNoIiwib3JnYW5pemF0aW9uVHlwZSIsIm9yZ2FuaXphdGlvbkxpc3QiLCJjb3VudF9jaGFyYWN0ZXJpemF0aW9uIiwiY3JlYXRlZCIsInVybCIsInRleHQiLCJtb3VudGVkIiwibG9hZFN0YXRzIiwibWV0aG9kcyIsImNoYXJ0Ml9DYW52YXMiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0Q29udGV4dCIsImNoYXJ0Ml9EYXRhIiwibGFiZWxzIiwiZGF0YXNldHMiLCJsYWJlbCIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwicG9pbnRSYWRpdXMiLCJwb2ludENvbG9yIiwicG9pbnRTdHJva2VDb2xvciIsInBvaW50SGlnaGxpZ2h0RmlsbCIsInBvaW50SGlnaGxpZ2h0U3Ryb2tlIiwiYm9yZGVyV2lkdGgiLCJjaGFydDJfT3B0aW9ucyIsIm1haW50YWluQXNwZWN0UmF0aW8iLCJyZXNwb25zaXZlIiwibGVnZW5kIiwiZGlzcGxheSIsInNjYWxlcyIsInhBeGVzIiwiZ3JpZExpbmVzIiwieUF4ZXMiLCJDaGFydCIsInR5cGUiLCJvcHRpb25zIiwiY2hhcnQxX0NhbnZhcyIsImNoYXJ0MV9EYXRhIiwiY2hhcnQxX09wdGlvbnMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/DashboardComponent.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/create.vue?vue&type=script&lang=js&":
/*!****************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/create.vue?vue&type=script&lang=js& ***!
\****************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/alliance/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n survey: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/alliance/store\", result.data).then(function (response) {\n if (response.data) {\n console.log(response.data);\n Swal.fire({\n title: \"Actualizado\",\n text: \"La Alianza ha sido creado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/alianzas\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo crear la alianza. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vYWxsaWFuY2UvY3JlYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7K0NBU0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0Is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QkFDQTt3QkFDQTtzQkFDQTtvQkFBQTtvQkFBQTtzQkFBQSxPQUFBZixRQUFBLENBQUE1QyxJQUFBO2tCQUFBO2dCQUFBLEdBQUF3QyxPQUFBO2NBQUEsQ0FDQSxJQUFBcEIsS0FBQSxPQUFBRCxTQUFBO1lBQUE7VUFBQTtVQUFBO1lBQUEsT0FBQWUsU0FBQSxDQUFBbEMsSUFBQTtRQUFBO01BQUEsR0FBQStCLFFBQUE7SUFBQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9hbGxpYW5jZS9jcmVhdGUudnVlP2FiYTUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDx2LWFwcCB2LWlmPVwic3VydmV5XCI+XG4gICAgICA8c3VydmV5IDpzdXJ2ZXk9XCJzdXJ2ZXlcIj48L3N1cnZleT5cbiAgICA8L3YtYXBwPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4gIFxuICA8c2NyaXB0PlxuaW1wb3J0ICogYXMgU3VydmV5VnVlIGZyb20gXCJzdXJ2ZXktdnVlXCI7XG5jb25zdCBTd2FsID0gcmVxdWlyZShcInN3ZWV0YWxlcnQyXCIpO1xuaW1wb3J0IHsganNvbiB9IGZyb20gXCIuL2Zvcm1cIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBzdXJ2ZXk6IG51bGwsXG4gIH0pLFxuXG4gIGFzeW5jIG1vdW50ZWQoKSB7XG5cbiAgICB0aGlzLnN1cnZleSA9IG5ldyBTdXJ2ZXlWdWUuTW9kZWwoanNvbik7XG5cbiAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMuYWxsb3dDb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgYXdhaXQgYXhpb3NcbiAgICAgICAgLnBvc3QoXCIvYXBpL2FsbGlhbmNlL3N0b3JlXCIsIHJlc3VsdC5kYXRhKVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICB0aXRsZTogXCJBY3R1YWxpemFkb1wiLFxuICAgICAgICAgICAgICB0ZXh0OiBcIkxhIEFsaWFuemEgaGEgc2lkbyBjcmVhZG8gY29uIMOpeGl0b1wiLFxuICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgIC8vICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9XG4gICAgICAgICAgICAgICAgXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vYWxpYW56YXNcIjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICB0aXRsZTogXCJFcnJvciFcIixcbiAgICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICBcIk5vIHNlIHB1ZG8gY3JlYXIgbGEgYWxpYW56YS4gUG9yIGZhdm9yIGludGVudGUgbcOhcyB0YXJkZS5cIixcbiAgICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAgIC8vICAgIHRpbWVyOiAzMDAwLFxuICAgICAgICAgICAgfSkudGhlbigoXykgPT4ge1xuICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG59O1xuPC9zY3JpcHQ+XG4gIFxuICAiXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJTdXJ2ZXlWdWUiLCJTd2FsIiwicmVxdWlyZSIsImpzb24iLCJkYXRhIiwic3VydmV5IiwibW91bnRlZCIsIl90aGlzIiwiX2NhbGxlZTIiLCJfcmVmIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiTW9kZWwiLCJvbkNvbXBsZXRpbmciLCJhZGQiLCJfeCIsIl94MiIsIl9jYWxsZWUiLCJyZXN1bHQiLCJvcHRpb25zIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImFsbG93Q29tcGxldGUiLCJheGlvcyIsInBvc3QiLCJyZXNwb25zZSIsImNvbnNvbGUiLCJsb2ciLCJmaXJlIiwidGl0bGUiLCJ0ZXh0IiwiaWNvbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsIl8iLCJyZWxvYWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/create.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/edit.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/edit.vue?vue&type=script&lang=js& ***!
\**************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/alliance/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null,\n data: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n var self;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n self = _this;\n _context2.next = 3;\n return axios.get(\"/api/alliance/edit/\" + _this.$route.params.id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n _this.data = response.data;\n console.log(_this.data);\n });\n case 3:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/alliance/update/\" + self.$route.params.id, result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"La alianza ha sido actualizado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/alianzas\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo actualizar la alianza. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n _this.survey.data = self.data;\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vYWxsaWFuY2UvZWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OytDQU9BLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENBQUEsRUFBQWlCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFwQixDQUFBLENBQUFELENBQUEsV0FBQWtCLE1BQUEsbUJBQUFqQixDQUFBLElBQUFpQixNQUFBLFlBQUFBLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxnQkFBQW9CLEtB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QUFBLENBQUFDLE1BQUEsQ0FBQUMsRUFBQSxFQUFBYyxNQUFBLENBQUExQixJQUFBLEVBQ0F4RSxJQUFBLFdBQUF5RixRQUFBO3dCQUNBQyxPQUFBLENBQUFDLEdBQUEsQ0FBQUYsUUFBQSxDQUFBakIsSUFBQTt3QkFDQSxJQUFBaUIsUUFBQSxDQUFBakIsSUFBQTswQkFDQUwsSUFBQSxDQUFBcUMsSUFBQTs0QkFDQUMsS0FBQTs0QkFDQUMsSUFBQTs0QkFDQUMsSUFBQTs0QkFDQTswQkFDQSxHQUFBM0csSUFBQTs0QkFDQTRHLE1BQUEsQ0FBQUMsUUFBQSxDQUFBQyxJQUFBOzBCQUNBO3dCQUNBOzBCQUNBM0MsSUFBQSxDQUFBcUMsSUFBQTs0QkFDQUMsS0FBQTs0QkFDQUMsSUFBQTs0QkFDQUMsSUFBQTs0QkFDQTswQkFDQSxHQUFBM0csSUFBQSxXQUFBK0csQ0FBQTs0QkFDQUYsUUFBQSxDQUFBRyxNQUFBOzBCQUNBO3dCQUNBO3NCQUNBO29CQUFBO29CQUFBO3NCQUFBLE9BQUFYLFFBQUEsQ0FBQTFELElBQUE7a0JBQUE7Z0JBQUEsR0FBQXNELE9BQUE7Y0FBQSxDQUNBLElBQUFsQyxLQUFBLE9BQUFELFNBQUE7WUFBQTtZQUNBYSxLQUFBLENBQUFGLE1BQUEsQ0FBQUQsSUFBQSxHQUFBWixJQUFBLENBQUFZLElBQUE7VUFBQTtVQUFBO1lBQUEsT0FBQU8sU0FBQSxDQUFBcEMsSUFBQTtRQUFBO01BQUEsR0FBQWlDLFFBQUE7SUFBQTtFQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vYWxsaWFuY2UvZWRpdC52dWU/M2Q5YyJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiB2LWlmPVwic3VydmV5XCI+XG4gICAgICA8U3VydmV5IDpzdXJ2ZXk9XCJzdXJ2ZXlcIj48L1N1cnZleT5cbiAgICA8L2Rpdj5cbiAgPC90ZW1wbGF0ZT5cbiAgICAgIFxuICAgICAgPHNjcmlwdD5cbiAgaW1wb3J0ICogYXMgU3VydmV5VnVlIGZyb20gXCJzdXJ2ZXktdnVlXCI7XG4gIGNvbnN0IFN3YWwgPSByZXF1aXJlKFwic3dlZXRhbGVydDJcIik7XG4gIGltcG9ydCB7IGpzb24gfSBmcm9tIFwiLi9mb3JtXCI7XG4gIFxuICBleHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcG9uZW50czogeyBTdXJ2ZXk6IFN1cnZleVZ1ZS5TdXJ2ZXkgfSxcbiAgICBkYXRhOiAoKSA9PiAoe1xuICAgICAgc3VydmV5OiBudWxsLFxuICAgICAgZGF0YTogbnVsbCxcbiAgICB9KSxcbiAgXG4gICAgYXN5bmMgbW91bnRlZCgpIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgIC5nZXQoXCIvYXBpL2FsbGlhbmNlL2VkaXQvXCIgKyB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBBVCxcbiAgICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEpXG4gICAgICAgIH0pO1xuICBcbiAgICAgIHRoaXMuc3VydmV5ID0gbmV3IFN1cnZleVZ1ZS5Nb2RlbChqc29uKTtcbiAgXG4gICAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucy5hbGxvd0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgICAgLnBvc3QoXCIvYXBpL2FsbGlhbmNlL3VwZGF0ZS9cIiArIHNlbGYuJHJvdXRlLnBhcmFtcy5pZCwgcmVzdWx0LmRhdGEpXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEpXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBcIkFjdHVhbGl6YWRvXCIsXG4gICAgICAgICAgICAgICAgdGV4dDogXCJMYSBhbGlhbnphIGhhIHNpZG8gYWN0dWFsaXphZG8gY29uIMOpeGl0b1wiLFxuICAgICAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgICAgIC8vICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9wYW5lbC1hZG1pbmlzdHJhY2lvbi9hbGlhbnphc1wiO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgICAgdGV4dDogXCJObyBzZSBwdWRvIGFjdHVhbGl6YXIgbGEgYWxpYW56YS4gUG9yIGZhdm9yIGludGVudGUgbcOhcyB0YXJkZS5cIixcbiAgICAgICAgICAgICAgICBpY29uOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgICAgLy8gICAgdGltZXI6IDMwMDAsXG4gICAgICAgICAgICAgIH0pLnRoZW4oKF8pID0+IHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3VydmV5LmRhdGEgPSBzZWxmLmRhdGE7XG4gICAgfSxcbiAgfTtcbiAgPC9zY3JpcHQ+Il0sIm5hbWVzIjpbIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJlIiwidCIsInIiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImkiLCJTeW1ib2wiLCJhIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImNhbGwiLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiU3VydmV5VnVlIiwiU3dhbCIsInJlcXVpcmUiLCJqc29uIiwiY29tcG9uZW50cyIsIlN1cnZleSIsImRhdGEiLCJzdXJ2ZXkiLCJtb3VudGVkIiwiX3RoaXMiLCJfY2FsbGVlMiIsIl9yZWYiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJheGlvcyIsImdldCIsIiRyb3V0ZSIsInBhcmFtcyIsImlkIiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJBVCIsIkFjY2VwdCIsInJlc3BvbnNlIiwiY29uc29sZSIsImxvZyIsIk1vZGVsIiwib25Db21wbGV0aW5nIiwiYWRkIiwiX3giLCJfeDIiLCJfY2FsbGVlIiwicmVzdWx0Iiwib3B0aW9ucyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJhbGxvd0NvbXBsZXRlIiwicG9zdCIsImZpcmUiLCJ0aXRsZSIsInRleHQiLCJpY29uIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwiXyIsInJlbG9hZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/edit.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/index.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/index.vue?vue&type=script&lang=js& ***!
\***************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n data: null,\n search: \"\",\n headers: [{\n text: \"Nombre\",\n value: \"name\"\n }, {\n text: \"Logo\",\n value: \"image\"\n }, {\n text: \"Sitio Web\",\n value: \"link\"\n }, {\n text: \"Acciones\",\n value: \"actions\",\n sortable: false\n }]\n };\n },\n mounted: function mounted() {\n this.loadData();\n },\n methods: {\n loadData: function loadData() {\n var _this = this;\n axios.get(\"/api/alliance/index\").then(function (response) {\n _this.data = response.data;\n });\n },\n edit: function edit(id) {\n window.location.href = \"/panel-administracion/alianzas/\" + id + \"/editar\";\n },\n trash: function trash(id, name) {\n var _this2 = this;\n Swal.fire({\n title: \"Confirmación\",\n html: \"<p margin-bottom: 10px;\\\">\\n \\xBFEst\\xE1s seguro de que deseas eliminar la alianza con <b>\\\"\".concat(name, \"\\\"</b>?</p>\\n <p style=\\\"font-size: 0.7em;\\\">\\n Si lo eliminas, no podr\\xE1s recuperarla.\\n </p>\"),\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Sí, eliminar\",\n cancelButtonText: \"Cancelar\"\n }).then(function (result) {\n if (result.isConfirmed) {\n axios[\"delete\"](\"/api/alliance/delete/\" + id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n Swal.fire({\n title: \"Eliminado\",\n text: \"Se ha eliminado la alianza con éxito.\",\n icon: \"success\",\n timer: 2000\n }).then(function (_) {});\n _this2.loadData();\n });\n }\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vYWxsaWFuY2UvaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7O0FBK0NBLElBQUFBLElBQUEsR0FBQUMsbUJBQUE7QUFDQSxpRUFBZTtFQUNmQyxJQUFBLFdBQUFBLEtBQUE7SUFDQTtNQUNBQSxJQUFBO01BQ0FDLE1BQUE7TUFDQUMsT0FBQSxHQUNBO1FBQUFDLElBQUE7UUFBQUMsS0FBQTtNQUFBLEdBQ0E7UUFBQUQsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7TUFBQSxHQUNBO1FBQUFELElBQUE7UUFBQUMsS0FBQTtRQUFBQyxRQUFBO01BQUE7SUFFQTtFQUNBO0VBQ0FDLE9BQUEsV0FBQUEsUUFBQTtJQUNBLEtBQUFDLFFBQUE7RUFDQTtFQUNBQyxPQUFBO0lBQ0FELFFBQUEsV0FBQUEsU0FBQTtNQUFBLElBQUFFLEtBQUE7TUFDQUMsS0FBQSxDQUFBQyxHQUFBLHdCQUFBQyxJQUFBLFdBQUFDLFFBQUE7UUFDQUosS0FBQSxDQUFBVCxJQUFBLEdBQUFhLFFBQUEsQ0FBQWIsSUFBQTtNQUNBO0lBQ0E7SUFDQWMsSUFBQSxXQUFBQSxLQUFBQyxFQUFBO01BQ0FDLE1BQUEsQ0FBQUMsUUFBQSxDQUFBQyxJQUFBLHVDQUFBSCxFQUFBO0lBQ0E7SUFDQUksS0FBQSxXQUFBQSxNQUFBSixFQUFBLEVBQUFLLElBQUE7TUFBQSxJQUFBQyxNQUFBO01BQ0F2QixJQUFBLENBQUF3QixJQUFBO1FBQ0FDLEtBQUE7UUFDQUMsSUFBQSxnSEFBQUMsTUFBQSxDQUNBTCxJQUFBLGtLQUdBO1FBQ0FNLElBQUE7UUFDQUMsZ0JBQUE7UUFDQUMsa0JBQUE7UUFDQUMsaUJBQUE7UUFDQUMsaUJBQUE7UUFDQUMsZ0JBQUE7TUFDQSxHQUFBbkIsSUFBQSxXQUFBb0IsTUFBQTtRQUNBLElBQUFBLE1BQUEsQ0FBQUMsV0FBQTtVQUNBdkIsS0FBQSxVQUNBLDJCQUFBSyxFQUFBO1lBQ0FiLE9BQUE7Y0FDQWdDLGFBQUEsRUFBQUMsRUFBQTtjQUNBQyxNQUFBO1lBQ0E7VUFDQSxHQUNBeEIsSUFBQSxXQUFBQyxRQUFBO1lBQ0FmLElBQUEsQ0FBQXdCLElBQUE7Y0FDQUMsS0FBQTtjQUNBcEIsSUFBQTtjQUNBdUIsSUFBQTtjQUNBVyxLQUFBO1lBQ0EsR0FBQXpCLElBQUEsV0FBQTBCLENBQUE7WUFDQWpCLE1BQUEsQ0FBQWQsUUFBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2FsbGlhbmNlL2luZGV4LnZ1ZT9hOTQ3Il0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgPHYtYXBwPlxuICAgIDx2LWNhcmQgdi1pZj1cImRhdGFcIj5cbiAgICAgIDx2LWNhcmQtdGl0bGU+XG4gICAgICAgIEFkbWluaXN0cmFjacOzbiBkZSBBbGlhbnphc1xuICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgPHYtdGV4dC1maWVsZFxuICAgICAgICAgIHYtbW9kZWw9XCJzZWFyY2hcIlxuICAgICAgICAgIGFwcGVuZC1pY29uPVwibWRpLW1hZ25pZnlcIlxuICAgICAgICAgIGxhYmVsPVwiQnVzY2FyXCJcbiAgICAgICAgICBzaW5nbGUtbGluZVxuICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICA+PC92LXRleHQtZmllbGQ+XG4gICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgIDx2LWRhdGEtdGFibGVcbiAgICAgICAgOmhlYWRlcnM9XCJoZWFkZXJzXCJcbiAgICAgICAgOml0ZW1zPVwiZGF0YVwiXG4gICAgICAgIGNsYXNzPVwiZWxldmF0aW9uLTFcIlxuICAgICAgICA6c2VhcmNoPVwic2VhcmNoXCJcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmltYWdlPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8di1pbWdcbiAgICAgICAgICAgIG1heC1oZWlnaHQ9XCI1MVwiXG4gICAgICAgICAgICBtYXgtd2lkdGg9XCIxMTBcIlxuICAgICAgICAgICAgY29udGFpblxuICAgICAgICAgICAgOnNyYz1cIml0ZW0uaW1hZ2VuXCJcbiAgICAgICAgICA+PC92LWltZ1xuICAgICAgICA+PC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmxpbms9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWJ0biBpY29uIDpocmVmPVwiaXRlbS51cmxcIiBjb2xvcj1cInByaW1hcnlcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgIDx2LWljb24+bWRpLW9wZW4taW4tbmV3PC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFjdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInJlZFwiIGZhYiB4LXNtYWxsIGRhcmsgQGNsaWNrPVwiZWRpdChpdGVtLmlkKVwiPlxuICAgICAgICAgICAgPHYtaWNvbj4gbWRpLXBlbmNpbCA8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cIndhcm5pbmdcIiBmYWIgeC1zbWFsbCBkYXJrIEBjbGljaz1cInRyYXNoKGl0ZW0uaWQsIGl0ZW0ubmFtZSlcIj5cbiAgICAgICAgICAgIDx2LWljb24+IG1kaS1kZWxldGUgPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgIDwvdi1jYXJkPlxuICA8L3YtYXBwPlxuPC90ZW1wbGF0ZT5cbiAgXG4gIDxzY3JpcHQ+XG4gIGNvbnN0IFN3YWwgPSByZXF1aXJlKFwic3dlZXRhbGVydDJcIik7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IG51bGwsXG4gICAgICBzZWFyY2g6IFwiXCIsXG4gICAgICBoZWFkZXJzOiBbXG4gICAgICAgIHsgdGV4dDogXCJOb21icmVcIiwgdmFsdWU6IFwibmFtZVwiIH0sXG4gICAgICAgIHsgdGV4dDogXCJMb2dvXCIsIHZhbHVlOiBcImltYWdlXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIlNpdGlvIFdlYlwiLCB2YWx1ZTogXCJsaW5rXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkFjY2lvbmVzXCIsIHZhbHVlOiBcImFjdGlvbnNcIiwgc29ydGFibGU6IGZhbHNlIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgbG9hZERhdGEoKSB7XG4gICAgICBheGlvcy5nZXQoXCIvYXBpL2FsbGlhbmNlL2luZGV4XCIpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGVkaXQoaWQpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vYWxpYW56YXMvXCIgKyBpZCArIFwiL2VkaXRhclwiO1xuICAgIH0sXG4gICAgdHJhc2goaWQsIG5hbWUpIHtcbiAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgIHRpdGxlOiBcIkNvbmZpcm1hY2nDs25cIixcbiAgICAgICAgaHRtbDogYDxwIG1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBkZXNlYXMgZWxpbWluYXIgbGEgYWxpYW56YSBjb24gPGI+XCIke25hbWV9XCI8L2I+PzwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6IDAuN2VtO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2kgbG8gZWxpbWluYXMsIG5vIHBvZHLDoXMgcmVjdXBlcmFybGEuXG4gICAgICAgICAgICAgICAgICAgIDwvcD5gLFxuICAgICAgICBpY29uOiBcIndhcm5pbmdcIixcbiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiBcIiMzMDg1ZDZcIixcbiAgICAgICAgY2FuY2VsQnV0dG9uQ29sb3I6IFwiI2QzM1wiLFxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJTw60sIGVsaW1pbmFyXCIsXG4gICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IFwiQ2FuY2VsYXJcIixcbiAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0LmlzQ29uZmlybWVkKSB7XG4gICAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5kZWxldGUoXCIvYXBpL2FsbGlhbmNlL2RlbGV0ZS9cIiArIGlkLCB7XG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBBVCxcbiAgICAgICAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBcIkVsaW1pbmFkb1wiLFxuICAgICAgICAgICAgICAgIHRleHQ6IFwiU2UgaGEgZWxpbWluYWRvIGxhIGFsaWFuemEgY29uIMOpeGl0by5cIixcbiAgICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgICAgfSkudGhlbigoXykgPT4ge30pO1xuICAgICAgICAgICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbiAgIl0sIm5hbWVzIjpbIlN3YWwiLCJyZXF1aXJlIiwiZGF0YSIsInNlYXJjaCIsImhlYWRlcnMiLCJ0ZXh0IiwidmFsdWUiLCJzb3J0YWJsZSIsIm1vdW50ZWQiLCJsb2FkRGF0YSIsIm1ldGhvZHMiLCJfdGhpcyIsImF4aW9zIiwiZ2V0IiwidGhlbiIsInJlc3BvbnNlIiwiZWRpdCIsImlkIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwidHJhc2giLCJuYW1lIiwiX3RoaXMyIiwiZmlyZSIsInRpdGxlIiwiaHRtbCIsImNvbmNhdCIsImljb24iLCJzaG93Q2FuY2VsQnV0dG9uIiwiY29uZmlybUJ1dHRvbkNvbG9yIiwiY2FuY2VsQnV0dG9uQ29sb3IiLCJjb25maXJtQnV0dG9uVGV4dCIsImNhbmNlbEJ1dHRvblRleHQiLCJyZXN1bHQiLCJpc0NvbmZpcm1lZCIsIkF1dGhvcml6YXRpb24iLCJBVCIsIkFjY2VwdCIsInRpbWVyIiwiXyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/index.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/create.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/create.vue?vue&type=script&lang=js& ***!
\**************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/banner/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/banner/store\", result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"El Banner ha sido creado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/banner\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo crear el banner. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vYmFubmVyL2NyZWF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OytDQU9BLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENBQUEsRUFBQWlCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFwQixDQUFBLENBQUFELENBQUEsV0FBQWtCLE1BQUEsbUJBQUFqQixDQUFBLElBQUFpQixNQUFBLFlBQUFBLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxnQkFBQW9CLEtB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QUEsV0FBQXVHLENBQUE7NEJBQ0FGLFFBQUEsQ0FBQUcsTUFBQTswQkFDQTt3QkFDQTtzQkFDQTtvQkFBQTtvQkFBQTtzQkFBQSxPQUFBZixRQUFBLENBQUE5QyxJQUFBO2tCQUFBO2dCQUFBLEdBQUEwQyxPQUFBO2NBQUEsQ0FDQSxJQUFBdEIsS0FBQSxPQUFBRCxTQUFBO1lBQUE7VUFBQTtVQUFBO1lBQUEsT0FBQWlCLFNBQUEsQ0FBQXBDLElBQUE7UUFBQTtNQUFBLEdBQUFpQyxRQUFBO0lBQUE7RUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vYmFubmVyL2NyZWF0ZS52dWU/YjZiOSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXYgdi1pZj1cInN1cnZleVwiPlxuICAgIDxTdXJ2ZXkgOnN1cnZleT1cInN1cnZleVwiPjwvU3VydmV5PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4gIFxuICA8c2NyaXB0PlxuaW1wb3J0ICogYXMgU3VydmV5VnVlIGZyb20gXCJzdXJ2ZXktdnVlXCI7XG5jb25zdCBTd2FsID0gcmVxdWlyZShcInN3ZWV0YWxlcnQyXCIpO1xuaW1wb3J0IHsganNvbiB9IGZyb20gXCIuL2Zvcm1cIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wb25lbnRzOiB7IFN1cnZleTogU3VydmV5VnVlLlN1cnZleSB9LFxuICBkYXRhOiAoKSA9PiAoe1xuICAgIHN1cnZleTogbnVsbCxcbiAgfSksXG5cbiAgYXN5bmMgbW91bnRlZCgpIHtcbiAgICB0aGlzLnN1cnZleSA9IG5ldyBTdXJ2ZXlWdWUuTW9kZWwoanNvbik7XG5cbiAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMuYWxsb3dDb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgYXdhaXQgYXhpb3NcbiAgICAgICAgLnBvc3QoXCIvYXBpL2Jhbm5lci9zdG9yZVwiLCByZXN1bHQuZGF0YSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YSlcbiAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiQWN0dWFsaXphZG9cIixcbiAgICAgICAgICAgICAgdGV4dDogXCJFbCBCYW5uZXIgaGEgc2lkbyBjcmVhZG8gY29uIMOpeGl0b1wiLFxuICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgIC8vICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9XG4gICAgICAgICAgICAgICAgXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vYmFubmVyXCI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICAgICAgXCJObyBzZSBwdWRvIGNyZWFyIGVsIGJhbm5lci4gUG9yIGZhdm9yIGludGVudGUgbcOhcyB0YXJkZS5cIixcbiAgICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAgIC8vICAgIHRpbWVyOiAzMDAwLFxuICAgICAgICAgICAgfSkudGhlbigoXykgPT4ge1xuICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG59O1xuPC9zY3JpcHQ+XG4gIFxuICBcbiJdLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIlN1cnZleVZ1ZSIsIlN3YWwiLCJyZXF1aXJlIiwianNvbiIsImNvbXBvbmVudHMiLCJTdXJ2ZXkiLCJkYXRhIiwic3VydmV5IiwibW91bnRlZCIsIl90aGlzIiwiX2NhbGxlZTIiLCJfcmVmIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiTW9kZWwiLCJvbkNvbXBsZXRpbmciLCJhZGQiLCJfeCIsIl94MiIsIl9jYWxsZWUiLCJyZXN1bHQiLCJvcHRpb25zIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImFsbG93Q29tcGxldGUiLCJheGlvcyIsInBvc3QiLCJyZXNwb25zZSIsImNvbnNvbGUiLCJsb2ciLCJmaXJlIiwidGl0bGUiLCJ0ZXh0IiwiaWNvbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsIl8iLCJyZWxvYWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/create.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/edit.vue?vue&type=script&lang=js&":
/*!************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/edit.vue?vue&type=script&lang=js& ***!
\************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/banner/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null,\n data: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n var self;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n self = _this;\n _context2.next = 3;\n return axios.get(\"/api/banner/edit/\" + _this.$route.params.id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n _this.data = response.data;\n });\n case 3:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/banner/update/\" + self.$route.params.id, result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"El Banner ha sido actualizado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/banner\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo actualizar el banner. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n _this.survey.data = self.data;\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vYmFubmVyL2VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7Ozs7OzsrQ0FPQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsQ0FBQU8sS0FBQSxLQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFOLENBQUEsQ0FBQU8sV0FBQSw4QkFBQUMsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUssY0FBQSxDQUFBUCxDQUFBLEVBQUFELENBQUEsSUFBQVMsS0FBQSxFQUFBUCxDQUFBLEVBQUFpQixVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBcEIsQ0FBQSxDQUFBRCxDQUFBLFdBQUFrQixNQUFBLG1CQUFBakIsQ0FBQSxJQUFBaUIsTUFBQSxZQUFBQSxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsZ0JBQUFvQixLQUFB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QixJQUFBLEVBQ0F4RSxJQUFBLFdBQUF5RixRQUFBO3dCQUNBYSxPQUFBLENBQUFDLEdBQUEsQ0FBQWQsUUFBQSxDQUFBakIsSUFBQTt3QkFDQSxJQUFBaUIsUUFBQSxDQUFBakIsSUFBQTswQkFDQUwsSUFBQSxDQUFBcUMsSUFBQTs0QkFDQUMsS0FBQTs0QkFDQUMsSUFBQTs0QkFDQUMsSUFBQTs0QkFDQTswQkFDQSxHQUFBM0csSUFBQTs0QkFDQTRHLE1BQUEsQ0FBQUMsUUFBQSxDQUFBQyxJQUFBOzBCQUNBO3dCQUNBOzBCQUNBM0MsSUFBQSxDQUFBcUMsSUFBQTs0QkFDQUMsS0FBQTs0QkFDQUMsSUFBQTs0QkFDQUMsSUFBQTs0QkFDQTswQkFDQSxHQUFBM0csSUFBQSxXQUFBK0csQ0FBQTs0QkFDQUYsUUFBQSxDQUFBRyxNQUFBOzBCQUNBO3dCQUNBO3NCQUNBO29CQUFBO29CQUFBO3NCQUFBLE9BQUFiLFFBQUEsQ0FBQXhELElBQUE7a0JBQUE7Z0JBQUEsR0FBQW9ELE9BQUE7Y0FBQSxDQUNBLElBQUFoQyxLQUFBLE9BQUFELFNBQUE7WUFBQTtZQUNBYSxLQUFBLENBQUFGLE1BQUEsQ0FBQUQsSUFBQSxHQUFBWixJQUFBLENBQUFZLElBQUE7VUFBQTtVQUFBO1lBQUEsT0FBQU8sU0FBQSxDQUFBcEMsSUFBQTtRQUFBO01BQUEsR0FBQWlDLFFBQUE7SUFBQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9iYW5uZXIvZWRpdC52dWU/ZDVlZiJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXYgdi1pZj1cInN1cnZleVwiPlxuICAgIDxTdXJ2ZXkgOnN1cnZleT1cInN1cnZleVwiPjwvU3VydmV5PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4gICAgXG4gICAgPHNjcmlwdD5cbmltcG9ydCAqIGFzIFN1cnZleVZ1ZSBmcm9tIFwic3VydmV5LXZ1ZVwiO1xuY29uc3QgU3dhbCA9IHJlcXVpcmUoXCJzd2VldGFsZXJ0MlwiKTtcbmltcG9ydCB7IGpzb24gfSBmcm9tIFwiLi9mb3JtXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czogeyBTdXJ2ZXk6IFN1cnZleVZ1ZS5TdXJ2ZXkgfSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBzdXJ2ZXk6IG51bGwsXG4gICAgZGF0YTogbnVsbCxcbiAgfSksXG5cbiAgYXN5bmMgbW91bnRlZCgpIHtcbiAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgYXdhaXQgYXhpb3NcbiAgICAgIC5nZXQoXCIvYXBpL2Jhbm5lci9lZGl0L1wiICsgdGhpcy4kcm91dGUucGFyYW1zLmlkLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBBVCxcbiAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN1cnZleSA9IG5ldyBTdXJ2ZXlWdWUuTW9kZWwoanNvbik7XG5cbiAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMuYWxsb3dDb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgYXdhaXQgYXhpb3NcbiAgICAgICAgLnBvc3QoXCIvYXBpL2Jhbm5lci91cGRhdGUvXCIgKyBzZWxmLiRyb3V0ZS5wYXJhbXMuaWQsIHJlc3VsdC5kYXRhKVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEpXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgIHRpdGxlOiBcIkFjdHVhbGl6YWRvXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiRWwgQmFubmVyIGhhIHNpZG8gYWN0dWFsaXphZG8gY29uIMOpeGl0b1wiLFxuICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgLy8gIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vYmFubmVyXCI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiTm8gc2UgcHVkbyBhY3R1YWxpemFyIGVsIGJhbm5lci4gUG9yIGZhdm9yIGludGVudGUgbcOhcyB0YXJkZS5cIixcbiAgICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAvLyAgICB0aW1lcjogMzAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oKF8pID0+IHtcbiAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc3VydmV5LmRhdGEgPSBzZWxmLmRhdGE7XG4gIH0sXG59O1xuPC9zY3JpcHQ+Il0sIm5hbWVzIjpbIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJlIiwidCIsInIiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImkiLCJTeW1ib2wiLCJhIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImNhbGwiLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiU3VydmV5VnVlIiwiU3dhbCIsInJlcXVpcmUiLCJqc29uIiwiY29tcG9uZW50cyIsIlN1cnZleSIsImRhdGEiLCJzdXJ2ZXkiLCJtb3VudGVkIiwiX3RoaXMiLCJfY2FsbGVlMiIsIl9yZWYiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJheGlvcyIsImdldCIsIiRyb3V0ZSIsInBhcmFtcyIsImlkIiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJBVCIsIkFjY2VwdCIsInJlc3BvbnNlIiwiTW9kZWwiLCJvbkNvbXBsZXRpbmciLCJhZGQiLCJfeCIsIl94MiIsIl9jYWxsZWUiLCJyZXN1bHQiLCJvcHRpb25zIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImFsbG93Q29tcGxldGUiLCJwb3N0IiwiY29uc29sZSIsImxvZyIsImZpcmUiLCJ0aXRsZSIsInRleHQiLCJpY29uIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwiXyIsInJlbG9hZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/edit.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/index.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/index.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n data: null,\n search: \"\",\n headers: [{\n text: \"Titulo\",\n value: \"title\"\n }, {\n text: \"Banner\",\n value: \"image\"\n }, {\n text: \"Pagina\",\n value: \"name\"\n }, {\n text: \"Acciones\",\n value: \"actions\",\n sortable: false\n }]\n };\n },\n mounted: function mounted() {\n this.loadData();\n },\n methods: {\n loadData: function loadData() {\n var _this = this;\n axios.get(\"/api/banner/index\").then(function (response) {\n _this.data = response.data;\n });\n },\n edit: function edit(id) {\n window.location.href = \"/panel-administracion/banner/\" + id + \"/editar\";\n },\n trash: function trash(id, name) {\n var _this2 = this;\n Swal.fire({\n title: \"Confirmación\",\n html: \"<p margin-bottom: 10px;\\\">\\n \\xBFEst\\xE1s seguro de que deseas eliminar el banner <b>\\\"\".concat(name, \"\\\"</b>?</p>\\n <p style=\\\"font-size: 0.7em;\\\">\\n Si lo eliminas, no podr\\xE1s recuperarlo.\\n </p>\"),\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Sí, eliminar\",\n cancelButtonText: \"Cancelar\"\n }).then(function (result) {\n if (result.isConfirmed) {\n axios[\"delete\"](\"/api/banner/delete/\" + id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n Swal.fire({\n title: \"Eliminado\",\n text: \"Se ha eliminado el banner con éxito.\",\n icon: \"success\",\n timer: 2000\n }).then(function (_) {});\n _this2.loadData();\n });\n }\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vYmFubmVyL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7OztBQWdEQSxJQUFBQSxJQUFBLEdBQUFDLG1CQUFBO0FBQ0EsaUVBQWU7RUFDZkMsSUFBQSxXQUFBQSxLQUFBO0lBQ0E7TUFDQUEsSUFBQTtNQUNBQyxNQUFBO01BQ0FDLE9BQUEsR0FDQTtRQUFBQyxJQUFBO1FBQUFDLEtBQUE7TUFBQSxHQUNBO1FBQUFELElBQUE7UUFBQUMsS0FBQTtNQUFBLEdBQ0E7UUFBQUQsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7UUFBQUMsUUFBQTtNQUFBO0lBRUE7RUFDQTtFQUNBQyxPQUFBLFdBQUFBLFFBQUE7SUFDQSxLQUFBQyxRQUFBO0VBQ0E7RUFDQUMsT0FBQTtJQUNBRCxRQUFBLFdBQUFBLFNBQUE7TUFBQSxJQUFBRSxLQUFBO01BQ0FDLEtBQUEsQ0FBQUMsR0FBQSxzQkFBQUMsSUFBQSxXQUFBQyxRQUFBO1FBQ0FKLEtBQUEsQ0FBQVQsSUFBQSxHQUFBYSxRQUFBLENBQUFiLElBQUE7TUFDQTtJQUNBO0lBQ0FjLElBQUEsV0FBQUEsS0FBQUMsRUFBQTtNQUNBQyxNQUFBLENBQUFDLFFBQUEsQ0FBQUMsSUFBQSxxQ0FBQUgsRUFBQTtJQUNBO0lBQ0FJLEtBQUEsV0FBQUEsTUFBQUosRUFBQSxFQUFBSyxJQUFBO01BQUEsSUFBQUMsTUFBQTtNQUNBdkIsSUFBQSxDQUFBd0IsSUFBQTtRQUNBQyxLQUFBO1FBQ0FDLElBQUEsMkdBQUFDLE1BQUEsQ0FDQUwsSUFBQSxrS0FHQTtRQUNBTSxJQUFBO1FBQ0FDLGdCQUFBO1FBQ0FDLGtCQUFBO1FBQ0FDLGlCQUFBO1FBQ0FDLGlCQUFBO1FBQ0FDLGdCQUFBO01BQ0EsR0FBQW5CLElBQUEsV0FBQW9CLE1BQUE7UUFDQSxJQUFBQSxNQUFBLENBQUFDLFdBQUE7VUFDQXZCLEtBQUEsVUFDQSx5QkFBQUssRUFBQTtZQUNBYixPQUFBO2NBQ0FnQyxhQUFBLEVBQUFDLEVBQUE7Y0FDQUMsTUFBQTtZQUNBO1VBQ0EsR0FDQXhCLElBQUEsV0FBQUMsUUFBQTtZQUNBZixJQUFBLENBQUF3QixJQUFBO2NBQ0FDLEtBQUE7Y0FDQXBCLElBQUE7Y0FDQXVCLElBQUE7Y0FDQVcsS0FBQTtZQUNBLEdBQUF6QixJQUFBLFdBQUEwQixDQUFBO1lBQ0FqQixNQUFBLENBQUFkLFFBQUE7VUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9iYW5uZXIvaW5kZXgudnVlP2NhZTYiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8di1hcHA+XG4gICAgPHYtY2FyZCB2LWlmPVwiZGF0YVwiPlxuICAgICAgPHYtY2FyZC10aXRsZT5cbiAgICAgICAgQWRtaW5pc3RyYWNpw7NuIGRlIEJhbm5lcnNcbiAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgIDx2LXRleHQtZmllbGRcbiAgICAgICAgICB2LW1vZGVsPVwic2VhcmNoXCJcbiAgICAgICAgICBhcHBlbmQtaWNvbj1cIm1kaS1tYWduaWZ5XCJcbiAgICAgICAgICBsYWJlbD1cIkJ1c2NhclwiXG4gICAgICAgICAgc2luZ2xlLWxpbmVcbiAgICAgICAgICBoaWRlLWRldGFpbHNcbiAgICAgICAgPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICA8di1kYXRhLXRhYmxlXG4gICAgICAgIDpoZWFkZXJzPVwiaGVhZGVyc1wiXG4gICAgICAgIDppdGVtcz1cImRhdGFcIlxuICAgICAgICBjbGFzcz1cImVsZXZhdGlvbi0xXCJcbiAgICAgICAgOnNlYXJjaD1cInNlYXJjaFwiXG4gICAgICA+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5pbWFnZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHYtaW1nXG4gICAgICAgICAgICBtYXgtaGVpZ2h0PVwiNTFcIlxuICAgICAgICAgICAgbWF4LXdpZHRoPVwiOTBcIlxuICAgICAgICAgICAgY29udGFpblxuICAgICAgICAgICAgOnNyYz1cIml0ZW0uaW1hZ2VuXCJcbiAgICAgICAgICA+PC92LWltZ1xuICAgICAgICA+PC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFjdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInByaW1hcnlcIiBmYWIgeC1zbWFsbCBkYXJrIEBjbGljaz1cImVkaXQoaXRlbS5pZClcIj5cbiAgICAgICAgICAgIDx2LWljb24+IG1kaS1wZW5jaWwgPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICA8di1idG5cbiAgICAgICAgICAgIGNvbG9yPVwid2FybmluZ1wiXG4gICAgICAgICAgICBmYWJcbiAgICAgICAgICAgIHgtc21hbGxcbiAgICAgICAgICAgIGRhcmtcbiAgICAgICAgICAgIEBjbGljaz1cInRyYXNoKGl0ZW0uaWQsIGl0ZW0udGl0bGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8di1pY29uPiBtZGktZGVsZXRlIDwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L3YtZGF0YS10YWJsZT5cbiAgICA8L3YtY2FyZD5cbiAgPC92LWFwcD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5jb25zdCBTd2FsID0gcmVxdWlyZShcInN3ZWV0YWxlcnQyXCIpO1xuZXhwb3J0IGRlZmF1bHQge1xuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBudWxsLFxuICAgICAgc2VhcmNoOiBcIlwiLFxuICAgICAgaGVhZGVyczogW1xuICAgICAgICB7IHRleHQ6IFwiVGl0dWxvXCIsIHZhbHVlOiBcInRpdGxlXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkJhbm5lclwiLCB2YWx1ZTogXCJpbWFnZVwiIH0sXG4gICAgICAgIHsgdGV4dDogXCJQYWdpbmFcIiwgdmFsdWU6IFwibmFtZVwiIH0sXG4gICAgICAgIHsgdGV4dDogXCJBY2Npb25lc1wiLCB2YWx1ZTogXCJhY3Rpb25zXCIsIHNvcnRhYmxlOiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGxvYWREYXRhKCkge1xuICAgICAgYXhpb3MuZ2V0KFwiL2FwaS9iYW5uZXIvaW5kZXhcIikudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZWRpdChpZCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9wYW5lbC1hZG1pbmlzdHJhY2lvbi9iYW5uZXIvXCIgKyBpZCArIFwiL2VkaXRhclwiO1xuICAgIH0sXG4gICAgdHJhc2goaWQsIG5hbWUpIHtcbiAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgIHRpdGxlOiBcIkNvbmZpcm1hY2nDs25cIixcbiAgICAgICAgaHRtbDogYDxwIG1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBkZXNlYXMgZWxpbWluYXIgZWwgYmFubmVyIDxiPlwiJHtuYW1lfVwiPC9iPj88L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOiAwLjdlbTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNpIGxvIGVsaW1pbmFzLCBubyBwb2Ryw6FzIHJlY3VwZXJhcmxvLlxuICAgICAgICAgICAgICAgICAgICA8L3A+YCxcbiAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCIsXG4gICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogXCIjMzA4NWQ2XCIsXG4gICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiNkMzNcIixcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiU8OtLCBlbGltaW5hclwiLFxuICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiBcIkNhbmNlbGFyXCIsXG4gICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xuICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAuZGVsZXRlKFwiL2FwaS9iYW5uZXIvZGVsZXRlL1wiICsgaWQsIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IEFULFxuICAgICAgICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiRWxpbWluYWRvXCIsXG4gICAgICAgICAgICAgICAgdGV4dDogXCJTZSBoYSBlbGltaW5hZG8gZWwgYmFubmVyIGNvbiDDqXhpdG8uXCIsXG4gICAgICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgdGltZXI6IDIwMDAsXG4gICAgICAgICAgICAgIH0pLnRoZW4oKF8pID0+IHt9KTtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG4iXSwibmFtZXMiOlsiU3dhbCIsInJlcXVpcmUiLCJkYXRhIiwic2VhcmNoIiwiaGVhZGVycyIsInRleHQiLCJ2YWx1ZSIsInNvcnRhYmxlIiwibW91bnRlZCIsImxvYWREYXRhIiwibWV0aG9kcyIsIl90aGlzIiwiYXhpb3MiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJlZGl0IiwiaWQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJ0cmFzaCIsIm5hbWUiLCJfdGhpczIiLCJmaXJlIiwidGl0bGUiLCJodG1sIiwiY29uY2F0IiwiaWNvbiIsInNob3dDYW5jZWxCdXR0b24iLCJjb25maXJtQnV0dG9uQ29sb3IiLCJjYW5jZWxCdXR0b25Db2xvciIsImNvbmZpcm1CdXR0b25UZXh0IiwiY2FuY2VsQnV0dG9uVGV4dCIsInJlc3VsdCIsImlzQ29uZmlybWVkIiwiQXV0aG9yaXphdGlvbiIsIkFUIiwiQWNjZXB0IiwidGltZXIiLCJfIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/index.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/create.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/create.vue?vue&type=script&lang=js& ***!
\******************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/conference/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/conference/store\", result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"El Congreso ha sido creado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/congresos\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo crear el congreso. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9jcmVhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7Ozs7OzsrQ0FPQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsQ0FBQU8sS0FBQSxLQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFOLENBQUEsQ0FBQU8sV0FBQSw4QkFBQUMsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUssY0FBQSxDQUFBUCxDQUFBLEVBQUFELENBQUEsSUFBQVMsS0FBQSxFQUFBUCxDQUFBLEVBQUFpQixVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBcEIsQ0FBQSxDQUFBRCxDQUFBLFdBQUFrQixNQUFBLG1CQUFBakIsQ0FBQSxJQUFBaUIsTUFBQSxZQUFBQSxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsZ0JBQUFv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QXVHLENBQUE7NEJBQ0FGLFFBQUEsQ0FBQUcsTUFBQTswQkFDQTt3QkFDQTtzQkFDQTtvQkFBQTtvQkFBQTtzQkFBQSxPQUFBZixRQUFBLENBQUE5QyxJQUFBO2tCQUFBO2dCQUFBLEdBQUEwQyxPQUFBO2NBQUEsQ0FDQSxJQUFBdEIsS0FBQSxPQUFBRCxTQUFBO1lBQUE7VUFBQTtVQUFBO1lBQUEsT0FBQWlCLFNBQUEsQ0FBQXBDLElBQUE7UUFBQTtNQUFBLEdBQUFpQyxRQUFBO0lBQUE7RUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9jcmVhdGUudnVlPzkxNDciXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2IHYtaWY9XCJzdXJ2ZXlcIj5cbiAgICA8U3VydmV5IDpzdXJ2ZXk9XCJzdXJ2ZXlcIj48L1N1cnZleT5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuICAgIFxuICAgIDxzY3JpcHQ+XG5pbXBvcnQgKiBhcyBTdXJ2ZXlWdWUgZnJvbSBcInN1cnZleS12dWVcIjtcbmNvbnN0IFN3YWwgPSByZXF1aXJlKFwic3dlZXRhbGVydDJcIik7XG5pbXBvcnQgeyBqc29uIH0gZnJvbSBcIi4vZm9ybVwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNvbXBvbmVudHM6IHsgU3VydmV5OiBTdXJ2ZXlWdWUuU3VydmV5IH0sXG4gIGRhdGE6ICgpID0+ICh7XG4gICAgc3VydmV5OiBudWxsLFxuICB9KSxcblxuICBhc3luYyBtb3VudGVkKCkge1xuICAgIHRoaXMuc3VydmV5ID0gbmV3IFN1cnZleVZ1ZS5Nb2RlbChqc29uKTtcblxuICAgIHRoaXMuc3VydmV5Lm9uQ29tcGxldGluZy5hZGQoYXN5bmMgZnVuY3Rpb24gKHJlc3VsdCwgb3B0aW9ucykge1xuICAgICAgb3B0aW9ucy5hbGxvd0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICBhd2FpdCBheGlvc1xuICAgICAgICAucG9zdChcIi9hcGkvY29uZmVyZW5jZS9zdG9yZVwiLCByZXN1bHQuZGF0YSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgIHRpdGxlOiBcIkFjdHVhbGl6YWRvXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiRWwgQ29uZ3Jlc28gaGEgc2lkbyBjcmVhZG8gY29uIMOpeGl0b1wiLFxuICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgLy8gIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vY29uZ3Jlc29zXCI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiTm8gc2UgcHVkbyBjcmVhciBlbCBjb25ncmVzby4gUG9yIGZhdm9yIGludGVudGUgbcOhcyB0YXJkZS5cIixcbiAgICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAvLyAgICB0aW1lcjogMzAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oKF8pID0+IHtcbiAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxufTtcbjwvc2NyaXB0PlxuICAgICJdLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIlN1cnZleVZ1ZSIsIlN3YWwiLCJyZXF1aXJlIiwianNvbiIsImNvbXBvbmVudHMiLCJTdXJ2ZXkiLCJkYXRhIiwic3VydmV5IiwibW91bnRlZCIsIl90aGlzIiwiX2NhbGxlZTIiLCJfcmVmIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiTW9kZWwiLCJvbkNvbXBsZXRpbmciLCJhZGQiLCJfeCIsIl94MiIsIl9jYWxsZWUiLCJyZXN1bHQiLCJvcHRpb25zIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImFsbG93Q29tcGxldGUiLCJheGlvcyIsInBvc3QiLCJyZXNwb25zZSIsImNvbnNvbGUiLCJsb2ciLCJmaXJlIiwidGl0bGUiLCJ0ZXh0IiwiaWNvbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsIl8iLCJyZWxvYWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/create.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/edit.vue?vue&type=script&lang=js&":
/*!****************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/edit.vue?vue&type=script&lang=js& ***!
\****************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/conference/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null,\n data: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n var self;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n self = _this;\n _context2.next = 3;\n return axios.get(\"/api/conference/edit/\" + _this.$route.params.id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n _this.data = response.data;\n console.log(_this.data);\n });\n case 3:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/conference/update/\" + self.$route.params.id, result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"El congreso ha sido actualizado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/congresos\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo actualizar el congreso. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n _this.survey.data = self.data;\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9lZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7K0NBT0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0Is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LE1BQUEsQ0FBQUMsTUFBQSxDQUFBQyxFQUFBLEVBQUFjLE1BQUEsQ0FBQTFCLElBQUEsRUFDQXhFLElBQUEsV0FBQXlGLFFBQUE7d0JBQ0FDLE9BQUEsQ0FBQUMsR0FBQSxDQUFBRixRQUFBLENBQUFqQixJQUFBO3dCQUNBLElBQUFpQixRQUFBLENBQUFqQixJQUFBOzBCQUNBTCxJQUFBLENBQUFxQyxJQUFBOzRCQUNBQyxLQUFBOzRCQUNBQyxJQUFBOzRCQUNBQyxJQUFBOzRCQUNBOzBCQUNBLEdBQUEzRyxJQUFBOzRCQUNBNEcsTUFBQSxDQUFBQyxRQUFBLENBQUFDLElBQUE7MEJBQ0E7d0JBQ0E7MEJBQ0EzQyxJQUFBLENBQUFxQyxJQUFBOzRCQUNBQyxLQUFBOzRCQUNBQyxJQUFBOzRCQUNBQyxJQUFBOzRCQUNBOzBCQUNBLEdBQUEzRyxJQUFBLFdBQUErRyxDQUFBOzRCQUNBRixRQUFBLENBQUFHLE1BQUE7MEJBQ0E7d0JBQ0E7c0JBQ0E7b0JBQUE7b0JBQUE7c0JBQUEsT0FBQVgsUUFBQSxDQUFBMUQsSUFBQTtrQkFBQTtnQkFBQSxHQUFBc0QsT0FBQTtjQUFBLENBQ0EsSUFBQWxDLEtBQUEsT0FBQUQsU0FBQTtZQUFBO1lBQ0FhLEtBQUEsQ0FBQUYsTUFBQSxDQUFBRCxJQUFBLEdBQUFaLElBQUEsQ0FBQVksSUFBQTtVQUFBO1VBQUE7WUFBQSxPQUFBTyxTQUFBLENBQUFwQyxJQUFBO1FBQUE7TUFBQSxHQUFBaUMsUUFBQTtJQUFBO0VBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb25mZXJlbmNlL2VkaXQudnVlP2Y4MjYiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgdi1pZj1cInN1cnZleVwiPlxuICAgICAgPFN1cnZleSA6c3VydmV5PVwic3VydmV5XCI+PC9TdXJ2ZXk+XG4gICAgPC9kaXY+XG4gIDwvdGVtcGxhdGU+XG4gICAgICBcbiAgICAgIDxzY3JpcHQ+XG4gIGltcG9ydCAqIGFzIFN1cnZleVZ1ZSBmcm9tIFwic3VydmV5LXZ1ZVwiO1xuICBjb25zdCBTd2FsID0gcmVxdWlyZShcInN3ZWV0YWxlcnQyXCIpO1xuICBpbXBvcnQgeyBqc29uIH0gZnJvbSBcIi4vZm9ybVwiO1xuICBcbiAgZXhwb3J0IGRlZmF1bHQge1xuICAgIGNvbXBvbmVudHM6IHsgU3VydmV5OiBTdXJ2ZXlWdWUuU3VydmV5IH0sXG4gICAgZGF0YTogKCkgPT4gKHtcbiAgICAgIHN1cnZleTogbnVsbCxcbiAgICAgIGRhdGE6IG51bGwsXG4gICAgfSksXG4gIFxuICAgIGFzeW5jIG1vdW50ZWQoKSB7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICBhd2FpdCBheGlvc1xuICAgICAgICAuZ2V0KFwiL2FwaS9jb25mZXJlbmNlL2VkaXQvXCIgKyB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBBVCxcbiAgICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEpXG4gICAgICAgIH0pO1xuICBcbiAgICAgIHRoaXMuc3VydmV5ID0gbmV3IFN1cnZleVZ1ZS5Nb2RlbChqc29uKTtcbiAgXG4gICAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucy5hbGxvd0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgICAgLnBvc3QoXCIvYXBpL2NvbmZlcmVuY2UvdXBkYXRlL1wiICsgc2VsZi4kcm91dGUucGFyYW1zLmlkLCByZXN1bHQuZGF0YSlcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YSlcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiQWN0dWFsaXphZG9cIixcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkVsIGNvbmdyZXNvIGhhIHNpZG8gYWN0dWFsaXphZG8gY29uIMOpeGl0b1wiLFxuICAgICAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgICAgIC8vICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jb25ncmVzb3NcIjtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBcIkVycm9yIVwiLFxuICAgICAgICAgICAgICAgIHRleHQ6IFwiTm8gc2UgcHVkbyBhY3R1YWxpemFyIGVsIGNvbmdyZXNvLiBQb3IgZmF2b3IgaW50ZW50ZSBtw6FzIHRhcmRlLlwiLFxuICAgICAgICAgICAgICAgIGljb246IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICAvLyAgICB0aW1lcjogMzAwMCxcbiAgICAgICAgICAgICAgfSkudGhlbigoXykgPT4ge1xuICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdXJ2ZXkuZGF0YSA9IHNlbGYuZGF0YTtcbiAgICB9LFxuICB9O1xuICA8L3NjcmlwdD4iXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJTdXJ2ZXlWdWUiLCJTd2FsIiwicmVxdWlyZSIsImpzb24iLCJjb21wb25lbnRzIiwiU3VydmV5IiwiZGF0YSIsInN1cnZleSIsIm1vdW50ZWQiLCJfdGhpcyIsIl9jYWxsZWUyIiwiX3JlZiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImF4aW9zIiwiZ2V0IiwiJHJvdXRlIiwicGFyYW1zIiwiaWQiLCJoZWFkZXJzIiwiQXV0aG9yaXphdGlvbiIsIkFUIiwiQWNjZXB0IiwicmVzcG9uc2UiLCJjb25zb2xlIiwibG9nIiwiTW9kZWwiLCJvbkNvbXBsZXRpbmciLCJhZGQiLCJfeCIsIl94MiIsIl9jYWxsZWUiLCJyZXN1bHQiLCJvcHRpb25zIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImFsbG93Q29tcGxldGUiLCJwb3N0IiwiZmlyZSIsInRpdGxlIiwidGV4dCIsImljb24iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJfIiwicmVsb2FkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/edit.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/gallery.vue?vue&type=script&lang=js&":
/*!*******************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/gallery.vue?vue&type=script&lang=js& ***!
\*******************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null,\n data: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n var self, json;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n self = _this;\n _context2.next = 3;\n return axios.get(\"/api/conference/edit-gallery/\" + _this.$route.params.id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n _this.data = response.data;\n console.log(_this.data);\n });\n case 3:\n json = {\n locale: \"es\",\n title: \"Galeria\",\n pages: [{\n name: \"page1\",\n elements: [{\n type: \"file\",\n name: \"images\",\n title: \"Imagenes\",\n hideNumber: true,\n allowMultiple: true,\n acceptedTypes: \".jpg\",\n needConfirmRemoveFile: true\n }]\n }],\n showCompletedPage: false\n };\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(json);\n _this.survey.onComplete.add(function (_x) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return axios.post(\"/api/conference/update-gallery/\" + self.$route.params.id, result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"La galeria ha sido actualizado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/banner\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo actualizar la galeria. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 2:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n _this.survey.data = self.data;\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9nYWxsZXJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7Ozs7OzsrQ0FPQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsQ0FBQU8sS0FBQSxLQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFOLENBQUEsQ0FBQU8sV0FBQSw4QkFBQUMsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUssY0FBQSxDQUFBUCxDQUFBLEVBQUFELENBQUEsSUFBQVMsS0FBQSxFQUFBUCxDQUFBLEVBQUFpQixVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBcEIsQ0FBQSxDQUFBRCxDQUFBLFdBQUFrQixNQUFBLG1CQUFBakIsQ0FBQSxJQUFBaUIsTUFBQSxZQUFBQSxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsZ0JBQUFvQixLQUFBckIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxRQUFBSyxDQUFBLEdBQUFWLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxTQUFBLFlBQUFtQixTQUFBLEdBQUF2QixDQUFBLEdBQUF1QixTQUFBLEVBQUFYLENBQUEsR0FBQVQsTUFBQSxDQUFBcUIsTUFBQSxDQUFBZCxDQUFBLENBQUFOLFNBQUEsR0FBQVUsQ0FBQSxPQUFBVyxPQUFBLENBQUFwQixDQUFBLGdCQUFBRSxDQUFBLENBQUFLLENBQUEsZUFBQUgsS0FBQSxFQUFBaUIsZ0JBQUEsQ0FBQXpCLENBQUEsRUFBQUMsQ0FBQSxFQUFBWSxDQUFBLE1BQUFGLENBQUEsYUFBQWUsU0FBQTFCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLG1CQUFBMEIsSUFBQSxZQUFBQyxHQUFBLEVBQUE1QixDQUFBLENBQUE2QixJQUFBLENBQUE5QixDQUFBLEVBQUFFLENBQUEsY0FBQUQsQ0FBQSxhQUFBMkIsSUFBQSxXQUFBQyxHQUFBLEVBQUE1QixDQUFBLFFBQUFELENBQUEsQ0FBQXNCLElBQUEsR0FBQUEsSUFBQSxNQUFBUyxDQUFBLHFCQUFBQyxDQUFBLHFCQUFBQyxDQUFBLGdCQUFBQyxDQUFBLGdCQUFBQyxDQUFBLGdCQUFBWixVQUFBLGNBQUFhLGtCQUFBLGNBQUFDLDJCQUFBLFNBQUFDLENBQUEsT0FBQXBCLE1BQUEsQ0FBQW9CLENBQUEsRUFBQTFCLENBQUEscUNBQUEyQixDQUFBLEdBQUFwQyxNQUFBLENBQUFxQyxjQUFBLEVBQUFDLENBQUEsR0FBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFBLENBQUEsQ0FBQUcsTUFBQSxRQUFBRCxDQUFBLElBQUFBLENBQUEsS0FBQXZDLENBQUEsSUFBQUcsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBVyxDQUFBLEVBQUE3QixDQUFBLE1BQUEwQixDQUFBLEdBQUFHLENBQUEsT0FBQUUsQ0FBQSxHQUFBTiwwQkFBQSxDQUFBakMsU0FBQSxHQUFBbUIsU0FBQSxDQUFBbkIsU0FBQSxHQUFBRCxNQUFBLENBQUFxQixNQUFBLENBQUFjLENBQUEsWUFBQU0sc0JBQUEzQyxDQUFBLGdDQUFBNEMsT0FBQSxXQUFBN0MsQ0FBQSxJQUFBa0IsTUFBQSxDQUFBakIsQ0FBQSxFQUFBRCxDQUFBLFlBQUFDLENBQUEsZ0JBQUE2QyxPQUFBLENBQUE5QyxDQUFBLEVBQUFDLENBQUEsc0JBQUE4QyxjQUFBOUMsQ0FBQSxFQUFBRCxDQUFBLGFBQUFnRCxPQUFBOUMsQ0FBQSxFQUFBSyxDQUFBLEVBQUFHLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEdBQUFhLFFBQUEsQ0FBQTFCLENBQUEsQ0FBQUMsQ0FBQSxHQUFBRCxDQUFBLEVBQUFNLENBQUEsbUJBQUFPLENBQUEsQ0FBQWMsSUFBQSxRQUFBWixDQUFBLEdBQUFGLENBQUEsQ0FBQWUsR0FBQSxFQUFBRSxDQUFBLEdBQUFmLENBQUEsQ0FBQVAsS0FBQSxTQUFBc0IsQ0FBQSxnQkFBQWtCLE9BQUEsQ0FBQWxCLENBQUEsS0FBQTFCLENBQUEsQ0FBQXlCLElBQUEsQ0FBQUMsQ0FBQSxlQUFBL0IsQ0FBQSxDQUFBa0QsT0FBQSxDQUFBbkIsQ0FBQSxDQUFBb0IsT0FBQSxFQUFBQyxJQUFBLFdBQUFuRCxDQUFBLElBQUErQyxNQUFBLFNBQUEvQyxDQUFBLEVBQUFTLENBQUEsRUFBQUUsQ0FBQSxnQkFBQVgsQ0FBQSxJQUFBK0MsTUFBQSxVQUFBL0MsQ0FBQSxFQUFBUyxDQUFBLEVBQUFFLENBQUEsUUFBQVosQ0FBQSxDQUFBa0QsT0FBQSxDQUFBbkIsQ0FBQSxFQUFBcUIsSUFBQSxXQUFBbkQsQ0FBQSxJQUFBZSxDQUFBLENBQUFQLEtBQUEsR0FBQVIsQ0FBQSxFQUFBUyxDQUFBLENBQUFNLENBQUEsZ0JBQUFmLENBQUEsV0FBQStDLE1BQUEsVUFBQS9DLENBQUEsRUFBQVMsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsQ0FBQUUsQ0FBQSxDQUFBZSxHQUFBLFNBQUEzQixDQUFBLEVBQUFLLENBQUEsb0JBQUFFLEtBQUEsV0FBQUEsTUFBQVIsQ0FBQSxFQUFBSSxDQUFBLGFBQUFnRCwyQkFBQSxlQUFBckQsQ0FBQSxXQUFBQSxDQUFBLEVBQUFFLENBQUEsSUFBQThDLE1BQUEsQ0FBQS9DLENBQUEsRUFBQUksQ0FBQSxFQUFBTCxDQUFBLEVBQUFFLENBQUEsZ0JBQUFBLENBQUEsR0FBQUEsQ0FBQSxHQUFBQSxDQUFBLENBQUFrRCxJQUFBLENBQUFDLDBCQUFBLEVBQUFBLDBCQUFBLElBQUFBLDBCQUFBLHFCQUFBM0IsaUJBQUExQixDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxRQUFBRSxDQUFBLEdBQUF3QixDQUFBLG1CQUFBckIsQ0FBQSxFQUFBRSxDQUFBLFFBQUFMLENBQUEsS0FBQTBCLENBQUEsWUFBQXFCLEtBQUEsc0NBQUEvQyxDQUFBLEtBQUEyQixDQUFBLG9CQUFBeEIsQ0FBQSxRQUFBRSxDQUFBLFdBQUFILEtBQUEsRUFBQVIsQ0FBQSxFQUFBc0QsSUFBQSxlQUFBbEQsQ0FBQSxDQUFBbUQsTUFBQSxHQUFBOUMsQ0FBQSxFQUFBTCxDQUFBLENBQUF3QixHQUFBLEdBQUFqQixDQUFBLFVBQUFFLENBQUEsR0FBQVQsQ0FBQSxDQUFBb0QsUUFBQSxNQUFBM0MsQ0FBQSxRQUFBRSxDQUFBLEdBQUEwQyxtQkFBQSxDQUFBNUMsQ0FBQSxFQUFBVCxDQUFBLE9BQUFXLENBQUEsUUFBQUEsQ0FBQSxLQUFBbUIsQ0FBQSxtQkFBQW5CLENBQUEscUJBQUFYLENBQUEsQ0FBQW1ELE1BQUEsRUFBQW5ELENBQUEsQ0FBQXNELElBQUEsR0FBQXRELENBQUEsQ0FBQXVELEtBQUEsR0FBQXZELENBQUEsQ0FBQXdCLEdBQUEsc0JBQUF4QixDQUFBLENBQUFtRCxNQUFBLFFBQUFqRCxDQUFBLEtBQUF3QixDQUFBLFFBQUF4QixDQUFBLEdBQUEyQixDQUFBLEVBQUE3QixDQUFBLENBQUF3QixHQUFBLEVBQUF4QixDQUFBLENBQUF3RCxpQkFBQSxDQUFBeEQsQ0FBQSxDQUFBd0IsR0FBQSx1QkFBQXhCLENBQUEsQ0FBQW1ELE1BQUEsSUFBQW5ELENBQUEsQ0FBQXlELE1BQUEsV0FBQXpELENBQUEsQ0FBQXdCLEdBQUEsR0FBQXRCLENBQUEsR0FBQTBCLENBQUEsTUFBQUssQ0FBQSxHQUFBWCxRQUFBLENBQUEzQixDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxvQkFBQWlDLENBQUEsQ0FBQVYsSUFBQSxRQUFBckIsQ0FBQSxHQUFBRixDQUFBLENBQUFrRCxJQUFBLEdBQUFyQixDQUFBLEdBQUFGLENBQUEsRUFBQU0sQ0FBQSxDQUFBVCxHQUFBLEtBQUFNLENBQUEscUJBQUExQixLQUFBLEVBQUE2QixDQUFBLENBQUFULEdBQUEsRUFBQTBCLElBQUEsRUFBQWxELENBQUEsQ0FBQWtELElBQUEsa0JBQUFqQixDQUFBLENBQUFWLElBQUEsS0FBQXJCLENBQUEsR0FBQTJCLENBQUEsRUFBQTdCLENBQUEsQ0FBQW1ELE1BQUEsWUFBQW5ELENBQUEsQ0FBQXdCLEdBQUEsR0FBQVMsQ0FBQSxDQUFBVCxHQUFBLG1CQUFBNkIsb0JBQUExRCxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxHQUFBSCxDQUFBLENBQUFzRCxNQUFBLEVBQUFqRCxDQUFBLEdBQUFQLENBQUEsQ0FBQWEsUUFBQSxDQUFBUixDQUFBLE9BQUFFLENBQUEsS0FBQU4sQ0FBQSxTQUFBQyxDQUFBLENBQUF1RCxRQUFBLHFCQUFBcEQsQ0FBQSxJQUFBTCxDQUFBLENBQUFhLFFBQUEsZUFBQVgsQ0FBQSxDQUFBc0QsTUFBQSxhQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxHQUFBNUIsQ0FBQSxFQUFBeUQsbUJBQUEsQ0FBQTFELENBQUEsRUFBQUUsQ0FBQSxlQUFBQSxDQUFBLENBQUFzRCxNQUFBLGtCQUFBbkQsQ0FBQSxLQUFBSCxDQUFBLENBQUFzRCxNQUFBLFlBQUF0RCxDQUFBLENBQUEyQixHQUFBLE9BQUFrQyxTQUFBLHVDQUFBMUQsQ0FBQSxpQkFBQThCLENBQUEsTUFBQXpCLENBQUEsR0FBQWlCLFFBQUEsQ0FBQXBCLENBQUEsRUFBQVAsQ0FBQSxDQUFBYSxRQUFBLEVBQUFYLENBQUEsQ0FBQTJCLEdBQUEsbUJBQUFuQixDQUFBLENBQUFrQixJQUFBLFNBQUExQixDQUFBLENBQUFzRCxNQUFBLFlBQUF0RCxDQUFBLENBQUEyQixHQUFBLEdBQUFuQixDQUFBLENBQUFtQixHQUFBLEVBQUEzQixDQUFBLENBQUF1RCxRQUFBLFNBQUF0QixDQUFBLE1BQUF2QixDQUFBLEdBQUFGLENBQUEsQ0FBQW1CLEdBQUEsU0FBQWpCLENBQUEsR0FBQUEsQ0FBQSxDQUFBMkMsSUFBQSxJQUFBckQsQ0FBQSxDQUFBRixDQUFBLENBQUFnRSxVQUFBLElBQUFwRCxDQUFBLENBQUFILEtBQUEsRUFBQVAsQ0FBQSxDQUFBK0QsSUFBQSxHQUFBakUsQ0FBQSxDQUFBa0UsT0FBQSxlQUFBaEUsQ0FBQSxDQUFBc0QsTUFBQSxLQUFBdEQsQ0FBQSxDQUFBc0QsTUFBQSxXQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxHQUFBNUIsQ0FBQSxHQUFBQyxDQUFBLENBQUF1RCxRQUFBLFNBQUF0QixDQUFBLElBQUF2QixDQUFBLElBQUFWLENBQUEsQ0FBQXNELE1BQUEsWUFBQXRELENBQUEsQ0FBQTJCLEdBQUEsT0FBQWtDLFNBQUEsc0NBQUE3RCxDQUFBLENBQUF1RCxRQUFBLFNBQUF0QixDQUFBLGNBQUFnQyxhQUFBbEUsQ0FBQSxRQUFBRCxDQUFBLEtBQUFvRSxNQUFBLEVBQUFuRSxDQUFBLFlBQUFBLENBQUEsS0FBQUQsQ0FBQSxDQUFBcUUsUUFBQSxHQUFBcEUsQ0FBQSxXQUFBQSxDQUFBLEtBQUFELENBQUEsQ0FBQXNFLFVBQUEsR0FBQXJFLENBQUEsS0FBQUQsQ0FBQSxDQUFBdUUsUUFBQSxHQUFBdEUsQ0FBQSxXQUFBdUUsVUFBQSxDQUFBQyxJQUFBLENBQUF6RSxDQUFBLGNBQUEwRSxjQUFBekUsQ0FBQSxRQUFBRCxDQUFBLEdBQUFDLENBQUEsQ0FBQTBFLFVBQUEsUUFBQTNFLENBQUEsQ0FBQTRCLElBQUEsb0JBQUE1QixDQUFBLENBQUE2QixHQUFBLEVBQUE1QixDQUFBLENBQUEwRSxVQUFBLEdBQUEzRSxDQUFBLGFBQUF5QixRQUFBeEIsQ0FBQSxTQUFBdUUsVUFBQSxNQUFBSixNQUFBLGFBQUFuRSxDQUFBLENBQUE0QyxPQUFBLENBQUFzQixZQUFBLGNBQUFTLEtBQUEsaUJBQUFsQyxPQUFBMUMsQ0FBQSxRQUFBQSxDQUFBLFdBQUFBLENBQUEsUUFBQUUsQ0FBQSxHQUFBRixDQUFBLENBQUFZLENBQUEsT0FBQVYsQ0FBQSxTQUFBQSxDQUFBLENBQUE0QixJQUFBLENBQUE5QixDQUFBLDRCQUFBQSxDQUFBLENBQUFpRSxJQUFBLFNBQUFqRSxDQUFBLE9BQUE2RSxLQUFBLENBQUE3RSxDQUFBLENBQUE4RSxNQUFBLFNBQUF2RSxDQUFBLE9BQUFHLENBQUEsWUFBQXVELEtBQUEsYUFBQTFELENBQUEsR0FBQVAsQ0FBQSxDQUFBOEUsTUFBQSxPQUFBekUsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBOUIsQ0FBQSxFQUFBTyxDQUFBLFVBQUEwRCxJQUFBLENBQUF4RCxLQUFBLEdBQUFULENBQUEsQ0FBQU8sQ0FBQSxHQUFBMEQsSUFBQSxDQUFBVixJQUFBLE9BQUFVLElBQUEsU0FBQUEsSUFBQSxDQUFBeEQsS0FBQSxHQUFBUixDQUFBLEVBQUFnRSxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxZQUFBdkQsQ0FBQSxDQUFBdUQsSUFBQSxHQUFBdkQsQ0FBQSxnQkFBQXFELFNBQUEsQ0FBQWQsT0FBQSxDQUFBakQsQ0FBQSxrQ0FBQW9DLGlCQUFBLENBQUFoQyxTQUFBLEdBQUFpQywwQkFBQSxFQUFBOUIsQ0FBQSxDQUFBb0MsQ0FBQSxtQkFBQWxDLEtBQUEsRUFBQTRCLDBCQUFBLEVBQUFqQixZQUFBLFNBQUFiLENBQUEsQ0FBQThCLDBCQUFBLG1CQUFBNUIsS0FBQSxFQUFBMkIsaUJBQUEsRUFBQWhCLFlBQUEsU0FBQWdCLGlCQUFBLENBQUEyQyxXQUFBLEdBQUE3RCxNQUFBLENBQUFtQiwwQkFBQSxFQUFBckIsQ0FBQSx3QkFBQWhCLENBQUEsQ0FBQWdGLG1CQUFBLGFBQUEvRSxDQUFBLFFBQUFELENBQUEsd0JBQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBZ0YsV0FBQSxXQUFBakYsQ0FBQSxLQUFBQSxDQUFBLEtBQUFvQyxpQkFBQSw2QkFBQXBDLENBQUEsQ0FBQStFLFdBQUEsSUFBQS9FLENBQUEsQ0FBQWtGLElBQUEsT0FBQWxGLENBQUEsQ0FBQW1GLElBQUEsYUFBQWxGLENBQUEsV0FBQUUsTUFBQSxDQUFBaUYsY0FBQSxHQUFBakYsTUFBQSxDQUFBaUYsY0FBQSxDQUFBbkYsQ0FBQSxFQUFBb0MsMEJBQUEsS0FBQXBDLENBQUEsQ0FBQW9GLFNBQUEsR0FBQWhELDBCQUFBLEVBQUFuQixNQUFBLENBQUFqQixDQUFBLEVBQUFlLENBQUEseUJBQUFmLENBQUEsQ0FBQUcsU0FBQSxHQUFBRCxNQUFBLENBQUFxQixNQUFBLENBQUFtQixDQUFBLEdBQUExQyxDQUFBLEtBQUFELENBQUEsQ0FBQXNGLEtBQUEsYUFBQXJGLENBQUEsYUFBQWtELE9BQUEsRUFBQWxELENBQUEsT0FBQTJDLHFCQUFBLENBQUFHLGFBQUEsQ0FBQTNDLFNBQUEsR0FBQWMsTUFBQSxDQUFBNkIsYUFBQSxDQUFBM0MsU0FBQSxFQUFBVSxDQUFBLGlDQUFBZCxDQUFBLENBQUErQyxhQUFBLEdBQUFBLGFBQUEsRUFBQS9DLENBQUEsQ0FBQXVGLEtBQUEsYUFBQXRGLENBQUEsRUFBQUMsQ0FBQSxFQUFBRyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxlQUFBQSxDQUFBLEtBQUFBLENBQUEsR0FBQThFLE9BQUEsT0FBQTVFLENBQUEsT0FBQW1DLGFBQUEsQ0FBQXpCLElBQUEsQ0FBQXJCLENBQUEsRUFBQUMsQ0FBQSxFQUFBRyxDQUFBLEVBQUFFLENBQUEsR0FBQUcsQ0FBQSxVQUFBVixDQUFBLENBQUFnRixtQkFBQSxDQUFBOUUsQ0FBQSxJQUFBVSxDQUFBLEdBQUFBLENBQUEsQ0FBQXFELElBQUEsR0FBQWIsSUFBQSxXQUFBbkQsQ0FBQSxXQUFBQSxDQUFBLENBQUFzRCxJQUFBLEdBQUF0RCxDQUFBLENBQUFRLEtBQUEsR0FBQUcsQ0FBQSxDQUFBcUQsSUFBQSxXQUFBckIscUJBQUEsQ0FBQUQsQ0FBQSxHQUFBekIsTUFBQSxDQUFBeUIsQ0FBQSxFQUFBM0IsQ0FBQSxnQkFBQUUsTUFBQSxDQUFBeUIsQ0FBQSxFQUFBL0IsQ0FBQSxpQ0FBQU0sTUFBQSxDQUFBeUIsQ0FBQSw2REFBQTNDLENBQUEsQ0FBQXlGLElBQUEsYUFBQXhGLENBQUEsUUFBQUQsQ0FBQSxHQUFBRyxNQUFBLENBQUFGLENBQUEsR0FBQUMsQ0FBQSxnQkFBQUcsQ0FBQSxJQUFBTCxDQUFBLEVBQUFFLENBQUEsQ0FBQXVFLElBQUEsQ0FBQXBFLENBQUEsVUFBQUgsQ0FBQSxDQUFBd0YsT0FBQSxhQUFBekIsS0FBQSxXQUFBL0QsQ0FBQSxDQUFBNEUsTUFBQSxTQUFBN0UsQ0FBQSxHQUFBQyxDQUFBLENBQUF5RixHQUFBLFFBQUExRixDQUFBLElBQUFELENBQUEsU0FBQWlFLElBQUEsQ0FBQXhELEtBQUEsR0FBQVIsQ0FBQSxFQUFBZ0UsSUFBQSxDQUFBVixJQUFBLE9BQUFVLElBQUEsV0FBQUEsSUFBQSxDQUFBVixJQUFBLE9BQUFVLElBQUEsUUFBQWpFLENBQUEsQ0FBQTBDLE1BQUEsR0FBQUEsTUFBQSxFQUFBakIsT0FBQSxDQUFBckIsU0FBQSxLQUFBNkUsV0FBQSxFQUFBeEQsT0FBQSxFQUFBbUQsS0FBQSxXQUFBQSxNQUFBNUUsQ0FBQSxhQUFBNEYsSUFBQSxXQUFBM0IsSUFBQSxXQUFBTixJQUFBLFFBQUFDLEtBQUEsR0FBQTNELENBQUEsT0FBQXNELElBQUEsWUFBQUUsUUFBQSxjQUFBRCxNQUFBLGdCQUFBM0IsR0FBQSxHQUFBNUIsQ0FBQSxPQUFBdUUsVUFBQSxDQUFBM0IsT0FBQSxDQUFBNkIsYUFBQSxJQUFBMUUsQ0FBQSxXQUFBRSxDQUFBLGtCQUFBQSxDQUFBLENBQUEyRixNQUFBLE9BQUF4RixDQUFBLENBQUF5QixJQUFBLE9BQUE1QixDQUFBLE1BQUEyRSxLQUFBLEVBQUEzRSxDQUFBLENBQUE0RixLQUFBLGNBQUE1RixDQUFBLElBQUFELENBQUEsTUFBQThGLElBQUEsV0FBQUEsS0FBQSxTQUFBeEMsSUFBQSxXQUFBdEQsQ0FBQSxRQUFBdUUsVUFBQSxJQUFBRyxVQUFBLGtCQUFBMUUsQ0FBQSxDQUFBMkIsSUFBQSxRQUFBM0IsQ0FBQSxDQUFBNEIsR0FBQSxjQUFBbUUsSUFBQSxLQUFBbkMsaUJBQUEsV0FBQUEsa0JBQUE3RCxDQUFBLGFBQUF1RCxJQUFBLFFBQUF2RCxDQUFBLE1BQUFFLENBQUEsa0JBQUErRixPQUFBNUYsQ0FBQSxFQUFBRSxDQUFBLFdBQUFLLENBQUEsQ0FBQWdCLElBQUEsWUFBQWhCLENBQUEsQ0FBQWlCLEdBQUEsR0FBQTdCLENBQUEsRUFBQUUsQ0FBQSxDQUFBK0QsSUFBQSxHQUFBNUQsQ0FBQSxFQUFBRSxDQUFBLEtBQUFMLENBQUEsQ0FBQXNELE1BQUEsV0FBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQTVCLENBQUEsS0FBQU0sQ0FBQSxhQUFBQSxDQUFBLFFBQUFpRSxVQUFBLENBQUFNLE1BQUEsTUFBQXZFLENBQUEsU0FBQUEsQ0FBQSxRQUFBRyxDQUFBLFFBQUE4RCxVQUFBLENBQUFqRSxDQUFBLEdBQUFLLENBQUEsR0FBQUYsQ0FBQSxDQUFBaUUsVUFBQSxpQkFBQWpFLENBQUEsQ0FBQTBELE1BQUEsU0FBQTZCLE1BQUEsYUFBQXZGLENBQUEsQ0FBQTBELE1BQUEsU0FBQXdCLElBQUEsUUFBQTlFLENBQUEsR0FBQVQsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBcEIsQ0FBQSxlQUFBTSxDQUFBLEdBQUFYLENBQUEsQ0FBQXlCLElBQUEsQ0FBQXBCLENBQUEscUJBQUFJLENBQUEsSUFBQUUsQ0FBQSxhQUFBNEUsSUFBQSxHQUFBbEYsQ0FBQSxDQUFBMkQsUUFBQSxTQUFBNEIsTUFBQSxDQUFBdkYsQ0FBQSxDQUFBMkQsUUFBQSxnQkFBQXVCLElBQUEsR0FBQWxGLENBQUEsQ0FBQTRELFVBQUEsU0FBQTJCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTRELFVBQUEsY0FBQXhELENBQUEsYUFBQThFLElBQUEsR0FBQWxGLENBQUEsQ0FBQTJELFFBQUEsU0FBQTRCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTJELFFBQUEscUJBQUFyRCxDQUFBLFlBQUFzQyxLQUFBLHFEQUFBc0MsSUFBQSxHQUFBbEYsQ0FBQSxDQUFBNEQsVUFBQSxTQUFBMkIsTUFBQSxDQUFBdkYsQ0FBQSxDQUFBNEQsVUFBQSxZQUFBUixNQUFBLFdBQUFBLE9BQUE3RCxDQUFBLEVBQUFELENBQUEsYUFBQUUsQ0FBQSxRQUFBc0UsVUFBQSxDQUFBTSxNQUFBLE1BQUE1RSxDQUFBLFNBQUFBLENBQUEsUUFBQUssQ0FBQSxRQUFBaUUsVUFBQSxDQUFBdEUsQ0FBQSxPQUFBSyxDQUFBLENBQUE2RCxNQUFBLFNBQUF3QixJQUFBLElBQUF2RixDQUFBLENBQUF5QixJQUFBLENBQUF2QixDQUFBLHdCQUFBcUYsSUFBQSxHQUFBckYsQ0FBQSxDQUFBK0QsVUFBQSxRQUFBNUQsQ0FBQSxHQUFBSCxDQUFBLGFBQUFHLENBQUEsaUJBQUFULENBQUEsbUJBQUFBLENBQUEsS0FBQVMsQ0FBQSxDQUFBMEQsTUFBQSxJQUFBcEUsQ0FBQSxJQUFBQSxDQUFBLElBQUFVLENBQUEsQ0FBQTRELFVBQUEsS0FBQTVELENBQUEsY0FBQUUsQ0FBQSxHQUFBRixDQUFBLEdBQUFBLENBQUEsQ0FBQWlFLFVBQUEsY0FBQS9ELENBQUEsQ0FBQWdCLElBQUEsR0FBQTNCLENBQUEsRUFBQVcsQ0FBQSxDQUFBaUIsR0FBQSxHQUFBN0IsQ0FBQSxFQUFBVSxDQUFBLFNBQUE4QyxNQUFBLGdCQUFBUyxJQUFBLEdBQUF2RCxDQUFBLENBQUE0RCxVQUFBLEVBQUFuQyxDQUFBLFNBQUErRCxRQUFBLENBQUF0RixDQUFBLE1BQUFzRixRQUFBLFdBQUFBLFNBQUFqRyxDQUFBLEVBQUFELENBQUEsb0JBQUFDLENBQUEsQ0FBQTJCLElBQUEsUUFBQTNCLENBQUEsQ0FBQTRCLEdBQUEscUJBQUE1QixDQUFBLENBQUEyQixJQUFBLG1CQUFBM0IsQ0FBQSxDQUFBMkIsSUFBQSxRQUFBcUMsSUFBQSxHQUFBaEUsQ0FBQSxDQUFBNEIsR0FBQSxnQkFBQTVCLENBQUEsQ0FBQTJCLElBQUEsU0FBQW9FLElBQUEsUUFBQW5FLEdBQUEsR0FBQTVCLENBQUEsQ0FBQTRCLEdBQUEsT0FBQTJCLE1BQUEsa0JBQUFTLElBQUEseUJBQUFoRSxDQUFBLENBQUEyQixJQUFBLElBQUE1QixDQUFBLFVBQUFpRSxJQUFBLEdBQUFqRSxDQUFBLEdBQUFtQyxDQUFBLEtBQUFnRSxNQUFBLFdBQUFBLE9BQUFsRyxDQUFBLGFBQUFELENBQUEsUUFBQXdFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBOUUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFFLENBQUEsUUFBQXNFLFVBQUEsQ0FBQXhFLENBQUEsT0FBQUUsQ0FBQSxDQUFBb0UsVUFBQSxLQUFBckUsQ0FBQSxjQUFBaUcsUUFBQSxDQUFBaEcsQ0FBQSxDQUFBeUUsVUFBQSxFQUFBekUsQ0FBQSxDQUFBcUUsUUFBQSxHQUFBRyxhQUFBLENBQUF4RSxDQUFBLEdBQUFpQyxDQUFBLHlCQUFBaUUsT0FBQW5HLENBQUEsYUFBQUQsQ0FBQSxRQUFBd0UsVUFBQSxDQUFBTSxNQUFBLE1BQUE5RSxDQUFBLFNBQUFBLENBQUEsUUFBQUUsQ0FBQSxRQUFBc0UsVUFBQSxDQUFBeEUsQ0FBQSxPQUFBRSxDQUFBLENBQUFrRSxNQUFBLEtBQUFuRSxDQUFBLFFBQUFJLENBQUEsR0FBQUgsQ0FBQSxDQUFBeUUsVUFBQSxrQkFBQXRFLENBQUEsQ0FBQXVCLElBQUEsUUFBQXJCLENBQUEsR0FBQUYsQ0FBQSxDQUFBd0IsR0FBQSxFQUFBNkMsYUFBQSxDQUFBeEUsQ0FBQSxZQUFBSyxDQUFBLGdCQUFBK0MsS0FBQSw4QkFBQStDLGFBQUEsV0FBQUEsY0FBQXJHLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLGdCQUFBb0QsUUFBQSxLQUFBNUMsUUFBQSxFQUFBNkIsTUFBQSxDQUFBMUMsQ0FBQSxHQUFBZ0UsVUFBQSxFQUFBOUQsQ0FBQSxFQUFBZ0UsT0FBQSxFQUFBN0QsQ0FBQSxvQkFBQW1ELE1BQUEsVUFBQTNCLEdBQUEsR0FBQTVCLENBQUEsR0FBQWtDLENBQUEsT0FBQW5DLENBQUE7QUFBQSxTQUFBc0csbUJBQUFDLEdBQUEsRUFBQXJELE9BQUEsRUFBQXNELE1BQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBLEVBQUFDLEdBQUEsRUFBQTlFLEdBQUEsY0FBQStFLElBQUEsR0FBQUwsR0FBQSxDQUFBSSxHQUFBLEVBQUE5RSxHQUFBLE9BQUFwQixLQUFBLEdBQUFtRyxJQUFBLENBQUFuRyxLQUFBLFdBQUFvRyxLQUFBLElBQUFMLE1BQUEsQ0FBQUssS0FBQSxpQkFBQUQsSUFBQSxDQUFBckQsSUFBQSxJQUFBTCxPQUFBLENBQUF6QyxLQUFBLFlBQUErRSxPQUFBLENBQUF0QyxPQUFBLENBQUF6QyxLQUFBLEVBQUEyQyxJQUFBLENBQUFxRCxLQUFBLEVBQUFDLE1BQUE7QUFBQSxTQUFBSSxrQkFBQUMsRUFBQSw2QkFBQUMsSUFBQSxTQUFBQyxJQUFBLEdBQUFDLFNBQUEsYUFBQTFCLE9BQUEsV0FBQXRDLE9BQUEsRUFBQXNELE1BQUEsUUFBQUQsR0FBQSxHQUFBUSxFQUFBLENBQUFJLEtBQUEsQ0FBQUgsSUFBQSxFQUFBQyxJQUFBLFlBQUFSLE1BQUFoRyxLQUFBLElBQUE2RixrQkFBQSxDQUFBQyxHQUFBLEVBQUFyRCxPQUFBLEVBQUFzRCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxVQUFBakcsS0FBQSxjQUFBaUcsT0FBQVUsR0FBQSxJQUFBZCxrQkFBQSxDQUFBQyxHQUFBLEVBQUFyRCxPQUFBLEVBQUFzRCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxXQUFBVSxHQUFBLEtBQUFYLEtBQUEsQ0FBQVksU0FBQTtBQUFBO0FBQ0EsSUFBQUUsSUFBQSxHQUFBQyxtQkFBQTtBQUVBLGlFQUFlO0VBQ2ZDLFVBQUE7SUFBQUMsTUFBQSxFQUFBSiw4Q0FBQUk7RUFBQTtFQUNBQyxJQUFBLFdBQUFBLEtBQUE7SUFBQTtNQUNBQyxNQUFBO01BQ0FELElBQUE7SUFDQTtFQUFBO0VBRUFFLE9BQUEsV0FBQUEsUUFBQTtJQUFBLElBQUFDLEtBQUE7SUFBQSxPQUFBaEIsaUJBQUEsZUFBQS9HLG1CQUFBLEdBQUFvRixJQUFBLFVBQUE0QyxTQUFBO01BQUEsSUFBQUMsSUFBQTtNQUFBLElBQUFoQixJQUFBLEVBQUFpQixJQUFBO01BQUEsT0FBQWxJLG1CQUFBLEdBQUF1QixJQUFBLFVBQUE0RyxVQUFBQyxTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQXZDLElBQUEsR0FBQXVDLFNBQUEsQ0FBQWxFLElBQUE7VUFBQTtZQUNBK0MsSUFBQSxHQUFBYyxLQUFBO1lBQUFLLFNBQUEsQ0FBQWxFLElBQUE7WUFBQSxPQUNBbUUsS0FBQSxDQUNBQyxHQUFBLG1DQUFBUCxLQUFBLENBQUFRLE1BQUEsQ0FBQUMsTUFBQSxDQUFBQyxFQUFBO2NBQ0FDLE9BQUE7Z0JBQ0FDLGFBQUEsRUFBQUMsRUFBQTtnQkFDQUMsTUFBQTtjQUNBO1lBQ0EsR0FDQXhGLElBQUEsV0FBQXlGLFFBQUE7Y0FDQWYsS0FBQSxDQUFBSCxJQUFBLEdBQUFrQixRQUFBLENBQUFsQixJQUFBO2NBQ0FtQixPQUFBLENBQUFDLEdBQUEsQ0FBQWpCLEtBQUEsQ0FBQUgsSUFBQTtZQUNBO1VBQUE7WUFDQU0sSUFBQTtjQUNBZSxNQUFBO2NBQ0FDLEtBQUE7Y0FDQUMsS0FBQSxHQUNBO2dCQUNBaEUsSUFBQTtnQkFDQWlFLFFBQUEsR0FDQTtrQkFDQXZILElBQUE7a0JBQ0FzRCxJQUFBO2tCQUNBK0QsS0FBQTtrQkFDQUcsVUFBQTtrQkFDQUMsYUFBQTtrQkFDQUMsYUFBQTtrQkFDQUMscUJBQUE7Z0JBQ0E7Y0FFQSxFQUNBO2NBQ0FDLGlCQUFBO1lBQ0E7WUFFQTFCLEtBQUEsQ0FBQUYsTUFBQSxPQUFBTiw2Q0FBQSxDQUFBVyxJQUFBO1lBRUFILEtBQUEsQ0FBQUYsTUFBQSxDQUFBOEIsVUFBQSxDQUFBQyxHQUFBLFdBQUFDLEVBQUE7Y0FBQSxRQUFBNUIsSUFBQSxHQUFBQSxJQUFBLElBQUFsQixpQkFBQSxlQUFBL0csbUJBQUEsR0FBQW9GLElBQUEsVUFBQTBFLFFBQUFDLE1BQUE7Z0JBQUEsT0FBQS9KLG1CQUFBLEdBQUF1QixJQUFBLFVBQUF5SSxTQUFBQyxRQUFBO2tCQUFBLGtCQUFBQSxRQUFBLENBQUFwRSxJQUFBLEdBQUFvRSxRQUFBLENBQUEvRixJQUFBO29CQUFBO3NCQUFBK0YsUUFBQSxDQUFBL0YsSUFBQTtzQkFBQSxPQUNBbUUsS0FBQSxDQUNBNkIsSUFBQSxxQ0FBQWpELElBQUEsQ0FBQXNCLE1BQUEsQ0FBQUMsTUFBQSxDQUFBQyxFQUFBLEVBQUFzQixNQUFBLENBQUFuQyxJQUFBLEVBQ0F2RSxJQUFBLFdBQUF5RixRQUFBO3dCQUNBQyxPQUFBLENBQUFDLEdBQUEsQ0FBQUYsUUFBQSxDQUFBbEIsSUFBQTt3QkFDQSxJQUFBa0IsUUFBQSxDQUFBbEIsSUFBQTswQkFDQUosSUFBQSxDQUFBMkMsSUFBQTs0QkFDQWpCLEtBQUE7NEJBQ0FrQixJQUFBOzRCQUNBQyxJQUFBOzRCQUNBOzBCQUNBLEdBQUFoSCxJQUFBOzRCQUNBaUgsTUFBQSxDQUFBQyxRQUFBLENBQUFDLElBQUE7MEJBQ0E7d0JBQ0E7MEJBQ0FoRCxJQUFBLENBQUEyQyxJQUFBOzRCQUNBakIsS0FBQTs0QkFDQWtCLElBQUE7NEJBQ0FDLElBQUE7NEJBQ0E7MEJBQ0EsR0FBQWhILElBQUEsV0FBQW9ILENBQUE7NEJBQ0FGLFFBQUEsQ0FBQUcsTUFBQTswQkFDQTt3QkFDQTtzQkFDQTtvQkFBQTtvQkFBQTtzQkFBQSxPQUFBVCxRQUFBLENBQUFqRSxJQUFBO2tCQUFBO2dCQUFBLEdBQUE4RCxPQUFBO2NBQUEsQ0FDQSxJQUFBMUMsS0FBQSxPQUFBRCxTQUFBO1lBQUE7WUFDQVksS0FBQSxDQUFBRixNQUFBLENBQUFELElBQUEsR0FBQVgsSUFBQSxDQUFBVyxJQUFBO1VBQUE7VUFBQTtZQUFBLE9BQUFRLFNBQUEsQ0FBQXBDLElBQUE7UUFBQTtNQUFBLEdBQUFnQyxRQUFBO0lBQUE7RUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9nYWxsZXJ5LnZ1ZT9iYjBiIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWlmPVwic3VydmV5XCI+XG4gICAgPFN1cnZleSA6c3VydmV5PVwic3VydmV5XCI+PC9TdXJ2ZXk+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiAgICAgIFxuICAgICAgPHNjcmlwdD5cbmltcG9ydCAqIGFzIFN1cnZleVZ1ZSBmcm9tIFwic3VydmV5LXZ1ZVwiO1xuY29uc3QgU3dhbCA9IHJlcXVpcmUoXCJzd2VldGFsZXJ0MlwiKTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wb25lbnRzOiB7IFN1cnZleTogU3VydmV5VnVlLlN1cnZleSB9LFxuICBkYXRhOiAoKSA9PiAoe1xuICAgIHN1cnZleTogbnVsbCxcbiAgICBkYXRhOiBudWxsLFxuICB9KSxcblxuICBhc3luYyBtb3VudGVkKCkge1xuICAgIGxldCBzZWxmID0gdGhpcztcbiAgICBhd2FpdCBheGlvc1xuICAgICAgLmdldChcIi9hcGkvY29uZmVyZW5jZS9lZGl0LWdhbGxlcnkvXCIgKyB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246IEFULFxuICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YSk7XG4gICAgICB9KTtcbiAgICBsZXQganNvbiA9IHtcbiAgICAgIGxvY2FsZTogXCJlc1wiLFxuICAgICAgdGl0bGU6IFwiR2FsZXJpYVwiLFxuICAgICAgcGFnZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicGFnZTFcIixcbiAgICAgICAgICBlbGVtZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICAgICAgbmFtZTogXCJpbWFnZXNcIixcbiAgICAgICAgICAgICAgdGl0bGU6IFwiSW1hZ2VuZXNcIixcbiAgICAgICAgICAgICAgaGlkZU51bWJlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgYWxsb3dNdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgYWNjZXB0ZWRUeXBlczogXCIuanBnXCIsXG4gICAgICAgICAgICAgIG5lZWRDb25maXJtUmVtb3ZlRmlsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBzaG93Q29tcGxldGVkUGFnZTogZmFsc2UsXG4gICAgfTtcblxuICAgIHRoaXMuc3VydmV5ID0gbmV3IFN1cnZleVZ1ZS5Nb2RlbChqc29uKTtcblxuICAgIHRoaXMuc3VydmV5Lm9uQ29tcGxldGUuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgIC5wb3N0KFwiL2FwaS9jb25mZXJlbmNlL3VwZGF0ZS1nYWxsZXJ5L1wiICsgc2VsZi4kcm91dGUucGFyYW1zLmlkLCByZXN1bHQuZGF0YSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgIHRpdGxlOiBcIkFjdHVhbGl6YWRvXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiTGEgZ2FsZXJpYSBoYSBzaWRvIGFjdHVhbGl6YWRvIGNvbiDDqXhpdG9cIixcbiAgICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCIsXG4gICAgICAgICAgICAgIC8vICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL3BhbmVsLWFkbWluaXN0cmFjaW9uL2Jhbm5lclwiO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgIHRpdGxlOiBcIkVycm9yIVwiLFxuICAgICAgICAgICAgICB0ZXh0OiBcIk5vIHNlIHB1ZG8gYWN0dWFsaXphciBsYSBnYWxlcmlhLiBQb3IgZmF2b3IgaW50ZW50ZSBtw6FzIHRhcmRlLlwiLFxuICAgICAgICAgICAgICBpY29uOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgIC8vICAgIHRpbWVyOiAzMDAwLFxuICAgICAgICAgICAgfSkudGhlbigoXykgPT4ge1xuICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5zdXJ2ZXkuZGF0YSA9IHNlbGYuZGF0YTtcbiAgfSxcbn07XG48L3NjcmlwdD4iXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJTdXJ2ZXlWdWUiLCJTd2FsIiwicmVxdWlyZSIsImNvbXBvbmVudHMiLCJTdXJ2ZXkiLCJkYXRhIiwic3VydmV5IiwibW91bnRlZCIsIl90aGlzIiwiX2NhbGxlZTIiLCJfcmVmIiwianNvbiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImF4aW9zIiwiZ2V0IiwiJHJvdXRlIiwicGFyYW1zIiwiaWQiLCJoZWFkZXJzIiwiQXV0aG9yaXphdGlvbiIsIkFUIiwiQWNjZXB0IiwicmVzcG9uc2UiLCJjb25zb2xlIiwibG9nIiwibG9jYWxlIiwidGl0bGUiLCJwYWdlcyIsImVsZW1lbnRzIiwiaGlkZU51bWJlciIsImFsbG93TXVsdGlwbGUiLCJhY2NlcHRlZFR5cGVzIiwibmVlZENvbmZpcm1SZW1vdmVGaWxlIiwic2hvd0NvbXBsZXRlZFBhZ2UiLCJNb2RlbCIsIm9uQ29tcGxldGUiLCJhZGQiLCJfeCIsIl9jYWxsZWUiLCJyZXN1bHQiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicG9zdCIsImZpcmUiLCJ0ZXh0IiwiaWNvbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsIl8iLCJyZWxvYWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/gallery.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/index.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/index.vue?vue&type=script&lang=js& ***!
\*****************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n data: null,\n search: \"\",\n headers: [{\n text: \"Nombre\",\n value: \"name\"\n }, {\n text: \"Fecha de Inicio\",\n value: \"start_date\"\n }, {\n text: \"Fecha de Finalización\",\n value: \"end_date\"\n }, {\n text: \"Acciones\",\n value: \"actions\",\n sortable: false\n }]\n };\n },\n mounted: function mounted() {\n this.loadData();\n },\n methods: {\n loadData: function loadData() {\n var _this = this;\n axios.get(\"/api/conference/index\").then(function (response) {\n _this.data = response.data;\n });\n },\n edit: function edit(id) {\n window.location.href = \"/panel-administracion/congresos/\" + id + \"/editar\";\n },\n gallery: function gallery(id) {\n window.location.href = \"/panel-administracion/congresos/\" + id + \"/galeria\";\n },\n trash: function trash(id, name) {\n var _this2 = this;\n Swal.fire({\n title: \"Confirmación\",\n html: \"<p margin-bottom: 10px;\\\">\\n \\xBFEst\\xE1s seguro de que deseas eliminar el <b>\\\"\".concat(name, \"\\\"</b>?</p>\\n <p style=\\\"font-size: 0.7em;\\\">\\n Si lo eliminas, no podr\\xE1s recuperarlo.\\n </p>\"),\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Sí, eliminar\",\n cancelButtonText: \"Cancelar\"\n }).then(function (result) {\n if (result.isConfirmed) {\n axios[\"delete\"](\"/api/conference/delete/\" + id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n console.log(response.data);\n Swal.fire({\n title: \"Eliminado\",\n text: \"Se ha eliminado el congreso con éxito.\",\n icon: \"success\",\n timer: 2000\n }).then(function (_) {});\n _this2.loadData();\n });\n }\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7QUE4Q0EsSUFBQUEsSUFBQSxHQUFBQyxtQkFBQTtBQUNBLGlFQUFlO0VBQ2ZDLElBQUEsV0FBQUEsS0FBQTtJQUNBO01BQ0FBLElBQUE7TUFDQUMsTUFBQTtNQUNBQyxPQUFBLEdBQ0E7UUFBQUMsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7TUFBQSxHQUNBO1FBQUFELElBQUE7UUFBQUMsS0FBQTtNQUFBLEdBQ0E7UUFBQUQsSUFBQTtRQUFBQyxLQUFBO1FBQUFDLFFBQUE7TUFBQTtJQUVBO0VBQ0E7RUFDQUMsT0FBQSxXQUFBQSxRQUFBO0lBQ0EsS0FBQUMsUUFBQTtFQUNBO0VBQ0FDLE9BQUE7SUFDQUQsUUFBQSxXQUFBQSxTQUFBO01BQUEsSUFBQUUsS0FBQTtNQUNBQyxLQUFBLENBQUFDLEdBQUEsMEJBQUFDLElBQUEsV0FBQUMsUUFBQTtRQUNBSixLQUFBLENBQUFULElBQUEsR0FBQWEsUUFBQSxDQUFBYixJQUFBO01BQ0E7SUFDQTtJQUNBYyxJQUFBLFdBQUFBLEtBQUFDLEVBQUE7TUFDQUMsTUFBQSxDQUFBQyxRQUFBLENBQUFDLElBQUEsd0NBQUFILEVBQUE7SUFDQTtJQUNBSSxPQUFBLFdBQUFBLFFBQUFKLEVBQUE7TUFDQUMsTUFBQSxDQUFBQyxRQUFBLENBQUFDLElBQUEsd0NBQUFILEVBQUE7SUFDQTtJQUNBSyxLQUFBLFdBQUFBLE1BQUFMLEVBQUEsRUFBQU0sSUFBQTtNQUFBLElBQUFDLE1BQUE7TUFDQXhCLElBQUEsQ0FBQXlCLElBQUE7UUFDQUMsS0FBQTtRQUNBQyxJQUFBLG9HQUFBQyxNQUFBLENBQ0FMLElBQUEsZ0tBR0E7UUFDQU0sSUFBQTtRQUNBQyxnQkFBQTtRQUNBQyxrQkFBQTtRQUNBQyxpQkFBQTtRQUNBQyxpQkFBQTtRQUNBQyxnQkFBQTtNQUNBLEdBQUFwQixJQUFBLFdBQUFxQixNQUFBO1FBQ0EsSUFBQUEsTUFBQSxDQUFBQyxXQUFBO1VBQ0F4QixLQUFBLFVBQ0EsNkJBQUFLLEVBQUE7WUFDQWIsT0FBQTtjQUNBaUMsYUFBQSxFQUFBQyxFQUFBO2NBQ0FDLE1BQUE7WUFDQTtVQUNBLEdBQ0F6QixJQUFBLFdBQUFDLFFBQUE7WUFDQXlCLE9BQUEsQ0FBQUMsR0FBQSxDQUFBMUIsUUFBQSxDQUFBYixJQUFBO1lBQ0FGLElBQUEsQ0FBQXlCLElBQUE7Y0FDQUMsS0FBQTtjQUNBckIsSUFBQTtjQUNBd0IsSUFBQTtjQUNBYSxLQUFBO1lBQ0EsR0FBQTVCLElBQUEsV0FBQTZCLENBQUE7WUFDQW5CLE1BQUEsQ0FBQWYsUUFBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2NvbmZlcmVuY2UvaW5kZXgudnVlP2VlYWMiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8di1hcHA+XG4gICAgPHYtY2FyZCB2LWlmPVwiZGF0YVwiPlxuICAgICAgPHYtY2FyZC10aXRsZT5cbiAgICAgICAgQWRtaW5pc3RyYWNpw7NuIGRlIENvbmdyZXNvc1xuICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgPHYtdGV4dC1maWVsZFxuICAgICAgICAgIHYtbW9kZWw9XCJzZWFyY2hcIlxuICAgICAgICAgIGFwcGVuZC1pY29uPVwibWRpLW1hZ25pZnlcIlxuICAgICAgICAgIGxhYmVsPVwiQnVzY2FyXCJcbiAgICAgICAgICBzaW5nbGUtbGluZVxuICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICA+PC92LXRleHQtZmllbGQ+XG4gICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgIDx2LWRhdGEtdGFibGVcbiAgICAgICAgOmhlYWRlcnM9XCJoZWFkZXJzXCJcbiAgICAgICAgOml0ZW1zPVwiZGF0YVwiXG4gICAgICAgIGNsYXNzPVwiZWxldmF0aW9uLTFcIlxuICAgICAgICA6c2VhcmNoPVwic2VhcmNoXCJcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmltYWdlPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8di1pbWdcbiAgICAgICAgICAgIG1heC1oZWlnaHQ9XCI1MVwiXG4gICAgICAgICAgICBtYXgtd2lkdGg9XCIxMTBcIlxuICAgICAgICAgICAgY29udGFpblxuICAgICAgICAgICAgOnNyYz1cIml0ZW0uaW1hZ2VuXCJcbiAgICAgICAgICA+PC92LWltZ1xuICAgICAgICA+PC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFjdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInByaW1hcnlcIiBmYWIgeC1zbWFsbCBkYXJrIEBjbGljaz1cImVkaXQoaXRlbS5pZClcIj5cbiAgICAgICAgICAgIDx2LWljb24+IG1kaS1wZW5jaWwgPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgICA8di1idG4gY29sb3I9XCJpbmZvXCIgZmFiIHgtc21hbGwgZGFyayBAY2xpY2s9XCJnYWxsZXJ5KGl0ZW0uaWQpXCI+XG4gICAgICAgICAgICA8di1pY29uPiBtZGktZm9sZGVyLW11bHRpcGxlLWltYWdlIDwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgPHYtYnRuIGNvbG9yPVwid2FybmluZ1wiIGZhYiB4LXNtYWxsIGRhcmsgQGNsaWNrPVwidHJhc2goaXRlbS5pZCwgaXRlbS5uYW1lKVwiPlxuICAgICAgICAgICAgPHYtaWNvbj4gbWRpLWRlbGV0ZSA8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC92LWRhdGEtdGFibGU+XG4gICAgPC92LWNhcmQ+XG4gIDwvdi1hcHA+XG48L3RlbXBsYXRlPlxuICBcbiAgPHNjcmlwdD5cblxuY29uc3QgU3dhbCA9IHJlcXVpcmUoXCJzd2VldGFsZXJ0MlwiKTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogbnVsbCxcbiAgICAgIHNlYXJjaDogXCJcIixcbiAgICAgIGhlYWRlcnM6IFtcbiAgICAgICAgeyB0ZXh0OiBcIk5vbWJyZVwiLCB2YWx1ZTogXCJuYW1lXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkZlY2hhIGRlIEluaWNpb1wiLCB2YWx1ZTogXCJzdGFydF9kYXRlXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkZlY2hhIGRlIEZpbmFsaXphY2nDs25cIiwgdmFsdWU6IFwiZW5kX2RhdGVcIiB9LFxuICAgICAgICB7IHRleHQ6IFwiQWNjaW9uZXNcIiwgdmFsdWU6IFwiYWN0aW9uc1wiLCBzb3J0YWJsZTogZmFsc2UgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBsb2FkRGF0YSgpIHtcbiAgICAgIGF4aW9zLmdldChcIi9hcGkvY29uZmVyZW5jZS9pbmRleFwiKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBlZGl0KGlkKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL3BhbmVsLWFkbWluaXN0cmFjaW9uL2NvbmdyZXNvcy9cIiArIGlkICsgXCIvZWRpdGFyXCI7XG4gICAgfSxcbiAgICBnYWxsZXJ5KGlkKXtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vY29uZ3Jlc29zL1wiICsgaWQgKyBcIi9nYWxlcmlhXCI7XG4gICAgfSxcbiAgICB0cmFzaChpZCwgbmFtZSkge1xuICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgdGl0bGU6IFwiQ29uZmlybWFjacOzblwiLFxuICAgICAgICBodG1sOiBgPHAgbWFyZ2luLWJvdHRvbTogMTBweDtcIj5cbiAgICAgICAgICAgICAgICDCv0VzdMOhcyBzZWd1cm8gZGUgcXVlIGRlc2VhcyBlbGltaW5hciBlbCA8Yj5cIiR7bmFtZX1cIjwvYj4/PC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTogMC43ZW07XCI+XG4gICAgICAgICAgICAgICAgICAgICAgU2kgbG8gZWxpbWluYXMsIG5vIHBvZHLDoXMgcmVjdXBlcmFybG8uXG4gICAgICAgICAgICAgICAgICAgIDwvcD5gLFxuICAgICAgICBpY29uOiBcIndhcm5pbmdcIixcbiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiBcIiMzMDg1ZDZcIixcbiAgICAgICAgY2FuY2VsQnV0dG9uQ29sb3I6IFwiI2QzM1wiLFxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJTw60sIGVsaW1pbmFyXCIsXG4gICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IFwiQ2FuY2VsYXJcIixcbiAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0LmlzQ29uZmlybWVkKSB7XG4gICAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5kZWxldGUoXCIvYXBpL2NvbmZlcmVuY2UvZGVsZXRlL1wiICsgaWQsIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IEFULFxuICAgICAgICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEpXG4gICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiRWxpbWluYWRvXCIsXG4gICAgICAgICAgICAgICAgdGV4dDogXCJTZSBoYSBlbGltaW5hZG8gZWwgY29uZ3Jlc28gY29uIMOpeGl0by5cIixcbiAgICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgICAgfSkudGhlbigoXykgPT4ge30pO1xuICAgICAgICAgICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD4iXSwibmFtZXMiOlsiU3dhbCIsInJlcXVpcmUiLCJkYXRhIiwic2VhcmNoIiwiaGVhZGVycyIsInRleHQiLCJ2YWx1ZSIsInNvcnRhYmxlIiwibW91bnRlZCIsImxvYWREYXRhIiwibWV0aG9kcyIsIl90aGlzIiwiYXhpb3MiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJlZGl0IiwiaWQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJnYWxsZXJ5IiwidHJhc2giLCJuYW1lIiwiX3RoaXMyIiwiZmlyZSIsInRpdGxlIiwiaHRtbCIsImNvbmNhdCIsImljb24iLCJzaG93Q2FuY2VsQnV0dG9uIiwiY29uZmlybUJ1dHRvbkNvbG9yIiwiY2FuY2VsQnV0dG9uQ29sb3IiLCJjb25maXJtQnV0dG9uVGV4dCIsImNhbmNlbEJ1dHRvblRleHQiLCJyZXN1bHQiLCJpc0NvbmZpcm1lZCIsIkF1dGhvcml6YXRpb24iLCJBVCIsIkFjY2VwdCIsImNvbnNvbGUiLCJsb2ciLCJ0aW1lciIsIl8iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/index.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/create.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/create.vue?vue&type=script&lang=js& ***!
\**************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/course/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/course/store\", result.data).then(function (response) {\n if (response.data) {\n console.log(response.data);\n Swal.fire({\n title: \"Actualizado\",\n text: \"El curso ha sido creado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/courses\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo crear el curso. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY291cnNlL2NyZWF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OytDQU9BLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENBQUEsRUFBQWlCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFwQixDQUFBLENBQUFELENBQUEsV0FBQWtCLE1BQUEsbUJBQUFqQixDQUFBLElBQUFpQixNQUFBLFlBQUFBLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxnQkFBQW9CLEtB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QXVHLENBQUE7NEJBQ0FGLFFBQUEsQ0FBQUcsTUFBQTswQkFDQTt3QkFDQTtzQkFDQTtvQkFBQTtvQkFBQTtzQkFBQSxPQUFBZixRQUFBLENBQUE5QyxJQUFBO2tCQUFBO2dCQUFBLEdBQUEwQyxPQUFBO2NBQUEsQ0FDQSxJQUFBdEIsS0FBQSxPQUFBRCxTQUFBO1lBQUE7VUFBQTtVQUFBO1lBQUEsT0FBQWlCLFNBQUEsQ0FBQXBDLElBQUE7UUFBQTtNQUFBLEdBQUFpQyxRQUFBO0lBQUE7RUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2NvdXJzZS9jcmVhdGUudnVlPzFjOGIiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgdi1pZj1cInN1cnZleVwiPlxuICAgICAgICA8U3VydmV5IDpzdXJ2ZXk9XCJzdXJ2ZXlcIj48L1N1cnZleT5cbiAgICA8L2Rpdj5cbiAgPC90ZW1wbGF0ZT5cbiAgICBcbiAgICA8c2NyaXB0PlxuICBpbXBvcnQgKiBhcyBTdXJ2ZXlWdWUgZnJvbSAnc3VydmV5LXZ1ZSc7XG4gIGNvbnN0IFN3YWwgPSByZXF1aXJlKFwic3dlZXRhbGVydDJcIik7XG4gIGltcG9ydCB7IGpzb24gfSBmcm9tIFwiLi9mb3JtXCI7XG4gIFxuICBleHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcG9uZW50czogeyBTdXJ2ZXk6IFN1cnZleVZ1ZS5TdXJ2ZXkgfSxcbiAgICBkYXRhOiAoKSA9PiAoe1xuICAgICAgc3VydmV5OiBudWxsLFxuICAgIH0pLFxuICBcbiAgICBhc3luYyBtb3VudGVkKCkge1xuICBcbiAgICAgIHRoaXMuc3VydmV5ID0gbmV3IFN1cnZleVZ1ZS5Nb2RlbChqc29uKTtcbiAgXG4gICAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucy5hbGxvd0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgIC5wb3N0KFwiL2FwaS9jb3Vyc2Uvc3RvcmVcIiwgcmVzdWx0LmRhdGEpXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgIHRpdGxlOiBcIkFjdHVhbGl6YWRvXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiRWwgY3Vyc28gaGEgc2lkbyBjcmVhZG8gY29uIMOpeGl0b1wiLFxuICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgIC8vICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9XG4gICAgICAgICAgICAgICAgXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vY291cnNlc1wiO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgIHRpdGxlOiBcIkVycm9yIVwiLFxuICAgICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgIFwiTm8gc2UgcHVkbyBjcmVhciBlbCBjdXJzby4gUG9yIGZhdm9yIGludGVudGUgbcOhcyB0YXJkZS5cIixcbiAgICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAgIC8vICAgIHRpbWVyOiAzMDAwLFxuICAgICAgICAgICAgfSkudGhlbigoXykgPT4ge1xuICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xuICA8L3NjcmlwdD5cbiAgICAiXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJTdXJ2ZXlWdWUiLCJTd2FsIiwicmVxdWlyZSIsImpzb24iLCJjb21wb25lbnRzIiwiU3VydmV5IiwiZGF0YSIsInN1cnZleSIsIm1vdW50ZWQiLCJfdGhpcyIsIl9jYWxsZWUyIiwiX3JlZiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsIk1vZGVsIiwib25Db21wbGV0aW5nIiwiYWRkIiwiX3giLCJfeDIiLCJfY2FsbGVlIiwicmVzdWx0Iiwib3B0aW9ucyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJhbGxvd0NvbXBsZXRlIiwiYXhpb3MiLCJwb3N0IiwicmVzcG9uc2UiLCJjb25zb2xlIiwibG9nIiwiZmlyZSIsInRpdGxlIiwidGV4dCIsImljb24iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJfIiwicmVsb2FkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/create.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/edit.vue?vue&type=script&lang=js&":
/*!************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/edit.vue?vue&type=script&lang=js& ***!
\************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/course/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null,\n data: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n var self;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n self = _this;\n _context2.next = 3;\n return axios.get(\"/api/course/edit/\" + _this.$route.params.id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n _this.data = response.data;\n console.log(_this.data);\n });\n case 3:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/course/update/\" + self.$route.params.id, result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"El curso ha sido actualizado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/cursos\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo actualizar el curso. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n _this.survey.data = self.data;\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY291cnNlL2VkaXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7Ozs7OzsrQ0FPQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsQ0FBQU8sS0FBQSxLQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFOLENBQUEsQ0FBQU8sV0FBQSw4QkFBQUMsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUssY0FBQSxDQUFBUCxDQUFBLEVBQUFELENBQUEsSUFBQVMsS0FBQSxFQUFBUCxDQUFBLEVBQUFpQixVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBcEIsQ0FBQSxDQUFBRCxDQUFBLFdBQUFrQixNQUFBLG1CQUFBakIsQ0FBQSxJQUFBaUIsTUFBQSxZQUFBQSxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsZ0JBQUFvQixLQUFB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QSxDQUFBQyxNQUFBLENBQUFDLEVBQUEsRUFBQWMsTUFBQSxDQUFBMUIsSUFBQSxFQUNBeEUsSUFBQSxXQUFBeUYsUUFBQTt3QkFDQUMsT0FBQSxDQUFBQyxHQUFBLENBQUFGLFFBQUEsQ0FBQWpCLElBQUE7d0JBQ0EsSUFBQWlCLFFBQUEsQ0FBQWpCLElBQUE7MEJBQ0FMLElBQUEsQ0FBQXFDLElBQUE7NEJBQ0FDLEtBQUE7NEJBQ0FDLElBQUE7NEJBQ0FDLElBQUE7NEJBQ0E7MEJBQ0EsR0FBQTNHLElBQUE7NEJBQ0E0RyxNQUFBLENBQUFDLFFBQUEsQ0FBQUMsSUFBQTswQkFDQTt3QkFDQTswQkFDQTNDLElBQUEsQ0FBQXFDLElBQUE7NEJBQ0FDLEtBQUE7NEJBQ0FDLElBQUE7NEJBQ0FDLElBQUE7NEJBQ0E7MEJBQ0EsR0FBQTNHLElBQUEsV0FBQStHLENBQUE7NEJBQ0FGLFFBQUEsQ0FBQUcsTUFBQTswQkFDQTt3QkFDQTtzQkFDQTtvQkFBQTtvQkFBQTtzQkFBQSxPQUFBWCxRQUFBLENBQUExRCxJQUFBO2tCQUFBO2dCQUFBLEdBQUFzRCxPQUFBO2NBQUEsQ0FDQSxJQUFBbEMsS0FBQSxPQUFBRCxTQUFBO1lBQUE7WUFDQWEsS0FBQSxDQUFBRixNQUFBLENBQUFELElBQUEsR0FBQVosSUFBQSxDQUFBWSxJQUFBO1VBQUE7VUFBQTtZQUFBLE9BQUFPLFNBQUEsQ0FBQXBDLElBQUE7UUFBQTtNQUFBLEdBQUFpQyxRQUFBO0lBQUE7RUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2NvdXJzZS9lZGl0LnZ1ZT9lYTAyIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IHYtaWY9XCJzdXJ2ZXlcIj5cbiAgICAgIDxTdXJ2ZXkgOnN1cnZleT1cInN1cnZleVwiPjwvU3VydmV5PlxuICAgIDwvZGl2PlxuICA8L3RlbXBsYXRlPlxuICAgICAgXG4gICAgICA8c2NyaXB0PlxuICBpbXBvcnQgKiBhcyBTdXJ2ZXlWdWUgZnJvbSBcInN1cnZleS12dWVcIjtcbiAgY29uc3QgU3dhbCA9IHJlcXVpcmUoXCJzd2VldGFsZXJ0MlwiKTtcbiAgaW1wb3J0IHsganNvbiB9IGZyb20gXCIuL2Zvcm1cIjtcbiAgXG4gIGV4cG9ydCBkZWZhdWx0IHtcbiAgICBjb21wb25lbnRzOiB7IFN1cnZleTogU3VydmV5VnVlLlN1cnZleSB9LFxuICAgIGRhdGE6ICgpID0+ICh7XG4gICAgICBzdXJ2ZXk6IG51bGwsXG4gICAgICBkYXRhOiBudWxsLFxuICAgIH0pLFxuICBcbiAgICBhc3luYyBtb3VudGVkKCkge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgYXdhaXQgYXhpb3NcbiAgICAgICAgLmdldChcIi9hcGkvY291cnNlL2VkaXQvXCIgKyB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBBVCxcbiAgICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEpXG4gICAgICAgIH0pO1xuICBcbiAgICAgIHRoaXMuc3VydmV5ID0gbmV3IFN1cnZleVZ1ZS5Nb2RlbChqc29uKTtcbiAgXG4gICAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucy5hbGxvd0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgICAgLnBvc3QoXCIvYXBpL2NvdXJzZS91cGRhdGUvXCIgKyBzZWxmLiRyb3V0ZS5wYXJhbXMuaWQsIHJlc3VsdC5kYXRhKVxuICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5kYXRhKVxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJBY3R1YWxpemFkb1wiLFxuICAgICAgICAgICAgICAgIHRleHQ6IFwiRWwgY3Vyc28gaGEgc2lkbyBhY3R1YWxpemFkbyBjb24gw6l4aXRvXCIsXG4gICAgICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgLy8gIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL3BhbmVsLWFkbWluaXN0cmFjaW9uL2N1cnNvc1wiO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgICAgdGV4dDogXCJObyBzZSBwdWRvIGFjdHVhbGl6YXIgZWwgY3Vyc28uIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuXCIsXG4gICAgICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgIC8vICAgIHRpbWVyOiAzMDAwLFxuICAgICAgICAgICAgICB9KS50aGVuKChfKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnN1cnZleS5kYXRhID0gc2VsZi5kYXRhO1xuICAgIH0sXG4gIH07XG4gIDwvc2NyaXB0PiJdLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIlN1cnZleVZ1ZSIsIlN3YWwiLCJyZXF1aXJlIiwianNvbiIsImNvbXBvbmVudHMiLCJTdXJ2ZXkiLCJkYXRhIiwic3VydmV5IiwibW91bnRlZCIsIl90aGlzIiwiX2NhbGxlZTIiLCJfcmVmIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiYXhpb3MiLCJnZXQiLCIkcm91dGUiLCJwYXJhbXMiLCJpZCIsImhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwiQVQiLCJBY2NlcHQiLCJyZXNwb25zZSIsImNvbnNvbGUiLCJsb2ciLCJNb2RlbCIsIm9uQ29tcGxldGluZyIsImFkZCIsIl94IiwiX3gyIiwiX2NhbGxlZSIsInJlc3VsdCIsIm9wdGlvbnMiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiYWxsb3dDb21wbGV0ZSIsInBvc3QiLCJmaXJlIiwidGl0bGUiLCJ0ZXh0IiwiaWNvbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsIl8iLCJyZWxvYWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/edit.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/index.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/index.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n data: null,\n search: \"\",\n headers: [{\n text: \"Nombre\",\n value: \"name\"\n }, {\n text: \"Ciclo\",\n value: \"cycle\"\n }, {\n text: \"Fecha Inicio\",\n value: \"start_date\"\n }, {\n text: \"Fecha Fin\",\n value: \"end_date\"\n }, {\n text: \"Acciones\",\n value: \"actions\",\n sortable: false\n }]\n };\n },\n mounted: function mounted() {\n this.loadData();\n },\n methods: {\n loadData: function loadData() {\n var _this = this;\n axios.get(\"/api/course/index\").then(function (response) {\n _this.data = response.data;\n });\n },\n edit: function edit(id) {\n window.location.href = \"/panel-administracion/cursos/\" + id + \"/editar\";\n },\n trash: function trash(id, name) {\n var _this2 = this;\n Swal.fire({\n title: \"Confirmación\",\n html: \"<p margin-bottom: 10px;\\\">\\n \\xBFEst\\xE1s seguro de que deseas eliminar el curso <b>\\\"\".concat(name, \"\\\"</b>?</p>\\n <p style=\\\"font-size: 0.7em;\\\">\\n Si lo eliminas, no podr\\xE1s recuperarlo.\\n </p>\"),\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Sí, eliminar\",\n cancelButtonText: \"Cancelar\"\n }).then(function (result) {\n if (result.isConfirmed) {\n axios[\"delete\"](\"/api/course/delete/\" + id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n Swal.fire({\n title: \"Eliminado\",\n text: \"Se ha eliminado el curso con éxito.\",\n icon: \"success\",\n timer: 2000\n }).then(function (_) {});\n _this2.loadData();\n });\n }\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY291cnNlL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7OztBQXdDQSxJQUFBQSxJQUFBLEdBQUFDLG1CQUFBO0FBQ0EsaUVBQWU7RUFDZkMsSUFBQSxXQUFBQSxLQUFBO0lBQ0E7TUFDQUEsSUFBQTtNQUNBQyxNQUFBO01BQ0FDLE9BQUEsR0FDQTtRQUFBQyxJQUFBO1FBQUFDLEtBQUE7TUFBQSxHQUNBO1FBQUFELElBQUE7UUFBQUMsS0FBQTtNQUFBLEdBQ0E7UUFBQUQsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7TUFBQSxHQUNBO1FBQUFELElBQUE7UUFBQUMsS0FBQTtRQUFBQyxRQUFBO01BQUE7SUFFQTtFQUNBO0VBQ0FDLE9BQUEsV0FBQUEsUUFBQTtJQUNBLEtBQUFDLFFBQUE7RUFDQTtFQUNBQyxPQUFBO0lBQ0FELFFBQUEsV0FBQUEsU0FBQTtNQUFBLElBQUFFLEtBQUE7TUFDQUMsS0FBQSxDQUFBQyxHQUFBLHNCQUFBQyxJQUFBLFdBQUFDLFFBQUE7UUFDQUosS0FBQSxDQUFBVCxJQUFBLEdBQUFhLFFBQUEsQ0FBQWIsSUFBQTtNQUNBO0lBQ0E7SUFDQWMsSUFBQSxXQUFBQSxLQUFBQyxFQUFBO01BQ0FDLE1BQUEsQ0FBQUMsUUFBQSxDQUFBQyxJQUFBLHFDQUFBSCxFQUFBO0lBQ0E7SUFDQUksS0FBQSxXQUFBQSxNQUFBSixFQUFBLEVBQUFLLElBQUE7TUFBQSxJQUFBQyxNQUFBO01BQ0F2QixJQUFBLENBQUF3QixJQUFBO1FBQ0FDLEtBQUE7UUFDQUMsSUFBQSwwR0FBQUMsTUFBQSxDQUNBTCxJQUFBLGdLQUdBO1FBQ0FNLElBQUE7UUFDQUMsZ0JBQUE7UUFDQUMsa0JBQUE7UUFDQUMsaUJBQUE7UUFDQUMsaUJBQUE7UUFDQUMsZ0JBQUE7TUFDQSxHQUFBbkIsSUFBQSxXQUFBb0IsTUFBQTtRQUNBLElBQUFBLE1BQUEsQ0FBQUMsV0FBQTtVQUNBdkIsS0FBQSxVQUNBLHlCQUFBSyxFQUFBO1lBQ0FiLE9BQUE7Y0FDQWdDLGFBQUEsRUFBQUMsRUFBQTtjQUNBQyxNQUFBO1lBQ0E7VUFDQSxHQUNBeEIsSUFBQSxXQUFBQyxRQUFBO1lBQ0FmLElBQUEsQ0FBQXdCLElBQUE7Y0FDQUMsS0FBQTtjQUNBcEIsSUFBQTtjQUNBdUIsSUFBQTtjQUNBVyxLQUFBO1lBQ0EsR0FBQXpCLElBQUEsV0FBQTBCLENBQUE7WUFDQWpCLE1BQUEsQ0FBQWQsUUFBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2NvdXJzZS9pbmRleC52dWU/MjhkNCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDx2LWFwcD5cbiAgICA8di1jYXJkIHYtaWY9XCJkYXRhXCI+XG4gICAgICA8di1jYXJkLXRpdGxlPlxuICAgICAgICBBZG1pbmlzdHJhY2nDs24gZGUgQ3Vyc29zXG4gICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICA8di10ZXh0LWZpZWxkXG4gICAgICAgICAgdi1tb2RlbD1cInNlYXJjaFwiXG4gICAgICAgICAgYXBwZW5kLWljb249XCJtZGktbWFnbmlmeVwiXG4gICAgICAgICAgbGFiZWw9XCJCdXNjYXJcIlxuICAgICAgICAgIHNpbmdsZS1saW5lXG4gICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgID48L3YtdGV4dC1maWVsZD5cbiAgICAgIDwvdi1jYXJkLXRpdGxlPlxuICAgICAgPHYtZGF0YS10YWJsZVxuICAgICAgICA6aGVhZGVycz1cImhlYWRlcnNcIlxuICAgICAgICA6aXRlbXM9XCJkYXRhXCJcbiAgICAgICAgY2xhc3M9XCJlbGV2YXRpb24tMVwiXG4gICAgICAgIDpzZWFyY2g9XCJzZWFyY2hcIlxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uYWN0aW9ucz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHYtYnRuIGNvbG9yPVwicmVkXCIgZmFiIHgtc21hbGwgZGFyayBAY2xpY2s9XCJlZGl0KGl0ZW0uaWQpXCI+XG4gICAgICAgICAgICA8di1pY29uPiBtZGktcGVuY2lsIDwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgPHYtYnRuXG4gICAgICAgICAgICBjb2xvcj1cIndhcm5pbmdcIlxuICAgICAgICAgICAgZmFiXG4gICAgICAgICAgICB4LXNtYWxsXG4gICAgICAgICAgICBkYXJrXG4gICAgICAgICAgICBAY2xpY2s9XCJ0cmFzaChpdGVtLmlkLCBpdGVtLm5hbWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8di1pY29uPiBtZGktZGVsZXRlIDwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L3YtZGF0YS10YWJsZT5cbiAgICA8L3YtY2FyZD5cbiAgPC92LWFwcD5cbjwvdGVtcGxhdGU+XG4gIFxuICA8c2NyaXB0PlxuY29uc3QgU3dhbCA9IHJlcXVpcmUoXCJzd2VldGFsZXJ0MlwiKTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogbnVsbCxcbiAgICAgIHNlYXJjaDogXCJcIixcbiAgICAgIGhlYWRlcnM6IFtcbiAgICAgICAgeyB0ZXh0OiBcIk5vbWJyZVwiLCB2YWx1ZTogXCJuYW1lXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkNpY2xvXCIsIHZhbHVlOiBcImN5Y2xlXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkZlY2hhIEluaWNpb1wiLCB2YWx1ZTogXCJzdGFydF9kYXRlXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkZlY2hhIEZpblwiLCB2YWx1ZTogXCJlbmRfZGF0ZVwiIH0sXG4gICAgICAgIHsgdGV4dDogXCJBY2Npb25lc1wiLCB2YWx1ZTogXCJhY3Rpb25zXCIsIHNvcnRhYmxlOiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGxvYWREYXRhKCkge1xuICAgICAgYXhpb3MuZ2V0KFwiL2FwaS9jb3Vyc2UvaW5kZXhcIikudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZWRpdChpZCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jdXJzb3MvXCIgKyBpZCArIFwiL2VkaXRhclwiO1xuICAgIH0sXG4gICAgdHJhc2goaWQsIG5hbWUpIHtcbiAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgIHRpdGxlOiBcIkNvbmZpcm1hY2nDs25cIixcbiAgICAgICAgaHRtbDogYDxwIG1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBkZXNlYXMgZWxpbWluYXIgZWwgY3Vyc28gPGI+XCIke25hbWV9XCI8L2I+PzwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6IDAuN2VtO1wiPlxuICAgICAgICAgICAgICAgICAgICAgIFNpIGxvIGVsaW1pbmFzLCBubyBwb2Ryw6FzIHJlY3VwZXJhcmxvLlxuICAgICAgICAgICAgICAgICAgICA8L3A+YCxcbiAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCIsXG4gICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogXCIjMzA4NWQ2XCIsXG4gICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiNkMzNcIixcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiU8OtLCBlbGltaW5hclwiLFxuICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiBcIkNhbmNlbGFyXCIsXG4gICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xuICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAuZGVsZXRlKFwiL2FwaS9jb3Vyc2UvZGVsZXRlL1wiICsgaWQsIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IEFULFxuICAgICAgICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiRWxpbWluYWRvXCIsXG4gICAgICAgICAgICAgICAgdGV4dDogXCJTZSBoYSBlbGltaW5hZG8gZWwgY3Vyc28gY29uIMOpeGl0by5cIixcbiAgICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgICAgfSkudGhlbigoXykgPT4ge30pO1xuICAgICAgICAgICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD4iXSwibmFtZXMiOlsiU3dhbCIsInJlcXVpcmUiLCJkYXRhIiwic2VhcmNoIiwiaGVhZGVycyIsInRleHQiLCJ2YWx1ZSIsInNvcnRhYmxlIiwibW91bnRlZCIsImxvYWREYXRhIiwibWV0aG9kcyIsIl90aGlzIiwiYXhpb3MiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJlZGl0IiwiaWQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJ0cmFzaCIsIm5hbWUiLCJfdGhpczIiLCJmaXJlIiwidGl0bGUiLCJodG1sIiwiY29uY2F0IiwiaWNvbiIsInNob3dDYW5jZWxCdXR0b24iLCJjb25maXJtQnV0dG9uQ29sb3IiLCJjYW5jZWxCdXR0b25Db2xvciIsImNvbmZpcm1CdXR0b25UZXh0IiwiY2FuY2VsQnV0dG9uVGV4dCIsInJlc3VsdCIsImlzQ29uZmlybWVkIiwiQXV0aG9yaXphdGlvbiIsIkFUIiwiQWNjZXB0IiwidGltZXIiLCJfIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/index.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/create.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/create.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/cycle/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/cycle/store\", result.data).then(function (response) {\n if (response.data) {\n console.log(response.data);\n Swal.fire({\n title: \"Actualizado\",\n text: \"El Ciclo ha sido creado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/ciclos\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo crear el Ciclo. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY3ljbGUvY3JlYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7K0NBT0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0IsS0FB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QSxXQUFBdUcsQ0FBQTs0QkFDQUYsUUFBQSxDQUFBRyxNQUFBOzBCQUNBO3dCQUNBO3NCQUNBO29CQUFBO29CQUFBO3NCQUFBLE9BQUFmLFFBQUEsQ0FBQTlDLElBQUE7a0JBQUE7Z0JBQUEsR0FBQTBDLE9BQUE7Y0FBQSxDQUNBLElBQUF0QixLQUFBLE9BQUFELFNBQUE7WUFBQTtVQUFBO1VBQUE7WUFBQSxPQUFBaUIsU0FBQSxDQUFBcEMsSUFBQTtRQUFBO01BQUEsR0FBQWlDLFFBQUE7SUFBQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jeWNsZS9jcmVhdGUudnVlPzIwNWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2IHYtaWY9XCJzdXJ2ZXlcIj5cbiAgICA8U3VydmV5IDpzdXJ2ZXk9XCJzdXJ2ZXlcIj48L1N1cnZleT5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuICBcbiAgPHNjcmlwdD5cbmltcG9ydCAqIGFzIFN1cnZleVZ1ZSBmcm9tIFwic3VydmV5LXZ1ZVwiO1xuY29uc3QgU3dhbCA9IHJlcXVpcmUoXCJzd2VldGFsZXJ0MlwiKTtcbmltcG9ydCB7IGpzb24gfSBmcm9tIFwiLi9mb3JtXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czogeyBTdXJ2ZXk6IFN1cnZleVZ1ZS5TdXJ2ZXkgfSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBzdXJ2ZXk6IG51bGwsXG4gIH0pLFxuXG4gIGFzeW5jIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zdXJ2ZXkgPSBuZXcgU3VydmV5VnVlLk1vZGVsKGpzb24pO1xuXG4gICAgdGhpcy5zdXJ2ZXkub25Db21wbGV0aW5nLmFkZChhc3luYyBmdW5jdGlvbiAocmVzdWx0LCBvcHRpb25zKSB7XG4gICAgICBvcHRpb25zLmFsbG93Q29tcGxldGUgPSBmYWxzZTtcbiAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgIC5wb3N0KFwiL2FwaS9jeWNsZS9zdG9yZVwiLCByZXN1bHQuZGF0YSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiQWN0dWFsaXphZG9cIixcbiAgICAgICAgICAgICAgdGV4dDogXCJFbCBDaWNsbyBoYSBzaWRvIGNyZWFkbyBjb24gw6l4aXRvXCIsXG4gICAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgLy8gIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID1cbiAgICAgICAgICAgICAgICBcIi9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jaWNsb3NcIjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICB0aXRsZTogXCJFcnJvciFcIixcbiAgICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICBcIk5vIHNlIHB1ZG8gY3JlYXIgZWwgQ2ljbG8uIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuXCIsXG4gICAgICAgICAgICAgIGljb246IFwiZXJyb3JcIixcbiAgICAgICAgICAvLyAgICB0aW1lcjogMzAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oKF8pID0+IHtcbiAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxufTtcbjwvc2NyaXB0PlxuICAiXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJTdXJ2ZXlWdWUiLCJTd2FsIiwicmVxdWlyZSIsImpzb24iLCJjb21wb25lbnRzIiwiU3VydmV5IiwiZGF0YSIsInN1cnZleSIsIm1vdW50ZWQiLCJfdGhpcyIsIl9jYWxsZWUyIiwiX3JlZiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsIk1vZGVsIiwib25Db21wbGV0aW5nIiwiYWRkIiwiX3giLCJfeDIiLCJfY2FsbGVlIiwicmVzdWx0Iiwib3B0aW9ucyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJhbGxvd0NvbXBsZXRlIiwiYXhpb3MiLCJwb3N0IiwicmVzcG9uc2UiLCJjb25zb2xlIiwibG9nIiwiZmlyZSIsInRpdGxlIiwidGV4dCIsImljb24iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJfIiwicmVsb2FkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/create.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/edit.vue?vue&type=script&lang=js&":
/*!***********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/edit.vue?vue&type=script&lang=js& ***!
\***********************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/cycle/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null,\n data: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n var self;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n self = _this;\n _context2.next = 3;\n return axios.get(\"/api/cycle/edit/\" + _this.$route.params.id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n _this.data = response.data;\n console.log(_this.data);\n });\n case 3:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/cycle/update/\" + self.$route.params.id, result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"El ciclo ha sido actualizado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/ciclos\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo actualizar el ciclo. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n _this.survey.data = self.data;\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY3ljbGUvZWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OytDQU9BLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENBQUEsRUFBQWlCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFwQixDQUFBLENBQUFELENBQUEsV0FBQWtCLE1BQUEsbUJBQUFqQixDQUFBLElBQUFpQixNQUFBLFlBQUFBLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxnQkFBQW9CLEtBQUFy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LENBQUFDLE1BQUEsQ0FBQUMsRUFBQSxFQUFBYyxNQUFBLENBQUExQixJQUFBLEVBQ0F4RSxJQUFBLFdBQUF5RixRQUFBO3dCQUNBQyxPQUFBLENBQUFDLEdBQUEsQ0FBQUYsUUFBQSxDQUFBakIsSUFBQTt3QkFDQSxJQUFBaUIsUUFBQSxDQUFBakIsSUFBQTswQkFDQUwsSUFBQSxDQUFBcUMsSUFBQTs0QkFDQUMsS0FBQTs0QkFDQUMsSUFBQTs0QkFDQUMsSUFBQTs0QkFDQTswQkFDQSxHQUFBM0csSUFBQTs0QkFDQTRHLE1BQUEsQ0FBQUMsUUFBQSxDQUFBQyxJQUFBOzBCQUNBO3dCQUNBOzBCQUNBM0MsSUFBQSxDQUFBcUMsSUFBQTs0QkFDQUMsS0FBQTs0QkFDQUMsSUFBQTs0QkFDQUMsSUFBQTs0QkFDQTswQkFDQSxHQUFBM0csSUFBQSxXQUFBK0csQ0FBQTs0QkFDQUYsUUFBQSxDQUFBRyxNQUFBOzBCQUNBO3dCQUNBO3NCQUNBO29CQUFBO29CQUFBO3NCQUFBLE9BQUFYLFFBQUEsQ0FBQTFELElBQUE7a0JBQUE7Z0JBQUEsR0FBQXNELE9BQUE7Y0FBQSxDQUNBLElBQUFsQyxLQUFBLE9BQUFELFNBQUE7WUFBQTtZQUNBYSxLQUFBLENBQUFGLE1BQUEsQ0FBQUQsSUFBQSxHQUFBWixJQUFBLENBQUFZLElBQUE7VUFBQTtVQUFBO1lBQUEsT0FBQU8sU0FBQSxDQUFBcEMsSUFBQTtRQUFBO01BQUEsR0FBQWlDLFFBQUE7SUFBQTtFQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY3ljbGUvZWRpdC52dWU/YWVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiB2LWlmPVwic3VydmV5XCI+XG4gICAgICA8U3VydmV5IDpzdXJ2ZXk9XCJzdXJ2ZXlcIj48L1N1cnZleT5cbiAgICA8L2Rpdj5cbiAgPC90ZW1wbGF0ZT5cbiAgICAgIFxuICAgICAgPHNjcmlwdD5cbiAgaW1wb3J0ICogYXMgU3VydmV5VnVlIGZyb20gXCJzdXJ2ZXktdnVlXCI7XG4gIGNvbnN0IFN3YWwgPSByZXF1aXJlKFwic3dlZXRhbGVydDJcIik7XG4gIGltcG9ydCB7IGpzb24gfSBmcm9tIFwiLi9mb3JtXCI7XG4gIFxuICBleHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcG9uZW50czogeyBTdXJ2ZXk6IFN1cnZleVZ1ZS5TdXJ2ZXkgfSxcbiAgICBkYXRhOiAoKSA9PiAoe1xuICAgICAgc3VydmV5OiBudWxsLFxuICAgICAgZGF0YTogbnVsbCxcbiAgICB9KSxcbiAgXG4gICAgYXN5bmMgbW91bnRlZCgpIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgIC5nZXQoXCIvYXBpL2N5Y2xlL2VkaXQvXCIgKyB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBBVCxcbiAgICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEpXG4gICAgICAgIH0pO1xuICBcbiAgICAgIHRoaXMuc3VydmV5ID0gbmV3IFN1cnZleVZ1ZS5Nb2RlbChqc29uKTtcbiAgXG4gICAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucy5hbGxvd0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgICAgLnBvc3QoXCIvYXBpL2N5Y2xlL3VwZGF0ZS9cIiArIHNlbGYuJHJvdXRlLnBhcmFtcy5pZCwgcmVzdWx0LmRhdGEpXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEpXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBcIkFjdHVhbGl6YWRvXCIsXG4gICAgICAgICAgICAgICAgdGV4dDogXCJFbCBjaWNsbyBoYSBzaWRvIGFjdHVhbGl6YWRvIGNvbiDDqXhpdG9cIixcbiAgICAgICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgICAvLyAgdGltZXI6IDIwMDAsXG4gICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vY2ljbG9zXCI7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJFcnJvciFcIixcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIk5vIHNlIHB1ZG8gYWN0dWFsaXphciBlbCBjaWNsby4gUG9yIGZhdm9yIGludGVudGUgbcOhcyB0YXJkZS5cIixcbiAgICAgICAgICAgICAgICBpY29uOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgICAgLy8gICAgdGltZXI6IDMwMDAsXG4gICAgICAgICAgICAgIH0pLnRoZW4oKF8pID0+IHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3VydmV5LmRhdGEgPSBzZWxmLmRhdGE7XG4gICAgfSxcbiAgfTtcbiAgPC9zY3JpcHQ+Il0sIm5hbWVzIjpbIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJlIiwidCIsInIiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImkiLCJTeW1ib2wiLCJhIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImNhbGwiLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiU3VydmV5VnVlIiwiU3dhbCIsInJlcXVpcmUiLCJqc29uIiwiY29tcG9uZW50cyIsIlN1cnZleSIsImRhdGEiLCJzdXJ2ZXkiLCJtb3VudGVkIiwiX3RoaXMiLCJfY2FsbGVlMiIsIl9yZWYiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJheGlvcyIsImdldCIsIiRyb3V0ZSIsInBhcmFtcyIsImlkIiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJBVCIsIkFjY2VwdCIsInJlc3BvbnNlIiwiY29uc29sZSIsImxvZyIsIk1vZGVsIiwib25Db21wbGV0aW5nIiwiYWRkIiwiX3giLCJfeDIiLCJfY2FsbGVlIiwicmVzdWx0Iiwib3B0aW9ucyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJhbGxvd0NvbXBsZXRlIiwicG9zdCIsImZpcmUiLCJ0aXRsZSIsInRleHQiLCJpY29uIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwiXyIsInJlbG9hZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/edit.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/index.vue?vue&type=script&lang=js&":
/*!************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/index.vue?vue&type=script&lang=js& ***!
\************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n data: null,\n search: \"\",\n headers: [{\n text: \"Nombre\",\n value: \"name\"\n }, {\n text: \"Modalidad\",\n value: \"modality\"\n }, {\n text: \"Tipo de Certificación\",\n value: \"certification\"\n }, {\n text: \"Icono\",\n value: \"image\"\n }, {\n text: \"Cantidad de Cursos\",\n value: \"courses\"\n }, {\n text: \"Acciones\",\n value: \"actions\",\n sortable: false\n }]\n };\n },\n mounted: function mounted() {\n this.loadData();\n },\n methods: {\n loadData: function loadData() {\n var _this = this;\n axios.get(\"/api/cycle/index\").then(function (response) {\n _this.data = response.data;\n });\n },\n edit: function edit(id) {\n window.location.href = \"/panel-administracion/ciclos/\" + id + \"/editar\";\n },\n trash: function trash(id, name) {\n var _this2 = this;\n Swal.fire({\n title: \"Confirmación\",\n html: \"<p margin-bottom: 10px;\\\">\\n \\xBFEst\\xE1s seguro de que deseas eliminar el ciclo <b>\\\"\".concat(name, \"\\\"</b>?</p>\\n <p style=\\\"font-size: 0.7em;\\\">\\n Si lo eliminas, se eliminaran los cursos asociados.\\n </p>\"),\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Sí, eliminar\",\n cancelButtonText: \"Cancelar\"\n }).then(function (result) {\n if (result.isConfirmed) {\n axios[\"delete\"](\"/api/cycle/delete/\" + id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n Swal.fire({\n title: \"Eliminado\",\n text: \"Se ha eliminado el ciclo con éxito.\",\n icon: \"success\",\n timer: 2000\n }).then(function (_) {});\n _this2.loadData();\n });\n }\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY3ljbGUvaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7O0FBcUNBLElBQUFBLElBQUEsR0FBQUMsbUJBQUE7QUFDQSxpRUFBZTtFQUNmQyxJQUFBLFdBQUFBLEtBQUE7SUFDQTtNQUNBQSxJQUFBO01BQ0FDLE1BQUE7TUFDQUMsT0FBQSxHQUNBO1FBQUFDLElBQUE7UUFBQUMsS0FBQTtNQUFBLEdBQ0E7UUFBQUQsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7TUFBQSxHQUNBO1FBQUFELElBQUE7UUFBQUMsS0FBQTtNQUFBLEdBQ0E7UUFBQUQsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7UUFBQUMsUUFBQTtNQUFBO0lBRUE7RUFDQTtFQUNBQyxPQUFBLFdBQUFBLFFBQUE7SUFDQSxLQUFBQyxRQUFBO0VBQ0E7RUFDQUMsT0FBQTtJQUNBRCxRQUFBLFdBQUFBLFNBQUE7TUFBQSxJQUFBRSxLQUFBO01BQ0FDLEtBQUEsQ0FBQUMsR0FBQSxxQkFBQUMsSUFBQSxXQUFBQyxRQUFBO1FBQ0FKLEtBQUEsQ0FBQVQsSUFBQSxHQUFBYSxRQUFBLENBQUFiLElBQUE7TUFDQTtJQUNBO0lBQ0FjLElBQUEsV0FBQUEsS0FBQUMsRUFBQTtNQUNBQyxNQUFBLENBQUFDLFFBQUEsQ0FBQUMsSUFBQSxxQ0FBQUgsRUFBQTtJQUNBO0lBQ0FJLEtBQUEsV0FBQUEsTUFBQUosRUFBQSxFQUFBSyxJQUFBO01BQUEsSUFBQUMsTUFBQTtNQUNBdkIsSUFBQSxDQUFBd0IsSUFBQTtRQUNBQyxLQUFBO1FBQ0FDLElBQUEsMEdBQUFDLE1BQUEsQ0FDQUwsSUFBQSw0S0FHQTtRQUNBTSxJQUFBO1FBQ0FDLGdCQUFBO1FBQ0FDLGtCQUFBO1FBQ0FDLGlCQUFBO1FBQ0FDLGlCQUFBO1FBQ0FDLGdCQUFBO01BQ0EsR0FBQW5CLElBQUEsV0FBQW9CLE1BQUE7UUFDQSxJQUFBQSxNQUFBLENBQUFDLFdBQUE7VUFDQXZCLEtBQUEsVUFDQSx3QkFBQUssRUFBQTtZQUNBYixPQUFBO2NBQ0FnQyxhQUFBLEVBQUFDLEVBQUE7Y0FDQUMsTUFBQTtZQUNBO1VBQ0EsR0FDQXhCLElBQUEsV0FBQUMsUUFBQTtZQUNBZixJQUFBLENBQUF3QixJQUFBO2NBQ0FDLEtBQUE7Y0FDQXBCLElBQUE7Y0FDQXVCLElBQUE7Y0FDQVcsS0FBQTtZQUNBLEdBQUF6QixJQUFBLFdBQUEwQixDQUFBO1lBQ0FqQixNQUFBLENBQUFkLFFBQUE7VUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jeWNsZS9pbmRleC52dWU/NzY2ZCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDx2LWFwcD5cbiAgICA8di1jYXJkIHYtaWY9XCJkYXRhXCI+XG4gICAgICA8di1jYXJkLXRpdGxlPlxuICAgICAgICBBZG1pbmlzdHJhY2nDs24gZGUgQ2ljbG9zXG4gICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICA8di10ZXh0LWZpZWxkXG4gICAgICAgICAgdi1tb2RlbD1cInNlYXJjaFwiXG4gICAgICAgICAgYXBwZW5kLWljb249XCJtZGktbWFnbmlmeVwiXG4gICAgICAgICAgbGFiZWw9XCJCdXNjYXJcIlxuICAgICAgICAgIHNpbmdsZS1saW5lXG4gICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgID48L3YtdGV4dC1maWVsZD5cbiAgICAgIDwvdi1jYXJkLXRpdGxlPlxuICAgICAgPHYtZGF0YS10YWJsZVxuICAgICAgICA6aGVhZGVycz1cImhlYWRlcnNcIlxuICAgICAgICA6aXRlbXM9XCJkYXRhXCJcbiAgICAgICAgY2xhc3M9XCJlbGV2YXRpb24tMVwiXG4gICAgICAgIDpzZWFyY2g9XCJzZWFyY2hcIlxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uaW1hZ2U9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWltZyBtYXgtaGVpZ2h0PVwiNDBcIiBtYXgtd2lkdGg9XCI4MFwiIGNvbnRhaW4gOnNyYz1cIml0ZW0uaW1hZ2VuXCI+PC92LWltZ1xuICAgICAgICA+PC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFjdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInJlZFwiIGZhYiB4LXNtYWxsIGRhcmsgQGNsaWNrPVwiZWRpdChpdGVtLmlkKVwiPlxuICAgICAgICAgICAgPHYtaWNvbj4gbWRpLXBlbmNpbCA8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cIndhcm5pbmdcIiBmYWIgeC1zbWFsbCBkYXJrIEBjbGljaz1cInRyYXNoKGl0ZW0uaWQsIGl0ZW0ubmFtZSlcIj5cbiAgICAgICAgICAgIDx2LWljb24+IG1kaS1kZWxldGUgPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvdi1kYXRhLXRhYmxlPlxuICAgIDwvdi1jYXJkPlxuICA8L3YtYXBwPlxuPC90ZW1wbGF0ZT5cbiAgXG4gIDxzY3JpcHQ+XG4gIGNvbnN0IFN3YWwgPSByZXF1aXJlKFwic3dlZXRhbGVydDJcIik7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IG51bGwsXG4gICAgICBzZWFyY2g6IFwiXCIsXG4gICAgICBoZWFkZXJzOiBbXG4gICAgICAgIHsgdGV4dDogXCJOb21icmVcIiwgdmFsdWU6IFwibmFtZVwiIH0sXG4gICAgICAgIHsgdGV4dDogXCJNb2RhbGlkYWRcIiwgdmFsdWU6IFwibW9kYWxpdHlcIiB9LFxuICAgICAgICB7IHRleHQ6IFwiVGlwbyBkZSBDZXJ0aWZpY2FjacOzblwiLCB2YWx1ZTogXCJjZXJ0aWZpY2F0aW9uXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkljb25vXCIsIHZhbHVlOiBcImltYWdlXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkNhbnRpZGFkIGRlIEN1cnNvc1wiLCB2YWx1ZTogXCJjb3Vyc2VzXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkFjY2lvbmVzXCIsIHZhbHVlOiBcImFjdGlvbnNcIiwgc29ydGFibGU6IGZhbHNlIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgbG9hZERhdGEoKSB7XG4gICAgICBheGlvcy5nZXQoXCIvYXBpL2N5Y2xlL2luZGV4XCIpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGVkaXQoaWQpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vY2ljbG9zL1wiICsgaWQgKyBcIi9lZGl0YXJcIjtcbiAgICB9LFxuICAgIHRyYXNoKGlkLCBuYW1lKSB7XG4gICAgICBTd2FsLmZpcmUoe1xuICAgICAgICB0aXRsZTogXCJDb25maXJtYWNpw7NuXCIsXG4gICAgICAgIGh0bWw6IGA8cCBtYXJnaW4tYm90dG9tOiAxMHB4O1wiPlxuICAgICAgICAgICAgICAgIMK/RXN0w6FzIHNlZ3VybyBkZSBxdWUgZGVzZWFzIGVsaW1pbmFyIGVsIGNpY2xvIDxiPlwiJHtuYW1lfVwiPC9iPj88L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOiAwLjdlbTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNpIGxvIGVsaW1pbmFzLCBzZSBlbGltaW5hcmFuIGxvcyBjdXJzb3MgYXNvY2lhZG9zLlxuICAgICAgICAgICAgICAgICAgICA8L3A+YCxcbiAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCIsXG4gICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogXCIjMzA4NWQ2XCIsXG4gICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiNkMzNcIixcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiU8OtLCBlbGltaW5hclwiLFxuICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiBcIkNhbmNlbGFyXCIsXG4gICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xuICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAuZGVsZXRlKFwiL2FwaS9jeWNsZS9kZWxldGUvXCIgKyBpZCwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogQVQsXG4gICAgICAgICAgICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJFbGltaW5hZG9cIixcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlNlIGhhIGVsaW1pbmFkbyBlbCBjaWNsbyBjb24gw6l4aXRvLlwiLFxuICAgICAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgICAgIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgICB9KS50aGVuKChfKSA9PiB7fSk7XG4gICAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PiJdLCJuYW1lcyI6WyJTd2FsIiwicmVxdWlyZSIsImRhdGEiLCJzZWFyY2giLCJoZWFkZXJzIiwidGV4dCIsInZhbHVlIiwic29ydGFibGUiLCJtb3VudGVkIiwibG9hZERhdGEiLCJtZXRob2RzIiwiX3RoaXMiLCJheGlvcyIsImdldCIsInRoZW4iLCJyZXNwb25zZSIsImVkaXQiLCJpZCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsInRyYXNoIiwibmFtZSIsIl90aGlzMiIsImZpcmUiLCJ0aXRsZSIsImh0bWwiLCJjb25jYXQiLCJpY29uIiwic2hvd0NhbmNlbEJ1dHRvbiIsImNvbmZpcm1CdXR0b25Db2xvciIsImNhbmNlbEJ1dHRvbkNvbG9yIiwiY29uZmlybUJ1dHRvblRleHQiLCJjYW5jZWxCdXR0b25UZXh0IiwicmVzdWx0IiwiaXNDb25maXJtZWQiLCJBdXRob3JpemF0aW9uIiwiQVQiLCJBY2NlcHQiLCJ0aW1lciIsIl8iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/index.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/create.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/create.vue?vue&type=script&lang=js& ***!
\***************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/library/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/library/store\", result.data).then(function (response) {\n if (response.data) {\n console.log(response.data);\n Swal.fire({\n title: \"Actualizado\",\n text: \"El elemento en la biblioteca ha sido creado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/biblioteca\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo crear el elemento en la biblioteca. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vbGlicmFyeS9jcmVhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7Ozs7OzsrQ0FPQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsQ0FBQU8sS0FBQSxLQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFOLENBQUEsQ0FBQU8sV0FBQSw4QkFBQUMsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUssY0FBQSxDQUFBUCxDQUFBLEVBQUFELENBQUEsSUFBQVMsS0FBQSxFQUFBUCxDQUFBLEVBQUFpQixVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBcEIsQ0FBQSxDQUFBRCxDQUFBLFdBQUFrQixNQUFBLG1CQUFBakIsQ0FBQSxJQUFBaUIsTUFBQSxZQUFBQSxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsZ0JBQUFvQixL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QUF1RyxDQUFBOzRCQUNBRixRQUFBLENBQUFHLE1BQUE7MEJBQ0E7d0JBQ0E7c0JBQ0E7b0JBQUE7b0JBQUE7c0JBQUEsT0FBQWYsUUFBQSxDQUFBOUMsSUFBQTtrQkFBQTtnQkFBQSxHQUFBMEMsT0FBQTtjQUFBLENBQ0EsSUFBQXRCLEtBQUEsT0FBQUQsU0FBQTtZQUFBO1VBQUE7VUFBQTtZQUFBLE9BQUFpQixTQUFBLENBQUFwQyxJQUFBO1FBQUE7TUFBQSxHQUFBaUMsUUFBQTtJQUFBO0VBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9saWJyYXJ5L2NyZWF0ZS52dWU/NjA2MCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdiB2LWlmPVwic3VydmV5XCI+XG4gICAgICAgIDxTdXJ2ZXkgOnN1cnZleT1cInN1cnZleVwiPjwvU3VydmV5PlxuICAgIDwvZGl2PlxuICA8L3RlbXBsYXRlPlxuICAgIFxuICAgIDxzY3JpcHQ+XG4gIGltcG9ydCAqIGFzIFN1cnZleVZ1ZSBmcm9tICdzdXJ2ZXktdnVlJztcbiAgY29uc3QgU3dhbCA9IHJlcXVpcmUoXCJzd2VldGFsZXJ0MlwiKTtcbiAgaW1wb3J0IHsganNvbiB9IGZyb20gXCIuL2Zvcm1cIjtcbiAgXG4gIGV4cG9ydCBkZWZhdWx0IHtcbiAgICBjb21wb25lbnRzOiB7IFN1cnZleTogU3VydmV5VnVlLlN1cnZleSB9LFxuICAgIGRhdGE6ICgpID0+ICh7XG4gICAgICBzdXJ2ZXk6IG51bGwsXG4gICAgfSksXG4gIFxuICAgIGFzeW5jIG1vdW50ZWQoKSB7XG4gIFxuICAgICAgdGhpcy5zdXJ2ZXkgPSBuZXcgU3VydmV5VnVlLk1vZGVsKGpzb24pO1xuICBcbiAgICAgIHRoaXMuc3VydmV5Lm9uQ29tcGxldGluZy5hZGQoYXN5bmMgZnVuY3Rpb24gKHJlc3VsdCwgb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zLmFsbG93Q29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgYXdhaXQgYXhpb3NcbiAgICAgICAgLnBvc3QoXCIvYXBpL2xpYnJhcnkvc3RvcmVcIiwgcmVzdWx0LmRhdGEpXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgIHRpdGxlOiBcIkFjdHVhbGl6YWRvXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiRWwgZWxlbWVudG8gZW4gbGEgYmlibGlvdGVjYSBoYSBzaWRvIGNyZWFkbyBjb24gw6l4aXRvXCIsXG4gICAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgLy8gIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID1cbiAgICAgICAgICAgICAgICBcIi9wYW5lbC1hZG1pbmlzdHJhY2lvbi9iaWJsaW90ZWNhXCI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICAgICAgXCJObyBzZSBwdWRvIGNyZWFyIGVsIGVsZW1lbnRvIGVuIGxhIGJpYmxpb3RlY2EuIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuXCIsXG4gICAgICAgICAgICAgIGljb246IFwiZXJyb3JcIixcbiAgICAgICAgICAvLyAgICB0aW1lcjogMzAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oKF8pID0+IHtcbiAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbiAgPC9zY3JpcHQ+XG4gICAgIl0sIm5hbWVzIjpbIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJlIiwidCIsInIiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImkiLCJTeW1ib2wiLCJhIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImNhbGwiLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiU3VydmV5VnVlIiwiU3dhbCIsInJlcXVpcmUiLCJqc29uIiwiY29tcG9uZW50cyIsIlN1cnZleSIsImRhdGEiLCJzdXJ2ZXkiLCJtb3VudGVkIiwiX3RoaXMiLCJfY2FsbGVlMiIsIl9yZWYiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJNb2RlbCIsIm9uQ29tcGxldGluZyIsImFkZCIsIl94IiwiX3gyIiwiX2NhbGxlZSIsInJlc3VsdCIsIm9wdGlvbnMiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiYWxsb3dDb21wbGV0ZSIsImF4aW9zIiwicG9zdCIsInJlc3BvbnNlIiwiY29uc29sZSIsImxvZyIsImZpcmUiLCJ0aXRsZSIsInRleHQiLCJpY29uIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwiXyIsInJlbG9hZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/create.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/edit.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/edit.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/library/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null,\n data: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n var self;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n self = _this;\n _context2.next = 3;\n return axios.get(\"/api/library/edit/\" + _this.$route.params.id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n _this.data = response.data;\n console.log(_this.data);\n });\n case 3:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/library/update/\" + self.$route.params.id, result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"El elemento en la biblioteca ha sido actualizado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/biblioteca\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo actualizar el elemento en la biblioteca. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n _this.survey.data = self.data;\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vbGlicmFyeS9lZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7K0NBT0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0IsS0FB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QUEsQ0FBQUMsTUFBQSxDQUFBQyxFQUFBLEVBQUFjLE1BQUEsQ0FBQTFCLElBQUEsRUFDQXhFLElBQUEsV0FBQXlGLFFBQUE7d0JBQ0FDLE9BQUEsQ0FBQUMsR0FBQSxDQUFBRixRQUFBLENBQUFqQixJQUFBO3dCQUNBLElBQUFpQixRQUFBLENBQUFqQixJQUFBOzBCQUNBTCxJQUFBLENBQUFxQyxJQUFBOzRCQUNBQyxLQUFBOzRCQUNBQyxJQUFBOzRCQUNBQyxJQUFBOzRCQUNBOzBCQUNBLEdBQUEzRyxJQUFBOzRCQUNBNEcsTUFBQSxDQUFBQyxRQUFBLENBQUFDLElBQUE7MEJBQ0E7d0JBQ0E7MEJBQ0EzQyxJQUFBLENBQUFxQyxJQUFBOzRCQUNBQyxLQUFBOzRCQUNBQyxJQUFBOzRCQUNBQyxJQUFBOzRCQUNBOzBCQUNBLEdBQUEzRyxJQUFBLFdBQUErRyxDQUFBOzRCQUNBRixRQUFBLENBQUFHLE1BQUE7MEJBQ0E7d0JBQ0E7c0JBQ0E7b0JBQUE7b0JBQUE7c0JBQUEsT0FBQVgsUUFBQSxDQUFBMUQsSUFBQTtrQkFBQTtnQkFBQSxHQUFBc0QsT0FBQTtjQUFBLENBQ0EsSUFBQWxDLEtBQUEsT0FBQUQsU0FBQTtZQUFBO1lBQ0FhLEtBQUEsQ0FBQUYsTUFBQSxDQUFBRCxJQUFBLEdBQUFaLElBQUEsQ0FBQVksSUFBQTtVQUFBO1VBQUE7WUFBQSxPQUFBTyxTQUFBLENBQUFwQyxJQUFBO1FBQUE7TUFBQSxHQUFBaUMsUUFBQTtJQUFBO0VBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9saWJyYXJ5L2VkaXQudnVlPzg2YjAiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgdi1pZj1cInN1cnZleVwiPlxuICAgICAgPFN1cnZleSA6c3VydmV5PVwic3VydmV5XCI+PC9TdXJ2ZXk+XG4gICAgPC9kaXY+XG4gIDwvdGVtcGxhdGU+XG4gICAgICBcbiAgICAgIDxzY3JpcHQ+XG4gIGltcG9ydCAqIGFzIFN1cnZleVZ1ZSBmcm9tIFwic3VydmV5LXZ1ZVwiO1xuICBjb25zdCBTd2FsID0gcmVxdWlyZShcInN3ZWV0YWxlcnQyXCIpO1xuICBpbXBvcnQgeyBqc29uIH0gZnJvbSBcIi4vZm9ybVwiO1xuICBcbiAgZXhwb3J0IGRlZmF1bHQge1xuICAgIGNvbXBvbmVudHM6IHsgU3VydmV5OiBTdXJ2ZXlWdWUuU3VydmV5IH0sXG4gICAgZGF0YTogKCkgPT4gKHtcbiAgICAgIHN1cnZleTogbnVsbCxcbiAgICAgIGRhdGE6IG51bGwsXG4gICAgfSksXG4gIFxuICAgIGFzeW5jIG1vdW50ZWQoKSB7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICBhd2FpdCBheGlvc1xuICAgICAgICAuZ2V0KFwiL2FwaS9saWJyYXJ5L2VkaXQvXCIgKyB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBBVCxcbiAgICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEpXG4gICAgICAgIH0pO1xuICBcbiAgICAgIHRoaXMuc3VydmV5ID0gbmV3IFN1cnZleVZ1ZS5Nb2RlbChqc29uKTtcbiAgXG4gICAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucy5hbGxvd0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgICAgLnBvc3QoXCIvYXBpL2xpYnJhcnkvdXBkYXRlL1wiICsgc2VsZi4kcm91dGUucGFyYW1zLmlkLCByZXN1bHQuZGF0YSlcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YSlcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiQWN0dWFsaXphZG9cIixcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIkVsIGVsZW1lbnRvIGVuIGxhIGJpYmxpb3RlY2EgaGEgc2lkbyBhY3R1YWxpemFkbyBjb24gw6l4aXRvXCIsXG4gICAgICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgLy8gIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL3BhbmVsLWFkbWluaXN0cmFjaW9uL2JpYmxpb3RlY2FcIjtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBcIkVycm9yIVwiLFxuICAgICAgICAgICAgICAgIHRleHQ6IFwiTm8gc2UgcHVkbyBhY3R1YWxpemFyIGVsIGVsZW1lbnRvIGVuIGxhIGJpYmxpb3RlY2EuIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuXCIsXG4gICAgICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgIC8vICAgIHRpbWVyOiAzMDAwLFxuICAgICAgICAgICAgICB9KS50aGVuKChfKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnN1cnZleS5kYXRhID0gc2VsZi5kYXRhO1xuICAgIH0sXG4gIH07XG4gIDwvc2NyaXB0PiJdLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIlN1cnZleVZ1ZSIsIlN3YWwiLCJyZXF1aXJlIiwianNvbiIsImNvbXBvbmVudHMiLCJTdXJ2ZXkiLCJkYXRhIiwic3VydmV5IiwibW91bnRlZCIsIl90aGlzIiwiX2NhbGxlZTIiLCJfcmVmIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiYXhpb3MiLCJnZXQiLCIkcm91dGUiLCJwYXJhbXMiLCJpZCIsImhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwiQVQiLCJBY2NlcHQiLCJyZXNwb25zZSIsImNvbnNvbGUiLCJsb2ciLCJNb2RlbCIsIm9uQ29tcGxldGluZyIsImFkZCIsIl94IiwiX3gyIiwiX2NhbGxlZSIsInJlc3VsdCIsIm9wdGlvbnMiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiYWxsb3dDb21wbGV0ZSIsInBvc3QiLCJmaXJlIiwidGl0bGUiLCJ0ZXh0IiwiaWNvbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsIl8iLCJyZWxvYWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/edit.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/index.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/index.vue?vue&type=script&lang=js& ***!
\**************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n data: null,\n search: \"\",\n headers: [{\n text: \"Nombre\",\n value: \"name\"\n }, {\n text: \"Tipo\",\n value: \"type\"\n }, {\n text: \"Icono\",\n value: \"image\"\n }, {\n text: \"Documento\",\n value: \"doc\"\n }, {\n text: \"Acciones\",\n value: \"actions\",\n sortable: false\n }]\n };\n },\n mounted: function mounted() {\n this.loadData();\n },\n methods: {\n loadData: function loadData() {\n var _this = this;\n axios.get(\"/api/library/index\").then(function (response) {\n _this.data = response.data;\n console.log(_this.data);\n });\n },\n edit: function edit(id) {\n window.location.href = \"/panel-administracion/biblioteca/\" + id + \"/editar\";\n },\n trash: function trash(id, name) {\n var _this2 = this;\n Swal.fire({\n title: \"Confirmación\",\n html: \"<p margin-bottom: 10px;\\\">\\n \\xBFEst\\xE1s seguro de que deseas eliminar elemento en la biblioteca <b>\\\"\".concat(name, \"\\\"</b>?</p>\\n <p style=\\\"font-size: 0.7em;\\\">\\n Si lo eliminas, no podr\\xE1s recuperarlo.\\n </p>\"),\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Sí, eliminar\",\n cancelButtonText: \"Cancelar\"\n }).then(function (result) {\n if (result.isConfirmed) {\n axios[\"delete\"](\"/api/library/delete/\" + id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n Swal.fire({\n title: \"Eliminado\",\n text: \"Se ha eliminado el elemento en la biblioteca con éxito.\",\n icon: \"success\",\n timer: 2000\n }).then(function (_) {});\n _this2.loadData();\n });\n }\n });\n },\n download: function download(id) {\n window.open(\"/api/library/download/\" + id, \"_blank\");\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vbGlicmFyeS9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7QUFxREEsSUFBQUEsSUFBQSxHQUFBQyxtQkFBQTtBQUNBLGlFQUFlO0VBQ2ZDLElBQUEsV0FBQUEsS0FBQTtJQUNBO01BQ0FBLElBQUE7TUFDQUMsTUFBQTtNQUNBQyxPQUFBLEdBQ0E7UUFBQUMsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7TUFBQSxHQUNBO1FBQUFELElBQUE7UUFBQUMsS0FBQTtNQUFBLEdBQ0E7UUFBQUQsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7UUFBQUMsUUFBQTtNQUFBO0lBRUE7RUFDQTtFQUNBQyxPQUFBLFdBQUFBLFFBQUE7SUFDQSxLQUFBQyxRQUFBO0VBQ0E7RUFDQUMsT0FBQTtJQUNBRCxRQUFBLFdBQUFBLFNBQUE7TUFBQSxJQUFBRSxLQUFBO01BQ0FDLEtBQUEsQ0FBQUMsR0FBQSx1QkFBQUMsSUFBQSxXQUFBQyxRQUFBO1FBQ0FKLEtBQUEsQ0FBQVQsSUFBQSxHQUFBYSxRQUFBLENBQUFiLElBQUE7UUFDQWMsT0FBQSxDQUFBQyxHQUFBLENBQUFOLEtBQUEsQ0FBQVQsSUFBQTtNQUNBO0lBQ0E7SUFDQWdCLElBQUEsV0FBQUEsS0FBQUMsRUFBQTtNQUNBQyxNQUFBLENBQUFDLFFBQUEsQ0FBQUMsSUFBQSxHQUNBLHNDQUFBSCxFQUFBO0lBQ0E7SUFDQUksS0FBQSxXQUFBQSxNQUFBSixFQUFBLEVBQUFLLElBQUE7TUFBQSxJQUFBQyxNQUFBO01BQ0F6QixJQUFBLENBQUEwQixJQUFBO1FBQ0FDLEtBQUE7UUFDQUMsSUFBQSwySEFBQUMsTUFBQSxDQUNBTCxJQUFBLGdLQUdBO1FBQ0FNLElBQUE7UUFDQUMsZ0JBQUE7UUFDQUMsa0JBQUE7UUFDQUMsaUJBQUE7UUFDQUMsaUJBQUE7UUFDQUMsZ0JBQUE7TUFDQSxHQUFBckIsSUFBQSxXQUFBc0IsTUFBQTtRQUNBLElBQUFBLE1BQUEsQ0FBQUMsV0FBQTtVQUNBekIsS0FBQSxVQUNBLDBCQUFBTyxFQUFBO1lBQ0FmLE9BQUE7Y0FDQWtDLGFBQUEsRUFBQUMsRUFBQTtjQUNBQyxNQUFBO1lBQ0E7VUFDQSxHQUNBMUIsSUFBQSxXQUFBQyxRQUFBO1lBQ0FmLElBQUEsQ0FBQTBCLElBQUE7Y0FDQUMsS0FBQTtjQUNBdEIsSUFBQTtjQUNBeUIsSUFBQTtjQUNBVyxLQUFBO1lBQ0EsR0FBQTNCLElBQUEsV0FBQTRCLENBQUE7WUFDQWpCLE1BQUEsQ0FBQWhCLFFBQUE7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBa0MsUUFBQSxXQUFBQSxTQUFBeEIsRUFBQTtNQUNBQyxNQUFBLENBQUF3QixJQUFBLDRCQUFBekIsRUFBQTtJQUNBO0VBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2xpYnJhcnkvaW5kZXgudnVlPzRmNmYiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8di1hcHA+XG4gICAgPHYtY2FyZCB2LWlmPVwiZGF0YVwiPlxuICAgICAgPHYtY2FyZC10aXRsZT5cbiAgICAgICAgQWRtaW5pc3RyYWNpw7NuIGRlIEJpYmxpb3RlY2FcbiAgICAgICAgPHYtc3BhY2VyPjwvdi1zcGFjZXI+XG4gICAgICAgIDx2LXRleHQtZmllbGRcbiAgICAgICAgICB2LW1vZGVsPVwic2VhcmNoXCJcbiAgICAgICAgICBhcHBlbmQtaWNvbj1cIm1kaS1tYWduaWZ5XCJcbiAgICAgICAgICBsYWJlbD1cIkJ1c2NhclwiXG4gICAgICAgICAgc2luZ2xlLWxpbmVcbiAgICAgICAgICBoaWRlLWRldGFpbHNcbiAgICAgICAgPjwvdi10ZXh0LWZpZWxkPlxuICAgICAgPC92LWNhcmQtdGl0bGU+XG4gICAgICA8di1kYXRhLXRhYmxlXG4gICAgICAgIDpoZWFkZXJzPVwiaGVhZGVyc1wiXG4gICAgICAgIDppdGVtcz1cImRhdGFcIlxuICAgICAgICBjbGFzcz1cImVsZXZhdGlvbi0xXCJcbiAgICAgICAgOnNlYXJjaD1cInNlYXJjaFwiXG4gICAgICA+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5pbWFnZT1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHYtaW1nXG4gICAgICAgICAgICBtYXgtaGVpZ2h0PVwiNTFcIlxuICAgICAgICAgICAgbWF4LXdpZHRoPVwiMTEwXCJcbiAgICAgICAgICAgIGNvbnRhaW5cbiAgICAgICAgICAgIDpzcmM9XCJpdGVtLmljb25cIlxuICAgICAgICAgID48L3YtaW1nXG4gICAgICAgID48L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uZG9jPVwieyBpdGVtIH1cIj5cbiAgICAgICAgICA8di1idG4gaWNvbiBAY2xpY2s9XCJkb3dubG9hZChpdGVtLmlkKVwiIGNvbG9yPVwicHJpbWFyeVwiIHYtaWY9XCJpdGVtLmZpbGVcIj5cbiAgICAgICAgICAgIDx2LWljb24+bWRpLWNsb3VkLWRvd25sb2FkPC92LWljb24+XG4gICAgICAgICAgPC92LWJ0bj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFjdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInJlZFwiIGZhYiB4LXNtYWxsIGRhcmsgQGNsaWNrPVwiZWRpdChpdGVtLmlkKVwiPlxuICAgICAgICAgICAgPHYtaWNvbj4gbWRpLXBlbmNpbCA8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICAgIDx2LWJ0blxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuaW5nXCJcbiAgICAgICAgICAgIGZhYlxuICAgICAgICAgICAgeC1zbWFsbFxuICAgICAgICAgICAgZGFya1xuICAgICAgICAgICAgQGNsaWNrPVwidHJhc2goaXRlbS5pZCwgaXRlbS5uYW1lKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHYtaWNvbj4gbWRpLWRlbGV0ZSA8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC92LWRhdGEtdGFibGU+XG4gICAgPC92LWNhcmQ+XG4gIDwvdi1hcHA+XG48L3RlbXBsYXRlPlxuICBcbiAgPHNjcmlwdD5cbmNvbnN0IFN3YWwgPSByZXF1aXJlKFwic3dlZXRhbGVydDJcIik7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IG51bGwsXG4gICAgICBzZWFyY2g6IFwiXCIsXG4gICAgICBoZWFkZXJzOiBbXG4gICAgICAgIHsgdGV4dDogXCJOb21icmVcIiwgdmFsdWU6IFwibmFtZVwiIH0sXG4gICAgICAgIHsgdGV4dDogXCJUaXBvXCIsIHZhbHVlOiBcInR5cGVcIiB9LFxuICAgICAgICB7IHRleHQ6IFwiSWNvbm9cIiwgdmFsdWU6IFwiaW1hZ2VcIiB9LFxuICAgICAgICB7IHRleHQ6IFwiRG9jdW1lbnRvXCIsIHZhbHVlOiBcImRvY1wiIH0sXG4gICAgICAgIHsgdGV4dDogXCJBY2Npb25lc1wiLCB2YWx1ZTogXCJhY3Rpb25zXCIsIHNvcnRhYmxlOiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGxvYWREYXRhKCkge1xuICAgICAgYXhpb3MuZ2V0KFwiL2FwaS9saWJyYXJ5L2luZGV4XCIpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGVkaXQoaWQpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID1cbiAgICAgICAgXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vYmlibGlvdGVjYS9cIiArIGlkICsgXCIvZWRpdGFyXCI7XG4gICAgfSxcbiAgICB0cmFzaChpZCwgbmFtZSkge1xuICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgdGl0bGU6IFwiQ29uZmlybWFjacOzblwiLFxuICAgICAgICBodG1sOiBgPHAgbWFyZ2luLWJvdHRvbTogMTBweDtcIj5cbiAgICAgICAgICAgICAgICDCv0VzdMOhcyBzZWd1cm8gZGUgcXVlIGRlc2VhcyBlbGltaW5hciBlbGVtZW50byBlbiBsYSBiaWJsaW90ZWNhIDxiPlwiJHtuYW1lfVwiPC9iPj88L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOiAwLjdlbTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICBTaSBsbyBlbGltaW5hcywgbm8gcG9kcsOhcyByZWN1cGVyYXJsby5cbiAgICAgICAgICAgICAgICAgICAgPC9wPmAsXG4gICAgICAgIGljb246IFwid2FybmluZ1wiLFxuICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6IFwiIzMwODVkNlwiLFxuICAgICAgICBjYW5jZWxCdXR0b25Db2xvcjogXCIjZDMzXCIsXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIlPDrSwgZWxpbWluYXJcIixcbiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJDYW5jZWxhclwiLFxuICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQuaXNDb25maXJtZWQpIHtcbiAgICAgICAgICBheGlvc1xuICAgICAgICAgICAgLmRlbGV0ZShcIi9hcGkvbGlicmFyeS9kZWxldGUvXCIgKyBpZCwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogQVQsXG4gICAgICAgICAgICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJFbGltaW5hZG9cIixcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlNlIGhhIGVsaW1pbmFkbyBlbCBlbGVtZW50byBlbiBsYSBiaWJsaW90ZWNhIGNvbiDDqXhpdG8uXCIsXG4gICAgICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgdGltZXI6IDIwMDAsXG4gICAgICAgICAgICAgIH0pLnRoZW4oKF8pID0+IHt9KTtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZG93bmxvYWQoaWQpIHtcbiAgICAgIHdpbmRvdy5vcGVuKFwiL2FwaS9saWJyYXJ5L2Rvd25sb2FkL1wiICsgaWQsIFwiX2JsYW5rXCIpO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+Il0sIm5hbWVzIjpbIlN3YWwiLCJyZXF1aXJlIiwiZGF0YSIsInNlYXJjaCIsImhlYWRlcnMiLCJ0ZXh0IiwidmFsdWUiLCJzb3J0YWJsZSIsIm1vdW50ZWQiLCJsb2FkRGF0YSIsIm1ldGhvZHMiLCJfdGhpcyIsImF4aW9zIiwiZ2V0IiwidGhlbiIsInJlc3BvbnNlIiwiY29uc29sZSIsImxvZyIsImVkaXQiLCJpZCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsInRyYXNoIiwibmFtZSIsIl90aGlzMiIsImZpcmUiLCJ0aXRsZSIsImh0bWwiLCJjb25jYXQiLCJpY29uIiwic2hvd0NhbmNlbEJ1dHRvbiIsImNvbmZpcm1CdXR0b25Db2xvciIsImNhbmNlbEJ1dHRvbkNvbG9yIiwiY29uZmlybUJ1dHRvblRleHQiLCJjYW5jZWxCdXR0b25UZXh0IiwicmVzdWx0IiwiaXNDb25maXJtZWQiLCJBdXRob3JpemF0aW9uIiwiQVQiLCJBY2NlcHQiLCJ0aW1lciIsIl8iLCJkb3dubG9hZCIsIm9wZW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/index.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/edit.vue?vue&type=script&lang=js&":
/*!**********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/edit.vue?vue&type=script&lang=js& ***!
\**********************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/page/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null,\n data: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n var self;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n self = _this;\n _context2.next = 3;\n return axios.get(\"/api/page/edit/\" + _this.$route.params.id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n _this.data = response.data;\n });\n case 3:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/page/update/\" + self.$route.params.id, result.data).then(function (response) {\n if (response.data) {\n console.log(response.data);\n Swal.fire({\n title: \"Actualizado\",\n text: \"La pagina ha sido actualizada con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/paginas\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo actualiza la pagina. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n _this.survey.data = self.data;\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n },\n methods: {}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vcGFnZS9lZGl0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7K0NBT0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0IsS0FBQXJC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SUFBQSxFQUNBeEUsSUFBQSxXQUFBeUYsUUFBQTt3QkFDQSxJQUFBQSxRQUFBLENBQUFqQixJQUFBOzBCQUNBOEIsT0FBQSxDQUFBQyxHQUFBLENBQUFkLFFBQUEsQ0FBQWpCLElBQUE7MEJBQ0FMLElBQUEsQ0FBQXFDLElBQUE7NEJBQ0FDLEtBQUE7NEJBQ0FDLElBQUE7NEJBQ0FDLElBQUE7NEJBQ0E7MEJBQ0EsR0FBQTNHLElBQUE7NEJBQ0E0RyxNQUFBLENBQUFDLFFBQUEsQ0FBQUMsSUFBQSxHQUNBOzBCQUNBO3dCQUNBOzBCQUNBM0MsSUFBQSxDQUFBcUMsSUFBQTs0QkFDQUMsS0FBQTs0QkFDQUMsSUFBQSxFQUNBOzRCQUNBQyxJQUFBOzRCQUNBOzBCQUNBLEdBQUEzRyxJQUFBLFdBQUErRyxDQUFBOzRCQUNBRixRQUFBLENBQUFHLE1BQUE7MEJBQ0E7d0JBQ0E7c0JBQ0E7b0JBQUE7b0JBQUE7c0JBQUEsT0FBQWIsUUFBQSxDQUFBeEQsSUFBQTtrQkFBQTtnQkFBQSxHQUFBb0QsT0FBQTtjQUFBLENBQ0EsSUFBQWhDLEtBQUEsT0FBQUQsU0FBQTtZQUFBO1lBQ0FhLEtBQUEsQ0FBQUYsTUFBQSxDQUFBRCxJQUFBLEdBQUFaLElBQUEsQ0FBQVksSUFBQTtVQUFBO1VBQUE7WUFBQSxPQUFBTyxTQUFBLENBQUFwQyxJQUFBO1FBQUE7TUFBQSxHQUFBaUMsUUFBQTtJQUFBO0VBQ0E7RUFDQXFDLE9BQUE7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3BhZ2UvZWRpdC52dWU/YzJjOSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXYgdi1pZj1cInN1cnZleVwiPlxuICAgIDxTdXJ2ZXkgOnN1cnZleT1cInN1cnZleVwiPjwvU3VydmV5PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4gICAgXG4gICAgPHNjcmlwdD5cbmltcG9ydCAqIGFzIFN1cnZleVZ1ZSBmcm9tIFwic3VydmV5LXZ1ZVwiO1xuY29uc3QgU3dhbCA9IHJlcXVpcmUoXCJzd2VldGFsZXJ0MlwiKTtcbmltcG9ydCB7IGpzb24gfSBmcm9tIFwiLi9mb3JtXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czogeyBTdXJ2ZXk6IFN1cnZleVZ1ZS5TdXJ2ZXkgfSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBzdXJ2ZXk6IG51bGwsXG4gICAgZGF0YTpudWxsXG4gIH0pLFxuXG4gIGFzeW5jIG1vdW50ZWQoKSB7XG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgIGF3YWl0IGF4aW9zXG4gICAgICAuZ2V0KFwiL2FwaS9wYWdlL2VkaXQvXCIgKyB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246IEFULFxuICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB9KTtcbiAgICB0aGlzLnN1cnZleSA9IG5ldyBTdXJ2ZXlWdWUuTW9kZWwoanNvbik7XG5cbiAgICB0aGlzLnN1cnZleS5vbkNvbXBsZXRpbmcuYWRkKGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQsIG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMuYWxsb3dDb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgYXdhaXQgYXhpb3NcbiAgICAgICAgLnBvc3QoXCIvYXBpL3BhZ2UvdXBkYXRlL1wiK3NlbGYuJHJvdXRlLnBhcmFtcy5pZCwgcmVzdWx0LmRhdGEpXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5kYXRhKVxuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiQWN0dWFsaXphZG9cIixcbiAgICAgICAgICAgICAgdGV4dDogXCJMYSBwYWdpbmEgaGEgc2lkbyBhY3R1YWxpemFkYSBjb24gw6l4aXRvXCIsXG4gICAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgLy8gIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID1cbiAgICAgICAgICAgICAgICBcIi9wYW5lbC1hZG1pbmlzdHJhY2lvbi9wYWdpbmFzXCI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICAgICAgXCJObyBzZSBwdWRvIGFjdHVhbGl6YSBsYSBwYWdpbmEuIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuXCIsXG4gICAgICAgICAgICAgIGljb246IFwiZXJyb3JcIixcbiAgICAgICAgICAvLyAgICB0aW1lcjogMzAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oKF8pID0+IHtcbiAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc3VydmV5LmRhdGEgPSBzZWxmLmRhdGE7XG4gIH0sXG4gIG1ldGhvZHM6IHt9LFxufTtcbjwvc2NyaXB0PlxuICAgICJdLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIlN1cnZleVZ1ZSIsIlN3YWwiLCJyZXF1aXJlIiwianNvbiIsImNvbXBvbmVudHMiLCJTdXJ2ZXkiLCJkYXRhIiwic3VydmV5IiwibW91bnRlZCIsIl90aGlzIiwiX2NhbGxlZTIiLCJfcmVmIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiYXhpb3MiLCJnZXQiLCIkcm91dGUiLCJwYXJhbXMiLCJpZCIsImhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwiQVQiLCJBY2NlcHQiLCJyZXNwb25zZSIsIk1vZGVsIiwib25Db21wbGV0aW5nIiwiYWRkIiwiX3giLCJfeDIiLCJfY2FsbGVlIiwicmVzdWx0Iiwib3B0aW9ucyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJhbGxvd0NvbXBsZXRlIiwicG9zdCIsImNvbnNvbGUiLCJsb2ciLCJmaXJlIiwidGl0bGUiLCJ0ZXh0IiwiaWNvbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsIl8iLCJyZWxvYWQiLCJtZXRob2RzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/edit.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/index.vue?vue&type=script&lang=js&":
/*!***********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/index.vue?vue&type=script&lang=js& ***!
\***********************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n data: null,\n search: \"\",\n headers: [{\n text: \"Nombre\",\n value: \"name\"\n }, {\n text: \"Url\",\n value: \"link\"\n }, {\n text: \"Secciones\",\n value: \"sections\"\n }, {\n text: \"Menu\",\n value: \"menu\"\n }, {\n text: \"Acciones\",\n value: \"actions\",\n sortable: false\n }]\n };\n },\n mounted: function mounted() {\n this.loadData();\n },\n methods: {\n loadData: function loadData() {\n var _this = this;\n axios.get(\"/api/page/get-pages\").then(function (response) {\n _this.data = response.data;\n });\n },\n edit: function edit(id) {\n window.location.href = \"/panel-administracion/paginas/\" + id + \"/editar\";\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vcGFnZS9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7QUF1Q0EsaUVBQWU7RUFDZkEsSUFBQSxXQUFBQSxLQUFBO0lBQ0E7TUFDQUEsSUFBQTtNQUNBQyxNQUFBO01BQ0FDLE9BQUEsR0FDQTtRQUFBQyxJQUFBO1FBQUFDLEtBQUE7TUFBQSxHQUNBO1FBQUFELElBQUE7UUFBQUMsS0FBQTtNQUFBLEdBQ0E7UUFBQUQsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7TUFBQSxHQUNBO1FBQUFELElBQUE7UUFBQUMsS0FBQTtRQUFBQyxRQUFBO01BQUE7SUFFQTtFQUNBO0VBQ0FDLE9BQUEsV0FBQUEsUUFBQTtJQUNBLEtBQUFDLFFBQUE7RUFDQTtFQUNBQyxPQUFBO0lBQ0FELFFBQUEsV0FBQUEsU0FBQTtNQUFBLElBQUFFLEtBQUE7TUFDQUMsS0FBQSxDQUFBQyxHQUFBLHdCQUFBQyxJQUFBLFdBQUFDLFFBQUE7UUFDQUosS0FBQSxDQUFBVCxJQUFBLEdBQUFhLFFBQUEsQ0FBQWIsSUFBQTtNQUNBO0lBQ0E7SUFDQWMsSUFBQSxXQUFBQSxLQUFBQyxFQUFBO01BQ0FDLE1BQUEsQ0FBQUMsUUFBQSxDQUFBQyxJQUFBLHNDQUFBSCxFQUFBO0lBQ0E7RUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vcGFnZS9pbmRleC52dWU/MDFiOSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDx2LWFwcD5cbiAgICA8di1jYXJkIHYtaWY9XCJkYXRhXCI+XG4gICAgICA8di1jYXJkLXRpdGxlPlxuICAgICAgICBBZG1pbmlzdHJhY2nDs24gZGUgUGFnaW5hc1xuICAgICAgICA8di1zcGFjZXI+PC92LXNwYWNlcj5cbiAgICAgICAgPHYtdGV4dC1maWVsZFxuICAgICAgICAgIHYtbW9kZWw9XCJzZWFyY2hcIlxuICAgICAgICAgIGFwcGVuZC1pY29uPVwibWRpLW1hZ25pZnlcIlxuICAgICAgICAgIGxhYmVsPVwiQnVzY2FyXCJcbiAgICAgICAgICBzaW5nbGUtbGluZVxuICAgICAgICAgIGhpZGUtZGV0YWlsc1xuICAgICAgICA+PC92LXRleHQtZmllbGQ+XG4gICAgICA8L3YtY2FyZC10aXRsZT5cbiAgICAgIDx2LWRhdGEtdGFibGVcbiAgICAgICAgOmhlYWRlcnM9XCJoZWFkZXJzXCJcbiAgICAgICAgOml0ZW1zPVwiZGF0YVwiXG4gICAgICAgIGNsYXNzPVwiZWxldmF0aW9uLTFcIlxuICAgICAgICA6c2VhcmNoPVwic2VhcmNoXCJcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmxpbms9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWJ0biBpY29uIDpocmVmPVwiaXRlbS5zbHVnXCIgY29sb3I9XCJwcmltYXJ5XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICA8di1pY29uPm1kaS1vcGVuLWluLW5ldzwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6aXRlbS5tZW51PVwieyBpdGVtIH1cIj5cbiAgICAgICAgICB7eyBpdGVtLmlzX21lbnUgPyBcIlNpXCIgOiBcIk5vXCIgfX1cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDppdGVtLmFjdGlvbnM9XCJ7IGl0ZW0gfVwiPlxuICAgICAgICAgIDx2LWJ0biBjb2xvcj1cInJlZFwiIGZhYiB4LXNtYWxsIGRhcmsgQGNsaWNrPVwiZWRpdChpdGVtLmlkKVwiPlxuICAgICAgICAgICAgPHYtaWNvbj4gbWRpLXBlbmNpbCA8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC92LWRhdGEtdGFibGU+XG4gICAgPC92LWNhcmQ+XG4gIDwvdi1hcHA+XG48L3RlbXBsYXRlPlxuICBcbiAgPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogbnVsbCxcbiAgICAgIHNlYXJjaDogXCJcIixcbiAgICAgIGhlYWRlcnM6IFtcbiAgICAgICAgeyB0ZXh0OiBcIk5vbWJyZVwiLCB2YWx1ZTogXCJuYW1lXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIlVybFwiLCB2YWx1ZTogXCJsaW5rXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIlNlY2Npb25lc1wiLCB2YWx1ZTogXCJzZWN0aW9uc1wiIH0sXG4gICAgICAgIHsgdGV4dDogXCJNZW51XCIsIHZhbHVlOiBcIm1lbnVcIiB9LFxuICAgICAgICB7IHRleHQ6IFwiQWNjaW9uZXNcIiwgdmFsdWU6IFwiYWN0aW9uc1wiLCBzb3J0YWJsZTogZmFsc2UgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBsb2FkRGF0YSgpIHtcbiAgICAgIGF4aW9zLmdldChcIi9hcGkvcGFnZS9nZXQtcGFnZXNcIikudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZWRpdChpZCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9wYW5lbC1hZG1pbmlzdHJhY2lvbi9wYWdpbmFzL1wiICsgaWQgKyBcIi9lZGl0YXJcIjtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PiJdLCJuYW1lcyI6WyJkYXRhIiwic2VhcmNoIiwiaGVhZGVycyIsInRleHQiLCJ2YWx1ZSIsInNvcnRhYmxlIiwibW91bnRlZCIsImxvYWREYXRhIiwibWV0aG9kcyIsIl90aGlzIiwiYXhpb3MiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJlZGl0IiwiaWQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/index.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/create.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/create.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/video/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/video/store\", result.data).then(function (response) {\n if (response.data) {\n console.log(response.data);\n Swal.fire({\n title: \"Actualizado\",\n text: \"El video ha sido creado o actualizado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/alianzas\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo crear el video. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vdmlkZW8vY3JlYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7K0NBT0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0IsS0FB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QTt3QkFDQTtzQkFDQTtvQkFBQTtvQkFBQTtzQkFBQSxPQUFBaEIsUUFBQSxDQUFBNUMsSUFBQTtrQkFBQTtnQkFBQSxHQUFBd0MsT0FBQTtjQUFBLENBQ0EsSUFBQXBCLEtBQUEsT0FBQUQsU0FBQTtZQUFBO1VBQUE7VUFBQTtZQUFBLE9BQUFlLFNBQUEsQ0FBQWxDLElBQUE7UUFBQTtNQUFBLEdBQUErQixRQUFBO0lBQUE7RUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vdmlkZW8vY3JlYXRlLnZ1ZT9lNWUyIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWlmPVwic3VydmV5XCI+XG4gICAgPFN1cnZleSA6c3VydmV5PVwic3VydmV5XCI+PC9TdXJ2ZXk+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiAgICBcbiAgICA8c2NyaXB0PlxuaW1wb3J0ICogYXMgU3VydmV5VnVlIGZyb20gXCJzdXJ2ZXktdnVlXCI7XG5pbXBvcnQgeyBqc29uIH0gZnJvbSBcIi4vZm9ybVwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNvbXBvbmVudHM6IHsgU3VydmV5OiBTdXJ2ZXlWdWUuU3VydmV5IH0sXG4gIGRhdGE6ICgpID0+ICh7XG4gICAgc3VydmV5OiBudWxsLFxuICB9KSxcblxuICBhc3luYyBtb3VudGVkKCkge1xuICAgIHRoaXMuc3VydmV5ID0gbmV3IFN1cnZleVZ1ZS5Nb2RlbChqc29uKTtcblxuICAgIHRoaXMuc3VydmV5Lm9uQ29tcGxldGluZy5hZGQoYXN5bmMgZnVuY3Rpb24gKHJlc3VsdCwgb3B0aW9ucykge1xuICAgICAgb3B0aW9ucy5hbGxvd0NvbXBsZXRlID0gZmFsc2U7XG4gICAgICBhd2FpdCBheGlvcy5wb3N0KFwiL2FwaS92aWRlby9zdG9yZVwiLCByZXN1bHQuZGF0YSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgdGl0bGU6IFwiQWN0dWFsaXphZG9cIixcbiAgICAgICAgICAgIHRleHQ6IFwiRWwgdmlkZW8gaGEgc2lkbyBjcmVhZG8gbyBhY3R1YWxpemFkbyBjb24gw6l4aXRvXCIsXG4gICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgIC8vICB0aW1lcjogMjAwMCxcbiAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vYWxpYW56YXNcIjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICB0ZXh0OiBcIk5vIHNlIHB1ZG8gY3JlYXIgZWwgdmlkZW8uIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuXCIsXG4gICAgICAgICAgICBpY29uOiBcImVycm9yXCIsXG4gICAgICAgICAgICAvLyAgICB0aW1lcjogMzAwMCxcbiAgICAgICAgICB9KS50aGVuKChfKSA9PiB7XG4gICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG59O1xuPC9zY3JpcHQ+XG4gICAgIl0sIm5hbWVzIjpbIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJlIiwidCIsInIiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImkiLCJTeW1ib2wiLCJhIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImNhbGwiLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiU3VydmV5VnVlIiwianNvbiIsImNvbXBvbmVudHMiLCJTdXJ2ZXkiLCJkYXRhIiwic3VydmV5IiwibW91bnRlZCIsIl90aGlzIiwiX2NhbGxlZTIiLCJfcmVmIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiTW9kZWwiLCJvbkNvbXBsZXRpbmciLCJhZGQiLCJfeCIsIl94MiIsIl9jYWxsZWUiLCJyZXN1bHQiLCJvcHRpb25zIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImFsbG93Q29tcGxldGUiLCJheGlvcyIsInBvc3QiLCJyZXNwb25zZSIsImNvbnNvbGUiLCJsb2ciLCJTd2FsIiwiZmlyZSIsInRpdGxlIiwidGV4dCIsImljb24iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJfIiwicmVsb2FkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/create.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/edit.vue?vue&type=script&lang=js&":
/*!***********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/edit.vue?vue&type=script&lang=js& ***!
\***********************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-vue */ \"./node_modules/survey-vue/survey-vue.js\");\n/* harmony import */ var survey_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_vue__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./resources/js/components/admin/video/form.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n Survey: survey_vue__WEBPACK_IMPORTED_MODULE_0__.Survey\n },\n data: function data() {\n return {\n survey: null,\n data: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var _ref;\n var self;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n self = _this;\n _context2.next = 3;\n return axios.get(\"/api/video/edit/\" + _this.$route.params.id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n _this.data = response.data;\n console.log(_this.data);\n });\n case 3:\n _this.survey = new survey_vue__WEBPACK_IMPORTED_MODULE_0__.Model(_form__WEBPACK_IMPORTED_MODULE_1__.json);\n _this.survey.onCompleting.add(function (_x, _x2) {\n return (_ref = _ref || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(result, options) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n options.allowComplete = false;\n _context.next = 3;\n return axios.post(\"/api/video/update/\" + self.$route.params.id, result.data).then(function (response) {\n console.log(response.data);\n if (response.data) {\n Swal.fire({\n title: \"Actualizado\",\n text: \"El video ha sido actualizado con éxito\",\n icon: \"success\"\n // timer: 2000,\n }).then(function () {\n window.location.href = \"/panel-administracion/video\";\n });\n } else {\n Swal.fire({\n title: \"Error!\",\n text: \"No se pudo actualizar el video. Por favor intente más tarde.\",\n icon: \"error\"\n // timer: 3000,\n }).then(function (_) {\n location.reload();\n });\n }\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }))).apply(this, arguments);\n });\n _this.survey.data = self.data;\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }))();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vdmlkZW8vZWRpdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OytDQU9BLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENBQUEsRUFBQWlCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFwQixDQUFBLENBQUFELENBQUEsV0FBQWtCLE1BQUEsbUJBQUFqQixDQUFBLElBQUFpQixNQUFBLFlBQUFBLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxnQkFBQW9CLEtBQUFy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QixNQUFBLENBQUFDLE1BQUEsQ0FBQUMsRUFBQSxFQUFBYyxNQUFBLENBQUExQixJQUFBLEVBQ0F4RSxJQUFBLFdBQUF5RixRQUFBO3dCQUNBQyxPQUFBLENBQUFDLEdBQUEsQ0FBQUYsUUFBQSxDQUFBakIsSUFBQTt3QkFDQSxJQUFBaUIsUUFBQSxDQUFBakIsSUFBQTswQkFDQUwsSUFBQSxDQUFBcUMsSUFBQTs0QkFDQUMsS0FBQTs0QkFDQUMsSUFBQTs0QkFDQUMsSUFBQTs0QkFDQTswQkFDQSxHQUFBM0csSUFBQTs0QkFDQTRHLE1BQUEsQ0FBQUMsUUFBQSxDQUFBQyxJQUFBOzBCQUNBO3dCQUNBOzBCQUNBM0MsSUFBQSxDQUFBcUMsSUFBQTs0QkFDQUMsS0FBQTs0QkFDQUMsSUFBQTs0QkFDQUMsSUFBQTs0QkFDQTswQkFDQSxHQUFBM0csSUFBQSxXQUFBK0csQ0FBQTs0QkFDQUYsUUFBQSxDQUFBRyxNQUFBOzBCQUNBO3dCQUNBO3NCQUNBO29CQUFBO29CQUFBO3NCQUFBLE9BQUFYLFFBQUEsQ0FBQTFELElBQUE7a0JBQUE7Z0JBQUEsR0FBQXNELE9BQUE7Y0FBQSxDQUNBLElBQUFsQyxLQUFBLE9BQUFELFNBQUE7WUFBQTtZQUNBYSxLQUFBLENBQUFGLE1BQUEsQ0FBQUQsSUFBQSxHQUFBWixJQUFBLENBQUFZLElBQUE7VUFBQTtVQUFBO1lBQUEsT0FBQU8sU0FBQSxDQUFBcEMsSUFBQTtRQUFBO01BQUEsR0FBQWlDLFFBQUE7SUFBQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi92aWRlby9lZGl0LnZ1ZT85MTg5Il0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWlmPVwic3VydmV5XCI+XG4gICAgPFN1cnZleSA6c3VydmV5PVwic3VydmV5XCI+PC9TdXJ2ZXk+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiAgICBcbiAgICA8c2NyaXB0PlxuaW1wb3J0ICogYXMgU3VydmV5VnVlIGZyb20gXCJzdXJ2ZXktdnVlXCI7XG5jb25zdCBTd2FsID0gcmVxdWlyZShcInN3ZWV0YWxlcnQyXCIpO1xuaW1wb3J0IHsganNvbiB9IGZyb20gXCIuL2Zvcm1cIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wb25lbnRzOiB7IFN1cnZleTogU3VydmV5VnVlLlN1cnZleSB9LFxuICBkYXRhOiAoKSA9PiAoe1xuICAgIHN1cnZleTogbnVsbCxcbiAgICBkYXRhOiBudWxsXG4gIH0pLFxuXG4gIGFzeW5jIG1vdW50ZWQoKSB7XG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgIGF3YWl0IGF4aW9zXG4gICAgICAuZ2V0KFwiL2FwaS92aWRlby9lZGl0L1wiICsgdGhpcy4kcm91dGUucGFyYW1zLmlkLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBBVCxcbiAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEpO1xuICAgICAgfSk7XG4gICAgdGhpcy5zdXJ2ZXkgPSBuZXcgU3VydmV5VnVlLk1vZGVsKGpzb24pO1xuXG4gICAgdGhpcy5zdXJ2ZXkub25Db21wbGV0aW5nLmFkZChhc3luYyBmdW5jdGlvbiAocmVzdWx0LCBvcHRpb25zKSB7XG4gICAgICBvcHRpb25zLmFsbG93Q29tcGxldGUgPSBmYWxzZTtcbiAgICAgIGF3YWl0IGF4aW9zXG4gICAgICAgIC5wb3N0KFwiL2FwaS92aWRlby91cGRhdGUvXCIgKyBzZWxmLiRyb3V0ZS5wYXJhbXMuaWQsIHJlc3VsdC5kYXRhKVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiQWN0dWFsaXphZG9cIixcbiAgICAgICAgICAgICAgdGV4dDogXCJFbCB2aWRlbyBoYSBzaWRvIGFjdHVhbGl6YWRvIGNvbiDDqXhpdG9cIixcbiAgICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCIsXG4gICAgICAgICAgICAgIC8vICB0aW1lcjogMjAwMCxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL3BhbmVsLWFkbWluaXN0cmFjaW9uL3ZpZGVvXCI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiRXJyb3IhXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiTm8gc2UgcHVkbyBhY3R1YWxpemFyIGVsIHZpZGVvLiBQb3IgZmF2b3IgaW50ZW50ZSBtw6FzIHRhcmRlLlwiLFxuICAgICAgICAgICAgICBpY29uOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgIC8vICAgIHRpbWVyOiAzMDAwLFxuICAgICAgICAgICAgfSkudGhlbigoXykgPT4ge1xuICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5zdXJ2ZXkuZGF0YSA9IHNlbGYuZGF0YTtcbiAgfSxcbn07XG48L3NjcmlwdD4iXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJTdXJ2ZXlWdWUiLCJTd2FsIiwicmVxdWlyZSIsImpzb24iLCJjb21wb25lbnRzIiwiU3VydmV5IiwiZGF0YSIsInN1cnZleSIsIm1vdW50ZWQiLCJfdGhpcyIsIl9jYWxsZWUyIiwiX3JlZiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImF4aW9zIiwiZ2V0IiwiJHJvdXRlIiwicGFyYW1zIiwiaWQiLCJoZWFkZXJzIiwiQXV0aG9yaXphdGlvbiIsIkFUIiwiQWNjZXB0IiwicmVzcG9uc2UiLCJjb25zb2xlIiwibG9nIiwiTW9kZWwiLCJvbkNvbXBsZXRpbmciLCJhZGQiLCJfeCIsIl94MiIsIl9jYWxsZWUiLCJyZXN1bHQiLCJvcHRpb25zIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImFsbG93Q29tcGxldGUiLCJwb3N0IiwiZmlyZSIsInRpdGxlIiwidGV4dCIsImljb24iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJfIiwicmVsb2FkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/edit.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/index.vue?vue&type=script&lang=js&":
/*!************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/index.vue?vue&type=script&lang=js& ***!
\************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar Swal = __webpack_require__(/*! sweetalert2 */ \"./node_modules/sweetalert2/dist/sweetalert2.all.js\");\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n data: null,\n search: \"\",\n headers: [{\n text: \"Pagina\",\n value: \"name\"\n }, {\n text: \"Enlace Video\",\n value: \"link\"\n }, {\n text: \"Acciones\",\n value: \"actions\",\n sortable: false\n }]\n };\n },\n mounted: function mounted() {\n this.loadData();\n },\n methods: {\n loadData: function loadData() {\n var _this = this;\n axios.get(\"/api/video/index\").then(function (response) {\n _this.data = response.data;\n });\n },\n edit: function edit(id) {\n window.location.href = \"/panel-administracion/video/\" + id + \"/editar\";\n },\n trash: function trash(id, name) {\n var _this2 = this;\n Swal.fire({\n title: \"Confirmación\",\n html: \"<p margin-bottom: 10px;\\\">\\n \\xBFEst\\xE1s seguro de que deseas eliminar el video de la pagina <b>\\\"\".concat(name, \"\\\"</b>?</p>\\n <p style=\\\"font-size: 0.7em;\\\">\\n Si lo eliminas, no podr\\xE1s recuperarlo.\\n </p>\"),\n icon: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Sí, eliminar\",\n cancelButtonText: \"Cancelar\"\n }).then(function (result) {\n if (result.isConfirmed) {\n axios[\"delete\"](\"/api/video/delete/\" + id, {\n headers: {\n Authorization: AT,\n Accept: \"application/json\"\n }\n }).then(function (response) {\n Swal.fire({\n title: \"Eliminado\",\n text: \"Se ha eliminado el video con éxito.\",\n icon: \"success\",\n timer: 2000\n }).then(function (_) {});\n _this2.loadData();\n });\n }\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vdmlkZW8vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7O0FBdUNBLElBQUFBLElBQUEsR0FBQUMsbUJBQUE7QUFDQSxpRUFBZTtFQUNmQyxJQUFBLFdBQUFBLEtBQUE7SUFDQTtNQUNBQSxJQUFBO01BQ0FDLE1BQUE7TUFDQUMsT0FBQSxHQUNBO1FBQUFDLElBQUE7UUFBQUMsS0FBQTtNQUFBLEdBQ0E7UUFBQUQsSUFBQTtRQUFBQyxLQUFBO01BQUEsR0FDQTtRQUFBRCxJQUFBO1FBQUFDLEtBQUE7UUFBQUMsUUFBQTtNQUFBO0lBRUE7RUFDQTtFQUNBQyxPQUFBLFdBQUFBLFFBQUE7SUFDQSxLQUFBQyxRQUFBO0VBQ0E7RUFDQUMsT0FBQTtJQUNBRCxRQUFBLFdBQUFBLFNBQUE7TUFBQSxJQUFBRSxLQUFBO01BQ0FDLEtBQUEsQ0FBQUMsR0FBQSxxQkFBQUMsSUFBQSxXQUFBQyxRQUFBO1FBQ0FKLEtBQUEsQ0FBQVQsSUFBQSxHQUFBYSxRQUFBLENBQUFiLElBQUE7TUFDQTtJQUNBO0lBQ0FjLElBQUEsV0FBQUEsS0FBQUMsRUFBQTtNQUNBQyxNQUFBLENBQUFDLFFBQUEsQ0FBQUMsSUFBQSxvQ0FBQUgsRUFBQTtJQUNBO0lBQ0FJLEtBQUEsV0FBQUEsTUFBQUosRUFBQSxFQUFBSyxJQUFBO01BQUEsSUFBQUMsTUFBQTtNQUNBdkIsSUFBQSxDQUFBd0IsSUFBQTtRQUNBQyxLQUFBO1FBQ0FDLElBQUEsdUhBQUFDLE1BQUEsQ0FDQUwsSUFBQSxrS0FHQTtRQUNBTSxJQUFBO1FBQ0FDLGdCQUFBO1FBQ0FDLGtCQUFBO1FBQ0FDLGlCQUFBO1FBQ0FDLGlCQUFBO1FBQ0FDLGdCQUFBO01BQ0EsR0FBQW5CLElBQUEsV0FBQW9CLE1BQUE7UUFDQSxJQUFBQSxNQUFBLENBQUFDLFdBQUE7VUFDQXZCLEtBQUEsVUFDQSx3QkFBQUssRUFBQTtZQUNBYixPQUFBO2NBQ0FnQyxhQUFBLEVBQUFDLEVBQUE7Y0FDQUMsTUFBQTtZQUNBO1VBQ0EsR0FDQXhCLElBQUEsV0FBQUMsUUFBQTtZQUNBZixJQUFBLENBQUF3QixJQUFBO2NBQ0FDLEtBQUE7Y0FDQXBCLElBQUE7Y0FDQXVCLElBQUE7Y0FDQVcsS0FBQTtZQUNBLEdBQUF6QixJQUFBLFdBQUEwQixDQUFBO1lBQ0FqQixNQUFBLENBQUFkLFFBQUE7VUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi92aWRlby9pbmRleC52dWU/ZGFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDx2LWFwcD5cbiAgICA8di1jYXJkIHYtaWY9XCJkYXRhXCI+XG4gICAgICA8di1jYXJkLXRpdGxlPlxuICAgICAgICBBZG1pbmlzdHJhY2nDs24gZGUgVmlkZW9zXG4gICAgICAgIDx2LXNwYWNlcj48L3Ytc3BhY2VyPlxuICAgICAgICA8di10ZXh0LWZpZWxkXG4gICAgICAgICAgdi1tb2RlbD1cInNlYXJjaFwiXG4gICAgICAgICAgYXBwZW5kLWljb249XCJtZGktbWFnbmlmeVwiXG4gICAgICAgICAgbGFiZWw9XCJCdXNjYXJcIlxuICAgICAgICAgIHNpbmdsZS1saW5lXG4gICAgICAgICAgaGlkZS1kZXRhaWxzXG4gICAgICAgID48L3YtdGV4dC1maWVsZD5cbiAgICAgIDwvdi1jYXJkLXRpdGxlPlxuICAgICAgPHYtZGF0YS10YWJsZVxuICAgICAgICA6aGVhZGVycz1cImhlYWRlcnNcIlxuICAgICAgICA6aXRlbXM9XCJkYXRhXCJcbiAgICAgICAgY2xhc3M9XCJlbGV2YXRpb24tMVwiXG4gICAgICAgIDpzZWFyY2g9XCJzZWFyY2hcIlxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0ubGluaz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHYtYnRuIGljb24gOmhyZWY9XCJpdGVtLnVybFwiIGNvbG9yPVwicHJpbWFyeVwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgPHYtaWNvbj5tZGktb3Blbi1pbi1uZXc8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgdi1zbG90Oml0ZW0uYWN0aW9ucz1cInsgaXRlbSB9XCI+XG4gICAgICAgICAgPHYtYnRuIGNvbG9yPVwicmVkXCIgZmFiIHgtc21hbGwgZGFyayBAY2xpY2s9XCJlZGl0KGl0ZW0uaWQpXCI+XG4gICAgICAgICAgICA8di1pY29uPiBtZGktcGVuY2lsIDwvdi1pY29uPlxuICAgICAgICAgIDwvdi1idG4+XG4gICAgICAgICAgPHYtYnRuIGNvbG9yPVwid2FybmluZ1wiIGZhYiB4LXNtYWxsIGRhcmsgQGNsaWNrPVwidHJhc2goaXRlbS5pZCwgaXRlbS5uYW1lKVwiPlxuICAgICAgICAgICAgPHYtaWNvbj4gbWRpLWRlbGV0ZSA8L3YtaWNvbj5cbiAgICAgICAgICA8L3YtYnRuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC92LWRhdGEtdGFibGU+XG4gICAgPC92LWNhcmQ+XG4gIDwvdi1hcHA+XG48L3RlbXBsYXRlPlxuICBcbiAgPHNjcmlwdD5cbiAgY29uc3QgU3dhbCA9IHJlcXVpcmUoXCJzd2VldGFsZXJ0MlwiKTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogbnVsbCxcbiAgICAgIHNlYXJjaDogXCJcIixcbiAgICAgIGhlYWRlcnM6IFtcbiAgICAgICAgeyB0ZXh0OiBcIlBhZ2luYVwiLCB2YWx1ZTogXCJuYW1lXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkVubGFjZSBWaWRlb1wiLCB2YWx1ZTogXCJsaW5rXCIgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkFjY2lvbmVzXCIsIHZhbHVlOiBcImFjdGlvbnNcIiwgc29ydGFibGU6IGZhbHNlIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgbG9hZERhdGEoKSB7XG4gICAgICBheGlvcy5nZXQoXCIvYXBpL3ZpZGVvL2luZGV4XCIpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGVkaXQoaWQpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvcGFuZWwtYWRtaW5pc3RyYWNpb24vdmlkZW8vXCIgKyBpZCArIFwiL2VkaXRhclwiO1xuICAgIH0sXG4gICAgdHJhc2goaWQsIG5hbWUpIHtcbiAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgIHRpdGxlOiBcIkNvbmZpcm1hY2nDs25cIixcbiAgICAgICAgaHRtbDogYDxwIG1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBkZXNlYXMgZWxpbWluYXIgZWwgdmlkZW8gZGUgbGEgcGFnaW5hIDxiPlwiJHtuYW1lfVwiPC9iPj88L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOiAwLjdlbTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNpIGxvIGVsaW1pbmFzLCBubyBwb2Ryw6FzIHJlY3VwZXJhcmxvLlxuICAgICAgICAgICAgICAgICAgICA8L3A+YCxcbiAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCIsXG4gICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogXCIjMzA4NWQ2XCIsXG4gICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiNkMzNcIixcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiU8OtLCBlbGltaW5hclwiLFxuICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiBcIkNhbmNlbGFyXCIsXG4gICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xuICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAuZGVsZXRlKFwiL2FwaS92aWRlby9kZWxldGUvXCIgKyBpZCwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogQVQsXG4gICAgICAgICAgICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJFbGltaW5hZG9cIixcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlNlIGhhIGVsaW1pbmFkbyBlbCB2aWRlbyBjb24gw6l4aXRvLlwiLFxuICAgICAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgICAgIHRpbWVyOiAyMDAwLFxuICAgICAgICAgICAgICB9KS50aGVuKChfKSA9PiB7fSk7XG4gICAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuICAiXSwibmFtZXMiOlsiU3dhbCIsInJlcXVpcmUiLCJkYXRhIiwic2VhcmNoIiwiaGVhZGVycyIsInRleHQiLCJ2YWx1ZSIsInNvcnRhYmxlIiwibW91bnRlZCIsImxvYWREYXRhIiwibWV0aG9kcyIsIl90aGlzIiwiYXhpb3MiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJlZGl0IiwiaWQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJ0cmFzaCIsIm5hbWUiLCJfdGhpczIiLCJmaXJlIiwidGl0bGUiLCJodG1sIiwiY29uY2F0IiwiaWNvbiIsInNob3dDYW5jZWxCdXR0b24iLCJjb25maXJtQnV0dG9uQ29sb3IiLCJjYW5jZWxCdXR0b25Db2xvciIsImNvbmZpcm1CdXR0b25UZXh0IiwiY2FuY2VsQnV0dG9uVGV4dCIsInJlc3VsdCIsImlzQ29uZmlybWVkIiwiQXV0aG9yaXphdGlvbiIsIkFUIiwiQWNjZXB0IiwidGltZXIiLCJfIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/index.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/BoxColorWidget.vue?vue&type=script&lang=js&":
/*!***********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/BoxColorWidget.vue?vue&type=script&lang=js& ***!
\***********************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n props: {\n color: String,\n title: String,\n value: String,\n textLink: String,\n url: String,\n icon: String\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9Cb3hDb2xvcldpZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7QUFpQkEsaUVBQWU7RUFDZkEsS0FBQTtJQUNBQyxLQUFBLEVBQUFDLE1BQUE7SUFDQUMsS0FBQSxFQUFBRCxNQUFBO0lBQ0FFLEtBQUEsRUFBQUYsTUFBQTtJQUNBRyxRQUFBLEVBQUFILE1BQUE7SUFDQUksR0FBQSxFQUFBSixNQUFBO0lBQ0FLLElBQUEsRUFBQUw7RUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9Cb3hDb2xvcldpZGdldC52dWU/MzZlOCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWJveFwiIHYtYmluZDpjbGFzcz1cImNvbG9yID8gY29sb3IgOiAnYmctaW5mbydcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lclwiPlxuICAgICAgICAgICAgICAgIDxoMz57e3ZhbHVlID8gdmFsdWUgOiAnMCd9fTwvaDM+XG5cbiAgICAgICAgICAgICAgICA8cD57e3RpdGxlfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpb25cIiB2LWJpbmQ6Y2xhc3M9XCJpY29uID8gaWNvbiA6ICdpb24tYm9va21hcmsnXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YSB2LWJpbmQ6aHJlZj1cInVybCA/IHVybCA6ICcjJ1wiIGNsYXNzPVwic21hbGwtYm94LWZvb3RlclwiPnt7dGV4dExpbmsgPyB0ZXh0TGluayA6ICdNw6FzIGluZm9ybWFjacOzbid9fSA8aSBjbGFzcz1cImZhcyBmYS1hcnJvdy1jaXJjbGUtcmlnaHRcIj48L2k+PC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29sb3I6IFN0cmluZyxcbiAgICAgICAgdGl0bGU6IFN0cmluZyxcbiAgICAgICAgdmFsdWU6IFN0cmluZyxcbiAgICAgICAgdGV4dExpbms6IFN0cmluZyxcbiAgICAgICAgdXJsOiBTdHJpbmcsXG4gICAgICAgIGljb246IFN0cmluZyxcbiAgICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZT48L3N0eWxlPlxuIl0sIm5hbWVzIjpbInByb3BzIiwiY29sb3IiLCJTdHJpbmciLCJ0aXRsZSIsInZhbHVlIiwidGV4dExpbmsiLCJ1cmwiLCJpY29uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/BoxColorWidget.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/ChartWidget.vue?vue&type=script&lang=js&":
/*!********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/ChartWidget.vue?vue&type=script&lang=js& ***!
\********************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n props: {\n title: {\n type: String,\n \"default\": 'Gráfico'\n },\n id: String,\n type: String,\n className: String,\n labels: Array,\n datasets: Array,\n height: {\n type: Number,\n \"default\": 500\n }\n },\n mounted: function mounted() {\n var salesChartCanvas = document.getElementById(this.id).getContext(\"2d\");\n var salesChartData = {\n labels: this.labels,\n datasets: this.datasets,\n backgroundColor: ['rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)'],\n borderColor: ['rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)'],\n borderWidth: 1\n };\n var salesChartOptions = {\n maintainAspectRatio: false,\n responsive: true,\n legend: {\n display: true\n },\n scales: {\n xAxes: [{\n gridLines: {\n display: false\n }\n }],\n yAxes: [{\n gridLines: {\n display: false\n }\n }]\n }\n };\n new Chart(salesChartCanvas, {\n type: this.type || 'line',\n data: salesChartData,\n options: salesChartOptions\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9DaGFydFdpZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7QUFtQkEsaUVBQWU7RUFDZkEsS0FBQTtJQUNBQyxLQUFBO01BQ0FDLElBQUEsRUFBQUMsTUFBQTtNQUNBO0lBQ0E7SUFDQUMsRUFBQSxFQUFBRCxNQUFBO0lBQ0FELElBQUEsRUFBQUMsTUFBQTtJQUNBRSxTQUFBLEVBQUFGLE1BQUE7SUFDQUcsTUFBQSxFQUFBQyxLQUFBO0lBQ0FDLFFBQUEsRUFBQUQsS0FBQTtJQUNBRSxNQUFBO01BQ0FQLElBQUEsRUFBQVEsTUFBQTtNQUNBO0lBQ0E7RUFDQTtFQUNBQyxPQUFBLFdBQUFBLFFBQUE7SUFDQSxJQUFBQyxnQkFBQSxHQUFBQyxRQUFBLENBQUFDLGNBQUEsTUFBQVYsRUFBQSxFQUFBVyxVQUFBO0lBQ0EsSUFBQUMsY0FBQTtNQUNBVixNQUFBLE9BQUFBLE1BQUE7TUFDQUUsUUFBQSxPQUFBQSxRQUFBO01BQ0FTLGVBQUEsR0FDQSwyQkFDQSwyQkFDQSwyQkFDQSwyQkFDQSw0QkFDQSwwQkFDQTtNQUNBQyxXQUFBLEdBQ0EseUJBQ0EseUJBQ0EseUJBQ0EseUJBQ0EsMEJBQ0Esd0JBQ0E7TUFDQUMsV0FBQTtJQUNBO0lBRUEsSUFBQUMsaUJBQUE7TUFDQUMsbUJBQUE7TUFDQUMsVUFBQTtNQUNBQyxNQUFBO1FBQ0FDLE9BQUE7TUFDQTtNQUNBQyxNQUFBO1FBQ0FDLEtBQUEsR0FDQTtVQUNBQyxTQUFBO1lBQ0FILE9BQUE7VUFDQTtRQUNBLEVBQ0E7UUFDQUksS0FBQSxHQUNBO1VBQ0FELFNBQUE7WUFDQUgsT0FBQTtVQUNBO1FBQ0E7TUFFQTtJQUNBO0lBRUEsSUFBQUssS0FBQSxDQUFBakIsZ0JBQUE7TUFDQVYsSUFBQSxPQUFBQSxJQUFBO01BQ0E0QixJQUFBLEVBQUFkLGNBQUE7TUFDQWUsT0FBQSxFQUFBWDtJQUNBO0VBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3dpZGdldHMvQ2hhcnRXaWRnZXQudnVlPzExODIiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCIgOmNsYXNzPVwiY2xhc3NOYW1lXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoYXJ0LXBpZSBtci0xXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB7e3RpdGxlfX1cbiAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0XCIgaWQ9XCJyZXZlbnVlLWNoYXJ0XCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgdi1iaW5kOnN0eWxlPVwieydoZWlnaHQnOiBoZWlnaHQgKyAncHgnfVwiPlxuICAgICAgICAgICAgICAgICAgICA8Y2FudmFzIHYtYmluZDppZD1cImlkXCIgdi1iaW5kOmhlaWdodD1cImhlaWdodFwiIHYtYmluZDpzdHlsZT1cInsnaGVpZ2h0JzogaGVpZ2h0ICsgJ3B4J31cIj48L2NhbnZhcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdHcsOhZmljbydcbiAgICAgICAgfSxcbiAgICAgICAgaWQ6IFN0cmluZyxcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBjbGFzc05hbWU6IFN0cmluZyxcbiAgICAgICAgbGFiZWxzOiBBcnJheSxcbiAgICAgICAgZGF0YXNldHM6IEFycmF5LFxuICAgICAgICBoZWlnaHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIGRlZmF1bHQ6IDUwMFxuICAgICAgICB9XG4gICAgfSxcbiAgICBtb3VudGVkKCkge1xuICAgICAgICB2YXIgc2FsZXNDaGFydENhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgdmFyIHNhbGVzQ2hhcnREYXRhID0ge1xuICAgICAgICAgICAgbGFiZWxzOiB0aGlzLmxhYmVscyxcbiAgICAgICAgICAgIGRhdGFzZXRzOiB0aGlzLmRhdGFzZXRzLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBbXG4gICAgICAgICAgICAgICAgJ3JnYmEoMjU1LCA5OSwgMTMyLCAwLjIpJyxcbiAgICAgICAgICAgICAgICAncmdiYSg1NCwgMTYyLCAyMzUsIDAuMiknLFxuICAgICAgICAgICAgICAgICdyZ2JhKDI1NSwgMjA2LCA4NiwgMC4yKScsXG4gICAgICAgICAgICAgICAgJ3JnYmEoNzUsIDE5MiwgMTkyLCAwLjIpJyxcbiAgICAgICAgICAgICAgICAncmdiYSgxNTMsIDEwMiwgMjU1LCAwLjIpJyxcbiAgICAgICAgICAgICAgICAncmdiYSgyNTUsIDE1OSwgNjQsIDAuMiknXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFtcbiAgICAgICAgICAgICAgICAncmdiYSgyNTUsIDk5LCAxMzIsIDEpJyxcbiAgICAgICAgICAgICAgICAncmdiYSg1NCwgMTYyLCAyMzUsIDEpJyxcbiAgICAgICAgICAgICAgICAncmdiYSgyNTUsIDIwNiwgODYsIDEpJyxcbiAgICAgICAgICAgICAgICAncmdiYSg3NSwgMTkyLCAxOTIsIDEpJyxcbiAgICAgICAgICAgICAgICAncmdiYSgxNTMsIDEwMiwgMjU1LCAxKScsXG4gICAgICAgICAgICAgICAgJ3JnYmEoMjU1LCAxNTksIDY0LCAxKSdcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogMVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBzYWxlc0NoYXJ0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2NhbGVzOiB7XG4gICAgICAgICAgICAgICAgeEF4ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZExpbmVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgeUF4ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZExpbmVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIG5ldyBDaGFydChzYWxlc0NoYXJ0Q2FudmFzLCB7XG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUgfHwgJ2xpbmUnLFxuICAgICAgICAgICAgZGF0YTogc2FsZXNDaGFydERhdGEsXG4gICAgICAgICAgICBvcHRpb25zOiBzYWxlc0NoYXJ0T3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgfSxcbn07XG48L3NjcmlwdD5cbiJdLCJuYW1lcyI6WyJwcm9wcyIsInRpdGxlIiwidHlwZSIsIlN0cmluZyIsImlkIiwiY2xhc3NOYW1lIiwibGFiZWxzIiwiQXJyYXkiLCJkYXRhc2V0cyIsImhlaWdodCIsIk51bWJlciIsIm1vdW50ZWQiLCJzYWxlc0NoYXJ0Q2FudmFzIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImdldENvbnRleHQiLCJzYWxlc0NoYXJ0RGF0YSIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJzYWxlc0NoYXJ0T3B0aW9ucyIsIm1haW50YWluQXNwZWN0UmF0aW8iLCJyZXNwb25zaXZlIiwibGVnZW5kIiwiZGlzcGxheSIsInNjYWxlcyIsInhBeGVzIiwiZ3JpZExpbmVzIiwieUF4ZXMiLCJDaGFydCIsImRhdGEiLCJvcHRpb25zIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/ChartWidget.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/FooterWidget.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/FooterWidget.vue?vue&type=script&lang=js& ***!
\*********************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9Gb290ZXJXaWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7O0FBV0EsaUVBQWUsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0Zvb3RlcldpZGdldC52dWU/N2M3NSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPGZvb3RlciBjbGFzcz1cIm1haW4tZm9vdGVyXCI+XG4gICAgICAgICAgICA8c3Ryb25nPkNvcHlyaWdodCAmY29weTsgMjAyMyBQYW5lbCBkZSBBZG1pbmlzdHJhY2nDs24gRXNjdWVsYSBkZSBsYSBQYXJ0aWNpcGFjacOzbi48L3N0cm9uZz5cbiAgICAgICAgICAgIFRvZG9zIGxvcyBkZXJlY2hvcyByZXNlcnZhZG9zLlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsb2F0LXJpZ2h0IGQtbm9uZSBkLXNtLWlubGluZS1ibG9ja1wiPjxiPlZlcnNpb248L2I+IDEuMC4wPC9kaXY+XG4gICAgICAgIDwvZm9vdGVyPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/FooterWidget.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/HeaderWidget.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/HeaderWidget.vue?vue&type=script&lang=js& ***!
\*********************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n props: {\n title: String,\n breadcrumbs: Array\n },\n mounted: function mounted() {\n window.document.title = this.title + ' - ' + this.$appName;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9IZWFkZXJXaWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7O0FBeUJBLGlFQUFlO0VBQ2ZBLEtBQUE7SUFDQUMsS0FBQSxFQUFBQyxNQUFBO0lBQ0FDLFdBQUEsRUFBQUM7RUFDQTtFQUNBQyxPQUFBLFdBQUFBLFFBQUE7SUFDQUMsTUFBQSxDQUFBQyxRQUFBLENBQUFOLEtBQUEsUUFBQUEsS0FBQSxnQkFBQU8sUUFBQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0hlYWRlcldpZGdldC52dWU/YzNlNSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwibS0wXCI+e3t0aXRsZX19PC9oMT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b2wgY2xhc3M9XCJicmVhZGNydW1iIGZsb2F0LXNtLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHYtZm9yPVwicGFnZSBpbiBicmVhZGNydW1ic1wiIGNsYXNzPVwiYnJlYWRjcnVtYi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyb3V0ZXItbGluayA6dGFnPVwiKHBhZ2UudXJsID09ICcjJyA/ICdzcGFuJyA6ICdhJylcIiA6dG89XCJwYWdlLnVybFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3BhZ2UudGV4dH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm91dGVyLWxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBwcm9wczoge1xuICAgICAgICB0aXRsZTogU3RyaW5nLFxuICAgICAgICBicmVhZGNydW1iczogQXJyYXlcbiAgICB9LFxuICAgIG1vdW50ZWQoKSB7XG4gICAgICAgIHdpbmRvdy5kb2N1bWVudC50aXRsZSA9IHRoaXMudGl0bGUgKyAnIC0gJyArIHRoaXMuJGFwcE5hbWVcbiAgICB9LFxufTtcbjwvc2NyaXB0PlxuIl0sIm5hbWVzIjpbInByb3BzIiwidGl0bGUiLCJTdHJpbmciLCJicmVhZGNydW1icyIsIkFycmF5IiwibW91bnRlZCIsIndpbmRvdyIsImRvY3VtZW50IiwiJGFwcE5hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/HeaderWidget.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/IframeGroupWidget.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/IframeGroupWidget.vue?vue&type=script&lang=js& ***!
\**************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n iframes: []\n };\n },\n props: {\n icon: {\n type: String,\n \"default\": \"fa-chart-pie\"\n },\n type: String,\n className: String,\n slug: String,\n height: {\n type: Number,\n \"default\": 500\n }\n },\n mounted: function mounted() {\n var _this = this;\n axios.get(\"\".concat($urlPlatform, \"/iframe-group/\").concat(this.slug)).then(function (resp) {\n _this.iframes = resp.data;\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9JZnJhbWVHcm91cFdpZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmIiwibWFwcGluZ3MiOiI7Ozs7QUFtQkEsaUVBQWU7RUFDZkEsSUFBQSxXQUFBQSxLQUFBO0lBQ0E7TUFDQUMsT0FBQTtJQUNBO0VBQ0E7RUFDQUMsS0FBQTtJQUNBQyxJQUFBO01BQ0FDLElBQUEsRUFBQUMsTUFBQTtNQUNBO0lBQ0E7SUFDQUQsSUFBQSxFQUFBQyxNQUFBO0lBQ0FDLFNBQUEsRUFBQUQsTUFBQTtJQUNBRSxJQUFBLEVBQUFGLE1BQUE7SUFDQUcsTUFBQTtNQUNBSixJQUFBLEVBQUFLLE1BQUE7TUFDQTtJQUNBO0VBQ0E7RUFDQUMsT0FBQSxXQUFBQSxRQUFBO0lBQUEsSUFBQUMsS0FBQTtJQUNBQyxLQUFBLENBQUFDLEdBQUEsSUFBQUMsTUFBQSxDQUFBQyxZQUFBLG9CQUFBRCxNQUFBLE1BQUFQLElBQUEsR0FBQVMsSUFBQSxXQUFBQyxJQUFBO01BQ0FOLEtBQUEsQ0FBQVYsT0FBQSxHQUFBZ0IsSUFBQSxDQUFBakIsSUFBQTtJQUNBO0VBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3dpZGdldHMvSWZyYW1lR3JvdXBXaWRnZXQudnVlP2JhNTMiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiB2LWZvcj1cImlmcmFtZSBvZiBpZnJhbWVzXCIgOmNsYXNzPVwiaWZyYW1lLmNvbHVtbnNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCIgOmNsYXNzPVwiY2xhc3NOYW1lXCIgOmlkPVwiaWZyYW1lLnNsdWdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgbXItMVwiIDpjbGFzcz1cImljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpZnJhbWUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaWZyYW1lXCIgdi1odG1sPVwiaWZyYW1lLmNvbnRlbnRfaWZyYW1lXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZnJhbWVzOiBbXSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGljb246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFwiZmEtY2hhcnQtcGllXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgY2xhc3NOYW1lOiBTdHJpbmcsXG4gICAgICAgIHNsdWc6IFN0cmluZyxcbiAgICAgICAgaGVpZ2h0OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICBkZWZhdWx0OiA1MDAsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBtb3VudGVkKCkge1xuICAgICAgICBheGlvcy5nZXQoYCR7JHVybFBsYXRmb3JtfS9pZnJhbWUtZ3JvdXAvJHt0aGlzLnNsdWd9YCkudGhlbigocmVzcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZnJhbWVzID0gcmVzcC5kYXRhO1xuICAgICAgICB9KTtcbiAgICB9LFxufTtcbjwvc2NyaXB0PlxuIl0sIm5hbWVzIjpbImRhdGEiLCJpZnJhbWVzIiwicHJvcHMiLCJpY29uIiwidHlwZSIsIlN0cmluZyIsImNsYXNzTmFtZSIsInNsdWciLCJoZWlnaHQiLCJOdW1iZXIiLCJtb3VudGVkIiwiX3RoaXMiLCJheGlvcyIsImdldCIsImNvbmNhdCIsIiR1cmxQbGF0Zm9ybSIsInRoZW4iLCJyZXNwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/IframeGroupWidget.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/NavbarWidget.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/NavbarWidget.vue?vue&type=script&lang=js& ***!
\*********************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n modules: [],\n fontSize: 100\n };\n },\n mounted: function mounted() {\n var _this = this;\n this.modules = window.PLATFORMS;\n if (window.AT == \"\") {\n this.UserData = null;\n window.localStorage.removeItem('userDataIF');\n }\n jQuery('.btn-decrease').click(function () {\n if (_this.fontSize > 65) {\n _this.fontSize = _this.fontSize - 5;\n window.localStorage.setItem('fontSize', _this.fontSize);\n }\n jQuery('div#fontSize').html(\"\\n <style>\\n * {\\n font-size: \".concat((_this.fontSize / 100).toFixed(2), \"rem;\\n }\\n .nav-item.with-child span, .nav-item.with-child a {\\n font-size: \").concat((_this.fontSize / 100).toFixed(2), \"rem !important;\\n }\\n </style>\\n \"));\n });\n jQuery('.btn-increment').click(function () {\n if (_this.fontSize <= 120) {\n _this.fontSize = _this.fontSize + 5;\n window.localStorage.setItem('fontSize', _this.fontSize);\n }\n jQuery('div#fontSize').html(\"\\n <style>\\n * {\\n font-size: \".concat((_this.fontSize / 100).toFixed(2), \"rem;\\n }\\n .nav-item.with-child span, .nav-item.with-child a {\\n font-size: \").concat((_this.fontSize / 100).toFixed(2), \"rem !important;\\n }\\n </style>\\n \"));\n });\n jQuery('.btn-contrast').click(function () {\n jQuery(\"body\").toggleClass(\"contrast\");\n window.localStorage.setItem('contrast', jQuery(\"body\").hasClass('contrast') ? 1 : 0);\n });\n if (window.localStorage.getItem('contrast') == 1) {\n jQuery(\"body\").addClass(\"contrast\");\n }\n if (window.localStorage.getItem('fontSize') != null) {\n setTimeout(function (_) {\n _this.fontSize = parseFloat(window.localStorage.getItem('fontSize'));\n jQuery('div#fontSize').html(\"\\n <style>\\n * {\\n font-size: \".concat((_this.fontSize / 100).toFixed(2), \"rem;\\n }\\n .nav-item.with-child span, .nav-item.with-child a {\\n font-size: \").concat((_this.fontSize / 100).toFixed(2), \"rem !important;\\n }\\n </style>\\n \"));\n }, 1500);\n }\n },\n methods: {\n LogOut: function LogOut() {\n window.localStorage.removeItem('userDataIF');\n window.open('/logout', '_top');\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9OYXZiYXJXaWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJiIsIm1hcHBpbmdzIjoiOzs7O0FBOERBLGlFQUFlO0VBQ2ZBLElBQUEsV0FBQUEsS0FBQTtJQUNBO01BQ0FDLE9BQUE7TUFDQUMsUUFBQTtJQUNBO0VBQ0E7RUFDQUMsT0FBQSxXQUFBQSxRQUFBO0lBQUEsSUFBQUMsS0FBQTtJQUNBLEtBQUFILE9BQUEsR0FBQUksTUFBQSxDQUFBQyxTQUFBO0lBQ0EsSUFBQUQsTUFBQSxDQUFBRSxFQUFBO01BQ0EsS0FBQUMsUUFBQTtNQUNBSCxNQUFBLENBQUFJLFlBQUEsQ0FBQUMsVUFBQTtJQUNBO0lBQ0FDLE1BQUEsa0JBQUFDLEtBQUE7TUFDQSxJQUFBUixLQUFBLENBQUFGLFFBQUE7UUFDQUUsS0FBQSxDQUFBRixRQUFBLEdBQUFFLEtBQUEsQ0FBQUYsUUFBQTtRQUNBRyxNQUFBLENBQUFJLFlBQUEsQ0FBQUksT0FBQSxhQUFBVCxLQUFBLENBQUFGLFFBQUE7TUFDQTtNQUNBUyxNQUFBLGlCQUFBRyxJQUFBLCtFQUFBQyxNQUFBLENBR0EsQ0FBQVgsS0FBQSxDQUFBRixRQUFBLFFBQUFjLE9BQUEsc0lBQUFELE1BQUEsQ0FHQSxDQUFBWCxLQUFBLENBQUFGLFFBQUEsUUFBQWMsT0FBQSw4RUFHQTtJQUNBO0lBQ0FMLE1BQUEsbUJBQUFDLEtBQUE7TUFDQSxJQUFBUixLQUFBLENBQUFGLFFBQUE7UUFDQUUsS0FBQSxDQUFBRixRQUFBLEdBQUFFLEtBQUEsQ0FBQUYsUUFBQTtRQUNBRyxNQUFBLENBQUFJLFlBQUEsQ0FBQUksT0FBQSxhQUFBVCxLQUFBLENBQUFGLFFBQUE7TUFDQTtNQUNBUyxNQUFBLGlCQUFBRyxJQUFBLCtFQUFBQyxNQUFBLENBR0EsQ0FBQVgsS0FBQSxDQUFBRixRQUFBLFFBQUFjLE9BQUEsc0lBQUFELE1BQUEsQ0FHQSxDQUFBWCxLQUFBLENBQUFGLFFBQUEsUUFBQWMsT0FBQSw4RUFHQTtJQUNBO0lBQ0FMLE1BQUEsa0JBQUFDLEtBQUE7TUFDQUQsTUFBQSxTQUFBTSxXQUFBO01BQ0FaLE1BQUEsQ0FBQUksWUFBQSxDQUFBSSxPQUFBLGFBQUFGLE1BQUEsU0FBQU8sUUFBQTtJQUNBO0lBQ0EsSUFBQWIsTUFBQSxDQUFBSSxZQUFBLENBQUFVLE9BQUE7TUFDQVIsTUFBQSxTQUFBUyxRQUFBO0lBQ0E7SUFDQSxJQUFBZixNQUFBLENBQUFJLFlBQUEsQ0FBQVUsT0FBQTtNQUNBRSxVQUFBLFdBQUFDLENBQUE7UUFDQWxCLEtBQUEsQ0FBQUYsUUFBQSxHQUFBcUIsVUFBQSxDQUFBbEIsTUFBQSxDQUFBSSxZQUFBLENBQUFVLE9BQUE7UUFDQVIsTUFBQSxpQkFBQUcsSUFBQSwyRkFBQUMsTUFBQSxDQUdBLENBQUFYLEtBQUEsQ0FBQUYsUUFBQSxRQUFBYyxPQUFBLGtKQUFBRCxNQUFBLENBR0EsQ0FBQVgsS0FBQSxDQUFBRixRQUFBLFFBQUFjLE9BQUEsMEZBR0E7TUFDQTtJQUNBO0VBQ0E7RUFDQVEsT0FBQTtJQUNBQyxNQUFBLFdBQUFBLE9BQUE7TUFDQXBCLE1BQUEsQ0FBQUksWUFBQSxDQUFBQyxVQUFBO01BQ0FMLE1BQUEsQ0FBQXFCLElBQUE7SUFDQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL05hdmJhcldpZGdldC52dWU/YzhiZCJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPG5hdiBjbGFzcz1cIm1haW4taGVhZGVyIG5hdmJhciBuYXZiYXItZXhwYW5kIG5hdmJhci13aGl0ZSBuYXZiYXItbGlnaHRcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdmJhci1uYXZcIj5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgZGF0YS13aWRnZXQ9XCJwdXNobWVudVwiIGhyZWY9XCIjXCIgcm9sZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWJhcnNcIj48L2k+PC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gZC1ub25lIGQtc20taW5saW5lLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIj57eyAkYXBwTmFtZSB9fTwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdmJhci1uYXYgbWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmstcGxhdGZvcm1zIHJlZCBidG4tZGVjcmVhc2VcIiBocmVmPVwiamF2YXNjcmlwdDo7XCIgdGl0bGU9XCJEaXNtaW51aXIgdGFtYcOxbyBkZSBsZXRyYVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGI+QS08L2I+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmstcGxhdGZvcm1zIHJlZCBidG4taW5jcmVtZW50XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRpdGxlPVwiQXVtZW50YXIgdGFtYcOxbyBkZSBsZXRyYVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGI+QSs8L2I+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmstcGxhdGZvcm1zIGJsYWNrIGJ0bi1jb250cmFzdFwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0aXRsZT1cIkNhbWJpYXIgY29udHJhc3RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hZGp1c3RcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgdi1pZj1cIlVzZXJEYXRhICE9IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBkcm9wZG93bi10b2dnbGVcIiBocmVmPVwiI1wiIHJvbGU9XCJidXR0b25cIiBpZD1cImRyb3Bkb3duTWVudUxpbmtcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5Nw7NkdWxvczwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVMaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgOmhyZWY9XCJtb2QudXJsX2xvZ2luXCIgdi1mb3I9XCJtb2Qgb2YgbW9kdWxlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpIGNsYXNzPVwiZmFzXCIgOmNsYXNzPVwibW9kLmljb25cIj48L2k+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtb2QubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBocmVmPVwiamF2YXNjcmlwdDo7XCIgcm9sZT1cImJ1dHRvblwiIHYtaWY9XCJVc2VyRGF0YSAhPSBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBVc2VyRGF0YS5uYW1lIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIHYtaWY9XCJVc2VyRGF0YSAhPSBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cIm5hdi1saW5rXCIgdi1vbjpjbGljaz1cIkxvZ091dCgpXCIgdGl0bGU9XCJDZXJyYXIgc2VzacOzblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc2lnbi1vdXQtYWx0XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIHYtaWY9XCJVc2VyRGF0YSA9PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIvbG9naW5cIiBjbGFzcz1cIm5hdi1saW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj5JbmljaWFyIHNlc2nDs248L2I+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb2R1bGVzOiBbXSxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMDBcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbW91bnRlZCgpIHtcbiAgICAgICAgdGhpcy5tb2R1bGVzID0gd2luZG93LlBMQVRGT1JNUztcbiAgICAgICAgaWYod2luZG93LkFUID09IFwiXCIpIHtcbiAgICAgICAgICAgdGhpcy5Vc2VyRGF0YSA9IG51bGw7XG4gICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndXNlckRhdGFJRicpO1xuICAgICAgICB9XG4gICAgICAgIGpRdWVyeSgnLmJ0bi1kZWNyZWFzZScpLmNsaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGlmKHRoaXMuZm9udFNpemUgPiA2NSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9udFNpemUgPSB0aGlzLmZvbnRTaXplIC0gNTtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZvbnRTaXplJywgdGhpcy5mb250U2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBqUXVlcnkoJ2RpdiNmb250U2l6ZScpLmh0bWwoYFxuICAgICAgICAgICAgPHN0eWxlPlxuICAgICAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICR7KHRoaXMuZm9udFNpemUvMTAwKS50b0ZpeGVkKDIpfXJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLm5hdi1pdGVtLndpdGgtY2hpbGQgc3BhbiwgLm5hdi1pdGVtLndpdGgtY2hpbGQgYSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHsodGhpcy5mb250U2l6ZS8xMDApLnRvRml4ZWQoMil9cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zdHlsZT5cbiAgICAgICAgICAgIGApO1xuICAgICAgICB9KTtcbiAgICAgICAgalF1ZXJ5KCcuYnRuLWluY3JlbWVudCcpLmNsaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGlmKHRoaXMuZm9udFNpemUgPD0gMTIwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb250U2l6ZSA9IHRoaXMuZm9udFNpemUgKyA1O1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9udFNpemUnLCB0aGlzLmZvbnRTaXplKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGpRdWVyeSgnZGl2I2ZvbnRTaXplJykuaHRtbChgXG4gICAgICAgICAgICA8c3R5bGU+XG4gICAgICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHsodGhpcy5mb250U2l6ZS8xMDApLnRvRml4ZWQoMil9cmVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAubmF2LWl0ZW0ud2l0aC1jaGlsZCBzcGFuLCAubmF2LWl0ZW0ud2l0aC1jaGlsZCBhIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkeyh0aGlzLmZvbnRTaXplLzEwMCkudG9GaXhlZCgyKX1yZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICAgICAgYCk7XG4gICAgICAgIH0pO1xuICAgICAgICBqUXVlcnkoJy5idG4tY29udHJhc3QnKS5jbGljaygoKSA9PiB7XG4gICAgICAgICAgICBqUXVlcnkoXCJib2R5XCIpLnRvZ2dsZUNsYXNzKFwiY29udHJhc3RcIik7XG4gICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NvbnRyYXN0JywgalF1ZXJ5KFwiYm9keVwiKS5oYXNDbGFzcygnY29udHJhc3QnKSA/IDEgOiAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY29udHJhc3QnKSA9PSAxKSB7XG4gICAgICAgICAgICBqUXVlcnkoXCJib2R5XCIpLmFkZENsYXNzKFwiY29udHJhc3RcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb250U2l6ZScpICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoXyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb250U2l6ZSA9IHBhcnNlRmxvYXQod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb250U2l6ZScpKTtcbiAgICAgICAgICAgICAgICBqUXVlcnkoJ2RpdiNmb250U2l6ZScpLmh0bWwoYFxuICAgICAgICAgICAgICAgIDxzdHlsZT5cbiAgICAgICAgICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICR7KHRoaXMuZm9udFNpemUvMTAwKS50b0ZpeGVkKDIpfXJlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAubmF2LWl0ZW0ud2l0aC1jaGlsZCBzcGFuLCAubmF2LWl0ZW0ud2l0aC1jaGlsZCBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHsodGhpcy5mb250U2l6ZS8xMDApLnRvRml4ZWQoMil9cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICAgICAgICAgIGApO1xuICAgICAgICAgICAgfSwgMTUwMCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgTG9nT3V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3VzZXJEYXRhSUYnKTtcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKCcvbG9nb3V0JywgJ190b3AnKTtcbiAgICAgICAgfVxuICAgIH0sXG59O1xuPC9zY3JpcHQ+XG4iXSwibmFtZXMiOlsiZGF0YSIsIm1vZHVsZXMiLCJmb250U2l6ZSIsIm1vdW50ZWQiLCJfdGhpcyIsIndpbmRvdyIsIlBMQVRGT1JNUyIsIkFUIiwiVXNlckRhdGEiLCJsb2NhbFN0b3JhZ2UiLCJyZW1vdmVJdGVtIiwialF1ZXJ5IiwiY2xpY2siLCJzZXRJdGVtIiwiaHRtbCIsImNvbmNhdCIsInRvRml4ZWQiLCJ0b2dnbGVDbGFzcyIsImhhc0NsYXNzIiwiZ2V0SXRlbSIsImFkZENsYXNzIiwic2V0VGltZW91dCIsIl8iLCJwYXJzZUZsb2F0IiwibWV0aG9kcyIsIkxvZ091dCIsIm9wZW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/NavbarWidget.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/SidebarWidget.vue?vue&type=script&lang=js&":
/*!**********************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/SidebarWidget.vue?vue&type=script&lang=js& ***!
\**********************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n data: function data() {\n return {\n menu: [],\n organizationTypeList: [],\n organizationType: 0\n };\n },\n mounted: function mounted() {\n var _this = this;\n if (window.AT == \"\") {\n this.UserData = null;\n window.localStorage.removeItem('userDataIF');\n }\n if (this.UserData != null) {\n axios.post(\"/api/menu\", {}, {\n headers: {\n Authorization: AT\n }\n }).then(function (resp) {\n _this.menu = resp.data;\n });\n }\n this.loadOrganizationType();\n },\n methods: {\n loadOrganizationType: function loadOrganizationType() {\n var _this2 = this;\n axios.get($urlPlatform + \"/api/organizationsTypeGrouped\", {}, {}).then(function (response) {\n var items = response.data;\n var _arr = [];\n var _iterator = _createForOfIteratorHelper(items),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n _arr.push(item);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n _this2.organizationTypeList = _arr;\n });\n },\n goToHome: function goToHome(id) {\n var _this3 = this;\n if (this.$route.path != \"/\") {\n this.$router.push('/');\n }\n setTimeout(function (_) {\n _this3.organizationType = id;\n _this3.$root.$emit('updateOrganizationType', id);\n jQuery('html, body').animate({\n scrollTop: jQuery('.organizations-title').offset().top\n }, 500);\n }, 1000);\n },\n goToPlatform: function goToPlatform() {\n window.location.href = window.$urlPlatform;\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9TaWRlYmFyV2lkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW1EQSxpRUFBZTtFQUNmQSxJQUFBLFdBQUFBLEtBQUE7SUFDQTtNQUNBQyxJQUFBO01BQ0FDLG9CQUFBO01BQ0FDLGdCQUFBO0lBQ0E7RUFDQTtFQUNBQyxPQUFBLFdBQUFBLFFBQUE7SUFBQSxJQUFBQyxLQUFBO0lBQ0EsSUFBQUMsTUFBQSxDQUFBQyxFQUFBO01BQ0EsS0FBQUMsUUFBQTtNQUNBRixNQUFBLENBQUFHLFlBQUEsQ0FBQUMsVUFBQTtJQUNBO0lBRUEsU0FBQUYsUUFBQTtNQUNBRyxLQUFBLENBQ0FDLElBQUEsQ0FDQSxhQUNBLElBQ0E7UUFDQUMsT0FBQTtVQUNBQyxhQUFBLEVBQUFQO1FBQ0E7TUFDQSxDQUNBLEVBQ0FRLElBQUEsV0FBQUMsSUFBQTtRQUNBWCxLQUFBLENBQUFKLElBQUEsR0FBQWUsSUFBQSxDQUFBaEIsSUFBQTtNQUNBO0lBQ0E7SUFDQSxLQUFBaUIsb0JBQUE7RUFDQTtFQUNBQyxPQUFBO0lBQ0FELG9CQUFBLFdBQUFBLHFCQUFBO01BQUEsSUFBQUUsTUFBQTtNQUNBUixLQUFBLENBQUFTLEdBQUEsQ0FBQUMsWUFBQSw0Q0FBQU4sSUFBQSxXQUFBTyxRQUFBO1FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxRQUFBLENBQUF0QixJQUFBO1FBQ0EsSUFBQXdCLElBQUE7UUFBQSxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBQ0FILEtBQUE7VUFBQUksS0FBQTtRQUFBO1VBQUEsS0FBQUYsU0FBQSxDQUFBRyxDQUFBLE1BQUFELEtBQUEsR0FBQUYsU0FBQSxDQUFBSSxDQUFBLElBQUFDLElBQUE7WUFBQSxJQUFBQyxJQUFBLEdBQUFKLEtBQUEsQ0FBQUssS0FBQTtZQUNBUixJQUFBLENBQUFTLElBQUEsQ0FBQUYsSUFBQTtVQUNBO1FBQUEsU0FBQUcsR0FBQTtVQUFBVCxTQUFBLENBQUFVLENBQUEsQ0FBQUQsR0FBQTtRQUFBO1VBQUFULFNBQUEsQ0FBQVcsQ0FBQTtRQUFBO1FBQ0FqQixNQUFBLENBQUFqQixvQkFBQSxHQUFBc0IsSUFBQTtNQUNBO0lBQ0E7SUFDQWEsUUFBQSxXQUFBQSxTQUFBQyxFQUFBO01BQUEsSUFBQUMsTUFBQTtNQUNBLFNBQUFDLE1BQUEsQ0FBQUMsSUFBQTtRQUNBLEtBQUFDLE9BQUEsQ0FBQVQsSUFBQTtNQUNBO01BQ0FVLFVBQUEsV0FBQUMsQ0FBQTtRQUNBTCxNQUFBLENBQUFwQyxnQkFBQSxHQUFBbUMsRUFBQTtRQUNBQyxNQUFBLENBQUFNLEtBQUEsQ0FBQUMsS0FBQSwyQkFBQVIsRUFBQTtRQUNBUyxNQUFBLGVBQUFDLE9BQUE7VUFDQUMsU0FBQSxFQUFBRixNQUFBLHlCQUFBRyxNQUFBLEdBQUFDO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDLFlBQUEsV0FBQUEsYUFBQTtNQUNBOUMsTUFBQSxDQUFBK0MsUUFBQSxDQUFBQyxJQUFBLEdBQUFoRCxNQUFBLENBQUFlLFlBQUE7SUFDQTtFQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL1NpZGViYXJXaWRnZXQudnVlPzM3ZjEiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgIDxhc2lkZSBjbGFzcz1cIm1haW4tc2lkZWJhciBzaWRlYmFyLWRhcmstcmVkIGVsZXZhdGlvbi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIGlkPVwibG9nby1wcGFsXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cInN2Zy9sb2dvcy9sb2dvLXBsYXRhZm9ybWEuc3ZnXCIgY2xhc3M9XCJpbWctcmVzcG9zaXZlIHBvaW50ZXJcIiBAY2xpY2s9XCJnb1RvUGxhdGZvcm0oKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1wYW5lbCBtdC0zIHBiLTMgbWItMyBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInN2Zy9hdmF0YXJzL2F2YXRhci1kZWZhdWx0LnN2Z1wiIGNsYXNzPVwiaW1nLWNpcmNsZSBlbGV2YXRpb24tMlwiIGFsdD1cIlVzZXIgSW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IFVzZXJEYXRhLm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPG5hdiBjbGFzcz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXBpbGxzIG5hdi1zaWRlYmFyIGZsZXgtY29sdW1uXCIgZGF0YS13aWRnZXQ9XCJ0cmVldmlld1wiIHJvbGU9XCJtZW51XCIgZGF0YS1hY2NvcmRpb249XCJ0cnVlXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGxpIHYtYmluZDpjbGFzcz1cIihpdGVtLmlzX3NlcGFyYXRvciA9PSAxID8gJ25hdi1oZWFkZXInIDogJ25hdi1pdGVtJykgKyAnICcgKyAoaXRlbS5jaGlsZHMubGVuZ3RoID4gMCA/ICd3aXRoLWNoaWxkJyA6ICcnKVwiIHYtZm9yPVwiaXRlbSBvZiBtZW51XCIgdi1pZj1cIlVzZXJEYXRhICE9IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyb3V0ZXItbGluayBjbGFzcz1cIm5hdi1saW5rXCIgOnRhZz1cIihpdGVtLmNoaWxkcy5sZW5ndGggPiAwID8gJ3NwYW4nIDogJ2EnKVwiIDp0bz1cIihpdGVtLmNoaWxkcy5sZW5ndGggPiAwID8gJyMnIDogaXRlbS5saW5rKVwiIHYtaWY9XCJpdGVtLmlzX3NlcGFyYXRvciAhPSAxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXNcIiA6Y2xhc3M9XCJpdGVtLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3JvdXRlci1saW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cIml0ZW0uaXNfc2VwYXJhdG9yID09IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhc1wiIDpjbGFzcz1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi10cmVldmlld1wiIHYtaWY9XCJpdGVtLmlzX3NlcGFyYXRvciAhPSAxICYmIGl0ZW0uY2hpbGRzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIHYtZm9yPVwiY2hpbGQgb2YgaXRlbS5jaGlsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJvdXRlci1saW5rIHRhZz1cImFcIiBjbGFzcz1cIm5hdi1saW5rXCIgOnRvPVwiY2hpbGQubGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1kb3QtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yb3V0ZXItbGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWZvb3Rlci1tZW51XCI+PC9kaXY+XG4gICAgPC9hc2lkZT5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1lbnU6IFtdLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uVHlwZUxpc3Q6IFtdLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uVHlwZTogMFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgbW91bnRlZCgpIHtcbiAgICAgICAgaWYod2luZG93LkFUID09IFwiXCIpIHtcbiAgICAgICAgICAgdGhpcy5Vc2VyRGF0YSA9IG51bGw7XG4gICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndXNlckRhdGFJRicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodGhpcy5Vc2VyRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICBheGlvc1xuICAgICAgICAgICAgICAgIC5wb3N0KFxuICAgICAgICAgICAgICAgICAgICBcIi9hcGkvbWVudVwiLFxuICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IEFULFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnUgPSByZXNwLmRhdGE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkT3JnYW5pemF0aW9uVHlwZSgpO1xuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgICBsb2FkT3JnYW5pemF0aW9uVHlwZSgpIHtcbiAgICAgICAgICAgIGF4aW9zLmdldCgkdXJsUGxhdGZvcm0gKyBcIi9hcGkvb3JnYW5pemF0aW9uc1R5cGVHcm91cGVkXCIsIHt9LCB7fSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIGxldCBfYXJyID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgICAgICBfYXJyLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uVHlwZUxpc3QgPSBfYXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdvVG9Ib21lKGlkKSB7XG4gICAgICAgICAgICBpZih0aGlzLiRyb3V0ZS5wYXRoICE9IFwiL1wiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goJy8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoXyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25UeXBlID0gaWQ7XG4gICAgICAgICAgICAgICAgdGhpcy4kcm9vdC4kZW1pdCgndXBkYXRlT3JnYW5pemF0aW9uVHlwZScsIGlkKTtcbiAgICAgICAgICAgICAgICBqUXVlcnkoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiBqUXVlcnkoJy5vcmdhbml6YXRpb25zLXRpdGxlJykub2Zmc2V0KCkudG9wXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9LFxuICAgICAgICBnb1RvUGxhdGZvcm0oKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdpbmRvdy4kdXJsUGxhdGZvcm07XG4gICAgICAgIH1cbiAgICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlPlxuLmJyYW5kLWxpbmsge1xuICAgIHBhZGRpbmc6IDJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4udXNlci1wYW5lbCAuaW5mbyAuZC1ibG9jayB7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6WyJkYXRhIiwibWVudSIsIm9yZ2FuaXphdGlvblR5cGVMaXN0Iiwib3JnYW5pemF0aW9uVHlwZSIsIm1vdW50ZWQiLCJfdGhpcyIsIndpbmRvdyIsIkFUIiwiVXNlckRhdGEiLCJsb2NhbFN0b3JhZ2UiLCJyZW1vdmVJdGVtIiwiYXhpb3MiLCJwb3N0IiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJ0aGVuIiwicmVzcCIsImxvYWRPcmdhbml6YXRpb25UeXBlIiwibWV0aG9kcyIsIl90aGlzMiIsImdldCIsIiR1cmxQbGF0Zm9ybSIsInJlc3BvbnNlIiwiaXRlbXMiLCJfYXJyIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsIml0ZW0iLCJ2YWx1ZSIsInB1c2giLCJlcnIiLCJlIiwiZiIsImdvVG9Ib21lIiwiaWQiLCJfdGhpczMiLCIkcm91dGUiLCJwYXRoIiwiJHJvdXRlciIsInNldFRpbWVvdXQiLCJfIiwiJHJvb3QiLCIkZW1pdCIsImpRdWVyeSIsImFuaW1hdGUiLCJzY3JvbGxUb3AiLCJvZmZzZXQiLCJ0b3AiLCJnb1RvUGxhdGZvcm0iLCJsb2NhdGlvbiIsImhyZWYiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/SidebarWidget.vue?vue&type=script&lang=js&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/DashboardComponent.vue?vue&type=template&id=01ab55f4&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/DashboardComponent.vue?vue&type=template&id=01ab55f4& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm._m(0);\n};\nvar staticRenderFns = [function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"br\"), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"col-lg-12\"\n }, [_c(\"section\", {\n staticClass: \"content\"\n }, [_c(\"div\", {\n staticClass: \"container-fluid\"\n }, [_c(\"div\", {\n staticClass: \"card-group\"\n }, [_c(\"div\", {\n staticClass: \"card\"\n }, [_c(\"div\", {\n staticClass: \"card-body\"\n }, [_c(\"div\", {\n staticClass: \"text-muted text-right\"\n }, [_c(\"i\", {\n staticClass: \"fa fa-users c-icon\"\n })]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"text-value-lg\"\n }, [_vm._v(\"0\")]), _vm._v(\" \"), _c(\"small\", {\n staticClass: \"text-muted text-uppercase font-weight-bold\"\n }, [_vm._v(\"Dato 1\")]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"progress progress-xs mt-3 mb-0\"\n }, [_c(\"div\", {\n staticClass: \"progress-bar bg-info\",\n staticStyle: {\n width: \"100%\"\n },\n attrs: {\n role: \"progressbar\",\n \"aria-valuenow\": \"100\",\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": \"100\"\n }\n })])])]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"card\"\n }, [_c(\"div\", {\n staticClass: \"card-body\"\n }, [_c(\"div\", {\n staticClass: \"text-muted text-right\"\n }, [_c(\"i\", {\n staticClass: \"fa fa-cubes c-icon\"\n })]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"text-value-lg\"\n }, [_vm._v(\"0\")]), _vm._v(\" \"), _c(\"small\", {\n staticClass: \"text-muted text-uppercase font-weight-bold\"\n }, [_vm._v(\"Dato 2\")]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"progress progress-xs mt-3 mb-0\"\n }, [_c(\"div\", {\n staticClass: \"progress-bar bg-success\",\n staticStyle: {\n width: \"100%\"\n },\n attrs: {\n role: \"progressbar\",\n \"aria-valuenow\": \"100\",\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": \"100\"\n }\n })])])])]), _vm._v(\" \"), _c(\"br\"), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"row\"\n }, [_c(\"section\", {\n staticClass: \"col-md-6 connectedSortable text-center\"\n }, [_c(\"div\", {\n staticClass: \"card card-success\"\n }, [_c(\"div\", {\n staticClass: \"card-header\"\n }, [_c(\"h3\", {\n staticClass: \"card-title\"\n }, [_c(\"i\", {\n staticClass: \"fas fa-chart-pie mr-1\"\n }), _vm._v(\"\\n Diagrama 1\\n \")])]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"card-body\"\n }, [_c(\"div\", {\n staticClass: \"chart\",\n staticStyle: {\n position: \"relative\",\n height: \"250px\"\n },\n attrs: {\n id: \"revenue-chart1\"\n }\n }, [_c(\"canvas\", {\n staticStyle: {\n height: \"250px\"\n },\n attrs: {\n id: \"graph2\",\n height: \"250\"\n }\n })])])])]), _vm._v(\" \"), _c(\"section\", {\n staticClass: \"col-md-6 connectedSortable text-center\"\n }, [_c(\"div\", {\n staticClass: \"card card-danger\"\n }, [_c(\"div\", {\n staticClass: \"card-header\"\n }, [_c(\"h3\", {\n staticClass: \"card-title\"\n }, [_c(\"i\", {\n staticClass: \"fas fa-chart-pie mr-1\"\n }), _vm._v(\"\\n Diagrama 2\\n \")])]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"card-body\"\n }, [_c(\"div\", {\n staticClass: \"chart\",\n staticStyle: {\n position: \"relative\",\n height: \"250px\"\n },\n attrs: {\n id: \"revenue-chart2\"\n }\n }, [_c(\"canvas\", {\n staticStyle: {\n height: \"250px\"\n },\n attrs: {\n id: \"graph1\",\n height: \"250\"\n }\n })])])])])])])])])]);\n}];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9EYXNoYm9hcmRDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxYWI1NWY0JiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPRCxHQUFHLENBQUNHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxDQUNwQixZQUFZO0VBQ1YsSUFBSUosR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPQSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQ2ZBLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDUkQsR0FBRyxDQUFDSyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ1hKLEVBQUUsQ0FBQyxLQUFLLEVBQUU7SUFBRUssV0FBVyxFQUFFO0VBQVksQ0FBQyxFQUFFLENBQ3RDTCxFQUFFLENBQUMsU0FBUyxFQUFFO0lBQUVLLFdBQVcsRUFBRTtFQUFVLENBQUMsRUFBRSxDQUN4Q0wsRUFBRSxDQUFDLEtBQUssRUFBRTtJQUFFSyxXQUFXLEVBQUU7RUFBa0IsQ0FBQyxFQUFFLENBQzVDTCxFQUFFLENBQUMsS0FBSyxFQUFFO0lBQUVLLFdBQVcsRUFB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Q0gsQ0FBQyxDQUNILENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUNGO0FBQ0RiLE1BQU0sQ0FBQ2UsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9EYXNoYm9hcmRDb21wb25lbnQudnVlPzExYjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF92bS5fbSgwKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtcbiAgZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdm0gPSB0aGlzLFxuICAgICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgICByZXR1cm4gX2MoXCJkaXZcIiwgW1xuICAgICAgX2MoXCJiclwiKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImNvbC1sZy0xMlwiIH0sIFtcbiAgICAgICAgX2MoXCJzZWN0aW9uXCIsIHsgc3RhdGljQ2xhc3M6IFwiY29udGVudFwiIH0sIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImNvbnRhaW5lci1mbHVpZFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZC1ncm91cFwiIH0sIFtcbiAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkXCIgfSwgW1xuICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZC1ib2R5XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LW11dGVkIHRleHQtcmlnaHRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImZhIGZhLXVzZXJzIGMtaWNvblwiIH0pLFxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LXZhbHVlLWxnXCIgfSwgW192bS5fdihcIjBcIildKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidGV4dC1tdXRlZCB0ZXh0LXVwcGVyY2FzZSBmb250LXdlaWdodC1ib2xkXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJEYXRvIDFcIildXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwicHJvZ3Jlc3MgcHJvZ3Jlc3MteHMgbXQtMyBtYi0wXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicHJvZ3Jlc3MtYmFyIGJnLWluZm9cIixcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNTdHlsZTogeyB3aWR0aDogXCIxMDAlXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogXCJwcm9ncmVzc2JhclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6IFwiMTAwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogXCIxMDBcIixcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkXCIgfSwgW1xuICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZC1ib2R5XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LW11dGVkIHRleHQtcmlnaHRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImZhIGZhLWN1YmVzIGMtaWNvblwiIH0pLFxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LXZhbHVlLWxnXCIgfSwgW192bS5fdihcIjBcIildKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidGV4dC1tdXRlZCB0ZXh0LXVwcGVyY2FzZSBmb250LXdlaWdodC1ib2xkXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJEYXRvIDJcIildXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwicHJvZ3Jlc3MgcHJvZ3Jlc3MteHMgbXQtMyBtYi0wXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicHJvZ3Jlc3MtYmFyIGJnLXN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNTdHlsZTogeyB3aWR0aDogXCIxMDAlXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogXCJwcm9ncmVzc2JhclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6IFwiMTAwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogXCIxMDBcIixcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFwiYnJcIiksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJyb3dcIiB9LCBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic2VjdGlvblwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTYgY29ubmVjdGVkU29ydGFibGUgdGV4dC1jZW50ZXJcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZCBjYXJkLXN1Y2Nlc3NcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZC1oZWFkZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJoM1wiLCB7IHN0YXRpY0NsYXNzOiBcImNhcmQtdGl0bGVcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcImlcIiwgeyBzdGF0aWNDbGFzczogXCJmYXMgZmEtY2hhcnQtcGllIG1yLTFcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICBEaWFncmFtYSAxXFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkLWJvZHlcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjaGFydFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNTdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjI1MHB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInJldmVudWUtY2hhcnQxXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiY2FudmFzXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNTdHlsZTogeyBoZWlnaHQ6IFwiMjUwcHhcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcImdyYXBoMlwiLCBoZWlnaHQ6IFwiMjUwXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic2VjdGlvblwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiY29sLW1kLTYgY29ubmVjdGVkU29ydGFibGUgdGV4dC1jZW50ZXJcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZCBjYXJkLWRhbmdlclwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkLWhlYWRlclwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcImgzXCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZC10aXRsZVwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImZhcyBmYS1jaGFydC1waWUgbXItMVwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgIERpYWdyYW1hIDJcXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImNhcmQtYm9keVwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImNoYXJ0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMjUwcHhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwicmV2ZW51ZS1jaGFydDJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJjYW52YXNcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY1N0eWxlOiB7IGhlaWdodDogXCIyNTBweFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwiZ3JhcGgxXCIsIGhlaWdodDogXCIyNTBcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdKSxcbiAgICAgIF0pLFxuICAgIF0pXG4gIH0sXG5dXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwiX20iLCJzdGF0aWNSZW5kZXJGbnMiLCJfdiIsInN0YXRpY0NsYXNzIiwic3RhdGljU3R5bGUiLCJ3aWR0aCIsImF0dHJzIiwicm9sZSIsInBvc2l0aW9uIiwiaGVpZ2h0IiwiaWQiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/DashboardComponent.vue?vue&type=template&id=01ab55f4&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/create.vue?vue&type=template&id=632f584e&":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/create.vue?vue&type=template&id=632f584e& ***!
\***************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_vm.survey ? _c(\"v-app\", [_c(\"survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9hbGxpYW5jZS9jcmVhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzMmY1ODRlJiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPQSxFQUFFLENBQ1AsS0FBSyxFQUNMLENBQ0VELEdBQUcsQ0FBQ0csTUFBTSxHQUNORixFQUFFLENBQUMsT0FBTyxFQUFFLENBQUNBLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFBRUcsS0FBSyxFQUFFO01BQUVELE1BQU0sRUFBRUgsR0FBRyxDQUFDRztJQUFPO0VBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDakVILEdBQUcsQ0FBQ0ssRUFBRSxDQUFDLENBQUMsQ0FDYixFQUNELENBQ0YsQ0FBQztBQUNILENBQUM7QUFDRCxJQUFJQyxlQUFlLEdBQUcsRUFBRTtBQUN4QlAsTUFBTSxDQUFDUSxhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2FsbGlhbmNlL2NyZWF0ZS52dWU/YzE4NCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICB2YXIgX3ZtID0gdGhpcyxcbiAgICBfYyA9IF92bS5fc2VsZi5fY1xuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICBbXG4gICAgICBfdm0uc3VydmV5XG4gICAgICAgID8gX2MoXCJ2LWFwcFwiLCBbX2MoXCJzdXJ2ZXlcIiwgeyBhdHRyczogeyBzdXJ2ZXk6IF92bS5zdXJ2ZXkgfSB9KV0sIDEpXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN1cnZleSIsImF0dHJzIiwiX2UiLCJzdGF0aWNSZW5kZXJGbnMiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/create.vue?vue&type=template&id=632f584e&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/edit.vue?vue&type=template&id=c7f491b2&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/edit.vue?vue&type=template&id=c7f491b2& ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9hbGxpYW5jZS9lZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2Y0OTFiMiYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0QsR0FBRyxDQUFDRyxNQUFNLEdBQ2JGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQ0EsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUFFRyxLQUFLLEVBQUU7TUFBRUQsTUFBTSxFQUFFSCxHQUFHLENBQUNHO0lBQU87RUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUMvREgsR0FBRyxDQUFDSyxFQUFFLENBQUMsQ0FBQztBQUNkLENBQUM7QUFDRCxJQUFJQyxlQUFlLEdBQUcsRUFBRTtBQUN4QlAsTUFBTSxDQUFDUSxhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2FsbGlhbmNlL2VkaXQudnVlPzE1NjUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF92bS5zdXJ2ZXlcbiAgICA/IF9jKFwiZGl2XCIsIFtfYyhcIlN1cnZleVwiLCB7IGF0dHJzOiB7IHN1cnZleTogX3ZtLnN1cnZleSB9IH0pXSwgMSlcbiAgICA6IF92bS5fZSgpXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJzdXJ2ZXkiLCJhdHRycyIsIl9lIiwic3RhdGljUmVuZGVyRm5zIiwiX3dpdGhTdHJpcHBlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/edit.vue?vue&type=template&id=c7f491b2&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/index.vue?vue&type=template&id=2668e785&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/index.vue?vue&type=template&id=2668e785& ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"v-app\", [_vm.data ? _c(\"v-card\", [_c(\"v-card-title\", [_vm._v(\"\\n Administración de Alianzas\\n \"), _c(\"v-spacer\"), _vm._v(\" \"), _c(\"v-text-field\", {\n attrs: {\n \"append-icon\": \"mdi-magnify\",\n label: \"Buscar\",\n \"single-line\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.search,\n callback: function callback($$v) {\n _vm.search = $$v;\n },\n expression: \"search\"\n }\n })], 1), _vm._v(\" \"), _c(\"v-data-table\", {\n staticClass: \"elevation-1\",\n attrs: {\n headers: _vm.headers,\n items: _vm.data,\n search: _vm.search\n },\n scopedSlots: _vm._u([{\n key: \"item.image\",\n fn: function fn(_ref) {\n var item = _ref.item;\n return [_c(\"v-img\", {\n attrs: {\n \"max-height\": \"51\",\n \"max-width\": \"110\",\n contain: \"\",\n src: item.imagen\n }\n })];\n }\n }, {\n key: \"item.link\",\n fn: function fn(_ref2) {\n var item = _ref2.item;\n return [_c(\"v-btn\", {\n attrs: {\n icon: \"\",\n href: item.url,\n color: \"primary\",\n target: \"_blank\"\n }\n }, [_c(\"v-icon\", [_vm._v(\"mdi-open-in-new\")])], 1)];\n }\n }, {\n key: \"item.actions\",\n fn: function fn(_ref3) {\n var item = _ref3.item;\n return [_c(\"v-btn\", {\n attrs: {\n color: \"red\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.edit(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-pencil \")])], 1), _vm._v(\" \"), _c(\"v-btn\", {\n attrs: {\n color: \"warning\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.trash(item.id, item.name);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-delete \")])], 1)];\n }\n }], null, false, 984660133)\n })], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9hbGxpYW5jZS9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjY2OGU3ODUmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9BLEVBQUUsQ0FDUCxPQUFPLEVBQ1AsQ0FDRUQsR0FBRyxDQUFDRyxJQUFJLEdBQ0pGLEVBQUUsQ0FDQSxRQUFRLEVBQ1IsQ0FDRUEsRUFBRSxDQUNBLGNBQWMsRUFDZCxDQUNFRCxHQUFHLENBQUNJLEVBQUUsQ0FBQyw0Q0FBNEMsQ0FBQyxFQUNwREgsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUNkRCxHQUFHLENBQUNJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWEgsRUFBRSxDQUFDLGNBQWMsRUFBRTtJQUNqQkksS0FBSyxFQUFFO01BQ0wsYUFBYSxFQUFFLGFBQWE7TUFDNUJDLEtBQUssRUFBRSxRQUFRO01BQ2YsYUFBYSxFQUFFLEVBQUU7TUFDakIsY0FBYyxFQUFFO0lBQ2xCLENBQUM7SUFDREMsS0FBSyxFQUFFO01BQ0xDLEtBQUssRUFBRVIsR0FBRyxDQUFDUyxNQUFNO01BQ2pCQyxRQUFRLEVBQUUsU0FBQUEsU0FBVUMsR0FBRyxFQUFFO1FBQ3ZCWCxHQUFHLENBQUNTLE1BQU0sR0FBR0UsR0FBRztN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RUFDRCxDQUFDdkMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDRCxHQUFHLENBQUNJLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDeEMsQ0FDRixDQUFDLENBQ0Y7TUFDSDtJQUNGLENBQUMsQ0FDRixFQUNELElBQUksRUFDSixLQUFLLEVBQ0wsU0FDRjtFQUNGLENBQUMsQ0FBQyxDQUNILEVBQ0QsQ0FDRixDQUFDLEdBQ0RKLEdBQUcsQ0FBQ3lDLEVBQUUsQ0FBQyxDQUFDLENBQ2IsRUFDRCxDQUNGLENBQUM7QUFDSCxDQUFDO0FBQ0QsSUFBSUMsZUFBZSxHQUFHLEVBQUU7QUFDeEIzQyxNQUFNLENBQUM0QyxhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2FsbGlhbmNlL2luZGV4LnZ1ZT81NDE4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfYyhcbiAgICBcInYtYXBwXCIsXG4gICAgW1xuICAgICAgX3ZtLmRhdGFcbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwidi1jYXJkXCIsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwidi1jYXJkLXRpdGxlXCIsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgQWRtaW5pc3RyYWNpw7NuIGRlIEFsaWFuemFzXFxuICAgICAgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2LXNwYWNlclwiKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInYtdGV4dC1maWVsZFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcHBlbmQtaWNvblwiOiBcIm1kaS1tYWduaWZ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiQnVzY2FyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaW5nbGUtbGluZVwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwiaGlkZS1kZXRhaWxzXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uICgkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWFyY2ggPSAkJHZcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VhcmNoXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJ2LWRhdGEtdGFibGVcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsZXZhdGlvbi0xXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IF92bS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IF92bS5kYXRhLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoOiBfdm0uc2VhcmNoLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJpdGVtLmltYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uICh7IGl0ZW0gfSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2LWltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWF4LWhlaWdodFwiOiBcIjUxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1heC13aWR0aFwiOiBcIjExMFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogaXRlbS5pbWFnZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJpdGVtLmxpbmtcIixcbiAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24gKHsgaXRlbSB9KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInYtYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogaXRlbS51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInByaW1hcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBcIl9ibGFua1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfYyhcInYtaWNvblwiLCBbX3ZtLl92KFwibWRpLW9wZW4taW4tbmV3XCIpXSldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBcIml0ZW0uYWN0aW9uc1wiLFxuICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAoeyBpdGVtIH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidi1idG5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIngtc21hbGxcIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyazogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZWRpdChpdGVtLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfYyhcInYtaWNvblwiLCBbX3ZtLl92KFwiIG1kaS1wZW5jaWwgXCIpXSldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2LWJ0blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIndhcm5pbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIngtc21hbGxcIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyazogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0udHJhc2goaXRlbS5pZCwgaXRlbS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfYyhcInYtaWNvblwiLCBbX3ZtLl92KFwiIG1kaS1kZWxldGUgXCIpXSldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIDk4NDY2MDEzM1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsImRhdGEiLCJfdiIsImF0dHJzIiwibGFiZWwiLCJtb2RlbCIsInZhbHVlIiwic2VhcmNoIiwiY2FsbGJhY2siLCIkJHYiLCJleHByZXNzaW9uIiwic3RhdGljQ2xhc3MiLCJoZWFkZXJzIiwiaXRlbXMiLCJzY29wZWRTbG90cyIsIl91Iiwia2V5IiwiZm4iLCJfcmVmIiwiaXRlbSIsImNvbnRhaW4iLCJzcmMiLCJpbWFnZW4iLCJfcmVmMiIsImljb24iLCJocmVmIiwidXJsIiwiY29sb3IiLCJ0YXJnZXQiLCJfcmVmMyIsImZhYiIsImRhcmsiLCJvbiIsImNsaWNrIiwiJGV2ZW50IiwiZWRpdCIsImlkIiwidHJhc2giLCJuYW1lIiwiX2UiLCJzdGF0aWNSZW5kZXJGbnMiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/alliance/index.vue?vue&type=template&id=2668e785&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/create.vue?vue&type=template&id=4b6a9904&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/create.vue?vue&type=template&id=4b6a9904& ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9iYW5uZXIvY3JlYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YjZhOTkwNCYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0QsR0FBRyxDQUFDRyxNQUFNLEdBQ2JGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQ0EsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUFFRyxLQUFLLEVBQUU7TUFBRUQsTUFBTSxFQUFFSCxHQUFHLENBQUNHO0lBQU87RUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUMvREgsR0FBRyxDQUFDSyxFQUFFLENBQUMsQ0FBQztBQUNkLENBQUM7QUFDRCxJQUFJQyxlQUFlLEdBQUcsRUFBRTtBQUN4QlAsTUFBTSxDQUFDUSxhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2Jhbm5lci9jcmVhdGUudnVlP2NmYjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF92bS5zdXJ2ZXlcbiAgICA/IF9jKFwiZGl2XCIsIFtfYyhcIlN1cnZleVwiLCB7IGF0dHJzOiB7IHN1cnZleTogX3ZtLnN1cnZleSB9IH0pXSwgMSlcbiAgICA6IF92bS5fZSgpXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJzdXJ2ZXkiLCJhdHRycyIsIl9lIiwic3RhdGljUmVuZGVyRm5zIiwiX3dpdGhTdHJpcHBlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/create.vue?vue&type=template&id=4b6a9904&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/edit.vue?vue&type=template&id=3ec569dc&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/edit.vue?vue&type=template&id=3ec569dc& ***!
\***********************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9iYW5uZXIvZWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2VjNTY5ZGMmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9ELEdBQUcsQ0FBQ0csTUFBTSxHQUNiRixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUNBLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFBRUcsS0FBSyxFQUFFO01BQUVELE1BQU0sRUFBRUgsR0FBRyxDQUFDRztJQUFPO0VBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDL0RILEdBQUcsQ0FBQ0ssRUFBRSxDQUFDLENBQUM7QUFDZCxDQUFDO0FBQ0QsSUFBSUMsZUFBZSxHQUFHLEVBQUU7QUFDeEJQLE1BQU0sQ0FBQ1EsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9iYW5uZXIvZWRpdC52dWU/NmViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICB2YXIgX3ZtID0gdGhpcyxcbiAgICBfYyA9IF92bS5fc2VsZi5fY1xuICByZXR1cm4gX3ZtLnN1cnZleVxuICAgID8gX2MoXCJkaXZcIiwgW19jKFwiU3VydmV5XCIsIHsgYXR0cnM6IHsgc3VydmV5OiBfdm0uc3VydmV5IH0gfSldLCAxKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN1cnZleSIsImF0dHJzIiwiX2UiLCJzdGF0aWNSZW5kZXJGbnMiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/edit.vue?vue&type=template&id=3ec569dc&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/index.vue?vue&type=template&id=74c3d0fa&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/index.vue?vue&type=template&id=74c3d0fa& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"v-app\", [_vm.data ? _c(\"v-card\", [_c(\"v-card-title\", [_vm._v(\"\\n Administración de Banners\\n \"), _c(\"v-spacer\"), _vm._v(\" \"), _c(\"v-text-field\", {\n attrs: {\n \"append-icon\": \"mdi-magnify\",\n label: \"Buscar\",\n \"single-line\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.search,\n callback: function callback($$v) {\n _vm.search = $$v;\n },\n expression: \"search\"\n }\n })], 1), _vm._v(\" \"), _c(\"v-data-table\", {\n staticClass: \"elevation-1\",\n attrs: {\n headers: _vm.headers,\n items: _vm.data,\n search: _vm.search\n },\n scopedSlots: _vm._u([{\n key: \"item.image\",\n fn: function fn(_ref) {\n var item = _ref.item;\n return [_c(\"v-img\", {\n attrs: {\n \"max-height\": \"51\",\n \"max-width\": \"90\",\n contain: \"\",\n src: item.imagen\n }\n })];\n }\n }, {\n key: \"item.actions\",\n fn: function fn(_ref2) {\n var item = _ref2.item;\n return [_c(\"v-btn\", {\n attrs: {\n color: \"primary\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.edit(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-pencil \")])], 1), _vm._v(\" \"), _c(\"v-btn\", {\n attrs: {\n color: \"warning\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.trash(item.id, item.title);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-delete \")])], 1)];\n }\n }], null, false, 3450691413)\n })], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9iYW5uZXIvaW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc0YzNkMGZhJiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPQSxFQUFFLENBQ1AsT0FBTyxFQUNQLENBQ0VELEdBQUcsQ0FBQ0csSUFBSSxHQUNKRixFQUFFLENBQ0EsUUFBUSxFQUNSLENBQ0VBLEVBQUUsQ0FDQSxjQUFjLEVBQ2QsQ0FDRUQsR0FBRyxDQUFDSSxFQUFFLENBQUMsMkNBQTJDLENBQUMsRUFDbkRILEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFDZEQsR0FBRyxDQUFDSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ1hILEVBQUUsQ0FBQyxjQUFjLEVBQUU7SUFDakJJLEtBQUssRUFBRTtNQUNMLGFBQWEsRUFBRSxhQUFhO01BQzVCQyxLQUFLLEVBQUUsUUFBUTtNQUNmLGFBQWEsRUFBRSxFQUFFO01BQ2pCLGNBQWMsRUFBRTtJQUNsQixDQUFDO0lBQ0RDLEtBQUssRUFBRTtNQUNMQyxLQUFLLEVBQUVSLEdBQUcsQ0FBQ1MsTUFBTTtNQUNqQkMsUUFBUSxFQUFFLFNBQUFBLFNBQVVDLEdBQUcsRUFBRTtRQUN2QlgsR0FBRyxDQUFDUyxNQUFNLEdBQUdFLEdBQUc7TUFDbEIsQ0FBQztNQUNEQyxVQUFVLEVBQUU7SUFDZDtFQUNGLENBQUMsQ0FBQyxDQUNILEVBQ0QsQ0FDRixDQUFDLEVBQ0RaLEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNYSCxFQUFFLENBQUMsY0FBYyxFQUFFO0lBQ2pCWSxXQUFXLEVBQUUsYUFBYTtJQUMxQlIsS0FBSyxFQUFFO01BQ0xTLE9BQU8sRUFBRWQsR0FBRyxDQUFDYyxPQUFPO01BQ3BCQyxLQUFLLEVBQUVmLEdBQUcsQ0FBQ0csSUFBSTtNQUNmTSxNQUFNLEVBQUVULEdBQUcsQ0FBQ1M7SUFDZCxDQUFDO0lBQ0RPLFdBQVcsRUFBRWhCLEdBQUcsQ0FBQ2lCLEVBQUUsQ0FDakIsQ0FDRTtNQUNFQyxHQUFHLEVBQUUsWUFBWTtNQUNqQkMsRUFBRSxFQUFFLFNBQUFBLEdBQUFDLElBQUEsRUFBb0I7UUFBQSxJQUFSQyxJQUFJLEdBQUFELElBQUEsQ0FBSkMsSUFBSTtRQUNsQixPQUFPLENBQ0xwQixFQUFFLENBQUMsT0FBTyxFQUFFO1VBQ1ZJLEtBQUssRUFBRTtZQUNMLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCaUIsT0FBTyxFQUFFLEVBQUU7WUFDWEMsR0FBRyxFQUFFRixJQUFJLENBQUNHO1VBQ1o7UUFDRixDQUFDLENBQUMsQ0FDSDtNQUNIO0lBQ0YsQ0FBQyxFQUNEO01BQ0VOLEdBQUcsRUFBRSxjQUFjO01BQ25CQyxFQUFFLEVBQUUsU0FBQUEsR0FBQU0sS0FBQSxFQUFvQjtRQUFBLElBQVJKLElBQUksR0FBQUksS0FBQSxDQUFKSixJQUFJO1FBQ2xCLE9BQU8sQ0FDTHBCLEVBQUUsQ0FDQSxPQUFPLEVBQ1A7VUFDRUksS0FBSyxFQUFFO1lBQ0xxQixLQUFLLEVBQUUsU0FBUztZQUNoQkMsR0FBRyxFQUFFLEVBQUU7WUFDUCxTQUFTLEVBQUUsRUFBRTtZQUNiQyxJQUFJLEVBQUU7VUFDUixDQUFDO1VBQ0RDLEVBQUUsRUFBRTtZQUNGQyxLQUFLLEVBQUUsU0FBQUEsTUFBVUMsTUFBTSxFQUFFO2NBQ3ZCLE9BQU8vQixHQUFHLENBQUNnQyxJQUFJLENBQUNYLElBQUksQ0FBQ1ksRUFBRSxDQUFDO1lBQzFCO1VBQ0Y7UUFDRixDQUFDLEVBQ0QsQ0FBQ2hDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQ0QsR0FBRyxDQUFDSSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLENBQ0YsQ0FBQyxFQUNESixHQUFHLENBQUNJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWEgsRUFBRSxDQUNBLE9BQU8sRUFDUDtVQUNFSSxLQUFLLEVBQUU7WUFDTHFCLEtBQUssRUFBRSxTQUFTO1lBQ2hCQyxHQUFHLEVBQUUsRUFBRTtZQUNQLFNBQVMsRUFBRSxFQUFFO1lBQ2JDLElBQUksRUFBRTtVQUNSLENBQUM7VUFDREMsRUFBRSxFQUFFO1lBQ0ZDLEtBQUssRUFBRSxTQUFBQSxNQUFVQyxNQUFNLEVBQUU7Y0FDdkIsT0FBTy9CLEdBQUcsQ0FBQ2tDLEtBQUssQ0FBQ2IsSUFBSSxDQUFDWSxFQUFFLEVBQUVaLElBQUksQ0FBQ2MsS0FBSyxDQUFDO1lBQ3ZDO1VBQ0Y7UUFDRixDQUFDLEVBQ0QsQ0FBQ2xDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQ0QsR0FBRyxDQUFDSSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLENBQ0YsQ0FBQyxDQUNGO01BQ0g7SUFDRixDQUFDLENBQ0YsRUFDRCxJQUFJLEVBQ0osS0FBSyxFQUNMLFVBQ0Y7RUFDRixDQUFDLENBQUMsQ0FDSCxFQUNELENBQ0YsQ0FBQyxHQUNESixHQUFHLENBQUNvQyxFQUFFLENBQUMsQ0FBQyxDQUNiLEVBQ0QsQ0FDRixDQUFDO0FBQ0gsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxFQUFFO0FBQ3hCdEMsTUFBTSxDQUFDdUMsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9iYW5uZXIvaW5kZXgudnVlPzJhZWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF9jKFxuICAgIFwidi1hcHBcIixcbiAgICBbXG4gICAgICBfdm0uZGF0YVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJ2LWNhcmRcIixcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ2LWNhcmQtdGl0bGVcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICBBZG1pbmlzdHJhY2nDs24gZGUgQmFubmVyc1xcbiAgICAgIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidi1zcGFjZXJcIiksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2LXRleHQtZmllbGRcIiwge1xuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIFwiYXBwZW5kLWljb25cIjogXCJtZGktbWFnbmlmeVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkJ1c2NhclwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwic2luZ2xlLWxpbmVcIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICBcImhpZGUtZGV0YWlsc1wiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VhcmNoID0gJCR2XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlYXJjaFwiLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwidi1kYXRhLXRhYmxlXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbGV2YXRpb24tMVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBoZWFkZXJzOiBfdm0uaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBfdm0uZGF0YSxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaDogX3ZtLnNlYXJjaCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNjb3BlZFNsb3RzOiBfdm0uX3UoXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaXRlbS5pbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAoeyBpdGVtIH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidi1pbWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1heC1oZWlnaHRcIjogXCI1MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtd2lkdGhcIjogXCI5MFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogaXRlbS5pbWFnZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJpdGVtLmFjdGlvbnNcIixcbiAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24gKHsgaXRlbSB9KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInYtYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwieC1zbWFsbFwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5lZGl0KGl0ZW0uaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwidi1pY29uXCIsIFtfdm0uX3YoXCIgbWRpLXBlbmNpbCBcIildKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInYtYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwieC1zbWFsbFwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS50cmFzaChpdGVtLmlkLCBpdGVtLnRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfYyhcInYtaWNvblwiLCBbX3ZtLl92KFwiIG1kaS1kZWxldGUgXCIpXSldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIDM0NTA2OTE0MTNcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJkYXRhIiwiX3YiLCJhdHRycyIsImxhYmVsIiwibW9kZWwiLCJ2YWx1ZSIsInNlYXJjaCIsImNhbGxiYWNrIiwiJCR2IiwiZXhwcmVzc2lvbiIsInN0YXRpY0NsYXNzIiwiaGVhZGVycyIsIml0ZW1zIiwic2NvcGVkU2xvdHMiLCJfdSIsImtleSIsImZuIiwiX3JlZiIsIml0ZW0iLCJjb250YWluIiwic3JjIiwiaW1hZ2VuIiwiX3JlZjIiLCJjb2xvciIsImZhYiIsImRhcmsiLCJvbiIsImNsaWNrIiwiJGV2ZW50IiwiZWRpdCIsImlkIiwidHJhc2giLCJ0aXRsZSIsIl9lIiwic3RhdGljUmVuZGVyRm5zIiwiX3dpdGhTdHJpcHBlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/banner/index.vue?vue&type=template&id=74c3d0fa&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/create.vue?vue&type=template&id=67829e94&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/create.vue?vue&type=template&id=67829e94& ***!
\*****************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb25mZXJlbmNlL2NyZWF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Njc4MjllOTQmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9ELEdBQUcsQ0FBQ0csTUFBTSxHQUNiRixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUNBLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFBRUcsS0FBSyxFQUFFO01BQUVELE1BQU0sRUFBRUgsR0FBRyxDQUFDRztJQUFPO0VBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDL0RILEdBQUcsQ0FBQ0ssRUFBRSxDQUFDLENBQUM7QUFDZCxDQUFDO0FBQ0QsSUFBSUMsZUFBZSxHQUFHLEVBQUU7QUFDeEJQLE1BQU0sQ0FBQ1EsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb25mZXJlbmNlL2NyZWF0ZS52dWU/MWQ3MCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICB2YXIgX3ZtID0gdGhpcyxcbiAgICBfYyA9IF92bS5fc2VsZi5fY1xuICByZXR1cm4gX3ZtLnN1cnZleVxuICAgID8gX2MoXCJkaXZcIiwgW19jKFwiU3VydmV5XCIsIHsgYXR0cnM6IHsgc3VydmV5OiBfdm0uc3VydmV5IH0gfSldLCAxKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN1cnZleSIsImF0dHJzIiwiX2UiLCJzdGF0aWNSZW5kZXJGbnMiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/create.vue?vue&type=template&id=67829e94&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/edit.vue?vue&type=template&id=a9cd16bc&":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/edit.vue?vue&type=template&id=a9cd16bc& ***!
\***************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb25mZXJlbmNlL2VkaXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE5Y2QxNmJjJiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPRCxHQUFHLENBQUNHLE1BQU0sR0FDYkYsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDQSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQUVHLEtBQUssRUFBRTtNQUFFRCxNQUFNLEVBQUVILEdBQUcsQ0FBQ0c7SUFBTztFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQy9ESCxHQUFHLENBQUNLLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxFQUFFO0FBQ3hCUCxNQUFNLENBQUNRLGFBQWEsR0FBRyxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9lZGl0LnZ1ZT8zOGI5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfdm0uc3VydmV5XG4gICAgPyBfYyhcImRpdlwiLCBbX2MoXCJTdXJ2ZXlcIiwgeyBhdHRyczogeyBzdXJ2ZXk6IF92bS5zdXJ2ZXkgfSB9KV0sIDEpXG4gICAgOiBfdm0uX2UoKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwic3VydmV5IiwiYXR0cnMiLCJfZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/edit.vue?vue&type=template&id=a9cd16bc&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/gallery.vue?vue&type=template&id=28c127ea&":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/gallery.vue?vue&type=template&id=28c127ea& ***!
\******************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb25mZXJlbmNlL2dhbGxlcnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI4YzEyN2VhJiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPRCxHQUFHLENBQUNHLE1BQU0sR0FDYkYsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDQSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQUVHLEtBQUssRUFBRTtNQUFFRCxNQUFNLEVBQUVILEdBQUcsQ0FBQ0c7SUFBTztFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQy9ESCxHQUFHLENBQUNLLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxFQUFFO0FBQ3hCUCxNQUFNLENBQUNRLGFBQWEsR0FBRyxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9nYWxsZXJ5LnZ1ZT8wNjAxIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfdm0uc3VydmV5XG4gICAgPyBfYyhcImRpdlwiLCBbX2MoXCJTdXJ2ZXlcIiwgeyBhdHRyczogeyBzdXJ2ZXk6IF92bS5zdXJ2ZXkgfSB9KV0sIDEpXG4gICAgOiBfdm0uX2UoKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwic3VydmV5IiwiYXR0cnMiLCJfZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/gallery.vue?vue&type=template&id=28c127ea&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/index.vue?vue&type=template&id=0c664d2c&":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/index.vue?vue&type=template&id=0c664d2c& ***!
\****************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"v-app\", [_vm.data ? _c(\"v-card\", [_c(\"v-card-title\", [_vm._v(\"\\n Administración de Congresos\\n \"), _c(\"v-spacer\"), _vm._v(\" \"), _c(\"v-text-field\", {\n attrs: {\n \"append-icon\": \"mdi-magnify\",\n label: \"Buscar\",\n \"single-line\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.search,\n callback: function callback($$v) {\n _vm.search = $$v;\n },\n expression: \"search\"\n }\n })], 1), _vm._v(\" \"), _c(\"v-data-table\", {\n staticClass: \"elevation-1\",\n attrs: {\n headers: _vm.headers,\n items: _vm.data,\n search: _vm.search\n },\n scopedSlots: _vm._u([{\n key: \"item.image\",\n fn: function fn(_ref) {\n var item = _ref.item;\n return [_c(\"v-img\", {\n attrs: {\n \"max-height\": \"51\",\n \"max-width\": \"110\",\n contain: \"\",\n src: item.imagen\n }\n })];\n }\n }, {\n key: \"item.actions\",\n fn: function fn(_ref2) {\n var item = _ref2.item;\n return [_c(\"v-btn\", {\n attrs: {\n color: \"primary\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.edit(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-pencil \")])], 1), _vm._v(\" \"), _c(\"v-btn\", {\n attrs: {\n color: \"info\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.gallery(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-folder-multiple-image \")])], 1), _vm._v(\" \"), _c(\"v-btn\", {\n attrs: {\n color: \"warning\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.trash(item.id, item.name);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-delete \")])], 1)];\n }\n }], null, false, 2787325646)\n })], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb25mZXJlbmNlL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYzY2NGQyYyYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0EsRUFBRSxDQUNQLE9BQU8sRUFDUCxDQUNFRCxHQUFHLENBQUNHLElBQUksR0FDSkYsRUFBRSxDQUNBLFFBQVEsRUFDUixDQUNFQSxFQUFFLENBQ0EsY0FBYyxFQUNkLENBQ0VELEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLDZDQUE2QyxDQUFDLEVBQ3JESCxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQ2RELEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNYSCxFQUFFLENBQUMsY0FBYyxFQUFFO0lBQ2pCSSxLQUFLLEVBQUU7TUFDTCxhQUFhLEVBQUUsYUFBYTtNQUM1QkMsS0FBSyxFQUFFLFFBQVE7TUFDZixhQUFhLEVBQUUsRUFBRTtNQUNqQixjQUFjLEVBQUU7SUFDbEIsQ0FBQztJQUNEQyxLQUFLLEVBQUU7TUFDTEMsS0FBSyxFQUFFUixHQUFHLENBQUNTLE1BQU07TUFDakJDLFFBQVEsRUFBRSxTQUFBQSxTQUFVQyxHQUFHLEVBQUU7UUFDdkJYLEdBQUcsQ0FBQ1MsTUFBTSxHQUFHRSxHQUFH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O1FBQ0YsQ0FBQyxFQUNELENBQUNuQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUNELEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN4QyxDQUNGLENBQUMsQ0FDRjtNQUNIO0lBQ0YsQ0FBQyxDQUNGLEVBQ0QsSUFBSSxFQUNKLEtBQUssRUFDTCxVQUNGO0VBQ0YsQ0FBQyxDQUFDLENBQ0gsRUFDRCxDQUNGLENBQUMsR0FDREosR0FBRyxDQUFDcUMsRUFBRSxDQUFDLENBQUMsQ0FDYixFQUNELENBQ0YsQ0FBQztBQUNILENBQUM7QUFDRCxJQUFJQyxlQUFlLEdBQUcsRUFBRTtBQUN4QnZDLE1BQU0sQ0FBQ3dDLGFBQWEsR0FBRyxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9pbmRleC52dWU/ZTg2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICB2YXIgX3ZtID0gdGhpcyxcbiAgICBfYyA9IF92bS5fc2VsZi5fY1xuICByZXR1cm4gX2MoXG4gICAgXCJ2LWFwcFwiLFxuICAgIFtcbiAgICAgIF92bS5kYXRhXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcInYtY2FyZFwiLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInYtY2FyZC10aXRsZVwiLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgIEFkbWluaXN0cmFjacOzbiBkZSBDb25ncmVzb3NcXG4gICAgICBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInYtc3BhY2VyXCIpLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidi10ZXh0LWZpZWxkXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBcImFwcGVuZC1pY29uXCI6IFwibWRpLW1hZ25pZnlcIixcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJCdXNjYXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBcInNpbmdsZS1saW5lXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJoaWRlLWRldGFpbHNcIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNlYXJjaCA9ICQkdlxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzZWFyY2hcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcInYtZGF0YS10YWJsZVwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWxldmF0aW9uLTFcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgaGVhZGVyczogX3ZtLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICBpdGVtczogX3ZtLmRhdGEsXG4gICAgICAgICAgICAgICAgICBzZWFyY2g6IF92bS5zZWFyY2gsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzY29wZWRTbG90czogX3ZtLl91KFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBcIml0ZW0uaW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24gKHsgaXRlbSB9KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInYtaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtaGVpZ2h0XCI6IFwiNTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWF4LXdpZHRoXCI6IFwiMTEwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBpdGVtLmltYWdlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBcIml0ZW0uYWN0aW9uc1wiLFxuICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAoeyBpdGVtIH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidi1idG5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhYjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ4LXNtYWxsXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcms6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmVkaXQoaXRlbS5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX2MoXCJ2LWljb25cIiwgW192bS5fdihcIiBtZGktcGVuY2lsIFwiKV0pXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidi1idG5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJpbmZvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhYjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ4LXNtYWxsXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcms6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmdhbGxlcnkoaXRlbS5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInYtaWNvblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBtZGktZm9sZGVyLW11bHRpcGxlLWltYWdlIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInYtYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwieC1zbWFsbFwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS50cmFzaChpdGVtLmlkLCBpdGVtLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwidi1pY29uXCIsIFtfdm0uX3YoXCIgbWRpLWRlbGV0ZSBcIildKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgMjc4NzMyNTY0NlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsImRhdGEiLCJfdiIsImF0dHJzIiwibGFiZWwiLCJtb2RlbCIsInZhbHVlIiwic2VhcmNoIiwiY2FsbGJhY2siLCIkJHYiLCJleHByZXNzaW9uIiwic3RhdGljQ2xhc3MiLCJoZWFkZXJzIiwiaXRlbXMiLCJzY29wZWRTbG90cyIsIl91Iiwia2V5IiwiZm4iLCJfcmVmIiwiaXRlbSIsImNvbnRhaW4iLCJzcmMiLCJpbWFnZW4iLCJfcmVmMiIsImNvbG9yIiwiZmFiIiwiZGFyayIsIm9uIiwiY2xpY2siLCIkZXZlbnQiLCJlZGl0IiwiaWQiLCJnYWxsZXJ5IiwidHJhc2giLCJuYW1lIiwiX2UiLCJzdGF0aWNSZW5kZXJGbnMiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/conference/index.vue?vue&type=template&id=0c664d2c&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/create.vue?vue&type=template&id=d4aac696&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/create.vue?vue&type=template&id=d4aac696& ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb3Vyc2UvY3JlYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kNGFhYzY5NiYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0QsR0FBRyxDQUFDRyxNQUFNLEdBQ2JGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQ0EsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUFFRyxLQUFLLEVBQUU7TUFBRUQsTUFBTSxFQUFFSCxHQUFHLENBQUNHO0lBQU87RUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUMvREgsR0FBRyxDQUFDSyxFQUFFLENBQUMsQ0FBQztBQUNkLENBQUM7QUFDRCxJQUFJQyxlQUFlLEdBQUcsRUFBRTtBQUN4QlAsTUFBTSxDQUFDUSxhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2NvdXJzZS9jcmVhdGUudnVlPzI5NjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF92bS5zdXJ2ZXlcbiAgICA/IF9jKFwiZGl2XCIsIFtfYyhcIlN1cnZleVwiLCB7IGF0dHJzOiB7IHN1cnZleTogX3ZtLnN1cnZleSB9IH0pXSwgMSlcbiAgICA6IF92bS5fZSgpXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJzdXJ2ZXkiLCJhdHRycyIsIl9lIiwic3RhdGljUmVuZGVyRm5zIiwiX3dpdGhTdHJpcHBlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/create.vue?vue&type=template&id=d4aac696&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/edit.vue?vue&type=template&id=1486f1fa&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/edit.vue?vue&type=template&id=1486f1fa& ***!
\***********************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb3Vyc2UvZWRpdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTQ4NmYxZmEmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9ELEdBQUcsQ0FBQ0csTUFBTSxHQUNiRixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUNBLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFBRUcsS0FBSyxFQUFFO01BQUVELE1BQU0sRUFBRUgsR0FBRyxDQUFDRztJQUFPO0VBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDL0RILEdBQUcsQ0FBQ0ssRUFBRSxDQUFDLENBQUM7QUFDZCxDQUFDO0FBQ0QsSUFBSUMsZUFBZSxHQUFHLEVBQUU7QUFDeEJQLE1BQU0sQ0FBQ1EsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb3Vyc2UvZWRpdC52dWU/ZjQxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICB2YXIgX3ZtID0gdGhpcyxcbiAgICBfYyA9IF92bS5fc2VsZi5fY1xuICByZXR1cm4gX3ZtLnN1cnZleVxuICAgID8gX2MoXCJkaXZcIiwgW19jKFwiU3VydmV5XCIsIHsgYXR0cnM6IHsgc3VydmV5OiBfdm0uc3VydmV5IH0gfSldLCAxKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN1cnZleSIsImF0dHJzIiwiX2UiLCJzdGF0aWNSZW5kZXJGbnMiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/edit.vue?vue&type=template&id=1486f1fa&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/index.vue?vue&type=template&id=038c1329&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/index.vue?vue&type=template&id=038c1329& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"v-app\", [_vm.data ? _c(\"v-card\", [_c(\"v-card-title\", [_vm._v(\"\\n Administración de Cursos\\n \"), _c(\"v-spacer\"), _vm._v(\" \"), _c(\"v-text-field\", {\n attrs: {\n \"append-icon\": \"mdi-magnify\",\n label: \"Buscar\",\n \"single-line\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.search,\n callback: function callback($$v) {\n _vm.search = $$v;\n },\n expression: \"search\"\n }\n })], 1), _vm._v(\" \"), _c(\"v-data-table\", {\n staticClass: \"elevation-1\",\n attrs: {\n headers: _vm.headers,\n items: _vm.data,\n search: _vm.search\n },\n scopedSlots: _vm._u([{\n key: \"item.actions\",\n fn: function fn(_ref) {\n var item = _ref.item;\n return [_c(\"v-btn\", {\n attrs: {\n color: \"red\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.edit(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-pencil \")])], 1), _vm._v(\" \"), _c(\"v-btn\", {\n attrs: {\n color: \"warning\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.trash(item.id, item.name);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-delete \")])], 1)];\n }\n }], null, false, 3153591193)\n })], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb3Vyc2UvaW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAzOGMxMzI5JiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPQSxFQUFFLENBQ1AsT0FBTyxFQUNQLENBQ0VELEdBQUcsQ0FBQ0csSUFBSSxHQUNKRixFQUFFLENBQ0EsUUFBUSxFQUNSLENBQ0VBLEVBQUUsQ0FDQSxjQUFjLEVBQ2QsQ0FDRUQsR0FBRyxDQUFDSSxFQUFFLENBQUMsMENBQTBDLENBQUMsRUFDbERILEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFDZEQsR0FBRyxDQUFDSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ1hILEVBQUUsQ0FBQyxjQUFjLEVBQUU7SUFDakJJLEtBQUssRUFBRTtNQUNMLGFBQWEsRUFBRSxhQUFhO01BQzVCQyxLQUFLLEVBQUUsUUFBUTtNQUNmLGFBQWEsRUFBRSxFQUFFO01BQ2pCLGNBQWMsRUFBRTtJQUNsQixDQUFDO0lBQ0RDLEtBQUssRUFBRTtNQUNMQyxLQUFLLEVBQUVSLEdBQUcsQ0FBQ1MsTUFBTTtNQUNqQkMsUUFBUSxFQUFFLFNBQUFBLFNBQVVDLEdBQUcsRUFBRTtRQUN2QlgsR0FBRyxDQUFDUyxNQUFNLEdBQUdFLEdBQUc7TUFDbEIsQ0FBQztNQUNEQyxVQUFVLEVBQUU7SUFDZDtFQUNGLENBQUMsQ0FBQyxDQUNILEVBQ0QsQ0FDRixDQUFDLEVBQ0RaLEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNYSCxFQUFFLENBQUMsY0FBYyxFQUFFO0lBQ2pCWSxXQUFXLEVBQUUsYUFBYTtJQUMxQlIsS0FBSyxFQUFFO01BQ0xTLE9BQU8sRUFBRWQsR0FBRyxDQUFDYyxPQUFPO01BQ3BCQyxLQUFLLEVBQUVmLEdBQUcsQ0FBQ0csSUFBSTtNQUNmTSxNQUFNLEVBQUVULEdBQUcsQ0FBQ1M7SUFDZCxDQUFDO0lBQ0RPLFdBQVcsRUFBRWhCLEdBQUcsQ0FBQ2lCLEVBQUUsQ0FDakIsQ0FDRTtNQUNFQyxHQUFHLEVBQUUsY0FBYztNQUNuQkMsRUFBRSxFQUFFLFNBQUFBLEdBQUFDLElBQUEsRUFBb0I7UUFBQSxJQUFSQyxJQUFJLEdBQUFELElBQUEsQ0FBSkMsSUFBSTtRQUNsQixPQUFPLENBQ0xwQixFQUFFLENBQ0EsT0FBTyxFQUNQO1VBQ0VJLEtBQUssRUFBRTtZQUNMaUIsS0FBSyxFQUFFLEtBQUs7WUFDWkMsR0FBRyxFQUFFLEVBQUU7WUFDUCxTQUFTLEVBQUUsRUFBRTtZQUNiQyxJQUFJLEVBQUU7VUFDUixDQUFDO1VBQ0RDLEVBQUUsRUFBRTtZQUNGQyxLQUFLLEVBQUUsU0FBQUEsTUFBVUMsTUFBTSxFQUFFO2NBQ3ZCLE9BQU8zQixHQUFHLENBQUM0QixJQUFJLENBQUNQLElBQUksQ0FBQ1EsRUFBRSxDQUFDO1lBQzFCO1VBQ0Y7UUFDRixDQUFDLEVBQ0QsQ0FBQzVCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQ0QsR0FBRyxDQUFDSSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLENBQ0YsQ0FBQyxFQUNESixHQUFHLENBQUNJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWEgsRUFBRSxDQUNBLE9BQU8sRUFDUDtVQUNFSSxLQUFLLEVBQUU7WUFDTGlCLEtBQUssRUFBRSxTQUFTO1lBQ2hCQyxHQUFHLEVBQUUsRUFBRTtZQUNQLFNBQVMsRUFBRSxFQUFFO1lBQ2JDLElBQUksRUFBRTtVQUNSLENBQUM7VUFDREMsRUFBRSxFQUFFO1lBQ0ZDLEtBQUssRUFBRSxTQUFBQSxNQUFVQyxNQUFNLEVBQUU7Y0FDdkIsT0FBTzNCLEdBQUcsQ0FBQzhCLEtBQUssQ0FBQ1QsSUFBSSxDQUFDUSxFQUFFLEVBQUVSLElBQUksQ0FBQ1UsSUFBSSxDQUFDO1lBQ3RDO1VBQ0Y7UUFDRixDQUFDLEVBQ0QsQ0FBQzlCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQ0QsR0FBRyxDQUFDSSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLENBQ0YsQ0FBQyxDQUNGO01BQ0g7SUFDRixDQUFDLENBQ0YsRUFDRCxJQUFJLEVBQ0osS0FBSyxFQUNMLFVBQ0Y7RUFDRixDQUFDLENBQUMsQ0FDSCxFQUNELENBQ0YsQ0FBQyxHQUNESixHQUFHLENBQUNnQyxFQUFFLENBQUMsQ0FBQyxDQUNiLEVBQ0QsQ0FDRixDQUFDO0FBQ0gsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxFQUFFO0FBQ3hCbEMsTUFBTSxDQUFDbUMsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb3Vyc2UvaW5kZXgudnVlPzhkNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF9jKFxuICAgIFwidi1hcHBcIixcbiAgICBbXG4gICAgICBfdm0uZGF0YVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJ2LWNhcmRcIixcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ2LWNhcmQtdGl0bGVcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICBBZG1pbmlzdHJhY2nDs24gZGUgQ3Vyc29zXFxuICAgICAgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2LXNwYWNlclwiKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInYtdGV4dC1maWVsZFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcHBlbmQtaWNvblwiOiBcIm1kaS1tYWduaWZ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiQnVzY2FyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaW5nbGUtbGluZVwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwiaGlkZS1kZXRhaWxzXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uICgkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWFyY2ggPSAkJHZcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VhcmNoXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJ2LWRhdGEtdGFibGVcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsZXZhdGlvbi0xXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IF92bS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IF92bS5kYXRhLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoOiBfdm0uc2VhcmNoLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJpdGVtLmFjdGlvbnNcIixcbiAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24gKHsgaXRlbSB9KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInYtYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicmVkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhYjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ4LXNtYWxsXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcms6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmVkaXQoaXRlbS5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX2MoXCJ2LWljb25cIiwgW192bS5fdihcIiBtZGktcGVuY2lsIFwiKV0pXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidi1idG5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJ3YXJuaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhYjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ4LXNtYWxsXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcms6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnRyYXNoKGl0ZW0uaWQsIGl0ZW0ubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX2MoXCJ2LWljb25cIiwgW192bS5fdihcIiBtZGktZGVsZXRlIFwiKV0pXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAzMTUzNTkxMTkzXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwiZGF0YSIsIl92IiwiYXR0cnMiLCJsYWJlbCIsIm1vZGVsIiwidmFsdWUiLCJzZWFyY2giLCJjYWxsYmFjayIsIiQkdiIsImV4cHJlc3Npb24iLCJzdGF0aWNDbGFzcyIsImhlYWRlcnMiLCJpdGVtcyIsInNjb3BlZFNsb3RzIiwiX3UiLCJrZXkiLCJmbiIsIl9yZWYiLCJpdGVtIiwiY29sb3IiLCJmYWIiLCJkYXJrIiwib24iLCJjbGljayIsIiRldmVudCIsImVkaXQiLCJpZCIsInRyYXNoIiwibmFtZSIsIl9lIiwic3RhdGljUmVuZGVyRm5zIiwiX3dpdGhTdHJpcHBlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/course/index.vue?vue&type=template&id=038c1329&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/create.vue?vue&type=template&id=3c7c97e0&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/create.vue?vue&type=template&id=3c7c97e0& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jeWNsZS9jcmVhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjN2M5N2UwJiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPRCxHQUFHLENBQUNHLE1BQU0sR0FDYkYsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDQSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQUVHLEtBQUssRUFBRTtNQUFFRCxNQUFNLEVBQUVILEdBQUcsQ0FBQ0c7SUFBTztFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQy9ESCxHQUFHLENBQUNLLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxFQUFFO0FBQ3hCUCxNQUFNLENBQUNRLGFBQWEsR0FBRyxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY3ljbGUvY3JlYXRlLnZ1ZT9mNDdlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfdm0uc3VydmV5XG4gICAgPyBfYyhcImRpdlwiLCBbX2MoXCJTdXJ2ZXlcIiwgeyBhdHRyczogeyBzdXJ2ZXk6IF92bS5zdXJ2ZXkgfSB9KV0sIDEpXG4gICAgOiBfdm0uX2UoKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwic3VydmV5IiwiYXR0cnMiLCJfZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/create.vue?vue&type=template&id=3c7c97e0&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/edit.vue?vue&type=template&id=5bd7b91e&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/edit.vue?vue&type=template&id=5bd7b91e& ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jeWNsZS9lZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YmQ3YjkxZSYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0QsR0FBRyxDQUFDRyxNQUFNLEdBQ2JGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQ0EsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUFFRyxLQUFLLEVBQUU7TUFBRUQsTUFBTSxFQUFFSCxHQUFHLENBQUNHO0lBQU87RUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUMvREgsR0FBRyxDQUFDSyxFQUFFLENBQUMsQ0FBQztBQUNkLENBQUM7QUFDRCxJQUFJQyxlQUFlLEdBQUcsRUFBRTtBQUN4QlAsTUFBTSxDQUFDUSxhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2N5Y2xlL2VkaXQudnVlP2I0NjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF92bS5zdXJ2ZXlcbiAgICA/IF9jKFwiZGl2XCIsIFtfYyhcIlN1cnZleVwiLCB7IGF0dHJzOiB7IHN1cnZleTogX3ZtLnN1cnZleSB9IH0pXSwgMSlcbiAgICA6IF92bS5fZSgpXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJzdXJ2ZXkiLCJhdHRycyIsIl9lIiwic3RhdGljUmVuZGVyRm5zIiwiX3dpdGhTdHJpcHBlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/edit.vue?vue&type=template&id=5bd7b91e&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/index.vue?vue&type=template&id=60d7246e&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/index.vue?vue&type=template&id=60d7246e& ***!
\***********************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"v-app\", [_vm.data ? _c(\"v-card\", [_c(\"v-card-title\", [_vm._v(\"\\n Administración de Ciclos\\n \"), _c(\"v-spacer\"), _vm._v(\" \"), _c(\"v-text-field\", {\n attrs: {\n \"append-icon\": \"mdi-magnify\",\n label: \"Buscar\",\n \"single-line\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.search,\n callback: function callback($$v) {\n _vm.search = $$v;\n },\n expression: \"search\"\n }\n })], 1), _vm._v(\" \"), _c(\"v-data-table\", {\n staticClass: \"elevation-1\",\n attrs: {\n headers: _vm.headers,\n items: _vm.data,\n search: _vm.search\n },\n scopedSlots: _vm._u([{\n key: \"item.image\",\n fn: function fn(_ref) {\n var item = _ref.item;\n return [_c(\"v-img\", {\n attrs: {\n \"max-height\": \"40\",\n \"max-width\": \"80\",\n contain: \"\",\n src: item.imagen\n }\n })];\n }\n }, {\n key: \"item.actions\",\n fn: function fn(_ref2) {\n var item = _ref2.item;\n return [_c(\"v-btn\", {\n attrs: {\n color: \"red\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.edit(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-pencil \")])], 1), _vm._v(\" \"), _c(\"v-btn\", {\n attrs: {\n color: \"warning\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.trash(item.id, item.name);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-delete \")])], 1)];\n }\n }], null, false, 526602956)\n })], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jeWNsZS9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjBkNzI0NmUmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9BLEVBQUUsQ0FDUCxPQUFPLEVBQ1AsQ0FDRUQsR0FBRyxDQUFDRyxJQUFJLEdBQ0pGLEVBQUUsQ0FDQSxRQUFRLEVBQ1IsQ0FDRUEsRUFBRSxDQUNBLGNBQWMsRUFDZCxDQUNFRCxHQUFHLENBQUNJLEVBQUUsQ0FBQywwQ0FBMEMsQ0FBQyxFQUNsREgsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUNkRCxHQUFHLENBQUNJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWEgsRUFBRSxDQUFDLGNBQWMsRUFBRTtJQUNqQkksS0FBSyxFQUFFO01BQ0wsYUFBYSxFQUFFLGFBQWE7TUFDNUJDLEtBQUssRUFBRSxRQUFRO01BQ2YsYUFBYSxFQUFFLEVBQUU7TUFDakIsY0FBYyxFQUFFO0lBQ2xCLENBQUM7SUFDREMsS0FBSyxFQUFFO01BQ0xDLEtBQUssRUFBRVIsR0FBRyxDQUFDUyxNQUFNO01BQ2pCQyxRQUFRLEVBQUUsU0FBQUEsU0FBVUMsR0FBRyxFQUFFO1FBQ3ZCWCxHQUFHLENBQUNTLE1BQU0sR0FBR0UsR0FBRztNQUNsQixDQUFDO01BQ0RDLFVBQVUsRUFBRTtJQUNkO0VBQ0YsQ0FBQyxDQUFDLENBQ0gsRUFDRCxDQUNGLENBQUMsRUFDRFosR0FBRyxDQUFDSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ1hILEVBQUUsQ0FBQyxjQUFjLEVBQUU7SUFDakJZLFdBQVcsRUFBRSxhQUFhO0lBQzFCUixLQUFLLEVBQUU7TUFDTFMsT0FBTyxFQUFFZCxHQUFHLENBQUNjLE9BQU87TUFDcEJDLEtBQUssRUFBRWYsR0FBRyxDQUFDRyxJQUFJO01BQ2ZNLE1BQU0sRUFBRVQsR0FBRyxDQUFDUztJQUNkLENBQUM7SUFDRE8sV0FBVyxFQUFFaEIsR0FBRyxDQUFDaUIsRUFBRSxDQUNqQixDQUNFO01BQ0VDLEdBQUcsRUFBRSxZQUFZO01BQ2pCQyxFQUFFLEVBQUUsU0FBQUEsR0FBQUMsSUFBQSxFQUFvQjtRQUFBLElBQVJDLElBQUksR0FBQUQsSUFBQSxDQUFKQyxJQUFJO1FBQ2xCLE9BQU8sQ0FDTHBCLEVBQUUsQ0FBQyxPQUFPLEVBQUU7VUFDVkksS0FBSyxFQUFFO1lBQ0wsWUFBWSxFQUFFLElBQUk7WUFDbEIsV0FBVyxFQUFFLElBQUk7WUFDakJpQixPQUFPLEVBQUUsRUFBRTtZQUNYQyxHQUFHLEVBQUVGLElBQUksQ0FBQ0c7VUFDWjtRQUNGLENBQUMsQ0FBQyxDQUNIO01BQ0g7SUFDRixDQUFDLEVBQ0Q7TUFDRU4sR0FBRyxFQUFFLGNBQWM7TUFDbkJDLEVBQUUsRUFBRSxTQUFBQSxHQUFBTSxLQUFBLEVBQW9CO1FBQUEsSUFBUkosSUFBSSxHQUFBSSxLQUFBLENBQUpKLElBQUk7UUFDbEIsT0FBTyxDQUNMcEIsRUFBRSxDQUNBLE9BQU8sRUFDUDtVQUNFSSxLQUFLLEVBQUU7WUFDTHFCLEtBQUssRUFBRSxLQUFLO1lBQ1pDLEdBQUcsRUFBRSxFQUFFO1lBQ1AsU0FBUyxFQUFFLEVBQUU7WUFDYkMsSUFBSSxFQUFFO1VBQ1IsQ0FBQztVQUNEQyxFQUFFLEVBQUU7WUFDRkMsS0FBSyxFQUFFLFNBQUFBLE1BQVVDLE1BQU0sRUFBRTtjQUN2QixPQUFPL0IsR0FBRyxDQUFDZ0MsSUFBSSxDQUFDWCxJQUFJLENBQUNZLEVBQUUsQ0FBQztZQUMxQjtVQUNGO1FBQ0YsQ0FBQyxFQUNELENBQUNoQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUNELEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN4QyxDQUNGLENBQUMsRUFDREosR0FBRyxDQUFDSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ1hILEVBQUUsQ0FDQSxPQUFPLEVBQ1A7VUFDRUksS0FBSyxFQUFFO1lBQ0xxQixLQUFLLEVBQUUsU0FBUztZQUNoQkMsR0FBRyxFQUFFLEVBQUU7WUFDUCxTQUFTLEVBQUUsRUFBRTtZQUNiQyxJQUFJLEVBQUU7VUFDUixDQUFDO1VBQ0RDLEVBQUUsRUFBRTtZQUNGQyxLQUFLLEVBQUUsU0FBQUEsTUFBVUMsTUFBTSxFQUFFO2NBQ3ZCLE9BQU8vQixHQUFHLENBQUNrQyxLQUFLLENBQUNiLElBQUksQ0FBQ1ksRUFBRSxFQUFFWixJQUFJLENBQUNjLElBQUksQ0FBQztZQUN0QztVQUNGO1FBQ0YsQ0FBQyxFQUNELENBQUNsQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUNELEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN4QyxDQUNGLENBQUMsQ0FDRjtNQUNIO0lBQ0YsQ0FBQyxDQUNGLEVBQ0QsSUFBSSxFQUNKLEtBQUssRUFDTCxTQUNGO0VBQ0YsQ0FBQyxDQUFDLENBQ0gsRUFDRCxDQUNGLENBQUMsR0FDREosR0FBRyxDQUFDb0MsRUFBRSxDQUFDLENBQUMsQ0FDYixFQUNELENBQ0YsQ0FBQztBQUNILENBQUM7QUFDRCxJQUFJQyxlQUFlLEdBQUcsRUFBRTtBQUN4QnRDLE1BQU0sQ0FBQ3VDLGFBQWEsR0FBRyxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY3ljbGUvaW5kZXgudnVlP2RhYjIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF9jKFxuICAgIFwidi1hcHBcIixcbiAgICBbXG4gICAgICBfdm0uZGF0YVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJ2LWNhcmRcIixcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ2LWNhcmQtdGl0bGVcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICBBZG1pbmlzdHJhY2nDs24gZGUgQ2ljbG9zXFxuICAgICAgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2LXNwYWNlclwiKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInYtdGV4dC1maWVsZFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhcHBlbmQtaWNvblwiOiBcIm1kaS1tYWduaWZ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiQnVzY2FyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaW5nbGUtbGluZVwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwiaGlkZS1kZXRhaWxzXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uICgkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWFyY2ggPSAkJHZcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VhcmNoXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJ2LWRhdGEtdGFibGVcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsZXZhdGlvbi0xXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IF92bS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IF92bS5kYXRhLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoOiBfdm0uc2VhcmNoLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2NvcGVkU2xvdHM6IF92bS5fdShcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJpdGVtLmltYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uICh7IGl0ZW0gfSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ2LWltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWF4LWhlaWdodFwiOiBcIjQwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1heC13aWR0aFwiOiBcIjgwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBpdGVtLmltYWdlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBcIml0ZW0uYWN0aW9uc1wiLFxuICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAoeyBpdGVtIH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidi1idG5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIngtc21hbGxcIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyazogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZWRpdChpdGVtLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfYyhcInYtaWNvblwiLCBbX3ZtLl92KFwiIG1kaS1wZW5jaWwgXCIpXSldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2LWJ0blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIndhcm5pbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIngtc21hbGxcIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyazogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0udHJhc2goaXRlbS5pZCwgaXRlbS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfYyhcInYtaWNvblwiLCBbX3ZtLl92KFwiIG1kaS1kZWxldGUgXCIpXSldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIDUyNjYwMjk1NlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsImRhdGEiLCJfdiIsImF0dHJzIiwibGFiZWwiLCJtb2RlbCIsInZhbHVlIiwic2VhcmNoIiwiY2FsbGJhY2siLCIkJHYiLCJleHByZXNzaW9uIiwic3RhdGljQ2xhc3MiLCJoZWFkZXJzIiwiaXRlbXMiLCJzY29wZWRTbG90cyIsIl91Iiwia2V5IiwiZm4iLCJfcmVmIiwiaXRlbSIsImNvbnRhaW4iLCJzcmMiLCJpbWFnZW4iLCJfcmVmMiIsImNvbG9yIiwiZmFiIiwiZGFyayIsIm9uIiwiY2xpY2siLCIkZXZlbnQiLCJlZGl0IiwiaWQiLCJ0cmFzaCIsIm5hbWUiLCJfZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/cycle/index.vue?vue&type=template&id=60d7246e&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/create.vue?vue&type=template&id=b9ed7f4a&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/create.vue?vue&type=template&id=b9ed7f4a& ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9saWJyYXJ5L2NyZWF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YjllZDdmNGEmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9ELEdBQUcsQ0FBQ0csTUFBTSxHQUNiRixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUNBLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFBRUcsS0FBSyxFQUFFO01BQUVELE1BQU0sRUFBRUgsR0FBRyxDQUFDRztJQUFPO0VBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FDL0RILEdBQUcsQ0FBQ0ssRUFBRSxDQUFDLENBQUM7QUFDZCxDQUFDO0FBQ0QsSUFBSUMsZUFBZSxHQUFHLEVBQUU7QUFDeEJQLE1BQU0sQ0FBQ1EsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9saWJyYXJ5L2NyZWF0ZS52dWU/MmQ3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICB2YXIgX3ZtID0gdGhpcyxcbiAgICBfYyA9IF92bS5fc2VsZi5fY1xuICByZXR1cm4gX3ZtLnN1cnZleVxuICAgID8gX2MoXCJkaXZcIiwgW19jKFwiU3VydmV5XCIsIHsgYXR0cnM6IHsgc3VydmV5OiBfdm0uc3VydmV5IH0gfSldLCAxKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN1cnZleSIsImF0dHJzIiwiX2UiLCJzdGF0aWNSZW5kZXJGbnMiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/create.vue?vue&type=template&id=b9ed7f4a&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/edit.vue?vue&type=template&id=7d9bdc29&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/edit.vue?vue&type=template&id=7d9bdc29& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9saWJyYXJ5L2VkaXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkOWJkYzI5JiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPRCxHQUFHLENBQUNHLE1BQU0sR0FDYkYsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDQSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQUVHLEtBQUssRUFBRTtNQUFFRCxNQUFNLEVBQUVILEdBQUcsQ0FBQ0c7SUFBTztFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQy9ESCxHQUFHLENBQUNLLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxFQUFFO0FBQ3hCUCxNQUFNLENBQUNRLGFBQWEsR0FBRyxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vbGlicmFyeS9lZGl0LnZ1ZT82ZDBlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfdm0uc3VydmV5XG4gICAgPyBfYyhcImRpdlwiLCBbX2MoXCJTdXJ2ZXlcIiwgeyBhdHRyczogeyBzdXJ2ZXk6IF92bS5zdXJ2ZXkgfSB9KV0sIDEpXG4gICAgOiBfdm0uX2UoKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwic3VydmV5IiwiYXR0cnMiLCJfZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/edit.vue?vue&type=template&id=7d9bdc29&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/index.vue?vue&type=template&id=779762c3&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/index.vue?vue&type=template&id=779762c3& ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"v-app\", [_vm.data ? _c(\"v-card\", [_c(\"v-card-title\", [_vm._v(\"\\n Administración de Biblioteca\\n \"), _c(\"v-spacer\"), _vm._v(\" \"), _c(\"v-text-field\", {\n attrs: {\n \"append-icon\": \"mdi-magnify\",\n label: \"Buscar\",\n \"single-line\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.search,\n callback: function callback($$v) {\n _vm.search = $$v;\n },\n expression: \"search\"\n }\n })], 1), _vm._v(\" \"), _c(\"v-data-table\", {\n staticClass: \"elevation-1\",\n attrs: {\n headers: _vm.headers,\n items: _vm.data,\n search: _vm.search\n },\n scopedSlots: _vm._u([{\n key: \"item.image\",\n fn: function fn(_ref) {\n var item = _ref.item;\n return [_c(\"v-img\", {\n attrs: {\n \"max-height\": \"51\",\n \"max-width\": \"110\",\n contain: \"\",\n src: item.icon\n }\n })];\n }\n }, {\n key: \"item.doc\",\n fn: function fn(_ref2) {\n var item = _ref2.item;\n return [item.file ? _c(\"v-btn\", {\n attrs: {\n icon: \"\",\n color: \"primary\"\n },\n on: {\n click: function click($event) {\n return _vm.download(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\"mdi-cloud-download\")])], 1) : _vm._e()];\n }\n }, {\n key: \"item.actions\",\n fn: function fn(_ref3) {\n var item = _ref3.item;\n return [_c(\"v-btn\", {\n attrs: {\n color: \"red\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.edit(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-pencil \")])], 1), _vm._v(\" \"), _c(\"v-btn\", {\n attrs: {\n color: \"warning\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.trash(item.id, item.name);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-delete \")])], 1)];\n }\n }], null, false, 1372619974)\n })], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9saWJyYXJ5L2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Nzk3NjJjMyYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0EsRUFBRSxDQUNQLE9BQU8sRUFDUCxDQUNFRCxHQUFHLENBQUNHLElBQUksR0FDSkYsRUFBRSxDQUNBLFFBQVEsRUFDUixDQUNFQSxFQUFFLENBQ0EsY0FBYyxFQUNkLENBQ0VELEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLDhDQUE4QyxDQUFDLEVBQ3RESCxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQ2RELEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNYSCxFQUFFLENBQUMsY0FBYyxFQUFFO0lBQ2pCSSxLQUFLLEVBQUU7TUFDTCxhQUFhLEVBQUUsYUFBYTtNQUM1QkMsS0FBSyxFQUFFLFFBQVE7TUFDZixhQUFhLEVBQUUsRUFBRTtNQUNqQixjQUFjLEVBQUU7SUFDbEIsQ0FBQztJQUNEQyxLQUFLLEVBQUU7TUFDTEMsS0FBSyxFQUFFUixHQUFHLENBQUNTLE1BQU07TUFDakJDLFFBQVEsRUFBRSxTQUFBQSxTQUFVQyxHQUFHLEVBQUU7UUFDdkJYLEdBQUcsQ0FBQ1MsTUFBTSxHQUFHRSxHQUFHO01B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QUFBQSxNQUFVQyxNQUFNLEVBQUU7Y0FDdkIsT0FBTzlCLEdBQUcsQ0FBQ3NDLEtBQUssQ0FBQ2pCLElBQUksQ0FBQ1csRUFBRSxFQUFFWCxJQUFJLENBQUNrQixJQUFJLENBQUM7WUFDdEM7VUFDRjtRQUNGLENBQUMsRUFDRCxDQUFDdEMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDRCxHQUFHLENBQUNJLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDeEMsQ0FDRixDQUFDLENBQ0Y7TUFDSDtJQUNGLENBQUMsQ0FDRixFQUNELElBQUksRUFDSixLQUFLLEVBQ0wsVUFDRjtFQUNGLENBQUMsQ0FBQyxDQUNILEVBQ0QsQ0FDRixDQUFDLEdBQ0RKLEdBQUcsQ0FBQ2lDLEVBQUUsQ0FBQyxDQUFDLENBQ2IsRUFDRCxDQUNGLENBQUM7QUFDSCxDQUFDO0FBQ0QsSUFBSU8sZUFBZSxHQUFHLEVBQUU7QUFDeEJ6QyxNQUFNLENBQUMwQyxhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2xpYnJhcnkvaW5kZXgudnVlPzhlNWEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF9jKFxuICAgIFwidi1hcHBcIixcbiAgICBbXG4gICAgICBfdm0uZGF0YVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJ2LWNhcmRcIixcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ2LWNhcmQtdGl0bGVcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICBBZG1pbmlzdHJhY2nDs24gZGUgQmlibGlvdGVjYVxcbiAgICAgIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidi1zcGFjZXJcIiksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2LXRleHQtZmllbGRcIiwge1xuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIFwiYXBwZW5kLWljb25cIjogXCJtZGktbWFnbmlmeVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkJ1c2NhclwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwic2luZ2xlLWxpbmVcIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICBcImhpZGUtZGV0YWlsc1wiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VhcmNoID0gJCR2XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlYXJjaFwiLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwidi1kYXRhLXRhYmxlXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbGV2YXRpb24tMVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBoZWFkZXJzOiBfdm0uaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBfdm0uZGF0YSxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaDogX3ZtLnNlYXJjaCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNjb3BlZFNsb3RzOiBfdm0uX3UoXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaXRlbS5pbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAoeyBpdGVtIH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidi1pbWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1heC1oZWlnaHRcIjogXCI1MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtd2lkdGhcIjogXCIxMTBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW46IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGl0ZW0uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBcIml0ZW0uZG9jXCIsXG4gICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uICh7IGl0ZW0gfSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5maWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2LWJ0blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWNvbjogXCJcIiwgY29sb3I6IFwicHJpbWFyeVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZG93bmxvYWQoaXRlbS5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwidi1pY29uXCIsIFtfdm0uX3YoXCJtZGktY2xvdWQtZG93bmxvYWRcIildKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaXRlbS5hY3Rpb25zXCIsXG4gICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uICh7IGl0ZW0gfSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2LWJ0blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwieC1zbWFsbFwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5lZGl0KGl0ZW0uaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwidi1pY29uXCIsIFtfdm0uX3YoXCIgbWRpLXBlbmNpbCBcIildKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInYtYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwieC1zbWFsbFwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS50cmFzaChpdGVtLmlkLCBpdGVtLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwidi1pY29uXCIsIFtfdm0uX3YoXCIgbWRpLWRlbGV0ZSBcIildKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgMTM3MjYxOTk3NFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsImRhdGEiLCJfdiIsImF0dHJzIiwibGFiZWwiLCJtb2RlbCIsInZhbHVlIiwic2VhcmNoIiwiY2FsbGJhY2siLCIkJHYiLCJleHByZXNzaW9uIiwic3RhdGljQ2xhc3MiLCJoZWFkZXJzIiwiaXRlbXMiLCJzY29wZWRTbG90cyIsIl91Iiwia2V5IiwiZm4iLCJfcmVmIiwiaXRlbSIsImNvbnRhaW4iLCJzcmMiLCJpY29uIiwiX3JlZjIiLCJmaWxlIiwiY29sb3IiLCJvbiIsImNsaWNrIiwiJGV2ZW50IiwiZG93bmxvYWQiLCJpZCIsIl9lIiwiX3JlZjMiLCJmYWIiLCJkYXJrIiwiZWRpdCIsInRyYXNoIiwibmFtZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/library/index.vue?vue&type=template&id=779762c3&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/edit.vue?vue&type=template&id=31209e4f&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/edit.vue?vue&type=template&id=31209e4f& ***!
\*********************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9wYWdlL2VkaXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMxMjA5ZTRmJiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPRCxHQUFHLENBQUNHLE1BQU0sR0FDYkYsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDQSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQUVHLEtBQUssRUFBRTtNQUFFRCxNQUFNLEVBQUVILEdBQUcsQ0FBQ0c7SUFBTztFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQy9ESCxHQUFHLENBQUNLLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxFQUFFO0FBQ3hCUCxNQUFNLENBQUNRLGFBQWEsR0FBRyxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vcGFnZS9lZGl0LnZ1ZT9iZmNhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfdm0uc3VydmV5XG4gICAgPyBfYyhcImRpdlwiLCBbX2MoXCJTdXJ2ZXlcIiwgeyBhdHRyczogeyBzdXJ2ZXk6IF92bS5zdXJ2ZXkgfSB9KV0sIDEpXG4gICAgOiBfdm0uX2UoKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwic3VydmV5IiwiYXR0cnMiLCJfZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/edit.vue?vue&type=template&id=31209e4f&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/index.vue?vue&type=template&id=34aae55d&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/index.vue?vue&type=template&id=34aae55d& ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"v-app\", [_vm.data ? _c(\"v-card\", [_c(\"v-card-title\", [_vm._v(\"\\n Administración de Paginas\\n \"), _c(\"v-spacer\"), _vm._v(\" \"), _c(\"v-text-field\", {\n attrs: {\n \"append-icon\": \"mdi-magnify\",\n label: \"Buscar\",\n \"single-line\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.search,\n callback: function callback($$v) {\n _vm.search = $$v;\n },\n expression: \"search\"\n }\n })], 1), _vm._v(\" \"), _c(\"v-data-table\", {\n staticClass: \"elevation-1\",\n attrs: {\n headers: _vm.headers,\n items: _vm.data,\n search: _vm.search\n },\n scopedSlots: _vm._u([{\n key: \"item.link\",\n fn: function fn(_ref) {\n var item = _ref.item;\n return [_c(\"v-btn\", {\n attrs: {\n icon: \"\",\n href: item.slug,\n color: \"primary\",\n target: \"_blank\"\n }\n }, [_c(\"v-icon\", [_vm._v(\"mdi-open-in-new\")])], 1)];\n }\n }, {\n key: \"item.menu\",\n fn: function fn(_ref2) {\n var item = _ref2.item;\n return [_vm._v(\"\\n \" + _vm._s(item.is_menu ? \"Si\" : \"No\") + \"\\n \")];\n }\n }, {\n key: \"item.actions\",\n fn: function fn(_ref3) {\n var item = _ref3.item;\n return [_c(\"v-btn\", {\n attrs: {\n color: \"red\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.edit(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-pencil \")])], 1)];\n }\n }], null, false, 2184112430)\n })], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9wYWdlL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNGFhZTU1ZCYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0EsRUFBRSxDQUNQLE9BQU8sRUFDUCxDQUNFRCxHQUFHLENBQUNHLElBQUksR0FDSkYsRUFBRSxDQUNBLFFBQVEsRUFDUixDQUNFQSxFQUFFLENBQ0EsY0FBYyxFQUNkLENBQ0VELEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLDJDQUEyQyxDQUFDLEVBQ25ESCxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQ2RELEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNYSCxFQUFFLENBQUMsY0FBYyxFQUFFO0lBQ2pCSSxLQUFLLEVBQUU7TUFDTCxhQUFhLEVBQUUsYUFBYTtNQUM1QkMsS0FBSyxFQUFFLFFBQVE7TUFDZixhQUFhLEVBQUUsRUFBRTtNQUNqQixjQUFjLEVBQUU7SUFDbEIsQ0FBQztJQUNEQyxLQUFLLEVBQUU7TUFDTEMsS0FBSyxFQUFFUixHQUFHLENBQUNTLE1BQU07TUFDakJDLFFBQVEsRUFBRSxTQUFBQSxTQUFVQyxHQUFHLEVBQUU7UUFDdkJYLEdBQUcsQ0FBQ1MsTUFBTSxHQUFHRSxHQUFHO01BQ2xCLENBQUM7TUFDREMsVUFBVSxFQUFFO0lBQ2Q7RUFDRixDQUFDLENBQUMsQ0FDSCxFQUNELENBQ0YsQ0FBQyxFQUNEWixHQUFHLENBQUNJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWEgsRUFBRSxDQUFDLGNBQWMsRUFBRTtJQUNqQlksV0FBVyxFQUFFLGFBQWE7SUFDMUJSLEtBQUssRUFBRTtNQUNMUyxPQUFPLEVBQUVkLEdBQUcsQ0FBQ2MsT0FBTztNQUNwQkMsS0FBSyxFQUFFZixHQUFHLENBQUNHLElBQUk7TUFDZk0sTUFBTSxFQUFFVCxHQUFHLENBQUNTO0lBQ2QsQ0FBQztJQUNETyxXQUFXLEVBQUVoQixHQUFHLENBQUNpQixFQUFFLENBQ2pCLENBQ0U7TUFDRUMsR0FBRyxFQUFFLFdBQVc7TUFDaEJDLEVBQUUsRUFBRSxTQUFBQSxHQUFBQyxJQUFBLEVBQW9CO1FBQUEsSUFBUkMsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7UUFDbEIsT0FBTyxDQUNMcEIsRUFBRSxDQUNBLE9BQU8sRUFDUDtVQUNFSSxLQUFLLEVBQUU7WUFDTGlCLElBQUksRUFBRSxFQUFFO1lBQ1JDLElBQUksRUFBRUYsSUFBSSxDQUFDRyxJQUFJO1lBQ2ZDLEtBQUssRUFBRSxTQUFTO1lBQ2hCQyxNQUFNLEVBQUU7VUFDVjtRQUNGLENBQUMsRUFDRCxDQUFDekIsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDRCxHQUFHLENBQUNJLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMzQyxDQUNGLENBQUMsQ0FDRjtNQUNIO0lBQ0YsQ0FBQyxFQUNEO01BQ0VjLEdBQUcsRUFBRSxXQUFXO01BQ2hCQyxFQUFFLEVBQUUsU0FBQUEsR0FBQVEsS0FBQSxFQUFvQjtRQUFBLElBQVJOLElBQUksR0FBQU0sS0FBQSxDQUFKTixJQUFJO1FBQ2xCLE9BQU8sQ0FDTHJCLEdBQUcsQ0FBQ0ksRUFBRSxDQUNKLFlBQVksR0FDVkosR0FBRyxDQUFDNEIsRUFBRSxDQUFDUCxJQUFJLENBQUNRLE9BQU8sR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQ2xDLFVBQ0osQ0FBQyxDQUNGO01BQ0g7SUFDRixDQUFDLEVBQ0Q7TUFDRVgsR0FBRyxFQUFFLGNBQWM7TUFDbkJDLEVBQUUsRUFBRSxTQUFBQSxHQUFBVyxLQUFBLEVBQW9CO1FBQUEsSUFBUlQsSUFBSSxHQUFBUyxLQUFBLENBQUpULElBQUk7UUFDbEIsT0FBTyxDQUNMcEIsRUFBRSxDQUNBLE9BQU8sRUFDUDtVQUNFSSxLQUFLLEVBQUU7WUFDTG9CLEtBQUssRUFBRSxLQUFLO1lBQ1pNLEdBQUcsRUFBRSxFQUFFO1lBQ1AsU0FBUyxFQUFFLEVBQUU7WUFDYkMsSUFBSSxFQUFFO1VBQ1IsQ0FBQztVQUNEQyxFQUFFLEVBQUU7WUFDRkMsS0FBSyxFQUFFLFNBQUFBLE1BQVVDLE1BQU0sRUFBRTtjQUN2QixPQUFPbkMsR0FBRyxDQUFDb0MsSUFBSSxDQUFDZixJQUFJLENBQUNnQixFQUFFLENBQUM7WUFDMUI7VUFDRjtRQUNGLENBQUMsRUFDRCxDQUFDcEMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDRCxHQUFHLENBQUNJLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDeEMsQ0FDRixDQUFDLENBQ0Y7TUFDSDtJQUNGLENBQUMsQ0FDRixFQUNELElBQUksRUFDSixLQUFLLEVBQ0wsVUFDRjtFQUNGLENBQUMsQ0FBQyxDQUNILEVBQ0QsQ0FDRixDQUFDLEdBQ0RKLEdBQUcsQ0FBQ3NDLEVBQUUsQ0FBQyxDQUFDLENBQ2IsRUFDRCxDQUNGLENBQUM7QUFDSCxDQUFDO0FBQ0QsSUFBSUMsZUFBZSxHQUFHLEVBQUU7QUFDeEJ4QyxNQUFNLENBQUN5QyxhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3BhZ2UvaW5kZXgudnVlPzg0NDEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF9jKFxuICAgIFwidi1hcHBcIixcbiAgICBbXG4gICAgICBfdm0uZGF0YVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJ2LWNhcmRcIixcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ2LWNhcmQtdGl0bGVcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICBBZG1pbmlzdHJhY2nDs24gZGUgUGFnaW5hc1xcbiAgICAgIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidi1zcGFjZXJcIiksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJ2LXRleHQtZmllbGRcIiwge1xuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIFwiYXBwZW5kLWljb25cIjogXCJtZGktbWFnbmlmeVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkJ1c2NhclwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwic2luZ2xlLWxpbmVcIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICBcImhpZGUtZGV0YWlsc1wiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VhcmNoID0gJCR2XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlYXJjaFwiLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwidi1kYXRhLXRhYmxlXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbGV2YXRpb24tMVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBoZWFkZXJzOiBfdm0uaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBfdm0uZGF0YSxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaDogX3ZtLnNlYXJjaCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNjb3BlZFNsb3RzOiBfdm0uX3UoXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaXRlbS5saW5rXCIsXG4gICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uICh7IGl0ZW0gfSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2LWJ0blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IGl0ZW0uc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFwiX2JsYW5rXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwidi1pY29uXCIsIFtfdm0uX3YoXCJtZGktb3Blbi1pbi1uZXdcIildKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaXRlbS5tZW51XCIsXG4gICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uICh7IGl0ZW0gfSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoaXRlbS5pc19tZW51ID8gXCJTaVwiIDogXCJOb1wiKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJpdGVtLmFjdGlvbnNcIixcbiAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24gKHsgaXRlbSB9KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInYtYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicmVkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhYjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ4LXNtYWxsXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcms6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmVkaXQoaXRlbS5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX2MoXCJ2LWljb25cIiwgW192bS5fdihcIiBtZGktcGVuY2lsIFwiKV0pXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAyMTg0MTEyNDMwXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwiZGF0YSIsIl92IiwiYXR0cnMiLCJsYWJlbCIsIm1vZGVsIiwidmFsdWUiLCJzZWFyY2giLCJjYWxsYmFjayIsIiQkdiIsImV4cHJlc3Npb24iLCJzdGF0aWNDbGFzcyIsImhlYWRlcnMiLCJpdGVtcyIsInNjb3BlZFNsb3RzIiwiX3UiLCJrZXkiLCJmbiIsIl9yZWYiLCJpdGVtIiwiaWNvbiIsImhyZWYiLCJzbHVnIiwiY29sb3IiLCJ0YXJnZXQiLCJfcmVmMiIsIl9zIiwiaXNfbWVudSIsIl9yZWYzIiwiZmFiIiwiZGFyayIsIm9uIiwiY2xpY2siLCIkZXZlbnQiLCJlZGl0IiwiaWQiLCJfZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/page/index.vue?vue&type=template&id=34aae55d&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/create.vue?vue&type=template&id=a9d0cd4a&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/create.vue?vue&type=template&id=a9d0cd4a& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi92aWRlby9jcmVhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE5ZDBjZDRhJiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPRCxHQUFHLENBQUNHLE1BQU0sR0FDYkYsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDQSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQUVHLEtBQUssRUFBRTtNQUFFRCxNQUFNLEVBQUVILEdBQUcsQ0FBQ0c7SUFBTztFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQy9ESCxHQUFHLENBQUNLLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxFQUFFO0FBQ3hCUCxNQUFNLENBQUNRLGFBQWEsR0FBRyxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vdmlkZW8vY3JlYXRlLnZ1ZT8yMDlmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfdm0uc3VydmV5XG4gICAgPyBfYyhcImRpdlwiLCBbX2MoXCJTdXJ2ZXlcIiwgeyBhdHRyczogeyBzdXJ2ZXk6IF92bS5zdXJ2ZXkgfSB9KV0sIDEpXG4gICAgOiBfdm0uX2UoKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwic3VydmV5IiwiYXR0cnMiLCJfZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/create.vue?vue&type=template&id=a9d0cd4a&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/edit.vue?vue&type=template&id=912715ae&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/edit.vue?vue&type=template&id=912715ae& ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm.survey ? _c(\"div\", [_c(\"Survey\", {\n attrs: {\n survey: _vm.survey\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi92aWRlby9lZGl0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05MTI3MTVhZSYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0QsR0FBRyxDQUFDRyxNQUFNLEdBQ2JGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQ0EsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUFFRyxLQUFLLEVBQUU7TUFBRUQsTUFBTSxFQUFFSCxHQUFHLENBQUNHO0lBQU87RUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUMvREgsR0FBRyxDQUFDSyxFQUFFLENBQUMsQ0FBQztBQUNkLENBQUM7QUFDRCxJQUFJQyxlQUFlLEdBQUcsRUFBRTtBQUN4QlAsTUFBTSxDQUFDUSxhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3ZpZGVvL2VkaXQudnVlPzYyYTgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF92bS5zdXJ2ZXlcbiAgICA/IF9jKFwiZGl2XCIsIFtfYyhcIlN1cnZleVwiLCB7IGF0dHJzOiB7IHN1cnZleTogX3ZtLnN1cnZleSB9IH0pXSwgMSlcbiAgICA6IF92bS5fZSgpXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJzdXJ2ZXkiLCJhdHRycyIsIl9lIiwic3RhdGljUmVuZGVyRm5zIiwiX3dpdGhTdHJpcHBlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/edit.vue?vue&type=template&id=912715ae&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/index.vue?vue&type=template&id=77d9e9c3&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/index.vue?vue&type=template&id=77d9e9c3& ***!
\***********************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"v-app\", [_vm.data ? _c(\"v-card\", [_c(\"v-card-title\", [_vm._v(\"\\n Administración de Videos\\n \"), _c(\"v-spacer\"), _vm._v(\" \"), _c(\"v-text-field\", {\n attrs: {\n \"append-icon\": \"mdi-magnify\",\n label: \"Buscar\",\n \"single-line\": \"\",\n \"hide-details\": \"\"\n },\n model: {\n value: _vm.search,\n callback: function callback($$v) {\n _vm.search = $$v;\n },\n expression: \"search\"\n }\n })], 1), _vm._v(\" \"), _c(\"v-data-table\", {\n staticClass: \"elevation-1\",\n attrs: {\n headers: _vm.headers,\n items: _vm.data,\n search: _vm.search\n },\n scopedSlots: _vm._u([{\n key: \"item.link\",\n fn: function fn(_ref) {\n var item = _ref.item;\n return [_c(\"v-btn\", {\n attrs: {\n icon: \"\",\n href: item.url,\n color: \"primary\",\n target: \"_blank\"\n }\n }, [_c(\"v-icon\", [_vm._v(\"mdi-open-in-new\")])], 1)];\n }\n }, {\n key: \"item.actions\",\n fn: function fn(_ref2) {\n var item = _ref2.item;\n return [_c(\"v-btn\", {\n attrs: {\n color: \"red\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.edit(item.id);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-pencil \")])], 1), _vm._v(\" \"), _c(\"v-btn\", {\n attrs: {\n color: \"warning\",\n fab: \"\",\n \"x-small\": \"\",\n dark: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.trash(item.id, item.name);\n }\n }\n }, [_c(\"v-icon\", [_vm._v(\" mdi-delete \")])], 1)];\n }\n }], null, false, 4289663272)\n })], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi92aWRlby9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzdkOWU5YzMmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9BLEVBQUUsQ0FDUCxPQUFPLEVBQ1AsQ0FDRUQsR0FBRyxDQUFDRyxJQUFJLEdBQ0pGLEVBQUUsQ0FDQSxRQUFRLEVBQ1IsQ0FDRUEsRUFBRSxDQUNBLGNBQWMsRUFDZCxDQUNFRCxHQUFHLENBQUNJLEVBQUUsQ0FBQywwQ0FBMEMsQ0FBQyxFQUNsREgsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUNkRCxHQUFHLENBQUNJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWEgsRUFBRSxDQUFDLGNBQWMsRUFBRTtJQUNqQkksS0FBSyxFQUFFO01BQ0wsYUFBYSxFQUFFLGFBQWE7TUFDNUJDLEtBQUssRUFBRSxRQUFRO01BQ2YsYUFBYSxFQUFFLEVBQUU7TUFDakIsY0FBYyxFQUFFO0lBQ2xCLENBQUM7SUFDREMsS0FBSyxFQUFFO01BQ0xDLEtBQUssRUFBRVIsR0FBRyxDQUFDUyxNQUFNO01BQ2pCQyxRQUFRLEVBQUUsU0FBQUEsU0FBVUMsR0FBRyxFQUFFO1FBQ3ZCWCxHQUFHLENBQUNTLE1BQU0sR0FBR0UsR0FBRztNQUNs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YUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi92aWRlby9pbmRleC52dWU/OWM4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICB2YXIgX3ZtID0gdGhpcyxcbiAgICBfYyA9IF92bS5fc2VsZi5fY1xuICByZXR1cm4gX2MoXG4gICAgXCJ2LWFwcFwiLFxuICAgIFtcbiAgICAgIF92bS5kYXRhXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcInYtY2FyZFwiLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInYtY2FyZC10aXRsZVwiLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgIEFkbWluaXN0cmFjacOzbiBkZSBWaWRlb3NcXG4gICAgICBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInYtc3BhY2VyXCIpLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidi10ZXh0LWZpZWxkXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBcImFwcGVuZC1pY29uXCI6IFwibWRpLW1hZ25pZnlcIixcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJCdXNjYXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBcInNpbmdsZS1saW5lXCI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJoaWRlLWRldGFpbHNcIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNlYXJjaCA9ICQkdlxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzZWFyY2hcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcInYtZGF0YS10YWJsZVwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWxldmF0aW9uLTFcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgaGVhZGVyczogX3ZtLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICBpdGVtczogX3ZtLmRhdGEsXG4gICAgICAgICAgICAgICAgICBzZWFyY2g6IF92bS5zZWFyY2gsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzY29wZWRTbG90czogX3ZtLl91KFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBcIml0ZW0ubGlua1wiLFxuICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAoeyBpdGVtIH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidi1idG5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiBpdGVtLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFwiX2JsYW5rXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwidi1pY29uXCIsIFtfdm0uX3YoXCJtZGktb3Blbi1pbi1uZXdcIildKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiaXRlbS5hY3Rpb25zXCIsXG4gICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uICh7IGl0ZW0gfSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2LWJ0blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwieC1zbWFsbFwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5lZGl0KGl0ZW0uaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwidi1pY29uXCIsIFtfdm0uX3YoXCIgbWRpLXBlbmNpbCBcIildKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInYtYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWI6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwieC1zbWFsbFwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS50cmFzaChpdGVtLmlkLCBpdGVtLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwidi1pY29uXCIsIFtfdm0uX3YoXCIgbWRpLWRlbGV0ZSBcIildKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgNDI4OTY2MzI3MlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsImRhdGEiLCJfdiIsImF0dHJzIiwibGFiZWwiLCJtb2RlbCIsInZhbHVlIiwic2VhcmNoIiwiY2FsbGJhY2siLCIkJHYiLCJleHByZXNzaW9uIiwic3RhdGljQ2xhc3MiLCJoZWFkZXJzIiwiaXRlbXMiLCJzY29wZWRTbG90cyIsIl91Iiwia2V5IiwiZm4iLCJfcmVmIiwiaXRlbSIsImljb24iLCJocmVmIiwidXJsIiwiY29sb3IiLCJ0YXJnZXQiLCJfcmVmMiIsImZhYiIsImRhcmsiLCJvbiIsImNsaWNrIiwiJGV2ZW50IiwiZWRpdCIsImlkIiwidHJhc2giLCJuYW1lIiwiX2UiLCJzdGF0aWNSZW5kZXJGbnMiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/video/index.vue?vue&type=template&id=77d9e9c3&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/BoxColorWidget.vue?vue&type=template&id=34660a72&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/BoxColorWidget.vue?vue&type=template&id=34660a72& ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"div\", {\n staticClass: \"small-box\",\n \"class\": _vm.color ? _vm.color : \"bg-info\"\n }, [_c(\"div\", {\n staticClass: \"inner\"\n }, [_c(\"h3\", [_vm._v(_vm._s(_vm.value ? _vm.value : \"0\"))]), _vm._v(\" \"), _c(\"p\", [_vm._v(_vm._s(_vm.title))])]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"icon\"\n }, [_c(\"i\", {\n staticClass: \"ion\",\n \"class\": _vm.icon ? _vm.icon : \"ion-bookmark\"\n })]), _vm._v(\" \"), _c(\"a\", {\n staticClass: \"small-box-footer\",\n attrs: {\n href: _vm.url ? _vm.url : \"#\"\n }\n }, [_vm._v(_vm._s(_vm.textLink ? _vm.textLink : \"Más información\") + \" \"), _c(\"i\", {\n staticClass: \"fas fa-arrow-circle-right\"\n })])])]);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0JveENvbG9yV2lkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDY2MGE3MiYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0EsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUNmQSxFQUFFLENBQ0EsS0FBSyxFQUNMO0lBQUVFLFdBQVcsRUFBRSxXQUFXO0lBQUUsU0FBT0gsR0FBRyxDQUFDSSxLQUFLLEdBQUdKLEdBQUcsQ0FBQ0ksS0FBSyxHQUFHO0VBQVUsQ0FBQyxFQUN0RSxDQUNFSCxFQUFFLENBQUMsS0FBSyxFQUFFO0lBQUVFLFdBQVcsRUFBRTtFQUFRLENBQUMsRUFBRSxDQUNsQ0YsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDRCxHQUFHLENBQUNLLEVBQUUsQ0FBQ0wsR0FBRyxDQUFDTSxFQUFFLENBQUNOLEdBQUcsQ0FBQ08sS0FBSyxHQUFHUCxHQUFHLENBQUNPLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDdkRQLEdBQUcsQ0FBQ0ssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNYSixFQUFFLENBQUMsR0FBRyxFQUFFLENBQUNELEdBQUcsQ0FBQ0ssRUFBRSxDQUFDTCxHQUFHLENBQUNNLEVBQUUsQ0FBQ04sR0FBRyxDQUFDUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDckMsQ0FBQyxFQUNGUixHQUFHLENBQUNLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWEosRUFBRSxDQUFDLEtBQUssRUFBRTtJQUFFRSxXQUFXLEVBQUU7RUFBTyxDQUFDLEVBQUUsQ0FDakNGLEVBQUUsQ0FBQyxHQUFHLEVBQUU7SUFDTkUsV0FBVyxFQUFFLEtBQUs7SUFDbEIsU0FBT0gsR0FBRyxDQUFDUyxJQUFJLEdBQUdULEdBQUcsQ0FBQ1MsSUFBSSxHQUFHO0VBQy9CLENBQUMsQ0FBQyxDQUNILENBQUMsRUFDRlQsR0FBRyxDQUFDSyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ1hKLEVBQUUsQ0FDQSxHQUFHLEVBQ0g7SUFDRUUsV0FBVyxFQUFFLGtCQUFrQjtJQUMvQk8sS0FBSyxFQUFFO01BQUVDLElBQUksRUFBRVgsR0FBRyxDQUFDWSxHQUFHLEdBQUdaLEdBQUcsQ0FBQ1ksR0FBRyxHQUFHO0lBQUk7RUFDekMsQ0FBQyxFQUNELENBQ0VaLEdBQUcsQ0FBQ0ssRUFBRSxDQUNKTCxHQUFHLENBQUNNLEVBQUUsQ0FBQ04sR0FBRyxDQUFDYSxRQUFRLEdBQUdiLEdBQUcsQ0FBQ2EsUUFBUSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsR0FDNUQsQ0FBQyxFQUNEWixFQUFFLENBQUMsR0FBRyxFQUFFO0lBQUVFLFdBQVcsRUFBRTtFQUE0QixDQUFDLENBQUMsQ0FFekQsQ0FBQyxDQUVMLENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUNELElBQUlXLGVBQWUsR0FBRyxFQUFFO0FBQ3hCZixNQUFNLENBQUNnQixhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3dpZGdldHMvQm94Q29sb3JXaWRnZXQudnVlP2RiZDEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIF92bSA9IHRoaXMsXG4gICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7IHN0YXRpY0NsYXNzOiBcInNtYWxsLWJveFwiLCBjbGFzczogX3ZtLmNvbG9yID8gX3ZtLmNvbG9yIDogXCJiZy1pbmZvXCIgfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJpbm5lclwiIH0sIFtcbiAgICAgICAgICBfYyhcImgzXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS52YWx1ZSA/IF92bS52YWx1ZSA6IFwiMFwiKSldKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwicFwiLCBbX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKV0pLFxuICAgICAgICBdKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJpY29uXCIgfSwgW1xuICAgICAgICAgIF9jKFwiaVwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpb25cIixcbiAgICAgICAgICAgIGNsYXNzOiBfdm0uaWNvbiA/IF92bS5pY29uIDogXCJpb24tYm9va21hcmtcIixcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInNtYWxsLWJveC1mb290ZXJcIixcbiAgICAgICAgICAgIGF0dHJzOiB7IGhyZWY6IF92bS51cmwgPyBfdm0udXJsIDogXCIjXCIgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgX3ZtLl9zKF92bS50ZXh0TGluayA/IF92bS50ZXh0TGluayA6IFwiTcOhcyBpbmZvcm1hY2nDs25cIikgKyBcIiBcIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImZhcyBmYS1hcnJvdy1jaXJjbGUtcmlnaHRcIiB9KSxcbiAgICAgICAgICBdXG4gICAgICAgICksXG4gICAgICBdXG4gICAgKSxcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN0YXRpY0NsYXNzIiwiY29sb3IiLCJfdiIsIl9zIiwidmFsdWUiLCJ0aXRsZSIsImljb24iLCJhdHRycyIsImhyZWYiLCJ1cmwiLCJ0ZXh0TGluayIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/BoxColorWidget.vue?vue&type=template&id=34660a72&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/ChartWidget.vue?vue&type=template&id=3bb034c7&":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/ChartWidget.vue?vue&type=template&id=3bb034c7& ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"div\", {\n staticClass: \"card\",\n \"class\": _vm.className\n }, [_c(\"div\", {\n staticClass: \"card-header\"\n }, [_c(\"h3\", {\n staticClass: \"card-title\"\n }, [_c(\"i\", {\n staticClass: \"fas fa-chart-pie mr-1\"\n }), _vm._v(\"\\n \" + _vm._s(_vm.title) + \"\\n \")])]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"card-body\"\n }, [_c(\"div\", {\n staticClass: \"chart\",\n staticStyle: {\n position: \"relative\"\n },\n style: {\n height: _vm.height + \"px\"\n },\n attrs: {\n id: \"revenue-chart\"\n }\n }, [_c(\"canvas\", {\n style: {\n height: _vm.height + \"px\"\n },\n attrs: {\n id: _vm.id,\n height: _vm.height\n }\n })])])])]);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0NoYXJ0V2lkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYmIwMzRjNyYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0EsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUNmQSxFQUFFLENBQUMsS0FBSyxFQUFFO0lBQUVFLFdBQVcsRUFBRSxNQUFNO0lBQUUsU0FBT0gsR0FBRyxDQUFDSTtFQUFVLENBQUMsRUFBRSxDQUN2REgsRUFBRSxDQUFDLEtBQUssRUFBRTtJQUFFRSxXQUFXLEVBQUU7RUFBYyxDQUFDLEVBQUUsQ0FDeENGLEVBQUUsQ0FBQyxJQUFJLEVBQUU7SUFBRUUsV0FBVyxFQUFFO0VBQWEsQ0FBQyxFQUFFLENBQ3RDRixFQUFFLENBQUMsR0FBRyxFQUFFO0lBQUVFLFdBQVcsRUFBRTtFQUF3QixDQUFDLENBQUMsRUFDakRILEdBQUcsQ0FBQ0ssRUFBRSxDQUFDLG9CQUFvQixHQUFHTCxHQUFHLENBQUNNLEVBQUUsQ0FBQ04sR0FBRyxDQUFDTyxLQUFLLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUNwRSxDQUFDLENBQ0gsQ0FBQyxFQUNGUCxHQUFHLENBQUNLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWEosRUFBRSxDQUFDLEtBQUssRUFBRTtJQUFFRSxXQUFXLEVBQUU7RUFBWSxDQUFDLEVBQUUsQ0FDdENGLEVBQUUsQ0FDQSxLQUFLLEVBQ0w7SUFDRUUsV0FBVyxFQUFFLE9BQU87SUFDcEJLLFdBQVcsRUFBRTtNQUFFQyxRQUFRLEVBQUU7SUFBVyxDQUFDO0lBQ3JDQyxLQUFLLEVBQUU7TUFBRUMsTUFBTSxFQUFFWCxHQUFHLENBQUNXLE1BQU0sR0FBRztJQUFLLENBQUM7SUFDcENDLEtBQUssRUFBRTtNQUFFQyxFQUFFLEVBQUU7SUFBZ0I7RUFDL0IsQ0FBQyxFQUNELENBQ0VaLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDWFMsS0FBSyxFQUFFO01BQUVDLE1BQU0sRUFBRVgsR0FBRyxDQUFDVyxNQUFNLEdBQUc7SUFBSyxDQUFDO0lBQ3BDQyxLQUFLLEVBQUU7TUFBRUMsRUFBRSxFQUFFYixHQUFHLENBQUNhLEVBQUU7TUFBRUYsTUFBTSxFQUFFWCxHQUFHLENBQUNXO0lBQU87RUFDMUMsQ0FBQyxDQUFDLENBRU4sQ0FBQyxDQUNGLENBQUMsQ0FDSCxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFDRCxJQUFJRyxlQUFlLEdBQUcsRUFBRTtBQUN4QmYsTUFBTSxDQUFDZ0IsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0NoYXJ0V2lkZ2V0LnZ1ZT8yYzVlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfYyhcImRpdlwiLCBbXG4gICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkXCIsIGNsYXNzOiBfdm0uY2xhc3NOYW1lIH0sIFtcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZC1oZWFkZXJcIiB9LCBbXG4gICAgICAgIF9jKFwiaDNcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkLXRpdGxlXCIgfSwgW1xuICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImZhcyBmYS1jaGFydC1waWUgbXItMVwiIH0pLFxuICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgICAgICAgICAgICBcIiArIF92bS5fcyhfdm0udGl0bGUpICsgXCJcXG4gICAgICAgICAgICBcIiksXG4gICAgICAgIF0pLFxuICAgICAgXSksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkLWJvZHlcIiB9LCBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiY2hhcnRcIixcbiAgICAgICAgICAgIHN0YXRpY1N0eWxlOiB7IHBvc2l0aW9uOiBcInJlbGF0aXZlXCIgfSxcbiAgICAgICAgICAgIHN0eWxlOiB7IGhlaWdodDogX3ZtLmhlaWdodCArIFwicHhcIiB9LFxuICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwicmV2ZW51ZS1jaGFydFwiIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcImNhbnZhc1wiLCB7XG4gICAgICAgICAgICAgIHN0eWxlOiB7IGhlaWdodDogX3ZtLmhlaWdodCArIFwicHhcIiB9LFxuICAgICAgICAgICAgICBhdHRyczogeyBpZDogX3ZtLmlkLCBoZWlnaHQ6IF92bS5oZWlnaHQgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJfYyIsIl9zZWxmIiwic3RhdGljQ2xhc3MiLCJjbGFzc05hbWUiLCJfdiIsIl9zIiwidGl0bGUiLCJzdGF0aWNTdHlsZSIsInBvc2l0aW9uIiwic3R5bGUiLCJoZWlnaHQiLCJhdHRycyIsImlkIiwic3RhdGljUmVuZGVyRm5zIiwiX3dpdGhTdHJpcHBlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/ChartWidget.vue?vue&type=template&id=3bb034c7&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/FooterWidget.vue?vue&type=template&id=bf415dec&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/FooterWidget.vue?vue&type=template&id=bf415dec& ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _vm._m(0);\n};\nvar staticRenderFns = [function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"footer\", {\n staticClass: \"main-footer\"\n }, [_c(\"strong\", [_vm._v(\"Copyright © 2023 Panel de Administración Escuela de la Participación.\")]), _vm._v(\"\\n Todos los derechos reservados.\\n \"), _c(\"div\", {\n staticClass: \"float-right d-none d-sm-inline-block\"\n }, [_c(\"b\", [_vm._v(\"Version\")]), _vm._v(\" 1.0.0\")])])]);\n}];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0Zvb3RlcldpZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YmY0MTVkZWMmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9ELEdBQUcsQ0FBQ0csRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBQ0QsSUFBSUMsZUFBZSxHQUFHLENBQ3BCLFlBQVk7RUFDVixJQUFJSixHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9BLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FDZkEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUFFSSxXQUFXLEVBQUU7RUFBYyxDQUFDLEVBQUUsQ0FDM0NKLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FDWEQsR0FBRyxDQUFDTSxFQUFFLENBQ0osdUVBQ0YsQ0FBQyxDQUNGLENBQUMsRUFDRk4sR0FBRyxDQUFDTSxFQUFFLENBQUMsb0RBQW9ELENBQUMsRUFDNURMLEVBQUUsQ0FBQyxLQUFLLEVBQUU7SUFBRUksV0FBVyxFQUFFO0VBQXVDLENBQUMsRUFBRSxDQUNqRUosRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDRCxHQUFHLENBQUNNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQzVCTixHQUFHLENBQUNNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FDakIsQ0FBQyxDQUNILENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUNGO0FBQ0RQLE1BQU0sQ0FBQ1EsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0Zvb3RlcldpZGdldC52dWU/MDNmZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICB2YXIgX3ZtID0gdGhpcyxcbiAgICBfYyA9IF92bS5fc2VsZi5fY1xuICByZXR1cm4gX3ZtLl9tKDApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW1xuICBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF92bSA9IHRoaXMsXG4gICAgICBfYyA9IF92bS5fc2VsZi5fY1xuICAgIHJldHVybiBfYyhcImRpdlwiLCBbXG4gICAgICBfYyhcImZvb3RlclwiLCB7IHN0YXRpY0NsYXNzOiBcIm1haW4tZm9vdGVyXCIgfSwgW1xuICAgICAgICBfYyhcInN0cm9uZ1wiLCBbXG4gICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgXCJDb3B5cmlnaHQgwqkgMjAyMyBQYW5lbCBkZSBBZG1pbmlzdHJhY2nDs24gRXNjdWVsYSBkZSBsYSBQYXJ0aWNpcGFjacOzbi5cIlxuICAgICAgICAgICksXG4gICAgICAgIF0pLFxuICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgIFRvZG9zIGxvcyBkZXJlY2hvcyByZXNlcnZhZG9zLlxcbiAgICAgICAgXCIpLFxuICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImZsb2F0LXJpZ2h0IGQtbm9uZSBkLXNtLWlubGluZS1ibG9ja1wiIH0sIFtcbiAgICAgICAgICBfYyhcImJcIiwgW192bS5fdihcIlZlcnNpb25cIildKSxcbiAgICAgICAgICBfdm0uX3YoXCIgMS4wLjBcIiksXG4gICAgICAgIF0pLFxuICAgICAgXSksXG4gICAgXSlcbiAgfSxcbl1cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJfbSIsInN0YXRpY1JlbmRlckZucyIsInN0YXRpY0NsYXNzIiwiX3YiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/FooterWidget.vue?vue&type=template&id=bf415dec&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/HeaderWidget.vue?vue&type=template&id=c2c11108&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/HeaderWidget.vue?vue&type=template&id=c2c11108& ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"div\", {\n staticClass: \"content-header\"\n }, [_c(\"div\", {\n staticClass: \"container-fluid\"\n }, [_c(\"div\", {\n staticClass: \"row mb-2\"\n }, [_c(\"div\", {\n staticClass: \"col-sm-6\"\n }, [_c(\"h1\", {\n staticClass: \"m-0\"\n }, [_vm._v(_vm._s(_vm.title))])]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"col-sm-6\"\n }, [_c(\"ol\", {\n staticClass: \"breadcrumb float-sm-right\"\n }, _vm._l(_vm.breadcrumbs, function (page) {\n return _c(\"li\", {\n staticClass: \"breadcrumb-item\"\n }, [_c(\"router-link\", {\n attrs: {\n tag: page.url == \"#\" ? \"span\" : \"a\",\n to: page.url\n }\n }, [_vm._v(\"\\n \" + _vm._s(page.text) + \"\\n \")])], 1);\n }), 0)])])])])]);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0hlYWRlcldpZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YzJjMTExMDgmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9BLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FDZkEsRUFBRSxDQUFDLEtBQUssRUFBRTtJQUFFRSxXQUFXLEVBQUU7RUFBaUIsQ0FBQyxFQUFFLENBQzNDRixFQUFFLENBQUMsS0FBSyxFQUFFO0lBQUVFLFdBQVcsRUFBRTtFQUFrQixDQUFDLEVBQUUsQ0FDNUNGLEVBQUUsQ0FBQyxLQUFLLEVBQUU7SUFBRUUsV0FBVyxFQUFFO0VBQVcsQ0FBQyxFQUFFLENBQ3JDRixFQUFFLENBQUMsS0FBSyxFQUFFO0lBQUVFLFdBQVcsRUFBRTtFQUFXLENBQUMsRUFBRSxDQUNyQ0YsRUFBRSxDQUFDLElBQUksRUFBRTtJQUFFRSxXQUFXLEVBQUU7RUFBTSxDQUFDLEVBQUUsQ0FBQ0gsR0FBRyxDQUFDSSxFQUFFLENBQUNKLEdBQUcsQ0FBQ0ssRUFBRSxDQUFDTCxHQUFHLENBQUNNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM5RCxDQUFDLEVBQ0ZOLEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNYSCxFQUFFLENBQUMsS0FBSyxFQUFFO0lBQUVFLFdBQVcsRUFBRTtFQUFXLENBQUMsRUFBRSxDQUNyQ0YsRUFBRSxDQUNBLElBQUksRUFDSjtJQUFFRSxXQUFXLEVBQUU7RUFBNEIsQ0FBQyxFQUM1Q0gsR0FBRyxDQUFDTyxFQUFFLENBQUNQLEdBQUcsQ0FBQ1EsV0FBVyxFQUFFLFVBQVVDLElBQUksRUFBRTtJQUN0QyxPQUFPUixFQUFFLENBQ1AsSUFBSSxFQUNKO01BQUVFLFdBQVcsRUFBRTtJQUFrQixDQUFDLEVBQ2xDLENBQ0VGLEVBQUUsQ0FDQSxhQUFhLEVBQ2I7TUFDRVMsS0FBSyxFQUFFO1FBQ0xDLEdBQUcsRUFBRUYsSUFBSSxDQUFDRyxHQUFHLElBQUksR0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFHO1FBQ25DQyxFQUFFLEVBQUVKLElBQUksQ0FBQ0c7TUFDWDtJQUNGLENBQUMsRUFDRCxDQUNFWixHQUFHLENBQUNJLEVBQUUsQ0FDSixnQ0FBZ0MsR0FDOUJKLEdBQUcsQ0FBQ0ssRUFBRSxDQUFDSSxJQUFJLENBQUNLLElBQUksQ0FBQyxHQUNqQixnQ0FDSixDQUFDLENBRUwsQ0FBQyxDQUNGLEVBQ0QsQ0FDRixDQUFDO0VBQ0gsQ0FBQyxDQUFDLEVBQ0YsQ0FDRixDQUFDLENBQ0YsQ0FBQyxDQUNILENBQUMsQ0FDSCxDQUFDLENBQ0gsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDO0FBQ0QsSUFBSUMsZUFBZSxHQUFHLEVBQUU7QUFDeEJoQixNQUFNLENBQUNpQixhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3dpZGdldHMvSGVhZGVyV2lkZ2V0LnZ1ZT80N2I4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfYyhcImRpdlwiLCBbXG4gICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjb250ZW50LWhlYWRlclwiIH0sIFtcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY29udGFpbmVyLWZsdWlkXCIgfSwgW1xuICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInJvdyBtYi0yXCIgfSwgW1xuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY29sLXNtLTZcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImgxXCIsIHsgc3RhdGljQ2xhc3M6IFwibS0wXCIgfSwgW192bS5fdihfdm0uX3MoX3ZtLnRpdGxlKSldKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY29sLXNtLTZcIiB9LCBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJvbFwiLFxuICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImJyZWFkY3J1bWIgZmxvYXQtc20tcmlnaHRcIiB9LFxuICAgICAgICAgICAgICBfdm0uX2woX3ZtLmJyZWFkY3J1bWJzLCBmdW5jdGlvbiAocGFnZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiYnJlYWRjcnVtYi1pdGVtXCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJyb3V0ZXItbGlua1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogcGFnZS51cmwgPT0gXCIjXCIgPyBcInNwYW5cIiA6IFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogcGFnZS51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKHBhZ2UudGV4dCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN0YXRpY0NsYXNzIiwiX3YiLCJfcyIsInRpdGxlIiwiX2wiLCJicmVhZGNydW1icyIsInBhZ2UiLCJhdHRycyIsInRhZyIsInVybCIsInRvIiwidGV4dCIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/HeaderWidget.vue?vue&type=template&id=c2c11108&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/IframeGroupWidget.vue?vue&type=template&id=aeeb5db8&":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/IframeGroupWidget.vue?vue&type=template&id=aeeb5db8& ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n staticClass: \"row\"\n }, _vm._l(_vm.iframes, function (iframe) {\n return _c(\"div\", {\n \"class\": iframe.columns\n }, [_c(\"div\", {\n staticClass: \"card\",\n \"class\": _vm.className,\n attrs: {\n id: iframe.slug\n }\n }, [_c(\"div\", {\n staticClass: \"card-header\"\n }, [_c(\"h3\", {\n staticClass: \"card-title\"\n }, [_c(\"i\", {\n staticClass: \"fas mr-1\",\n \"class\": _vm.icon\n }), _vm._v(\"\\n \" + _vm._s(iframe.name) + \"\\n \")])]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"card-body\"\n }, [_c(\"div\", {\n staticClass: \"content-iframe\",\n domProps: {\n innerHTML: _vm._s(iframe.content_iframe)\n }\n })])])]);\n }), 0);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0lmcmFtZUdyb3VwV2lkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hZWViNWRiOCYiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUcsU0FBU0EsTUFBTUEsQ0FBQSxFQUFHO0VBQzdCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0lBQ1pDLEVBQUUsR0FBR0QsR0FBRyxDQUFDRSxLQUFLLENBQUNELEVBQUU7RUFDbkIsT0FBT0EsRUFBRSxDQUNQLEtBQUssRUFDTDtJQUFFRSxXQUFXLEVBQUU7RUFBTSxDQUFDLEVBQ3RCSCxHQUFHLENBQUNJLEVBQUUsQ0FBQ0osR0FBRyxDQUFDSyxPQUFPLEVBQUUsVUFBVUMsTUFBTSxFQUFFO0lBQ3BDLE9BQU9MLEVBQUUsQ0FBQyxLQUFLLEVBQUU7TUFBRSxTQUFPSyxNQUFNLENBQUNDO0lBQVEsQ0FBQyxFQUFFLENBQzFDTixFQUFFLENBQ0EsS0FBSyxFQUNMO01BQ0VFLFdBQVcsRUFBRSxNQUFNO01BQ25CLFNBQU9ILEdBQUcsQ0FBQ1EsU0FBUztNQUNwQkMsS0FBSyxFQUFFO1FBQUVDLEVBQUUsRUFBRUosTUFBTSxDQUFDSztNQUFLO0lBQzNCLENBQUMsRUFDRCxDQUNFVixFQUFFLENBQUMsS0FBSyxFQUFFO01BQUVFLFdBQVcsRUFBRTtJQUFjLENBQUMsRUFBRSxDQUN4Q0YsRUFBRSxDQUFDLElBQUksRUFBRTtNQUFFRSxXQUFXLEVBQUU7SUFBYSxDQUFDLEVBQUUsQ0FDdENGLEVBQUUsQ0FBQyxHQUFHLEVBQUU7TUFBRUUsV0FBVyxFQUFFLFVBQVU7TUFBRSxTQUFPSCxHQUFHLENBQUNZO0lBQUssQ0FBQyxDQUFDLEVBQ3JEWixHQUFHLENBQUNhLEVBQUUsQ0FDSix3QkFBd0IsR0FDdEJiLEdBQUcsQ0FBQ2MsRUFBRSxDQUFDUixNQUFNLENBQUNTLElBQUksQ0FBQyxHQUNuQixvQkFDSixDQUFDLENBQ0YsQ0FBQyxDQUNILENBQUMsRUFDRmYsR0FBRyxDQUFDYSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQ1haLEVBQUUsQ0FBQyxLQUFLLEVBQUU7TUFBRUUsV0FBVyxFQUFFO0lBQVksQ0FBQyxFQUFFLENBQ3RDRixFQUFFLENBQUMsS0FBSyxFQUFFO01BQ1JFLFdBQVcsRUFBRSxnQkFBZ0I7TUFDN0JhLFFBQVEsRUFBRTtRQUFFQyxTQUFTLEVBQUVqQixHQUFHLENBQUNjLEVBQUUsQ0FBQ1IsTUFBTSxDQUFDWSxjQUFjO01BQUU7SUFDdkQsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxDQUVOLENBQUMsQ0FDRixDQUFDO0VBQ0osQ0FBQyxDQUFDLEVBQ0YsQ0FDRixDQUFDO0FBQ0gsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxFQUFFO0FBQ3hCcEIsTUFBTSxDQUFDcUIsYUFBYSxHQUFHLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL0lmcmFtZUdyb3VwV2lkZ2V0LnZ1ZT9jMWEzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwicm93XCIgfSxcbiAgICBfdm0uX2woX3ZtLmlmcmFtZXMsIGZ1bmN0aW9uIChpZnJhbWUpIHtcbiAgICAgIHJldHVybiBfYyhcImRpdlwiLCB7IGNsYXNzOiBpZnJhbWUuY29sdW1ucyB9LCBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiY2FyZFwiLFxuICAgICAgICAgICAgY2xhc3M6IF92bS5jbGFzc05hbWUsXG4gICAgICAgICAgICBhdHRyczogeyBpZDogaWZyYW1lLnNsdWcgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZC1oZWFkZXJcIiB9LCBbXG4gICAgICAgICAgICAgIF9jKFwiaDNcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkLXRpdGxlXCIgfSwgW1xuICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImZhcyBtci0xXCIsIGNsYXNzOiBfdm0uaWNvbiB9KSxcbiAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3MoaWZyYW1lLm5hbWUpICtcbiAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZC1ib2R5XCIgfSwgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiY29udGVudC1pZnJhbWVcIixcbiAgICAgICAgICAgICAgICBkb21Qcm9wczogeyBpbm5lckhUTUw6IF92bS5fcyhpZnJhbWUuY29udGVudF9pZnJhbWUpIH0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgXSlcbiAgICB9KSxcbiAgICAwXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN0YXRpY0NsYXNzIiwiX2wiLCJpZnJhbWVzIiwiaWZyYW1lIiwiY29sdW1ucyIsImNsYXNzTmFtZSIsImF0dHJzIiwiaWQiLCJzbHVnIiwiaWNvbiIsIl92IiwiX3MiLCJuYW1lIiwiZG9tUHJvcHMiLCJpbm5lckhUTUwiLCJjb250ZW50X2lmcmFtZSIsInN0YXRpY1JlbmRlckZucyIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/IframeGroupWidget.vue?vue&type=template&id=aeeb5db8&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/NavbarWidget.vue?vue&type=template&id=0c01e93f&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/NavbarWidget.vue?vue&type=template&id=0c01e93f& ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"nav\", {\n staticClass: \"main-header navbar navbar-expand navbar-white navbar-light\"\n }, [_c(\"ul\", {\n staticClass: \"navbar-nav\"\n }, [_vm._m(0), _vm._v(\" \"), _c(\"li\", {\n staticClass: \"nav-item d-none d-sm-inline-block\"\n }, [_c(\"a\", {\n staticClass: \"nav-link\"\n }, [_vm._v(_vm._s(_vm.$appName))])])]), _vm._v(\" \"), _c(\"ul\", {\n staticClass: \"navbar-nav ml-auto\"\n }, [_vm._m(1), _vm._v(\" \"), _vm._m(2), _vm._v(\" \"), _vm._m(3), _vm._v(\" \"), _vm.UserData != null ? _c(\"li\", {\n staticClass: \"nav-item\"\n }, [_c(\"div\", {\n staticClass: \"dropdown\"\n }, [_vm._m(4), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"dropdown-menu\",\n attrs: {\n \"aria-labelledby\": \"dropdownMenuLink\"\n }\n }, _vm._l(_vm.modules, function (mod) {\n return _c(\"a\", {\n staticClass: \"dropdown-item\",\n attrs: {\n href: mod.url_login\n }\n }, [_vm._v(\"\\n \" + _vm._s(mod.name) + \"\\n \")]);\n }), 0)])]) : _vm._e(), _vm._v(\" \"), _c(\"li\", {\n staticClass: \"nav-item\"\n }, [_vm.UserData != null ? _c(\"a\", {\n staticClass: \"nav-link\",\n attrs: {\n href: \"javascript:;\",\n role: \"button\"\n }\n }, [_c(\"b\", [_vm._v(_vm._s(_vm.UserData.name))])]) : _vm._e()]), _vm._v(\" \"), _vm.UserData != null ? _c(\"li\", {\n staticClass: \"nav-item\"\n }, [_c(\"a\", {\n staticClass: \"nav-link\",\n attrs: {\n href: \"javascript:;\",\n title: \"Cerrar sesión\"\n },\n on: {\n click: function click($event) {\n return _vm.LogOut();\n }\n }\n }, [_c(\"i\", {\n staticClass: \"fas fa-sign-out-alt\"\n })])]) : _vm._e(), _vm._v(\" \"), _vm.UserData == null ? _c(\"li\", {\n staticClass: \"nav-item\"\n }, [_vm._m(5)]) : _vm._e()])])]);\n};\nvar staticRenderFns = [function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"li\", {\n staticClass: \"nav-item\"\n }, [_c(\"a\", {\n staticClass: \"nav-link\",\n attrs: {\n \"data-widget\": \"pushmenu\",\n href: \"#\",\n role: \"button\"\n }\n }, [_c(\"i\", {\n staticClass: \"fas fa-bars\"\n })])]);\n}, function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"li\", {\n staticClass: \"nav-item\"\n }, [_c(\"a\", {\n staticClass: \"nav-link nav-link-platforms red btn-decrease\",\n attrs: {\n href: \"javascript:;\",\n title: \"Disminuir tamaño de letra\"\n }\n }, [_c(\"b\", [_vm._v(\"A-\")])])]);\n}, function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"li\", {\n staticClass: \"nav-item\"\n }, [_c(\"a\", {\n staticClass: \"nav-link nav-link-platforms red btn-increment\",\n attrs: {\n href: \"javascript:;\",\n title: \"Aumentar tamaño de letra\"\n }\n }, [_c(\"b\", [_vm._v(\"A+\")])])]);\n}, function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"li\", {\n staticClass: \"nav-item\"\n }, [_c(\"a\", {\n staticClass: \"nav-link nav-link-platforms black btn-contrast\",\n attrs: {\n href: \"javascript:;\",\n title: \"Cambiar contraste\"\n }\n }, [_c(\"i\", {\n staticClass: \"fas fa-adjust\"\n })])]);\n}, function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"a\", {\n staticClass: \"btn dropdown-toggle\",\n attrs: {\n href: \"#\",\n role: \"button\",\n id: \"dropdownMenuLink\",\n \"data-toggle\": \"dropdown\",\n \"aria-haspopup\": \"true\",\n \"aria-expanded\": \"false\"\n }\n }, [_c(\"b\", [_vm._v(\"Módulos\")])]);\n}, function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"a\", {\n staticClass: \"nav-link\",\n attrs: {\n href: \"/login\"\n }\n }, [_c(\"b\", [_vm._v(\"Iniciar sesión\")])]);\n}];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL05hdmJhcldpZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGMwMWU5M2YmIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsTUFBTSxHQUFHLFNBQVNBLE1BQU1BLENBQUEsRUFBRztFQUM3QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9BLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FDZkEsRUFBRSxDQUNBLEtBQUssRUFDTDtJQUNFRSxXQUFXLEVBQ1Q7RUFDSixDQUFDLEVBQ0QsQ0FDRUYsRUFBRSxDQUFDLElBQUksRUFBRTtJQUFFRSxXQUFXLEVBQUU7RUFBYSxDQUFDLEVBQUUsQ0FDdENILEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNUSixHQUFHLENBQUNLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWEosRUFBRSxDQUFDLElBQUksRUFBRTtJQUFFRSxXQUFXLEVBQUU7RUFBb0MsQ0FBQyxFQUFFLENBQzdERixFQUFFLENBQUMsR0FBRyxFQUFFO0lBQUVFLFdBQVcsRUFBRTtFQUFXLENBQUMsRUFBRSxDQUNuQ0gsR0FBRyxDQUFDSyxFQUFFLENBQUNMLEdBQUcsQ0FBQ00sRUFBRSxDQUFDTixHQUFHLENBQUNPLFFBQVEsQ0FBQyxDQUFDLENBQzdCLENBQUMsQ0FDSCxDQUFDLENBQ0gsQ0FBQyxFQUNGUCxHQUFHLENB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QUFFRSxXQUFXLEVBQUU7RUFBZ0IsQ0FBQyxDQUFDLENBQzVDLENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxFQUNELFlBQVk7RUFDVixJQUFJSCxHQUFHLEdBQUcsSUFBSTtJQUNaQyxFQUFFLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQ25CLE9BQU9BLEVBQUUsQ0FDUCxHQUFHLEVBQ0g7SUFDRUUsV0FBVyxFQUFFLHFCQUFxQjtJQUNsQ00sS0FBSyxFQUFFO01BQ0xJLElBQUksRUFBRSxHQUFHO01BQ1RJLElBQUksRUFBRSxRQUFRO01BQ2RPLEVBQUUsRUFBRSxrQkFBa0I7TUFDdEIsYUFBYSxFQUFFLFVBQVU7TUFDekIsZUFBZSxFQUFFLE1BQU07TUFDdkIsZUFBZSxFQUFFO0lBQ25CO0VBQ0YsQ0FBQyxFQUNELENBQUN2QixFQUFFLENBQUMsR0FBRyxFQUFFLENBQUNELEdBQUcsQ0FBQ0ssRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDL0IsQ0FBQztBQUNILENBQUMsRUFDRCxZQUFZO0VBQ1YsSUFBSUwsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPQSxFQUFFLENBQUMsR0FBRyxFQUFFO0lBQUVFLFdBQVcsRUFBRSxVQUFVO0lBQUVNLEtBQUssRUFBRTtNQUFFSSxJQUFJLEVBQUU7SUFBUztFQUFFLENBQUMsRUFBRSxDQUNyRVosRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDRCxHQUFHLENBQUNLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FDcEMsQ0FBQztBQUNKLENBQUMsQ0FDRjtBQUNETixNQUFNLENBQUMwQixhQUFhLEdBQUcsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3dpZGdldHMvTmF2YmFyV2lkZ2V0LnZ1ZT83ODNmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gIHZhciBfdm0gPSB0aGlzLFxuICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gIHJldHVybiBfYyhcImRpdlwiLCBbXG4gICAgX2MoXG4gICAgICBcIm5hdlwiLFxuICAgICAge1xuICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICBcIm1haW4taGVhZGVyIG5hdmJhciBuYXZiYXItZXhwYW5kIG5hdmJhci13aGl0ZSBuYXZiYXItbGlnaHRcIixcbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIF9jKFwidWxcIiwgeyBzdGF0aWNDbGFzczogXCJuYXZiYXItbmF2XCIgfSwgW1xuICAgICAgICAgIF92bS5fbSgwKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwibGlcIiwgeyBzdGF0aWNDbGFzczogXCJuYXYtaXRlbSBkLW5vbmUgZC1zbS1pbmxpbmUtYmxvY2tcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImFcIiwgeyBzdGF0aWNDbGFzczogXCJuYXYtbGlua1wiIH0sIFtcbiAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uJGFwcE5hbWUpKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ1bFwiLCB7IHN0YXRpY0NsYXNzOiBcIm5hdmJhci1uYXYgbWwtYXV0b1wiIH0sIFtcbiAgICAgICAgICBfdm0uX20oMSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uX20oMiksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uX20oMyksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uVXNlckRhdGEgIT0gbnVsbFxuICAgICAgICAgICAgPyBfYyhcImxpXCIsIHsgc3RhdGljQ2xhc3M6IFwibmF2LWl0ZW1cIiB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJkcm9wZG93blwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF92bS5fbSg0KSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImRyb3Bkb3duLW1lbnVcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBcImFyaWEtbGFiZWxsZWRieVwiOiBcImRyb3Bkb3duTWVudUxpbmtcIiB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLm1vZHVsZXMsIGZ1bmN0aW9uIChtb2QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZHJvcGRvd24taXRlbVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBocmVmOiBtb2QudXJsX2xvZ2luIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKG1vZC5uYW1lKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImxpXCIsIHsgc3RhdGljQ2xhc3M6IFwibmF2LWl0ZW1cIiB9LCBbXG4gICAgICAgICAgICBfdm0uVXNlckRhdGEgIT0gbnVsbFxuICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm5hdi1saW5rXCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGhyZWY6IFwiamF2YXNjcmlwdDo7XCIsIHJvbGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbX2MoXCJiXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS5Vc2VyRGF0YS5uYW1lKSldKV1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uVXNlckRhdGEgIT0gbnVsbFxuICAgICAgICAgICAgPyBfYyhcImxpXCIsIHsgc3RhdGljQ2xhc3M6IFwibmF2LWl0ZW1cIiB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImFcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibmF2LWxpbmtcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaHJlZjogXCJqYXZhc2NyaXB0OjtcIiwgdGl0bGU6IFwiQ2VycmFyIHNlc2nDs25cIiB9LFxuICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLkxvZ091dCgpXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwiZmFzIGZhLXNpZ24tb3V0LWFsdFwiIH0pXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLlVzZXJEYXRhID09IG51bGxcbiAgICAgICAgICAgID8gX2MoXCJsaVwiLCB7IHN0YXRpY0NsYXNzOiBcIm5hdi1pdGVtXCIgfSwgW192bS5fbSg1KV0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICBdKSxcbiAgICAgIF1cbiAgICApLFxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtcbiAgZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdm0gPSB0aGlzLFxuICAgICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgICByZXR1cm4gX2MoXCJsaVwiLCB7IHN0YXRpY0NsYXNzOiBcIm5hdi1pdGVtXCIgfSwgW1xuICAgICAgX2MoXG4gICAgICAgIFwiYVwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwibmF2LWxpbmtcIixcbiAgICAgICAgICBhdHRyczogeyBcImRhdGEtd2lkZ2V0XCI6IFwicHVzaG1lbnVcIiwgaHJlZjogXCIjXCIsIHJvbGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgfSxcbiAgICAgICAgW19jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImZhcyBmYS1iYXJzXCIgfSldXG4gICAgICApLFxuICAgIF0pXG4gIH0sXG4gIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3ZtID0gdGhpcyxcbiAgICAgIF9jID0gX3ZtLl9zZWxmLl9jXG4gICAgcmV0dXJuIF9jKFwibGlcIiwgeyBzdGF0aWNDbGFzczogXCJuYXYtaXRlbVwiIH0sIFtcbiAgICAgIF9jKFxuICAgICAgICBcImFcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm5hdi1saW5rIG5hdi1saW5rLXBsYXRmb3JtcyByZWQgYnRuLWRlY3JlYXNlXCIsXG4gICAgICAgICAgYXR0cnM6IHsgaHJlZjogXCJqYXZhc2NyaXB0OjtcIiwgdGl0bGU6IFwiRGlzbWludWlyIHRhbWHDsW8gZGUgbGV0cmFcIiB9LFxuICAgICAgICB9LFxuICAgICAgICBbX2MoXCJiXCIsIFtfdm0uX3YoXCJBLVwiKV0pXVxuICAgICAgKSxcbiAgICBdKVxuICB9LFxuICBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF92bSA9IHRoaXMsXG4gICAgICBfYyA9IF92bS5fc2VsZi5fY1xuICAgIHJldHVybiBfYyhcImxpXCIsIHsgc3RhdGljQ2xhc3M6IFwibmF2LWl0ZW1cIiB9LCBbXG4gICAgICBfYyhcbiAgICAgICAgXCJhXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJuYXYtbGluayBuYXYtbGluay1wbGF0Zm9ybXMgcmVkIGJ0bi1pbmNyZW1lbnRcIixcbiAgICAgICAgICBhdHRyczogeyBocmVmOiBcImphdmFzY3JpcHQ6O1wiLCB0aXRsZTogXCJBdW1lbnRhciB0YW1hw7FvIGRlIGxldHJhXCIgfSxcbiAgICAgICAgfSxcbiAgICAgICAgW19jKFwiYlwiLCBbX3ZtLl92KFwiQStcIildKV1cbiAgICAgICksXG4gICAgXSlcbiAgfSxcbiAgZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdm0gPSB0aGlzLFxuICAgICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgICByZXR1cm4gX2MoXCJsaVwiLCB7IHN0YXRpY0NsYXNzOiBcIm5hdi1pdGVtXCIgfSwgW1xuICAgICAgX2MoXG4gICAgICAgIFwiYVwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwibmF2LWxpbmsgbmF2LWxpbmstcGxhdGZvcm1zIGJsYWNrIGJ0bi1jb250cmFzdFwiLFxuICAgICAgICAgIGF0dHJzOiB7IGhyZWY6IFwiamF2YXNjcmlwdDo7XCIsIHRpdGxlOiBcIkNhbWJpYXIgY29udHJhc3RlXCIgfSxcbiAgICAgICAgfSxcbiAgICAgICAgW19jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImZhcyBmYS1hZGp1c3RcIiB9KV1cbiAgICAgICksXG4gICAgXSlcbiAgfSxcbiAgZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdm0gPSB0aGlzLFxuICAgICAgX2MgPSBfdm0uX3NlbGYuX2NcbiAgICByZXR1cm4gX2MoXG4gICAgICBcImFcIixcbiAgICAgIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6IFwiYnRuIGRyb3Bkb3duLXRvZ2dsZVwiLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGhyZWY6IFwiI1wiLFxuICAgICAgICAgIHJvbGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgaWQ6IFwiZHJvcGRvd25NZW51TGlua1wiLFxuICAgICAgICAgIFwiZGF0YS10b2dnbGVcIjogXCJkcm9wZG93blwiLFxuICAgICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcInRydWVcIixcbiAgICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogXCJmYWxzZVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFtfYyhcImJcIiwgW192bS5fdihcIk3Ds2R1bG9zXCIpXSldXG4gICAgKVxuICB9LFxuICBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF92bSA9IHRoaXMsXG4gICAgICBfYyA9IF92bS5fc2VsZi5fY1xuICAgIHJldHVybiBfYyhcImFcIiwgeyBzdGF0aWNDbGFzczogXCJuYXYtbGlua1wiLCBhdHRyczogeyBocmVmOiBcIi9sb2dpblwiIH0gfSwgW1xuICAgICAgX2MoXCJiXCIsIFtfdm0uX3YoXCJJbmljaWFyIHNlc2nDs25cIildKSxcbiAgICBdKVxuICB9LFxuXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN0YXRpY0NsYXNzIiwiX20iLCJfdiIsIl9zIiwiJGFwcE5hbWUiLCJVc2VyRGF0YSIsImF0dHJzIiwiX2wiLCJtb2R1bGVzIiwibW9kIiwiaHJlZiIsInVybF9sb2dpbiIsIm5hbWUiLCJfZSIsInJvbGUiLCJ0aXRsZSIsIm9uIiwiY2xpY2siLCIkZXZlbnQiLCJMb2dPdXQiLCJzdGF0aWNSZW5kZXJGbnMiLCJpZCIsIl93aXRoU3RyaXBwZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/NavbarWidget.vue?vue&type=template&id=0c01e93f&\n");
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/SidebarWidget.vue?vue&type=template&id=5c937b85&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/SidebarWidget.vue?vue&type=template&id=5c937b85& ***!
\*********************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"aside\", {\n staticClass: \"main-sidebar sidebar-dark-red elevation-4\"\n }, [_c(\"div\", {\n staticClass: \"text-center\",\n attrs: {\n id: \"logo-ppal\"\n }\n }, [_c(\"img\", {\n staticClass: \"img-resposive pointer\",\n attrs: {\n src: \"svg/logos/logo-plataforma.svg\"\n },\n on: {\n click: function click($event) {\n return _vm.goToPlatform();\n }\n }\n })]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"sidebar\"\n }, [_c(\"div\", {\n staticClass: \"user-panel mt-3 pb-3 mb-3 d-flex\"\n }), _vm._v(\" \"), _c(\"nav\", {\n staticClass: \"options\"\n }, [_c(\"ul\", {\n staticClass: \"nav nav-pills nav-sidebar flex-column\",\n attrs: {\n \"data-widget\": \"treeview\",\n role: \"menu\",\n \"data-accordion\": \"true\"\n }\n }, _vm._l(_vm.menu, function (item) {\n return _vm.UserData != null ? _c(\"li\", {\n \"class\": (item.is_separator == 1 ? \"nav-header\" : \"nav-item\") + \" \" + (item.childs.length > 0 ? \"with-child\" : \"\")\n }, [item.is_separator != 1 ? _c(\"router-link\", {\n staticClass: \"nav-link\",\n attrs: {\n tag: item.childs.length > 0 ? \"span\" : \"a\",\n to: item.childs.length > 0 ? \"#\" : item.link\n }\n }, [_c(\"i\", {\n staticClass: \"fas\",\n \"class\": item.icon\n }), _vm._v(\"\\n \" + _vm._s(item.name) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), item.is_separator == 1 ? _c(\"span\", [_c(\"i\", {\n staticClass: \"fas\",\n \"class\": item.icon\n }), _vm._v(\" \"), _c(\"p\", [_vm._v(\"\\n \" + _vm._s(item.name) + \"\\n \")])]) : _vm._e(), _vm._v(\" \"), item.is_separator != 1 && item.childs.length > 0 ? _c(\"ul\", {\n staticClass: \"nav nav-treeview\"\n }, _vm._l(item.childs, function (child) {\n return _c(\"li\", {\n staticClass: \"nav-item\"\n }, [_c(\"router-link\", {\n staticClass: \"nav-link\",\n attrs: {\n tag: \"a\",\n to: child.link\n }\n }, [_c(\"span\", [_c(\"i\", {\n staticClass: \"fa fa-dot-circle\"\n }), _vm._v(\"\\n \" + _vm._s(child.name) + \"\\n \")])])], 1);\n }), 0) : _vm._e()], 1) : _vm._e();\n }), 0)]), _vm._v(\" \"), _c(\"br\"), _vm._v(\" \"), _c(\"br\")]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"login-footer-menu\"\n })]);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL1NpZGViYXJXaWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVjOTM3Yjg1JiIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUc7RUFDN0IsSUFBSUMsR0FBRyxHQUFHLElBQUk7SUFDWkMsRUFBRSxHQUFHRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUNuQixPQUFPQSxFQUFFLENBQ1AsT0FBTyxFQUNQO0lBQUVFLFdBQVcsRUFBRTtFQUE0QyxDQUFDLEVBQzVELENBQ0VGLEVBQUUsQ0FBQyxLQUFLLEVBQUU7SUFBRUUsV0FBVyxFQUFFLGFBQWE7SUFBRUMsS0FBSyxFQUFFO01BQUVDLEVBQUUsRUFBRTtJQUFZO0VBQUUsQ0FBQyxFQUFFLENBQ3BFSixFQUFFLENBQUMsS0FBSyxFQUFFO0lBQ1JFLFdBQVcsRUFBRSx1QkFBdUI7SUFDcENDLEtBQUssRUFBRTtNQUFFRSxHQUFHLEVBQUU7SUFBZ0MsQ0FBQztJQUMvQ0MsRUFBRSxFQUFFO01BQ0ZDLEtBQUssRUFBRSxTQUFBQSxNQUFVQyxNQUFNLEVBQUU7UUFDdkIsT0FBT1QsR0FBRyxDQUFDVSxZQUFZLENBQUMsQ0FBQztNQUMzQjtJQUNGO0VBQ0YsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxFQUNGVixHQUFHLENBQUNXLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDWFYsRUFBRSxDQUFDLEtBQUssRUFBRTtJQUFFRSxX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bWluL3dpZGdldHMvU2lkZWJhcldpZGdldC52dWU/YmRlZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICB2YXIgX3ZtID0gdGhpcyxcbiAgICBfYyA9IF92bS5fc2VsZi5fY1xuICByZXR1cm4gX2MoXG4gICAgXCJhc2lkZVwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwibWFpbi1zaWRlYmFyIHNpZGViYXItZGFyay1yZWQgZWxldmF0aW9uLTRcIiB9LFxuICAgIFtcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidGV4dC1jZW50ZXJcIiwgYXR0cnM6IHsgaWQ6IFwibG9nby1wcGFsXCIgfSB9LCBbXG4gICAgICAgIF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJpbWctcmVzcG9zaXZlIHBvaW50ZXJcIixcbiAgICAgICAgICBhdHRyczogeyBzcmM6IFwic3ZnL2xvZ29zL2xvZ28tcGxhdGFmb3JtYS5zdmdcIiB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBjbGljazogZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAgICAgICByZXR1cm4gX3ZtLmdvVG9QbGF0Zm9ybSgpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgXSksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJzaWRlYmFyXCIgfSwgW1xuICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInVzZXItcGFuZWwgbXQtMyBwYi0zIG1iLTMgZC1mbGV4XCIgfSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwibmF2XCIsIHsgc3RhdGljQ2xhc3M6IFwib3B0aW9uc1wiIH0sIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidWxcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibmF2IG5hdi1waWxscyBuYXYtc2lkZWJhciBmbGV4LWNvbHVtblwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIFwiZGF0YS13aWRnZXRcIjogXCJ0cmVldmlld1wiLFxuICAgICAgICAgICAgICAgIHJvbGU6IFwibWVudVwiLFxuICAgICAgICAgICAgICAgIFwiZGF0YS1hY2NvcmRpb25cIjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3ZtLl9sKF92bS5tZW51LCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICByZXR1cm4gX3ZtLlVzZXJEYXRhICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcImxpXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtLmlzX3NlcGFyYXRvciA9PSAxID8gXCJuYXYtaGVhZGVyXCIgOiBcIm5hdi1pdGVtXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtLmNoaWxkcy5sZW5ndGggPiAwID8gXCJ3aXRoLWNoaWxkXCIgOiBcIlwiKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNfc2VwYXJhdG9yICE9IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyb3V0ZXItbGlua1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm5hdi1saW5rXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc6IGl0ZW0uY2hpbGRzLmxlbmd0aCA+IDAgPyBcInNwYW5cIiA6IFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogaXRlbS5jaGlsZHMubGVuZ3RoID4gMCA/IFwiI1wiIDogaXRlbS5saW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImZhc1wiLCBjbGFzczogaXRlbS5pY29uIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoaXRlbS5uYW1lKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNfc2VwYXJhdG9yID09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImlcIiwgeyBzdGF0aWNDbGFzczogXCJmYXNcIiwgY2xhc3M6IGl0ZW0uaWNvbiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwicFwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoaXRlbS5uYW1lKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmlzX3NlcGFyYXRvciAhPSAxICYmIGl0ZW0uY2hpbGRzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ1bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibmF2IG5hdi10cmVldmlld1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKGl0ZW0uY2hpbGRzLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsaVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcIm5hdi1pdGVtXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyb3V0ZXItbGlua1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJuYXYtbGlua1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0YWc6IFwiYVwiLCB0bzogY2hpbGQubGluayB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZmEgZmEtZG90LWNpcmNsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoY2hpbGQubmFtZSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKSxcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwiYnJcIiksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwiYnJcIiksXG4gICAgICBdKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImxvZ2luLWZvb3Rlci1tZW51XCIgfSksXG4gICAgXVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9Il0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsIl9jIiwiX3NlbGYiLCJzdGF0aWNDbGFzcyIsImF0dHJzIiwiaWQiLCJzcmMiLCJvbiIsImNsaWNrIiwiJGV2ZW50IiwiZ29Ub1BsYXRmb3JtIiwiX3YiLCJyb2xlIiwiX2wiLCJtZW51IiwiaXRlbSIsIlVzZXJEYXRhIiwiaXNfc2VwYXJhdG9yIiwiY2hpbGRzIiwibGVuZ3RoIiwidGFnIiwidG8iLCJsaW5rIiwiaWNvbiIsIl9zIiwibmFtZSIsIl9lIiwiY2hpbGQiLCJzdGF0aWNSZW5kZXJGbnMiLCJfd2l0aFN0cmlwcGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/SidebarWidget.vue?vue&type=template&id=5c937b85&\n");
/***/ }),
/***/ "./resources/js/bootstrap.js":
/*!***********************************!*\
!*** ./resources/js/bootstrap.js ***!
\***********************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval("window._ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\n/**\n * We'll load the axios HTTP library which allows us to easily issue requests\n * to our Laravel back-end. This library automatically handles sending the\n * CSRF token as a header based on the value of the \"XSRF\" token cookie.\n */\n\nwindow.axios = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n */\n\n// import Echo from 'laravel-echo';\n\n// window.Pusher = require('pusher-js');\n\n// window.Echo = new Echo({\n// broadcaster: 'pusher',\n// key: process.env.MIX_PUSHER_APP_KEY,\n// cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n// forceTLS: true\n// });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzIiwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLENBQUMsR0FBR0MsbUJBQU8sQ0FBQywrQ0FBUSxDQUFDOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBRixNQUFNLENBQUNHLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyw0Q0FBTyxDQUFDO0FBRS9CRixNQUFNLENBQUNHLEtBQUssQ0FBQ0MsUUFBUSxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLGdCQUFnQjs7QUFFM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzPzZkZTciXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93Ll8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcblxuLyoqXG4gKiBXZSdsbCBsb2FkIHRoZSBheGlvcyBIVFRQIGxpYnJhcnkgd2hpY2ggYWxsb3dzIHVzIHRvIGVhc2lseSBpc3N1ZSByZXF1ZXN0c1xuICogdG8gb3VyIExhcmF2ZWwgYmFjay1lbmQuIFRoaXMgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgc2VuZGluZyB0aGVcbiAqIENTUkYgdG9rZW4gYXMgYSBoZWFkZXIgYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZSBcIlhTUkZcIiB0b2tlbiBjb29raWUuXG4gKi9cblxud2luZG93LmF4aW9zID0gcmVxdWlyZSgnYXhpb3MnKTtcblxud2luZG93LmF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydYLVJlcXVlc3RlZC1XaXRoJ10gPSAnWE1MSHR0cFJlcXVlc3QnO1xuXG4vKipcbiAqIEVjaG8gZXhwb3NlcyBhbiBleHByZXNzaXZlIEFQSSBmb3Igc3Vic2NyaWJpbmcgdG8gY2hhbm5lbHMgYW5kIGxpc3RlbmluZ1xuICogZm9yIGV2ZW50cyB0aGF0IGFyZSBicm9hZGNhc3QgYnkgTGFyYXZlbC4gRWNobyBhbmQgZXZlbnQgYnJvYWRjYXN0aW5nXG4gKiBhbGxvd3MgeW91ciB0ZWFtIHRvIGVhc2lseSBidWlsZCByb2J1c3QgcmVhbC10aW1lIHdlYiBhcHBsaWNhdGlvbnMuXG4gKi9cblxuLy8gaW1wb3J0IEVjaG8gZnJvbSAnbGFyYXZlbC1lY2hvJztcblxuLy8gd2luZG93LlB1c2hlciA9IHJlcXVpcmUoJ3B1c2hlci1qcycpO1xuXG4vLyB3aW5kb3cuRWNobyA9IG5ldyBFY2hvKHtcbi8vICAgICBicm9hZGNhc3RlcjogJ3B1c2hlcicsXG4vLyAgICAga2V5OiBwcm9jZXNzLmVudi5NSVhfUFVTSEVSX0FQUF9LRVksXG4vLyAgICAgY2x1c3RlcjogcHJvY2Vzcy5lbnYuTUlYX1BVU0hFUl9BUFBfQ0xVU1RFUixcbi8vICAgICBmb3JjZVRMUzogdHJ1ZVxuLy8gfSk7XG4iXSwibmFtZXMiOlsid2luZG93IiwiXyIsInJlcXVpcmUiLCJheGlvcyIsImRlZmF1bHRzIiwiaGVhZGVycyIsImNvbW1vbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/bootstrap.js\n");
/***/ }),
/***/ "./resources/js/components/admin/alliance/form.js":
/*!********************************************************!*\
!*** ./resources/js/components/admin/alliance/form.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ json: () => (/* binding */ json)\n/* harmony export */ });\nvar json = {\n \"locale\": \"es\",\n \"title\": \"Alianzas\",\n \"pages\": [{\n \"name\": \"page1\",\n \"elements\": [{\n \"type\": \"text\",\n \"name\": \"name\",\n \"title\": \"Nombre\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"text\",\n \"name\": \"url\",\n \"title\": \"Url\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"startWithNewLine\": false,\n \"inputType\": \"url\"\n }, {\n \"type\": \"file\",\n \"name\": \"image\",\n \"title\": \"Logo\",\n \"hideNumber\": true,\n \"isRequired\": true\n }]\n }],\n \"showCompletedPage\": false\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9hbGxpYW5jZS9mb3JtLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxJQUFNQSxJQUFJLEdBQUc7RUFDaEIsUUFBUSxFQUFFLElBQUk7RUFDZCxPQUFPLEVBQUUsVUFBVTtFQUNuQixPQUFPLEVBQUUsQ0FDUjtJQUNDLE1BQU0sRUFBRSxPQUFPO0lBQ2YsVUFBVSxFQUFFLENBQ1g7TUFDQyxNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxNQUFNO01BQ2QsT0FBTyxFQUFFLFFBQVE7TUFDakIsWUFBWSxFQUFFLElBQUk7TUFDbEIsWUFBWSxFQUFFO0lBQ2YsQ0FBQyxFQUNEO01BQ0MsTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsS0FBSztNQUNiLE9BQU8sRUFBRSxLQUFLO01BQ2QsWUFBWSxFQUFFLElBQUk7TUFDbEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsa0JBQWtCLEVBQUUsS0FBSztNQUN6QixXQUFXLEVBQUU7SUFDZCxDQUFDLEVBQ0Q7TUFDQyxNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxPQUFPO01BQ2YsT0FBTyxFQUFFLE1BQU07TUFDZixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUU7SUFDZixDQUFDO0VBRUgsQ0FBQyxDQUNEO0VBQ0QsbUJBQW1CLEVBQUU7QUFDdEIsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2FsbGlhbmNlL2Zvcm0uanM/Njk1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QganNvbiA9IHtcbiAgICBcImxvY2FsZVwiOiBcImVzXCIsXG4gICAgXCJ0aXRsZVwiOiBcIkFsaWFuemFzXCIsXG4gICAgXCJwYWdlc1wiOiBbXG4gICAgIHtcbiAgICAgIFwibmFtZVwiOiBcInBhZ2UxXCIsXG4gICAgICBcImVsZW1lbnRzXCI6IFtcbiAgICAgICB7XG4gICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAgICBcInRpdGxlXCI6IFwiTm9tYnJlXCIsXG4gICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZVxuICAgICAgIH0sXG4gICAgICAge1xuICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICAgIFwibmFtZVwiOiBcInVybFwiLFxuICAgICAgICBcInRpdGxlXCI6IFwiVXJsXCIsXG4gICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZSxcbiAgICAgICAgXCJzdGFydFdpdGhOZXdMaW5lXCI6IGZhbHNlLFxuICAgICAgICBcImlucHV0VHlwZVwiOiBcInVybFwiXG4gICAgICAgfSxcbiAgICAgICB7XG4gICAgICAgIFwidHlwZVwiOiBcImZpbGVcIixcbiAgICAgICAgXCJuYW1lXCI6IFwiaW1hZ2VcIixcbiAgICAgICAgXCJ0aXRsZVwiOiBcIkxvZ29cIixcbiAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlXG4gICAgICAgfVxuICAgICAgXVxuICAgICB9XG4gICAgXSxcbiAgICBcInNob3dDb21wbGV0ZWRQYWdlXCI6IGZhbHNlXG4gICB9OyJdLCJuYW1lcyI6WyJqc29uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/components/admin/alliance/form.js\n");
/***/ }),
/***/ "./resources/js/components/admin/banner/form.js":
/*!******************************************************!*\
!*** ./resources/js/components/admin/banner/form.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ json: () => (/* binding */ json)\n/* harmony export */ });\nvar json = {\n \"locale\": \"es\",\n \"title\": \"Administración de banners\",\n \"pages\": [{\n \"name\": \"page1\",\n \"elements\": [{\n \"type\": \"dropdown\",\n \"name\": \"page_id\",\n \"title\": \"Página de ubicación\",\n \"hideNumber\": true,\n \"isRequired\": true,\n choicesByUrl: {\n url: \"/api/page/index\",\n valueName: \"id\",\n titleName: \"name\"\n }\n }, {\n \"type\": \"panel\",\n \"name\": \"question1\",\n \"elements\": [{\n \"type\": \"text\",\n \"name\": \"name\",\n \"title\": \"Título\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"comment\",\n \"name\": \"description\",\n \"startWithNewLine\": false,\n \"title\": \"Texto\",\n \"hideNumber\": true\n }, {\n \"type\": \"boolean\",\n \"name\": \"action->include\",\n \"title\": \"Tiene botón de redirección\",\n \"hideNumber\": true,\n \"defaultValueExpression\": \"0\",\n \"isRequired\": true\n }, {\n \"type\": \"text\",\n \"name\": \"action->name\",\n \"visibleIf\": \"{action->include} = true\",\n \"startWithNewLine\": false,\n \"title\": \"Titulo del botón\",\n \"isRequired\": true,\n \"hideNumber\": true\n }, {\n \"type\": \"text\",\n \"name\": \"action->link\",\n \"visibleIf\": \"{action->include} = true\",\n \"title\": \"Url\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"inputType\": \"url\"\n }],\n \"title\": \"Contenido del banner\"\n }, {\n \"type\": \"file\",\n \"name\": \"image\",\n \"title\": \"Imagen\",\n \"hideNumber\": true\n }]\n }],\n \"showCompletedPage\": false\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9iYW5uZXIvZm9ybS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sSUFBTUEsSUFBSSxHQUFHO0VBQ2hCLFFBQVEsRUFBRSxJQUFJO0VBQ2QsT0FBTyxFQUFFLDJCQUEyQjtFQUNwQyxPQUFPLEVBQUUsQ0FDTDtJQUNJLE1BQU0sRUFBRSxPQUFPO0lBQ2YsVUFBVSxFQUFFLENBQ1I7TUFDSSxNQUFNLEVBQUUsVUFBVTtNQUNsQixNQUFNLEVBQUUsU0FBUztNQUNqQixPQUFPLEVBQUUscUJBQXFCO01BQzlCLFlBQVksRUFBRSxJQUFJO01BQ2xCLFlBQVksRUFBRSxJQUFJO01BQ2xCQyxZQUFZLEVBQUU7UUFDVkMsR0FBRyxFQUFFLGlCQUFpQjtRQUN0QkMsU0FBUyxFQUFFLElBQUk7UUFDZkMsU0FBUyxFQUFFO01BQ2Y7SUFDSixDQUFDLEVBQ0Q7TUFDSSxNQUFNLEVBQUUsT0FBTztNQUNmLE1BQU0sRUFBRSxXQUFXO01BQ25CLFVBQVUsRUFBRSxDQUNSO1FBQ0ksTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFlBQVksRUFBRTtNQUNsQixDQUFDLEVBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsYUFBYTtRQUNyQixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFlBQVksRUFBRTtNQUNsQixDQUFDLEVBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsWUFBWSxFQUFFLElBQUk7UUFDbEIsd0JBQXdCLEVBQUUsR0FBRztRQUM3QixZQUFZLEVBQUU7TUFDbEIsQ0FBQyxFQUNEO1FBQ0ksTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUUsY0FBYztRQUN0QixXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLEtBQUs7UUFDekIsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixZQUFZLEVBQUUsSUFBSTtRQUNsQixZQUFZLEVBQUU7TUFDbEIsQ0FBQyxFQUNEO1FBQ0ksTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUUsY0FBYztRQUN0QixXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLE9BQU8sRUFBRSxLQUFLO1FBQ2QsWUFBWSxFQUFFLElBQUk7UUFDbEIsWUFBWSxFQUFFLElBQUk7UUFDbEIsV0FBVyxFQUFFO01BQ2QsQ0FBQyxDQUNQO01BQ0QsT0FBTyxFQUFFO0lBQ2IsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsT0FBTztNQUNmLE9BQU8sRUFBRSxRQUFRO01BQ2pCLFlBQVksRUFBRTtJQUNsQixDQUFDO0VBRVQsQ0FBQyxDQUNKO0VBQ0QsbUJBQW1CLEVBQUU7QUFDekIsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2Jhbm5lci9mb3JtLmpzP2E1M2UiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGpzb24gPSB7XG4gICAgXCJsb2NhbGVcIjogXCJlc1wiLFxuICAgIFwidGl0bGVcIjogXCJBZG1pbmlzdHJhY2nDs24gZGUgYmFubmVyc1wiLFxuICAgIFwicGFnZXNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJwYWdlMVwiLFxuICAgICAgICAgICAgXCJlbGVtZW50c1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJkcm9wZG93blwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJwYWdlX2lkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJQw6FnaW5hIGRlIHViaWNhY2nDs25cIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjaG9pY2VzQnlVcmw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXCIvYXBpL3BhZ2UvaW5kZXhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTmFtZTogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVOYW1lOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwicGFuZWxcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwicXVlc3Rpb24xXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZWxlbWVudHNcIjogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIlTDrXR1bG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJjb21tZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInN0YXJ0V2l0aE5ld0xpbmVcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIlRleHRvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImFjdGlvbi0+aW5jbHVkZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJUaWVuZSBib3TDs24gZGUgcmVkaXJlY2Npw7NuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0VmFsdWVFeHByZXNzaW9uXCI6IFwiMFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJhY3Rpb24tPm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZpc2libGVJZlwiOiBcInthY3Rpb24tPmluY2x1ZGV9ID0gdHJ1ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3RhcnRXaXRoTmV3TGluZVwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiVGl0dWxvIGRlbCBib3TDs25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiYWN0aW9uLT5saW5rXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2aXNpYmxlSWZcIjogXCJ7YWN0aW9uLT5pbmNsdWRlfSA9IHRydWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiVXJsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFR5cGVcIjogXCJ1cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkNvbnRlbmlkbyBkZWwgYmFubmVyXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiZmlsZVwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJpbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiSW1hZ2VuXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gICAgXSxcbiAgICBcInNob3dDb21wbGV0ZWRQYWdlXCI6IGZhbHNlXG59OyJdLCJuYW1lcyI6WyJqc29uIiwiY2hvaWNlc0J5VXJsIiwidXJsIiwidmFsdWVOYW1lIiwidGl0bGVOYW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/components/admin/banner/form.js\n");
/***/ }),
/***/ "./resources/js/components/admin/conference/form.js":
/*!**********************************************************!*\
!*** ./resources/js/components/admin/conference/form.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ json: () => (/* binding */ json)\n/* harmony export */ });\nvar json = {\n \"locale\": \"es\",\n \"title\": \"Congreso\",\n \"pages\": [{\n \"name\": \"page1\",\n \"elements\": [{\n \"type\": \"text\",\n \"name\": \"name\",\n \"startWithNewLine\": false,\n \"title\": \"Nombre\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"text\",\n \"name\": \"start_date\",\n \"title\": \"Fecha Inicio\",\n \"hideNumber\": true,\n \"inputType\": \"date\"\n }, {\n \"type\": \"text\",\n \"name\": \"end_date\",\n \"startWithNewLine\": false,\n \"title\": \"Fecha Fin\",\n \"hideNumber\": true,\n \"inputType\": \"date\"\n }, {\n \"type\": \"file\",\n \"name\": \"document\",\n \"title\": \"Documento\",\n \"hideNumber\": true,\n \"acceptedTypes\": \".pdf\"\n }, {\n \"type\": \"paneldynamic\",\n \"name\": \"guests\",\n \"title\": \"Invitados\",\n \"hideNumber\": true,\n \"templateElements\": [{\n \"type\": \"text\",\n \"name\": \"id\",\n \"width\": \"100px\",\n \"minWidth\": \"50px\",\n \"maxWidth\": \"50%\",\n \"title\": \"Id\",\n \"readOnly\": true,\n \"inputType\": \"number\"\n }, {\n \"type\": \"text\",\n \"name\": \"name\",\n \"title\": \"Nombre\",\n \"startWithNewLine\": false,\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"text\",\n \"name\": \"country\",\n \"startWithNewLine\": false,\n \"title\": \"Pais\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"autocomplete\": \"country\"\n }, {\n \"type\": \"comment\",\n \"name\": \"description\",\n \"title\": \"Descripción\",\n \"isRequired\": true\n }, {\n \"type\": \"file\",\n \"name\": \"image\",\n \"startWithNewLine\": false,\n \"title\": \"Foto\",\n \"isRequired\": true,\n \"acceptedTypes\": \".jpg\"\n }],\n \"templateTabTitle\": \"Invitado {panelIndex}\",\n \"renderMode\": \"tab\"\n }]\n }],\n \"showCompletedPage\": false\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb25mZXJlbmNlL2Zvcm0uanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLElBQU1BLElBQUksR0FBRztFQUNoQixRQUFRLEVBQUUsSUFBSTtFQUNkLE9BQU8sRUFBRSxVQUFVO0VBQ25CLE9BQU8sRUFBRSxDQUNMO0lBQ0ksTUFBTSxFQUFFLE9BQU87SUFDZixVQUFVLEVBQUUsQ0FDUjtNQUNJLE1BQU0sRUFBRSxNQUFNO01BQ2QsTUFBTSxFQUFFLE1BQU07TUFDZCxrQkFBa0IsRUFBRSxLQUFLO01BQ3pCLE9BQU8sRUFBRSxRQUFRO01BQ2pCLFlBQVksRUFBRSxJQUFJO01BQ2xCLFlBQVksRUFBRTtJQUNsQixDQUFDLEVBQ0Q7TUFDSSxNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxZQUFZO01BQ3BCLE9BQU8sRUFBRSxjQUFjO01BQ3ZCLFlBQVksRUFBRSxJQUFJO01BQ2xCLFdBQVcsRUFBRTtJQUNqQixDQUFDLEVBQ0Q7TUFDSSxNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxVQUFVO01BQ2xCLGtCQUFrQixFQUFFLEtBQUs7TUFDekIsT0FBTyxFQUFFLFdBQVc7TUFDcEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsV0FBVyxFQUFFO0lBQ2pCLENBQUMsRUFDRDtNQUNJLE1BQU0sRUFBRSxNQUFNO01BQ2QsTUFBTSxFQUFFLFVBQVU7TUFDbEIsT0FBTyxFQUFFLFdBQVc7TUFDcEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsZUFBZSxFQUFFO0lBQ3JCLENBQUMsRUFDRDtNQUNJLE1BQU0sRUFBRSxjQUFjO01BQ3RCLE1BQU0sRUFBRSxRQUFRO01BQ2hCLE9BQU8sRUFBRSxXQUFXO01BQ3BCLFlBQVksRUFBRSxJQUFJO01BQ2xCLGtCQUFrQixFQUFFLENBQ2hCO1FBQ0ksTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVSxFQUFFLElBQUk7UUFDaEIsV0FBVyxFQUFFO01BQ2pCLENBQUMsRUFDRDtRQUNJLE1BQU0sRUFBRSxNQUFNO1FBQ2QsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsUUFBUTtRQUNqQixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFlBQVksRUFBRTtNQUNsQixDQUFDLEVBQ0Q7UUFDSSxNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLGtCQUFrQixFQUFFLEtBQUs7UUFDekIsT0FBTyxFQUFFLE1BQU07UUFDZixZQUFZLEVBQUUsSUFBSTtRQUNsQixZQUFZLEVBQUUsSUFBSTtRQUNsQixjQUFjLEVBQUU7TUFDcEIsQ0FBQyxFQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLGFBQWE7UUFDckIsT0FBTyxFQUFFLGFBQWE7UUFDdEIsWUFBWSxFQUFFO01BQ2xCLENBQUMsRUFDRDtRQUNJLE1BQU0sRUFBRSxNQUFNO1FBQ2QsTUFBTSxFQUFFLE9BQU87UUFDZixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLE9BQU8sRUFBRSxNQUFNO1FBQ2YsWUFBWSxFQUFFLElBQUk7UUFDbEIsZUFBZSxFQUFFO01BQ3JCLENBQUMsQ0FDSjtNQUNELGtCQUFrQixFQUFFLHVCQUF1QjtNQUMzQyxZQUFZLEVBQUU7SUFDbEIsQ0FBQztFQUVULENBQUMsQ0FDSjtFQUNELG1CQUFtQixFQUFFO0FBQ3pCLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb25mZXJlbmNlL2Zvcm0uanM/MTA1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QganNvbiA9IHtcbiAgICBcImxvY2FsZVwiOiBcImVzXCIsXG4gICAgXCJ0aXRsZVwiOiBcIkNvbmdyZXNvXCIsXG4gICAgXCJwYWdlc1wiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcInBhZ2UxXCIsXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInN0YXJ0V2l0aE5ld0xpbmVcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJOb21icmVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwic3RhcnRfZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiRmVjaGEgSW5pY2lvXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcImlucHV0VHlwZVwiOiBcImRhdGVcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImVuZF9kYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic3RhcnRXaXRoTmV3TGluZVwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkZlY2hhIEZpblwiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFR5cGVcIjogXCJkYXRlXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiZmlsZVwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkb2N1bWVudFwiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiRG9jdW1lbnRvXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcImFjY2VwdGVkVHlwZXNcIjogXCIucGRmXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwicGFuZWxkeW5hbWljXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImd1ZXN0c1wiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiSW52aXRhZG9zXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcInRlbXBsYXRlRWxlbWVudHNcIjogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwid2lkdGhcIjogXCIxMDBweFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWluV2lkdGhcIjogXCI1MHB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXhXaWR0aFwiOiBcIjUwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJJZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicmVhZE9ubHlcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0VHlwZVwiOiBcIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIk5vbWJyZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3RhcnRXaXRoTmV3TGluZVwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiY291bnRyeVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3RhcnRXaXRoTmV3TGluZVwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiUGFpc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYXV0b2NvbXBsZXRlXCI6IFwiY291bnRyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImNvbW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJEZXNjcmlwY2nDs25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJmaWxlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiaW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInN0YXJ0V2l0aE5ld0xpbmVcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkZvdG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFjY2VwdGVkVHlwZXNcIjogXCIuanBnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZW1wbGF0ZVRhYlRpdGxlXCI6IFwiSW52aXRhZG8ge3BhbmVsSW5kZXh9XCIsXG4gICAgICAgICAgICAgICAgICAgIFwicmVuZGVyTW9kZVwiOiBcInRhYlwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF0sXG4gICAgXCJzaG93Q29tcGxldGVkUGFnZVwiOiBmYWxzZVxufSJdLCJuYW1lcyI6WyJqc29uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/components/admin/conference/form.js\n");
/***/ }),
/***/ "./resources/js/components/admin/course/form.js":
/*!******************************************************!*\
!*** ./resources/js/components/admin/course/form.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ json: () => (/* binding */ json)\n/* harmony export */ });\nvar json = {\n \"locale\": \"es\",\n \"title\": \"Nuevo Video\",\n \"pages\": [{\n name: \"page1\",\n \"elements\": [{\n \"type\": \"dropdown\",\n \"name\": \"cycle_id\",\n \"title\": \"Ciclo\",\n \"hideNumber\": true,\n \"isRequired\": true,\n choicesByUrl: {\n url: \"/api/cycle/index\",\n valueName: \"id\",\n titleName: \"name\"\n }\n }, {\n \"type\": \"text\",\n \"name\": \"name\",\n \"title\": \"Nombre\",\n \"startWithNewLine\": false,\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"comment\",\n \"name\": \"description\",\n \"title\": \"Descripción\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"text\",\n \"name\": \"url\",\n \"title\": \"Url Registro\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"inputType\": \"url\"\n }, {\n \"type\": \"text\",\n \"name\": \"data->duration\",\n \"startWithNewLine\": false,\n \"title\": \"Duración (Horas)\",\n \"hideNumber\": true,\n \"inputType\": \"number\"\n }, {\n \"type\": \"text\",\n \"name\": \"start_date\",\n \"title\": \"Fecha Inicio\",\n \"hideNumber\": true,\n \"inputType\": \"date\"\n }, {\n \"type\": \"text\",\n \"name\": \"end_date\",\n \"startWithNewLine\": false,\n \"title\": \"Fecha Final\",\n \"hideNumber\": true,\n \"inputType\": \"date\"\n }, {\n \"type\": \"tagbox\",\n \"name\": \"alliances\",\n \"hideNumber\": true,\n \"title\": \"Aliados\",\n choicesByUrl: {\n url: \"/api/alliance/index\",\n valueName: \"id\",\n titleName: \"name\"\n }\n }, {\n \"type\": \"comment\",\n \"name\": \"data->objectives\",\n \"title\": \"Objetivo\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"comment\",\n \"name\": \"data->content\",\n \"title\": \"Contenido\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"file\",\n \"name\": \"image\",\n \"title\": \"Imagen\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"acceptedTypes\": \".png, .jpg\"\n }],\n \"title\": \"Nuevo Curso\"\n }],\n \"showCompletedPage\": false\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jb3Vyc2UvZm9ybS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sSUFBTUEsSUFBSSxHQUFHO0VBQ2hCLFFBQVEsRUFBRSxJQUFJO0VBQ2QsT0FBTyxFQUFFLGFBQWE7RUFDdEIsT0FBTyxFQUFFLENBQ0w7SUFDSUMsSUFBSSxFQUFFLE9BQU87SUFDYixVQUFVLEVBQUUsQ0FDUjtNQUNJLE1BQU0sRUFBRSxVQUFVO01BQ2xCLE1BQU0sRUFBRSxVQUFVO01BQ2xCLE9BQU8sRUFBRSxPQUFPO01BQ2hCLFlBQVksRUFBRSxJQUFJO01BQ2xCLFlBQVksRUFBRSxJQUFJO01BQ2xCQyxZQUFZLEVBQUU7UUFDVkMsR0FBRyxFQUFFLGtCQUFrQjtRQUN2QkMsU0FBUyxFQUFFLElBQUk7UUFDZkMsU0FBUyxFQUFFO01BQ2Y7SUFDSixDQUFDLEVBQ0Q7TUFDSSxNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxNQUFNO01BQ2QsT0FBTyxFQUFFLFFBQVE7TUFDakIsa0JBQWtCLEVBQUUsS0FBSztNQUN6QixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUU7SUFDbEIsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLFNBQVM7TUFDakIsTUFBTSxFQUFFLGFBQWE7TUFDckIsT0FBTyxFQUFFLGFBQWE7TUFDdEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsWUFBWSxFQUFFO0lBQ2xCLENBQUMsRUFDRDtNQUNJLE1BQU0sRUFBRSxNQUFNO01BQ2QsTUFBTSxFQUFFLEtBQUs7TUFDYixPQUFPLEVBQUUsY0FBYztNQUN2QixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUUsSUFBSTtNQUNsQixXQUFXLEVBQUU7SUFDakIsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsZ0JBQWdCO01BQ3hCLGtCQUFrQixFQUFFLEtBQUs7TUFDekIsT0FBTyxFQUFFLGtCQUFrQjtNQUMzQixZQUFZLEVBQUUsSUFBSTtNQUNsQixXQUFXLEVBQUU7SUFDakIsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsWUFBWTtNQUNwQixPQUFPLEVBQUUsY0FBYztNQUN2QixZQUFZLEVBQUUsSUFBSTtNQUNsQixXQUFXLEVBQUU7SUFFakIsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsVUFBVTtNQUNsQixrQkFBa0IsRUFBRSxLQUFLO01BQ3pCLE9BQU8sRUFBRSxhQUFhO01BQ3RCLFlBQVksRUFBRSxJQUFJO01BQ2xCLFdBQVcsRUFBRTtJQUNqQixDQUFDLEVBQ0Q7TUFDSSxNQUFNLEVBQUUsUUFBUTtNQUNoQixNQUFNLEVBQUUsV0FBVztNQUNuQixZQUFZLEVBQUUsSUFBSTtNQUNsQixPQUFPLEVBQUUsU0FBUztNQUNsQkgsWUFBWSxFQUFFO1FBQ1ZDLEdBQUcsRUFBRSxxQkFBcUI7UUFDMUJDLFNBQVMsRUFBRSxJQUFJO1FBQ2ZDLFNBQVMsRUFBRTtNQUNmO0lBQ0osQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLFNBQVM7TUFDakIsTUFBTSxFQUFFLGtCQUFrQjtNQUMxQixPQUFPLEVBQUUsVUFBVTtNQUNuQixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUU7SUFDbEIsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLFNBQVM7TUFDakIsTUFBTSxFQUFFLGVBQWU7TUFDdkIsT0FBTyxFQUFFLFdBQVc7TUFDcEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsWUFBWSxFQUFFO0lBQ2xCLENBQUMsRUFDRDtNQUNJLE1BQU0sRUFBRSxNQUFNO01BQ2QsTUFBTSxFQUFFLE9BQU87TUFDZixPQUFPLEVBQUUsUUFBUTtNQUNqQixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUUsSUFBSTtNQUNsQixlQUFlLEVBQUU7SUFDckIsQ0FBQyxDQUNKO0lBQ0QsT0FBTyxFQUFFO0VBQ2IsQ0FBQyxDQUNKO0VBQ0QsbUJBQW1CLEVBQUU7QUFDekIsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2NvdXJzZS9mb3JtLmpzPzkxNGMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGpzb24gPSB7XG4gICAgXCJsb2NhbGVcIjogXCJlc1wiLFxuICAgIFwidGl0bGVcIjogXCJOdWV2byBWaWRlb1wiLFxuICAgIFwicGFnZXNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInBhZ2UxXCIsXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImRyb3Bkb3duXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImN5Y2xlX2lkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJDaWNsb1wiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNob2ljZXNCeVVybDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcIi9hcGkvY3ljbGUvaW5kZXhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTmFtZTogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVOYW1lOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJOb21icmVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzdGFydFdpdGhOZXdMaW5lXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiY29tbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiRGVzY3JpcGNpw7NuXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInVybFwiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiVXJsIFJlZ2lzdHJvXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFR5cGVcIjogXCJ1cmxcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImRhdGEtPmR1cmF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic3RhcnRXaXRoTmV3TGluZVwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkR1cmFjacOzbiAoSG9yYXMpXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcImlucHV0VHlwZVwiOiBcIm51bWJlclwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwic3RhcnRfZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiRmVjaGEgSW5pY2lvXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcImlucHV0VHlwZVwiOiBcImRhdGVcIlxuXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZW5kX2RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzdGFydFdpdGhOZXdMaW5lXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiRmVjaGEgRmluYWxcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXRUeXBlXCI6IFwiZGF0ZVwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRhZ2JveFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJhbGxpYW5jZXNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJBbGlhZG9zXCIsXG4gICAgICAgICAgICAgICAgICAgIGNob2ljZXNCeVVybDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcIi9hcGkvYWxsaWFuY2UvaW5kZXhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTmFtZTogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVOYW1lOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiY29tbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkYXRhLT5vYmplY3RpdmVzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJPYmpldGl2b1wiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiY29tbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkYXRhLT5jb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJDb250ZW5pZG9cIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImZpbGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiaW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkltYWdlblwiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiYWNjZXB0ZWRUeXBlc1wiOiBcIi5wbmcsIC5qcGdcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBcInRpdGxlXCI6IFwiTnVldm8gQ3Vyc29cIlxuICAgICAgICB9XG4gICAgXSxcbiAgICBcInNob3dDb21wbGV0ZWRQYWdlXCI6IGZhbHNlXG59Il0sIm5hbWVzIjpbImpzb24iLCJuYW1lIiwiY2hvaWNlc0J5VXJsIiwidXJsIiwidmFsdWVOYW1lIiwidGl0bGVOYW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/components/admin/course/form.js\n");
/***/ }),
/***/ "./resources/js/components/admin/cycle/form.js":
/*!*****************************************************!*\
!*** ./resources/js/components/admin/cycle/form.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ json: () => (/* binding */ json)\n/* harmony export */ });\nvar json = {\n \"locale\": \"es\",\n \"title\": \"Ciclos\",\n \"pages\": [{\n \"name\": \"page1\",\n \"elements\": [{\n \"type\": \"text\",\n \"name\": \"name\",\n \"title\": \"Nombre\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"comment\",\n \"name\": \"description\",\n \"title\": \"Descripción General\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"dropdown\",\n \"name\": \"modality_type_id\",\n \"startWithNewLine\": false,\n \"title\": \"Modalidad\",\n \"hideNumber\": true,\n choicesByUrl: {\n url: \"/api/library/get-options/modalidades-formacion\",\n valueName: \"id\",\n titleName: \"name\"\n }\n }, {\n \"type\": \"text\",\n \"name\": \"duration\",\n \"title\": \"Duración\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"file\",\n \"name\": \"file\",\n \"startWithNewLine\": false,\n \"title\": \"Documento de Requisitos\",\n \"hideNumber\": true,\n \"acceptedTypes\": \".pdf\"\n }, {\n \"type\": \"tagbox\",\n \"name\": \"alliances\",\n \"title\": \"Aliados\",\n \"hideNumber\": true,\n choicesByUrl: {\n url: \"/api/alliance/index\",\n valueName: \"id\",\n titleName: \"name\"\n }\n }, {\n \"type\": \"file\",\n \"name\": \"image\",\n \"title\": \"Imagen\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"acceptedTypes\": \".png\"\n }]\n }]\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9jeWNsZS9mb3JtLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxJQUFNQSxJQUFJLEdBQUc7RUFDaEIsUUFBUSxFQUFFLElBQUk7RUFDZCxPQUFPLEVBQUUsUUFBUTtFQUNqQixPQUFPLEVBQUUsQ0FDTDtJQUNJLE1BQU0sRUFBRSxPQUFPO0lBQ2YsVUFBVSxFQUFFLENBQ1I7TUFDSSxNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxNQUFNO01BQ2QsT0FBTyxFQUFFLFFBQVE7TUFDakIsWUFBWSxFQUFFLElBQUk7TUFDbEIsWUFBWSxFQUFFO0lBQ2xCLENBQUMsRUFDRDtNQUNJLE1BQU0sRUFBRSxTQUFTO01BQ2pCLE1BQU0sRUFBRSxhQUFhO01BQ3JCLE9BQU8sRUFBRSxxQkFBcUI7TUFDOUIsWUFBWSxFQUFFLElBQUk7TUFDbEIsWUFBWSxFQUFFO0lBQ2xCLENBQUMsRUFDRDtNQUNJLE1BQU0sRUFBRSxVQUFVO01BQ2xCLE1BQU0sRUFBRSxrQkFBa0I7TUFDMUIsa0JBQWtCLEVBQUUsS0FBSztNQUN6QixPQUFPLEVBQUUsV0FBVztNQUNwQixZQUFZLEVBQUUsSUFBSTtNQUNsQkMsWUFBWSxFQUFFO1FBQ1ZDLEdBQUcsRUFBRSxnREFBZ0Q7UUFDckRDLFNBQVMsRUFBRSxJQUFJO1FBQ2ZDLFNBQVMsRUFBRTtNQUNmO0lBQ0osQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsVUFBVTtNQUNsQixPQUFPLEVBQUUsVUFBVTtNQUNuQixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUU7SUFDbEIsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsTUFBTTtNQUNkLGtCQUFrQixFQUFFLEtBQUs7TUFDekIsT0FBTyxFQUFFLHlCQUF5QjtNQUNsQyxZQUFZLEVBQUUsSUFBSTtNQUNsQixlQUFlLEVBQUU7SUFDckIsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLFFBQVE7TUFDaEIsTUFBTSxFQUFFLFdBQVc7TUFDbkIsT0FBTyxFQUFFLFNBQVM7TUFDbEIsWUFBWSxFQUFFLElBQUk7TUFDbEJILFlBQVksRUFBRTtRQUNWQyxHQUFHLEVBQUUscUJBQXFCO1FBQzFCQyxTQUFTLEVBQUUsSUFBSTtRQUNmQyxTQUFTLEVBQUU7TUFDZjtJQUNKLENBQUMsRUFDRDtNQUNJLE1BQU0sRUFBRSxNQUFNO01BQ2QsTUFBTSxFQUFFLE9BQU87TUFDZixPQUFPLEVBQUUsUUFBUTtNQUNqQixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUUsSUFBSTtNQUNsQixlQUFlLEVBQUU7SUFDckIsQ0FBQztFQUVULENBQUM7QUFFVCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vY3ljbGUvZm9ybS5qcz81ZDM2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBqc29uID0ge1xuICAgIFwibG9jYWxlXCI6IFwiZXNcIixcbiAgICBcInRpdGxlXCI6IFwiQ2ljbG9zXCIsXG4gICAgXCJwYWdlc1wiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcInBhZ2UxXCIsXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiTm9tYnJlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJjb21tZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImRlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJEZXNjcmlwY2nDs24gR2VuZXJhbFwiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiZHJvcGRvd25cIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibW9kYWxpdHlfdHlwZV9pZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInN0YXJ0V2l0aE5ld0xpbmVcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJNb2RhbGlkYWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNob2ljZXNCeVVybDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcIi9hcGkvbGlicmFyeS9nZXQtb3B0aW9ucy9tb2RhbGlkYWRlcy1mb3JtYWNpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTmFtZTogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVOYW1lOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkdXJhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiRHVyYWNpw7NuXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcImlzUmVxdWlyZWRcIjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJmaWxlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImZpbGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzdGFydFdpdGhOZXdMaW5lXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiRG9jdW1lbnRvIGRlIFJlcXVpc2l0b3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiYWNjZXB0ZWRUeXBlc1wiOiBcIi5wZGZcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJ0YWdib3hcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiYWxsaWFuY2VzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJBbGlhZG9zXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjaG9pY2VzQnlVcmw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXCIvYXBpL2FsbGlhbmNlL2luZGV4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZU5hbWU6IFwiaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlTmFtZTogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImZpbGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiaW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkltYWdlblwiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiYWNjZXB0ZWRUeXBlc1wiOiBcIi5wbmdcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF1cbn0iXSwibmFtZXMiOlsianNvbiIsImNob2ljZXNCeVVybCIsInVybCIsInZhbHVlTmFtZSIsInRpdGxlTmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/components/admin/cycle/form.js\n");
/***/ }),
/***/ "./resources/js/components/admin/library/form.js":
/*!*******************************************************!*\
!*** ./resources/js/components/admin/library/form.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ json: () => (/* binding */ json)\n/* harmony export */ });\nvar json = {\n \"locale\": \"es\",\n \"title\": \"Biblioteca\",\n \"pages\": [{\n \"name\": \"page1\",\n \"elements\": [{\n \"type\": \"dropdown\",\n \"name\": \"type\",\n \"title\": \"Tipo de Recurso\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"choices\": [\"Datos Abiertos\", \"Herramientas Pedagogicas\"]\n }, {\n \"type\": \"text\",\n \"name\": \"name\",\n \"startWithNewLine\": false,\n \"title\": \"Nombre\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"file\",\n \"name\": \"document\",\n \"title\": \"Documento\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"acceptedTypes\": \".pdf\"\n }, {\n \"type\": \"file\",\n \"name\": \"image\",\n \"title\": \"Icono\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"acceptedTypes\": \".svg\"\n }]\n }]\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9saWJyYXJ5L2Zvcm0uanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLElBQU1BLElBQUksR0FBRztFQUNoQixRQUFRLEVBQUUsSUFBSTtFQUNkLE9BQU8sRUFBRSxZQUFZO0VBQ3JCLE9BQU8sRUFBRSxDQUNMO0lBQ0ksTUFBTSxFQUFFLE9BQU87SUFDZixVQUFVLEVBQUUsQ0FDUjtNQUNJLE1BQU0sRUFBRSxVQUFVO01BQ2xCLE1BQU0sRUFBRSxNQUFNO01BQ2QsT0FBTyxFQUFFLGlCQUFpQjtNQUMxQixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUUsSUFBSTtNQUNsQixTQUFTLEVBQUUsQ0FDUCxnQkFBZ0IsRUFDaEIsMEJBQTBCO0lBRWxDLENBQUMsRUFDRDtNQUNJLE1BQU0sRUFBRSxNQUFNO01BQ2QsTUFBTSxFQUFFLE1BQU07TUFDZCxrQkFBa0IsRUFBRSxLQUFLO01BQ3pCLE9BQU8sRUFBRSxRQUFRO01BQ2pCLFlBQVksRUFBRSxJQUFJO01BQ2xCLFlBQVksRUFBRTtJQUNsQixDQUFDLEVBQ0Q7TUFDSSxNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxVQUFVO01BQ2xCLE9BQU8sRUFBRSxXQUFXO01BQ3BCLFlBQVksRUFBRSxJQUFJO01BQ2xCLFlBQVksRUFBRSxJQUFJO01BQ2xCLGVBQWUsRUFBRTtJQUNyQixDQUFDLEVBQ0Q7TUFDSSxNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxPQUFPO01BQ2YsT0FBTyxFQUFFLE9BQU87TUFDaEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsZUFBZSxFQUFFO0lBQ3JCLENBQUM7RUFFVCxDQUFDO0FBRVQsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL2xpYnJhcnkvZm9ybS5qcz9hMmZjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBqc29uID0ge1xuICAgIFwibG9jYWxlXCI6IFwiZXNcIixcbiAgICBcInRpdGxlXCI6IFwiQmlibGlvdGVjYVwiLFxuICAgIFwicGFnZXNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJwYWdlMVwiLFxuICAgICAgICAgICAgXCJlbGVtZW50c1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJkcm9wZG93blwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJ0eXBlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJUaXBvIGRlIFJlY3Vyc29cIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcImNob2ljZXNcIjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJEYXRvcyBBYmllcnRvc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJIZXJyYW1pZW50YXMgUGVkYWdvZ2ljYXNcIlxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInN0YXJ0V2l0aE5ld0xpbmVcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJOb21icmVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImZpbGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZG9jdW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkRvY3VtZW50b1wiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiYWNjZXB0ZWRUeXBlc1wiOiBcIi5wZGZcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJmaWxlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImltYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJJY29ub1wiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiYWNjZXB0ZWRUeXBlc1wiOiBcIi5zdmdcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF1cbn0iXSwibmFtZXMiOlsianNvbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/components/admin/library/form.js\n");
/***/ }),
/***/ "./resources/js/components/admin/page/form.js":
/*!****************************************************!*\
!*** ./resources/js/components/admin/page/form.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ json: () => (/* binding */ json)\n/* harmony export */ });\nvar json = {\n \"locale\": \"es\",\n \"pages\": [{\n \"name\": \"page1\",\n \"elements\": [{\n \"type\": \"text\",\n \"name\": \"name\",\n \"title\": \"Nombre\",\n \"hideNumber\": true,\n \"isRequired\": true\n }, {\n \"type\": \"text\",\n \"name\": \"url\",\n \"startWithNewLine\": false,\n \"title\": \"Url\",\n \"hideNumber\": true,\n \"readOnly\": true\n }, {\n \"type\": \"paneldynamic\",\n \"name\": \"sections\",\n \"title\": \"Secciones\",\n \"hideNumber\": true,\n \"templateElements\": [{\n \"type\": \"text\",\n \"name\": \"id\",\n \"title\": \"Id\",\n \"readOnly\": true\n }, {\n \"type\": \"dropdown\",\n \"name\": \"section_id\",\n \"startWithNewLine\": false,\n \"isRequired\": true,\n \"title\": \"Sección\",\n choicesByUrl: {\n url: \"/api/page/get-sections\",\n valueName: \"id\",\n titleName: \"name\"\n }\n }, {\n \"type\": \"text\",\n \"name\": \"data->title\",\n \"title\": \"Titulo\"\n }, {\n \"type\": \"comment\",\n \"name\": \"data->text\",\n \"title\": \"Texto\"\n }],\n \"templateTabTitle\": \"Sección {panelIndex}\",\n \"renderMode\": \"tab\"\n }]\n }]\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi9wYWdlL2Zvcm0uanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLElBQU1BLElBQUksR0FBRztFQUNoQixRQUFRLEVBQUUsSUFBSTtFQUNkLE9BQU8sRUFBRSxDQUNMO0lBQ0ksTUFBTSxFQUFFLE9BQU87SUFDZixVQUFVLEVBQUUsQ0FDUjtNQUNJLE1BQU0sRUFBRSxNQUFNO01BQ2QsTUFBTSxFQUFFLE1BQU07TUFDZCxPQUFPLEVBQUUsUUFBUTtNQUNqQixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUU7SUFDbEIsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsS0FBSztNQUNiLGtCQUFrQixFQUFFLEtBQUs7TUFDekIsT0FBTyxFQUFFLEtBQUs7TUFDZCxZQUFZLEVBQUUsSUFBSTtNQUNsQixVQUFVLEVBQUU7SUFDaEIsQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLGNBQWM7TUFDdEIsTUFBTSxFQUFFLFVBQVU7TUFDbEIsT0FBTyxFQUFFLFdBQVc7TUFDcEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsa0JBQWtCLEVBQUUsQ0FDaEI7UUFDSSxNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLElBQUk7UUFDYixVQUFVLEVBQUU7TUFDaEIsQ0FBQyxFQUNEO1FBQ0ksTUFBTSxFQUFFLFVBQVU7UUFDbEIsTUFBTSxFQUFFLFlBQVk7UUFDcEIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixZQUFZLEVBQUUsSUFBSTtRQUNsQixPQUFPLEVBQUUsU0FBUztRQUNsQkMsWUFBWSxFQUFFO1VBQ1ZDLEdBQUcsRUFBRSx3QkFBd0I7VUFDN0JDLFNBQVMsRUFBRSxJQUFJO1VBQ2ZDLFNBQVMsRUFBRTtRQUNmO01BQ0osQ0FBQyxFQUNEO1FBQ0ksTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUUsYUFBYTtRQUNyQixPQUFPLEVBQUU7TUFDYixDQUFDLEVBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsWUFBWTtRQUNwQixPQUFPLEVBQUU7TUFDYixDQUFDLENBQ0o7TUFDRCxrQkFBa0IsRUFBRSxzQkFBc0I7TUFDMUMsWUFBWSxFQUFFO0lBQ2xCLENBQUM7RUFFVCxDQUFDO0FBRVQsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3BhZ2UvZm9ybS5qcz80OTQxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBqc29uID0ge1xuICAgIFwibG9jYWxlXCI6IFwiZXNcIixcbiAgICBcInBhZ2VzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwicGFnZTFcIixcbiAgICAgICAgICAgIFwiZWxlbWVudHNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJOb21icmVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwidXJsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic3RhcnRXaXRoTmV3TGluZVwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIlVybFwiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJyZWFkT25seVwiOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInBhbmVsZHluYW1pY1wiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJzZWN0aW9uc1wiLFxuICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiU2VjY2lvbmVzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGlkZU51bWJlclwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBcInRlbXBsYXRlRWxlbWVudHNcIjogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJJZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicmVhZE9ubHlcIjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJkcm9wZG93blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInNlY3Rpb25faWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInN0YXJ0V2l0aE5ld0xpbmVcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIlNlY2Npw7NuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlc0J5VXJsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXCIvYXBpL3BhZ2UvZ2V0LXNlY3Rpb25zXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTmFtZTogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZU5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkYXRhLT50aXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJUaXR1bG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJjb21tZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZGF0YS0+dGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJUZXh0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIFwidGVtcGxhdGVUYWJUaXRsZVwiOiBcIlNlY2Npw7NuIHtwYW5lbEluZGV4fVwiLFxuICAgICAgICAgICAgICAgICAgICBcInJlbmRlck1vZGVcIjogXCJ0YWJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF1cbn0iXSwibmFtZXMiOlsianNvbiIsImNob2ljZXNCeVVybCIsInVybCIsInZhbHVlTmFtZSIsInRpdGxlTmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/components/admin/page/form.js\n");
/***/ }),
/***/ "./resources/js/components/admin/video/form.js":
/*!*****************************************************!*\
!*** ./resources/js/components/admin/video/form.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ json: () => (/* binding */ json)\n/* harmony export */ });\nvar json = {\n \"locale\": \"es\",\n \"title\": {\n \"default\": \"Alianzas\",\n \"es\": \"Nuevo Video\"\n },\n \"pages\": [{\n \"name\": \"page1\",\n \"elements\": [{\n \"type\": \"dropdown\",\n \"name\": \"page_id\",\n \"title\": \"Página de ubicación\",\n \"hideNumber\": true,\n \"isRequired\": true,\n choicesByUrl: {\n url: \"/api/page/index\",\n valueName: \"id\",\n titleName: \"name\"\n }\n }, {\n \"type\": \"text\",\n \"name\": \"name\",\n \"title\": \"Nombre\",\n \"hideNumber\": true\n }, {\n \"type\": \"comment\",\n \"name\": \"description\",\n \"startWithNewLine\": false,\n \"title\": \"Texto\",\n \"hideNumber\": true\n }, {\n \"type\": \"text\",\n \"name\": \"url\",\n \"title\": \"Url Video\",\n \"hideNumber\": true,\n \"isRequired\": true,\n \"inputType\": \"url\"\n }]\n }],\n \"showCompletedPage\": false\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9hZG1pbi92aWRlby9mb3JtLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxJQUFNQSxJQUFJLEdBQUc7RUFDaEIsUUFBUSxFQUFFLElBQUk7RUFDZCxPQUFPLEVBQUU7SUFDTCxTQUFTLEVBQUUsVUFBVTtJQUNyQixJQUFJLEVBQUU7RUFDVixDQUFDO0VBQ0QsT0FBTyxFQUFFLENBQ0w7SUFDSSxNQUFNLEVBQUUsT0FBTztJQUNmLFVBQVUsRUFBRSxDQUNSO01BQ0ksTUFBTSxFQUFFLFVBQVU7TUFDbEIsTUFBTSxFQUFFLFNBQVM7TUFDakIsT0FBTyxFQUFFLHFCQUFxQjtNQUM5QixZQUFZLEVBQUUsSUFBSTtNQUNsQixZQUFZLEVBQUUsSUFBSTtNQUNsQkMsWUFBWSxFQUFFO1FBQ1ZDLEdBQUcsRUFBRSxpQkFBaUI7UUFDdEJDLFNBQVMsRUFBRSxJQUFJO1FBQ2ZDLFNBQVMsRUFBRTtNQUNmO0lBQ0osQ0FBQyxFQUNEO01BQ0ksTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsTUFBTTtNQUNkLE9BQU8sRUFBRSxRQUFRO01BQ2pCLFlBQVksRUFBRTtJQUNsQixDQUFDLEVBQ0Q7TUFDSSxNQUFNLEVBQUUsU0FBUztNQUNqQixNQUFNLEVBQUUsYUFBYTtNQUNyQixrQkFBa0IsRUFBRSxLQUFLO01BQ3pCLE9BQU8sRUFBRSxPQUFPO01BQ2hCLFlBQVksRUFBRTtJQUNsQixDQUFDLEVBQ0Q7TUFDSSxNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxLQUFLO01BQ2IsT0FBTyxFQUFFLFdBQVc7TUFDcEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsWUFBWSxFQUFFLElBQUk7TUFDbEIsV0FBVyxFQUFFO0lBQ2pCLENBQUM7RUFFVCxDQUFDLENBQ0o7RUFDRCxtQkFBbUIsRUFBRTtBQUN6QixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vdmlkZW8vZm9ybS5qcz8zNDI0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBqc29uID0ge1xuICAgIFwibG9jYWxlXCI6IFwiZXNcIixcbiAgICBcInRpdGxlXCI6IHtcbiAgICAgICAgXCJkZWZhdWx0XCI6IFwiQWxpYW56YXNcIixcbiAgICAgICAgXCJlc1wiOiBcIk51ZXZvIFZpZGVvXCJcbiAgICB9LFxuICAgIFwicGFnZXNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJwYWdlMVwiLFxuICAgICAgICAgICAgXCJlbGVtZW50c1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJkcm9wZG93blwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJwYWdlX2lkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJQw6FnaW5hIGRlIHViaWNhY2nDs25cIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiaXNSZXF1aXJlZFwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjaG9pY2VzQnlVcmw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXCIvYXBpL3BhZ2UvaW5kZXhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTmFtZTogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVOYW1lOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJOb21icmVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoaWRlTnVtYmVyXCI6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiY29tbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBcInN0YXJ0V2l0aE5ld0xpbmVcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogXCJUZXh0b1wiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJ1cmxcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIlVybCBWaWRlb1wiLFxuICAgICAgICAgICAgICAgICAgICBcImhpZGVOdW1iZXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc1JlcXVpcmVkXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXRUeXBlXCI6IFwidXJsXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICBdLFxuICAgIFwic2hvd0NvbXBsZXRlZFBhZ2VcIjogZmFsc2Vcbn07Il0sIm5hbWVzIjpbImpzb24iLCJjaG9pY2VzQnlVcmwiLCJ1cmwiLCJ2YWx1ZU5hbWUiLCJ0aXRsZU5hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/components/admin/video/form.js\n");
/***/ }),
/***/ "./resources/js/directory.js":
/*!***********************************!*\
!*** ./resources/js/directory.js ***!
\***********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! vue-router */ \"./node_modules/vue-router/dist/vue-router.esm.js\");\n/* harmony import */ var _components_admin_widgets_FooterWidget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/admin/widgets/FooterWidget */ \"./resources/js/components/admin/widgets/FooterWidget.vue\");\n/* harmony import */ var _components_admin_widgets_NavbarWidget__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/admin/widgets/NavbarWidget */ \"./resources/js/components/admin/widgets/NavbarWidget.vue\");\n/* harmony import */ var _components_admin_widgets_SidebarWidget__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/admin/widgets/SidebarWidget */ \"./resources/js/components/admin/widgets/SidebarWidget.vue\");\n/* harmony import */ var _desislavsd_vue_select__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @desislavsd/vue-select */ \"./node_modules/@desislavsd/vue-select/dist/vue-select.umd.min.js\");\n/* harmony import */ var _desislavsd_vue_select__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_desislavsd_vue_select__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var vue_data_tables__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-data-tables */ \"./node_modules/vue-data-tables/dist/data-tables.min.js\");\n/* harmony import */ var vue_data_tables__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vue_data_tables__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var element_ui__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\");\n/* harmony import */ var element_ui__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(element_ui__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var element_ui_lib_theme_chalk_index_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! element-ui/lib/theme-chalk/index.css */ \"./node_modules/element-ui/lib/theme-chalk/index.css\");\n/* harmony import */ var element_ui_lib_locale_lang_es__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! element-ui/lib/locale/lang/es */ \"./node_modules/element-ui/lib/locale/lang/es.js\");\n/* harmony import */ var element_ui_lib_locale__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! element-ui/lib/locale */ \"./node_modules/element-ui/lib/locale/index.js\");\n/* harmony import */ var _mathieustan_vue_datepicker__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mathieustan/vue-datepicker */ \"./node_modules/@mathieustan/vue-datepicker/dist/vue-datepicker.esm.js\");\n/* harmony import */ var _mathieustan_vue_datepicker_dist_vue_datepicker_min_css__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mathieustan/vue-datepicker/dist/vue-datepicker.min.css */ \"./node_modules/@mathieustan/vue-datepicker/dist/vue-datepicker.min.css\");\n__webpack_require__(/*! ./bootstrap */ \"./resources/js/bootstrap.js\");\nvar routes = __webpack_require__(/*! ./routes */ \"./resources/js/routes.js\");\n\n//import DirectoryComponent from \"./components/DirectoryComponent\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].use((_desislavsd_vue_select__WEBPACK_IMPORTED_MODULE_4___default()), {\n name: 'vueSelect',\n mixin: {}\n});\nelement_ui_lib_locale__WEBPACK_IMPORTED_MODULE_9__[\"default\"].use(element_ui_lib_locale_lang_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nvar PluginLaravelPermissions = {\n install: function install(Vue, options) {\n Vue.prototype.LaravelPermission = window.LaravelPermission;\n }\n};\nvar PluginAccessToken = {\n install: function install(Vue, options) {\n Vue.prototype.AccessToken = window.AT;\n }\n};\nvar PluginUserData = {\n install: function install(Vue, options) {\n Vue.prototype.UserData = window.localStorage.getItem('userDataIF') ? JSON.parse(window.localStorage.getItem('userDataIF')) : null;\n }\n};\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].filter('formatDate', function (value) {\n if (value) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(String(value)).format('DD/MM/YYYY hh:mm A');\n }\n});\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].filter('formatDateSimple', function (value) {\n if (value) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(String(value)).format('DD/MM/YYYY');\n }\n});\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].use(_mathieustan_vue_datepicker__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].use((element_ui__WEBPACK_IMPORTED_MODULE_6___default()));\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].use(vue_data_tables__WEBPACK_IMPORTED_MODULE_5__.DataTables);\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].use(vue_router__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].use(PluginLaravelPermissions);\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].use(PluginAccessToken);\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].use(PluginUserData);\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].use((_desislavsd_vue_select__WEBPACK_IMPORTED_MODULE_4___default()), {\n name: 'vueSelect',\n mixin: {}\n});\nvue__WEBPACK_IMPORTED_MODULE_12__[\"default\"].prototype.$appName = 'Plataforma de caracterización e indice de fortalecimiento';\nvar router = new vue_router__WEBPACK_IMPORTED_MODULE_13__[\"default\"]({\n routes: routes.routes,\n mode: 'history',\n history: true,\n linkActiveClass: \"active\"\n});\nvar app = new vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]({\n el: '#directory',\n router: router,\n data: {},\n components: {\n NavbarWidget: _components_admin_widgets_NavbarWidget__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n FooterWidget: _components_admin_widgets_FooterWidget__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n SidebarWidget: _components_admin_widgets_SidebarWidget__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n VueDatePicker: _mathieustan_vue_datepicker__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n // DirectoryComponent,\n vueSelect: (_desislavsd_vue_select__WEBPACK_IMPORTED_MODULE_4___default().vueSelect)\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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ZkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsZUFBZSxFQUFFO0FBQ3JCLENBQUMsQ0FBQztBQUtGLElBQU1DLEdBQUcsR0FBRyxJQUFJdkMsNENBQUcsQ0FBQztFQUNoQndDLEVBQUUsRUFBRSxZQUFZO0VBQ2hCTCxNQUFNLEVBQUVBLE1BQU07RUFDZE0sSUFBSSxFQUFFLENBQUMsQ0FBQztFQUNSQyxVQUFVLEVBQUU7SUFDUnRDLFlBQVksRUFBWkEsOEVBQVk7SUFDWkQsWUFBWSxFQUFaQSw4RUFBWTtJQUNaRSxhQUFhLEVBQWJBLCtFQUFhO0lBQ2JNLGFBQWEsRUFBYkEsb0VBQWE7SUFDaEI7SUFDR2dDLFNBQVMsRUFBRXJDLHlFQUFtQnFDO0VBQ2xDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2RpcmVjdG9yeS5qcz84MjBlIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vYm9vdHN0cmFwJyk7XG5jb25zdCByb3V0ZXMgPSByZXF1aXJlKCcuL3JvdXRlcycpO1xuXG5cbmltcG9ydCBWdWUgZnJvbSAndnVlJztcbi8vaW1wb3J0IERpcmVjdG9yeUNvbXBvbmVudCBmcm9tIFwiLi9jb21wb25lbnRzL0RpcmVjdG9yeUNvbXBvbmVudFwiO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IFZ1ZVJvdXRlciBmcm9tICd2dWUtcm91dGVyJztcbmltcG9ydCBGb290ZXJXaWRnZXQgZnJvbSAnLi9jb21wb25lbnRzL2FkbWluL3dpZGdldHMvRm9vdGVyV2lkZ2V0JztcbmltcG9ydCBOYXZiYXJXaWRnZXQgZnJvbSAnLi9jb21wb25lbnRzL2FkbWluL3dpZGdldHMvTmF2YmFyV2lkZ2V0JztcbmltcG9ydCBTaWRlYmFyV2lkZ2V0IGZyb20gJy4vY29tcG9uZW50cy9hZG1pbi93aWRnZXRzL1NpZGViYXJXaWRnZXQnO1xuaW1wb3J0IFZ1ZVNlbGVjdCBmcm9tICdAZGVzaXNsYXZzZC92dWUtc2VsZWN0J1xuaW1wb3J0IHsgRGF0YVRhYmxlcyB9IGZyb20gJ3Z1ZS1kYXRhLXRhYmxlcydcbmltcG9ydCBFbGVtZW50VUkgZnJvbSAnZWxlbWVudC11aSc7XG5pbXBvcnQgJ2VsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2luZGV4LmNzcyc7XG5cbmltcG9ydCBsYW5nIGZyb20gJ2VsZW1lbnQtdWkvbGliL2xvY2FsZS9sYW5nL2VzJztcbmltcG9ydCBsb2NhbGUgZnJvbSAnZWxlbWVudC11aS9saWIvbG9jYWxlJztcbmltcG9ydCBWdWVEYXRlUGlja2VyIGZyb20gJ0BtYXRoaWV1c3Rhbi92dWUtZGF0ZXBpY2tlcic7XG5pbXBvcnQgJ0BtYXRoaWV1c3Rhbi92dWUtZGF0ZXBpY2tlci9kaXN0L3Z1ZS1kYXRlcGlja2VyLm1pbi5jc3MnO1xuXG5cblxuXG5WdWUudXNlKFZ1ZVNlbGVjdCwge1xuICAgIG5hbWU6ICd2dWVTZWxlY3QnLFxuICAgIG1peGluOiB7fVxufSk7XG5cbmxvY2FsZS51c2UobGFuZylcbmNvbnN0IFBsdWdpbkxhcmF2ZWxQZXJtaXNzaW9ucyA9IHtcbiAgICBpbnN0YWxsKFZ1ZSwgb3B0aW9ucykge1xuICAgICAgICBWdWUucHJvdG90eXBlLkxhcmF2ZWxQZXJtaXNzaW9uID0gd2luZG93LkxhcmF2ZWxQZXJtaXNzaW9uO1xuICAgIH0sXG59XG5cbmNvbnN0IFBsdWdpbkFjY2Vzc1Rva2VuID0ge1xuICAgIGluc3RhbGwoVnVlLCBvcHRpb25zKSB7XG4gICAgICAgIFZ1ZS5wcm90b3R5cGUuQWNjZXNzVG9rZW4gPSB3aW5kb3cuQVQ7XG4gICAgfSxcbn1cblxuY29uc3QgUGx1Z2luVXNlckRhdGEgPSB7XG4gICAgaW5zdGFsbChWdWUsIG9wdGlvbnMpIHtcbiAgICAgICAgVnVlLnByb3RvdHlwZS5Vc2VyRGF0YSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlckRhdGFJRicpID8gSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJEYXRhSUYnKSkgOiBudWxsO1xuICAgIH0sXG59XG5cblZ1ZS5maWx0ZXIoJ2Zvcm1hdERhdGUnLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudChTdHJpbmcodmFsdWUpKS5mb3JtYXQoJ0REL01NL1lZWVkgaGg6bW0gQScpXG4gICAgfVxufSk7XG5cblZ1ZS5maWx0ZXIoJ2Zvcm1hdERhdGVTaW1wbGUnLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudChTdHJpbmcodmFsdWUpKS5mb3JtYXQoJ0REL01NL1lZWVknKVxuICAgIH1cbn0pO1xuXG5WdWUudXNlKFZ1ZURhdGVQaWNrZXIpO1xuVnVlLnVzZShFbGVtZW50VUkpO1xuVnVlLnVzZShEYXRhVGFibGVzKTtcblZ1ZS51c2UoVnVlUm91dGVyKTtcblZ1ZS51c2UoUGx1Z2luTGFyYXZlbFBlcm1pc3Npb25zKTtcblZ1ZS51c2UoUGx1Z2luQWNjZXNzVG9rZW4pO1xuVnVlLnVzZShQbHVnaW5Vc2VyRGF0YSk7XG5WdWUudXNlKFZ1ZVNlbGVjdCwge1xuICAgIG5hbWU6ICd2dWVTZWxlY3QnLFxuICAgIG1peGluOiB7fVxufSk7XG5cblZ1ZS5wcm90b3R5cGUuJGFwcE5hbWUgPSAnUGxhdGFmb3JtYSBkZSBjYXJhY3Rlcml6YWNpw7NuIGUgaW5kaWNlIGRlIGZvcnRhbGVjaW1pZW50byc7XG5cbmNvbnN0IHJvdXRlciA9IG5ldyBWdWVSb3V0ZXIoe1xuICAgIHJvdXRlczogcm91dGVzLnJvdXRlcyxcbiAgICBtb2RlOiAnaGlzdG9yeScsXG4gICAgaGlzdG9yeTogdHJ1ZSxcbiAgICBsaW5rQWN0aXZlQ2xhc3M6IFwiYWN0aXZlXCJcbn0pO1xuXG5cblxuXG5jb25zdCBhcHAgPSBuZXcgVnVlKHtcbiAgICBlbDogJyNkaXJlY3RvcnknLFxuICAgIHJvdXRlcjogcm91dGVyLFxuICAgIGRhdGE6IHt9LFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTmF2YmFyV2lkZ2V0LFxuICAgICAgICBGb290ZXJXaWRnZXQsXG4gICAgICAgIFNpZGViYXJXaWRnZXQsXG4gICAgICAgIFZ1ZURhdGVQaWNrZXIsXG4gICAgIC8vICAgRGlyZWN0b3J5Q29tcG9uZW50LFxuICAgICAgICB2dWVTZWxlY3Q6IFZ1ZVNlbGVjdC52dWVTZWxlY3RcbiAgICB9XG59KTtcbiJdLCJuYW1lcyI6WyJyZXF1aXJlIiwicm91dGVzIiwiVnVlIiwibW9tZW50IiwiVnVlUm91dGVyIiwiRm9vdGVyV2lkZ2V0IiwiTmF2YmFyV2lkZ2V0IiwiU2lkZWJhcldpZGdldCIsIlZ1ZVNlbGVjdCIsIkRhdGFUYWJsZXMiLCJFbGVtZW50VUkiLCJsYW5nIiwibG9jYWxlIiwiVnVlRGF0ZVBpY2tlciIsInVzZSIsIm5hbWUiLCJtaXhpbiIsIlBsdWdpbkxhcmF2ZWxQZXJtaXNzaW9ucyIsImluc3RhbGwiLCJvcHRpb25zIiwicHJvdG90eXBlIiwiTGFyYXZlbFBlcm1pc3Npb24iLCJ3aW5kb3ciLCJQbHVnaW5BY2Nlc3NUb2tlbiIsIkFjY2Vzc1Rva2VuIiwiQVQiLCJQbHVnaW5Vc2VyRGF0YSIsIlVzZXJEYXRhIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIkpTT04iLCJwYXJzZSIsImZpbHRlciIsInZhbHVlIiwiU3RyaW5nIiwiZm9ybWF0IiwiJGFwcE5hbWUiLCJyb3V0ZXIiLCJtb2RlIiwiaGlzdG9yeSIsImxpbmtBY3RpdmVDbGFzcyIsImFwcCIsImVsIiwiZGF0YSIsImNvbXBvbmVudHMiLCJ2dWVTZWxlY3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/directory.js\n");
/***/ }),
/***/ "./resources/js/routes.js":
/*!********************************!*\
!*** ./resources/js/routes.js ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ routes: () => (/* binding */ routes)\n/* harmony export */ });\n/* harmony import */ var _components_DashboardComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/DashboardComponent */ \"./resources/js/components/DashboardComponent.vue\");\n/* harmony import */ var _components_admin_banner_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/admin/banner/index */ \"./resources/js/components/admin/banner/index.vue\");\n/* harmony import */ var _components_admin_banner_create__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/admin/banner/create */ \"./resources/js/components/admin/banner/create.vue\");\n/* harmony import */ var _components_admin_banner_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/admin/banner/edit */ \"./resources/js/components/admin/banner/edit.vue\");\n/* harmony import */ var _components_admin_cycle_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/admin/cycle/index */ \"./resources/js/components/admin/cycle/index.vue\");\n/* harmony import */ var _components_admin_cycle_create__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/admin/cycle/create */ \"./resources/js/components/admin/cycle/create.vue\");\n/* harmony import */ var _components_admin_cycle_edit__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/admin/cycle/edit */ \"./resources/js/components/admin/cycle/edit.vue\");\n/* harmony import */ var _components_admin_conference_index__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/admin/conference/index */ \"./resources/js/components/admin/conference/index.vue\");\n/* harmony import */ var _components_admin_conference_create__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/admin/conference/create */ \"./resources/js/components/admin/conference/create.vue\");\n/* harmony import */ var _components_admin_conference_edit__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/admin/conference/edit */ \"./resources/js/components/admin/conference/edit.vue\");\n/* harmony import */ var _components_admin_conference_gallery__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/admin/conference/gallery */ \"./resources/js/components/admin/conference/gallery.vue\");\n/* harmony import */ var _components_admin_library_index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/admin/library/index */ \"./resources/js/components/admin/library/index.vue\");\n/* harmony import */ var _components_admin_library_create__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/admin/library/create */ \"./resources/js/components/admin/library/create.vue\");\n/* harmony import */ var _components_admin_library_edit__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/admin/library/edit */ \"./resources/js/components/admin/library/edit.vue\");\n/* harmony import */ var _components_admin_alliance_index__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/admin/alliance/index */ \"./resources/js/components/admin/alliance/index.vue\");\n/* harmony import */ var _components_admin_alliance_create__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/admin/alliance/create */ \"./resources/js/components/admin/alliance/create.vue\");\n/* harmony import */ var _components_admin_alliance_edit__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/admin/alliance/edit */ \"./resources/js/components/admin/alliance/edit.vue\");\n/* harmony import */ var _components_admin_video_index__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/admin/video/index */ \"./resources/js/components/admin/video/index.vue\");\n/* harmony import */ var _components_admin_video_create__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./components/admin/video/create */ \"./resources/js/components/admin/video/create.vue\");\n/* harmony import */ var _components_admin_video_edit__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./components/admin/video/edit */ \"./resources/js/components/admin/video/edit.vue\");\n/* harmony import */ var _components_admin_course_create__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./components/admin/course/create */ \"./resources/js/components/admin/course/create.vue\");\n/* harmony import */ var _components_admin_course_index__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./components/admin/course/index */ \"./resources/js/components/admin/course/index.vue\");\n/* harmony import */ var _components_admin_course_edit__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./components/admin/course/edit */ \"./resources/js/components/admin/course/edit.vue\");\n/* harmony import */ var _components_admin_page_index__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./components/admin/page/index */ \"./resources/js/components/admin/page/index.vue\");\n/* harmony import */ var _components_admin_page_edit__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./components/admin/page/edit */ \"./resources/js/components/admin/page/edit.vue\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar routes = [\n//Rutas del panel de administración\n{\n path: '/panel-administracion/',\n component: _components_DashboardComponent__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n}, {\n path: '/panel-administracion/banner',\n component: _components_admin_banner_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n}, {\n path: '/panel-administracion/banner/nuevo',\n component: _components_admin_banner_create__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n}, {\n path: '/panel-administracion/banner/:id/editar',\n component: _components_admin_banner_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n}, {\n path: '/panel-administracion/ciclos',\n component: _components_admin_cycle_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n}, {\n path: '/panel-administracion/ciclos/nuevo',\n component: _components_admin_cycle_create__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n}, {\n path: '/panel-administracion/ciclos/:id/editar',\n component: _components_admin_cycle_edit__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n}, {\n path: '/panel-administracion/cursos/nuevo',\n component: _components_admin_course_create__WEBPACK_IMPORTED_MODULE_20__[\"default\"]\n}, {\n path: '/panel-administracion/cursos',\n component: _components_admin_course_index__WEBPACK_IMPORTED_MODULE_21__[\"default\"]\n}, {\n path: '/panel-administracion/cursos/:id/editar',\n component: _components_admin_course_edit__WEBPACK_IMPORTED_MODULE_22__[\"default\"]\n}, {\n path: '/panel-administracion/congresos',\n component: _components_admin_conference_index__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n}, {\n path: '/panel-administracion/congresos/nuevo',\n component: _components_admin_conference_create__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n}, {\n path: '/panel-administracion/congresos/:id/editar',\n component: _components_admin_conference_edit__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n}, {\n path: '/panel-administracion/congresos/:id/galeria',\n component: _components_admin_conference_gallery__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n}, {\n path: '/panel-administracion/biblioteca',\n component: _components_admin_library_index__WEBPACK_IMPORTED_MODULE_11__[\"default\"]\n}, {\n path: '/panel-administracion/biblioteca/nuevo',\n component: _components_admin_library_create__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n}, {\n path: '/panel-administracion/biblioteca/:id/editar',\n component: _components_admin_library_edit__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n}, {\n path: '/panel-administracion/alianzas',\n component: _components_admin_alliance_index__WEBPACK_IMPORTED_MODULE_14__[\"default\"]\n}, {\n path: '/panel-administracion/alianzas/nuevo',\n component: _components_admin_alliance_create__WEBPACK_IMPORTED_MODULE_15__[\"default\"]\n}, {\n path: '/panel-administracion/alianzas/:id/editar',\n component: _components_admin_alliance_edit__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n}, {\n path: '/panel-administracion/video',\n component: _components_admin_video_index__WEBPACK_IMPORTED_MODULE_17__[\"default\"]\n}, {\n path: '/panel-administracion/video/nuevo',\n component: _components_admin_video_create__WEBPACK_IMPORTED_MODULE_18__[\"default\"]\n}, {\n path: '/panel-administracion/video/:id/editar',\n component: _components_admin_video_edit__WEBPACK_IMPORTED_MODULE_19__[\"default\"]\n}, {\n path: '/panel-administracion/paginas',\n component: _components_admin_page_index__WEBPACK_IMPORTED_MODULE_23__[\"default\"]\n}, {\n path: '/panel-administracion/paginas/:id/editar',\n component: _components_admin_page_edit__WEBPACK_IMPORTED_MODULE_24__[\"default\"]\n}];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUVKLHFFQUFpQkE7QUFDaEMsQ0FBQyxFQUNEO0VBQ0lHLElBQUksRUFBRSwwQ0FBMEM7RUFDaERDLFNBQVMsRUFBRUgsb0VBQWlCQTtBQUNoQyxDQUFDLENBRUoiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvcm91dGVzLmpzP2IwYjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERhc2hib2FyZENvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvRGFzaGJvYXJkQ29tcG9uZW50JztcbmltcG9ydCBMaXN0QmFubmVyQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50cy9hZG1pbi9iYW5uZXIvaW5kZXgnO1xuaW1wb3J0IE5ld0Jhbm5lckNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vYmFubmVyL2NyZWF0ZSc7XG5pbXBvcnQgRWRpdEJhbm5lckNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vYmFubmVyL2VkaXQnO1xuaW1wb3J0IExpc3RDeWNsZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vY3ljbGUvaW5kZXgnO1xuaW1wb3J0IE5ld0N5Y2xlQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50cy9hZG1pbi9jeWNsZS9jcmVhdGUnO1xuaW1wb3J0IEVkaXRDeWNsZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vY3ljbGUvZWRpdCc7XG5pbXBvcnQgTGlzdENvbmZlcmVuY2VDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnRzL2FkbWluL2NvbmZlcmVuY2UvaW5kZXgnO1xuaW1wb3J0IE5ld0NvbmZlcmVuY2VDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnRzL2FkbWluL2NvbmZlcmVuY2UvY3JlYXRlJztcbmltcG9ydCBFZGl0Q29uZmVyZW5jZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9lZGl0JztcbmltcG9ydCBHYWxsZXJ5Q29uZmVyZW5jZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vY29uZmVyZW5jZS9nYWxsZXJ5JztcbmltcG9ydCBMaXN0TGlicmFyeUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vbGlicmFyeS9pbmRleCc7XG5pbXBvcnQgTmV3TGlicmFyeUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vbGlicmFyeS9jcmVhdGUnO1xuaW1wb3J0IEVkaXRMaWJyYXJ5Q29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50cy9hZG1pbi9saWJyYXJ5L2VkaXQnO1xuaW1wb3J0IExpc3RBbGxpYW5jZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vYWxsaWFuY2UvaW5kZXgnO1xuaW1wb3J0IE5ld0FsbGlhbmNlQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50cy9hZG1pbi9hbGxpYW5jZS9jcmVhdGUnO1xuaW1wb3J0IEVkaXRBbGxpYW5jZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vYWxsaWFuY2UvZWRpdCc7XG5pbXBvcnQgTGlzdFZpZGVvQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50cy9hZG1pbi92aWRlby9pbmRleCc7XG5pbXBvcnQgTmV3VmlkZW9Db21wb25lbnQgZnJvbSAnLi9jb21wb25lbnRzL2FkbWluL3ZpZGVvL2NyZWF0ZSc7XG5pbXBvcnQgRWRpdFZpZGVvQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50cy9hZG1pbi92aWRlby9lZGl0JztcbmltcG9ydCBOZXdDb3Vyc2VDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnRzL2FkbWluL2NvdXJzZS9jcmVhdGUnO1xuaW1wb3J0IExpc3RDb3Vyc2VDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnRzL2FkbWluL2NvdXJzZS9pbmRleCc7XG5pbXBvcnQgRWRpdENvdXJzZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vY291cnNlL2VkaXQnO1xuaW1wb3J0IExpc3RQYWdlQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50cy9hZG1pbi9wYWdlL2luZGV4JztcbmltcG9ydCBFZGl0UGFnZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudHMvYWRtaW4vcGFnZS9lZGl0JztcblxuXG5leHBvcnQgY29uc3Qgcm91dGVzID0gW1xuICAgIC8vUnV0YXMgZGVsIHBhbmVsIGRlIGFkbWluaXN0cmFjacOzblxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi8nLFxuICAgICAgICBjb21wb25lbnQ6IERhc2hib2FyZENvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgICBwYXRoOiAnL3BhbmVsLWFkbWluaXN0cmFjaW9uL2Jhbm5lcicsXG4gICAgICAgIGNvbXBvbmVudDogTGlzdEJhbm5lckNvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgICBwYXRoOiAnL3BhbmVsLWFkbWluaXN0cmFjaW9uL2Jhbm5lci9udWV2bycsXG4gICAgICAgIGNvbXBvbmVudDogTmV3QmFubmVyQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICAgIHBhdGg6ICcvcGFuZWwtYWRtaW5pc3RyYWNpb24vYmFubmVyLzppZC9lZGl0YXInLFxuICAgICAgICBjb21wb25lbnQ6IEVkaXRCYW5uZXJDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jaWNsb3MnLFxuICAgICAgICBjb21wb25lbnQ6IExpc3RDeWNsZUNvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgICBwYXRoOiAnL3BhbmVsLWFkbWluaXN0cmFjaW9uL2NpY2xvcy9udWV2bycsXG4gICAgICAgIGNvbXBvbmVudDogTmV3Q3ljbGVDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jaWNsb3MvOmlkL2VkaXRhcicsXG4gICAgICAgIGNvbXBvbmVudDogRWRpdEN5Y2xlQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICAgIHBhdGg6ICcvcGFuZWwtYWRtaW5pc3RyYWNpb24vY3Vyc29zL251ZXZvJyxcbiAgICAgICAgY29tcG9uZW50OiBOZXdDb3Vyc2VDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jdXJzb3MnLFxuICAgICAgICBjb21wb25lbnQ6IExpc3RDb3Vyc2VDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jdXJzb3MvOmlkL2VkaXRhcicsXG4gICAgICAgIGNvbXBvbmVudDogRWRpdENvdXJzZUNvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgICBwYXRoOiAnL3BhbmVsLWFkbWluaXN0cmFjaW9uL2NvbmdyZXNvcycsXG4gICAgICAgIGNvbXBvbmVudDogTGlzdENvbmZlcmVuY2VDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jb25ncmVzb3MvbnVldm8nLFxuICAgICAgICBjb21wb25lbnQ6IE5ld0NvbmZlcmVuY2VDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jb25ncmVzb3MvOmlkL2VkaXRhcicsXG4gICAgICAgIGNvbXBvbmVudDogRWRpdENvbmZlcmVuY2VDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9jb25ncmVzb3MvOmlkL2dhbGVyaWEnLFxuICAgICAgICBjb21wb25lbnQ6IEdhbGxlcnlDb25mZXJlbmNlQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICAgIHBhdGg6ICcvcGFuZWwtYWRtaW5pc3RyYWNpb24vYmlibGlvdGVjYScsXG4gICAgICAgIGNvbXBvbmVudDogTGlzdExpYnJhcnlDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9iaWJsaW90ZWNhL251ZXZvJyxcbiAgICAgICAgY29tcG9uZW50OiBOZXdMaWJyYXJ5Q29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICAgIHBhdGg6ICcvcGFuZWwtYWRtaW5pc3RyYWNpb24vYmlibGlvdGVjYS86aWQvZWRpdGFyJyxcbiAgICAgICAgY29tcG9uZW50OiBFZGl0TGlicmFyeUNvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgICBwYXRoOiAnL3BhbmVsLWFkbWluaXN0cmFjaW9uL2FsaWFuemFzJyxcbiAgICAgICAgY29tcG9uZW50OiBMaXN0QWxsaWFuY2VDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9hbGlhbnphcy9udWV2bycsXG4gICAgICAgIGNvbXBvbmVudDogTmV3QWxsaWFuY2VDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9hbGlhbnphcy86aWQvZWRpdGFyJyxcbiAgICAgICAgY29tcG9uZW50OiBFZGl0QWxsaWFuY2VDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi92aWRlbycsXG4gICAgICAgIGNvbXBvbmVudDogTGlzdFZpZGVvQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICAgIHBhdGg6ICcvcGFuZWwtYWRtaW5pc3RyYWNpb24vdmlkZW8vbnVldm8nLFxuICAgICAgICBjb21wb25lbnQ6IE5ld1ZpZGVvQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICAgIHBhdGg6ICcvcGFuZWwtYWRtaW5pc3RyYWNpb24vdmlkZW8vOmlkL2VkaXRhcicsXG4gICAgICAgIGNvbXBvbmVudDogRWRpdFZpZGVvQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICAgIHBhdGg6ICcvcGFuZWwtYWRtaW5pc3RyYWNpb24vcGFnaW5hcycsXG4gICAgICAgIGNvbXBvbmVudDogTGlzdFBhZ2VDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogJy9wYW5lbC1hZG1pbmlzdHJhY2lvbi9wYWdpbmFzLzppZC9lZGl0YXInLFxuICAgICAgICBjb21wb25lbnQ6IEVkaXRQYWdlQ29tcG9uZW50XG4gICAgfSxcblxuXTtcblxuXG4iXSwibmFtZXMiOlsiRGFzaGJvYXJkQ29tcG9uZW50IiwiTGlzdEJhbm5lckNvbXBvbmVudCIsIk5ld0Jhbm5lckNvbXBvbmVudCIsIkVkaXRCYW5uZXJDb21wb25lbnQiLCJMaXN0Q3ljbGVDb21wb25lbnQiLCJOZXdDeWNsZUNvbXBvbmVudCIsIkVkaXRDeWNsZUNvbXBvbmVudCIsIkxpc3RDb25mZXJlbmNlQ29tcG9uZW50IiwiTmV3Q29uZmVyZW5jZUNvbXBvbmVudCIsIkVkaXRDb25mZXJlbmNlQ29tcG9uZW50IiwiR2FsbGVyeUNvbmZlcmVuY2VDb21wb25lbnQiLCJMaXN0TGlicmFyeUNvbXBvbmVudCIsIk5ld0xpYnJhcnlDb21wb25lbnQiLCJFZGl0TGlicmFyeUNvbXBvbmVudCIsIkxpc3RBbGxpYW5jZUNvbXBvbmVudCIsIk5ld0FsbGlhbmNlQ29tcG9uZW50IiwiRWRpdEFsbGlhbmNlQ29tcG9uZW50IiwiTGlzdFZpZGVvQ29tcG9uZW50IiwiTmV3VmlkZW9Db21wb25lbnQiLCJFZGl0VmlkZW9Db21wb25lbnQiLCJOZXdDb3Vyc2VDb21wb25lbnQiLCJMaXN0Q291cnNlQ29tcG9uZW50IiwiRWRpdENvdXJzZUNvbXBvbmVudCIsIkxpc3RQYWdlQ29tcG9uZW50IiwiRWRpdFBhZ2VDb21wb25lbnQiLCJyb3V0ZXMiLCJwYXRoIiwiY29tcG9uZW50Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/routes.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/core-js/object/assign.js":
/*!*************************************************************!*\
!*** ./node_modules/babel-runtime/core-js/object/assign.js ***!
\*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/assign */ \"./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js\"), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9hc3NpZ24uanMiLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLFdBQVcsbUJBQU8sQ0FBQyx1SEFBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9hc3NpZ24uanM/ZWVlMyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2Fzc2lnblwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/core-js/object/assign.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/core-js/symbol.js":
/*!******************************************************!*\
!*** ./node_modules/babel-runtime/core-js/symbol.js ***!
\******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol */ \"./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js\"), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsV0FBVyxtQkFBTyxDQUFDLCtHQUEyQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzPzViOWEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbFwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/core-js/symbol.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/core-js/symbol/iterator.js":
/*!***************************************************************!*\
!*** ./node_modules/babel-runtime/core-js/symbol/iterator.js ***!
\***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol/iterator */ \"./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js\"), __esModule: true };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsV0FBVyxtQkFBTyxDQUFDLDJIQUFvQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzPzExNTIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/core-js/symbol/iterator.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/helpers/extends.js":
/*!*******************************************************!*\
!*** ./node_modules/babel-runtime/helpers/extends.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _assign = __webpack_require__(/*! ../core-js/object/assign */ \"./node_modules/babel-runtime/core-js/object/assign.js\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports[\"default\"] = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2V4dGVuZHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCOztBQUVsQixjQUFjLG1CQUFPLENBQUMsdUZBQTBCOztBQUVoRDs7QUFFQSx1Q0FBdUMsdUNBQXVDOztBQUU5RSxrQkFBZTtBQUNmLGtCQUFrQixzQkFBc0I7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2V4dGVuZHMuanM/ZWNiMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvYXNzaWduXCIpO1xuXG52YXIgX2Fzc2lnbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NpZ24pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBfYXNzaWduMi5kZWZhdWx0IHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/helpers/extends.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/helpers/typeof.js":
/*!******************************************************!*\
!*** ./node_modules/babel-runtime/helpers/typeof.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(/*! ../core-js/symbol/iterator */ \"./node_modules/babel-runtime/core-js/symbol/iterator.js\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(/*! ../core-js/symbol */ \"./node_modules/babel-runtime/core-js/symbol.js\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports[\"default\"] = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7O0FBRWxCLGdCQUFnQixtQkFBTyxDQUFDLDJGQUE0Qjs7QUFFcEQ7O0FBRUEsY0FBYyxtQkFBTyxDQUFDLHlFQUFtQjs7QUFFekM7O0FBRUEsa0hBQWtILHFCQUFxQixtQkFBbUI7O0FBRTFKLHVDQUF1Qyx1Q0FBdUM7O0FBRTlFLGtCQUFlO0FBQ2Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzP2UxM2EiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfaXRlcmF0b3IgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2wvaXRlcmF0b3JcIik7XG5cbnZhciBfaXRlcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXRlcmF0b3IpO1xuXG52YXIgX3N5bWJvbCA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL3N5bWJvbFwiKTtcblxudmFyIF9zeW1ib2wyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3ltYm9sKTtcblxudmFyIF90eXBlb2YgPSB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBfaXRlcmF0b3IyLmRlZmF1bHQgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiBfdHlwZW9mKF9pdGVyYXRvcjIuZGVmYXVsdCkgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2Yob2JqKTtcbn0gOiBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBvYmogJiYgdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IF9zeW1ib2wyLmRlZmF1bHQgJiYgb2JqICE9PSBfc3ltYm9sMi5kZWZhdWx0LnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2Yob2JqKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/helpers/typeof.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js":
/*!*************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js ***!
\*************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("__webpack_require__(/*! ../../modules/es6.object.assign */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\").Object.assign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9hc3NpZ24uanMiLCJtYXBwaW5ncyI6IkFBQUEsbUJBQU8sQ0FBQywrSEFBaUM7QUFDekMsMkpBQTZEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzP2NkOGUiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmFzc2lnbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js":
/*!************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js ***!
\************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("__webpack_require__(/*! ../../modules/es6.symbol */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js\");\n__webpack_require__(/*! ../../modules/es6.object.to-string */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.to-string.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.observable */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\").Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtQkFBTyxDQUFDLGlIQUEwQjtBQUNsQyxtQkFBTyxDQUFDLHFJQUFvQztBQUM1QyxtQkFBTyxDQUFDLCtJQUF5QztBQUNqRCxtQkFBTyxDQUFDLHVJQUFxQztBQUM3QyxvSkFBc0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcz8yNzA5Il0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js ***!
\***************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("__webpack_require__(/*! ../../modules/es6.string.iterator */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../../modules/web.dom.iterable */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js\");\nmodule.exports = (__webpack_require__(/*! ../../modules/_wks-ext */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js\").f)('iterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtQkFBTyxDQUFDLG1JQUFtQztBQUMzQyxtQkFBTyxDQUFDLDZIQUFnQztBQUN4QyxpQkFBaUIsc0lBQW1DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3IuanM/ZmU1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL193a3MtZXh0JykuZignaXRlcmF0b3InKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js":
/*!****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js ***!
\****************************************************************************************/
/***/ ((module) => {
eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/YmY5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js":
/*!************************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js ***!
\************************************************************************************************/
/***/ ((module) => {
eval("module.exports = function () { /* empty */ };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz8wNTRlIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js ***!
\***************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscUdBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz82YjY5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js":
/*!********************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js ***!
\********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxnQkFBZ0IsbUJBQU8sQ0FBQyx1R0FBZTtBQUN2QyxlQUFlLG1CQUFPLENBQUMscUdBQWM7QUFDckMsc0JBQXNCLG1CQUFPLENBQUMscUhBQXNCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxXQUFXLGdCQUFnQjtBQUNqQztBQUNBLE1BQU07QUFDTjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcz80YTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js":
/*!*********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js ***!
\*********************************************************************************/
/***/ ((module) => {
eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcyIsIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzPzU0MDUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js":
/*!**********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js ***!
\**********************************************************************************/
/***/ ((module) => {
eval("var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanMiLCJtYXBwaW5ncyI6IkFBQUEsOEJBQThCO0FBQzlCLHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcz9mNjFhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuMTInIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js":
/*!*********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js ***!
\*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLHVHQUFlO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzPzFlMmEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js":
/*!*************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js ***!
\*************************************************************************************/
/***/ ((module) => {
eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVmaW5lZC5qcz85MDNiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js ***!
\*****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsNkZBQVU7QUFDcEMsaUNBQWlDLFNBQVMsbUJBQW1CLGFBQWE7QUFDMUUsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanM/ODNkZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js":
/*!****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js ***!
\****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\nvar document = (__webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\").document);\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFHQUFjO0FBQ3JDLGVBQWUsK0hBQTZCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/Y2IxYiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!*******************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js ***!
\*******************************************************************************************/
/***/ ((module) => {
eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/OTk3YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js ***!
\***************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js\");\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyx5R0FBZ0I7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLHlHQUFnQjtBQUNuQyxVQUFVLG1CQUFPLENBQUMsdUdBQWU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWtleXMuanM/NDVlZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhbGwgZW51bWVyYWJsZSBvYmplY3Qga2V5cywgaW5jbHVkZXMgc3ltYm9sc1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciByZXN1bHQgPSBnZXRLZXlzKGl0KTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIGlmIChnZXRTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KTtcbiAgICB2YXIgaXNFbnVtID0gcElFLmY7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKHN5bWJvbHMubGVuZ3RoID4gaSkgaWYgKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js":
/*!************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js ***!
\************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsK0ZBQVc7QUFDaEMsV0FBVyxtQkFBTyxDQUFDLDJGQUFTO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyx5RkFBUTtBQUMxQixXQUFXLG1CQUFPLENBQUMsMkZBQVM7QUFDNUIsVUFBVSxtQkFBTyxDQUFDLHlGQUFRO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0Esa0ZBQWtGO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGlCQUFpQjtBQUNqQixpQkFBaUI7QUFDakIsaUJBQWlCO0FBQ2pCLGlCQUFpQjtBQUNqQixpQkFBaUI7QUFDakIsaUJBQWlCO0FBQ2pCLGlCQUFpQjtBQUNqQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzPzgwNWMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js":
/*!***********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js ***!
\***********************************************************************************/
/***/ ((module) => {
eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzk3ZWUiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js":
/*!************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js ***!
\************************************************************************************/
/***/ ((module) => {
eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanM/OTVhMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5pZiAodHlwZW9mIF9fZyA9PSAnbnVtYmVyJykgX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js":
/*!*********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js ***!
\*********************************************************************************/
/***/ ((module) => {
eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanM/NTFjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js":
/*!**********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js ***!
\**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanMiLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxtQkFBTyxDQUFDLHFHQUFjO0FBQy9CLGlCQUFpQixtQkFBTyxDQUFDLDZHQUFrQjtBQUMzQyxpQkFBaUIsbUJBQU8sQ0FBQyx5R0FBZ0I7QUFDekM7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzP2MyZTAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js":
/*!**********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js ***!
\**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var document = (__webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\").document);\nmodule.exports = document && document.documentElement;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanMiLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSwrSEFBNkI7QUFDNUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/N2E3NyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!********************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js ***!
\********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\")(function () {\n return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLHlHQUFnQixNQUFNLG1CQUFPLENBQUMsNkZBQVU7QUFDbEUsK0JBQStCLG1CQUFPLENBQUMsdUdBQWUsaUJBQWlCLG1CQUFtQixhQUFhO0FBQ3ZHLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzRmNGEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js":
/*!*************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js ***!
\*************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxVQUFVLG1CQUFPLENBQUMseUZBQVE7QUFDMUI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/M2QxNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js":
/*!**************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js ***!
\**************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js\");\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsVUFBVSxtQkFBTyxDQUFDLHlGQUFRO0FBQzFCO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanM/NjU5MCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js ***!
\***************************************************************************************/
/***/ ((module) => {
eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcz9lMjNjIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js ***!
\*****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\nvar create = __webpack_require__(/*! ./_object-create */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js\");\nvar descriptor = __webpack_require__(/*! ./_property-desc */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(/*! ./_hide */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\")(IteratorPrototype, __webpack_require__(/*! ./_wks */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsYUFBYSxtQkFBTyxDQUFDLDZHQUFrQjtBQUN2QyxpQkFBaUIsbUJBQU8sQ0FBQyw2R0FBa0I7QUFDM0MscUJBQXFCLG1CQUFPLENBQUMscUhBQXNCO0FBQ25EOztBQUVBO0FBQ0EsbUJBQU8sQ0FBQywyRkFBUyxxQkFBcUIsbUJBQU8sQ0FBQyx5RkFBUSw2QkFBNkIsY0FBYzs7QUFFakc7QUFDQSxzREFBc0QsMkJBQTJCO0FBQ2pGO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2RmOGYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js ***!
\*****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js\");\nvar $iterCreate = __webpack_require__(/*! ./_iter-create */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsY0FBYyxtQkFBTyxDQUFDLGlHQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQywrRkFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMsbUdBQWE7QUFDcEMsV0FBVyxtQkFBTyxDQUFDLDJGQUFTO0FBQzVCLGdCQUFnQixtQkFBTyxDQUFDLHFHQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLHlHQUFnQjtBQUMxQyxxQkFBcUIsbUJBQU8sQ0FBQyxxSEFBc0I7QUFDbkQscUJBQXFCLG1CQUFPLENBQUMsdUdBQWU7QUFDNUMsZUFBZSxtQkFBTyxDQUFDLHlGQUFRO0FBQy9CLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7O0FBRUEsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDLDhDQUE4QztBQUM5QyxNQUFNLDRCQUE0QjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1CQUFtQjtBQUNuQztBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanM/YjMyYiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgJGl0ZXJDcmVhdGUgPSByZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpOyAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG52YXIgRkZfSVRFUkFUT1IgPSAnQEBpdGVyYXRvcic7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGtpbmQpIHtcbiAgICBpZiAoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pIHJldHVybiBwcm90b1traW5kXTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTO1xuICB2YXIgVkFMVUVTX0JVRyA9IGZhbHNlO1xuICB2YXIgcHJvdG8gPSBCYXNlLnByb3RvdHlwZTtcbiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07XG4gIHZhciAkZGVmYXVsdCA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpO1xuICB2YXIgJGVudHJpZXMgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkO1xuICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7XG4gIHZhciBtZXRob2RzLCBrZXksIEl0ZXJhdG9yUHJvdG90eXBlO1xuICAvLyBGaXggbmF0aXZlXG4gIGlmICgkYW55TmF0aXZlKSB7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYgKCFMSUJSQVJZICYmIHR5cGVvZiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcbiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7XG4gICAgaGlkZShwcm90bywgSVRFUkFUT1IsICRkZWZhdWx0KTtcbiAgfVxuICAvLyBQbHVnIGZvciBsaWJyYXJ5XG4gIEl0ZXJhdG9yc1tOQU1FXSA9ICRkZWZhdWx0O1xuICBJdGVyYXRvcnNbVEFHXSA9IHJldHVyblRoaXM7XG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoIShrZXkgaW4gcHJvdG8pKSByZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js ***!
\***************************************************************************************/
/***/ ((module) => {
eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFdBQVc7QUFDWCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzP2IzNDciXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js ***!
\***************************************************************************************/
/***/ ((module) => {
eval("module.exports = {};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzPzRlMzMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js":
/*!*************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js ***!
\*************************************************************************************/
/***/ ((module) => {
eval("module.exports = true;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/YTUzZSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js":
/*!**********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js ***!
\**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var META = __webpack_require__(/*! ./_uid */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\")('meta');\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\nvar setDesc = (__webpack_require__(/*! ./_object-dp */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\").f);\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\")(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanMiLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLHlGQUFRO0FBQzNCLGVBQWUsbUJBQU8sQ0FBQyxxR0FBYztBQUNyQyxVQUFVLG1CQUFPLENBQUMseUZBQVE7QUFDMUIsY0FBYyw4SEFBeUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG1CQUFPLENBQUMsNkZBQVU7QUFDaEMsaURBQWlEO0FBQ2pELENBQUM7QUFDRDtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBLG1CQUFtQjtBQUNuQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19tZXRhLmpzPzc4OWUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIE1FVEEgPSByZXF1aXJlKCcuL191aWQnKSgnbWV0YScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgc2V0RGVzYyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaWQgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgRlJFRVpFID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBzZXREZXNjKGl0LCBNRVRBLCB7IHZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBXS53O1xufTtcbi8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xudmFyIG9uRnJlZXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiBNRVRBLFxuICBORUVEOiBmYWxzZSxcbiAgZmFzdEtleTogZmFzdEtleSxcbiAgZ2V0V2VhazogZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js":
/*!*******************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js ***!
\*******************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1hc3NpZ24uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBLGtCQUFrQixtQkFBTyxDQUFDLHlHQUFnQjtBQUMxQyxjQUFjLG1CQUFPLENBQUMseUdBQWdCO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQyx5R0FBZ0I7QUFDbkMsVUFBVSxtQkFBTyxDQUFDLHVHQUFlO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxR0FBYztBQUNyQyxjQUFjLG1CQUFPLENBQUMsaUdBQVk7QUFDbEM7O0FBRUE7QUFDQSw2QkFBNkIsbUJBQU8sQ0FBQyw2RkFBVTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsV0FBVztBQUNoRCxtQkFBbUIsc0NBQXNDO0FBQ3pELENBQUMsc0NBQXNDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtYXNzaWduLmpzPzM5ODUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHZhciBBID0ge307XG4gIHZhciBCID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICB2YXIgUyA9IFN5bWJvbCgpO1xuICB2YXIgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7IEJba10gPSBrOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW1NdICE9IDcgfHwgT2JqZWN0LmtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IEs7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUID0gdG9PYmplY3QodGFyZ2V0KTtcbiAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICB3aGlsZSAoYUxlbiA+IGluZGV4KSB7XG4gICAgdmFyIFMgPSBJT2JqZWN0KGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgdmFyIGtleXMgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBpc0VudW0uY2FsbChTLCBrZXkpKSBUW2tleV0gPSBTW2tleV07XG4gICAgfVxuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js":
/*!*******************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js ***!
\*******************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\");\nvar dPs = __webpack_require__(/*! ./_object-dps */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(/*! ./_dom-create */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n (__webpack_require__(/*! ./_html */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js\").appendChild)(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxlQUFlLG1CQUFPLENBQUMscUdBQWM7QUFDckMsVUFBVSxtQkFBTyxDQUFDLHVHQUFlO0FBQ2pDLGtCQUFrQixtQkFBTyxDQUFDLDZHQUFrQjtBQUM1QyxlQUFlLG1CQUFPLENBQUMsdUdBQWU7QUFDdEMsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyx1R0FBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSw4SEFBOEI7QUFDaEMsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qcz83Mzk1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js ***!
\***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscUdBQWM7QUFDckMscUJBQXFCLG1CQUFPLENBQUMsK0dBQW1CO0FBQ2hELGtCQUFrQixtQkFBTyxDQUFDLDJHQUFpQjtBQUMzQzs7QUFFQSxTQUFTLEdBQUcsbUJBQU8sQ0FBQyx5R0FBZ0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksWUFBWTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzP2E5YTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js":
/*!****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js ***!
\****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\");\n\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanMiLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxtQkFBTyxDQUFDLHFHQUFjO0FBQy9CLGVBQWUsbUJBQU8sQ0FBQyxxR0FBYztBQUNyQyxjQUFjLG1CQUFPLENBQUMseUdBQWdCOztBQUV0QyxpQkFBaUIsbUJBQU8sQ0FBQyx5R0FBZ0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qcz9iMmRhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js ***!
\*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("var pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzIiwibWFwcGluZ3MiOiJBQUFBLFVBQVUsbUJBQU8sQ0FBQyx1R0FBZTtBQUNqQyxpQkFBaUIsbUJBQU8sQ0FBQyw2R0FBa0I7QUFDM0MsZ0JBQWdCLG1CQUFPLENBQUMsdUdBQWU7QUFDdkMsa0JBQWtCLG1CQUFPLENBQUMsMkdBQWlCO0FBQzNDLFVBQVUsbUJBQU8sQ0FBQyx5RkFBUTtBQUMxQixxQkFBcUIsbUJBQU8sQ0FBQywrR0FBbUI7QUFDaEQ7O0FBRUEsU0FBUyxHQUFHLG1CQUFPLENBQUMseUdBQWdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxZQUFZO0FBQ2hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzP2Q4OTQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZ09QRChPLCBQKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js":
/*!*********************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js ***!
\*********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\nvar gOPN = (__webpack_require__(/*! ./_object-gopn */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js\").f);\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLHVHQUFlO0FBQ3ZDLFdBQVcsa0lBQTJCO0FBQ3RDLGlCQUFpQjs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBLGdCQUFnQjtBQUNoQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi1leHQuanM/NWUwZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uIChpdCkge1xuICB0cnkge1xuICAgIHJldHVybiBnT1BOKGl0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScgPyBnZXRXaW5kb3dOYW1lcyhpdCkgOiBnT1BOKHRvSU9iamVjdChpdCkpO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js ***!
\*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar hiddenKeys = (__webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js\").concat)('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BuLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsWUFBWSxtQkFBTyxDQUFDLDJIQUF5QjtBQUM3QyxpQkFBaUIsMklBQWtDOztBQUVuRCxTQUFTO0FBQ1Q7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4uanM/ODUzNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuNyAvIDE1LjIuMy40IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJykuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gJGtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js ***!
\*****************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("exports.f = Object.getOwnPropertySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzIiwibWFwcGluZ3MiOiJBQUFBLFNBQVMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzPzkwMTQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js":
/*!****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js ***!
\****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxVQUFVLG1CQUFPLENBQUMseUZBQVE7QUFDMUIsZUFBZSxtQkFBTyxDQUFDLHFHQUFjO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyx1R0FBZTtBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzPzEwZDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js":
/*!**************************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js ***!
\**************************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzIiwibWFwcGluZ3MiOiJBQUFBLFVBQVUsbUJBQU8sQ0FBQyx5RkFBUTtBQUMxQixnQkFBZ0IsbUJBQU8sQ0FBQyx1R0FBZTtBQUN2QyxtQkFBbUIsbUJBQU8sQ0FBQywrR0FBbUI7QUFDOUMsZUFBZSxtQkFBTyxDQUFDLHVHQUFlOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzU2ZTgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js ***!
\*****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsWUFBWSxtQkFBTyxDQUFDLDJIQUF5QjtBQUM3QyxrQkFBa0IsbUJBQU8sQ0FBQyw2R0FBa0I7O0FBRTVDO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMuanM/NTA0NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js":
/*!****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js ***!
\****************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("exports.f = {}.propertyIsEnumerable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanMiLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxLQUFLIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzPzk4ZTIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js":
/*!*******************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js ***!
\*******************************************************************************************/
/***/ ((module) => {
eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qcz85NzM1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js":
/*!**************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js ***!
\**************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports = __webpack_require__(/*! ./_hide */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzIiwibWFwcGluZ3MiOiJBQUFBLGlJQUFtQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanM/MmE5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js ***!
\***********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var def = (__webpack_require__(/*! ./_object-dp */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\").f);\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzIiwibWFwcGluZ3MiOiJBQUFBLFVBQVUsOEhBQXlCO0FBQ25DLFVBQVUsbUJBQU8sQ0FBQyx5RkFBUTtBQUMxQixVQUFVLG1CQUFPLENBQUMseUZBQVE7O0FBRTFCO0FBQ0EscUVBQXFFLGdDQUFnQztBQUNyRyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanM/ZTNjYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHRhZywgc3RhdCkge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js":
/*!****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js ***!
\****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var shared = __webpack_require__(/*! ./_shared */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJtYXBwaW5ncyI6IkFBQUEsYUFBYSxtQkFBTyxDQUFDLCtGQUFXO0FBQ2hDLFVBQVUsbUJBQU8sQ0FBQyx5RkFBUTtBQUMxQjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/MTE1OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js":
/*!************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js ***!
\************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var core = __webpack_require__(/*! ./_core */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(/*! ./_library */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\") ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxXQUFXLG1CQUFPLENBQUMsMkZBQVM7QUFDNUIsYUFBYSxtQkFBTyxDQUFDLCtGQUFXO0FBQ2hDO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLHFFQUFxRTtBQUNyRSxDQUFDO0FBQ0Q7QUFDQSxRQUFRLG1CQUFPLENBQUMsaUdBQVk7QUFDNUI7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanM/ODFkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMjAgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js ***!
\***************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx1R0FBZTtBQUN2QyxjQUFjLG1CQUFPLENBQUMsaUdBQVk7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanM/OWE5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js ***!
\***********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHVHQUFlO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanM/ZDZmZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js":
/*!****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js ***!
\****************************************************************************************/
/***/ ((module) => {
eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzP2QwZTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js":
/*!****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js ***!
\****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxjQUFjLG1CQUFPLENBQUMsaUdBQVk7QUFDbEMsY0FBYyxtQkFBTyxDQUFDLGlHQUFZO0FBQ2xDO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qcz81OWE2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js ***!
\***************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLHVHQUFlO0FBQ3ZDO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz83Y2IyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js ***!
\***************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxpR0FBWTtBQUNsQztBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9mZDlkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js":
/*!******************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js ***!
\******************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxxR0FBYztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzP2Q0M2IiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js":
/*!*********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js ***!
\*********************************************************************************/
/***/ ((module) => {
eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanM/OTYyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js":
/*!****************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js ***!
\****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js\");\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js\");\nvar defineProperty = (__webpack_require__(/*! ./_object-dp */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\").f);\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanMiLCJtYXBwaW5ncyI6IkFBQUEsYUFBYSxtQkFBTyxDQUFDLCtGQUFXO0FBQ2hDLFdBQVcsbUJBQU8sQ0FBQywyRkFBUztBQUM1QixjQUFjLG1CQUFPLENBQUMsaUdBQVk7QUFDbEMsYUFBYSxtQkFBTyxDQUFDLGlHQUFZO0FBQ2pDLHFCQUFxQiw4SEFBeUI7QUFDOUM7QUFDQSwyREFBMkQscUJBQXFCO0FBQ2hGLG1GQUFtRix1QkFBdUI7QUFDMUciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1kZWZpbmUuanM/YzM4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js":
/*!*************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js ***!
\*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("exports.f = __webpack_require__(/*! ./_wks */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanMiLCJtYXBwaW5ncyI6IkFBQUEsMEhBQTZCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzPzJkOGYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fd2tzJyk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js":
/*!*********************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js ***!
\*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("var store = __webpack_require__(/*! ./_shared */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js\")('wks');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\");\nvar Symbol = (__webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\").Symbol);\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxZQUFZLG1CQUFPLENBQUMsK0ZBQVc7QUFDL0IsVUFBVSxtQkFBTyxDQUFDLHlGQUFRO0FBQzFCLGFBQWEsNkhBQTJCO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanM/Njk2YSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js ***!
\***********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\nvar addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js\");\nvar step = __webpack_require__(/*! ./_iter-step */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(/*! ./_iter-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsdUJBQXVCLG1CQUFPLENBQUMsdUhBQXVCO0FBQ3RELFdBQVcsbUJBQU8sQ0FBQyxxR0FBYztBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQyxxR0FBYztBQUN0QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1R0FBZTs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUJBQU8sQ0FBQyx5R0FBZ0I7QUFDekMsaUNBQWlDO0FBQ2pDLGlDQUFpQztBQUNqQyxpQ0FBaUM7QUFDakM7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcz9jNWRmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcblxuLy8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcbi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcbi8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGtpbmQgPSB0aGlzLl9rO1xuICB2YXIgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmICghTyB8fCBpbmRleCA+PSBPLmxlbmd0aCkge1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js":
/*!**********************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js ***!
\**********************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js\") });\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxjQUFjLG1CQUFPLENBQUMsK0ZBQVc7O0FBRWpDLDJDQUEyQyxRQUFRLG1CQUFPLENBQUMsNkdBQWtCLEdBQUciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanM/MTljYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjMuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYsICdPYmplY3QnLCB7IGFzc2lnbjogcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpIH0pO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.to-string.js":
/*!*************************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.to-string.js ***!
\*************************************************************************************************/
/***/ (() => {
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js":
/*!************************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js ***!
\************************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\nvar $at = __webpack_require__(/*! ./_string-at */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(/*! ./_iter-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js\")(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLFVBQVUsbUJBQU8sQ0FBQyxxR0FBYzs7QUFFaEM7QUFDQSxtQkFBTyxDQUFDLHlHQUFnQjtBQUN4Qiw4QkFBOEI7QUFDOUIsOEJBQThCO0FBQzlCO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0EsV0FBVztBQUNYLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9hZmU5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js":
/*!***************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js ***!
\***************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js\");\nvar META = (__webpack_require__(/*! ./_meta */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js\").KEY);\nvar $fails = __webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\");\nvar shared = __webpack_require__(/*! ./_shared */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\");\nvar wks = __webpack_require__(/*! ./_wks */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js\");\nvar wksDefine = __webpack_require__(/*! ./_wks-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js\");\nvar enumKeys = __webpack_require__(/*! ./_enum-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js\");\nvar isArray = __webpack_require__(/*! ./_is-array */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\");\nvar _create = __webpack_require__(/*! ./_object-create */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js\");\nvar gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js\");\nvar $GOPD = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js\");\nvar $GOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js\");\nvar $DP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n (__webpack_require__(/*! ./_object-gopn */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js\").f) = gOPNExt.f = $getOwnPropertyNames;\n (__webpack_require__(/*! ./_object-pie */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js\").f) = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\")) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0EsYUFBYSxtQkFBTyxDQUFDLCtGQUFXO0FBQ2hDLFVBQVUsbUJBQU8sQ0FBQyx5RkFBUTtBQUMxQixrQkFBa0IsbUJBQU8sQ0FBQyx5R0FBZ0I7QUFDMUMsY0FBYyxtQkFBTyxDQUFDLCtGQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxtR0FBYTtBQUNwQyxXQUFXLHNIQUFzQjtBQUNqQyxhQUFhLG1CQUFPLENBQUMsNkZBQVU7QUFDL0IsYUFBYSxtQkFBTyxDQUFDLCtGQUFXO0FBQ2hDLHFCQUFxQixtQkFBTyxDQUFDLHFIQUFzQjtBQUNuRCxVQUFVLG1CQUFPLENBQUMseUZBQVE7QUFDMUIsVUFBVSxtQkFBTyxDQUFDLHlGQUFRO0FBQzFCLGFBQWEsbUJBQU8sQ0FBQyxpR0FBWTtBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQyx1R0FBZTtBQUN2QyxlQUFlLG1CQUFPLENBQUMscUdBQWM7QUFDckMsY0FBYyxtQkFBTyxDQUFDLG1HQUFhO0FBQ25DLGVBQWUsbUJBQU8sQ0FBQyxxR0FBYztBQUNyQyxlQUFlLG1CQUFPLENBQUMscUdBQWM7QUFDckMsZUFBZSxtQkFBTyxDQUFDLHFHQUFjO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLHVHQUFlO0FBQ3ZDLGtCQUFrQixtQkFBTyxDQUFDLDJHQUFpQjtBQUMzQyxpQkFBaUIsbUJBQU8sQ0FBQyw2R0FBa0I7QUFDM0MsY0FBYyxtQkFBTyxDQUFDLDZHQUFrQjtBQUN4QyxjQUFjLG1CQUFPLENBQUMsaUhBQW9CO0FBQzFDLFlBQVksbUJBQU8sQ0FBQyx5R0FBZ0I7QUFDcEMsWUFBWSxtQkFBTyxDQUFDLHlHQUFnQjtBQUNwQyxVQUFVLG1CQUFPLENBQUMscUdBQWM7QUFDaEMsWUFBWSxtQkFBTyxDQUFDLHlHQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCLHVCQUF1Qix1QkFBdUIsVUFBVTtBQUN4RCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDtBQUNBLE1BQU07QUFDTjtBQUNBLHVCQUF1QixrQ0FBa0M7QUFDekQsTUFBTTtBQUNOLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFLCtCQUErQjtBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEVBQUUsa0lBQTJCO0FBQzdCLEVBQUUsZ0lBQTBCO0FBQzVCOztBQUVBLHNCQUFzQixtQkFBTyxDQUFDLGlHQUFZO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkRBQTJELGlCQUFpQjs7QUFFNUU7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNCQUFzQjs7QUFFM0MscURBQXFELDRCQUE0Qjs7QUFFakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILDJCQUEyQixnQkFBZ0I7QUFDM0MsMkJBQTJCO0FBQzNCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSwrQ0FBK0MsYUFBYTs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxNQUFNLFFBQVEsaUNBQWlDO0FBQ3BHLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RUFBeUU7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0Esb0NBQW9DLG1CQUFPLENBQUMsMkZBQVM7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zeW1ib2wuanM/Yzg3ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyBFQ01BU2NyaXB0IDYgc3ltYm9scyBzaGltXG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgTUVUQSA9IHJlcXVpcmUoJy4vX21ldGEnKS5LRVk7XG52YXIgJGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgd2tzRXh0ID0gcmVxdWlyZSgnLi9fd2tzLWV4dCcpO1xudmFyIHdrc0RlZmluZSA9IHJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKTtcbnZhciBlbnVtS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0ta2V5cycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICRHT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciAkRFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QRCA9ICRHT1BELmY7XG52YXIgZFAgPSAkRFAuZjtcbnZhciBnT1BOID0gZ09QTkV4dC5mO1xudmFyICRTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyICRKU09OID0gZ2xvYmFsLkpTT047XG52YXIgX3N0cmluZ2lmeSA9ICRKU09OICYmICRKU09OLnN0cmluZ2lmeTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBISURERU4gPSB3a3MoJ19oaWRkZW4nKTtcbnZhciBUT19QUklNSVRJVkUgPSB3a3MoJ3RvUHJpbWl0aXZlJyk7XG52YXIgaXNFbnVtID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpO1xudmFyIEFsbFN5bWJvbHMgPSBzaGFyZWQoJ3N5bWJvbHMnKTtcbnZhciBPUFN5bWJvbHMgPSBzaGFyZWQoJ29wLXN5bWJvbHMnKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdFtQUk9UT1RZUEVdO1xudmFyIFVTRV9OQVRJVkUgPSB0eXBlb2YgJFN5bWJvbCA9PSAnZnVuY3Rpb24nICYmICEhJEdPUFMuZjtcbnZhciBRT2JqZWN0ID0gZ2xvYmFsLlFPYmplY3Q7XG4vLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzNcbnZhciBzZXR0ZXIgPSAhUU9iamVjdCB8fCAhUU9iamVjdFtQUk9UT1RZUEVdIHx8ICFRT2JqZWN0W1BST1RPVFlQRV0uZmluZENoaWxkO1xuXG4vLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcbnZhciBzZXRTeW1ib2xEZXNjID0gREVTQ1JJUFRPUlMgJiYgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIF9jcmVhdGUoZFAoe30sICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZFAodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24gKGl0LCBrZXksIEQpIHtcbiAgdmFyIHByb3RvRGVzYyA9IGdPUEQoT2JqZWN0UHJvdG8sIGtleSk7XG4gIGlmIChwcm90b0Rlc2MpIGRlbGV0ZSBPYmplY3RQcm90b1trZXldO1xuICBkUChpdCwga2V5LCBEKTtcbiAgaWYgKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pIGRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG59IDogZFA7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZykge1xuICB2YXIgc3ltID0gQWxsU3ltYm9sc1t0YWddID0gX2NyZWF0ZSgkU3ltYm9sW1BST1RPVFlQRV0pO1xuICBzeW0uX2sgPSB0YWc7XG4gIHJldHVybiBzeW07XG59O1xuXG52YXIgaXNTeW1ib2wgPSBVU0VfTkFUSVZFICYmIHR5cGVvZiAkU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCkge1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvKSAkZGVmaW5lUHJvcGVydHkoT1BTeW1ib2xzLCBrZXksIEQpO1xuICBhbk9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEQpO1xuICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSkpIHtcbiAgICBpZiAoIUQuZW51bWVyYWJsZSkge1xuICAgICAgaWYgKCFoYXMoaXQsIEhJRERFTikpIGRQKGl0LCBISURERU4sIGNyZWF0ZURlc2MoMSwge30pKTtcbiAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSBpdFtISURERU5dW2tleV0gPSBmYWxzZTtcbiAgICAgIEQgPSBfY3JlYXRlKEQsIHsgZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSkgfSk7XG4gICAgfSByZXR1cm4gc2V0U3ltYm9sRGVzYyhpdCwga2V5LCBEKTtcbiAgfSByZXR1cm4gZFAoaXQsIGtleSwgRCk7XG59O1xudmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCkge1xuICBhbk9iamVjdChpdCk7XG4gIHZhciBrZXlzID0gZW51bUtleXMoUCA9IHRvSU9iamVjdChQKSk7XG4gIHZhciBpID0gMDtcbiAgdmFyIGwgPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGwgPiBpKSAkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTtcbiAgcmV0dXJuIGl0O1xufTtcbnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKSB7XG4gIHJldHVybiBQID09PSB1bmRlZmluZWQgPyBfY3JlYXRlKGl0KSA6ICRkZWZpbmVQcm9wZXJ0aWVzKF9jcmVhdGUoaXQpLCBQKTtcbn07XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KSB7XG4gIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSk7XG4gIGlmICh0aGlzID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldID8gRSA6IHRydWU7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICBpdCA9IHRvSU9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybjtcbiAgdmFyIEQgPSBnT1BEKGl0LCBrZXkpO1xuICBpZiAoRCAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pKSBELmVudW1lcmFibGUgPSB0cnVlO1xuICByZXR1cm4gRDtcbn07XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHZhciBuYW1lcyA9IGdPUE4odG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmICghaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4gJiYga2V5ICE9IE1FVEEpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkge1xuICB2YXIgSVNfT1AgPSBpdCA9PT0gT2JqZWN0UHJvdG87XG4gIHZhciBuYW1lcyA9IGdPUE4oSVNfT1AgPyBPUFN5bWJvbHMgOiB0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiAoSVNfT1AgPyBoYXMoT2JqZWN0UHJvdG8sIGtleSkgOiB0cnVlKSkgcmVzdWx0LnB1c2goQWxsU3ltYm9sc1trZXldKTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gMTkuNC4xLjEgU3ltYm9sKFtkZXNjcmlwdGlvbl0pXG5pZiAoIVVTRV9OQVRJVkUpIHtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpIHRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpO1xuICAgIHZhciB0YWcgPSB1aWQoYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICAgIHZhciAkc2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8pICRzZXQuY2FsbChPUFN5bWJvbHMsIHZhbHVlKTtcbiAgICAgIGlmIChoYXModGhpcywgSElEREVOKSAmJiBoYXModGhpc1tISURERU5dLCB0YWcpKSB0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbiAgICB9O1xuICAgIGlmIChERVNDUklQVE9SUyAmJiBzZXR0ZXIpIHNldFN5bWJvbERlc2MoT2JqZWN0UHJvdG8sIHRhZywgeyBjb25maWd1cmFibGU6IHRydWUsIHNldDogJHNldCB9KTtcbiAgICByZXR1cm4gd3JhcCh0YWcpO1xuICB9O1xuICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9rO1xuICB9KTtcblxuICAkR09QRC5mID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgJERQLmYgPSAkZGVmaW5lUHJvcGVydHk7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZiA9IGdPUE5FeHQuZiA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZiA9ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiAgJEdPUFMuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gQ2hyb21lIDM4IGFuZCAzOSBgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc2AgZmFpbHMgb24gcHJpbWl0aXZlc1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzQ0M1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSAkZmFpbHMoZnVuY3Rpb24gKCkgeyAkR09QUy5mKDEpOyB9KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBGQUlMU19PTl9QUklNSVRJVkVTLCAnT2JqZWN0Jywge1xuICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkge1xuICAgIHJldHVybiAkR09QUy5mKHRvT2JqZWN0KGl0KSk7XG4gIH1cbn0pO1xuXG4vLyAyNC4zLjIgSlNPTi5zdHJpbmdpZnkodmFsdWUgWywgcmVwbGFjZXIgWywgc3BhY2VdXSlcbiRKU09OICYmICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCFVU0VfTkFUSVZFIHx8ICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBTID0gJFN5bWJvbCgpO1xuICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuICAvLyBXZWJLaXQgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIG51bGxcbiAgLy8gVjggdGhyb3dzIG9uIGJveGVkIHN5bWJvbHNcbiAgcmV0dXJuIF9zdHJpbmdpZnkoW1NdKSAhPSAnW251bGxdJyB8fCBfc3RyaW5naWZ5KHsgYTogUyB9KSAhPSAne30nIHx8IF9zdHJpbmdpZnkoT2JqZWN0KFMpKSAhPSAne30nO1xufSkpLCAnSlNPTicsIHtcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQpIHtcbiAgICB2YXIgYXJncyA9IFtpdF07XG4gICAgdmFyIGkgPSAxO1xuICAgIHZhciByZXBsYWNlciwgJHJlcGxhY2VyO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICAkcmVwbGFjZXIgPSByZXBsYWNlciA9IGFyZ3NbMV07XG4gICAgaWYgKCFpc09iamVjdChyZXBsYWNlcikgJiYgaXQgPT09IHVuZGVmaW5lZCB8fCBpc1N5bWJvbChpdCkpIHJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICAgIGlmICghaXNBcnJheShyZXBsYWNlcikpIHJlcGxhY2VyID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgJHJlcGxhY2VyID09ICdmdW5jdGlvbicpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICBpZiAoIWlzU3ltYm9sKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgYXJnc1sxXSA9IHJlcGxhY2VyO1xuICAgIHJldHVybiBfc3RyaW5naWZ5LmFwcGx5KCRKU09OLCBhcmdzKTtcbiAgfVxufSk7XG5cbi8vIDE5LjQuMy40IFN5bWJvbC5wcm90b3R5cGVbQEB0b1ByaW1pdGl2ZV0oaGludClcbiRTeW1ib2xbUFJPVE9UWVBFXVtUT19QUklNSVRJVkVdIHx8IHJlcXVpcmUoJy4vX2hpZGUnKSgkU3ltYm9sW1BST1RPVFlQRV0sIFRPX1BSSU1JVElWRSwgJFN5bWJvbFtQUk9UT1RZUEVdLnZhbHVlT2YpO1xuLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoJFN5bWJvbCwgJ1N5bWJvbCcpO1xuLy8gMjAuMi4xLjkgTWF0aFtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcbi8vIDI0LjMuMyBKU09OW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhnbG9iYWwuSlNPTiwgJ0pTT04nLCB0cnVlKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
/*!******************************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
\******************************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js\")('asyncIterator');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtQkFBTyxDQUFDLHVHQUFlIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanM/OGE2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ2FzeW5jSXRlcmF0b3InKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js":
/*!**************************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js ***!
\**************************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js\")('observable');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzIiwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsdUdBQWUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzPzljYWYiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js\n");
/***/ }),
/***/ "./node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js":
/*!*********************************************************************************************!*\
!*** ./node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js ***!
\*********************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval("__webpack_require__(/*! ./es6.array.iterator */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js\");\nvar TO_STRING_TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtQkFBTyxDQUFDLHFIQUFzQjtBQUM5QixhQUFhLG1CQUFPLENBQUMsK0ZBQVc7QUFDaEMsV0FBVyxtQkFBTyxDQUFDLDJGQUFTO0FBQzVCLGdCQUFnQixtQkFBTyxDQUFDLHFHQUFjO0FBQ3RDLG9CQUFvQixtQkFBTyxDQUFDLHlGQUFROztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQix5QkFBeUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanM/ZjdhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG52YXIgRE9NSXRlcmFibGVzID0gKCdDU1NSdWxlTGlzdCxDU1NTdHlsZURlY2xhcmF0aW9uLENTU1ZhbHVlTGlzdCxDbGllbnRSZWN0TGlzdCxET01SZWN0TGlzdCxET01TdHJpbmdMaXN0LCcgK1xuICAnRE9NVG9rZW5MaXN0LERhdGFUcmFuc2Zlckl0ZW1MaXN0LEZpbGVMaXN0LEhUTUxBbGxDb2xsZWN0aW9uLEhUTUxDb2xsZWN0aW9uLEhUTUxGb3JtRWxlbWVudCxIVE1MU2VsZWN0RWxlbWVudCwnICtcbiAgJ01lZGlhTGlzdCxNaW1lVHlwZUFycmF5LE5hbWVkTm9kZU1hcCxOb2RlTGlzdCxQYWludFJlcXVlc3RMaXN0LFBsdWdpbixQbHVnaW5BcnJheSxTVkdMZW5ndGhMaXN0LFNWR051bWJlckxpc3QsJyArXG4gICdTVkdQYXRoU2VnTGlzdCxTVkdQb2ludExpc3QsU1ZHU3RyaW5nTGlzdCxTVkdUcmFuc2Zvcm1MaXN0LFNvdXJjZUJ1ZmZlckxpc3QsU3R5bGVTaGVldExpc3QsVGV4dFRyYWNrQ3VlTGlzdCwnICtcbiAgJ1RleHRUcmFja0xpc3QsVG91Y2hMaXN0Jykuc3BsaXQoJywnKTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCBET01JdGVyYWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgdmFyIE5BTUUgPSBET01JdGVyYWJsZXNbaV07XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgcHJvdG8gPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICBpZiAocHJvdG8gJiYgIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcbiAgSXRlcmF0b3JzW05BTUVdID0gSXRlcmF0b3JzLkFycmF5O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js\n");
/***/ }),
/***/ "./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js":
/*!*****************************************************************!*\
!*** ./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js ***!
\*****************************************************************/
/***/ (function(module, exports) {
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!function(e,t){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else { var o; }}(this,function(exports){\"use strict\";function i(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t<e.length;t++)o[t]=e[t];return o}return Array.from(e)}Object.defineProperty(exports,\"__esModule\",{value:!0});var l=!1;if(\"undefined\"!=typeof window){var e={get passive(){l=!0}};window.addEventListener(\"testPassive\",null,e),window.removeEventListener(\"testPassive\",null,e)}function d(t){return u.some(function(e){return!(!e.options.allowTouchMove||!e.options.allowTouchMove(t))})}function c(e){var t=e||window.event;return!!d(t.target)||(1<t.touches.length||(t.preventDefault&&t.preventDefault(),!1))}function o(){setTimeout(function(){void 0!==m&&(document.body.style.paddingRight=m,m=void 0),void 0!==f&&(document.body.style.overflow=f,f=void 0)})}var a=\"undefined\"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||\"MacIntel\"===window.navigator.platform&&1<window.navigator.maxTouchPoints),u=[],s=!1,v=-1,f=void 0,m=void 0;exports.disableBodyScroll=function(r,e){if(a){if(!r)return void console.error(\"disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.\");if(r&&!u.some(function(e){return e.targetElement===r})){var t={targetElement:r,options:e||{}};u=[].concat(i(u),[t]),r.ontouchstart=function(e){1===e.targetTouches.length&&(v=e.targetTouches[0].clientY)},r.ontouchmove=function(e){var t,o,n,i;1===e.targetTouches.length&&(o=r,i=(t=e).targetTouches[0].clientY-v,d(t.target)||(o&&0===o.scrollTop&&0<i||(n=o)&&n.scrollHeight-n.scrollTop<=n.clientHeight&&i<0?c(t):t.stopPropagation()))},s||(document.addEventListener(\"touchmove\",c,l?{passive:!1}:void 0),s=!0)}}else{n=e,setTimeout(function(){if(void 0===m){var e=!!n&&!0===n.reserveScrollBarGap,t=window.innerWidth-document.documentElement.clientWidth;e&&0<t&&(m=document.body.style.paddingRight,document.body.style.paddingRight=t+\"px\")}void 0===f&&(f=document.body.style.overflow,document.body.style.overflow=\"hidden\")});var o={targetElement:r,options:e||{}};u=[].concat(i(u),[o])}var n},exports.clearAllBodyScrollLocks=function(){a?(u.forEach(function(e){e.targetElement.ontouchstart=null,e.targetElement.ontouchmove=null}),s&&(document.removeEventListener(\"touchmove\",c,l?{passive:!1}:void 0),s=!1),u=[],v=-1):(o(),u=[])},exports.enableBodyScroll=function(t){if(a){if(!t)return void console.error(\"enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.\");t.ontouchstart=null,t.ontouchmove=null,u=u.filter(function(e){return e.targetElement!==t}),s&&0===u.length&&(document.removeEventListener(\"touchmove\",c,l?{passive:!1}:void 0),s=!1)}else(u=u.filter(function(e){return e.targetElement!==t})).length||o()}});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYm9keS1zY3JvbGwtbG9jay9saWIvYm9keVNjcm9sbExvY2subWluLmpzIiwibWFwcGluZ3MiOiJBQUFBLCtHQUFlLEdBQUcsSUFBcUMsQ0FBQyxpQ0FBTyxDQUFDLE9BQVMsQ0FBQyxvQ0FBQyxDQUFDO0FBQUE7QUFBQTtBQUFBLGtHQUFDLENBQUMsS0FBSyxVQUFnRixDQUFDLHdCQUF3QixhQUFhLGNBQWMscUJBQXFCLDhCQUE4QixXQUFXLGNBQWMsU0FBUyxxQkFBcUIsNENBQTRDLFNBQVMsRUFBRSxTQUFTLCtCQUErQixPQUFPLGNBQWMsT0FBTywrRkFBK0YsY0FBYywwQkFBMEIsaUVBQWlFLEVBQUUsY0FBYyxzQkFBc0IscUZBQXFGLGFBQWEsc0JBQXNCLGdIQUFnSCxFQUFFLDhPQUE4Tyx3Q0FBd0MsTUFBTSxrSkFBa0osMEJBQTBCLDJCQUEyQixHQUFHLE9BQU8sK0JBQStCLGlEQUFpRCwyREFBMkQsMkJBQTJCLFlBQVksNkxBQTZMLGdEQUFnRCxXQUFXLGdCQUFnQixLQUFLLDBCQUEwQixlQUFlLCtGQUErRixxRkFBcUYsbUZBQW1GLEVBQUUsT0FBTywrQkFBK0Isc0JBQXNCLE1BQU0sNENBQTRDLHlCQUF5QixtRUFBbUUsb0RBQW9ELFdBQVcscUNBQXFDLHNDQUFzQyxNQUFNLGdKQUFnSiw4REFBOEQsMkJBQTJCLGtFQUFrRSxXQUFXLGVBQWUsNEJBQTRCLDJCQUEyQixnQkFBZ0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9keS1zY3JvbGwtbG9jay9saWIvYm9keVNjcm9sbExvY2subWluLmpzPzg1NDMiXSwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXCJleHBvcnRzXCJdLHQpO2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGV4cG9ydHMpdChleHBvcnRzKTtlbHNle3ZhciBvPXt9O3QobyksZS5ib2R5U2Nyb2xsTG9jaz1vfX0odGhpcyxmdW5jdGlvbihleHBvcnRzKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBpKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLG89QXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW9bdF09ZVt0XTtyZXR1cm4gb31yZXR1cm4gQXJyYXkuZnJvbShlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cyxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbD0hMTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXt2YXIgZT17Z2V0IHBhc3NpdmUoKXtsPSEwfX07d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0UGFzc2l2ZVwiLG51bGwsZSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0ZXN0UGFzc2l2ZVwiLG51bGwsZSl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiEoIWUub3B0aW9ucy5hbGxvd1RvdWNoTW92ZXx8IWUub3B0aW9ucy5hbGxvd1RvdWNoTW92ZSh0KSl9KX1mdW5jdGlvbiBjKGUpe3ZhciB0PWV8fHdpbmRvdy5ldmVudDtyZXR1cm4hIWQodC50YXJnZXQpfHwoMTx0LnRvdWNoZXMubGVuZ3RofHwodC5wcmV2ZW50RGVmYXVsdCYmdC5wcmV2ZW50RGVmYXVsdCgpLCExKSl9ZnVuY3Rpb24gbygpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2b2lkIDAhPT1tJiYoZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9bSxtPXZvaWQgMCksdm9pZCAwIT09ZiYmKGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9ZixmPXZvaWQgMCl9KX12YXIgYT1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cubmF2aWdhdG9yJiZ3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtJiYoL2lQKGFkfGhvbmV8b2QpLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0pfHxcIk1hY0ludGVsXCI9PT13aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtJiYxPHdpbmRvdy5uYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMpLHU9W10scz0hMSx2PS0xLGY9dm9pZCAwLG09dm9pZCAwO2V4cG9ydHMuZGlzYWJsZUJvZHlTY3JvbGw9ZnVuY3Rpb24ocixlKXtpZihhKXtpZighcilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKFwiZGlzYWJsZUJvZHlTY3JvbGwgdW5zdWNjZXNzZnVsIC0gdGFyZ2V0RWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gY2FsbGluZyBkaXNhYmxlQm9keVNjcm9sbCBvbiBJT1MgZGV2aWNlcy5cIik7aWYociYmIXUuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gZS50YXJnZXRFbGVtZW50PT09cn0pKXt2YXIgdD17dGFyZ2V0RWxlbWVudDpyLG9wdGlvbnM6ZXx8e319O3U9W10uY29uY2F0KGkodSksW3RdKSxyLm9udG91Y2hzdGFydD1mdW5jdGlvbihlKXsxPT09ZS50YXJnZXRUb3VjaGVzLmxlbmd0aCYmKHY9ZS50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFkpfSxyLm9udG91Y2htb3ZlPWZ1bmN0aW9uKGUpe3ZhciB0LG8sbixpOzE9PT1lLnRhcmdldFRvdWNoZXMubGVuZ3RoJiYobz1yLGk9KHQ9ZSkudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRZLXYsZCh0LnRhcmdldCl8fChvJiYwPT09by5zY3JvbGxUb3AmJjA8aXx8KG49bykmJm4uc2Nyb2xsSGVpZ2h0LW4uc2Nyb2xsVG9wPD1uLmNsaWVudEhlaWdodCYmaTwwP2ModCk6dC5zdG9wUHJvcGFnYXRpb24oKSkpfSxzfHwoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLGMsbD97cGFzc2l2ZTohMX06dm9pZCAwKSxzPSEwKX19ZWxzZXtuPWUsc2V0VGltZW91dChmdW5jdGlvbigpe2lmKHZvaWQgMD09PW0pe3ZhciBlPSEhbiYmITA9PT1uLnJlc2VydmVTY3JvbGxCYXJHYXAsdD13aW5kb3cuaW5uZXJXaWR0aC1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7ZSYmMDx0JiYobT1kb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCxkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD10K1wicHhcIil9dm9pZCAwPT09ZiYmKGY9ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCIpfSk7dmFyIG89e3RhcmdldEVsZW1lbnQ6cixvcHRpb25zOmV8fHt9fTt1PVtdLmNvbmNhdChpKHUpLFtvXSl9dmFyIG59LGV4cG9ydHMuY2xlYXJBbGxCb2R5U2Nyb2xsTG9ja3M9ZnVuY3Rpb24oKXthPyh1LmZvckVhY2goZnVuY3Rpb24oZSl7ZS50YXJnZXRFbGVtZW50Lm9udG91Y2hzdGFydD1udWxsLGUudGFyZ2V0RWxlbWVudC5vbnRvdWNobW92ZT1udWxsfSkscyYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIixjLGw/e3Bhc3NpdmU6ITF9OnZvaWQgMCkscz0hMSksdT1bXSx2PS0xKToobygpLHU9W10pfSxleHBvcnRzLmVuYWJsZUJvZHlTY3JvbGw9ZnVuY3Rpb24odCl7aWYoYSl7aWYoIXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihcImVuYWJsZUJvZHlTY3JvbGwgdW5zdWNjZXNzZnVsIC0gdGFyZ2V0RWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gY2FsbGluZyBlbmFibGVCb2R5U2Nyb2xsIG9uIElPUyBkZXZpY2VzLlwiKTt0Lm9udG91Y2hzdGFydD1udWxsLHQub250b3VjaG1vdmU9bnVsbCx1PXUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldEVsZW1lbnQhPT10fSkscyYmMD09PXUubGVuZ3RoJiYoZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLGMsbD97cGFzc2l2ZTohMX06dm9pZCAwKSxzPSExKX1lbHNlKHU9dS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0RWxlbWVudCE9PXR9KSkubGVuZ3RofHxvKCl9fSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js\n");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/@mathieustan/vue-datepicker/dist/vue-datepicker.min.css":
/*!**************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/@mathieustan/vue-datepicker/dist/vue-datepicker.min.css ***!
\**************************************************************************************************************************************************************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vd-wrapper,.vd-wrapper *,.vd-wrapper :after,.vd-wrapper :before{box-sizing:border-box}.vd-wrapper{position:relative;display:flex;flex:1 1 auto;align-items:center;max-width:100%;cursor:default}.vd-wrapper:not(.vd-wrapper--inline){cursor:pointer}.vd-wrapper:active,.vd-wrapper:focus{outline:0}.vd-wrapper--inline{width:304px;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.vd-wrapper--disabled{pointer-events:none}.vd-activator{display:flex;flex:1 1 auto;max-width:100%}.vd-menu,.vd-menu *,.vd-menu :after,.vd-menu :before{box-sizing:border-box}.vd-menu{display:none}.vd-menu--attached{display:inline}.vd-menu__activator{display:flex;align-items:center;cursor:pointer}.vd-menu *{cursor:pointer}.vd-menu__content{position:absolute;display:inline-block;border-radius:6px;max-width:80%;overflow-y:auto;overflow-x:hidden;contain:content;background-color:#fff;will-change:transform;box-shadow:0 2px 8px rgba(50,50,93,.2)}.vd-menu__content--fixed{position:fixed}.vd-menu__content--bottomsheet{position:fixed;top:auto!important;bottom:0!important;left:0!important;right:0!important;width:100%!important;min-width:100%!important;border-radius:12px 12px 0 0}@supports (padding-bottom:constant(safe-area-inset-bottom)){.vd-menu__content--bottomsheet{--safe-area-inset-bottom:constant(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}@supports (padding-bottom:env(safe-area-inset-bottom)){.vd-menu__content--bottomsheet{--safe-area-inset-bottom:env(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}.vd-menu-transition-leave-active,.vd-menu-transition-leave-to{pointer-events:none}.vd-menu-transition-enter,.vd-menu-transition-leave-to{opacity:0}.vd-menu-transition-enter-active,.vd-menu-transition-leave-active{transition:all .3s cubic-bezier(.25,.8,.25,1);transition-property:opacity,transform}.vd-picker__input-clear__icon button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__input-clear__icon button:active,.vd-picker__input-clear__icon button:focus{outline:0;box-shadow:0}.vd-picker__input-clear__icon button[role=button],.vd-picker__input-clear__icon button[type=button],.vd-picker__input-clear__icon button[type=reset],.vd-picker__input-clear__icon button[type=submit]{cursor:pointer}.vd-picker__input{position:relative;display:flex;flex:1 1 auto;align-items:center;color:inherit;min-height:inherit}.vd-wrapper--rtl .vd-picker__input{direction:rtl}.vd-wrapper--rtl .vd-picker__input button,.vd-wrapper--rtl .vd-picker__input input[type=text]{margin:0 8px 0 0}.vd-picker__input--disabled{cursor:not-allowed;pointer-events:none}.vd-picker__input--disabled .vd-picker__input-icon__wrapper,.vd-picker__input--disabled input{opacity:.38}.vd-picker__input--no-calendar-icon button,.vd-picker__input--no-calendar-icon input{margin:0}.vd-picker__input-clear{align-self:flex-start;line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vd-picker__input-clear,.vd-picker__input-clear__icon{display:inline-flex}.vd-picker__input-clear__icon{justify-content:center;align-items:center;flex:1 0 auto}.vd-picker__input-clear__icon,.vd-picker__input-clear__icon .vd-icon.vd-icon{height:24px;min-width:24px;width:24px}.vd-picker__input-icon{align-self:flex-start;margin-top:4px;margin-right:auto;padding-right:4px;line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vd-picker__input-icon,.vd-picker__input-icon__wrapper{display:inline-flex}.vd-picker__input-icon__wrapper{align-items:center;height:24px;flex:1 0 auto;justify-content:center;min-width:24px;width:24px}.vd-picker__input input{position:relative;flex:1 1 auto;max-height:32px;padding:8px 0;max-width:100%;min-width:0;width:100%;background-color:transparent;border-style:none;color:inherit;font-stretch:normal;line-height:inherit;font-size:16px!important;font-weight:400;font-family:inherit;color:currentColor;cursor:inherit}.vd-picker__input input:active,.vd-picker__input input:focus{outline:0;box-shadow:none}.vd-picker__input input.placeholder{opacity:.6}.vd-picker__input input::-moz-placeholder{opacity:.6}.vd-picker__input input::placeholder{opacity:.6}.vd-picker__input input:-moz-placeholder,.vd-picker__input input::-moz-placeholder{opacity:.6}.vd-picker__input input:-ms-input-placeholder{opacity:.6}.vd-picker__input input::-webkit-input-placeholder{opacity:.6}.vd-icon.vd-icon{display:inline-flex;align-items:center;justify-content:center;letter-spacing:normal;line-height:1;text-indent:0;transition:all .3s cubic-bezier(.25,.8,.5,1);transition-property:transform,color;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vd-icon--link{cursor:pointer}.vd-icon--disabled{pointer-events:none;opacity:.6}.vd-picker__title-close button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__title-close button:active,.vd-picker__title-close button:focus{outline:0;box-shadow:0}.vd-picker__title-close button[role=button],.vd-picker__title-close button[type=button],.vd-picker__title-close button[type=reset],.vd-picker__title-close button[type=submit]{cursor:pointer}.vd-picker,.vd-picker *,.vd-picker :after,.vd-picker :before{box-sizing:border-box}.vd-picker{display:flex;flex-direction:column;width:304px;background-color:#fff;border-radius:6px;box-shadow:0 2px 8px rgba(50,50,93,.2)}.vd-picker:active,.vd-picker:focus{outline:0}.vd-picker--bottomsheet{width:100%;box-shadow:none}.vd-picker--bottomsheet .vd-picker-header{border-radius:0}.vd-picker--rtl{direction:rtl}.vd-picker__title{position:relative;display:flex;justify-content:space-between;align-items:center;height:48px;padding:8px 16px;border-radius:12px 12px 0 0}.vd-picker--rtl .vd-picker__title{padding:0 16px 0 0}@media only screen and (min-width:480px){.vd-picker__title{display:none}}.vd-picker__title p{margin:0}.vd-picker__title-close{position:relative;display:flex;align-items:center;justify-content:flex-end;height:24px;width:24px;border:none;outline:none;background-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vd-picker__title-close svg{width:24px;height:24px}.vd-picker__body{position:relative;flex:1 1 100%;flex-direction:column;height:auto;overflow:hidden;z-index:0}.vd-overlay,.vd-picker__body{display:flex}.vd-overlay{position:fixed;top:0;left:0;right:0;bottom:0;align-items:center;border-radius:inherit;justify-content:center;pointer-events:none;transition:.3s cubic-bezier(.25,.8,.5,1),z-index 1ms}.vd-overlay__content{position:relative}.vd-overlay__inner{position:absolute;left:0;right:0;top:0;bottom:0;height:100%;width:100%;border-radius:inherit;transition:inherit;will-change:opacity}.vd-overlay--absolute{position:absolute}.vd-overlay--active{pointer-events:auto}.vd-picker__controls-label button{margin:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__controls-label button:active,.vd-picker__controls-label button:focus{outline:0;box-shadow:0}.vd-picker__controls-label button[role=button],.vd-picker__controls-label button[type=button],.vd-picker__controls-label button[type=reset],.vd-picker__controls-label button[type=submit]{cursor:pointer}.vd-picker__controls{display:flex;height:48px;text-align:center;position:relative;width:100%}.vd-picker__controls-wrapper{overflow:hidden;justify-content:center}.vd-picker__controls-month,.vd-picker__controls-wrapper,.vd-picker__controls-year{position:relative;display:flex;align-items:center;flex:1}.vd-picker__controls-month{justify-content:flex-end}.vd-picker__controls-year{justify-content:flex-start}.vd-picker__controls-year.vd-picker__controls-year--center{justify-content:center}.vd-picker__controls-label{padding:8px 4px}.vd-picker__controls-label button{position:relative;display:flex;font-size:15px;font-weight:500;line-height:15px;padding:0;border:none;outline:none;transition:color .3s}.vd-picker__controls-label button:not(:hover):not(:focus){color:rgba(0,0,0,.87)}.vd-picker__controls-label button:disabled,.vd-picker__controls-label button[disabled]{cursor:default;color:rgba(0,0,0,.26)}.vd-picker__controls button.vd-picker__controls-next,.vd-picker__controls button.vd-picker__controls-prev{position:relative;flex:0 0 40px;height:48px;width:48px;padding:0 0 0 24px;border:none;outline:none;color:rgba(0,0,0,.87);background-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}@media only screen and (min-width:768px){.vd-picker__controls button.vd-picker__controls-next,.vd-picker__controls button.vd-picker__controls-prev{padding:0 8px}}.vd-picker__controls button.vd-picker__controls-next:disabled,.vd-picker__controls button.vd-picker__controls-next[disabled],.vd-picker__controls button.vd-picker__controls-prev:disabled,.vd-picker__controls button.vd-picker__controls-prev[disabled]{cursor:default}.vd-picker__controls button.vd-picker__controls-next:disabled svg,.vd-picker__controls button.vd-picker__controls-next[disabled] svg,.vd-picker__controls button.vd-picker__controls-prev:disabled svg,.vd-picker__controls button.vd-picker__controls-prev[disabled] svg{color:rgba(0,0,0,.26)}.vd-picker--rtl .vd-picker__controls button.vd-picker__controls-next,.vd-picker--rtl .vd-picker__controls button.vd-picker__controls-prev{transform:rotate(180deg)}.vd-picker__controls button.vd-picker__controls-next{padding:0 24px 0 0}@media only screen and (min-width:768px){.vd-picker__controls button.vd-picker__controls-next{padding:0 8px}}.vd-picker__controls svg{width:24px;height:24px;vertical-align:middle}.vd-picker-header{color:#fff;padding:16px;display:flex;justify-content:space-between;flex-direction:column;flex-wrap:wrap;line-height:1;min-height:80px;height:80px;border-radius:6px 6px 0 0}@media only screen and (min-width:768px){.vd-picker-header{min-height:85px;height:85px}}.vd-picker-header--range .vd-picker-header__wrap{flex:1 1 auto;flex-direction:column;justify-content:space-between}.vd-picker-header--range .vd-picker-header__date{font-size:18px;height:26px}@media only screen and (min-width:768px){.vd-picker-header--range .vd-picker-header__date{font-size:22px;height:30px}}.vd-picker-header--year .vd-picker-header__year{flex:1 1 auto;font-size:22px;height:30px}.vd-picker-header__year{align-items:center;display:inline-flex;font-size:14px;margin-bottom:8px;opacity:.6;transition:opacity .3s}.vd-picker-header__year:focus:not(.vd-picker-header__year--active),.vd-picker-header__year:hover:not(.vd-picker-header__year--active){cursor:pointer;opacity:1}.vd-picker-header__year--active{opacity:1;cursor:default}.vd-picker-header__date,.vd-picker-header__wrap{position:relative;display:flex;width:100%}.vd-picker-header__date{font-size:22px;height:30px;text-align:left;overflow:hidden;padding-bottom:8px;margin-bottom:-8px;opacity:.6;transition:opacity .3s}.vd-picker-header__date:focus:not(.vd-picker-header__date--active),.vd-picker-header__date:hover:not(.vd-picker-header__date--active){cursor:pointer;opacity:1}.vd-picker-header__date--active{opacity:1;cursor:default}@media only screen and (min-width:768px){.vd-picker-header__date{font-size:24px;height:32px}}.vd-picker-preset{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker-preset:active,.vd-picker-preset:focus{outline:0;box-shadow:0}.vd-picker-preset[role=button],.vd-picker-preset[type=button],.vd-picker-preset[type=reset],.vd-picker-preset[type=submit]{cursor:pointer}.vd-picker-presets{position:relative;display:flex;padding:16px 12px}@media only screen and (min-width:480px){.vd-picker-presets{padding:16px 12px 8px}}.vd-picker-presets__wrapper{flex:1 1 auto;flex-wrap:wrap;width:100%}.vd-picker-preset,.vd-picker-presets__wrapper{position:relative;display:flex}.vd-picker-preset{align-items:center;justify-content:center;flex:0 0 50%;max-width:50%;padding:0 8px;font-size:14px;line-height:14px;overflow:hidden;border:0 solid #eef1f8;transition:opacity .3s cubic-bezier(.25,.8,.5,1)}.vd-picker--bottomsheet .vd-picker-preset,.vd-picker-preset{min-height:32px;height:32px}.vd-picker-preset:nth-child(odd){border-width:0 1px 1px}.vd-picker-preset:nth-child(odd):first-child{border-width:1px}.vd-picker-preset:nth-child(2n){border-width:0 1px 1px 0}.vd-picker-preset:nth-child(2n):nth-child(2){border-width:1px 1px 1px 0}.vd-picker-preset__effect{position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;transition:opacity .3s cubic-bezier(.25,.8,.5,1);z-index:0}.vd-picker-preset__name{position:relative;z-index:1}.vd-picker-preset--selected,.vd-picker-preset:hover:not(.vd-picker-preset--disabled){color:#fff}.vd-picker-preset--selected .vd-picker-preset__effect,.vd-picker-preset:hover:not(.vd-picker-preset--disabled) .vd-picker-preset__effect{opacity:1}.vd-picker-preset--selected{pointer-events:none}.vd-picker-preset--disabled{color:rgba(93,106,137,.2);cursor:not-allowed;pointer-events:none}.vd-picker__table{position:relative;padding:0 12px;height:274px}.vd-picker--bottomsheet .vd-picker__table{height:322px}.vd-picker__table-week{display:flex;flex-wrap:nowrap;flex:1 1 100%;max-width:100%;padding:8px 0;font-weight:600;font-size:12px;line-height:18px;font-weight:500;color:rgba(0,0,0,.38)}.vd-picker__table-weekday{flex:0 0 14.28571%;max-width:14.28571%;text-align:center}.vd-picker__table-days__wrapper{position:relative;overflow:hidden;height:240px}.vd-picker--bottomsheet .vd-picker__table-days__wrapper{height:288px}.vd-picker__table-days{display:flex;flex-wrap:wrap;overflow:hidden;width:100%}.vd-picker__table-day{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__table-day:active,.vd-picker__table-day:focus{outline:0;box-shadow:0}.vd-picker__table-day[role=button],.vd-picker__table-day[type=button],.vd-picker__table-day[type=reset],.vd-picker__table-day[type=submit]{cursor:pointer}.vd-picker__table-day{position:relative;width:14.28571%;height:40px;line-height:1;font-size:12px;float:left;text-align:center;color:currentColor;font-weight:500;transition:all .45s cubic-bezier(.23,1,.32,1);overflow:hidden}.vd-picker--bottomsheet .vd-picker__table-day{height:48px}.vd-picker__table-day__wrapper{position:absolute;top:2px;bottom:2px;left:0;right:0;border:none}.vd-picker__table-day__wrapper:before{content:\\\"\\\";position:absolute;top:0;bottom:0;opacity:0;width:50%;background-color:#fff;z-index:1;transition-property:opacity}.vd-picker__table-day__wrapper:after{content:\\\"\\\";position:absolute;top:0;left:50%;width:calc(100% + 1px);height:36px;border:1px solid;background-color:currentColor;opacity:.12;transform:translateX(-50%) scale(0)}.vd-picker--bottomsheet .vd-picker__table-day__wrapper:after{height:44px}.vd-picker__table-day__current,.vd-picker__table-day__effect{position:absolute;top:0;left:50%;transform:translateX(-50%);width:36px;height:36px;border-radius:50%;border:1px solid}.vd-picker--bottomsheet .vd-picker__table-day__current,.vd-picker--bottomsheet .vd-picker__table-day__effect{width:44px;height:44px}.vd-picker__table-day__current{color:rgba(0,0,0,.87);z-index:1}.vd-picker__table-day__effect{background-color:currentColor;transform:translateX(-50%) scale(0);transition:all .45s cubic-bezier(.23,1,.32,1);z-index:1}.vd-picker--range-selecting .vd-picker__table-day__effect{transition:unset}.vd-picker__table-day__text{position:relative;display:inline-flex;align-items:center;justify-content:center;margin:auto;width:36px;height:36px;color:rgba(0,0,0,.87);z-index:1}.vd-picker--bottomsheet .vd-picker__table-day__text{width:44px;height:44px}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between) .vd-picker__table-day__effect{transform:translateX(-50%) scale(1);opacity:.12}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__wrapper:before,.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:before{opacity:1;right:0}.vd-picker--rtl .vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__wrapper:before,.vd-picker--rtl .vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:before{left:0;right:unset}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__wrapper:after,.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:after{transform:translateX(-50%) scale(1);opacity:.08}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__effect,.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__effect{opacity:1;transition:unset}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__text,.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__text{color:#fff}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:before{left:0}.vd-picker--rtl .vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:before{right:0;left:unset}.vd-picker__table-day--selected .vd-picker__table-day__effect{transform:translateX(-50%) scale(1);opacity:1}.vd-picker__table-day--selected .vd-picker__table-day__text{color:#fff}.vd-picker__table-day--between:not(.vd-picker__table-day--disabled) .vd-picker__table-day__wrapper:after,.vd-picker__table-day--first .vd-picker__table-day__wrapper:after,.vd-picker__table-day--in-range:not(.vd-picker__table-day--disabled) .vd-picker__table-day__wrapper:after,.vd-picker__table-day--last .vd-picker__table-day__wrapper:after{transform:translateX(-50%) scale(1)}.vd-picker--range-selecting .vd-picker__table-day--first .vd-picker__table-day__wrapper:after,.vd-picker--range-selecting .vd-picker__table-day--last .vd-picker__table-day__wrapper:after,.vd-picker__table-day--in-range:not(.vd-picker__table-day--disabled) .vd-picker__table-day__wrapper:after{opacity:.08}.vd-picker__table-day--first .vd-picker__table-day__wrapper:before{opacity:1;left:0}.vd-picker--rtl .vd-picker__table-day--first .vd-picker__table-day__wrapper:before{right:0;left:unset}.vd-picker__table-day--last .vd-picker__table-day__wrapper:before{opacity:1;right:0}.vd-picker--rtl .vd-picker__table-day--last .vd-picker__table-day__wrapper:before{left:0;right:unset}.vd-picker__table-day--last:not(.vd-picker__table-day--select-start) .vd-picker__table-day__effect{opacity:1}.vd-picker__table-day--disabled.vd-picker__table-day{cursor:default}.vd-picker__table-day--disabled.vd-picker__table-day .vd-picker__table-day__text{color:rgba(93,106,137,.2)}.vd-picker-validate__button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker-validate__button:active,.vd-picker-validate__button:focus{outline:0;box-shadow:0}.vd-picker-validate__button[role=button],.vd-picker-validate__button[type=button],.vd-picker-validate__button[type=reset],.vd-picker-validate__button[type=submit]{cursor:pointer}.vd-picker-validate{display:flex;-ms-flex-align:center;justify-content:flex-end;padding:8px}.vd-picker-validate,.vd-picker-validate__button{position:relative;align-items:center}.vd-picker-validate__button{display:inline-flex;flex:0 0 auto;-ms-flex-align:center;justify-content:center;height:36px;min-width:44px;font-size:14px;font-weight:500;border-radius:4px;padding:6px 8px;outline:0;text-transform:uppercase;text-decoration:none;overflow:hidden}.vd-picker-validate__button+.vd-picker-validate__button{margin-left:8px}.vd-picker-validate__button:hover:not(:disabled) .vd-picker-validate__effect{opacity:.1}.vd-picker-validate__button:disabled,.vd-picker-validate__button[disabled]{color:rgba(0,0,0,.26)!important;cursor:default}.vd-picker-validate__effect{position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;transition:opacity .45s cubic-bezier(.23,1,.32,1);z-index:-1}.vd-picker__months-button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__months-button:active,.vd-picker__months-button:focus{outline:0;box-shadow:0}.vd-picker__months-button[role=button],.vd-picker__months-button[type=button],.vd-picker__months-button[type=reset],.vd-picker__months-button[type=submit]{cursor:pointer}.vd-picker__months{position:relative;display:flex;flex:1 1 auto;height:274px}.vd-picker--bottomsheet .vd-picker__months{height:322px}@supports (padding-bottom:constant(safe-area-inset-bottom)){.vd-picker__months{--safe-area-inset-bottom:constant(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}@supports (padding-bottom:env(safe-area-inset-bottom)){.vd-picker__months{--safe-area-inset-bottom:env(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}.vd-picker__months-inner{position:relative;width:100%;height:100%;padding:0 12px}.vd-picker__months-inner,.vd-picker__months-list{display:flex}.vd-picker__months-list{position:absolute;top:0;left:0;right:0;bottom:0;flex:1 1 auto;flex-wrap:wrap;justify-items:center;align-items:center}.vd-picker__months-button{position:relative;height:48px;min-height:48px;width:100%;font-size:15px;font-weight:500;border-radius:2px;outline:none;transition:background-color .3s;border:thin solid transparent}.vd-picker__months-button:hover{background-color:#eef1f8}.vd-picker__months-button:disabled,.vd-picker__months-button[disabled]{cursor:default;color:rgba(0,0,0,.26);pointer-events:none}.vd-picker__months-button__wrapper{position:relative;display:flex;flex:0 0 33.33333%;max-width:33.33333%;justify-content:center;align-items:center;height:25%;min-height:25%;padding:4px 8px}.vd-picker__quarters-button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__quarters-button:active,.vd-picker__quarters-button:focus{outline:0;box-shadow:0}.vd-picker__quarters-button[role=button],.vd-picker__quarters-button[type=button],.vd-picker__quarters-button[type=reset],.vd-picker__quarters-button[type=submit]{cursor:pointer}.vd-picker__quarters{position:relative;display:flex;flex:1 1 auto;height:274px}.vd-picker--bottomsheet .vd-picker__quarters{height:274px}@supports (padding-bottom:constant(safe-area-inset-bottom)){.vd-picker__quarters{--safe-area-inset-bottom:constant(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}@supports (padding-bottom:env(safe-area-inset-bottom)){.vd-picker__quarters{--safe-area-inset-bottom:env(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}.vd-picker__quarters-inner{position:relative;display:flex;width:100%;height:100%;padding:0 12px}.vd-picker__quarters-list{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex:1 1 auto;flex-wrap:wrap;justify-items:center;align-items:center}.vd-picker__quarters-button{position:relative;height:48px;min-height:48px;width:100%;font-size:15px;font-weight:500;border-radius:2px;outline:none;transition:background-color .3s;border:thin solid transparent}.vd-picker__quarters-button:hover{background-color:#eef1f8}.vd-picker__quarters-button:disabled,.vd-picker__quarters-button[disabled]{cursor:default;color:rgba(0,0,0,.26);pointer-events:none}.vd-picker__quarters-button__wrapper{position:relative;display:flex;flex:1 1 100%;max-width:1 1 100%;justify-content:center;align-items:center;height:25%;min-height:25%;padding:4px 8px}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition:all .3s cubic-bezier(.25,.8,.5,1);transition-property:opacity,transform,height}.slide-x-transition-enter,.slide-x-transition-leave-to{opacity:0;transform:translateX(-15px)}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition:all .3s cubic-bezier(.25,.8,.5,1);transition-property:opacity,transform,height}.slide-y-transition-enter,.slide-y-transition-leave-to{opacity:0;transform:translateY(-15px)}.scale-transition-enter-active,.scale-transition-leave-active{transition:all .3s cubic-bezier(.25,.8,.5,1);transition-property:opacity,transform,height}.scale-transition-enter,.scale-transition-leave,.scale-transition-leave-to{opacity:0;transform:scale(0)}.slide-in-out-transition-enter-active,.slide-in-out-transition-leave-active{transition:all .3s cubic-bezier(.25,.8,.5,1);transition-property:opacity,transform,height}.slide-in-out-transition-enter,.slide-in-out-transition-leave-to{opacity:0;transform:translateY(100%)}.slide-h-next-enter-active,.slide-h-next-leave-active,.slide-h-prev-enter-active,.slide-h-prev-leave-active,.slide-v-next-enter-active,.slide-v-next-leave-active,.slide-v-prev-enter-active,.slide-v-prev-leave-active{transition:all .3s cubic-bezier(.25,.8,.5,1);transition-property:opacity,transform,height;position:absolute}.slide-h-next-enter{opacity:0;transform:translateX(100%)}.slide-h-next-leave-to{opacity:0;transform:translateX(-100%)}.slide-h-prev-leave-to{opacity:0;transform:translateX(100%)}.slide-h-prev-enter{opacity:0;transform:translateX(-100%)}.vd-picker__controls-year.vd-picker__controls-year--center .slide-h-next-enter,.vd-picker__controls-year.vd-picker__controls-year--center .slide-h-prev-leave-to{transform:translateX(-50%) translateY(150%)}.vd-picker__controls-year.vd-picker__controls-year--center .slide-h-next-leave-to,.vd-picker__controls-year.vd-picker__controls-year--center .slide-h-prev-enter{transform:translateX(-50%) translateY(-150%)}.vd-picker--rtl .slide-h-next-enter,.vd-picker--rtl .slide-h-prev-leave-to{transform:translateX(-100%)}.vd-picker--rtl .slide-h-next-leave-to,.vd-picker--rtl .slide-h-prev-enter{transform:translateX(100%)}.slide-v-next-leave-to{opacity:0;transform:translateY(100%)}.slide-v-next-enter{opacity:0;transform:translateY(-100%)}.slide-v-prev-enter{opacity:0;transform:translateY(100%)}.slide-v-prev-leave-to{opacity:0;transform:translateY(-100%)}.yearMonth-enter-active,.yearMonth-leave-active{position:absolute;transition:opacity .3s}.yearMonth-enter,.yearMonth-leave-to{opacity:0}.vd-picker__years{position:relative;height:322px;list-style-type:none;text-align:center;margin:0;padding:8px 0;overflow-y:scroll;-webkit-overflow-scrolling:touch}.vd-picker--bottomsheet .vd-picker__years{height:370px}@supports (padding-bottom:constant(safe-area-inset-bottom)){.vd-picker__years{--safe-area-inset-bottom:constant(safe-area-inset-bottom);padding-bottom:calc(8px + var(--safe-area-inset-bottom))}}@supports (padding-bottom:env(safe-area-inset-bottom)){.vd-picker__years{--safe-area-inset-bottom:env(safe-area-inset-bottom);padding-bottom:calc(8px + var(--safe-area-inset-bottom))}}.vd-picker--validate .vd-picker__years{border-bottom:1px solid #eef1f8}.vd-picker__years li{position:relative;cursor:pointer;display:flex;justify-content:center;align-items:center;align-content:center;padding:8px 0;margin-left:12px;margin-right:12px;height:40px;min-height:40px;width:calc(100% - 24px);font-size:15px;font-weight:500;outline:none;transition:background-color .3s;border:thin solid transparent}.vd-picker--bottomsheet .vd-picker__years li{height:48px;min-height:48px}.vd-picker__years li:hover{background-color:#eef1f8}.vd-picker__years li:disabled,.vd-picker__years li[disabled]{cursor:default;color:rgba(0,0,0,.26);pointer-events:none}.vd-picker__years li+li{margin-top:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@mathieustan/vue-datepicker/dist/vue-datepicker.min.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".vd-wrapper,.vd-wrapper *,.vd-wrapper :after,.vd-wrapper :before{-webkit-box-sizing:border-box;box-sizing:border-box}.vd-wrapper{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;cursor:default}.vd-wrapper:not(.vd-wrapper--inline){cursor:pointer}.vd-wrapper:active,.vd-wrapper:focus{outline:0}.vd-wrapper--inline{width:304px;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.vd-wrapper--disabled{pointer-events:none}.vd-activator{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%}.vd-menu,.vd-menu *,.vd-menu :after,.vd-menu :before{-webkit-box-sizing:border-box;box-sizing:border-box}.vd-menu{display:none}.vd-menu--attached{display:inline}.vd-menu__activator{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer}.vd-menu *{cursor:pointer}.vd-menu__content{position:absolute;display:inline-block;border-radius:6px;max-width:80%;overflow-y:auto;overflow-x:hidden;contain:content;background-color:#fff;will-change:transform;-webkit-box-shadow:0 2px 8px rgba(50,50,93,.2);box-shadow:0 2px 8px rgba(50,50,93,.2)}.vd-menu__content--fixed{position:fixed}.vd-menu__content--bottomsheet{position:fixed;top:auto!important;bottom:0!important;left:0!important;right:0!important;width:100%!important;min-width:100%!important;border-radius:12px 12px 0 0}@supports (padding-bottom:constant(safe-area-inset-bottom)){.vd-menu__content--bottomsheet{--safe-area-inset-bottom:constant(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}@supports (padding-bottom:env(safe-area-inset-bottom)){.vd-menu__content--bottomsheet{--safe-area-inset-bottom:env(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}.vd-menu-transition-leave-active,.vd-menu-transition-leave-to{pointer-events:none}.vd-menu-transition-enter,.vd-menu-transition-leave-to{opacity:0}.vd-menu-transition-enter-active,.vd-menu-transition-leave-active{-webkit-transition:all .3s cubic-bezier(.25,.8,.25,1);transition:all .3s cubic-bezier(.25,.8,.25,1);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.vd-picker__input-clear__icon button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__input-clear__icon button:active,.vd-picker__input-clear__icon button:focus{outline:0;-webkit-box-shadow:0;box-shadow:0}.vd-picker__input-clear__icon button[role=button],.vd-picker__input-clear__icon button[type=button],.vd-picker__input-clear__icon button[type=reset],.vd-picker__input-clear__icon button[type=submit]{cursor:pointer}.vd-picker__input{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:inherit;min-height:inherit}.vd-wrapper--rtl .vd-picker__input{direction:rtl}.vd-wrapper--rtl .vd-picker__input button,.vd-wrapper--rtl .vd-picker__input input[type=text]{margin:0 8px 0 0}.vd-picker__input--disabled{cursor:not-allowed;pointer-events:none}.vd-picker__input--disabled .vd-picker__input-icon__wrapper,.vd-picker__input--disabled input{opacity:.38}.vd-picker__input--no-calendar-icon button,.vd-picker__input--no-calendar-icon input{margin:0}.vd-picker__input-clear{-ms-flex-item-align:start;align-self:flex-start;line-height:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vd-picker__input-clear,.vd-picker__input-clear__icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.vd-picker__input-clear__icon{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.vd-picker__input-clear__icon,.vd-picker__input-clear__icon .vd-icon.vd-icon{height:24px;min-width:24px;width:24px}.vd-picker__input-icon{-ms-flex-item-align:start;align-self:flex-start;margin-top:4px;margin-right:auto;padding-right:4px;line-height:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vd-picker__input-icon,.vd-picker__input-icon__wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.vd-picker__input-icon__wrapper{-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:24px;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-width:24px;width:24px}.vd-picker__input input{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-height:32px;padding:8px 0;max-width:100%;min-width:0;width:100%;background-color:transparent;border-style:none;color:inherit;font-stretch:normal;line-height:inherit;font-size:16px!important;font-weight:400;font-family:inherit;color:currentColor;cursor:inherit}.vd-picker__input input:active,.vd-picker__input input:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}.vd-picker__input input.placeholder{opacity:.6}.vd-picker__input input::-ms-input-placeholder{opacity:.6}.vd-picker__input input::-moz-placeholder{opacity:.6}.vd-picker__input input::placeholder{opacity:.6}.vd-picker__input input:-moz-placeholder,.vd-picker__input input::-moz-placeholder{opacity:.6}.vd-picker__input input:-ms-input-placeholder{opacity:.6}.vd-picker__input input::-webkit-input-placeholder{opacity:.6}.vd-icon.vd-icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;letter-spacing:normal;line-height:1;text-indent:0;-webkit-transition:all .3s cubic-bezier(.25,.8,.5,1);transition:all .3s cubic-bezier(.25,.8,.5,1);-webkit-transition-property:color,-webkit-transform;transition-property:color,-webkit-transform;transition-property:transform,color;transition-property:transform,color,-webkit-transform;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vd-icon--link{cursor:pointer}.vd-icon--disabled{pointer-events:none;opacity:.6}.vd-picker__title-close button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__title-close button:active,.vd-picker__title-close button:focus{outline:0;-webkit-box-shadow:0;box-shadow:0}.vd-picker__title-close button[role=button],.vd-picker__title-close button[type=button],.vd-picker__title-close button[type=reset],.vd-picker__title-close button[type=submit]{cursor:pointer}.vd-picker,.vd-picker *,.vd-picker :after,.vd-picker :before{-webkit-box-sizing:border-box;box-sizing:border-box}.vd-picker{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:304px;background-color:#fff;border-radius:6px;-webkit-box-shadow:0 2px 8px rgba(50,50,93,.2);box-shadow:0 2px 8px rgba(50,50,93,.2)}.vd-picker:active,.vd-picker:focus{outline:0}.vd-picker--bottomsheet{width:100%;-webkit-box-shadow:none;box-shadow:none}.vd-picker--bottomsheet .vd-picker-header{border-radius:0}.vd-picker--rtl{direction:rtl}.vd-picker__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;padding:8px 16px;border-radius:12px 12px 0 0}.vd-picker--rtl .vd-picker__title{padding:0 16px 0 0}@media only screen and (min-width:480px){.vd-picker__title{display:none}}.vd-picker__title p{margin:0}.vd-picker__title-close{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;height:24px;width:24px;border:none;outline:none;background-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vd-picker__title-close svg{width:24px;height:24px}.vd-picker__body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto;overflow:hidden;z-index:0}.vd-overlay,.vd-picker__body{display:-webkit-box;display:-ms-flexbox;display:flex}.vd-overlay{position:fixed;top:0;left:0;right:0;bottom:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:inherit;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;-webkit-transition:.3s cubic-bezier(.25,.8,.5,1),z-index 1ms;transition:.3s cubic-bezier(.25,.8,.5,1),z-index 1ms}.vd-overlay__content{position:relative}.vd-overlay__inner{position:absolute;left:0;right:0;top:0;bottom:0;height:100%;width:100%;border-radius:inherit;-webkit-transition:inherit;transition:inherit;will-change:opacity}.vd-overlay--absolute{position:absolute}.vd-overlay--active{pointer-events:auto}.vd-picker__controls-label button{margin:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__controls-label button:active,.vd-picker__controls-label button:focus{outline:0;-webkit-box-shadow:0;box-shadow:0}.vd-picker__controls-label button[role=button],.vd-picker__controls-label button[type=button],.vd-picker__controls-label button[type=reset],.vd-picker__controls-label button[type=submit]{cursor:pointer}.vd-picker__controls{display:-webkit-box;display:-ms-flexbox;display:flex;height:48px;text-align:center;position:relative;width:100%}.vd-picker__controls-wrapper{overflow:hidden;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vd-picker__controls-month,.vd-picker__controls-wrapper,.vd-picker__controls-year{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex:1;flex:1}.vd-picker__controls-month{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.vd-picker__controls-year{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vd-picker__controls-year.vd-picker__controls-year--center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.vd-picker__controls-label{padding:8px 4px}.vd-picker__controls-label button{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:15px;font-weight:500;line-height:15px;padding:0;border:none;outline:none;-webkit-transition:color .3s;transition:color .3s}.vd-picker__controls-label button:not(:hover):not(:focus){color:rgba(0,0,0,.87)}.vd-picker__controls-label button:disabled,.vd-picker__controls-label button[disabled]{cursor:default;color:rgba(0,0,0,.26)}.vd-picker__controls button.vd-picker__controls-next,.vd-picker__controls button.vd-picker__controls-prev{position:relative;-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;height:48px;width:48px;padding:0 0 0 24px;border:none;outline:none;color:rgba(0,0,0,.87);background-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}@media only screen and (min-width:768px){.vd-picker__controls button.vd-picker__controls-next,.vd-picker__controls button.vd-picker__controls-prev{padding:0 8px}}.vd-picker__controls button.vd-picker__controls-next:disabled,.vd-picker__controls button.vd-picker__controls-next[disabled],.vd-picker__controls button.vd-picker__controls-prev:disabled,.vd-picker__controls button.vd-picker__controls-prev[disabled]{cursor:default}.vd-picker__controls button.vd-picker__controls-next:disabled svg,.vd-picker__controls button.vd-picker__controls-next[disabled] svg,.vd-picker__controls button.vd-picker__controls-prev:disabled svg,.vd-picker__controls button.vd-picker__controls-prev[disabled] svg{color:rgba(0,0,0,.26)}.vd-picker--rtl .vd-picker__controls button.vd-picker__controls-next,.vd-picker--rtl .vd-picker__controls button.vd-picker__controls-prev{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vd-picker__controls button.vd-picker__controls-next{padding:0 24px 0 0}@media only screen and (min-width:768px){.vd-picker__controls button.vd-picker__controls-next{padding:0 8px}}.vd-picker__controls svg{width:24px;height:24px;vertical-align:middle}.vd-picker-header{color:#fff;padding:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1;min-height:80px;height:80px;border-radius:6px 6px 0 0}@media only screen and (min-width:768px){.vd-picker-header{min-height:85px;height:85px}}.vd-picker-header--range .vd-picker-header__wrap{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.vd-picker-header--range .vd-picker-header__date{font-size:18px;height:26px}@media only screen and (min-width:768px){.vd-picker-header--range .vd-picker-header__date{font-size:22px;height:30px}}.vd-picker-header--year .vd-picker-header__year{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;font-size:22px;height:30px}.vd-picker-header__year{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:14px;margin-bottom:8px;opacity:.6;-webkit-transition:opacity .3s;transition:opacity .3s}.vd-picker-header__year:focus:not(.vd-picker-header__year--active),.vd-picker-header__year:hover:not(.vd-picker-header__year--active){cursor:pointer;opacity:1}.vd-picker-header__year--active{opacity:1;cursor:default}.vd-picker-header__date,.vd-picker-header__wrap{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.vd-picker-header__date{font-size:22px;height:30px;text-align:left;overflow:hidden;padding-bottom:8px;margin-bottom:-8px;opacity:.6;-webkit-transition:opacity .3s;transition:opacity .3s}.vd-picker-header__date:focus:not(.vd-picker-header__date--active),.vd-picker-header__date:hover:not(.vd-picker-header__date--active){cursor:pointer;opacity:1}.vd-picker-header__date--active{opacity:1;cursor:default}@media only screen and (min-width:768px){.vd-picker-header__date{font-size:24px;height:32px}}.vd-picker-preset{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker-preset:active,.vd-picker-preset:focus{outline:0;-webkit-box-shadow:0;box-shadow:0}.vd-picker-preset[role=button],.vd-picker-preset[type=button],.vd-picker-preset[type=reset],.vd-picker-preset[type=submit]{cursor:pointer}.vd-picker-presets{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 12px}@media only screen and (min-width:480px){.vd-picker-presets{padding:16px 12px 8px}}.vd-picker-presets__wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%}.vd-picker-preset,.vd-picker-presets__wrapper{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex}.vd-picker-preset{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%;padding:0 8px;font-size:14px;line-height:14px;overflow:hidden;border:0 solid #eef1f8;-webkit-transition:opacity .3s cubic-bezier(.25,.8,.5,1);transition:opacity .3s cubic-bezier(.25,.8,.5,1)}.vd-picker--bottomsheet .vd-picker-preset,.vd-picker-preset{min-height:32px;height:32px}.vd-picker-preset:nth-child(odd){border-width:0 1px 1px}.vd-picker-preset:nth-child(odd):first-child{border-width:1px}.vd-picker-preset:nth-child(2n){border-width:0 1px 1px 0}.vd-picker-preset:nth-child(2n):nth-child(2){border-width:1px 1px 1px 0}.vd-picker-preset__effect{position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;-webkit-transition:opacity .3s cubic-bezier(.25,.8,.5,1);transition:opacity .3s cubic-bezier(.25,.8,.5,1);z-index:0}.vd-picker-preset__name{position:relative;z-index:1}.vd-picker-preset--selected,.vd-picker-preset:hover:not(.vd-picker-preset--disabled){color:#fff}.vd-picker-preset--selected .vd-picker-preset__effect,.vd-picker-preset:hover:not(.vd-picker-preset--disabled) .vd-picker-preset__effect{opacity:1}.vd-picker-preset--selected{pointer-events:none}.vd-picker-preset--disabled{color:rgba(93,106,137,.2);cursor:not-allowed;pointer-events:none}.vd-picker__table{position:relative;padding:0 12px;height:274px}.vd-picker--bottomsheet .vd-picker__table{height:322px}.vd-picker__table-week{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;max-width:100%;padding:8px 0;font-weight:600;font-size:12px;line-height:18px;font-weight:500;color:rgba(0,0,0,.38)}.vd-picker__table-weekday{-webkit-box-flex:0;-ms-flex:0 0 14.28571%;flex:0 0 14.28571%;max-width:14.28571%;text-align:center}.vd-picker__table-days__wrapper{position:relative;overflow:hidden;height:240px}.vd-picker--bottomsheet .vd-picker__table-days__wrapper{height:288px}.vd-picker__table-days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;overflow:hidden;width:100%}.vd-picker__table-day{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__table-day:active,.vd-picker__table-day:focus{outline:0;-webkit-box-shadow:0;box-shadow:0}.vd-picker__table-day[role=button],.vd-picker__table-day[type=button],.vd-picker__table-day[type=reset],.vd-picker__table-day[type=submit]{cursor:pointer}.vd-picker__table-day{position:relative;width:14.28571%;height:40px;line-height:1;font-size:12px;float:left;text-align:center;color:currentColor;font-weight:500;-webkit-transition:all .45s cubic-bezier(.23,1,.32,1);transition:all .45s cubic-bezier(.23,1,.32,1);overflow:hidden}.vd-picker--bottomsheet .vd-picker__table-day{height:48px}.vd-picker__table-day__wrapper{position:absolute;top:2px;bottom:2px;left:0;right:0;border:none}.vd-picker__table-day__wrapper:before{content:\\\"\\\";position:absolute;top:0;bottom:0;opacity:0;width:50%;background-color:#fff;z-index:1;-webkit-transition-property:opacity;transition-property:opacity}.vd-picker__table-day__wrapper:after{content:\\\"\\\";position:absolute;top:0;left:50%;width:calc(100% + 1px);height:36px;border:1px solid;background-color:currentColor;opacity:.12;-webkit-transform:translateX(-50%) scale(0);transform:translateX(-50%) scale(0)}.vd-picker--bottomsheet .vd-picker__table-day__wrapper:after{height:44px}.vd-picker__table-day__current,.vd-picker__table-day__effect{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:36px;height:36px;border-radius:50%;border:1px solid}.vd-picker--bottomsheet .vd-picker__table-day__current,.vd-picker--bottomsheet .vd-picker__table-day__effect{width:44px;height:44px}.vd-picker__table-day__current{color:rgba(0,0,0,.87);z-index:1}.vd-picker__table-day__effect{background-color:currentColor;-webkit-transform:translateX(-50%) scale(0);transform:translateX(-50%) scale(0);-webkit-transition:all .45s cubic-bezier(.23,1,.32,1);transition:all .45s cubic-bezier(.23,1,.32,1);z-index:1}.vd-picker--range-selecting .vd-picker__table-day__effect{-webkit-transition:unset;transition:unset}.vd-picker__table-day__text{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:auto;width:36px;height:36px;color:rgba(0,0,0,.87);z-index:1}.vd-picker--bottomsheet .vd-picker__table-day__text{width:44px;height:44px}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between) .vd-picker__table-day__effect{-webkit-transform:translateX(-50%) scale(1);transform:translateX(-50%) scale(1);opacity:.12}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__wrapper:before,.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:before{opacity:1;right:0}.vd-picker--rtl .vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__wrapper:before,.vd-picker--rtl .vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:before{left:0;right:unset}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__wrapper:after,.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:after{-webkit-transform:translateX(-50%) scale(1);transform:translateX(-50%) scale(1);opacity:.08}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__effect,.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__effect{opacity:1;-webkit-transition:unset;transition:unset}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-end .vd-picker__table-day__text,.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__text{color:#fff}.vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:before{left:0}.vd-picker--rtl .vd-picker__table-day:hover:not(.vd-picker__table-day--disabled):not(.vd-picker__table-day--selected):not(.vd-picker__table-day--between).vd-picker__table-day--select-start .vd-picker__table-day__wrapper:before{right:0;left:unset}.vd-picker__table-day--selected .vd-picker__table-day__effect{-webkit-transform:translateX(-50%) scale(1);transform:translateX(-50%) scale(1);opacity:1}.vd-picker__table-day--selected .vd-picker__table-day__text{color:#fff}.vd-picker__table-day--between:not(.vd-picker__table-day--disabled) .vd-picker__table-day__wrapper:after,.vd-picker__table-day--first .vd-picker__table-day__wrapper:after,.vd-picker__table-day--in-range:not(.vd-picker__table-day--disabled) .vd-picker__table-day__wrapper:after,.vd-picker__table-day--last .vd-picker__table-day__wrapper:after{-webkit-transform:translateX(-50%) scale(1);transform:translateX(-50%) scale(1)}.vd-picker--range-selecting .vd-picker__table-day--first .vd-picker__table-day__wrapper:after,.vd-picker--range-selecting .vd-picker__table-day--last .vd-picker__table-day__wrapper:after,.vd-picker__table-day--in-range:not(.vd-picker__table-day--disabled) .vd-picker__table-day__wrapper:after{opacity:.08}.vd-picker__table-day--first .vd-picker__table-day__wrapper:before{opacity:1;left:0}.vd-picker--rtl .vd-picker__table-day--first .vd-picker__table-day__wrapper:before{right:0;left:unset}.vd-picker__table-day--last .vd-picker__table-day__wrapper:before{opacity:1;right:0}.vd-picker--rtl .vd-picker__table-day--last .vd-picker__table-day__wrapper:before{left:0;right:unset}.vd-picker__table-day--last:not(.vd-picker__table-day--select-start) .vd-picker__table-day__effect{opacity:1}.vd-picker__table-day--disabled.vd-picker__table-day{cursor:default}.vd-picker__table-day--disabled.vd-picker__table-day .vd-picker__table-day__text{color:rgba(93,106,137,.2)}.vd-picker-validate__button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker-validate__button:active,.vd-picker-validate__button:focus{outline:0;-webkit-box-shadow:0;box-shadow:0}.vd-picker-validate__button[role=button],.vd-picker-validate__button[type=button],.vd-picker-validate__button[type=reset],.vd-picker-validate__button[type=submit]{cursor:pointer}.vd-picker-validate{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:8px}.vd-picker-validate,.vd-picker-validate__button{position:relative;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.vd-picker-validate__button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:36px;min-width:44px;font-size:14px;font-weight:500;border-radius:4px;padding:6px 8px;outline:0;text-transform:uppercase;text-decoration:none;overflow:hidden}.vd-picker-validate__button+.vd-picker-validate__button{margin-left:8px}.vd-picker-validate__button:hover:not(:disabled) .vd-picker-validate__effect{opacity:.1}.vd-picker-validate__button:disabled,.vd-picker-validate__button[disabled]{color:rgba(0,0,0,.26)!important;cursor:default}.vd-picker-validate__effect{position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;-webkit-transition:opacity .45s cubic-bezier(.23,1,.32,1);transition:opacity .45s cubic-bezier(.23,1,.32,1);z-index:-1}.vd-picker__months-button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__months-button:active,.vd-picker__months-button:focus{outline:0;-webkit-box-shadow:0;box-shadow:0}.vd-picker__months-button[role=button],.vd-picker__months-button[type=button],.vd-picker__months-button[type=reset],.vd-picker__months-button[type=submit]{cursor:pointer}.vd-picker__months{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;height:274px}.vd-picker--bottomsheet .vd-picker__months{height:322px}@supports (padding-bottom:constant(safe-area-inset-bottom)){.vd-picker__months{--safe-area-inset-bottom:constant(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}@supports (padding-bottom:env(safe-area-inset-bottom)){.vd-picker__months{--safe-area-inset-bottom:env(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}.vd-picker__months-inner{position:relative;width:100%;height:100%;padding:0 12px}.vd-picker__months-inner,.vd-picker__months-list{display:-webkit-box;display:-ms-flexbox;display:flex}.vd-picker__months-list{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.vd-picker__months-button{position:relative;height:48px;min-height:48px;width:100%;font-size:15px;font-weight:500;border-radius:2px;outline:none;-webkit-transition:background-color .3s;transition:background-color .3s;border:thin solid transparent}.vd-picker__months-button:hover{background-color:#eef1f8}.vd-picker__months-button:disabled,.vd-picker__months-button[disabled]{cursor:default;color:rgba(0,0,0,.26);pointer-events:none}.vd-picker__months-button__wrapper{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:25%;min-height:25%;padding:4px 8px}.vd-picker__quarters-button{border:none;margin:0;padding:0;width:auto;overflow:visible;background:transparent;color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}.vd-picker__quarters-button:active,.vd-picker__quarters-button:focus{outline:0;-webkit-box-shadow:0;box-shadow:0}.vd-picker__quarters-button[role=button],.vd-picker__quarters-button[type=button],.vd-picker__quarters-button[type=reset],.vd-picker__quarters-button[type=submit]{cursor:pointer}.vd-picker__quarters{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;height:274px}.vd-picker--bottomsheet .vd-picker__quarters{height:274px}@supports (padding-bottom:constant(safe-area-inset-bottom)){.vd-picker__quarters{--safe-area-inset-bottom:constant(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}@supports (padding-bottom:env(safe-area-inset-bottom)){.vd-picker__quarters{--safe-area-inset-bottom:env(safe-area-inset-bottom);padding-bottom:var(--safe-area-inset-bottom)}}.vd-picker__quarters-inner{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%;padding:0 12px}.vd-picker__quarters-list{position:absolute;top:0;left:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.vd-picker__quarters-button{position:relative;height:48px;min-height:48px;width:100%;font-size:15px;font-weight:500;border-radius:2px;outline:none;-webkit-transition:background-color .3s;transition:background-color .3s;border:thin solid transparent}.vd-picker__quarters-button:hover{background-color:#eef1f8}.vd-picker__quarters-button:disabled,.vd-picker__quarters-button[disabled]{cursor:default;color:rgba(0,0,0,.26);pointer-events:none}.vd-picker__quarters-button__wrapper{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;max-width:1 1 100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:25%;min-height:25%;padding:4px 8px}.slide-x-transition-enter-active,.slide-x-transition-leave-active{-webkit-transition:all .3s cubic-bezier(.25,.8,.5,1);transition:all .3s cubic-bezier(.25,.8,.5,1);-webkit-transition-property:opacity,height,-webkit-transform;transition-property:opacity,height,-webkit-transform;transition-property:opacity,transform,height;transition-property:opacity,transform,height,-webkit-transform}.slide-x-transition-enter,.slide-x-transition-leave-to{opacity:0;-webkit-transform:translateX(-15px);transform:translateX(-15px)}.slide-y-transition-enter-active,.slide-y-transition-leave-active{-webkit-transition:all .3s cubic-bezier(.25,.8,.5,1);transition:all .3s cubic-bezier(.25,.8,.5,1);-webkit-transition-property:opacity,height,-webkit-transform;transition-property:opacity,height,-webkit-transform;transition-property:opacity,transform,height;transition-property:opacity,transform,height,-webkit-transform}.slide-y-transition-enter,.slide-y-transition-leave-to{opacity:0;-webkit-transform:translateY(-15px);transform:translateY(-15px)}.scale-transition-enter-active,.scale-transition-leave-active{-webkit-transition:all .3s cubic-bezier(.25,.8,.5,1);transition:all .3s cubic-bezier(.25,.8,.5,1);-webkit-transition-property:opacity,height,-webkit-transform;transition-property:opacity,height,-webkit-transform;transition-property:opacity,transform,height;transition-property:opacity,transform,height,-webkit-transform}.scale-transition-enter,.scale-transition-leave,.scale-transition-leave-to{opacity:0;-webkit-transform:scale(0);transform:scale(0)}.slide-in-out-transition-enter-active,.slide-in-out-transition-leave-active{-webkit-transition:all .3s cubic-bezier(.25,.8,.5,1);transition:all .3s cubic-bezier(.25,.8,.5,1);-webkit-transition-property:opacity,height,-webkit-transform;transition-property:opacity,height,-webkit-transform;transition-property:opacity,transform,height;transition-property:opacity,transform,height,-webkit-transform}.slide-in-out-transition-enter,.slide-in-out-transition-leave-to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}.slide-h-next-enter-active,.slide-h-next-leave-active,.slide-h-prev-enter-active,.slide-h-prev-leave-active,.slide-v-next-enter-active,.slide-v-next-leave-active,.slide-v-prev-enter-active,.slide-v-prev-leave-active{-webkit-transition:all .3s cubic-bezier(.25,.8,.5,1);transition:all .3s cubic-bezier(.25,.8,.5,1);-webkit-transition-property:opacity,height,-webkit-transform;transition-property:opacity,height,-webkit-transform;transition-property:opacity,transform,height;transition-property:opacity,transform,height,-webkit-transform;position:absolute}.slide-h-next-enter{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.slide-h-next-leave-to{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.slide-h-prev-leave-to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.slide-h-prev-enter{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.vd-picker__controls-year.vd-picker__controls-year--center .slide-h-next-enter,.vd-picker__controls-year.vd-picker__controls-year--center .slide-h-prev-leave-to{-webkit-transform:translateX(-50%) translateY(150%);transform:translateX(-50%) translateY(150%)}.vd-picker__controls-year.vd-picker__controls-year--center .slide-h-next-leave-to,.vd-picker__controls-year.vd-picker__controls-year--center .slide-h-prev-enter{-webkit-transform:translateX(-50%) translateY(-150%);transform:translateX(-50%) translateY(-150%)}.vd-picker--rtl .slide-h-next-enter,.vd-picker--rtl .slide-h-prev-leave-to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}.vd-picker--rtl .slide-h-next-leave-to,.vd-picker--rtl .slide-h-prev-enter{-webkit-transform:translateX(100%);transform:translateX(100%)}.slide-v-next-leave-to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}.slide-v-next-enter{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}.slide-v-prev-enter{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}.slide-v-prev-leave-to{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}.yearMonth-enter-active,.yearMonth-leave-active{position:absolute;-webkit-transition:opacity .3s;transition:opacity .3s}.yearMonth-enter,.yearMonth-leave-to{opacity:0}.vd-picker__years{position:relative;height:322px;list-style-type:none;text-align:center;margin:0;padding:8px 0;overflow-y:scroll;-webkit-overflow-scrolling:touch}.vd-picker--bottomsheet .vd-picker__years{height:370px}@supports (padding-bottom:constant(safe-area-inset-bottom)){.vd-picker__years{--safe-area-inset-bottom:constant(safe-area-inset-bottom);padding-bottom:calc(8px + var(--safe-area-inset-bottom))}}@supports (padding-bottom:env(safe-area-inset-bottom)){.vd-picker__years{--safe-area-inset-bottom:env(safe-area-inset-bottom);padding-bottom:calc(8px + var(--safe-area-inset-bottom))}}.vd-picker--validate .vd-picker__years{border-bottom:1px solid #eef1f8}.vd-picker__years li{position:relative;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:8px 0;margin-left:12px;margin-right:12px;height:40px;min-height:40px;width:calc(100% - 24px);font-size:15px;font-weight:500;outline:none;-webkit-transition:background-color .3s;transition:background-color .3s;border:thin solid transparent}.vd-picker--bottomsheet .vd-picker__years li{height:48px;min-height:48px}.vd-picker__years li:hover{background-color:#eef1f8}.vd-picker__years li:disabled,.vd-picker__years li[disabled]{cursor:default;color:rgba(0,0,0,.26);pointer-events:none}.vd-picker__years li+li{margin-top:2px}\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC05LnVzZVsxXSEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC05LnVzZVsyXSEuL25vZGVfbW9kdWxlcy9AbWF0aGlldXN0YW4vdnVlLWRhdGVwaWNrZXIvZGlzdC92dWUtZGF0ZXBpY2tlci5taW4uY3NzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDK0c7QUFDN0I7QUFDbEYsOEJBQThCLHNFQUEyQixDQUFDLDJGQUFxQztBQUMvRjtBQUNBLDJHQUEyRyxzQkFBc0IsWUFBWSxrQkFBa0IsYUFBYSxjQUFjLG1CQUFtQixlQUFlLGVBQWUscUNBQXFDLGVBQWUscUNBQXFDLFVBQVUsb0JBQW9CLFlBQVksaUdBQWlHLHNCQUFzQixvQkFBb0IsY0FBYyxhQUFhLGNBQWMsZUFBZSxxREFBcUQsc0JBQXNCLFNBQVMsYUFBYSxtQkFBbUIsZUFBZSxvQkFBb0IsYUFBYSxtQkFBbUIsZUFBZSxXQUFXLGVBQWUsa0JBQWtCLGtCQUFrQixxQkFBcUIsa0JBQWtCLGNBQWMsZ0JBQWdCLGtCQUFrQixnQkFBZ0Isc0JBQXNCLHNCQUFzQix1Q0FBdUMseUJBQXlCLGVBQWUsK0JBQStCLGVBQWUsbUJBQW1CLG1CQUFtQixpQkFBaUIsa0JBQWtCLHFCQUFxQix5QkFBeUIsNEJBQTRCLDREQUE0RCwrQkFBK0IsMERBQTBELDhDQUE4Qyx1REFBdUQsK0JBQStCLHFEQUFxRCw4Q0FBOEMsOERBQThELG9CQUFvQix1REFBdUQsVUFBVSxrRUFBa0UsOENBQThDLHNDQUFzQyxxQ0FBcUMsWUFBWSxTQUFTLFVBQVUsV0FBVyxpQkFBaUIsdUJBQXVCLGNBQWMsYUFBYSxtQkFBbUIsK0JBQStCLGdDQUFnQyx3QkFBd0IsdUZBQXVGLFVBQVUsYUFBYSx1TUFBdU0sZUFBZSxrQkFBa0Isa0JBQWtCLGFBQWEsY0FBYyxtQkFBbUIsY0FBYyxtQkFB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Q0FBbUMsMkJBQTJCLHdOQUF3TixxREFBcUQsNkNBQTZDLDZEQUE2RCxxREFBcUQsNkNBQTZDLCtEQUErRCxrQkFBa0Isb0JBQW9CLFVBQVUsbUNBQW1DLDJCQUEyQix1QkFBdUIsVUFBVSxvQ0FBb0MsNEJBQTRCLHVCQUF1QixVQUFVLG1DQUFtQywyQkFBMkIsb0JBQW9CLFVBQVUsb0NBQW9DLDRCQUE0QixpS0FBaUssb0RBQW9ELDRDQUE0QyxpS0FBaUsscURBQXFELDZDQUE2QywyRUFBMkUsb0NBQW9DLDRCQUE0QiwyRUFBMkUsbUNBQW1DLDJCQUEyQix1QkFBdUIsVUFBVSxtQ0FBbUMsMkJBQTJCLG9CQUFvQixVQUFVLG9DQUFvQyw0QkFBNEIsb0JBQW9CLFVBQVUsbUNBQW1DLDJCQUEyQix1QkFBdUIsVUFBVSxvQ0FBb0MsNEJBQTRCLGdEQUFnRCxrQkFBa0IsK0JBQStCLHVCQUF1QixxQ0FBcUMsVUFBVSxrQkFBa0Isa0JBQWtCLGFBQWEscUJBQXFCLGtCQUFrQixTQUFTLGNBQWMsa0JBQWtCLGlDQUFpQywwQ0FBMEMsYUFBYSw0REFBNEQsa0JBQWtCLDBEQUEwRCwwREFBMEQsdURBQXVELGtCQUFrQixxREFBcUQsMERBQTBELHVDQUF1QyxnQ0FBZ0MscUJBQXFCLGtCQUFrQixlQUFlLG9CQUFvQixvQkFBb0IsYUFBYSx3QkFBd0IscUJBQXFCLHVCQUF1Qix5QkFBeUIsc0JBQXNCLG1CQUFtQiwwQkFBMEIscUJBQXFCLGNBQWMsaUJBQWlCLGtCQUFrQixZQUFZLGdCQUFnQix3QkFBd0IsZUFBZSxnQkFBZ0IsYUFBYSx3Q0FBd0MsZ0NBQWdDLDhCQUE4Qiw2Q0FBNkMsWUFBWSxnQkFBZ0IsMkJBQTJCLHlCQUF5Qiw2REFBNkQsZUFBZSxzQkFBc0Isb0JBQW9CLHdCQUF3QixlQUFlLG1CQUFtQjtBQUNqcjRFO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQG1hdGhpZXVzdGFuL3Z1ZS1kYXRlcGlja2VyL2Rpc3QvdnVlLWRhdGVwaWNrZXIubWluLmNzcz8wOGNhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi52ZC13cmFwcGVyLC52ZC13cmFwcGVyICosLnZkLXdyYXBwZXIgOmFmdGVyLC52ZC13cmFwcGVyIDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94fS52ZC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2FsaWduLWl0ZW1zOmNlbnRlcjttYXgtd2lkdGg6MTAwJTtjdXJzb3I6ZGVmYXVsdH0udmQtd3JhcHBlcjpub3QoLnZkLXdyYXBwZXItLWlubGluZSl7Y3Vyc29yOnBvaW50ZXJ9LnZkLXdyYXBwZXI6YWN0aXZlLC52ZC13cmFwcGVyOmZvY3Vze291dGxpbmU6MH0udmQtd3JhcHBlci0taW5saW5le3dpZHRoOjMwNHB4O2JveC1zaGFkb3c6MCAzcHggMXB4IC0ycHggcmdiYSgwLDAsMCwuMiksMCAycHggMnB4IDAgcmdiYSgwLDAsMCwuMTQpLDAgMXB4IDVweCAwIHJnYmEoMCwwLDAsLjEyKX0udmQtd3JhcHBlci0tZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX0udmQtYWN0aXZhdG9ye2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO21heC13aWR0aDoxMDAlfS52ZC1tZW51LC52ZC1tZW51ICosLnZkLW1lbnUgOmFmdGVyLC52ZC1tZW51IDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94fS52ZC1tZW51e2Rpc3BsYXk6bm9uZX0udmQtbWVudS0tYXR0YWNoZWR7ZGlzcGxheTppbmxpbmV9LnZkLW1lbnVfX2FjdGl2YXRvcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2N1cnNvcjpwb2ludGVyfS52ZC1tZW51ICp7Y3Vyc29yOnBvaW50ZXJ9LnZkLW1lbnVfX2NvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo2cHg7bWF4LXdpZHRoOjgwJTtvdmVyZmxvdy15OmF1dG87b3ZlcmZsb3cteDpoaWRkZW47Y29udGFpbjpjb250ZW50O2JhY2tncm91bmQtY29sb3I6I2ZmZjt3aWxsLWNoYW5nZTp0cmFuc2Zvcm07Ym94LXNoYWRvdzowIDJweCA4cHggcmdiYSg1MCw1MCw5MywuMil9LnZkLW1lbnVfX2NvbnRlbnQtLWZpeGVke3Bvc2l0aW9uOmZpeGVkfS52ZC1tZW51X19jb250ZW50LS1ib3R0b21zaGVldHtwb3NpdGlvbjpmaXhlZDt0b3A6YXV0byFpbXBvcnRhbnQ7Ym90dG9tOjAhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7cmlnaHQ6MCFpbXBvcnRhbnQ7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7bWluLXdpZHRoOjEwMCUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTJweCAxMnB4IDAgMH1Ac3VwcG9ydHMgKHBhZGRpbmctYm90dG9tOmNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKXsudmQtbWVudV9fY29udGVudC0tYm90dG9tc2hlZXR7LS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tOmNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO3BhZGRpbmctYm90dG9tOnZhcigtLXNhZmUtYXJlYS1pbnNldC1ib3R0b20pfX1Ac3VwcG9ydHMgKHBhZGRpbmctYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSl7LnZkLW1lbnVfX2NvbnRlbnQtLWJvdHRvbXNoZWV0ey0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbTplbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7cGFkZGluZy1ib3R0b206dmFyKC0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbSl9fS52ZC1tZW51LXRyYW5zaXRpb24tbGVhdmUtYWN0aXZlLC52ZC1tZW51LXRyYW5zaXRpb24tbGVhdmUtdG97cG9pbnRlci1ldmVudHM6bm9uZX0udmQtbWVudS10cmFuc2l0aW9uLWVudGVyLC52ZC1tZW51LXRyYW5zaXRpb24tbGVhdmUtdG97b3BhY2l0eTowfS52ZC1tZW51LXRyYW5zaXRpb24tZW50ZXItYWN0aXZlLC52ZC1tZW51LXRyYW5zaXRpb24tbGVhdmUtYWN0aXZle3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC4yNSwxKTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtfS52ZC1waWNrZXJfX2lucHV0LWNsZWFyX19pY29uIGJ1dHRvbntib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bGluZS1oZWlnaHQ6bm9ybWFsOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6aW5oZXJpdDstbW96LW9zeC1mb250LXNtb290aGluZzppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS52ZC1waWNrZXJfX2lucHV0LWNsZWFyX19pY29uIGJ1dHRvbjphY3RpdmUsLnZkLXBpY2tlcl9faW5wdXQtY2xlYXJfX2ljb24gYnV0dG9uOmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjB9LnZkLXBpY2tlcl9faW5wdXQtY2xlYXJfX2ljb24gYnV0dG9uW3JvbGU9YnV0dG9uXSwudmQtcGlja2VyX19pbnB1dC1jbGVhcl9faWNvbiBidXR0b25bdHlwZT1idXR0b25dLC52ZC1waWNrZXJfX2lucHV0LWNsZWFyX19pY29uIGJ1dHRvblt0eXBlPXJlc2V0XSwudmQtcGlja2VyX19pbnB1dC1jbGVhcl9faWNvbiBidXR0b25bdHlwZT1zdWJtaXRde2N1cnNvcjpwb2ludGVyfS52ZC1waWNrZXJfX2lucHV0e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjppbmhlcml0O21pbi1oZWlnaHQ6aW5oZXJpdH0udmQtd3JhcHBlci0tcnRsIC52ZC1waWNrZXJfX2lucHV0e2RpcmVjdGlvbjpydGx9LnZkLXdyYXBwZXItLXJ0bCAudmQtcGlja2VyX19pbnB1dCBidXR0b24sLnZkLXdyYXBwZXItLXJ0bCAudmQtcGlja2VyX19pbnB1dCBpbnB1dFt0eXBlPXRleHRde21hcmdpbjowIDhweCAwIDB9LnZkLXBpY2tlcl9faW5wdXQtLWRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZDtwb2ludGVyLWV2ZW50czpub25lfS52ZC1waWNrZXJfX2lucHV0LS1kaXNhYmxlZCAudmQtcGlja2VyX19pbnB1dC1pY29uX193cmFwcGVyLC52ZC1waWNrZXJfX2lucHV0LS1kaXNhYmxlZCBpbnB1dHtvcGFjaXR5Oi4zOH0udmQtcGlja2VyX19pbnB1dC0tbm8tY2FsZW5kYXItaWNvbiBidXR0b24sLnZkLXBpY2tlcl9faW5wdXQtLW5vLWNhbGVuZGFyLWljb24gaW5wdXR7bWFyZ2luOjB9LnZkLXBpY2tlcl9faW5wdXQtY2xlYXJ7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O2xpbmUtaGVpZ2h0OjE7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS52ZC1waWNrZXJfX2lucHV0LWNsZWFyLC52ZC1waWNrZXJfX2lucHV0LWNsZWFyX19pY29ue2Rpc3BsYXk6aW5saW5lLWZsZXh9LnZkLXBpY2tlcl9faW5wdXQtY2xlYXJfX2ljb257anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDAgYXV0b30udmQtcGlja2VyX19pbnB1dC1jbGVhcl9faWNvbiwudmQtcGlja2VyX19pbnB1dC1jbGVhcl9faWNvbiAudmQtaWNvbi52ZC1pY29ue2hlaWdodDoyNHB4O21pbi13aWR0aDoyNHB4O3dpZHRoOjI0cHh9LnZkLXBpY2tlcl9faW5wdXQtaWNvbnthbGlnbi1zZWxmOmZsZXgtc3RhcnQ7bWFyZ2luLXRvcDo0cHg7bWFyZ2luLXJpZ2h0OmF1dG87cGFkZGluZy1yaWdodDo0cHg7bGluZS1oZWlnaHQ6MTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LnZkLXBpY2tlcl9faW5wdXQtaWNvbiwudmQtcGlja2VyX19pbnB1dC1pY29uX193cmFwcGVye2Rpc3BsYXk6aW5saW5lLWZsZXh9LnZkLXBpY2tlcl9faW5wdXQtaWNvbl9fd3JhcHBlcnthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI0cHg7ZmxleDoxIDAgYXV0bztqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi13aWR0aDoyNHB4O3dpZHRoOjI0cHh9LnZkLXBpY2tlcl9faW5wdXQgaW5wdXR7cG9zaXRpb246cmVsYXRpdmU7ZmxleDoxIDEgYXV0bzttYXgtaGVpZ2h0OjMycHg7cGFkZGluZzo4cHggMDttYXgtd2lkdGg6MTAwJTttaW4td2lkdGg6MDt3aWR0aDoxMDAlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOm5vbmU7Y29sb3I6aW5oZXJpdDtmb250LXN0cmV0Y2g6bm9ybWFsO2xpbmUtaGVpZ2h0OmluaGVyaXQ7Zm9udC1zaXplOjE2cHghaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjQwMDtmb250LWZhbWlseTppbmhlcml0O2NvbG9yOmN1cnJlbnRDb2xvcjtjdXJzb3I6aW5oZXJpdH0udmQtcGlja2VyX19pbnB1dCBpbnB1dDphY3RpdmUsLnZkLXBpY2tlcl9faW5wdXQgaW5wdXQ6Zm9jdXN7b3V0bGluZTowO2JveC1zaGFkb3c6bm9uZX0udmQtcGlja2VyX19pbnB1dCBpbnB1dC5wbGFjZWhvbGRlcntvcGFjaXR5Oi42fS52ZC1waWNrZXJfX2lucHV0IGlucHV0OjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6LjZ9LnZkLXBpY2tlcl9faW5wdXQgaW5wdXQ6OnBsYWNlaG9sZGVye29wYWNpdHk6LjZ9LnZkLXBpY2tlcl9faW5wdXQgaW5wdXQ6LW1vei1wbGFjZWhvbGRlciwudmQtcGlja2VyX19pbnB1dCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5Oi42fS52ZC1waWNrZXJfX2lucHV0IGlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntvcGFjaXR5Oi42fS52ZC1waWNrZXJfX2lucHV0IGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6LjZ9LnZkLWljb24udmQtaWNvbntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxO3RleHQtaW5kZW50OjA7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguMjUsLjgsLjUsMSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0sY29sb3I7dmVydGljYWwtYWxpZ246bWlkZGxlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0udmQtaWNvbi0tbGlua3tjdXJzb3I6cG9pbnRlcn0udmQtaWNvbi0tZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTtvcGFjaXR5Oi42fS52ZC1waWNrZXJfX3RpdGxlLWNsb3NlIGJ1dHRvbntib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bGluZS1oZWlnaHQ6bm9ybWFsOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6aW5oZXJpdDstbW96LW9zeC1mb250LXNtb290aGluZzppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS52ZC1waWNrZXJfX3RpdGxlLWNsb3NlIGJ1dHRvbjphY3RpdmUsLnZkLXBpY2tlcl9fdGl0bGUtY2xvc2UgYnV0dG9uOmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjB9LnZkLXBpY2tlcl9fdGl0bGUtY2xvc2UgYnV0dG9uW3JvbGU9YnV0dG9uXSwudmQtcGlja2VyX190aXRsZS1jbG9zZSBidXR0b25bdHlwZT1idXR0b25dLC52ZC1waWNrZXJfX3RpdGxlLWNsb3NlIGJ1dHRvblt0eXBlPXJlc2V0XSwudmQtcGlja2VyX190aXRsZS1jbG9zZSBidXR0b25bdHlwZT1zdWJtaXRde2N1cnNvcjpwb2ludGVyfS52ZC1waWNrZXIsLnZkLXBpY2tlciAqLC52ZC1waWNrZXIgOmFmdGVyLC52ZC1waWNrZXIgOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnZkLXBpY2tlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjMwNHB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjZweDtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDUwLDUwLDkzLC4yKX0udmQtcGlja2VyOmFjdGl2ZSwudmQtcGlja2VyOmZvY3Vze291dGxpbmU6MH0udmQtcGlja2VyLS1ib3R0b21zaGVldHt3aWR0aDoxMDAlO2JveC1zaGFkb3c6bm9uZX0udmQtcGlja2VyLS1ib3R0b21zaGVldCAudmQtcGlja2VyLWhlYWRlcntib3JkZXItcmFkaXVzOjB9LnZkLXBpY2tlci0tcnRse2RpcmVjdGlvbjpydGx9LnZkLXBpY2tlcl9fdGl0bGV7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6NDhweDtwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6MTJweCAxMnB4IDAgMH0udmQtcGlja2VyLS1ydGwgLnZkLXBpY2tlcl9fdGl0bGV7cGFkZGluZzowIDE2cHggMCAwfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo0ODBweCl7LnZkLXBpY2tlcl9fdGl0bGV7ZGlzcGxheTpub25lfX0udmQtcGlja2VyX190aXRsZSBwe21hcmdpbjowfS52ZC1waWNrZXJfX3RpdGxlLWNsb3Nle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO2hlaWdodDoyNHB4O3dpZHRoOjI0cHg7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS52ZC1waWNrZXJfX3RpdGxlLWNsb3NlIHN2Z3t3aWR0aDoyNHB4O2hlaWdodDoyNHB4fS52ZC1waWNrZXJfX2JvZHl7cG9zaXRpb246cmVsYXRpdmU7ZmxleDoxIDEgMTAwJTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OmF1dG87b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MH0udmQtb3ZlcmxheSwudmQtcGlja2VyX19ib2R5e2Rpc3BsYXk6ZmxleH0udmQtb3ZlcmxheXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czppbmhlcml0O2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOi4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC41LDEpLHotaW5kZXggMW1zfS52ZC1vdmVybGF5X19jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlfS52ZC1vdmVybGF5X19pbm5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDt0b3A6MDtib3R0b206MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6aW5oZXJpdDt0cmFuc2l0aW9uOmluaGVyaXQ7d2lsbC1jaGFuZ2U6b3BhY2l0eX0udmQtb3ZlcmxheS0tYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LnZkLW92ZXJsYXktLWFjdGl2ZXtwb2ludGVyLWV2ZW50czphdXRvfS52ZC1waWNrZXJfX2NvbnRyb2xzLWxhYmVsIGJ1dHRvbnttYXJnaW46MDt3aWR0aDphdXRvO292ZXJmbG93OnZpc2libGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDpub3JtYWw7LXdlYmtpdC1mb250LXNtb290aGluZzppbmhlcml0Oy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LnZkLXBpY2tlcl9fY29udHJvbHMtbGFiZWwgYnV0dG9uOmFjdGl2ZSwudmQtcGlja2VyX19jb250cm9scy1sYWJlbCBidXR0b246Zm9jdXN7b3V0bGluZTowO2JveC1zaGFkb3c6MH0udmQtcGlja2VyX19jb250cm9scy1sYWJlbCBidXR0b25bcm9sZT1idXR0b25dLC52ZC1waWNrZXJfX2NvbnRyb2xzLWxhYmVsIGJ1dHRvblt0eXBlPWJ1dHRvbl0sLnZkLXBpY2tlcl9fY29udHJvbHMtbGFiZWwgYnV0dG9uW3R5cGU9cmVzZXRdLC52ZC1waWNrZXJfX2NvbnRyb2xzLWxhYmVsIGJ1dHRvblt0eXBlPXN1Ym1pdF17Y3Vyc29yOnBvaW50ZXJ9LnZkLXBpY2tlcl9fY29udHJvbHN7ZGlzcGxheTpmbGV4O2hlaWdodDo0OHB4O3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnZkLXBpY2tlcl9fY29udHJvbHMtd3JhcHBlcntvdmVyZmxvdzpoaWRkZW47anVzdGlmeS1jb250ZW50OmNlbnRlcn0udmQtcGlja2VyX19jb250cm9scy1tb250aCwudmQtcGlja2VyX19jb250cm9scy13cmFwcGVyLC52ZC1waWNrZXJfX2NvbnRyb2xzLXllYXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4OjF9LnZkLXBpY2tlcl9fY29udHJvbHMtbW9udGh7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS52ZC1waWNrZXJfX2NvbnRyb2xzLXllYXJ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnZkLXBpY2tlcl9fY29udHJvbHMteWVhci52ZC1waWNrZXJfX2NvbnRyb2xzLXllYXItLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52ZC1waWNrZXJfX2NvbnRyb2xzLWxhYmVse3BhZGRpbmc6OHB4IDRweH0udmQtcGlja2VyX19jb250cm9scy1sYWJlbCBidXR0b257cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxNXB4O3BhZGRpbmc6MDtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpjb2xvciAuM3N9LnZkLXBpY2tlcl9fY29udHJvbHMtbGFiZWwgYnV0dG9uOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpe2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0udmQtcGlja2VyX19jb250cm9scy1sYWJlbCBidXR0b246ZGlzYWJsZWQsLnZkLXBpY2tlcl9fY29udHJvbHMtbGFiZWwgYnV0dG9uW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdDtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9LnZkLXBpY2tlcl9fY29udHJvbHMgYnV0dG9uLnZkLXBpY2tlcl9fY29udHJvbHMtbmV4dCwudmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1wcmV2e3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6MCAwIDQwcHg7aGVpZ2h0OjQ4cHg7d2lkdGg6NDhweDtwYWRkaW5nOjAgMCAwIDI0cHg7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO2NvbG9yOnJnYmEoMCwwLDAsLjg3KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcn1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpey52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLW5leHQsLnZkLXBpY2tlcl9fY29udHJvbHMgYnV0dG9uLnZkLXBpY2tlcl9fY29udHJvbHMtcHJldntwYWRkaW5nOjAgOHB4fX0udmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1uZXh0OmRpc2FibGVkLC52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLW5leHRbZGlzYWJsZWRdLC52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLXByZXY6ZGlzYWJsZWQsLnZkLXBpY2tlcl9fY29udHJvbHMgYnV0dG9uLnZkLXBpY2tlcl9fY29udHJvbHMtcHJldltkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9LnZkLXBpY2tlcl9fY29udHJvbHMgYnV0dG9uLnZkLXBpY2tlcl9fY29udHJvbHMtbmV4dDpkaXNhYmxlZCBzdmcsLnZkLXBpY2tlcl9fY29udHJvbHMgYnV0dG9uLnZkLXBpY2tlcl9fY29udHJvbHMtbmV4dFtkaXNhYmxlZF0gc3ZnLC52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLXByZXY6ZGlzYWJsZWQgc3ZnLC52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLXByZXZbZGlzYWJsZWRdIHN2Z3tjb2xvcjpyZ2JhKDAsMCwwLC4yNil9LnZkLXBpY2tlci0tcnRsIC52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLW5leHQsLnZkLXBpY2tlci0tcnRsIC52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLXByZXZ7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLW5leHR7cGFkZGluZzowIDI0cHggMCAwfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCl7LnZkLXBpY2tlcl9fY29udHJvbHMgYnV0dG9uLnZkLXBpY2tlcl9fY29udHJvbHMtbmV4dHtwYWRkaW5nOjAgOHB4fX0udmQtcGlja2VyX19jb250cm9scyBzdmd7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnZkLXBpY2tlci1oZWFkZXJ7Y29sb3I6I2ZmZjtwYWRkaW5nOjE2cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LXdyYXA6d3JhcDtsaW5lLWhlaWdodDoxO21pbi1oZWlnaHQ6ODBweDtoZWlnaHQ6ODBweDtib3JkZXItcmFkaXVzOjZweCA2cHggMCAwfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCl7LnZkLXBpY2tlci1oZWFkZXJ7bWluLWhlaWdodDo4NXB4O2hlaWdodDo4NXB4fX0udmQtcGlja2VyLWhlYWRlci0tcmFuZ2UgLnZkLXBpY2tlci1oZWFkZXJfX3dyYXB7ZmxleDoxIDEgYXV0bztmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnZkLXBpY2tlci1oZWFkZXItLXJhbmdlIC52ZC1waWNrZXItaGVhZGVyX19kYXRle2ZvbnQtc2l6ZToxOHB4O2hlaWdodDoyNnB4fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCl7LnZkLXBpY2tlci1oZWFkZXItLXJhbmdlIC52ZC1waWNrZXItaGVhZGVyX19kYXRle2ZvbnQtc2l6ZToyMnB4O2hlaWdodDozMHB4fX0udmQtcGlja2VyLWhlYWRlci0teWVhciAudmQtcGlja2VyLWhlYWRlcl9feWVhcntmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZToyMnB4O2hlaWdodDozMHB4fS52ZC1waWNrZXItaGVhZGVyX195ZWFye2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206OHB4O29wYWNpdHk6LjY7dHJhbnNpdGlvbjpvcGFjaXR5IC4zc30udmQtcGlja2VyLWhlYWRlcl9feWVhcjpmb2N1czpub3QoLnZkLXBpY2tlci1oZWFkZXJfX3llYXItLWFjdGl2ZSksLnZkLXBpY2tlci1oZWFkZXJfX3llYXI6aG92ZXI6bm90KC52ZC1waWNrZXItaGVhZGVyX195ZWFyLS1hY3RpdmUpe2N1cnNvcjpwb2ludGVyO29wYWNpdHk6MX0udmQtcGlja2VyLWhlYWRlcl9feWVhci0tYWN0aXZle29wYWNpdHk6MTtjdXJzb3I6ZGVmYXVsdH0udmQtcGlja2VyLWhlYWRlcl9fZGF0ZSwudmQtcGlja2VyLWhlYWRlcl9fd3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJX0udmQtcGlja2VyLWhlYWRlcl9fZGF0ZXtmb250LXNpemU6MjJweDtoZWlnaHQ6MzBweDt0ZXh0LWFsaWduOmxlZnQ7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctYm90dG9tOjhweDttYXJnaW4tYm90dG9tOi04cHg7b3BhY2l0eTouNjt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzfS52ZC1waWNrZXItaGVhZGVyX19kYXRlOmZvY3VzOm5vdCgudmQtcGlja2VyLWhlYWRlcl9fZGF0ZS0tYWN0aXZlKSwudmQtcGlja2VyLWhlYWRlcl9fZGF0ZTpob3Zlcjpub3QoLnZkLXBpY2tlci1oZWFkZXJfX2RhdGUtLWFjdGl2ZSl7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eToxfS52ZC1waWNrZXItaGVhZGVyX19kYXRlLS1hY3RpdmV7b3BhY2l0eToxO2N1cnNvcjpkZWZhdWx0fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCl7LnZkLXBpY2tlci1oZWFkZXJfX2RhdGV7Zm9udC1zaXplOjI0cHg7aGVpZ2h0OjMycHh9fS52ZC1waWNrZXItcHJlc2V0e2JvcmRlcjpub25lO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDphdXRvO292ZXJmbG93OnZpc2libGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDpub3JtYWw7LXdlYmtpdC1mb250LXNtb290aGluZzppbmhlcml0Oy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LnZkLXBpY2tlci1wcmVzZXQ6YWN0aXZlLC52ZC1waWNrZXItcHJlc2V0OmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjB9LnZkLXBpY2tlci1wcmVzZXRbcm9sZT1idXR0b25dLC52ZC1waWNrZXItcHJlc2V0W3R5cGU9YnV0dG9uXSwudmQtcGlja2VyLXByZXNldFt0eXBlPXJlc2V0XSwudmQtcGlja2VyLXByZXNldFt0eXBlPXN1Ym1pdF17Y3Vyc29yOnBvaW50ZXJ9LnZkLXBpY2tlci1wcmVzZXRze3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjE2cHggMTJweH1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NDgwcHgpey52ZC1waWNrZXItcHJlc2V0c3twYWRkaW5nOjE2cHggMTJweCA4cHh9fS52ZC1waWNrZXItcHJlc2V0c19fd3JhcHBlcntmbGV4OjEgMSBhdXRvO2ZsZXgtd3JhcDp3cmFwO3dpZHRoOjEwMCV9LnZkLXBpY2tlci1wcmVzZXQsLnZkLXBpY2tlci1wcmVzZXRzX193cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleH0udmQtcGlja2VyLXByZXNldHthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJTtwYWRkaW5nOjAgOHB4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE0cHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjowIHNvbGlkICNlZWYxZjg7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC41LDEpfS52ZC1waWNrZXItLWJvdHRvbXNoZWV0IC52ZC1waWNrZXItcHJlc2V0LC52ZC1waWNrZXItcHJlc2V0e21pbi1oZWlnaHQ6MzJweDtoZWlnaHQ6MzJweH0udmQtcGlja2VyLXByZXNldDpudGgtY2hpbGQob2RkKXtib3JkZXItd2lkdGg6MCAxcHggMXB4fS52ZC1waWNrZXItcHJlc2V0Om50aC1jaGlsZChvZGQpOmZpcnN0LWNoaWxke2JvcmRlci13aWR0aDoxcHh9LnZkLXBpY2tlci1wcmVzZXQ6bnRoLWNoaWxkKDJuKXtib3JkZXItd2lkdGg6MCAxcHggMXB4IDB9LnZkLXBpY2tlci1wcmVzZXQ6bnRoLWNoaWxkKDJuKTpudGgtY2hpbGQoMil7Ym9yZGVyLXdpZHRoOjFweCAxcHggMXB4IDB9LnZkLXBpY2tlci1wcmVzZXRfX2VmZmVjdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC41LDEpO3otaW5kZXg6MH0udmQtcGlja2VyLXByZXNldF9fbmFtZXtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LnZkLXBpY2tlci1wcmVzZXQtLXNlbGVjdGVkLC52ZC1waWNrZXItcHJlc2V0OmhvdmVyOm5vdCgudmQtcGlja2VyLXByZXNldC0tZGlzYWJsZWQpe2NvbG9yOiNmZmZ9LnZkLXBpY2tlci1wcmVzZXQtLXNlbGVjdGVkIC52ZC1waWNrZXItcHJlc2V0X19lZmZlY3QsLnZkLXBpY2tlci1wcmVzZXQ6aG92ZXI6bm90KC52ZC1waWNrZXItcHJlc2V0LS1kaXNhYmxlZCkgLnZkLXBpY2tlci1wcmVzZXRfX2VmZmVjdHtvcGFjaXR5OjF9LnZkLXBpY2tlci1wcmVzZXQtLXNlbGVjdGVke3BvaW50ZXItZXZlbnRzOm5vbmV9LnZkLXBpY2tlci1wcmVzZXQtLWRpc2FibGVke2NvbG9yOnJnYmEoOTMsMTA2LDEzNywuMik7Y3Vyc29yOm5vdC1hbGxvd2VkO3BvaW50ZXItZXZlbnRzOm5vbmV9LnZkLXBpY2tlcl9fdGFibGV7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzowIDEycHg7aGVpZ2h0OjI3NHB4fS52ZC1waWNrZXItLWJvdHRvbXNoZWV0IC52ZC1waWNrZXJfX3RhYmxle2hlaWdodDozMjJweH0udmQtcGlja2VyX190YWJsZS13ZWVre2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO2ZsZXg6MSAxIDEwMCU7bWF4LXdpZHRoOjEwMCU7cGFkZGluZzo4cHggMDtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MThweDtmb250LXdlaWdodDo1MDA7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS52ZC1waWNrZXJfX3RhYmxlLXdlZWtkYXl7ZmxleDowIDAgMTQuMjg1NzElO21heC13aWR0aDoxNC4yODU3MSU7dGV4dC1hbGlnbjpjZW50ZXJ9LnZkLXBpY2tlcl9fdGFibGUtZGF5c19fd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47aGVpZ2h0OjI0MHB4fS52ZC1waWNrZXItLWJvdHRvbXNoZWV0IC52ZC1waWNrZXJfX3RhYmxlLWRheXNfX3dyYXBwZXJ7aGVpZ2h0OjI4OHB4fS52ZC1waWNrZXJfX3RhYmxlLWRheXN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlfS52ZC1waWNrZXJfX3RhYmxlLWRheXtib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bGluZS1oZWlnaHQ6bm9ybWFsOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6aW5oZXJpdDstbW96LW9zeC1mb250LXNtb290aGluZzppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS52ZC1waWNrZXJfX3RhYmxlLWRheTphY3RpdmUsLnZkLXBpY2tlcl9fdGFibGUtZGF5OmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjB9LnZkLXBpY2tlcl9fdGFibGUtZGF5W3JvbGU9YnV0dG9uXSwudmQtcGlja2VyX190YWJsZS1kYXlbdHlwZT1idXR0b25dLC52ZC1waWNrZXJfX3RhYmxlLWRheVt0eXBlPXJlc2V0XSwudmQtcGlja2VyX190YWJsZS1kYXlbdHlwZT1zdWJtaXRde2N1cnNvcjpwb2ludGVyfS52ZC1waWNrZXJfX3RhYmxlLWRheXtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxNC4yODU3MSU7aGVpZ2h0OjQwcHg7bGluZS1oZWlnaHQ6MTtmb250LXNpemU6MTJweDtmbG9hdDpsZWZ0O3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOmN1cnJlbnRDb2xvcjtmb250LXdlaWdodDo1MDA7dHJhbnNpdGlvbjphbGwgLjQ1cyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO292ZXJmbG93OmhpZGRlbn0udmQtcGlja2VyLS1ib3R0b21zaGVldCAudmQtcGlja2VyX190YWJsZS1kYXl7aGVpZ2h0OjQ4cHh9LnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDoycHg7Ym90dG9tOjJweDtsZWZ0OjA7cmlnaHQ6MDtib3JkZXI6bm9uZX0udmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7b3BhY2l0eTowO3dpZHRoOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ei1pbmRleDoxO3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eX0udmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YWZ0ZXJ7Y29udGVudDpcXFwiXFxcIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjUwJTt3aWR0aDpjYWxjKDEwMCUgKyAxcHgpO2hlaWdodDozNnB4O2JvcmRlcjoxcHggc29saWQ7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3I7b3BhY2l0eTouMTI7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMCl9LnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVye2hlaWdodDo0NHB4fS52ZC1waWNrZXJfX3RhYmxlLWRheV9fY3VycmVudCwudmQtcGlja2VyX190YWJsZS1kYXlfX2VmZmVjdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt3aWR0aDozNnB4O2hlaWdodDozNnB4O2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoxcHggc29saWR9LnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X19jdXJyZW50LC52ZC1waWNrZXItLWJvdHRvbXNoZWV0IC52ZC1waWNrZXJfX3RhYmxlLWRheV9fZWZmZWN0e3dpZHRoOjQ0cHg7aGVpZ2h0OjQ0cHh9LnZkLXBpY2tlcl9fdGFibGUtZGF5X19jdXJyZW50e2NvbG9yOnJnYmEoMCwwLDAsLjg3KTt6LWluZGV4OjF9LnZkLXBpY2tlcl9fdGFibGUtZGF5X19lZmZlY3R7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3I7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMCk7dHJhbnNpdGlvbjphbGwgLjQ1cyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO3otaW5kZXg6MX0udmQtcGlja2VyLS1yYW5nZS1zZWxlY3RpbmcgLnZkLXBpY2tlcl9fdGFibGUtZGF5X19lZmZlY3R7dHJhbnNpdGlvbjp1bnNldH0udmQtcGlja2VyX190YWJsZS1kYXlfX3RleHR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46YXV0bzt3aWR0aDozNnB4O2hlaWdodDozNnB4O2NvbG9yOnJnYmEoMCwwLDAsLjg3KTt6LWluZGV4OjF9LnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X190ZXh0e3dpZHRoOjQ0cHg7aGVpZ2h0OjQ0cHh9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikgLnZkLXBpY2tlcl9fdGFibGUtZGF5X19lZmZlY3R7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMSk7b3BhY2l0eTouMTJ9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1lbmQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmJlZm9yZSwudmQtcGlja2VyX190YWJsZS1kYXk6aG92ZXI6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tZGlzYWJsZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1iZXR3ZWVuKS52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0LXN0YXJ0IC52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcjpiZWZvcmV7b3BhY2l0eToxO3JpZ2h0OjB9LnZkLXBpY2tlci0tcnRsIC52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3QtZW5kIC52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcjpiZWZvcmUsLnZkLXBpY2tlci0tcnRsIC52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3Qtc3RhcnQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmJlZm9yZXtsZWZ0OjA7cmlnaHQ6dW5zZXR9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1lbmQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVyLC52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3Qtc3RhcnQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVye3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHNjYWxlKDEpO29wYWNpdHk6LjA4fS52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3QtZW5kIC52ZC1waWNrZXJfX3RhYmxlLWRheV9fZWZmZWN0LC52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3Qtc3RhcnQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X19lZmZlY3R7b3BhY2l0eToxO3RyYW5zaXRpb246dW5zZXR9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1lbmQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X190ZXh0LC52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3Qtc3RhcnQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X190ZXh0e2NvbG9yOiNmZmZ9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1zdGFydCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YmVmb3Jle2xlZnQ6MH0udmQtcGlja2VyLS1ydGwgLnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1zdGFydCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YmVmb3Jle3JpZ2h0OjA7bGVmdDp1bnNldH0udmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdGVkIC52ZC1waWNrZXJfX3RhYmxlLWRheV9fZWZmZWN0e3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHNjYWxlKDEpO29wYWNpdHk6MX0udmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdGVkIC52ZC1waWNrZXJfX3RhYmxlLWRheV9fdGV4dHtjb2xvcjojZmZmfS52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2Vlbjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCkgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVyLC52ZC1waWNrZXJfX3RhYmxlLWRheS0tZmlyc3QgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVyLC52ZC1waWNrZXJfX3RhYmxlLWRheS0taW4tcmFuZ2U6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tZGlzYWJsZWQpIC52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcjphZnRlciwudmQtcGlja2VyX190YWJsZS1kYXktLWxhc3QgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVye3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHNjYWxlKDEpfS52ZC1waWNrZXItLXJhbmdlLXNlbGVjdGluZyAudmQtcGlja2VyX190YWJsZS1kYXktLWZpcnN0IC52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcjphZnRlciwudmQtcGlja2VyLS1yYW5nZS1zZWxlY3RpbmcgLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1sYXN0IC52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcjphZnRlciwudmQtcGlja2VyX190YWJsZS1kYXktLWluLXJhbmdlOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKSAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YWZ0ZXJ7b3BhY2l0eTouMDh9LnZkLXBpY2tlcl9fdGFibGUtZGF5LS1maXJzdCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YmVmb3Jle29wYWNpdHk6MTtsZWZ0OjB9LnZkLXBpY2tlci0tcnRsIC52ZC1waWNrZXJfX3RhYmxlLWRheS0tZmlyc3QgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmJlZm9yZXtyaWdodDowO2xlZnQ6dW5zZXR9LnZkLXBpY2tlcl9fdGFibGUtZGF5LS1sYXN0IC52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcjpiZWZvcmV7b3BhY2l0eToxO3JpZ2h0OjB9LnZkLXBpY2tlci0tcnRsIC52ZC1waWNrZXJfX3RhYmxlLWRheS0tbGFzdCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YmVmb3Jle2xlZnQ6MDtyaWdodDp1bnNldH0udmQtcGlja2VyX190YWJsZS1kYXktLWxhc3Q6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0LXN0YXJ0KSAudmQtcGlja2VyX190YWJsZS1kYXlfX2VmZmVjdHtvcGFjaXR5OjF9LnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZC52ZC1waWNrZXJfX3RhYmxlLWRheXtjdXJzb3I6ZGVmYXVsdH0udmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkLnZkLXBpY2tlcl9fdGFibGUtZGF5IC52ZC1waWNrZXJfX3RhYmxlLWRheV9fdGV4dHtjb2xvcjpyZ2JhKDkzLDEwNiwxMzcsLjIpfS52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbntib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bGluZS1oZWlnaHQ6bm9ybWFsOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6aW5oZXJpdDstbW96LW9zeC1mb250LXNtb290aGluZzppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbjphY3RpdmUsLnZkLXBpY2tlci12YWxpZGF0ZV9fYnV0dG9uOmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjB9LnZkLXBpY2tlci12YWxpZGF0ZV9fYnV0dG9uW3JvbGU9YnV0dG9uXSwudmQtcGlja2VyLXZhbGlkYXRlX19idXR0b25bdHlwZT1idXR0b25dLC52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvblt0eXBlPXJlc2V0XSwudmQtcGlja2VyLXZhbGlkYXRlX19idXR0b25bdHlwZT1zdWJtaXRde2N1cnNvcjpwb2ludGVyfS52ZC1waWNrZXItdmFsaWRhdGV7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LWFsaWduOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7cGFkZGluZzo4cHh9LnZkLXBpY2tlci12YWxpZGF0ZSwudmQtcGlja2VyLXZhbGlkYXRlX19idXR0b257cG9zaXRpb246cmVsYXRpdmU7YWxpZ24taXRlbXM6Y2VudGVyfS52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbntkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXg6MCAwIGF1dG87LW1zLWZsZXgtYWxpZ246Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7aGVpZ2h0OjM2cHg7bWluLXdpZHRoOjQ0cHg7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6NnB4IDhweDtvdXRsaW5lOjA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3RleHQtZGVjb3JhdGlvbjpub25lO292ZXJmbG93OmhpZGRlbn0udmQtcGlja2VyLXZhbGlkYXRlX19idXR0b24rLnZkLXBpY2tlci12YWxpZGF0ZV9fYnV0dG9ue21hcmdpbi1sZWZ0OjhweH0udmQtcGlja2VyLXZhbGlkYXRlX19idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkgLnZkLXBpY2tlci12YWxpZGF0ZV9fZWZmZWN0e29wYWNpdHk6LjF9LnZkLXBpY2tlci12YWxpZGF0ZV9fYnV0dG9uOmRpc2FibGVkLC52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbltkaXNhYmxlZF17Y29sb3I6cmdiYSgwLDAsMCwuMjYpIWltcG9ydGFudDtjdXJzb3I6ZGVmYXVsdH0udmQtcGlja2VyLXZhbGlkYXRlX19lZmZlY3R7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuNDVzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7ei1pbmRleDotMX0udmQtcGlja2VyX19tb250aHMtYnV0dG9ue2JvcmRlcjpub25lO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDphdXRvO292ZXJmbG93OnZpc2libGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDpub3JtYWw7LXdlYmtpdC1mb250LXNtb290aGluZzppbmhlcml0Oy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LnZkLXBpY2tlcl9fbW9udGhzLWJ1dHRvbjphY3RpdmUsLnZkLXBpY2tlcl9fbW9udGhzLWJ1dHRvbjpmb2N1c3tvdXRsaW5lOjA7Ym94LXNoYWRvdzowfS52ZC1waWNrZXJfX21vbnRocy1idXR0b25bcm9sZT1idXR0b25dLC52ZC1waWNrZXJfX21vbnRocy1idXR0b25bdHlwZT1idXR0b25dLC52ZC1waWNrZXJfX21vbnRocy1idXR0b25bdHlwZT1yZXNldF0sLnZkLXBpY2tlcl9fbW9udGhzLWJ1dHRvblt0eXBlPXN1Ym1pdF17Y3Vyc29yOnBvaW50ZXJ9LnZkLXBpY2tlcl9fbW9udGhze3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2hlaWdodDoyNzRweH0udmQtcGlja2VyLS1ib3R0b21zaGVldCAudmQtcGlja2VyX19tb250aHN7aGVpZ2h0OjMyMnB4fUBzdXBwb3J0cyAocGFkZGluZy1ib3R0b206Y29uc3RhbnQoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpey52ZC1waWNrZXJfX21vbnRoc3stLXNhZmUtYXJlYS1pbnNldC1ib3R0b206Y29uc3RhbnQoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7cGFkZGluZy1ib3R0b206dmFyKC0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbSl9fUBzdXBwb3J0cyAocGFkZGluZy1ib3R0b206ZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKXsudmQtcGlja2VyX19tb250aHN7LS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtwYWRkaW5nLWJvdHRvbTp2YXIoLS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tKX19LnZkLXBpY2tlcl9fbW9udGhzLWlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cGFkZGluZzowIDEycHh9LnZkLXBpY2tlcl9fbW9udGhzLWlubmVyLC52ZC1waWNrZXJfX21vbnRocy1saXN0e2Rpc3BsYXk6ZmxleH0udmQtcGlja2VyX19tb250aHMtbGlzdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtmbGV4OjEgMSBhdXRvO2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktaXRlbXM6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0udmQtcGlja2VyX19tb250aHMtYnV0dG9ue3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDo0OHB4O21pbi1oZWlnaHQ6NDhweDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjUwMDtib3JkZXItcmFkaXVzOjJweDtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4zcztib3JkZXI6dGhpbiBzb2xpZCB0cmFuc3BhcmVudH0udmQtcGlja2VyX19tb250aHMtYnV0dG9uOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VlZjFmOH0udmQtcGlja2VyX19tb250aHMtYnV0dG9uOmRpc2FibGVkLC52ZC1waWNrZXJfX21vbnRocy1idXR0b25bZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0O2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtwb2ludGVyLWV2ZW50czpub25lfS52ZC1waWNrZXJfX21vbnRocy1idXR0b25fX3dyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIDMzLjMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMlO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyNSU7bWluLWhlaWdodDoyNSU7cGFkZGluZzo0cHggOHB4fS52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvbntib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bGluZS1oZWlnaHQ6bm9ybWFsOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6aW5oZXJpdDstbW96LW9zeC1mb250LXNtb290aGluZzppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvbjphY3RpdmUsLnZkLXBpY2tlcl9fcXVhcnRlcnMtYnV0dG9uOmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjB9LnZkLXBpY2tlcl9fcXVhcnRlcnMtYnV0dG9uW3JvbGU9YnV0dG9uXSwudmQtcGlja2VyX19xdWFydGVycy1idXR0b25bdHlwZT1idXR0b25dLC52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvblt0eXBlPXJlc2V0XSwudmQtcGlja2VyX19xdWFydGVycy1idXR0b25bdHlwZT1zdWJtaXRde2N1cnNvcjpwb2ludGVyfS52ZC1waWNrZXJfX3F1YXJ0ZXJze3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2hlaWdodDoyNzRweH0udmQtcGlja2VyLS1ib3R0b21zaGVldCAudmQtcGlja2VyX19xdWFydGVyc3toZWlnaHQ6Mjc0cHh9QHN1cHBvcnRzIChwYWRkaW5nLWJvdHRvbTpjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSl7LnZkLXBpY2tlcl9fcXVhcnRlcnN7LS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tOmNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO3BhZGRpbmctYm90dG9tOnZhcigtLXNhZmUtYXJlYS1pbnNldC1ib3R0b20pfX1Ac3VwcG9ydHMgKHBhZGRpbmctYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSl7LnZkLXBpY2tlcl9fcXVhcnRlcnN7LS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtwYWRkaW5nLWJvdHRvbTp2YXIoLS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tKX19LnZkLXBpY2tlcl9fcXVhcnRlcnMtaW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cGFkZGluZzowIDEycHh9LnZkLXBpY2tlcl9fcXVhcnRlcnMtbGlzdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bztmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWl0ZW1zOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LnZkLXBpY2tlcl9fcXVhcnRlcnMtYnV0dG9ue3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDo0OHB4O21pbi1oZWlnaHQ6NDhweDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjUwMDtib3JkZXItcmFkaXVzOjJweDtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4zcztib3JkZXI6dGhpbiBzb2xpZCB0cmFuc3BhcmVudH0udmQtcGlja2VyX19xdWFydGVycy1idXR0b246aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWVmMWY4fS52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvbjpkaXNhYmxlZCwudmQtcGlja2VyX19xdWFydGVycy1idXR0b25bZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0O2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtwb2ludGVyLWV2ZW50czpub25lfS52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvbl9fd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgMTAwJTttYXgtd2lkdGg6MSAxIDEwMCU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI1JTttaW4taGVpZ2h0OjI1JTtwYWRkaW5nOjRweCA4cHh9LnNsaWRlLXgtdHJhbnNpdGlvbi1lbnRlci1hY3RpdmUsLnNsaWRlLXgtdHJhbnNpdGlvbi1sZWF2ZS1hY3RpdmV7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguMjUsLjgsLjUsMSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5LHRyYW5zZm9ybSxoZWlnaHR9LnNsaWRlLXgtdHJhbnNpdGlvbi1lbnRlciwuc2xpZGUteC10cmFuc2l0aW9uLWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTVweCl9LnNsaWRlLXktdHJhbnNpdGlvbi1lbnRlci1hY3RpdmUsLnNsaWRlLXktdHJhbnNpdGlvbi1sZWF2ZS1hY3RpdmV7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguMjUsLjgsLjUsMSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5LHRyYW5zZm9ybSxoZWlnaHR9LnNsaWRlLXktdHJhbnNpdGlvbi1lbnRlciwuc2xpZGUteS10cmFuc2l0aW9uLWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTVweCl9LnNjYWxlLXRyYW5zaXRpb24tZW50ZXItYWN0aXZlLC5zY2FsZS10cmFuc2l0aW9uLWxlYXZlLWFjdGl2ZXt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLGhlaWdodH0uc2NhbGUtdHJhbnNpdGlvbi1lbnRlciwuc2NhbGUtdHJhbnNpdGlvbi1sZWF2ZSwuc2NhbGUtdHJhbnNpdGlvbi1sZWF2ZS10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlKDApfS5zbGlkZS1pbi1vdXQtdHJhbnNpdGlvbi1lbnRlci1hY3RpdmUsLnNsaWRlLWluLW91dC10cmFuc2l0aW9uLWxlYXZlLWFjdGl2ZXt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLGhlaWdodH0uc2xpZGUtaW4tb3V0LXRyYW5zaXRpb24tZW50ZXIsLnNsaWRlLWluLW91dC10cmFuc2l0aW9uLWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKX0uc2xpZGUtaC1uZXh0LWVudGVyLWFjdGl2ZSwuc2xpZGUtaC1uZXh0LWxlYXZlLWFjdGl2ZSwuc2xpZGUtaC1wcmV2LWVudGVyLWFjdGl2ZSwuc2xpZGUtaC1wcmV2LWxlYXZlLWFjdGl2ZSwuc2xpZGUtdi1uZXh0LWVudGVyLWFjdGl2ZSwuc2xpZGUtdi1uZXh0LWxlYXZlLWFjdGl2ZSwuc2xpZGUtdi1wcmV2LWVudGVyLWFjdGl2ZSwuc2xpZGUtdi1wcmV2LWxlYXZlLWFjdGl2ZXt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLGhlaWdodDtwb3NpdGlvbjphYnNvbHV0ZX0uc2xpZGUtaC1uZXh0LWVudGVye29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX0uc2xpZGUtaC1uZXh0LWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9LnNsaWRlLWgtcHJldi1sZWF2ZS10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSl9LnNsaWRlLWgtcHJldi1lbnRlcntvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfS52ZC1waWNrZXJfX2NvbnRyb2xzLXllYXIudmQtcGlja2VyX19jb250cm9scy15ZWFyLS1jZW50ZXIgLnNsaWRlLWgtbmV4dC1lbnRlciwudmQtcGlja2VyX19jb250cm9scy15ZWFyLnZkLXBpY2tlcl9fY29udHJvbHMteWVhci0tY2VudGVyIC5zbGlkZS1oLXByZXYtbGVhdmUtdG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgxNTAlKX0udmQtcGlja2VyX19jb250cm9scy15ZWFyLnZkLXBpY2tlcl9fY29udHJvbHMteWVhci0tY2VudGVyIC5zbGlkZS1oLW5leHQtbGVhdmUtdG8sLnZkLXBpY2tlcl9fY29udHJvbHMteWVhci52ZC1waWNrZXJfX2NvbnRyb2xzLXllYXItLWNlbnRlciAuc2xpZGUtaC1wcmV2LWVudGVye3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTE1MCUpfS52ZC1waWNrZXItLXJ0bCAuc2xpZGUtaC1uZXh0LWVudGVyLC52ZC1waWNrZXItLXJ0bCAuc2xpZGUtaC1wcmV2LWxlYXZlLXRve3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX0udmQtcGlja2VyLS1ydGwgLnNsaWRlLWgtbmV4dC1sZWF2ZS10bywudmQtcGlja2VyLS1ydGwgLnNsaWRlLWgtcHJldi1lbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX0uc2xpZGUtdi1uZXh0LWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKX0uc2xpZGUtdi1uZXh0LWVudGVye29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9LnNsaWRlLXYtcHJldi1lbnRlcntvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSl9LnNsaWRlLXYtcHJldi1sZWF2ZS10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpfS55ZWFyTW9udGgtZW50ZXItYWN0aXZlLC55ZWFyTW9udGgtbGVhdmUtYWN0aXZle3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zaXRpb246b3BhY2l0eSAuM3N9LnllYXJNb250aC1lbnRlciwueWVhck1vbnRoLWxlYXZlLXRve29wYWNpdHk6MH0udmQtcGlja2VyX195ZWFyc3twb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MzIycHg7bGlzdC1zdHlsZS10eXBlOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7cGFkZGluZzo4cHggMDtvdmVyZmxvdy15OnNjcm9sbDstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0udmQtcGlja2VyLS1ib3R0b21zaGVldCAudmQtcGlja2VyX195ZWFyc3toZWlnaHQ6MzcwcHh9QHN1cHBvcnRzIChwYWRkaW5nLWJvdHRvbTpjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSl7LnZkLXBpY2tlcl9feWVhcnN7LS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tOmNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO3BhZGRpbmctYm90dG9tOmNhbGMoOHB4ICsgdmFyKC0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpfX1Ac3VwcG9ydHMgKHBhZGRpbmctYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSl7LnZkLXBpY2tlcl9feWVhcnN7LS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtwYWRkaW5nLWJvdHRvbTpjYWxjKDhweCArIHZhcigtLXNhZmUtYXJlYS1pbnNldC1ib3R0b20pKX19LnZkLXBpY2tlci0tdmFsaWRhdGUgLnZkLXBpY2tlcl9feWVhcnN7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZjFmOH0udmQtcGlja2VyX195ZWFycyBsaXtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7cGFkZGluZzo4cHggMDttYXJnaW4tbGVmdDoxMnB4O21hcmdpbi1yaWdodDoxMnB4O2hlaWdodDo0MHB4O21pbi1oZWlnaHQ6NDBweDt3aWR0aDpjYWxjKDEwMCUgLSAyNHB4KTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1MDA7b3V0bGluZTpub25lO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuM3M7Ym9yZGVyOnRoaW4gc29saWQgdHJhbnNwYXJlbnR9LnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlcl9feWVhcnMgbGl7aGVpZ2h0OjQ4cHg7bWluLWhlaWdodDo0OHB4fS52ZC1waWNrZXJfX3llYXJzIGxpOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VlZjFmOH0udmQtcGlja2VyX195ZWFycyBsaTpkaXNhYmxlZCwudmQtcGlja2VyX195ZWFycyBsaVtkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6cmdiYSgwLDAsMCwuMjYpO3BvaW50ZXItZXZlbnRzOm5vbmV9LnZkLXBpY2tlcl9feWVhcnMgbGkrbGl7bWFyZ2luLXRvcDoycHh9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BtYXRoaWV1c3Rhbi92dWUtZGF0ZXBpY2tlci9kaXN0L3Z1ZS1kYXRlcGlja2VyLm1pbi5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsaUVBQStGLHFCQUFxQixDQUFDLFlBQVksaUJBQWlCLENBQXlDLFlBQVksQ0FBc0MsYUFBYSxDQUFnRCxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLHFDQUFxQyxjQUFjLENBQUMscUNBQXFDLFNBQVMsQ0FBQyxvQkFBb0IsV0FBVyxDQUEwRyxnR0FBZ0csQ0FBQyxzQkFBc0IsbUJBQW1CLENBQUMsY0FBc0QsWUFBWSxDQUFzQyxhQUFhLENBQUMsY0FBYyxDQUFDLHFEQUFtRixxQkFBcUIsQ0FBQyxTQUFTLFlBQVksQ0FBQyxtQkFBbUIsY0FBYyxDQUFDLG9CQUE0RCxZQUFZLENBQWdELGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxXQUFXLGNBQWMsQ0FBQyxrQkFBa0IsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMscUJBQXFCLENBQWdELHNDQUFzQyxDQUFDLHlCQUF5QixjQUFjLENBQUMsK0JBQStCLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxn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QkFBbUIsQ0FBQyx3QkFBd0IsY0FBY1wiLFwic291cmNlc0NvbnRlbnRcIjpbXCIudmQtd3JhcHBlciwudmQtd3JhcHBlciAqLC52ZC13cmFwcGVyIDphZnRlciwudmQtd3JhcHBlciA6YmVmb3Jley13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0udmQtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxIDEgYXV0bztmbGV4OjEgMSBhdXRvOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21heC13aWR0aDoxMDAlO2N1cnNvcjpkZWZhdWx0fS52ZC13cmFwcGVyOm5vdCgudmQtd3JhcHBlci0taW5saW5lKXtjdXJzb3I6cG9pbnRlcn0udmQtd3JhcHBlcjphY3RpdmUsLnZkLXdyYXBwZXI6Zm9jdXN7b3V0bGluZTowfS52ZC13cmFwcGVyLS1pbmxpbmV7d2lkdGg6MzA0cHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgM3B4IDFweCAtMnB4IHJnYmEoMCwwLDAsLjIpLDAgMnB4IDJweCAwIHJnYmEoMCwwLDAsLjE0KSwwIDFweCA1cHggMCByZ2JhKDAsMCwwLC4xMik7Ym94LXNoYWRvdzowIDNweCAxcHggLTJweCByZ2JhKDAsMCwwLC4yKSwwIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNCksMCAxcHggNXB4IDAgcmdiYSgwLDAsMCwuMTIpfS52ZC13cmFwcGVyLS1kaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lfS52ZC1hY3RpdmF0b3J7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAxIGF1dG87ZmxleDoxIDEgYXV0bzttYXgtd2lkdGg6MTAwJX0udmQtbWVudSwudmQtbWVudSAqLC52ZC1tZW51IDphZnRlciwudmQtbWVudSA6YmVmb3Jley13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0udmQtbWVudXtkaXNwbGF5Om5vbmV9LnZkLW1lbnUtLWF0dGFjaGVke2Rpc3BsYXk6aW5saW5lfS52ZC1tZW51X19hY3RpdmF0b3J7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjdXJzb3I6cG9pbnRlcn0udmQtbWVudSAqe2N1cnNvcjpwb2ludGVyfS52ZC1tZW51X19jb250ZW50e3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NnB4O21heC13aWR0aDo4MCU7b3ZlcmZsb3cteTphdXRvO292ZXJmbG93LXg6aGlkZGVuO2NvbnRhaW46Y29udGVudDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtOy13ZWJraXQtYm94LXNoYWRvdzowIDJweCA4cHggcmdiYSg1MCw1MCw5MywuMik7Ym94LXNoYWRvdzowIDJweCA4cHggcmdiYSg1MCw1MCw5MywuMil9LnZkLW1lbnVfX2NvbnRlbnQtLWZpeGVke3Bvc2l0aW9uOmZpeGVkfS52ZC1tZW51X19jb250ZW50LS1ib3R0b21zaGVldHtwb3NpdGlvbjpmaXhlZDt0b3A6YXV0byFpbXBvcnRhbnQ7Ym90dG9tOjAhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7cmlnaHQ6MCFpbXBvcnRhbnQ7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7bWluLXdpZHRoOjEwMCUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTJweCAxMnB4IDAgMH1Ac3VwcG9ydHMgKHBhZGRpbmctYm90dG9tOmNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKXsudmQtbWVudV9fY29udGVudC0tYm90dG9tc2hlZXR7LS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tOmNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO3BhZGRpbmctYm90dG9tOnZhcigtLXNhZmUtYXJlYS1pbnNldC1ib3R0b20pfX1Ac3VwcG9ydHMgKHBhZGRpbmctYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSl7LnZkLW1lbnVfX2NvbnRlbnQtLWJvdHRvbXNoZWV0ey0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbTplbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7cGFkZGluZy1ib3R0b206dmFyKC0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbSl9fS52ZC1tZW51LXRyYW5zaXRpb24tbGVhdmUtYWN0aXZlLC52ZC1tZW51LXRyYW5zaXRpb24tbGVhdmUtdG97cG9pbnRlci1ldmVudHM6bm9uZX0udmQtbWVudS10cmFuc2l0aW9uLWVudGVyLC52ZC1tZW51LXRyYW5zaXRpb24tbGVhdmUtdG97b3BhY2l0eTowfS52ZC1tZW51LXRyYW5zaXRpb24tZW50ZXItYWN0aXZlLC52ZC1tZW51LXRyYW5zaXRpb24tbGVhdmUtYWN0aXZley13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguMjUsLjgsLjI1LDEpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC4yNSwxKTstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSwtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksLXdlYmtpdC10cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5LHRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLC13ZWJraXQtdHJhbnNmb3JtfS52ZC1waWNrZXJfX2lucHV0LWNsZWFyX19pY29uIGJ1dHRvbntib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bGluZS1oZWlnaHQ6bm9ybWFsOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6aW5oZXJpdDstbW96LW9zeC1mb250LXNtb290aGluZzppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS52ZC1waWNrZXJfX2lucHV0LWNsZWFyX19pY29uIGJ1dHRvbjphY3RpdmUsLnZkLXBpY2tlcl9faW5wdXQtY2xlYXJfX2ljb24gYnV0dG9uOmZvY3Vze291dGxpbmU6MDstd2Via2l0LWJveC1zaGFkb3c6MDtib3gtc2hhZG93OjB9LnZkLXBpY2tlcl9faW5wdXQtY2xlYXJfX2ljb24gYnV0dG9uW3JvbGU9YnV0dG9uXSwudmQtcGlja2VyX19pbnB1dC1jbGVhcl9faWNvbiBidXR0b25bdHlwZT1idXR0b25dLC52ZC1waWNrZXJfX2lucHV0LWNsZWFyX19pY29uIGJ1dHRvblt0eXBlPXJlc2V0XSwudmQtcGlja2VyX19pbnB1dC1jbGVhcl9faWNvbiBidXR0b25bdHlwZT1zdWJtaXRde2N1cnNvcjpwb2ludGVyfS52ZC1waWNrZXJfX2lucHV0e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6aW5oZXJpdDttaW4taGVpZ2h0OmluaGVyaXR9LnZkLXdyYXBwZXItLXJ0bCAudmQtcGlja2VyX19pbnB1dHtkaXJlY3Rpb246cnRsfS52ZC13cmFwcGVyLS1ydGwgLnZkLXBpY2tlcl9faW5wdXQgYnV0dG9uLC52ZC13cmFwcGVyLS1ydGwgLnZkLXBpY2tlcl9faW5wdXQgaW5wdXRbdHlwZT10ZXh0XXttYXJnaW46MCA4cHggMCAwfS52ZC1waWNrZXJfX2lucHV0LS1kaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7cG9pbnRlci1ldmVudHM6bm9uZX0udmQtcGlja2VyX19pbnB1dC0tZGlzYWJsZWQgLnZkLXBpY2tlcl9faW5wdXQtaWNvbl9fd3JhcHBlciwudmQtcGlja2VyX19pbnB1dC0tZGlzYWJsZWQgaW5wdXR7b3BhY2l0eTouMzh9LnZkLXBpY2tlcl9faW5wdXQtLW5vLWNhbGVuZGFyLWljb24gYnV0dG9uLC52ZC1waWNrZXJfX2lucHV0LS1uby1jYWxlbmRhci1pY29uIGlucHV0e21hcmdpbjowfS52ZC1waWNrZXJfX2lucHV0LWNsZWFyey1tcy1mbGV4LWl0ZW0tYWxpZ246c3RhcnQ7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O2xpbmUtaGVpZ2h0OjE7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS52ZC1waWNrZXJfX2lucHV0LWNsZWFyLC52ZC1waWNrZXJfX2lucHV0LWNsZWFyX19pY29ue2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94O2Rpc3BsYXk6LW1zLWlubGluZS1mbGV4Ym94O2Rpc3BsYXk6aW5saW5lLWZsZXh9LnZkLXBpY2tlcl9faW5wdXQtY2xlYXJfX2ljb257LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAwIGF1dG87ZmxleDoxIDAgYXV0b30udmQtcGlja2VyX19pbnB1dC1jbGVhcl9faWNvbiwudmQtcGlja2VyX19pbnB1dC1jbGVhcl9faWNvbiAudmQtaWNvbi52ZC1pY29ue2hlaWdodDoyNHB4O21pbi13aWR0aDoyNHB4O3dpZHRoOjI0cHh9LnZkLXBpY2tlcl9faW5wdXQtaWNvbnstbXMtZmxleC1pdGVtLWFsaWduOnN0YXJ0O2FsaWduLXNlbGY6ZmxleC1zdGFydDttYXJnaW4tdG9wOjRweDttYXJnaW4tcmlnaHQ6YXV0bztwYWRkaW5nLXJpZ2h0OjRweDtsaW5lLWhlaWdodDoxOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0udmQtcGlja2VyX19pbnB1dC1pY29uLC52ZC1waWNrZXJfX2lucHV0LWljb25fX3dyYXBwZXJ7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3g7ZGlzcGxheTppbmxpbmUtZmxleH0udmQtcGlja2VyX19pbnB1dC1pY29uX193cmFwcGVyey13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyNHB4Oy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxIDAgYXV0bztmbGV4OjEgMCBhdXRvOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLXdpZHRoOjI0cHg7d2lkdGg6MjRweH0udmQtcGlja2VyX19pbnB1dCBpbnB1dHtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAxIGF1dG87ZmxleDoxIDEgYXV0bzttYXgtaGVpZ2h0OjMycHg7cGFkZGluZzo4cHggMDttYXgtd2lkdGg6MTAwJTttaW4td2lkdGg6MDt3aWR0aDoxMDAlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOm5vbmU7Y29sb3I6aW5oZXJpdDtmb250LXN0cmV0Y2g6bm9ybWFsO2xpbmUtaGVpZ2h0OmluaGVyaXQ7Zm9udC1zaXplOjE2cHghaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjQwMDtmb250LWZhbWlseTppbmhlcml0O2NvbG9yOmN1cnJlbnRDb2xvcjtjdXJzb3I6aW5oZXJpdH0udmQtcGlja2VyX19pbnB1dCBpbnB1dDphY3RpdmUsLnZkLXBpY2tlcl9faW5wdXQgaW5wdXQ6Zm9jdXN7b3V0bGluZTowOy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZX0udmQtcGlja2VyX19pbnB1dCBpbnB1dC5wbGFjZWhvbGRlcntvcGFjaXR5Oi42fS52ZC1waWNrZXJfX2lucHV0IGlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7b3BhY2l0eTouNn0udmQtcGlja2VyX19pbnB1dCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5Oi42fS52ZC1waWNrZXJfX2lucHV0IGlucHV0OjpwbGFjZWhvbGRlcntvcGFjaXR5Oi42fS52ZC1waWNrZXJfX2lucHV0IGlucHV0Oi1tb3otcGxhY2Vob2xkZXIsLnZkLXBpY2tlcl9faW5wdXQgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7b3BhY2l0eTouNn0udmQtcGlja2VyX19pbnB1dCBpbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7b3BhY2l0eTouNn0udmQtcGlja2VyX19pbnB1dCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntvcGFjaXR5Oi42fS52ZC1pY29uLnZkLWljb257ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3g7ZGlzcGxheTppbmxpbmUtZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxO3RleHQtaW5kZW50OjA7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsLXdlYmtpdC10cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvciwtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSxjb2xvcjt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSxjb2xvciwtd2Via2l0LXRyYW5zZm9ybTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS52ZC1pY29uLS1saW5re2N1cnNvcjpwb2ludGVyfS52ZC1pY29uLS1kaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6LjZ9LnZkLXBpY2tlcl9fdGl0bGUtY2xvc2UgYnV0dG9ue2JvcmRlcjpub25lO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDphdXRvO292ZXJmbG93OnZpc2libGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDpub3JtYWw7LXdlYmtpdC1mb250LXNtb290aGluZzppbmhlcml0Oy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LnZkLXBpY2tlcl9fdGl0bGUtY2xvc2UgYnV0dG9uOmFjdGl2ZSwudmQtcGlja2VyX190aXRsZS1jbG9zZSBidXR0b246Zm9jdXN7b3V0bGluZTowOy13ZWJraXQtYm94LXNoYWRvdzowO2JveC1zaGFkb3c6MH0udmQtcGlja2VyX190aXRsZS1jbG9zZSBidXR0b25bcm9sZT1idXR0b25dLC52ZC1waWNrZXJfX3RpdGxlLWNsb3NlIGJ1dHRvblt0eXBlPWJ1dHRvbl0sLnZkLXBpY2tlcl9fdGl0bGUtY2xvc2UgYnV0dG9uW3R5cGU9cmVzZXRdLC52ZC1waWNrZXJfX3RpdGxlLWNsb3NlIGJ1dHRvblt0eXBlPXN1Ym1pdF17Y3Vyc29yOnBvaW50ZXJ9LnZkLXBpY2tlciwudmQtcGlja2VyICosLnZkLXBpY2tlciA6YWZ0ZXIsLnZkLXBpY2tlciA6YmVmb3Jley13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0udmQtcGlja2Vye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6MzA0cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDJweCA4cHggcmdiYSg1MCw1MCw5MywuMik7Ym94LXNoYWRvdzowIDJweCA4cHggcmdiYSg1MCw1MCw5MywuMil9LnZkLXBpY2tlcjphY3RpdmUsLnZkLXBpY2tlcjpmb2N1c3tvdXRsaW5lOjB9LnZkLXBpY2tlci0tYm90dG9tc2hlZXR7d2lkdGg6MTAwJTstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9LnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlci1oZWFkZXJ7Ym9yZGVyLXJhZGl1czowfS52ZC1waWNrZXItLXJ0bHtkaXJlY3Rpb246cnRsfS52ZC1waWNrZXJfX3RpdGxle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6NDhweDtwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6MTJweCAxMnB4IDAgMH0udmQtcGlja2VyLS1ydGwgLnZkLXBpY2tlcl9fdGl0bGV7cGFkZGluZzowIDE2cHggMCAwfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo0ODBweCl7LnZkLXBpY2tlcl9fdGl0bGV7ZGlzcGxheTpub25lfX0udmQtcGlja2VyX190aXRsZSBwe21hcmdpbjowfS52ZC1waWNrZXJfX3RpdGxlLWNsb3Nle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazplbmQ7LW1zLWZsZXgtcGFjazplbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO2hlaWdodDoyNHB4O3dpZHRoOjI0cHg7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS52ZC1waWNrZXJfX3RpdGxlLWNsb3NlIHN2Z3t3aWR0aDoyNHB4O2hlaWdodDoyNHB4fS52ZC1waWNrZXJfX2JvZHl7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSAxMDAlO2ZsZXg6MSAxIDEwMCU7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OmF1dG87b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MH0udmQtb3ZlcmxheSwudmQtcGlja2VyX19ib2R5e2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9LnZkLW92ZXJsYXl7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czppbmhlcml0Oy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9pbnRlci1ldmVudHM6bm9uZTstd2Via2l0LXRyYW5zaXRpb246LjNzIGN1YmljLWJlemllciguMjUsLjgsLjUsMSksei1pbmRleCAxbXM7dHJhbnNpdGlvbjouM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKSx6LWluZGV4IDFtc30udmQtb3ZlcmxheV9fY29udGVudHtwb3NpdGlvbjpyZWxhdGl2ZX0udmQtb3ZlcmxheV9faW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7dG9wOjA7Ym90dG9tOjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOmluaGVyaXQ7LXdlYmtpdC10cmFuc2l0aW9uOmluaGVyaXQ7dHJhbnNpdGlvbjppbmhlcml0O3dpbGwtY2hhbmdlOm9wYWNpdHl9LnZkLW92ZXJsYXktLWFic29sdXRle3Bvc2l0aW9uOmFic29sdXRlfS52ZC1vdmVybGF5LS1hY3RpdmV7cG9pbnRlci1ldmVudHM6YXV0b30udmQtcGlja2VyX19jb250cm9scy1sYWJlbCBidXR0b257bWFyZ2luOjA7d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bGluZS1oZWlnaHQ6bm9ybWFsOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6aW5oZXJpdDstbW96LW9zeC1mb250LXNtb290aGluZzppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS52ZC1waWNrZXJfX2NvbnRyb2xzLWxhYmVsIGJ1dHRvbjphY3RpdmUsLnZkLXBpY2tlcl9fY29udHJvbHMtbGFiZWwgYnV0dG9uOmZvY3Vze291dGxpbmU6MDstd2Via2l0LWJveC1zaGFkb3c6MDtib3gtc2hhZG93OjB9LnZkLXBpY2tlcl9fY29udHJvbHMtbGFiZWwgYnV0dG9uW3JvbGU9YnV0dG9uXSwudmQtcGlja2VyX19jb250cm9scy1sYWJlbCBidXR0b25bdHlwZT1idXR0b25dLC52ZC1waWNrZXJfX2NvbnRyb2xzLWxhYmVsIGJ1dHRvblt0eXBlPXJlc2V0XSwudmQtcGlja2VyX19jb250cm9scy1sYWJlbCBidXR0b25bdHlwZT1zdWJtaXRde2N1cnNvcjpwb2ludGVyfS52ZC1waWNrZXJfX2NvbnRyb2xze2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7aGVpZ2h0OjQ4cHg7dGV4dC1hbGlnbjpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0udmQtcGlja2VyX19jb250cm9scy13cmFwcGVye292ZXJmbG93OmhpZGRlbjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52ZC1waWNrZXJfX2NvbnRyb2xzLW1vbnRoLC52ZC1waWNrZXJfX2NvbnRyb2xzLXdyYXBwZXIsLnZkLXBpY2tlcl9fY29udHJvbHMteWVhcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MX0udmQtcGlja2VyX19jb250cm9scy1tb250aHstd2Via2l0LWJveC1wYWNrOmVuZDstbXMtZmxleC1wYWNrOmVuZDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LnZkLXBpY2tlcl9fY29udHJvbHMteWVhcnstd2Via2l0LWJveC1wYWNrOnN0YXJ0Oy1tcy1mbGV4LXBhY2s6c3RhcnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LnZkLXBpY2tlcl9fY29udHJvbHMteWVhci52ZC1waWNrZXJfX2NvbnRyb2xzLXllYXItLWNlbnRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52ZC1waWNrZXJfX2NvbnRyb2xzLWxhYmVse3BhZGRpbmc6OHB4IDRweH0udmQtcGlja2VyX19jb250cm9scy1sYWJlbCBidXR0b257cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MTVweDtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lOy13ZWJraXQtdHJhbnNpdGlvbjpjb2xvciAuM3M7dHJhbnNpdGlvbjpjb2xvciAuM3N9LnZkLXBpY2tlcl9fY29udHJvbHMtbGFiZWwgYnV0dG9uOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpe2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0udmQtcGlja2VyX19jb250cm9scy1sYWJlbCBidXR0b246ZGlzYWJsZWQsLnZkLXBpY2tlcl9fY29udHJvbHMtbGFiZWwgYnV0dG9uW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdDtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9LnZkLXBpY2tlcl9fY29udHJvbHMgYnV0dG9uLnZkLXBpY2tlcl9fY29udHJvbHMtbmV4dCwudmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1wcmV2e3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgNDBweDtmbGV4OjAgMCA0MHB4O2hlaWdodDo0OHB4O3dpZHRoOjQ4cHg7cGFkZGluZzowIDAgMCAyNHB4O2JvcmRlcjpub25lO291dGxpbmU6bm9uZTtjb2xvcjpyZ2JhKDAsMCwwLC44Nyk7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXJ9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KXsudmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1uZXh0LC52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLXByZXZ7cGFkZGluZzowIDhweH19LnZkLXBpY2tlcl9fY29udHJvbHMgYnV0dG9uLnZkLXBpY2tlcl9fY29udHJvbHMtbmV4dDpkaXNhYmxlZCwudmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1uZXh0W2Rpc2FibGVkXSwudmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1wcmV2OmRpc2FibGVkLC52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLXByZXZbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fS52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLW5leHQ6ZGlzYWJsZWQgc3ZnLC52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLW5leHRbZGlzYWJsZWRdIHN2ZywudmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1wcmV2OmRpc2FibGVkIHN2ZywudmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1wcmV2W2Rpc2FibGVkXSBzdmd7Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS52ZC1waWNrZXItLXJ0bCAudmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1uZXh0LC52ZC1waWNrZXItLXJ0bCAudmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1wcmV2ey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0udmQtcGlja2VyX19jb250cm9scyBidXR0b24udmQtcGlja2VyX19jb250cm9scy1uZXh0e3BhZGRpbmc6MCAyNHB4IDAgMH1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpey52ZC1waWNrZXJfX2NvbnRyb2xzIGJ1dHRvbi52ZC1waWNrZXJfX2NvbnRyb2xzLW5leHR7cGFkZGluZzowIDhweH19LnZkLXBpY2tlcl9fY29udHJvbHMgc3Zne3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS52ZC1waWNrZXItaGVhZGVye2NvbG9yOiNmZmY7cGFkZGluZzoxNnB4O2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7bGluZS1oZWlnaHQ6MTttaW4taGVpZ2h0OjgwcHg7aGVpZ2h0OjgwcHg7Ym9yZGVyLXJhZGl1czo2cHggNnB4IDAgMH1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpey52ZC1waWNrZXItaGVhZGVye21pbi1oZWlnaHQ6ODVweDtoZWlnaHQ6ODVweH19LnZkLXBpY2tlci1oZWFkZXItLXJhbmdlIC52ZC1waWNrZXItaGVhZGVyX193cmFwey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxIDEgYXV0bztmbGV4OjEgMSBhdXRvOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LXBhY2s6anVzdGlmeTstbXMtZmxleC1wYWNrOmp1c3RpZnk7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnZkLXBpY2tlci1oZWFkZXItLXJhbmdlIC52ZC1waWNrZXItaGVhZGVyX19kYXRle2ZvbnQtc2l6ZToxOHB4O2hlaWdodDoyNnB4fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCl7LnZkLXBpY2tlci1oZWFkZXItLXJhbmdlIC52ZC1waWNrZXItaGVhZGVyX19kYXRle2ZvbnQtc2l6ZToyMnB4O2hlaWdodDozMHB4fX0udmQtcGlja2VyLWhlYWRlci0teWVhciAudmQtcGlja2VyLWhlYWRlcl9feWVhcnstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAxIGF1dG87ZmxleDoxIDEgYXV0bztmb250LXNpemU6MjJweDtoZWlnaHQ6MzBweH0udmQtcGlja2VyLWhlYWRlcl9feWVhcnstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4O2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206OHB4O29wYWNpdHk6LjY7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjNzO3RyYW5zaXRpb246b3BhY2l0eSAuM3N9LnZkLXBpY2tlci1oZWFkZXJfX3llYXI6Zm9jdXM6bm90KC52ZC1waWNrZXItaGVhZGVyX195ZWFyLS1hY3RpdmUpLC52ZC1waWNrZXItaGVhZGVyX195ZWFyOmhvdmVyOm5vdCgudmQtcGlja2VyLWhlYWRlcl9feWVhci0tYWN0aXZlKXtjdXJzb3I6cG9pbnRlcjtvcGFjaXR5OjF9LnZkLXBpY2tlci1oZWFkZXJfX3llYXItLWFjdGl2ZXtvcGFjaXR5OjE7Y3Vyc29yOmRlZmF1bHR9LnZkLXBpY2tlci1oZWFkZXJfX2RhdGUsLnZkLXBpY2tlci1oZWFkZXJfX3dyYXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlfS52ZC1waWNrZXItaGVhZGVyX19kYXRle2ZvbnQtc2l6ZToyMnB4O2hlaWdodDozMHB4O3RleHQtYWxpZ246bGVmdDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZy1ib3R0b206OHB4O21hcmdpbi1ib3R0b206LThweDtvcGFjaXR5Oi42Oy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IC4zczt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzfS52ZC1waWNrZXItaGVhZGVyX19kYXRlOmZvY3VzOm5vdCgudmQtcGlja2VyLWhlYWRlcl9fZGF0ZS0tYWN0aXZlKSwudmQtcGlja2VyLWhlYWRlcl9fZGF0ZTpob3Zlcjpub3QoLnZkLXBpY2tlci1oZWFkZXJfX2RhdGUtLWFjdGl2ZSl7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eToxfS52ZC1waWNrZXItaGVhZGVyX19kYXRlLS1hY3RpdmV7b3BhY2l0eToxO2N1cnNvcjpkZWZhdWx0fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCl7LnZkLXBpY2tlci1oZWFkZXJfX2RhdGV7Zm9udC1zaXplOjI0cHg7aGVpZ2h0OjMycHh9fS52ZC1waWNrZXItcHJlc2V0e2JvcmRlcjpub25lO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDphdXRvO292ZXJmbG93OnZpc2libGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDpub3JtYWw7LXdlYmtpdC1mb250LXNtb290aGluZzppbmhlcml0Oy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LnZkLXBpY2tlci1wcmVzZXQ6YWN0aXZlLC52ZC1waWNrZXItcHJlc2V0OmZvY3Vze291dGxpbmU6MDstd2Via2l0LWJveC1zaGFkb3c6MDtib3gtc2hhZG93OjB9LnZkLXBpY2tlci1wcmVzZXRbcm9sZT1idXR0b25dLC52ZC1waWNrZXItcHJlc2V0W3R5cGU9YnV0dG9uXSwudmQtcGlja2VyLXByZXNldFt0eXBlPXJlc2V0XSwudmQtcGlja2VyLXByZXNldFt0eXBlPXN1Ym1pdF17Y3Vyc29yOnBvaW50ZXJ9LnZkLXBpY2tlci1wcmVzZXRze3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7cGFkZGluZzoxNnB4IDEycHh9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjQ4MHB4KXsudmQtcGlja2VyLXByZXNldHN7cGFkZGluZzoxNnB4IDEycHggOHB4fX0udmQtcGlja2VyLXByZXNldHNfX3dyYXBwZXJ7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87LW1zLWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwO3dpZHRoOjEwMCV9LnZkLXBpY2tlci1wcmVzZXQsLnZkLXBpY2tlci1wcmVzZXRzX193cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9LnZkLXBpY2tlci1wcmVzZXR7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDUwJTtmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJTtwYWRkaW5nOjAgOHB4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE0cHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjowIHNvbGlkICNlZWYxZjg7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjUsLjgsLjUsMSk7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC41LDEpfS52ZC1waWNrZXItLWJvdHRvbXNoZWV0IC52ZC1waWNrZXItcHJlc2V0LC52ZC1waWNrZXItcHJlc2V0e21pbi1oZWlnaHQ6MzJweDtoZWlnaHQ6MzJweH0udmQtcGlja2VyLXByZXNldDpudGgtY2hpbGQob2RkKXtib3JkZXItd2lkdGg6MCAxcHggMXB4fS52ZC1waWNrZXItcHJlc2V0Om50aC1jaGlsZChvZGQpOmZpcnN0LWNoaWxke2JvcmRlci13aWR0aDoxcHh9LnZkLXBpY2tlci1wcmVzZXQ6bnRoLWNoaWxkKDJuKXtib3JkZXItd2lkdGg6MCAxcHggMXB4IDB9LnZkLXBpY2tlci1wcmVzZXQ6bnRoLWNoaWxkKDJuKTpudGgtY2hpbGQoMil7Ym9yZGVyLXdpZHRoOjFweCAxcHggMXB4IDB9LnZkLXBpY2tlci1wcmVzZXRfX2VmZmVjdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjUsLjgsLjUsMSk7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC41LDEpO3otaW5kZXg6MH0udmQtcGlja2VyLXByZXNldF9fbmFtZXtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LnZkLXBpY2tlci1wcmVzZXQtLXNlbGVjdGVkLC52ZC1waWNrZXItcHJlc2V0OmhvdmVyOm5vdCgudmQtcGlja2VyLXByZXNldC0tZGlzYWJsZWQpe2NvbG9yOiNmZmZ9LnZkLXBpY2tlci1wcmVzZXQtLXNlbGVjdGVkIC52ZC1waWNrZXItcHJlc2V0X19lZmZlY3QsLnZkLXBpY2tlci1wcmVzZXQ6aG92ZXI6bm90KC52ZC1waWNrZXItcHJlc2V0LS1kaXNhYmxlZCkgLnZkLXBpY2tlci1wcmVzZXRfX2VmZmVjdHtvcGFjaXR5OjF9LnZkLXBpY2tlci1wcmVzZXQtLXNlbGVjdGVke3BvaW50ZXItZXZlbnRzOm5vbmV9LnZkLXBpY2tlci1wcmVzZXQtLWRpc2FibGVke2NvbG9yOnJnYmEoOTMsMTA2LDEzNywuMik7Y3Vyc29yOm5vdC1hbGxvd2VkO3BvaW50ZXItZXZlbnRzOm5vbmV9LnZkLXBpY2tlcl9fdGFibGV7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzowIDEycHg7aGVpZ2h0OjI3NHB4fS52ZC1waWNrZXItLWJvdHRvbXNoZWV0IC52ZC1waWNrZXJfX3RhYmxle2hlaWdodDozMjJweH0udmQtcGlja2VyX190YWJsZS13ZWVre2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LW1zLWZsZXgtd3JhcDpub3dyYXA7ZmxleC13cmFwOm5vd3JhcDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAxIDEwMCU7ZmxleDoxIDEgMTAwJTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOjhweCAwO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxOHB4O2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9LnZkLXBpY2tlcl9fdGFibGUtd2Vla2RheXstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIDE0LjI4NTcxJTtmbGV4OjAgMCAxNC4yODU3MSU7bWF4LXdpZHRoOjE0LjI4NTcxJTt0ZXh0LWFsaWduOmNlbnRlcn0udmQtcGlja2VyX190YWJsZS1kYXlzX193cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtoZWlnaHQ6MjQwcHh9LnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlcl9fdGFibGUtZGF5c19fd3JhcHBlcntoZWlnaHQ6Mjg4cHh9LnZkLXBpY2tlcl9fdGFibGUtZGF5c3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJX0udmQtcGlja2VyX190YWJsZS1kYXl7Ym9yZGVyOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO3dpZHRoOmF1dG87b3ZlcmZsb3c6dmlzaWJsZTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2xpbmUtaGVpZ2h0Om5vcm1hbDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmluaGVyaXQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udmQtcGlja2VyX190YWJsZS1kYXk6YWN0aXZlLC52ZC1waWNrZXJfX3RhYmxlLWRheTpmb2N1c3tvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93OjA7Ym94LXNoYWRvdzowfS52ZC1waWNrZXJfX3RhYmxlLWRheVtyb2xlPWJ1dHRvbl0sLnZkLXBpY2tlcl9fdGFibGUtZGF5W3R5cGU9YnV0dG9uXSwudmQtcGlja2VyX190YWJsZS1kYXlbdHlwZT1yZXNldF0sLnZkLXBpY2tlcl9fdGFibGUtZGF5W3R5cGU9c3VibWl0XXtjdXJzb3I6cG9pbnRlcn0udmQtcGlja2VyX190YWJsZS1kYXl7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTQuMjg1NzElO2hlaWdodDo0MHB4O2xpbmUtaGVpZ2h0OjE7Zm9udC1zaXplOjEycHg7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjpjdXJyZW50Q29sb3I7Zm9udC13ZWlnaHQ6NTAwOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjQ1cyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO3RyYW5zaXRpb246YWxsIC40NXMgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTtvdmVyZmxvdzpoaWRkZW59LnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlcl9fdGFibGUtZGF5e2hlaWdodDo0OHB4fS52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MnB4O2JvdHRvbToycHg7bGVmdDowO3JpZ2h0OjA7Ym9yZGVyOm5vbmV9LnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO29wYWNpdHk6MDt3aWR0aDo1MCU7YmFja2dyb3VuZC1jb2xvcjojZmZmO3otaW5kZXg6MTstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHl9LnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDo1MCU7d2lkdGg6Y2FsYygxMDAlICsgMXB4KTtoZWlnaHQ6MzZweDtib3JkZXI6MXB4IHNvbGlkO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO29wYWNpdHk6LjEyOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMCl9LnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVye2hlaWdodDo0NHB4fS52ZC1waWNrZXJfX3RhYmxlLWRheV9fY3VycmVudCwudmQtcGlja2VyX190YWJsZS1kYXlfX2VmZmVjdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjFweCBzb2xpZH0udmQtcGlja2VyLS1ib3R0b21zaGVldCAudmQtcGlja2VyX190YWJsZS1kYXlfX2N1cnJlbnQsLnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X19lZmZlY3R7d2lkdGg6NDRweDtoZWlnaHQ6NDRweH0udmQtcGlja2VyX190YWJsZS1kYXlfX2N1cnJlbnR7Y29sb3I6cmdiYSgwLDAsMCwuODcpO3otaW5kZXg6MX0udmQtcGlja2VyX190YWJsZS1kYXlfX2VmZmVjdHtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcjstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHNjYWxlKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHNjYWxlKDApOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjQ1cyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO3RyYW5zaXRpb246YWxsIC40NXMgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTt6LWluZGV4OjF9LnZkLXBpY2tlci0tcmFuZ2Utc2VsZWN0aW5nIC52ZC1waWNrZXJfX3RhYmxlLWRheV9fZWZmZWN0ey13ZWJraXQtdHJhbnNpdGlvbjp1bnNldDt0cmFuc2l0aW9uOnVuc2V0fS52ZC1waWNrZXJfX3RhYmxlLWRheV9fdGV4dHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOmF1dG87d2lkdGg6MzZweDtoZWlnaHQ6MzZweDtjb2xvcjpyZ2JhKDAsMCwwLC44Nyk7ei1pbmRleDoxfS52ZC1waWNrZXItLWJvdHRvbXNoZWV0IC52ZC1waWNrZXJfX3RhYmxlLWRheV9fdGV4dHt3aWR0aDo0NHB4O2hlaWdodDo0NHB4fS52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pIC52ZC1waWNrZXJfX3RhYmxlLWRheV9fZWZmZWN0ey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMSk7b3BhY2l0eTouMTJ9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1lbmQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmJlZm9yZSwudmQtcGlja2VyX190YWJsZS1kYXk6aG92ZXI6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tZGlzYWJsZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1iZXR3ZWVuKS52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0LXN0YXJ0IC52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcjpiZWZvcmV7b3BhY2l0eToxO3JpZ2h0OjB9LnZkLXBpY2tlci0tcnRsIC52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3QtZW5kIC52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcjpiZWZvcmUsLnZkLXBpY2tlci0tcnRsIC52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3Qtc3RhcnQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmJlZm9yZXtsZWZ0OjA7cmlnaHQ6dW5zZXR9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1lbmQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVyLC52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3Qtc3RhcnQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMSk7b3BhY2l0eTouMDh9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1lbmQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X19lZmZlY3QsLnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1zdGFydCAudmQtcGlja2VyX190YWJsZS1kYXlfX2VmZmVjdHtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2l0aW9uOnVuc2V0O3RyYW5zaXRpb246dW5zZXR9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1lbmQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X190ZXh0LC52ZC1waWNrZXJfX3RhYmxlLWRheTpob3Zlcjpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQpOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWJldHdlZW4pLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3Qtc3RhcnQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X190ZXh0e2NvbG9yOiNmZmZ9LnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1zdGFydCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YmVmb3Jle2xlZnQ6MH0udmQtcGlja2VyLS1ydGwgLnZkLXBpY2tlcl9fdGFibGUtZGF5OmhvdmVyOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1zZWxlY3RlZCk6bm90KC52ZC1waWNrZXJfX3RhYmxlLWRheS0tYmV0d2VlbikudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1zdGFydCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YmVmb3Jle3JpZ2h0OjA7bGVmdDp1bnNldH0udmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdGVkIC52ZC1waWNrZXJfX3RhYmxlLWRheV9fZWZmZWN0ey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMSk7b3BhY2l0eToxfS52ZC1waWNrZXJfX3RhYmxlLWRheS0tc2VsZWN0ZWQgLnZkLXBpY2tlcl9fdGFibGUtZGF5X190ZXh0e2NvbG9yOiNmZmZ9LnZkLXBpY2tlcl9fdGFibGUtZGF5LS1iZXR3ZWVuOm5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLWRpc2FibGVkKSAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YWZ0ZXIsLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1maXJzdCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YWZ0ZXIsLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1pbi1yYW5nZTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCkgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVyLC52ZC1waWNrZXJfX3RhYmxlLWRheS0tbGFzdCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YWZ0ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSBzY2FsZSgxKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSBzY2FsZSgxKX0udmQtcGlja2VyLS1yYW5nZS1zZWxlY3RpbmcgLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1maXJzdCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YWZ0ZXIsLnZkLXBpY2tlci0tcmFuZ2Utc2VsZWN0aW5nIC52ZC1waWNrZXJfX3RhYmxlLWRheS0tbGFzdCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YWZ0ZXIsLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1pbi1yYW5nZTpub3QoLnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZCkgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmFmdGVye29wYWNpdHk6LjA4fS52ZC1waWNrZXJfX3RhYmxlLWRheS0tZmlyc3QgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmJlZm9yZXtvcGFjaXR5OjE7bGVmdDowfS52ZC1waWNrZXItLXJ0bCAudmQtcGlja2VyX190YWJsZS1kYXktLWZpcnN0IC52ZC1waWNrZXJfX3RhYmxlLWRheV9fd3JhcHBlcjpiZWZvcmV7cmlnaHQ6MDtsZWZ0OnVuc2V0fS52ZC1waWNrZXJfX3RhYmxlLWRheS0tbGFzdCAudmQtcGlja2VyX190YWJsZS1kYXlfX3dyYXBwZXI6YmVmb3Jle29wYWNpdHk6MTtyaWdodDowfS52ZC1waWNrZXItLXJ0bCAudmQtcGlja2VyX190YWJsZS1kYXktLWxhc3QgLnZkLXBpY2tlcl9fdGFibGUtZGF5X193cmFwcGVyOmJlZm9yZXtsZWZ0OjA7cmlnaHQ6dW5zZXR9LnZkLXBpY2tlcl9fdGFibGUtZGF5LS1sYXN0Om5vdCgudmQtcGlja2VyX190YWJsZS1kYXktLXNlbGVjdC1zdGFydCkgLnZkLXBpY2tlcl9fdGFibGUtZGF5X19lZmZlY3R7b3BhY2l0eToxfS52ZC1waWNrZXJfX3RhYmxlLWRheS0tZGlzYWJsZWQudmQtcGlja2VyX190YWJsZS1kYXl7Y3Vyc29yOmRlZmF1bHR9LnZkLXBpY2tlcl9fdGFibGUtZGF5LS1kaXNhYmxlZC52ZC1waWNrZXJfX3RhYmxlLWRheSAudmQtcGlja2VyX190YWJsZS1kYXlfX3RleHR7Y29sb3I6cmdiYSg5MywxMDYsMTM3LC4yKX0udmQtcGlja2VyLXZhbGlkYXRlX19idXR0b257Ym9yZGVyOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO3dpZHRoOmF1dG87b3ZlcmZsb3c6dmlzaWJsZTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2xpbmUtaGVpZ2h0Om5vcm1hbDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmluaGVyaXQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udmQtcGlja2VyLXZhbGlkYXRlX19idXR0b246YWN0aXZlLC52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbjpmb2N1c3tvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93OjA7Ym94LXNoYWRvdzowfS52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbltyb2xlPWJ1dHRvbl0sLnZkLXBpY2tlci12YWxpZGF0ZV9fYnV0dG9uW3R5cGU9YnV0dG9uXSwudmQtcGlja2VyLXZhbGlkYXRlX19idXR0b25bdHlwZT1yZXNldF0sLnZkLXBpY2tlci12YWxpZGF0ZV9fYnV0dG9uW3R5cGU9c3VibWl0XXtjdXJzb3I6cG9pbnRlcn0udmQtcGlja2VyLXZhbGlkYXRle2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LW1zLWZsZXgtYWxpZ246Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwYWRkaW5nOjhweH0udmQtcGlja2VyLXZhbGlkYXRlLC52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0udmQtcGlja2VyLXZhbGlkYXRlX19idXR0b257ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3g7ZGlzcGxheTppbmxpbmUtZmxleDstd2Via2l0LWJveC1mbGV4OjA7LW1zLWZsZXg6MCAwIGF1dG87ZmxleDowIDAgYXV0bzstbXMtZmxleC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtoZWlnaHQ6MzZweDttaW4td2lkdGg6NDRweDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7Ym9yZGVyLXJhZGl1czo0cHg7cGFkZGluZzo2cHggOHB4O291dGxpbmU6MDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3ZlcmZsb3c6aGlkZGVufS52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbisudmQtcGlja2VyLXZhbGlkYXRlX19idXR0b257bWFyZ2luLWxlZnQ6OHB4fS52ZC1waWNrZXItdmFsaWRhdGVfX2J1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSAudmQtcGlja2VyLXZhbGlkYXRlX19lZmZlY3R7b3BhY2l0eTouMX0udmQtcGlja2VyLXZhbGlkYXRlX19idXR0b246ZGlzYWJsZWQsLnZkLXBpY2tlci12YWxpZGF0ZV9fYnV0dG9uW2Rpc2FibGVkXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNikhaW1wb3J0YW50O2N1cnNvcjpkZWZhdWx0fS52ZC1waWNrZXItdmFsaWRhdGVfX2VmZmVjdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjQ1cyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO3RyYW5zaXRpb246b3BhY2l0eSAuNDVzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7ei1pbmRleDotMX0udmQtcGlja2VyX19tb250aHMtYnV0dG9ue2JvcmRlcjpub25lO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDphdXRvO292ZXJmbG93OnZpc2libGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDpub3JtYWw7LXdlYmtpdC1mb250LXNtb290aGluZzppbmhlcml0Oy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LnZkLXBpY2tlcl9fbW9udGhzLWJ1dHRvbjphY3RpdmUsLnZkLXBpY2tlcl9fbW9udGhzLWJ1dHRvbjpmb2N1c3tvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93OjA7Ym94LXNoYWRvdzowfS52ZC1waWNrZXJfX21vbnRocy1idXR0b25bcm9sZT1idXR0b25dLC52ZC1waWNrZXJfX21vbnRocy1idXR0b25bdHlwZT1idXR0b25dLC52ZC1waWNrZXJfX21vbnRocy1idXR0b25bdHlwZT1yZXNldF0sLnZkLXBpY2tlcl9fbW9udGhzLWJ1dHRvblt0eXBlPXN1Ym1pdF17Y3Vyc29yOnBvaW50ZXJ9LnZkLXBpY2tlcl9fbW9udGhze3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87aGVpZ2h0OjI3NHB4fS52ZC1waWNrZXItLWJvdHRvbXNoZWV0IC52ZC1waWNrZXJfX21vbnRoc3toZWlnaHQ6MzIycHh9QHN1cHBvcnRzIChwYWRkaW5nLWJvdHRvbTpjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSl7LnZkLXBpY2tlcl9fbW9udGhzey0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbTpjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtwYWRkaW5nLWJvdHRvbTp2YXIoLS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tKX19QHN1cHBvcnRzIChwYWRkaW5nLWJvdHRvbTplbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpey52ZC1waWNrZXJfX21vbnRoc3stLXNhZmUtYXJlYS1pbnNldC1ib3R0b206ZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO3BhZGRpbmctYm90dG9tOnZhcigtLXNhZmUtYXJlYS1pbnNldC1ib3R0b20pfX0udmQtcGlja2VyX19tb250aHMtaW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwYWRkaW5nOjAgMTJweH0udmQtcGlja2VyX19tb250aHMtaW5uZXIsLnZkLXBpY2tlcl9fbW9udGhzLWxpc3R7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0udmQtcGlja2VyX19tb250aHMtbGlzdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAxIGF1dG87ZmxleDoxIDEgYXV0bzstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7anVzdGlmeS1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LnZkLXBpY2tlcl9fbW9udGhzLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6NDhweDttaW4taGVpZ2h0OjQ4cHg7d2lkdGg6MTAwJTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1MDA7Ym9yZGVyLXJhZGl1czoycHg7b3V0bGluZTpub25lOy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4zczt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzO2JvcmRlcjp0aGluIHNvbGlkIHRyYW5zcGFyZW50fS52ZC1waWNrZXJfX21vbnRocy1idXR0b246aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWVmMWY4fS52ZC1waWNrZXJfX21vbnRocy1idXR0b246ZGlzYWJsZWQsLnZkLXBpY2tlcl9fbW9udGhzLWJ1dHRvbltkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6cmdiYSgwLDAsMCwuMjYpO3BvaW50ZXItZXZlbnRzOm5vbmV9LnZkLXBpY2tlcl9fbW9udGhzLWJ1dHRvbl9fd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleDowIDAgMzMuMzMzMzMlO2ZsZXg6MCAwIDMzLjMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMlOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI1JTttaW4taGVpZ2h0OjI1JTtwYWRkaW5nOjRweCA4cHh9LnZkLXBpY2tlcl9fcXVhcnRlcnMtYnV0dG9ue2JvcmRlcjpub25lO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDphdXRvO292ZXJmbG93OnZpc2libGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDpub3JtYWw7LXdlYmtpdC1mb250LXNtb290aGluZzppbmhlcml0Oy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LnZkLXBpY2tlcl9fcXVhcnRlcnMtYnV0dG9uOmFjdGl2ZSwudmQtcGlja2VyX19xdWFydGVycy1idXR0b246Zm9jdXN7b3V0bGluZTowOy13ZWJraXQtYm94LXNoYWRvdzowO2JveC1zaGFkb3c6MH0udmQtcGlja2VyX19xdWFydGVycy1idXR0b25bcm9sZT1idXR0b25dLC52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvblt0eXBlPWJ1dHRvbl0sLnZkLXBpY2tlcl9fcXVhcnRlcnMtYnV0dG9uW3R5cGU9cmVzZXRdLC52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvblt0eXBlPXN1Ym1pdF17Y3Vyc29yOnBvaW50ZXJ9LnZkLXBpY2tlcl9fcXVhcnRlcnN7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAxIGF1dG87ZmxleDoxIDEgYXV0bztoZWlnaHQ6Mjc0cHh9LnZkLXBpY2tlci0tYm90dG9tc2hlZXQgLnZkLXBpY2tlcl9fcXVhcnRlcnN7aGVpZ2h0OjI3NHB4fUBzdXBwb3J0cyAocGFkZGluZy1ib3R0b206Y29uc3RhbnQoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpey52ZC1waWNrZXJfX3F1YXJ0ZXJzey0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbTpjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtwYWRkaW5nLWJvdHRvbTp2YXIoLS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tKX19QHN1cHBvcnRzIChwYWRkaW5nLWJvdHRvbTplbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpey52ZC1waWNrZXJfX3F1YXJ0ZXJzey0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbTplbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7cGFkZGluZy1ib3R0b206dmFyKC0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbSl9fS52ZC1waWNrZXJfX3F1YXJ0ZXJzLWlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwYWRkaW5nOjAgMTJweH0udmQtcGlja2VyX19xdWFydGVycy1saXN0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSBhdXRvO2ZsZXg6MSAxIGF1dG87LW1zLWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktaXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6NDhweDttaW4taGVpZ2h0OjQ4cHg7d2lkdGg6MTAwJTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1MDA7Ym9yZGVyLXJhZGl1czoycHg7b3V0bGluZTpub25lOy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4zczt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzO2JvcmRlcjp0aGluIHNvbGlkIHRyYW5zcGFyZW50fS52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZWYxZjh9LnZkLXBpY2tlcl9fcXVhcnRlcnMtYnV0dG9uOmRpc2FibGVkLC52ZC1waWNrZXJfX3F1YXJ0ZXJzLWJ1dHRvbltkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6cmdiYSgwLDAsMCwuMjYpO3BvaW50ZXItZXZlbnRzOm5vbmV9LnZkLXBpY2tlcl9fcXVhcnRlcnMtYnV0dG9uX193cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMSAxMDAlO2ZsZXg6MSAxIDEwMCU7bWF4LXdpZHRoOjEgMSAxMDAlOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI1JTttaW4taGVpZ2h0OjI1JTtwYWRkaW5nOjRweCA4cHh9LnNsaWRlLXgtdHJhbnNpdGlvbi1lbnRlci1hY3RpdmUsLnNsaWRlLXgtdHJhbnNpdGlvbi1sZWF2ZS1hY3RpdmV7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSxoZWlnaHQsLXdlYmtpdC10cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5LGhlaWdodCwtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLGhlaWdodDt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLGhlaWdodCwtd2Via2l0LXRyYW5zZm9ybX0uc2xpZGUteC10cmFuc2l0aW9uLWVudGVyLC5zbGlkZS14LXRyYW5zaXRpb24tbGVhdmUtdG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTE1cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xNXB4KX0uc2xpZGUteS10cmFuc2l0aW9uLWVudGVyLWFjdGl2ZSwuc2xpZGUteS10cmFuc2l0aW9uLWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC41LDEpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC41LDEpOy13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5LGhlaWdodCwtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksaGVpZ2h0LC13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSx0cmFuc2Zvcm0saGVpZ2h0O3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSx0cmFuc2Zvcm0saGVpZ2h0LC13ZWJraXQtdHJhbnNmb3JtfS5zbGlkZS15LXRyYW5zaXRpb24tZW50ZXIsLnNsaWRlLXktdHJhbnNpdGlvbi1sZWF2ZS10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTVweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1cHgpfS5zY2FsZS10cmFuc2l0aW9uLWVudGVyLWFjdGl2ZSwuc2NhbGUtdHJhbnNpdGlvbi1sZWF2ZS1hY3RpdmV7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSxoZWlnaHQsLXdlYmtpdC10cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5LGhlaWdodCwtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLGhlaWdodDt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLGhlaWdodCwtd2Via2l0LXRyYW5zZm9ybX0uc2NhbGUtdHJhbnNpdGlvbi1lbnRlciwuc2NhbGUtdHJhbnNpdGlvbi1sZWF2ZSwuc2NhbGUtdHJhbnNpdGlvbi1sZWF2ZS10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMCk7dHJhbnNmb3JtOnNjYWxlKDApfS5zbGlkZS1pbi1vdXQtdHJhbnNpdGlvbi1lbnRlci1hY3RpdmUsLnNsaWRlLWluLW91dC10cmFuc2l0aW9uLWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC41LDEpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjI1LC44LC41LDEpOy13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5LGhlaWdodCwtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksaGVpZ2h0LC13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSx0cmFuc2Zvcm0saGVpZ2h0O3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSx0cmFuc2Zvcm0saGVpZ2h0LC13ZWJraXQtdHJhbnNmb3JtfS5zbGlkZS1pbi1vdXQtdHJhbnNpdGlvbi1lbnRlciwuc2xpZGUtaW4tb3V0LXRyYW5zaXRpb24tbGVhdmUtdG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSl9LnNsaWRlLWgtbmV4dC1lbnRlci1hY3RpdmUsLnNsaWRlLWgtbmV4dC1sZWF2ZS1hY3RpdmUsLnNsaWRlLWgtcHJldi1lbnRlci1hY3RpdmUsLnNsaWRlLWgtcHJldi1sZWF2ZS1hY3RpdmUsLnNsaWRlLXYtbmV4dC1lbnRlci1hY3RpdmUsLnNsaWRlLXYtbmV4dC1sZWF2ZS1hY3RpdmUsLnNsaWRlLXYtcHJldi1lbnRlci1hY3RpdmUsLnNsaWRlLXYtcHJldi1sZWF2ZS1hY3RpdmV7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuOCwuNSwxKTstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSxoZWlnaHQsLXdlYmtpdC10cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5LGhlaWdodCwtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLGhlaWdodDt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtLGhlaWdodCwtd2Via2l0LXRyYW5zZm9ybTtwb3NpdGlvbjphYnNvbHV0ZX0uc2xpZGUtaC1uZXh0LWVudGVye29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpfS5zbGlkZS1oLW5leHQtbGVhdmUtdG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX0uc2xpZGUtaC1wcmV2LWxlYXZlLXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpfS5zbGlkZS1oLXByZXYtZW50ZXJ7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX0udmQtcGlja2VyX19jb250cm9scy15ZWFyLnZkLXBpY2tlcl9fY29udHJvbHMteWVhci0tY2VudGVyIC5zbGlkZS1oLW5leHQtZW50ZXIsLnZkLXBpY2tlcl9fY29udHJvbHMteWVhci52ZC1waWNrZXJfX2NvbnRyb2xzLXllYXItLWNlbnRlciAuc2xpZGUtaC1wcmV2LWxlYXZlLXRvey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgxNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDE1MCUpfS52ZC1waWNrZXJfX2NvbnRyb2xzLXllYXIudmQtcGlja2VyX19jb250cm9scy15ZWFyLS1jZW50ZXIgLnNsaWRlLWgtbmV4dC1sZWF2ZS10bywudmQtcGlja2VyX19jb250cm9scy15ZWFyLnZkLXBpY2tlcl9fY29udHJvbHMteWVhci0tY2VudGVyIC5zbGlkZS1oLXByZXYtZW50ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC0xNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC0xNTAlKX0udmQtcGlja2VyLS1ydGwgLnNsaWRlLWgtbmV4dC1lbnRlciwudmQtcGlja2VyLS1ydGwgLnNsaWRlLWgtcHJldi1sZWF2ZS10b3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9LnZkLXBpY2tlci0tcnRsIC5zbGlkZS1oLW5leHQtbGVhdmUtdG8sLnZkLXBpY2tlci0tcnRsIC5zbGlkZS1oLXByZXYtZW50ZXJ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX0uc2xpZGUtdi1uZXh0LWxlYXZlLXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfS5zbGlkZS12LW5leHQtZW50ZXJ7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0uc2xpZGUtdi1wcmV2LWVudGVye29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfS5zbGlkZS12LXByZXYtbGVhdmUtdG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ueWVhck1vbnRoLWVudGVyLWFjdGl2ZSwueWVhck1vbnRoLWxlYXZlLWFjdGl2ZXtwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuM3M7dHJhbnNpdGlvbjpvcGFjaXR5IC4zc30ueWVhck1vbnRoLWVudGVyLC55ZWFyTW9udGgtbGVhdmUtdG97b3BhY2l0eTowfS52ZC1waWNrZXJfX3llYXJze3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDozMjJweDtsaXN0LXN0eWxlLXR5cGU6bm9uZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDtwYWRkaW5nOjhweCAwO292ZXJmbG93LXk6c2Nyb2xsOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS52ZC1waWNrZXItLWJvdHRvbXNoZWV0IC52ZC1waWNrZXJfX3llYXJze2hlaWdodDozNzBweH1Ac3VwcG9ydHMgKHBhZGRpbmctYm90dG9tOmNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKXsudmQtcGlja2VyX195ZWFyc3stLXNhZmUtYXJlYS1pbnNldC1ib3R0b206Y29uc3RhbnQoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7cGFkZGluZy1ib3R0b206Y2FsYyg4cHggKyB2YXIoLS1zYWZlLWFyZWEtaW5zZXQtYm90dG9tKSl9fUBzdXBwb3J0cyAocGFkZGluZy1ib3R0b206ZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKXsudmQtcGlja2VyX195ZWFyc3stLXNhZmUtYXJlYS1pbnNldC1ib3R0b206ZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO3BhZGRpbmctYm90dG9tOmNhbGMoOHB4ICsgdmFyKC0tc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpfX0udmQtcGlja2VyLS12YWxpZGF0ZSAudmQtcGlja2VyX195ZWFyc3tib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVmMWY4fS52ZC1waWNrZXJfX3llYXJzIGxpe3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstbXMtZmxleC1saW5lLXBhY2s6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6OHB4IDA7bWFyZ2luLWxlZnQ6MTJweDttYXJnaW4tcmlnaHQ6MTJweDtoZWlnaHQ6NDBweDttaW4taGVpZ2h0OjQwcHg7d2lkdGg6Y2FsYygxMDAlIC0gMjRweCk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NTAwO291dGxpbmU6bm9uZTstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuM3M7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4zcztib3JkZXI6dGhpbiBzb2xpZCB0cmFuc3BhcmVudH0udmQtcGlja2VyLS1ib3R0b21zaGVldCAudmQtcGlja2VyX195ZWFycyBsaXtoZWlnaHQ6NDhweDttaW4taGVpZ2h0OjQ4cHh9LnZkLXBpY2tlcl9feWVhcnMgbGk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWVmMWY4fS52ZC1waWNrZXJfX3llYXJzIGxpOmRpc2FibGVkLC52ZC1waWNrZXJfX3llYXJzIGxpW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdDtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7cG9pbnRlci1ldmVudHM6bm9uZX0udmQtcGlja2VyX195ZWFycyBsaStsaXttYXJnaW4tdG9wOjJweH1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/@mathieustan/vue-datepicker/dist/vue-datepicker.min.css\n");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/element-ui/lib/theme-chalk/index.css":
/*!*******************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/element-ui/lib/theme-chalk/index.css ***!
\*******************************************************************************************************************************************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fonts_element_icons_woff__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fonts/element-icons.woff */ \"./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.woff\");\n/* harmony import */ var _fonts_element_icons_woff__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fonts_element_icons_woff__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _fonts_element_icons_ttf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fonts/element-icons.ttf */ \"./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf\");\n/* harmony import */ var _fonts_element_icons_ttf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_fonts_element_icons_ttf__WEBPACK_IMPORTED_MODULE_4__);\n// Imports\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_fonts_element_icons_woff__WEBPACK_IMPORTED_MODULE_3___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_fonts_element_icons_ttf__WEBPACK_IMPORTED_MODULE_4___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@charset \\\"UTF-8\\\";@font-face{font-family:element-icons;src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"truetype\\\");font-weight:400;font-display:\\\"auto\\\";font-style:normal}[class*=\\\" el-icon-\\\"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:\\\"\\\\e6a0\\\"}.el-icon-ice-cream-square:before{content:\\\"\\\\e6a3\\\"}.el-icon-lollipop:before{content:\\\"\\\\e6a4\\\"}.el-icon-potato-strips:before{content:\\\"\\\\e6a5\\\"}.el-icon-milk-tea:before{content:\\\"\\\\e6a6\\\"}.el-icon-ice-drink:before{content:\\\"\\\\e6a7\\\"}.el-icon-ice-tea:before{content:\\\"\\\\e6a9\\\"}.el-icon-coffee:before{content:\\\"\\\\e6aa\\\"}.el-icon-orange:before{content:\\\"\\\\e6ab\\\"}.el-icon-pear:before{content:\\\"\\\\e6ac\\\"}.el-icon-apple:before{content:\\\"\\\\e6ad\\\"}.el-icon-cherry:before{content:\\\"\\\\e6ae\\\"}.el-icon-watermelon:before{content:\\\"\\\\e6af\\\"}.el-icon-grape:before{content:\\\"\\\\e6b0\\\"}.el-icon-refrigerator:before{content:\\\"\\\\e6b1\\\"}.el-icon-goblet-square-full:before{content:\\\"\\\\e6b2\\\"}.el-icon-goblet-square:before{content:\\\"\\\\e6b3\\\"}.el-icon-goblet-full:before{content:\\\"\\\\e6b4\\\"}.el-icon-goblet:before{content:\\\"\\\\e6b5\\\"}.el-icon-cold-drink:before{content:\\\"\\\\e6b6\\\"}.el-icon-coffee-cup:before{content:\\\"\\\\e6b8\\\"}.el-icon-water-cup:before{content:\\\"\\\\e6b9\\\"}.el-icon-hot-water:before{content:\\\"\\\\e6ba\\\"}.el-icon-ice-cream:before{content:\\\"\\\\e6bb\\\"}.el-icon-dessert:before{content:\\\"\\\\e6bc\\\"}.el-icon-sugar:before{content:\\\"\\\\e6bd\\\"}.el-icon-tableware:before{content:\\\"\\\\e6be\\\"}.el-icon-burger:before{content:\\\"\\\\e6bf\\\"}.el-icon-knife-fork:before{content:\\\"\\\\e6c1\\\"}.el-icon-fork-spoon:before{content:\\\"\\\\e6c2\\\"}.el-icon-chicken:before{content:\\\"\\\\e6c3\\\"}.el-icon-food:before{content:\\\"\\\\e6c4\\\"}.el-icon-dish-1:before{content:\\\"\\\\e6c5\\\"}.el-icon-dish:before{content:\\\"\\\\e6c6\\\"}.el-icon-moon-night:before{content:\\\"\\\\e6ee\\\"}.el-icon-moon:before{content:\\\"\\\\e6f0\\\"}.el-icon-cloudy-and-sunny:before{content:\\\"\\\\e6f1\\\"}.el-icon-partly-cloudy:before{content:\\\"\\\\e6f2\\\"}.el-icon-cloudy:before{content:\\\"\\\\e6f3\\\"}.el-icon-sunny:before{content:\\\"\\\\e6f6\\\"}.el-icon-sunset:before{content:\\\"\\\\e6f7\\\"}.el-icon-sunrise-1:before{content:\\\"\\\\e6f8\\\"}.el-icon-sunrise:before{content:\\\"\\\\e6f9\\\"}.el-icon-heavy-rain:before{content:\\\"\\\\e6fa\\\"}.el-icon-lightning:before{content:\\\"\\\\e6fb\\\"}.el-icon-light-rain:before{content:\\\"\\\\e6fc\\\"}.el-icon-wind-power:before{content:\\\"\\\\e6fd\\\"}.el-icon-baseball:before{content:\\\"\\\\e712\\\"}.el-icon-soccer:before{content:\\\"\\\\e713\\\"}.el-icon-football:before{content:\\\"\\\\e715\\\"}.el-icon-basketball:before{content:\\\"\\\\e716\\\"}.el-icon-ship:before{content:\\\"\\\\e73f\\\"}.el-icon-truck:before{content:\\\"\\\\e740\\\"}.el-icon-bicycle:before{content:\\\"\\\\e741\\\"}.el-icon-mobile-phone:before{content:\\\"\\\\e6d3\\\"}.el-icon-service:before{content:\\\"\\\\e6d4\\\"}.el-icon-key:before{content:\\\"\\\\e6e2\\\"}.el-icon-unlock:before{content:\\\"\\\\e6e4\\\"}.el-icon-lock:before{content:\\\"\\\\e6e5\\\"}.el-icon-watch:before{content:\\\"\\\\e6fe\\\"}.el-icon-watch-1:before{content:\\\"\\\\e6ff\\\"}.el-icon-timer:before{content:\\\"\\\\e702\\\"}.el-icon-alarm-clock:before{content:\\\"\\\\e703\\\"}.el-icon-map-location:before{content:\\\"\\\\e704\\\"}.el-icon-delete-location:before{content:\\\"\\\\e705\\\"}.el-icon-add-location:before{content:\\\"\\\\e706\\\"}.el-icon-location-information:before{content:\\\"\\\\e707\\\"}.el-icon-location-outline:before{content:\\\"\\\\e708\\\"}.el-icon-location:before{content:\\\"\\\\e79e\\\"}.el-icon-place:before{content:\\\"\\\\e709\\\"}.el-icon-discover:before{content:\\\"\\\\e70a\\\"}.el-icon-first-aid-kit:before{content:\\\"\\\\e70b\\\"}.el-icon-trophy-1:before{content:\\\"\\\\e70c\\\"}.el-icon-trophy:before{content:\\\"\\\\e70d\\\"}.el-icon-medal:before{content:\\\"\\\\e70e\\\"}.el-icon-medal-1:before{content:\\\"\\\\e70f\\\"}.el-icon-stopwatch:before{content:\\\"\\\\e710\\\"}.el-icon-mic:before{content:\\\"\\\\e711\\\"}.el-icon-copy-document:before{content:\\\"\\\\e718\\\"}.el-icon-full-screen:before{content:\\\"\\\\e719\\\"}.el-icon-switch-button:before{content:\\\"\\\\e71b\\\"}.el-icon-aim:before{content:\\\"\\\\e71c\\\"}.el-icon-crop:before{content:\\\"\\\\e71d\\\"}.el-icon-odometer:before{content:\\\"\\\\e71e\\\"}.el-icon-time:before{content:\\\"\\\\e71f\\\"}.el-icon-bangzhu:before{content:\\\"\\\\e724\\\"}.el-icon-close-notification:before{content:\\\"\\\\e726\\\"}.el-icon-microphone:before{content:\\\"\\\\e727\\\"}.el-icon-turn-off-microphone:before{content:\\\"\\\\e728\\\"}.el-icon-position:before{content:\\\"\\\\e729\\\"}.el-icon-postcard:before{content:\\\"\\\\e72a\\\"}.el-icon-message:before{content:\\\"\\\\e72b\\\"}.el-icon-chat-line-square:before{content:\\\"\\\\e72d\\\"}.el-icon-chat-dot-square:before{content:\\\"\\\\e72e\\\"}.el-icon-chat-dot-round:before{content:\\\"\\\\e72f\\\"}.el-icon-chat-square:before{content:\\\"\\\\e730\\\"}.el-icon-chat-line-round:before{content:\\\"\\\\e731\\\"}.el-icon-chat-round:before{content:\\\"\\\\e732\\\"}.el-icon-set-up:before{content:\\\"\\\\e733\\\"}.el-icon-turn-off:before{content:\\\"\\\\e734\\\"}.el-icon-open:before{content:\\\"\\\\e735\\\"}.el-icon-connection:before{content:\\\"\\\\e736\\\"}.el-icon-link:before{content:\\\"\\\\e737\\\"}.el-icon-cpu:before{content:\\\"\\\\e738\\\"}.el-icon-thumb:before{content:\\\"\\\\e739\\\"}.el-icon-female:before{content:\\\"\\\\e73a\\\"}.el-icon-male:before{content:\\\"\\\\e73b\\\"}.el-icon-guide:before{content:\\\"\\\\e73c\\\"}.el-icon-news:before{content:\\\"\\\\e73e\\\"}.el-icon-price-tag:before{content:\\\"\\\\e744\\\"}.el-icon-discount:before{content:\\\"\\\\e745\\\"}.el-icon-wallet:before{content:\\\"\\\\e747\\\"}.el-icon-coin:before{content:\\\"\\\\e748\\\"}.el-icon-money:before{content:\\\"\\\\e749\\\"}.el-icon-bank-card:before{content:\\\"\\\\e74a\\\"}.el-icon-box:before{content:\\\"\\\\e74b\\\"}.el-icon-present:before{content:\\\"\\\\e74c\\\"}.el-icon-sell:before{content:\\\"\\\\e6d5\\\"}.el-icon-sold-out:before{content:\\\"\\\\e6d6\\\"}.el-icon-shopping-bag-2:before{content:\\\"\\\\e74d\\\"}.el-icon-shopping-bag-1:before{content:\\\"\\\\e74e\\\"}.el-icon-shopping-cart-2:before{content:\\\"\\\\e74f\\\"}.el-icon-shopping-cart-1:before{content:\\\"\\\\e750\\\"}.el-icon-shopping-cart-full:before{content:\\\"\\\\e751\\\"}.el-icon-smoking:before{content:\\\"\\\\e752\\\"}.el-icon-no-smoking:before{content:\\\"\\\\e753\\\"}.el-icon-house:before{content:\\\"\\\\e754\\\"}.el-icon-table-lamp:before{content:\\\"\\\\e755\\\"}.el-icon-school:before{content:\\\"\\\\e756\\\"}.el-icon-office-building:before{content:\\\"\\\\e757\\\"}.el-icon-toilet-paper:before{content:\\\"\\\\e758\\\"}.el-icon-notebook-2:before{content:\\\"\\\\e759\\\"}.el-icon-notebook-1:before{content:\\\"\\\\e75a\\\"}.el-icon-files:before{content:\\\"\\\\e75b\\\"}.el-icon-collection:before{content:\\\"\\\\e75c\\\"}.el-icon-receiving:before{content:\\\"\\\\e75d\\\"}.el-icon-suitcase-1:before{content:\\\"\\\\e760\\\"}.el-icon-suitcase:before{content:\\\"\\\\e761\\\"}.el-icon-film:before{content:\\\"\\\\e763\\\"}.el-icon-collection-tag:before{content:\\\"\\\\e765\\\"}.el-icon-data-analysis:before{content:\\\"\\\\e766\\\"}.el-icon-pie-chart:before{content:\\\"\\\\e767\\\"}.el-icon-data-board:before{content:\\\"\\\\e768\\\"}.el-icon-data-line:before{content:\\\"\\\\e76d\\\"}.el-icon-reading:before{content:\\\"\\\\e769\\\"}.el-icon-magic-stick:before{content:\\\"\\\\e76a\\\"}.el-icon-coordinate:before{content:\\\"\\\\e76b\\\"}.el-icon-mouse:before{content:\\\"\\\\e76c\\\"}.el-icon-brush:before{content:\\\"\\\\e76e\\\"}.el-icon-headset:before{content:\\\"\\\\e76f\\\"}.el-icon-umbrella:before{content:\\\"\\\\e770\\\"}.el-icon-scissors:before{content:\\\"\\\\e771\\\"}.el-icon-mobile:before{content:\\\"\\\\e773\\\"}.el-icon-attract:before{content:\\\"\\\\e774\\\"}.el-icon-monitor:before{content:\\\"\\\\e775\\\"}.el-icon-search:before{content:\\\"\\\\e778\\\"}.el-icon-takeaway-box:before{content:\\\"\\\\e77a\\\"}.el-icon-paperclip:before{content:\\\"\\\\e77d\\\"}.el-icon-printer:before{content:\\\"\\\\e77e\\\"}.el-icon-document-add:before{content:\\\"\\\\e782\\\"}.el-icon-document:before{content:\\\"\\\\e785\\\"}.el-icon-document-checked:before{content:\\\"\\\\e786\\\"}.el-icon-document-copy:before{content:\\\"\\\\e787\\\"}.el-icon-document-delete:before{content:\\\"\\\\e788\\\"}.el-icon-document-remove:before{content:\\\"\\\\e789\\\"}.el-icon-tickets:before{content:\\\"\\\\e78b\\\"}.el-icon-folder-checked:before{content:\\\"\\\\e77f\\\"}.el-icon-folder-delete:before{content:\\\"\\\\e780\\\"}.el-icon-folder-remove:before{content:\\\"\\\\e781\\\"}.el-icon-folder-add:before{content:\\\"\\\\e783\\\"}.el-icon-folder-opened:before{content:\\\"\\\\e784\\\"}.el-icon-folder:before{content:\\\"\\\\e78a\\\"}.el-icon-edit-outline:before{content:\\\"\\\\e764\\\"}.el-icon-edit:before{content:\\\"\\\\e78c\\\"}.el-icon-date:before{content:\\\"\\\\e78e\\\"}.el-icon-c-scale-to-original:before{content:\\\"\\\\e7c6\\\"}.el-icon-view:before{content:\\\"\\\\e6ce\\\"}.el-icon-loading:before{content:\\\"\\\\e6cf\\\"}.el-icon-rank:before{content:\\\"\\\\e6d1\\\"}.el-icon-sort-down:before{content:\\\"\\\\e7c4\\\"}.el-icon-sort-up:before{content:\\\"\\\\e7c5\\\"}.el-icon-sort:before{content:\\\"\\\\e6d2\\\"}.el-icon-finished:before{content:\\\"\\\\e6cd\\\"}.el-icon-refresh-left:before{content:\\\"\\\\e6c7\\\"}.el-icon-refresh-right:before{content:\\\"\\\\e6c8\\\"}.el-icon-refresh:before{content:\\\"\\\\e6d0\\\"}.el-icon-video-play:before{content:\\\"\\\\e7c0\\\"}.el-icon-video-pause:before{content:\\\"\\\\e7c1\\\"}.el-icon-d-arrow-right:before{content:\\\"\\\\e6dc\\\"}.el-icon-d-arrow-left:before{content:\\\"\\\\e6dd\\\"}.el-icon-arrow-up:before{content:\\\"\\\\e6e1\\\"}.el-icon-arrow-down:before{content:\\\"\\\\e6df\\\"}.el-icon-arrow-right:before{content:\\\"\\\\e6e0\\\"}.el-icon-arrow-left:before{content:\\\"\\\\e6de\\\"}.el-icon-top-right:before{content:\\\"\\\\e6e7\\\"}.el-icon-top-left:before{content:\\\"\\\\e6e8\\\"}.el-icon-top:before{content:\\\"\\\\e6e6\\\"}.el-icon-bottom:before{content:\\\"\\\\e6eb\\\"}.el-icon-right:before{content:\\\"\\\\e6e9\\\"}.el-icon-back:before{content:\\\"\\\\e6ea\\\"}.el-icon-bottom-right:before{content:\\\"\\\\e6ec\\\"}.el-icon-bottom-left:before{content:\\\"\\\\e6ed\\\"}.el-icon-caret-top:before{content:\\\"\\\\e78f\\\"}.el-icon-caret-bottom:before{content:\\\"\\\\e790\\\"}.el-icon-caret-right:before{content:\\\"\\\\e791\\\"}.el-icon-caret-left:before{content:\\\"\\\\e792\\\"}.el-icon-d-caret:before{content:\\\"\\\\e79a\\\"}.el-icon-share:before{content:\\\"\\\\e793\\\"}.el-icon-menu:before{content:\\\"\\\\e798\\\"}.el-icon-s-grid:before{content:\\\"\\\\e7a6\\\"}.el-icon-s-check:before{content:\\\"\\\\e7a7\\\"}.el-icon-s-data:before{content:\\\"\\\\e7a8\\\"}.el-icon-s-opportunity:before{content:\\\"\\\\e7aa\\\"}.el-icon-s-custom:before{content:\\\"\\\\e7ab\\\"}.el-icon-s-claim:before{content:\\\"\\\\e7ad\\\"}.el-icon-s-finance:before{content:\\\"\\\\e7ae\\\"}.el-icon-s-comment:before{content:\\\"\\\\e7af\\\"}.el-icon-s-flag:before{content:\\\"\\\\e7b0\\\"}.el-icon-s-marketing:before{content:\\\"\\\\e7b1\\\"}.el-icon-s-shop:before{content:\\\"\\\\e7b4\\\"}.el-icon-s-open:before{content:\\\"\\\\e7b5\\\"}.el-icon-s-management:before{content:\\\"\\\\e7b6\\\"}.el-icon-s-ticket:before{content:\\\"\\\\e7b7\\\"}.el-icon-s-release:before{content:\\\"\\\\e7b8\\\"}.el-icon-s-home:before{content:\\\"\\\\e7b9\\\"}.el-icon-s-promotion:before{content:\\\"\\\\e7ba\\\"}.el-icon-s-operation:before{content:\\\"\\\\e7bb\\\"}.el-icon-s-unfold:before{content:\\\"\\\\e7bc\\\"}.el-icon-s-fold:before{content:\\\"\\\\e7a9\\\"}.el-icon-s-platform:before{content:\\\"\\\\e7bd\\\"}.el-icon-s-order:before{content:\\\"\\\\e7be\\\"}.el-icon-s-cooperation:before{content:\\\"\\\\e7bf\\\"}.el-icon-bell:before{content:\\\"\\\\e725\\\"}.el-icon-message-solid:before{content:\\\"\\\\e799\\\"}.el-icon-video-camera:before{content:\\\"\\\\e772\\\"}.el-icon-video-camera-solid:before{content:\\\"\\\\e796\\\"}.el-icon-camera:before{content:\\\"\\\\e779\\\"}.el-icon-camera-solid:before{content:\\\"\\\\e79b\\\"}.el-icon-download:before{content:\\\"\\\\e77c\\\"}.el-icon-upload2:before{content:\\\"\\\\e77b\\\"}.el-icon-upload:before{content:\\\"\\\\e7c3\\\"}.el-icon-picture-outline-round:before{content:\\\"\\\\e75f\\\"}.el-icon-picture-outline:before{content:\\\"\\\\e75e\\\"}.el-icon-picture:before{content:\\\"\\\\e79f\\\"}.el-icon-close:before{content:\\\"\\\\e6db\\\"}.el-icon-check:before{content:\\\"\\\\e6da\\\"}.el-icon-plus:before{content:\\\"\\\\e6d9\\\"}.el-icon-minus:before{content:\\\"\\\\e6d8\\\"}.el-icon-help:before{content:\\\"\\\\e73d\\\"}.el-icon-s-help:before{content:\\\"\\\\e7b3\\\"}.el-icon-circle-close:before{content:\\\"\\\\e78d\\\"}.el-icon-circle-check:before{content:\\\"\\\\e720\\\"}.el-icon-circle-plus-outline:before{content:\\\"\\\\e723\\\"}.el-icon-remove-outline:before{content:\\\"\\\\e722\\\"}.el-icon-zoom-out:before{content:\\\"\\\\e776\\\"}.el-icon-zoom-in:before{content:\\\"\\\\e777\\\"}.el-icon-error:before{content:\\\"\\\\e79d\\\"}.el-icon-success:before{content:\\\"\\\\e79c\\\"}.el-icon-circle-plus:before{content:\\\"\\\\e7a0\\\"}.el-icon-remove:before{content:\\\"\\\\e7a2\\\"}.el-icon-info:before{content:\\\"\\\\e7a1\\\"}.el-icon-question:before{content:\\\"\\\\e7a4\\\"}.el-icon-warning-outline:before{content:\\\"\\\\e6c9\\\"}.el-icon-warning:before{content:\\\"\\\\e7a3\\\"}.el-icon-goods:before{content:\\\"\\\\e7c2\\\"}.el-icon-s-goods:before{content:\\\"\\\\e7b2\\\"}.el-icon-star-off:before{content:\\\"\\\\e717\\\"}.el-icon-star-on:before{content:\\\"\\\\e797\\\"}.el-icon-more-outline:before{content:\\\"\\\\e6cc\\\"}.el-icon-more:before{content:\\\"\\\\e794\\\"}.el-icon-phone-outline:before{content:\\\"\\\\e6cb\\\"}.el-icon-phone:before{content:\\\"\\\\e795\\\"}.el-icon-user:before{content:\\\"\\\\e6e3\\\"}.el-icon-user-solid:before{content:\\\"\\\\e7a5\\\"}.el-icon-setting:before{content:\\\"\\\\e6ca\\\"}.el-icon-s-tools:before{content:\\\"\\\\e7ac\\\"}.el-icon-delete:before{content:\\\"\\\\e6d7\\\"}.el-icon-delete-solid:before{content:\\\"\\\\e7c9\\\"}.el-icon-eleme:before{content:\\\"\\\\e7c7\\\"}.el-icon-platform-eleme:before{content:\\\"\\\\e7ca\\\"}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:\\\"\\\"}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409EFF}.el-pagination button:disabled{color:#C0C4CC;background-color:#FFF;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #FFF;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#C0C4CC;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .arrow.disabled{visibility:hidden}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409EFF}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-dialog,.el-pager li{-webkit-box-sizing:border-box}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#C0C4CC}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409EFF}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409EFF;color:#FFF}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;user-select:none;list-style:none;font-size:0}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;background:#FFF;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#C0C4CC}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409EFF}.el-pager li.active{color:#409EFF;cursor:default}.el-dialog{position:relative;margin:0 auto 50px;background:#FFF;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #E4E7ED;box-sizing:border-box;background-color:#FFF}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#F5F7FA}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:\\\"\\\";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#FFF}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:not(.is-disabled)::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown [disabled]{cursor:not-allowed;color:#bbb}.el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item,.el-menu-item{font-size:14px;padding:0 20px;cursor:pointer}.el-dropdown-menu__item{list-style:none;line-height:36px;margin:0;color:#606266;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #EBEEF5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#FFF}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#FFF}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:\\\"\\\"}.el-breadcrumb__item:last-child .el-breadcrumb__separator,.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409EFF;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--collapse .el-submenu,.el-menu-item{position:relative}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#FFF;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409EFF;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;list-style:none}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-submenu{min-width:200px}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #E4E7ED;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:none}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{color:#303133;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-radio-button__inner,.el-submenu__title{-webkit-box-sizing:border-box;position:relative;white-space:nowrap}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409EFF}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409EFF}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{background:#FFF;border:1px solid #DCDFE6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409EFF}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;box-shadow:-1px 0 0 0 #409EFF}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#F2F6FC}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){box-shadow:0 0 2px 2px #409EFF}.el-picker-panel,.el-popover,.el-select-dropdown,.el-table-filter,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-switch{display:inline-flex;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409EFF}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #DCDFE6;outline:0;border-radius:10px;box-sizing:border-box;background:#DCDFE6;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-input__prefix,.el-input__suffix{-webkit-transition:all .3s;color:#C0C4CC}.el-switch__core:after{content:\\\"\\\";position:absolute;top:1px;left:1px;border-radius:100%;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#409EFF;background-color:#409EFF}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #E4E7ED;border-radius:4px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409EFF;background-color:#FFF}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#F5F7FA}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:\\\"\\\\e6da\\\";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#C0C4CC}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409EFF}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;transition:transform .3s;transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#E4E7ED}.el-range-editor.is-active,.el-range-editor.is-active:hover,.el-select .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#C0C4CC;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;transform:translateY(-50%);display:flex;align-items:center;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:flex;max-width:100%;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#C0C4CC;top:0;color:#FFF;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#FFF}.el-select .el-tag__close.el-icon-close::before{display:block;transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:flex;justify-content:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;transition:transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th.el-table__cell{background:#F5F7FA}.el-table .el-table__cell{padding:12px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table--medium .el-table__cell{padding:10px 0}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:8px 0}.el-table--mini{font-size:12px}.el-table--mini .el-table__cell{padding:6px 0}.el-table tr{background-color:#FFF}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:1px solid #EBEEF5}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#FFF}.el-table th.el-table__cell>.cell{display:inline-block;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th.el-table__cell>.cell.highlight{color:#409EFF}.el-table th.el-table__cell.required>div::before{display:inline-block;content:\\\"\\\";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{box-sizing:border-box}.el-date-table td,.el-table .cell,.el-table-filter{-webkit-box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #EBEEF5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#EBEEF5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border .el-table__cell,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #EBEEF5}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:1px solid #EBEEF5;border-bottom-width:1px}.el-table--border th.el-table__cell,.el-table__fixed-right-patch{border-bottom:1px solid #EBEEF5}.el-table--hidden{visibility:hidden}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#EBEEF5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#FFF}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td.el-table__cell{border-top:1px solid #EBEEF5;background-color:#F5F7FA;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td.el-table__cell{border-top:1px solid #EBEEF5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:#F5F7FA;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{box-shadow:none}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #EBEEF5}.el-table .caret-wrapper{display:inline-flex;flex-direction:column;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#C0C4CC;top:5px}.el-table .sort-caret.descending{border-top-color:#C0C4CC;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409EFF}.el-table .descending .sort-caret.descending{border-top-color:#409EFF}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell,.el-table--striped .el-table__body tr.el-table__row--striped.selection-row td.el-table__cell{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.selection-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row.selection-row>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:#F5F7FA}.el-table__body tr.current-row>td.el-table__cell,.el-table__body tr.selection-row>td.el-table__cell{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #EBEEF5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;transform:scale(.75)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:#F5F7FA}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #EBEEF5;border-radius:2px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409EFF;color:#FFF}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #EBEEF5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#F2F6FC}.el-table-filter__bottom button:hover{color:#409EFF}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#C0C4CC}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409EFF;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#FFF}.el-date-table td.available:hover{color:#409EFF}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#409EFF}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#FFF}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409EFF}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#F5F7FA;opacity:1;cursor:not-allowed;color:#C0C4CC}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#F2F6FC;border-radius:15px}.el-date-table td.selected div:hover{background-color:#F2F6FC}.el-date-table td.selected span{background-color:#409EFF;color:#FFF;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #EBEEF5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.el-month-table td.today .cell{color:#409EFF;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.el-month-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-month-table td.disabled .cell:hover{color:#C0C4CC}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409EFF}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#409EFF}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409EFF}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409EFF;font-weight:700}.el-year-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-year-table td.disabled .cell:hover{color:#C0C4CC}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409EFF}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#FFF}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #EBEEF5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409EFF}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409EFF;font-weight:700}.time-select-item.disabled{color:#E4E7ED;cursor:not-allowed}.time-select-item:hover{background-color:#F5F7FA;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#C0C4CC;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-moz-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::placeholder{color:#C0C4CC}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#C0C4CC;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:inline-flex;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#E4E7ED}.el-range-editor.is-disabled input{background-color:#F5F7FA;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::placeholder{color:#C0C4CC}.el-range-editor.is-disabled .el-range-separator{color:#C0C4CC}.el-picker-panel{color:#606266;border:1px solid #E4E7ED;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#FFF;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:\\\"\\\";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#FFF;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409EFF}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409EFF}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409EFF}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;box-sizing:border-box;padding-top:6px;background-color:#FFF;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#FFF;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409EFF}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#F5F7FA;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#C0C4CC;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #E4E7ED;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:\\\"\\\";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #E4E7ED;border-bottom:1px solid #E4E7ED}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409EFF}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #E4E7ED}.el-popover{position:absolute;background:#FFF;min-width:150px;border-radius:4px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover,.el-cascader__dropdown,.el-color-picker__panel,.el-message-box,.el-notification{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#FFF;border-radius:4px;border:1px solid #EBEEF5;font-size:18px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:\\\"\\\";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#F56C6C}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409EFF}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67C23A}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#E6A23C}.el-message-box__status.el-icon-error{color:#F56C6C}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#F56C6C;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:flex;align-items:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{animation:msgbox-fade-out .3s}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:\\\"\\\"}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:\\\"\\\"}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:\\\"\\\"}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409EFF;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#409EFF}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:\\\"\\\";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#E4E7ED;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){box-shadow:0 0 2px 2px #409EFF inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs--card>.el-tabs__header .el-tabs__active-bar,.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs__item .el-icon-close:hover{background-color:#C0C4CC;color:#FFF}.el-tabs__item.is-active{color:#409EFF}.el-tabs__item:hover{color:#409EFF;cursor:pointer}.el-tabs__item.is-disabled{color:#C0C4CC;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #E4E7ED}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #E4E7ED;border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #E4E7ED;transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#FFF}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#FFF;border:1px solid #DCDFE6;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#F5F7FA;border-bottom:1px solid #E4E7ED;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-col-offset-0,.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409EFF;background-color:#FFF;border-right-color:#DCDFE6;border-left-color:#DCDFE6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409EFF}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-cascader-menu:last-child .el-cascader-node,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #DCDFE6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-button-group>.el-button:not(:last-child),.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #E4E7ED;border-bottom:none;border-top:1px solid #E4E7ED;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #E4E7ED;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #E4E7ED;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #E4E7ED;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #E4E7ED}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #E4E7ED;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #E4E7ED;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #E4E7ED;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#FFF;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409EFF}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#F5F7FA}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409EFF;color:#fff}.el-tree-node__content:hover,.el-upload-list__item:hover{background-color:#F5F7FA}.el-tree-node__content{display:flex;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#C0C4CC;font-size:12px;transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#C0C4CC}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:flex;align-items:center;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active,.el-upload iframe{opacity:0}.el-carousel__arrow--right,.el-notification.right{right:16px}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;overflow:hidden}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;transform:translateX(100%)}.el-notification-fade-enter.left{left:0;transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#F5F7FA;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409EFF}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409EFF}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #DCDFE6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #DCDFE6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#E4E7ED;color:#E4E7ED}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#E4E7ED;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #DCDFE6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #DCDFE6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:\\\" \\\";border-width:5px}.el-button-group::after,.el-button-group::before,.el-color-dropdown__main-wrapper::after,.el-link.is-underline:hover:after,.el-page-header__left::after,.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-transfer-panel .el-transfer-panel__footer::after,.el-upload-cover::after,.el-upload-list--picture-card .el-upload-list__item-actions::after{content:\\\"\\\"}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#FFF}.el-tooltip__popper.is-light{background:#FFF;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#FFF}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#FFF}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#FFF}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#FFF}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{display:inline-block;vertical-align:middle}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#E4E7ED;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button{border-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409EFF;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:normal}.el-image-viewer__btn,.el-slider__button,.el-step__icon-inner{-moz-user-select:none;-ms-user-select:none}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409EFF;background-color:#FFF;border-radius:50%;transition:.2s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #DCDFE6;line-height:20px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#C0C4CC}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409EFF}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-12,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row,.el-upload-dragger,.el-upload-list__item{position:relative}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}@keyframes loading-rotate{100%{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{justify-content:center}.el-row--flex.is-justify-end{justify-content:flex-end}.el-row--flex.is-justify-space-between{justify-content:space-between}.el-row--flex.is-justify-space-around{justify-content:space-around}.el-row--flex.is-align-top{align-items:flex-start}.el-row--flex.is-align-middle{align-items:center}.el-row--flex.is-align-bottom{align-items:flex-end}[class*=el-col-]{float:left;box-sizing:border-box}.el-col-0{width:0%}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409EFF;color:#409EFF}.el-upload:focus .el-upload-dragger{border-color:#409EFF}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#C0C4CC;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #DCDFE6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409EFF;font-style:normal}.el-upload-dragger:hover{border-color:#409EFF}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409EFF}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67C23A}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409EFF}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409EFF;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409EFF}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#FFF}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#FFF;font-size:14px;cursor:pointer;vertical-align:middle;transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#FFF;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#FFF;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67C23A}.el-progress.is-success .el-progress__text{color:#67C23A}.el-progress.is-warning .el-progress-bar__inner{background-color:#E6A23C}.el-badge__content,.el-progress.is-exception .el-progress-bar__inner{background-color:#F56C6C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.el-progress.is-exception .el-progress__text{color:#F56C6C}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-card__header,.el-message,.el-step__icon{-webkit-box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#EBEEF5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409EFF;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-progress-bar__inner::after{display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#FFF;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;transform:translateX(-50%);background-color:#edf2fc;transition:opacity .3s,transform .4s,top .4s;overflow:hidden;padding:15px 15px 15px 20px;display:flex;align-items:center}.el-message.is-center{justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C}.el-card{border-radius:4px;border:1px solid #EBEEF5;background-color:#FFF;overflow:hidden;color:#303133;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;box-sizing:border-box}.el-card__body,.el-main{padding:20px}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C0C4CC;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#F5F7FA}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;flex-flow:column}.el-step{position:relative;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-shrink:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#C0C4CC;border-color:#C0C4CC}.el-step__head.is-success{color:#67C23A;border-color:#67C23A}.el-step__head.is-error{color:#F56C6C;border-color:#F56C6C}.el-step__head.is-finish{color:#409EFF;border-color:#409EFF}.el-step__icon{position:relative;z-index:1;display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:#FFF;transition:.15s ease-out}.el-step.is-horizontal,.el-step__icon-inner{display:inline-block}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#C0C4CC}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#C0C4CC}.el-step__title.is-success{color:#67C23A}.el-step__title.is-error{color:#F56C6C}.el-step__title.is-finish{color:#409EFF}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#C0C4CC}.el-step__description.is-success{color:#67C23A}.el-step__description.is-error{color:#F56C6C}.el-step__description.is-finish{color:#409EFF}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:flex;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:flex;align-items:stretch;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{flex-grow:1;display:flex;align-items:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#C0C4CC}.el-step.is-simple .el-step__arrow::before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;position:absolute;top:0;left:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;transition:.2s}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45,.45)}.collapse-transition{transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;transform:translateY(-30px)}.el-opacity-transition{transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #EBEEF5;border-bottom:1px solid #EBEEF5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:flex;align-items:center;height:48px;line-height:48px;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409EFF}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__search-input,.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-cascader,.el-tag{display:inline-block}.el-popper .popper__arrow{border-width:6px;filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:\\\" \\\";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409EFF;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409EFF}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#409eff;border-color:#409eff;color:#fff}.el-tag--dark.is-hit{border-color:#409EFF}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409EFF}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;transform:scale(.7)}.el-cascader{position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{transition:transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#C0C4CC}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:flex;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:flex;justify-content:space-between;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#409EFF;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;box-sizing:border-box}.el-cascader__search-input::-moz-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px #409EFF}.el-color-predefine__color-selector>div{display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__icon,.el-input,.el-textarea{display:inline-block;width:100%}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{font-size:12px;color:#999;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center;font-size:12px}.el-input__prefix,.el-input__suffix{position:absolute;top:0;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-input__inner,.el-textarea__inner,.el-transfer-panel{-webkit-box-sizing:border-box}.el-textarea{position:relative;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#FFF;background-image:none;border:1px solid #DCDFE6;border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-moz-placeholder{color:#C0C4CC}.el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea__inner:hover{border-color:#C0C4CC}.el-textarea__inner:focus{outline:0;border-color:#409EFF}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#C0C4CC;font-size:14px;cursor:pointer;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:inline-flex;align-items:center;color:#909399;font-size:12px}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input,.el-input__inner{font-size:inherit}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#FFF;background-image:none;border-radius:4px;border:1px solid #DCDFE6;box-sizing:border-box;color:#606266;display:inline-block;height:40px;line-height:40px;outline:0;padding:0 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-moz-placeholder{color:#C0C4CC}.el-input__inner::placeholder{color:#C0C4CC}.el-input__inner:hover{border-color:#C0C4CC}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409EFF;outline:0}.el-input__suffix{height:100%;right:5px;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{height:100%;left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-image-viewer__btn,.el-image__preview,.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#F5F7FA;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #DCDFE6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#FFF;background-color:#409EFF;font-size:0}.el-button-group>.el-button+.el-button,.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-divider__text,.el-image__error,.el-link,.el-timeline,.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #DCDFE6;background-color:#F5F7FA;color:#C0C4CC}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer-panel{border:1px solid #EBEEF5;border-radius:4px;overflow:hidden;background:#FFF;display:inline-block;vertical-align:middle;width:200px;max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409EFF}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#F5F7FA;margin:0;padding-left:15px;border-bottom:1px solid #EBEEF5;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#FFF;margin:0;padding:0;border-top:1px solid #EBEEF5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:flex;flex-direction:row;flex:1;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer,.el-empty,.el-result{-webkit-box-orient:vertical}.el-container.is-vertical{flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;flex-shrink:0}.el-aside{overflow:auto;box-sizing:border-box;flex-shrink:0}.el-main{display:block;flex:1;flex-basis:auto;overflow:auto;box-sizing:border-box}.el-footer{padding:0 20px;box-sizing:border-box;flex-shrink:0}.el-timeline{margin:0;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;display:flex;justify-content:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409EFF}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;justify-content:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0;font-weight:500}.el-link.is-underline:hover:after{position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409EFF}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409EFF}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409EFF}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#409EFF}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;font-weight:500;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;justify-content:center;align-items:center;color:#C0C4CC;vertical-align:middle}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.8;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-button,.el-checkbox,.el-checkbox-button__inner,.el-empty__image img,.el-radio{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:flex;align-items:center;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;top:50%}.el-image-viewer__prev{transform:translateY(-50%);left:40px}.el-image-viewer__next{transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{animation:viewer-fade-in .3s}.viewer-fade-leave-active{animation:viewer-fade-out .3s}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button,.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#FFF;border-color:#409EFF;color:#409EFF}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#FFF;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#FFF;border-color:#EBEEF5;color:#C0C4CC}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#FFF;background-color:#409EFF;border-color:#409EFF}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#FFF}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#FFF;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409EFF;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409EFF;border-color:#409EFF;color:#FFF}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#FFF;background-color:#67C23A;border-color:#67C23A}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#FFF}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#FFF}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#FFF;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67C23A;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67C23A;border-color:#67C23A;color:#FFF}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#FFF;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#FFF;background-color:#E6A23C;border-color:#E6A23C}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#FFF}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#FFF}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#FFF;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#E6A23C;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#E6A23C;border-color:#E6A23C;color:#FFF}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#FFF;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#FFF;background-color:#F56C6C;border-color:#F56C6C}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#FFF}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#FFF}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#FFF;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#F56C6C;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#F56C6C;border-color:#F56C6C;color:#FFF}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#FFF;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#FFF;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#FFF}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#FFF}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#FFF;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#FFF}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#FFF;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini{font-size:12px;border-radius:3px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#409EFF;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group .el-button--danger:last-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:last-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:last-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:last-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:last-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child),.el-button-group>.el-dropdown>.el-button{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:first-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:first-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:first-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:first-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-right-color:rgba(255,255,255,.5)}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0}.el-calendar{background-color:#fff}.el-calendar__header{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-ms-flexbox}.el-calendar__title{color:#000;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#409EFF}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{position:absolute;width:1px;height:16px;right:-20px;top:50%;transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #DCDFE6;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409EFF}.el-checkbox.is-bordered.is-disabled{border-color:#EBEEF5;cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#DCDFE6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#C0C4CC}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#C0C4CC}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#C0C4CC;border-color:#C0C4CC}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409EFF;border-color:#409EFF}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#C0C4CC;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409EFF}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409EFF}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #DCDFE6;border-radius:2px;box-sizing:border-box;width:14px;height:14px;background-color:#FFF;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409EFF}.el-checkbox__inner::after{box-sizing:content-box;content:\\\"\\\";border:1px solid #FFF;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in .05s;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409EFF}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409EFF}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#EBEEF5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409EFF}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-avatar,.el-cascader-panel,.el-radio,.el-radio--medium.is-bordered .el-radio__label,.el-radio__label{font-size:14px}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #DCDFE6;box-sizing:border-box;height:40px}.el-cascader-menu,.el-cascader-menu__list,.el-radio__inner{-webkit-box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:#409EFF}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#EBEEF5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#F5F7FA;border-color:#E4E7ED}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#F5F7FA}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#C0C4CC}.el-radio__input.is-disabled+span.el-radio__label{color:#C0C4CC;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409EFF;background:#409EFF}.el-radio__input.is-checked .el-radio__inner::after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409EFF}.el-radio__input.is-focus .el-radio__inner{border-color:#409EFF}.el-radio__inner{border:1px solid #DCDFE6;border-radius:100%;width:14px;height:14px;background-color:#FFF;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#409EFF}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:\\\"\\\";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px #409EFF}.el-radio__label{padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:flex;border-radius:4px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:flex;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409EFF;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px}.el-drawer,.el-drawer__body>*{-webkit-box-sizing:border-box}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-empty__image img,.el-empty__image svg{vertical-align:top;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes rtl-drawer-in{0%{transform:translate(100%,0)}100%{transform:translate(0,0)}}@keyframes rtl-drawer-out{0%{transform:translate(0,0)}100%{transform:translate(100%,0)}}@keyframes ltr-drawer-in{0%{transform:translate(-100%,0)}100%{transform:translate(0,0)}}@keyframes ltr-drawer-out{0%{transform:translate(0,0)}100%{transform:translate(-100%,0)}}@keyframes ttb-drawer-in{0%{transform:translate(0,-100%)}100%{transform:translate(0,0)}}@keyframes ttb-drawer-out{0%{transform:translate(0,0)}100%{transform:translate(0,-100%)}}@keyframes btt-drawer-in{0%{transform:translate(0,100%)}100%{transform:translate(0,0)}}@keyframes btt-drawer-out{0%{transform:translate(0,0)}100%{transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:flex;flex-direction:column;box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);overflow:hidden;outline:0}.el-drawer.rtl{animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{margin:0;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb{width:100%;left:0;right:0}.el-drawer__container{position:relative;left:0;right:0;top:0;bottom:0;height:100%;width:100%}.el-drawer-fade-enter-active{animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-statistic{width:100%;box-sizing:border-box;margin:0;padding:0;color:#000;font-variant:tabular-nums;list-style:none;font-feature-settings:\\\"tnum\\\";text-align:center}.el-statistic .head{margin-bottom:4px;color:#606266;font-size:13px}.el-statistic .con{font-family:Sans-serif;display:flex;justify-content:center;align-items:center;color:#303133}.el-statistic .con .number{font-size:20px;padding:0 4px}.el-statistic .con span{display:inline-block;margin:0;line-height:100%}.el-popconfirm__main,.el-skeleton__image{display:-ms-flexbox;-webkit-box-align:center;display:-webkit-box}.el-popconfirm__main{display:flex;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}@keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;animation:el-skeleton-loading 1.4s ease infinite}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:flex;align-items:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#DCDDE0;width:22%;height:22%}.el-empty{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{fill:#DCDDE0}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom,.el-result__title{margin-top:20px}.el-descriptions{box-sizing:border-box;font-size:14px;color:#303133}.el-descriptions__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.el-descriptions__title{font-size:16px;font-weight:700}.el-descriptions--mini,.el-descriptions--small{font-size:12px}.el-descriptions__body{color:#606266;background-color:#FFF}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%;table-layout:fixed}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:1.5}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right{text-align:right}.el-descriptions .is-bordered{table-layout:auto}.el-descriptions .is-bordered .el-descriptions-item__cell{border:1px solid #EBEEF5;padding:12px 10px}.el-descriptions :not(.is-bordered) .el-descriptions-item__cell{padding-bottom:12px}.el-descriptions--medium.is-bordered .el-descriptions-item__cell{padding:10px}.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:10px}.el-descriptions--small.is-bordered .el-descriptions-item__cell{padding:8px 10px}.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:8px}.el-descriptions--mini.is-bordered .el-descriptions-item__cell{padding:6px 10px}.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:6px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:inline-flex;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{flex:1}.el-descriptions-item__label.has-colon::after{content:':';position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 30px}.el-result__icon svg{width:64px;height:64px}.el-result__title p{margin:0;font-size:20px;color:#303133;line-height:1.3}.el-result__subtitle{margin-top:10px}.el-result__subtitle p{margin:0;font-size:14px;color:#606266;line-height:1.3}.el-result__extra{margin-top:30px}.el-result .icon-success{fill:#67C23A}.el-result .icon-error{fill:#F56C6C}.el-result .icon-info{fill:#909399}.el-result .icon-warning{fill:#E6A23C}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/element-ui/lib/theme-chalk/index.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format(\\\"woff\\\"),url(fonts/element-icons.ttf) format(\\\"truetype\\\");font-weight:400;font-display:\\\"auto\\\";font-style:normal}[class*=\\\" el-icon-\\\"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:\\\"\\\\e6a0\\\"}.el-icon-ice-cream-square:before{content:\\\"\\\\e6a3\\\"}.el-icon-lollipop:before{content:\\\"\\\\e6a4\\\"}.el-icon-potato-strips:before{content:\\\"\\\\e6a5\\\"}.el-icon-milk-tea:before{content:\\\"\\\\e6a6\\\"}.el-icon-ice-drink:before{content:\\\"\\\\e6a7\\\"}.el-icon-ice-tea:before{content:\\\"\\\\e6a9\\\"}.el-icon-coffee:before{content:\\\"\\\\e6aa\\\"}.el-icon-orange:before{content:\\\"\\\\e6ab\\\"}.el-icon-pear:before{content:\\\"\\\\e6ac\\\"}.el-icon-apple:before{content:\\\"\\\\e6ad\\\"}.el-icon-cherry:before{content:\\\"\\\\e6ae\\\"}.el-icon-watermelon:before{content:\\\"\\\\e6af\\\"}.el-icon-grape:before{content:\\\"\\\\e6b0\\\"}.el-icon-refrigerator:before{content:\\\"\\\\e6b1\\\"}.el-icon-goblet-square-full:before{content:\\\"\\\\e6b2\\\"}.el-icon-goblet-square:before{content:\\\"\\\\e6b3\\\"}.el-icon-goblet-full:before{content:\\\"\\\\e6b4\\\"}.el-icon-goblet:before{content:\\\"\\\\e6b5\\\"}.el-icon-cold-drink:before{content:\\\"\\\\e6b6\\\"}.el-icon-coffee-cup:before{content:\\\"\\\\e6b8\\\"}.el-icon-water-cup:before{content:\\\"\\\\e6b9\\\"}.el-icon-hot-water:before{content:\\\"\\\\e6ba\\\"}.el-icon-ice-cream:before{content:\\\"\\\\e6bb\\\"}.el-icon-dessert:before{content:\\\"\\\\e6bc\\\"}.el-icon-sugar:before{content:\\\"\\\\e6bd\\\"}.el-icon-tableware:before{content:\\\"\\\\e6be\\\"}.el-icon-burger:before{content:\\\"\\\\e6bf\\\"}.el-icon-knife-fork:before{content:\\\"\\\\e6c1\\\"}.el-icon-fork-spoon:before{content:\\\"\\\\e6c2\\\"}.el-icon-chicken:before{content:\\\"\\\\e6c3\\\"}.el-icon-food:before{content:\\\"\\\\e6c4\\\"}.el-icon-dish-1:before{content:\\\"\\\\e6c5\\\"}.el-icon-dish:before{content:\\\"\\\\e6c6\\\"}.el-icon-moon-night:before{content:\\\"\\\\e6ee\\\"}.el-icon-moon:before{content:\\\"\\\\e6f0\\\"}.el-icon-cloudy-and-sunny:before{content:\\\"\\\\e6f1\\\"}.el-icon-partly-cloudy:before{content:\\\"\\\\e6f2\\\"}.el-icon-cloudy:before{content:\\\"\\\\e6f3\\\"}.el-icon-sunny:before{content:\\\"\\\\e6f6\\\"}.el-icon-sunset:before{content:\\\"\\\\e6f7\\\"}.el-icon-sunrise-1:before{content:\\\"\\\\e6f8\\\"}.el-icon-sunrise:before{content:\\\"\\\\e6f9\\\"}.el-icon-heavy-rain:before{content:\\\"\\\\e6fa\\\"}.el-icon-lightning:before{content:\\\"\\\\e6fb\\\"}.el-icon-light-rain:before{content:\\\"\\\\e6fc\\\"}.el-icon-wind-power:before{content:\\\"\\\\e6fd\\\"}.el-icon-baseball:before{content:\\\"\\\\e712\\\"}.el-icon-soccer:before{content:\\\"\\\\e713\\\"}.el-icon-football:before{content:\\\"\\\\e715\\\"}.el-icon-basketball:before{content:\\\"\\\\e716\\\"}.el-icon-ship:before{content:\\\"\\\\e73f\\\"}.el-icon-truck:before{content:\\\"\\\\e740\\\"}.el-icon-bicycle:before{content:\\\"\\\\e741\\\"}.el-icon-mobile-phone:before{content:\\\"\\\\e6d3\\\"}.el-icon-service:before{content:\\\"\\\\e6d4\\\"}.el-icon-key:before{content:\\\"\\\\e6e2\\\"}.el-icon-unlock:before{content:\\\"\\\\e6e4\\\"}.el-icon-lock:before{content:\\\"\\\\e6e5\\\"}.el-icon-watch:before{content:\\\"\\\\e6fe\\\"}.el-icon-watch-1:before{content:\\\"\\\\e6ff\\\"}.el-icon-timer:before{content:\\\"\\\\e702\\\"}.el-icon-alarm-clock:before{content:\\\"\\\\e703\\\"}.el-icon-map-location:before{content:\\\"\\\\e704\\\"}.el-icon-delete-location:before{content:\\\"\\\\e705\\\"}.el-icon-add-location:before{content:\\\"\\\\e706\\\"}.el-icon-location-information:before{content:\\\"\\\\e707\\\"}.el-icon-location-outline:before{content:\\\"\\\\e708\\\"}.el-icon-location:before{content:\\\"\\\\e79e\\\"}.el-icon-place:before{content:\\\"\\\\e709\\\"}.el-icon-discover:before{content:\\\"\\\\e70a\\\"}.el-icon-first-aid-kit:before{content:\\\"\\\\e70b\\\"}.el-icon-trophy-1:before{content:\\\"\\\\e70c\\\"}.el-icon-trophy:before{content:\\\"\\\\e70d\\\"}.el-icon-medal:before{content:\\\"\\\\e70e\\\"}.el-icon-medal-1:before{content:\\\"\\\\e70f\\\"}.el-icon-stopwatch:before{content:\\\"\\\\e710\\\"}.el-icon-mic:before{content:\\\"\\\\e711\\\"}.el-icon-copy-document:before{content:\\\"\\\\e718\\\"}.el-icon-full-screen:before{content:\\\"\\\\e719\\\"}.el-icon-switch-button:before{content:\\\"\\\\e71b\\\"}.el-icon-aim:before{content:\\\"\\\\e71c\\\"}.el-icon-crop:before{content:\\\"\\\\e71d\\\"}.el-icon-odometer:before{content:\\\"\\\\e71e\\\"}.el-icon-time:before{content:\\\"\\\\e71f\\\"}.el-icon-bangzhu:before{content:\\\"\\\\e724\\\"}.el-icon-close-notification:before{content:\\\"\\\\e726\\\"}.el-icon-microphone:before{content:\\\"\\\\e727\\\"}.el-icon-turn-off-microphone:before{content:\\\"\\\\e728\\\"}.el-icon-position:before{content:\\\"\\\\e729\\\"}.el-icon-postcard:before{content:\\\"\\\\e72a\\\"}.el-icon-message:before{content:\\\"\\\\e72b\\\"}.el-icon-chat-line-square:before{content:\\\"\\\\e72d\\\"}.el-icon-chat-dot-square:before{content:\\\"\\\\e72e\\\"}.el-icon-chat-dot-round:before{content:\\\"\\\\e72f\\\"}.el-icon-chat-square:before{content:\\\"\\\\e730\\\"}.el-icon-chat-line-round:before{content:\\\"\\\\e731\\\"}.el-icon-chat-round:before{content:\\\"\\\\e732\\\"}.el-icon-set-up:before{content:\\\"\\\\e733\\\"}.el-icon-turn-off:before{content:\\\"\\\\e734\\\"}.el-icon-open:before{content:\\\"\\\\e735\\\"}.el-icon-connection:before{content:\\\"\\\\e736\\\"}.el-icon-link:before{content:\\\"\\\\e737\\\"}.el-icon-cpu:before{content:\\\"\\\\e738\\\"}.el-icon-thumb:before{content:\\\"\\\\e739\\\"}.el-icon-female:before{content:\\\"\\\\e73a\\\"}.el-icon-male:before{content:\\\"\\\\e73b\\\"}.el-icon-guide:before{content:\\\"\\\\e73c\\\"}.el-icon-news:before{content:\\\"\\\\e73e\\\"}.el-icon-price-tag:before{content:\\\"\\\\e744\\\"}.el-icon-discount:before{content:\\\"\\\\e745\\\"}.el-icon-wallet:before{content:\\\"\\\\e747\\\"}.el-icon-coin:before{content:\\\"\\\\e748\\\"}.el-icon-money:before{content:\\\"\\\\e749\\\"}.el-icon-bank-card:before{content:\\\"\\\\e74a\\\"}.el-icon-box:before{content:\\\"\\\\e74b\\\"}.el-icon-present:before{content:\\\"\\\\e74c\\\"}.el-icon-sell:before{content:\\\"\\\\e6d5\\\"}.el-icon-sold-out:before{content:\\\"\\\\e6d6\\\"}.el-icon-shopping-bag-2:before{content:\\\"\\\\e74d\\\"}.el-icon-shopping-bag-1:before{content:\\\"\\\\e74e\\\"}.el-icon-shopping-cart-2:before{content:\\\"\\\\e74f\\\"}.el-icon-shopping-cart-1:before{content:\\\"\\\\e750\\\"}.el-icon-shopping-cart-full:before{content:\\\"\\\\e751\\\"}.el-icon-smoking:before{content:\\\"\\\\e752\\\"}.el-icon-no-smoking:before{content:\\\"\\\\e753\\\"}.el-icon-house:before{content:\\\"\\\\e754\\\"}.el-icon-table-lamp:before{content:\\\"\\\\e755\\\"}.el-icon-school:before{content:\\\"\\\\e756\\\"}.el-icon-office-building:before{content:\\\"\\\\e757\\\"}.el-icon-toilet-paper:before{content:\\\"\\\\e758\\\"}.el-icon-notebook-2:before{content:\\\"\\\\e759\\\"}.el-icon-notebook-1:before{content:\\\"\\\\e75a\\\"}.el-icon-files:before{content:\\\"\\\\e75b\\\"}.el-icon-collection:before{content:\\\"\\\\e75c\\\"}.el-icon-receiving:before{content:\\\"\\\\e75d\\\"}.el-icon-suitcase-1:before{content:\\\"\\\\e760\\\"}.el-icon-suitcase:before{content:\\\"\\\\e761\\\"}.el-icon-film:before{content:\\\"\\\\e763\\\"}.el-icon-collection-tag:before{content:\\\"\\\\e765\\\"}.el-icon-data-analysis:before{content:\\\"\\\\e766\\\"}.el-icon-pie-chart:before{content:\\\"\\\\e767\\\"}.el-icon-data-board:before{content:\\\"\\\\e768\\\"}.el-icon-data-line:before{content:\\\"\\\\e76d\\\"}.el-icon-reading:before{content:\\\"\\\\e769\\\"}.el-icon-magic-stick:before{content:\\\"\\\\e76a\\\"}.el-icon-coordinate:before{content:\\\"\\\\e76b\\\"}.el-icon-mouse:before{content:\\\"\\\\e76c\\\"}.el-icon-brush:before{content:\\\"\\\\e76e\\\"}.el-icon-headset:before{content:\\\"\\\\e76f\\\"}.el-icon-umbrella:before{content:\\\"\\\\e770\\\"}.el-icon-scissors:before{content:\\\"\\\\e771\\\"}.el-icon-mobile:before{content:\\\"\\\\e773\\\"}.el-icon-attract:before{content:\\\"\\\\e774\\\"}.el-icon-monitor:before{content:\\\"\\\\e775\\\"}.el-icon-search:before{content:\\\"\\\\e778\\\"}.el-icon-takeaway-box:before{content:\\\"\\\\e77a\\\"}.el-icon-paperclip:before{content:\\\"\\\\e77d\\\"}.el-icon-printer:before{content:\\\"\\\\e77e\\\"}.el-icon-document-add:before{content:\\\"\\\\e782\\\"}.el-icon-document:before{content:\\\"\\\\e785\\\"}.el-icon-document-checked:before{content:\\\"\\\\e786\\\"}.el-icon-document-copy:before{content:\\\"\\\\e787\\\"}.el-icon-document-delete:before{content:\\\"\\\\e788\\\"}.el-icon-document-remove:before{content:\\\"\\\\e789\\\"}.el-icon-tickets:before{content:\\\"\\\\e78b\\\"}.el-icon-folder-checked:before{content:\\\"\\\\e77f\\\"}.el-icon-folder-delete:before{content:\\\"\\\\e780\\\"}.el-icon-folder-remove:before{content:\\\"\\\\e781\\\"}.el-icon-folder-add:before{content:\\\"\\\\e783\\\"}.el-icon-folder-opened:before{content:\\\"\\\\e784\\\"}.el-icon-folder:before{content:\\\"\\\\e78a\\\"}.el-icon-edit-outline:before{content:\\\"\\\\e764\\\"}.el-icon-edit:before{content:\\\"\\\\e78c\\\"}.el-icon-date:before{content:\\\"\\\\e78e\\\"}.el-icon-c-scale-to-original:before{content:\\\"\\\\e7c6\\\"}.el-icon-view:before{content:\\\"\\\\e6ce\\\"}.el-icon-loading:before{content:\\\"\\\\e6cf\\\"}.el-icon-rank:before{content:\\\"\\\\e6d1\\\"}.el-icon-sort-down:before{content:\\\"\\\\e7c4\\\"}.el-icon-sort-up:before{content:\\\"\\\\e7c5\\\"}.el-icon-sort:before{content:\\\"\\\\e6d2\\\"}.el-icon-finished:before{content:\\\"\\\\e6cd\\\"}.el-icon-refresh-left:before{content:\\\"\\\\e6c7\\\"}.el-icon-refresh-right:before{content:\\\"\\\\e6c8\\\"}.el-icon-refresh:before{content:\\\"\\\\e6d0\\\"}.el-icon-video-play:before{content:\\\"\\\\e7c0\\\"}.el-icon-video-pause:before{content:\\\"\\\\e7c1\\\"}.el-icon-d-arrow-right:before{content:\\\"\\\\e6dc\\\"}.el-icon-d-arrow-left:before{content:\\\"\\\\e6dd\\\"}.el-icon-arrow-up:before{content:\\\"\\\\e6e1\\\"}.el-icon-arrow-down:before{content:\\\"\\\\e6df\\\"}.el-icon-arrow-right:before{content:\\\"\\\\e6e0\\\"}.el-icon-arrow-left:before{content:\\\"\\\\e6de\\\"}.el-icon-top-right:before{content:\\\"\\\\e6e7\\\"}.el-icon-top-left:before{content:\\\"\\\\e6e8\\\"}.el-icon-top:before{content:\\\"\\\\e6e6\\\"}.el-icon-bottom:before{content:\\\"\\\\e6eb\\\"}.el-icon-right:before{content:\\\"\\\\e6e9\\\"}.el-icon-back:before{content:\\\"\\\\e6ea\\\"}.el-icon-bottom-right:before{content:\\\"\\\\e6ec\\\"}.el-icon-bottom-left:before{content:\\\"\\\\e6ed\\\"}.el-icon-caret-top:before{content:\\\"\\\\e78f\\\"}.el-icon-caret-bottom:before{content:\\\"\\\\e790\\\"}.el-icon-caret-right:before{content:\\\"\\\\e791\\\"}.el-icon-caret-left:before{content:\\\"\\\\e792\\\"}.el-icon-d-caret:before{content:\\\"\\\\e79a\\\"}.el-icon-share:before{content:\\\"\\\\e793\\\"}.el-icon-menu:before{content:\\\"\\\\e798\\\"}.el-icon-s-grid:before{content:\\\"\\\\e7a6\\\"}.el-icon-s-check:before{content:\\\"\\\\e7a7\\\"}.el-icon-s-data:before{content:\\\"\\\\e7a8\\\"}.el-icon-s-opportunity:before{content:\\\"\\\\e7aa\\\"}.el-icon-s-custom:before{content:\\\"\\\\e7ab\\\"}.el-icon-s-claim:before{content:\\\"\\\\e7ad\\\"}.el-icon-s-finance:before{content:\\\"\\\\e7ae\\\"}.el-icon-s-comment:before{content:\\\"\\\\e7af\\\"}.el-icon-s-flag:before{content:\\\"\\\\e7b0\\\"}.el-icon-s-marketing:before{content:\\\"\\\\e7b1\\\"}.el-icon-s-shop:before{content:\\\"\\\\e7b4\\\"}.el-icon-s-open:before{content:\\\"\\\\e7b5\\\"}.el-icon-s-management:before{content:\\\"\\\\e7b6\\\"}.el-icon-s-ticket:before{content:\\\"\\\\e7b7\\\"}.el-icon-s-release:before{content:\\\"\\\\e7b8\\\"}.el-icon-s-home:before{content:\\\"\\\\e7b9\\\"}.el-icon-s-promotion:before{content:\\\"\\\\e7ba\\\"}.el-icon-s-operation:before{content:\\\"\\\\e7bb\\\"}.el-icon-s-unfold:before{content:\\\"\\\\e7bc\\\"}.el-icon-s-fold:before{content:\\\"\\\\e7a9\\\"}.el-icon-s-platform:before{content:\\\"\\\\e7bd\\\"}.el-icon-s-order:before{content:\\\"\\\\e7be\\\"}.el-icon-s-cooperation:before{content:\\\"\\\\e7bf\\\"}.el-icon-bell:before{content:\\\"\\\\e725\\\"}.el-icon-message-solid:before{content:\\\"\\\\e799\\\"}.el-icon-video-camera:before{content:\\\"\\\\e772\\\"}.el-icon-video-camera-solid:before{content:\\\"\\\\e796\\\"}.el-icon-camera:before{content:\\\"\\\\e779\\\"}.el-icon-camera-solid:before{content:\\\"\\\\e79b\\\"}.el-icon-download:before{content:\\\"\\\\e77c\\\"}.el-icon-upload2:before{content:\\\"\\\\e77b\\\"}.el-icon-upload:before{content:\\\"\\\\e7c3\\\"}.el-icon-picture-outline-round:before{content:\\\"\\\\e75f\\\"}.el-icon-picture-outline:before{content:\\\"\\\\e75e\\\"}.el-icon-picture:before{content:\\\"\\\\e79f\\\"}.el-icon-close:before{content:\\\"\\\\e6db\\\"}.el-icon-check:before{content:\\\"\\\\e6da\\\"}.el-icon-plus:before{content:\\\"\\\\e6d9\\\"}.el-icon-minus:before{content:\\\"\\\\e6d8\\\"}.el-icon-help:before{content:\\\"\\\\e73d\\\"}.el-icon-s-help:before{content:\\\"\\\\e7b3\\\"}.el-icon-circle-close:before{content:\\\"\\\\e78d\\\"}.el-icon-circle-check:before{content:\\\"\\\\e720\\\"}.el-icon-circle-plus-outline:before{content:\\\"\\\\e723\\\"}.el-icon-remove-outline:before{content:\\\"\\\\e722\\\"}.el-icon-zoom-out:before{content:\\\"\\\\e776\\\"}.el-icon-zoom-in:before{content:\\\"\\\\e777\\\"}.el-icon-error:before{content:\\\"\\\\e79d\\\"}.el-icon-success:before{content:\\\"\\\\e79c\\\"}.el-icon-circle-plus:before{content:\\\"\\\\e7a0\\\"}.el-icon-remove:before{content:\\\"\\\\e7a2\\\"}.el-icon-info:before{content:\\\"\\\\e7a1\\\"}.el-icon-question:before{content:\\\"\\\\e7a4\\\"}.el-icon-warning-outline:before{content:\\\"\\\\e6c9\\\"}.el-icon-warning:before{content:\\\"\\\\e7a3\\\"}.el-icon-goods:before{content:\\\"\\\\e7c2\\\"}.el-icon-s-goods:before{content:\\\"\\\\e7b2\\\"}.el-icon-star-off:before{content:\\\"\\\\e717\\\"}.el-icon-star-on:before{content:\\\"\\\\e797\\\"}.el-icon-more-outline:before{content:\\\"\\\\e6cc\\\"}.el-icon-more:before{content:\\\"\\\\e794\\\"}.el-icon-phone-outline:before{content:\\\"\\\\e6cb\\\"}.el-icon-phone:before{content:\\\"\\\\e795\\\"}.el-icon-user:before{content:\\\"\\\\e6e3\\\"}.el-icon-user-solid:before{content:\\\"\\\\e7a5\\\"}.el-icon-setting:before{content:\\\"\\\\e6ca\\\"}.el-icon-s-tools:before{content:\\\"\\\\e7ac\\\"}.el-icon-delete:before{content:\\\"\\\\e6d7\\\"}.el-icon-delete-solid:before{content:\\\"\\\\e7c9\\\"}.el-icon-eleme:before{content:\\\"\\\\e7c7\\\"}.el-icon-platform-eleme:before{content:\\\"\\\\e7ca\\\"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:\\\"\\\"}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409EFF}.el-pagination button:disabled{color:#C0C4CC;background-color:#FFF;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #FFF;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#C0C4CC;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .arrow.disabled{visibility:hidden}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409EFF}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-dialog,.el-pager li{-webkit-box-sizing:border-box}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#C0C4CC}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409EFF}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409EFF;color:#FFF}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;background:#FFF;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#C0C4CC}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409EFF}.el-pager li.active{color:#409EFF;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;background:#FFF;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #E4E7ED;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#FFF}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#F5F7FA}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:\\\"\\\";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#FFF}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:not(.is-disabled)::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown [disabled]{cursor:not-allowed;color:#bbb}.el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item,.el-menu-item{font-size:14px;padding:0 20px;cursor:pointer}.el-dropdown-menu__item{list-style:none;line-height:36px;margin:0;color:#606266;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #EBEEF5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#FFF}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#FFF}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:\\\"\\\"}.el-breadcrumb__item:last-child .el-breadcrumb__separator,.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409EFF;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--collapse .el-submenu,.el-menu-item{position:relative}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#FFF;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409EFF;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;list-style:none}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-submenu{min-width:200px}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #E4E7ED;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{color:#303133;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-radio-button__inner,.el-submenu__title{-webkit-box-sizing:border-box;position:relative;white-space:nowrap}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409EFF}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409EFF}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{background:#FFF;border:1px solid #DCDFE6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409EFF}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #409EFF;box-shadow:-1px 0 0 0 #409EFF}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#F2F6FC}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-picker-panel,.el-popover,.el-select-dropdown,.el-table-filter,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409EFF}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #DCDFE6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#DCDFE6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-input__prefix,.el-input__suffix{-webkit-transition:all .3s;color:#C0C4CC}.el-switch__core:after{content:\\\"\\\";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#409EFF;background-color:#409EFF}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #E4E7ED;border-radius:4px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409EFF;background-color:#FFF}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#F5F7FA}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:\\\"\\\\e6da\\\";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#C0C4CC}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409EFF}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#E4E7ED}.el-range-editor.is-active,.el-range-editor.is-active:hover,.el-select .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#C0C4CC;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#C0C4CC;top:0;color:#FFF;-ms-flex-negative:0;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#FFF}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th.el-table__cell{background:#F5F7FA}.el-table .el-table__cell{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table--medium .el-table__cell{padding:10px 0}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:8px 0}.el-table--mini{font-size:12px}.el-table--mini .el-table__cell{padding:6px 0}.el-table tr{background-color:#FFF}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:1px solid #EBEEF5}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#FFF}.el-table th.el-table__cell>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th.el-table__cell>.cell.highlight{color:#409EFF}.el-table th.el-table__cell.required>div::before{display:inline-block;content:\\\"\\\";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td,.el-table .cell,.el-table-filter{-webkit-box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #EBEEF5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#EBEEF5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border .el-table__cell,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #EBEEF5}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:1px solid #EBEEF5;border-bottom-width:1px}.el-table--border th.el-table__cell,.el-table__fixed-right-patch{border-bottom:1px solid #EBEEF5}.el-table--hidden{visibility:hidden}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#EBEEF5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#FFF}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td.el-table__cell{border-top:1px solid #EBEEF5;background-color:#F5F7FA;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td.el-table__cell{border-top:1px solid #EBEEF5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:#F5F7FA;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #EBEEF5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#C0C4CC;top:5px}.el-table .sort-caret.descending{border-top-color:#C0C4CC;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409EFF}.el-table .descending .sort-caret.descending{border-top-color:#409EFF}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell,.el-table--striped .el-table__body tr.el-table__row--striped.selection-row td.el-table__cell{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.selection-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row.selection-row>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:#F5F7FA}.el-table__body tr.current-row>td.el-table__cell,.el-table__body tr.selection-row>td.el-table__cell{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #EBEEF5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td.el-table__cell{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:#F5F7FA}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #EBEEF5;border-radius:2px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409EFF;color:#FFF}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #EBEEF5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#F2F6FC}.el-table-filter__bottom button:hover{color:#409EFF}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#C0C4CC}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409EFF;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#FFF}.el-date-table td.available:hover{color:#409EFF}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#409EFF}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#FFF}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409EFF}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#F5F7FA;opacity:1;cursor:not-allowed;color:#C0C4CC}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#F2F6FC;border-radius:15px}.el-date-table td.selected div:hover{background-color:#F2F6FC}.el-date-table td.selected span{background-color:#409EFF;color:#FFF;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #EBEEF5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#409EFF;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.el-month-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-month-table td.disabled .cell:hover{color:#C0C4CC}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409EFF}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#409EFF}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409EFF}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409EFF;font-weight:700}.el-year-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-year-table td.disabled .cell:hover{color:#C0C4CC}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409EFF}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#FFF}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #EBEEF5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409EFF}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409EFF;font-weight:700}.time-select-item.disabled{color:#E4E7ED;cursor:not-allowed}.time-select-item:hover{background-color:#F5F7FA;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#C0C4CC;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input:-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::placeholder{color:#C0C4CC}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#C0C4CC;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#E4E7ED}.el-range-editor.is-disabled input{background-color:#F5F7FA;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::placeholder{color:#C0C4CC}.el-range-editor.is-disabled .el-range-separator{color:#C0C4CC}.el-picker-panel{color:#606266;border:1px solid #E4E7ED;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#FFF;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:\\\"\\\";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#FFF;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409EFF}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409EFF}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409EFF}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#FFF;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#FFF;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409EFF}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#F5F7FA;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#C0C4CC;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #E4E7ED;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:\\\"\\\";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #E4E7ED;border-bottom:1px solid #E4E7ED}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409EFF}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #E4E7ED}.el-popover{position:absolute;background:#FFF;min-width:150px;border-radius:4px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover,.el-cascader__dropdown,.el-color-picker__panel,.el-message-box,.el-notification{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#FFF;border-radius:4px;border:1px solid #EBEEF5;font-size:18px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:\\\"\\\";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#F56C6C}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409EFF}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67C23A}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#E6A23C}.el-message-box__status.el-icon-error{color:#F56C6C}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#F56C6C;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:\\\"\\\"}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:\\\"\\\"}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:\\\"\\\"}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409EFF;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#409EFF}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:\\\"\\\";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#E4E7ED;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409EFF inset;box-shadow:0 0 2px 2px #409EFF inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs--card>.el-tabs__header .el-tabs__active-bar,.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs__item .el-icon-close:hover{background-color:#C0C4CC;color:#FFF}.el-tabs__item.is-active{color:#409EFF}.el-tabs__item:hover{color:#409EFF;cursor:pointer}.el-tabs__item.is-disabled{color:#C0C4CC;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #E4E7ED}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #E4E7ED;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #E4E7ED;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#FFF}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#FFF;border:1px solid #DCDFE6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#F5F7FA;border-bottom:1px solid #E4E7ED;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-col-offset-0,.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409EFF;background-color:#FFF;border-right-color:#DCDFE6;border-left-color:#DCDFE6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409EFF}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-cascader-menu:last-child .el-cascader-node,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #DCDFE6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-button-group>.el-button:not(:last-child),.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #E4E7ED;border-bottom:none;border-top:1px solid #E4E7ED;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #E4E7ED;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #E4E7ED;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #E4E7ED;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #E4E7ED}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #E4E7ED;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #E4E7ED;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #E4E7ED;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#FFF;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409EFF}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#F5F7FA}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409EFF;color:#fff}.el-tree-node__content:hover,.el-upload-list__item:hover{background-color:#F5F7FA}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#C0C4CC;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#C0C4CC}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active,.el-upload iframe{opacity:0}.el-carousel__arrow--right,.el-notification.right{right:16px}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#F5F7FA;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409EFF}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409EFF}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #DCDFE6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #DCDFE6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#E4E7ED;color:#E4E7ED}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#E4E7ED;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #DCDFE6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #DCDFE6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:\\\" \\\";border-width:5px}.el-button-group::after,.el-button-group::before,.el-color-dropdown__main-wrapper::after,.el-link.is-underline:hover:after,.el-page-header__left::after,.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-transfer-panel .el-transfer-panel__footer::after,.el-upload-cover::after,.el-upload-list--picture-card .el-upload-list__item-actions::after{content:\\\"\\\"}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#FFF}.el-tooltip__popper.is-light{background:#FFF;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#FFF}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#FFF}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#FFF}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#FFF}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{display:inline-block;vertical-align:middle}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#E4E7ED;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button{border-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409EFF;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.el-image-viewer__btn,.el-slider__button,.el-step__icon-inner{-moz-user-select:none;-ms-user-select:none}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409EFF;background-color:#FFF;border-radius:50%;-webkit-transition:.2s;transition:.2s;-webkit-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #DCDFE6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#C0C4CC}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409EFF}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-12,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row,.el-upload-dragger,.el-upload-list__item{position:relative}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-col-0{width:0%}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409EFF;color:#409EFF}.el-upload:focus .el-upload-dragger{border-color:#409EFF}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#C0C4CC;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #DCDFE6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409EFF;font-style:normal}.el-upload-dragger:hover{border-color:#409EFF}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409EFF}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67C23A}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409EFF}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409EFF;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409EFF}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#FFF}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#FFF;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#FFF;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#FFF;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67C23A}.el-progress.is-success .el-progress__text{color:#67C23A}.el-progress.is-warning .el-progress-bar__inner{background-color:#E6A23C}.el-badge__content,.el-progress.is-exception .el-progress-bar__inner{background-color:#F56C6C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.el-progress.is-exception .el-progress__text{color:#F56C6C}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__header,.el-message,.el-step__icon{-webkit-box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#EBEEF5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409EFF;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-progress-bar__inner::after{display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#FFF;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C}.el-card{border-radius:4px;border:1px solid #EBEEF5;background-color:#FFF;overflow:hidden;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;box-sizing:border-box}.el-card__body,.el-main{padding:20px}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C0C4CC;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#F5F7FA}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#C0C4CC;border-color:#C0C4CC}.el-step__head.is-success{color:#67C23A;border-color:#67C23A}.el-step__head.is-error{color:#F56C6C;border-color:#F56C6C}.el-step__head.is-finish{color:#409EFF;border-color:#409EFF}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:#FFF;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step.is-horizontal,.el-step__icon-inner{display:inline-block}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{-webkit-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#C0C4CC}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#C0C4CC}.el-step__title.is-success{color:#67C23A}.el-step__title.is-error{color:#F56C6C}.el-step__title.is-finish{color:#409EFF}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#C0C4CC}.el-step__description.is-success{color:#67C23A}.el-step__description.is-error{color:#F56C6C}.el-step__description.is-finish{color:#409EFF}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#C0C4CC}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;position:absolute;top:0;left:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;-webkit-transition:.2s;transition:.2s}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #EBEEF5;border-bottom:1px solid #EBEEF5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409EFF}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__search-input,.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-cascader,.el-tag{display:inline-block}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:\\\" \\\";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409EFF;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409EFF}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#409eff;border-color:#409eff;color:#fff}.el-tag--dark.is-hit{border-color:#409EFF}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409EFF}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#C0C4CC}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#409EFF;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#C0C4CC}.el-cascader__search-input:-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409EFF;box-shadow:0 0 3px 2px #409EFF}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__icon,.el-input,.el-textarea{display:inline-block;width:100%}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{font-size:12px;color:#999;position:absolute;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{position:absolute;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center;font-size:12px}.el-input__prefix,.el-input__suffix{position:absolute;top:0;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-input__inner,.el-textarea__inner,.el-transfer-panel{-webkit-box-sizing:border-box}.el-textarea{position:relative;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#FFF;background-image:none;border:1px solid #DCDFE6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea__inner:hover{border-color:#C0C4CC}.el-textarea__inner:focus{outline:0;border-color:#409EFF}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#C0C4CC;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input,.el-input__inner{font-size:inherit}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#FFF;background-image:none;border-radius:4px;border:1px solid #DCDFE6;box-sizing:border-box;color:#606266;display:inline-block;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input__inner::placeholder{color:#C0C4CC}.el-input__inner:hover{border-color:#C0C4CC}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409EFF;outline:0}.el-input__suffix{height:100%;right:5px;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{height:100%;left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-image-viewer__btn,.el-image__preview,.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#F5F7FA;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #DCDFE6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#FFF;background-color:#409EFF;font-size:0}.el-button-group>.el-button+.el-button,.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-divider__text,.el-image__error,.el-link,.el-timeline,.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #DCDFE6;background-color:#F5F7FA;color:#C0C4CC}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer-panel{border:1px solid #EBEEF5;border-radius:4px;overflow:hidden;background:#FFF;display:inline-block;vertical-align:middle;width:200px;max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409EFF}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#F5F7FA;margin:0;padding-left:15px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#FFF;margin:0;padding:0;border-top:1px solid #EBEEF5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer,.el-empty,.el-result{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409EFF}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0;font-weight:500}.el-link.is-underline:hover:after{position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409EFF}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409EFF}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409EFF}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#409EFF}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;font-weight:500;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#C0C4CC;vertical-align:middle}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;user-select:none}.el-button,.el-checkbox,.el-checkbox-button__inner,.el-empty__image img,.el-radio{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;top:50%}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button,.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#FFF;border-color:#409EFF;color:#409EFF}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#FFF;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#FFF;border-color:#EBEEF5;color:#C0C4CC}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#FFF;background-color:#409EFF;border-color:#409EFF}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#FFF}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#FFF;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409EFF;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409EFF;border-color:#409EFF;color:#FFF}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#FFF;background-color:#67C23A;border-color:#67C23A}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#FFF}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#FFF}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#FFF;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67C23A;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67C23A;border-color:#67C23A;color:#FFF}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#FFF;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#FFF;background-color:#E6A23C;border-color:#E6A23C}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#FFF}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#FFF}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#FFF;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#E6A23C;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#E6A23C;border-color:#E6A23C;color:#FFF}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#FFF;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#FFF;background-color:#F56C6C;border-color:#F56C6C}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#FFF}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#FFF}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#FFF;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#F56C6C;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#F56C6C;border-color:#F56C6C;color:#FFF}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#FFF;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#FFF;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#FFF}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#FFF}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#FFF;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#FFF}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#FFF;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini{font-size:12px;border-radius:3px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#409EFF;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group .el-button--danger:last-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:last-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:last-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:last-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:last-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child),.el-button-group>.el-dropdown>.el-button{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:first-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:first-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:first-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:first-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-right-color:rgba(255,255,255,.5)}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#409EFF}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409EFF}.el-checkbox.is-bordered.is-disabled{border-color:#EBEEF5;cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#DCDFE6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#C0C4CC}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#C0C4CC}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#C0C4CC;border-color:#C0C4CC}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409EFF;border-color:#409EFF}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#C0C4CC;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409EFF}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409EFF}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #DCDFE6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#FFF;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409EFF}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:\\\"\\\";border:1px solid #FFF;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409EFF}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409EFF}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#EBEEF5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409EFF}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-avatar,.el-cascader-panel,.el-radio,.el-radio--medium.is-bordered .el-radio__label,.el-radio__label{font-size:14px}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-cascader-menu,.el-cascader-menu__list,.el-radio__inner{-webkit-box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:#409EFF}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#EBEEF5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#F5F7FA;border-color:#E4E7ED}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#F5F7FA}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#C0C4CC}.el-radio__input.is-disabled+span.el-radio__label{color:#C0C4CC;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409EFF;background:#409EFF}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409EFF}.el-radio__input.is-focus .el-radio__inner{border-color:#409EFF}.el-radio__inner{border:1px solid #DCDFE6;border-radius:100%;width:14px;height:14px;background-color:#FFF;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#409EFF}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:\\\"\\\";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-radio__label{padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409EFF;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px}.el-drawer,.el-drawer__body>*{-webkit-box-sizing:border-box}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-empty__image img,.el-empty__image svg{vertical-align:top;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);overflow:hidden;outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb{width:100%;left:0;right:0}.el-drawer__container{position:relative;left:0;right:0;top:0;bottom:0;height:100%;width:100%}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-statistic{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;color:#000;font-variant:tabular-nums;list-style:none;-webkit-font-feature-settings:\\\"tnum\\\";font-feature-settings:\\\"tnum\\\";text-align:center}.el-statistic .head{margin-bottom:4px;color:#606266;font-size:13px}.el-statistic .con{font-family:Sans-serif;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#303133}.el-statistic .con .number{font-size:20px;padding:0 4px}.el-statistic .con span{display:inline-block;margin:0;line-height:100%}.el-popconfirm__main,.el-skeleton__image{display:-ms-flexbox;-webkit-box-align:center;display:-webkit-box}.el-popconfirm__main{display:flex;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}@-webkit-keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton.is-animated .el-skeleton__item{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#f2f2f2),color-stop(37%,#e6e6e6),color-stop(63%,#f2f2f2));background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;-webkit-animation:el-skeleton-loading 1.4s ease infinite;animation:el-skeleton-loading 1.4s ease infinite}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:flex;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#DCDDE0;width:22%;height:22%}.el-empty{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img{user-select:none;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{fill:#DCDDE0}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom,.el-result__title{margin-top:20px}.el-descriptions{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:14px;color:#303133}.el-descriptions__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.el-descriptions__title{font-size:16px;font-weight:700}.el-descriptions--mini,.el-descriptions--small{font-size:12px}.el-descriptions__body{color:#606266;background-color:#FFF}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%;table-layout:fixed}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:left;font-weight:400;line-height:1.5}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right{text-align:right}.el-descriptions .is-bordered{table-layout:auto}.el-descriptions .is-bordered .el-descriptions-item__cell{border:1px solid #EBEEF5;padding:12px 10px}.el-descriptions :not(.is-bordered) .el-descriptions-item__cell{padding-bottom:12px}.el-descriptions--medium.is-bordered .el-descriptions-item__cell{padding:10px}.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:10px}.el-descriptions--small.is-bordered .el-descriptions-item__cell{padding:8px 10px}.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:8px}.el-descriptions--mini.is-bordered .el-descriptions-item__cell{padding:6px 10px}.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:6px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:-webkit-box;display:-ms-flexbox;display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-descriptions-item__label.has-colon::after{content:':';position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-result{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 30px}.el-result__icon svg{width:64px;height:64px}.el-result__title p{margin:0;font-size:20px;color:#303133;line-height:1.3}.el-result__subtitle{margin-top:10px}.el-result__subtitle p{margin:0;font-size:14px;color:#606266;line-height:1.3}.el-result__extra{margin-top:30px}.el-result .icon-success{fill:#67C23A}.el-result .icon-error{fill:#F56C6C}.el-result .icon-info{fill:#909399}.el-result .icon-warning{fill:#E6A23C}\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC05LnVzZVsxXSEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC05LnVzZVsyXSEuL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9pbmRleC5jc3MiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUMrRztBQUM3QjtBQUNPO0FBQ2xCO0FBQ0Q7QUFDdEUsOEJBQThCLHNFQUEyQixDQUFDLDJGQUFxQztBQUMvRix5Q0FBeUMseUVBQStCLENBQUMsa0VBQTZCO0FBQ3RHLHlDQUF5Qyx5RUFBK0IsQ0FBQyxpRUFBNkI7QUFDdEc7QUFDQSw2REFBNkQsV0FBVywwQkFBMEIsMElBQTBJLGdCQUFnQixzQkFBc0Isa0JBQWtCLHlDQUF5QyxvQ0FBb0MsV0FBVyxrQkFBa0IsZ0JBQWdCLG9CQUFvQixvQkFBb0IsY0FBYyx3QkFBd0IscUJBQXFCLG1DQUFtQyxrQ0FBa0MsZ0NBQWdDLG1CQUFtQixpQ0FBaUMsbUJBQW1CLHlCQUF5QixtQkFBbUIsOEJBQThCLG1CQUFtQix5QkFBeUIsbUJBQW1CLDBCQUEwQixtQkFBbUIsd0JBQXdCLG1CQUFtQix1QkFBdUIsbUJBQW1CLHVCQUF1QixtQkFBbUIscUJBQXFCLG1CQUFtQixzQkFBc0IsbUJBQW1CLHVCQUF1QixtQkFBbUIsMkJBQTJCLG1CQUFtQixzQkFBc0IsbUJBQW1CLDZCQUE2QixtQkFBbUIsbUNBQW1DLG1CQUFtQiw4QkFBOEIsbUJBQW1CLDRCQUE0QixtQkFBbUIsdUJBQXVCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLDJCQUEyQixtQkFBbUIsMEJBQTBCLG1CQUFtQiwwQkFBMEIsbUJBQW1CLDBCQUEwQixtQkFBbUIsd0JBQXdCLG1CQUFtQixzQkFBc0IsbUJBQW1CLDBCQUEwQixtQkFBbUIsdUJBQXVCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLDJCQUEyQixtQkFBbUIsd0JBQXdCLG1CQUFtQixxQkFBcUIsbUJBQW1CLHVCQUF1QixtQkFBbUIscUJBQXFCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHFCQUFxQixtQkFBbUIsaUNBQWlDLG1CQUFtQiw4QkFBOEIsbUJBQW1CLHVCQUF1QixtQkFBbUIsc0JBQXNCLG1CQUFtQix1QkFBdUIsbUJBQW1CLDBCQUEwQixtQkFBbUIsd0JBQXdCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLDBCQUEwQixtQkFBbUIsMkJBQTJCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHlCQUF5QixtQkFBbUIsdUJBQXVCLG1CQUFtQix5QkFBeUIsbUJBQW1CLDJCQUEyQixtQkFBbUIscUJBQXFCLG1CQUFtQixzQkFBc0IsbUJBQW1CLHdCQUF3QixtQkFBbUIsNkJBQTZCLG1CQUFtQix3QkFBd0IsbUJBQW1CLG9CQUFvQixtQkFBbUIsdUJBQXVCLG1CQUFtQixxQkFBcUIsbUJBQW1CLHNCQUFzQixtQkFBbUIsd0JBQXdCLG1CQUFtQixzQkFBc0IsbUJBQW1CLDRCQUE0QixtQkFBbUIsNkJBQTZCLG1CQUFtQixnQ0FBZ0MsbUJBQW1CLDZCQUE2QixtQkFBbUIscUNBQXFDLG1CQUFtQixpQ0FBaUMsbUJBQW1CLHlCQUF5QixtQkFBbUIsc0JBQXNCLG1CQUFtQix5QkFBeUIsbUJBQW1CLDhCQUE4QixtQkFBbUIseUJBQXlCLG1CQUFtQix1QkFBdUIsbUJBQW1CLHNCQUFzQixtQkFBbUIsd0JBQXdCLG1CQUFtQiwwQkFBMEIsbUJBQW1CLG9CQUFvQixtQkFBbUIsOEJBQThCLG1CQUFtQiw0QkFBNEIsbUJBQW1CLDhCQUE4QixtQkFBbUIsb0JBQW9CLG1CQUFtQixxQkFBcUIsbUJBQW1CLHlCQUF5QixtQkFBbUIscUJBQXFCLG1CQUFtQix3QkFBd0IsbUJBQW1CLG1DQUFtQyxtQkFBbUIsMkJBQTJCLG1CQUFtQixvQ0FBb0MsbUJBQW1CLHlCQUF5QixtQkFBbUIseUJBQXlCLG1CQUFtQix3QkFBd0IsbUJBQW1CLGlDQUFpQyxtQkFBbUIsZ0NBQWdDLG1CQUFtQiwrQkFBK0IsbUJBQW1CLDRCQUE0QixtQkFBbUIsZ0NBQWdDLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHVCQUF1QixtQkFBbUIseUJBQXlCLG1CQUFtQixxQkFBcUIsbUJBQW1CLDJCQUEyQixtQkFBbUIscUJBQXFCLG1CQUFtQixvQkFBb0IsbUJBQW1CLHNCQUFzQixtQkFBbUIsdUJBQXVCLG1CQUFtQixxQkFBcUIsbUJBQW1CLHNCQUFzQixtQkFBbUIscUJBQXFCLG1CQUFtQiwwQkFBMEIsbUJBQW1CLHlCQUF5QixtQkFBbUIsdUJBQXVCLG1CQUFtQixxQkFBcUIsbUJBQW1CLHNCQUFzQixtQkFBbUIsMEJBQTBCLG1CQUFtQixvQkFBb0IsbUJBQW1CLHdCQUF3QixtQkFBbUIscUJBQXFCLG1CQUFtQix5QkFBeUIsbUJBQW1CLCtCQUErQixtQkFBbUIsK0JBQStCLG1CQUFtQixnQ0FBZ0MsbUJBQW1CLGdDQUFnQyxtQkFBbUIsbUNBQW1DLG1CQUFtQix3QkFBd0IsbUJBQW1CLDJCQUEyQixtQkFBbUIsc0JBQXNCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHVCQUF1QixtQkFBbUIsZ0NBQWdDLG1CQUFtQiw2QkFBNkIsbUJBQW1CLDJCQUEyQixtQkFBbUIsMkJBQTJCLG1CQUFtQixzQkFBc0IsbUJBQW1CLDJCQUEyQixtQkFBbUIsMEJBQTBCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHlCQUF5QixtQkFBbUIscUJBQXFCLG1CQUFtQiwrQkFBK0IsbUJBQW1CLDhCQUE4QixtQkFBbUIsMEJBQTBCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLDBCQUEwQixtQkFBbUIsd0JBQXdCLG1CQUFtQiw0QkFBNEIsbUJBQW1CLDJCQUEyQixtQkFBbUIsc0JBQXNCLG1CQUFtQixzQkFBc0IsbUJBQW1CLHdCQUF3QixtQkFBbUIseUJBQXlCLG1CQUFtQix5QkFBeUIsbUJBQW1CLHVCQUF1QixtQkFBbUIsd0JBQXdCLG1CQUFtQix3QkFBd0IsbUJBQW1CLHVCQUF1QixtQkFBbUIsNkJBQTZCLG1CQUFtQiwwQkFBMEIsbUJBQW1CLHdCQUF3QixtQkFBbUIsNkJBQTZCLG1CQUFtQix5QkFBeUIsbUJBQW1CLGlDQUFpQyxtQkFBbUIsOEJBQThCLG1CQUFtQixnQ0FBZ0MsbUJBQW1CLGdDQUFnQyxtQkFBbUIsd0JBQXdCLG1CQUFtQiwrQkFBK0IsbUJBQW1CLDhCQUE4QixtQkFBbUIsOEJBQThCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLDhCQUE4QixtQkFBbUIsdUJBQXVCLG1CQUFtQiw2QkFBNkIsbUJBQW1CLHFCQUFxQixtQkFBbUIscUJBQXFCLG1CQUFtQixvQ0FBb0MsbUJBQW1CLHFCQUFxQixtQkFBbUIsd0JBQXdCLG1CQUFtQixxQkFBcUIsbUJBQW1CLDBCQUEwQixtQkFBbUIsd0JBQXdCLG1CQUFtQixxQkFBcUIsbUJBQW1CLHlCQUF5QixtQkFBbUIsNkJBQTZCLG1CQUFtQiw4QkFBOEIsbUJBQW1CLHdCQUF3QixtQkFBbUIsMkJBQTJCLG1CQUFtQiw0QkFBNEIsbUJBQW1CLDhCQUE4QixtQkFBbUIsNkJBQTZCLG1CQUFtQix5QkFBeUIsbUJBQW1CLDJCQUEyQixtQkFBbUIsNEJBQTRCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLDBCQUEwQixtQkFBbUIseUJBQXlCLG1CQUFtQixvQkFBb0IsbUJBQW1CLHVCQUF1QixtQkFBbUIsc0JBQXNCLG1CQUFtQixxQkFBcUIsbUJBQW1CLDZCQUE2QixtQkFBbUIsNEJBQTRCLG1CQUFtQiwwQkFBMEIsbUJBQW1CLDZCQUE2QixtQkFBbUIsNEJBQTRCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHdCQUF3QixtQkFBbUIsc0JBQXNCLG1CQUFtQixxQkFBcUIsbUJBQW1CLHVCQUF1QixtQkFBbUIsd0JBQXdCLG1CQUFtQix1QkFBdUIsbUJBQW1CLDhCQUE4QixtQkFBbUIseUJBQXlCLG1CQUFtQix3QkFBd0IsbUJBQW1CLDBCQUEwQixtQkFBbUIsMEJBQTBCLG1CQUFtQix1QkFBdUIsbUJBQW1CLDRCQUE0QixtQkFBbUIsdUJBQXVCLG1CQUFtQix1QkFBdUIsbUJBQW1CLDZCQUE2QixtQkFBbUIseUJBQXlCLG1CQUFtQiwwQkFBMEIsbUJBQW1CLHVCQUF1QixtQkFBbUIsNEJBQTRCLG1CQUFtQiw0QkFBNEIsbUJBQW1CLHlCQUF5QixtQkFBbUIsdUJBQXVCLG1CQUFtQiwyQkFBMkIsbUJBQW1CLHdCQUF3QixtQkFBbUIsOEJBQThCLG1CQUFtQixxQkFBcUIsbUJBQW1CLDhCQUE4QixtQkFBbUIsNkJBQTZCLG1CQUFtQixtQ0FBbUMsbUJBQW1CLHVCQUF1QixtQkFBbUIsNkJBQTZCLG1CQUFtQix5QkFBeUIsbUJBQW1CLHdCQUF3QixtQkFBbUIsdUJBQXVCLG1CQUFtQixzQ0FBc0MsbUJBQW1CLGdDQUFnQyxtQkFBbUIsd0JBQXdCLG1CQUFtQixzQkFBc0IsbUJBQW1CLHNCQUFzQixtQkFBbUIscUJBQXFCLG1CQUFtQixzQkFBc0IsbUJBQW1CLHFCQUFxQixtQkFBbUIsdUJBQXVCLG1CQUFtQiw2QkFBNkIsbUJBQW1CLDZCQUE2QixtQkFBbUIsb0NBQW9DLG1CQUFtQiwrQkFBK0IsbUJBQW1CLHlCQUF5QixtQkFBbUIsd0JBQXdCLG1CQUFtQixzQkFBc0IsbUJBQW1CLHdCQUF3QixtQkFBbUIsNEJBQTRCLG1CQUFtQix1QkFBdUIsbUJBQW1CLHFCQUFxQixtQkFBbUIseUJBQXlCLG1CQUFtQixnQ0FBZ0MsbUJBQW1CLHdCQUF3QixtQkFBbUIsc0JBQXNCLG1CQUFtQix3QkFBd0IsbUJBQW1CLHlCQUF5QixtQkFBbUIsd0JBQXdCLG1CQUFtQiw2QkFBNkIsbUJBQW1CLHFCQUFxQixtQkFBbUIsOEJBQThCLG1CQUFtQixzQkFBc0IsbUJBQW1CLHFCQUFxQixtQkFBbUIsMkJBQTJCLG1CQUFtQix3QkFBd0IsbUJBQW1CLHdCQUF3QixtQkFBbUIsdUJBQXVCLG1CQUFtQiw2QkFBNkIsbUJBQW1CLHNCQUFzQixtQkFBbUIsK0JBQStCLG1CQUFtQixpQkFBaUIsc0NBQXNDLGdCQUFnQixnQkFBZ0IsZUFBZSxpQkFBaUIsb0JBQW9CLEdBQUcscUJBQXFCLEtBQUssMkJBQTJCLGVBQWUsbUJBQW1CLGdCQUFnQixjQUFjLGdCQUFnQiw2Q0FBNkMsY0FBYyxhQUFhLHNCQUFzQixXQUFXLCtEQUErRCxxQkFBcUIsZUFBZSxpQkFBaUIsWUFBWSxpQkFBaUIsbUJBQW1CLHNCQUFzQixnQ0FBZ0Msa0JBQWtCLDBCQUEwQixtQkFBbUIsaUNBQWlDLFFBQVEsb0JBQW9CLG9DQUFvQyxZQUFZLGFBQWEscURBQXFELG1CQUFtQixrQkFBa0Isc0JBQXNCLFlBQVksY0FBYyxlQUFlLDRCQUE0QixVQUFVLDRCQUE0QixjQUFjLCtCQUErQixjQUFjLHNCQUFzQixtQkFBbUIsa0RBQWtELHdDQUF3QyxxQkFBcUIsZUFBZSxTQUFTLGNBQWMsb0VBQW9FLGNBQWMsZUFBZSxnQkFBZ0IseUJBQXlCLG1CQUFtQix5QkFBeUIsa0JBQWtCLHFDQUFxQyxjQUFjLG1CQUFtQiwrRUFBK0UsZUFBZSxtUEFBbVAseUJBQXlCLGVBQWUsaUJBQWlCLFlBQVksZUFBZSxzQ0FBc0Msa0JBQWtCLDBFQUEwRSxpQkFBaUIsNkVBQTZFLFlBQVksaUJBQWlCLG9IQUFvSCxZQUFZLHNCQUFzQixrQkFBa0IsZ0JBQWdCLGNBQWMsaURBQWlELGVBQWUsaUJBQWlCLHVEQUF1RCxxQkFBcUIsc0JBQXNCLGtCQUFrQixnQkFBZ0IsY0FBYyxxQkFBcUIsaUJBQWlCLGdCQUFnQixjQUFjLHNDQUFzQyxjQUFjLDZCQUE2QixZQUFZLHVCQUF1QixpQkFBaUIsY0FBYyxZQUFZLGtCQUFrQixhQUFhLHNCQUFzQixrQkFBa0Isd0ZBQXdGLFVBQVUsd0JBQXdCLDhCQUE4QixnQ0FBZ0MsV0FBVyxpREFBaUQsWUFBWSxzSUFBc0ksd0JBQXdCLFNBQVMsd0hBQXdILGFBQWEseUJBQXlCLGNBQWMsZUFBZSxrQkFBa0IsbVBBQW1QLGNBQWMsK0RBQStELGNBQWMsZ0VBQWdFLHlCQUF5QixXQUFXLHVMQUF1TCxhQUFhLGVBQWUsdUJBQXVCLG1CQUFtQixTQUFTLHFCQUFxQixVQUFVLHlCQUF5QixzQkFBc0IsaUJBQWlCLGdCQUFnQixZQUFZLHdCQUF3QixpQkFBaUIsYUFBYSxjQUFjLGdCQUFnQixlQUFlLGlCQUFpQixZQUFZLGlCQUFpQixzQkFBc0Isa0JBQWtCLHNEQUFzRCxpQkFBaUIsY0FBYyx3RUFBd0UsY0FBYyx1QkFBdUIsY0FBYyxtQkFBbUIsY0FBYyxvQkFBb0IsY0FBYyxlQUFlLFdBQVcsa0JBQWtCLG1CQUFtQixnQkFBZ0Isa0JBQWtCLG9DQUFvQyxzQkFBc0IsVUFBVSx5QkFBeUIsV0FBVyxhQUFhLGdCQUFnQixZQUFZLGNBQWMsb0JBQW9CLGVBQWUsTUFBTSxRQUFRLFNBQVMsT0FBTyxjQUFjLFNBQVMsbUJBQW1CLHVCQUF1QixzQkFBc0Isa0JBQWtCLFNBQVMsV0FBVyxVQUFVLGVBQWUsWUFBWSxVQUFVLGVBQWUsZUFBZSx3Q0FBd0MsY0FBYyw0RkFBNEYsY0FBYyxrQkFBa0IsaUJBQWlCLGVBQWUsY0FBYyxpQkFBaUIsa0JBQWtCLGNBQWMsZUFBZSxxQkFBcUIsbUJBQW1CLHVCQUF1QixpQkFBaUIsc0JBQXNCLG1CQUFtQixrQkFBa0Isb0NBQW9DLG1CQUFtQix1QkFBdUIsc0NBQXNDLG1CQUFtQiwwQkFBMEIsNkJBQTZCLDBCQUEwQiw4QkFBOEIsMEJBQTBCLEdBQUcsaUNBQWlDLFVBQVUsS0FBSyw2QkFBNkIsV0FBVywyQkFBMkIsR0FBRyw2QkFBNkIsVUFBVSxLQUFLLGlDQUFpQyxXQUFXLGlCQUFpQixrQkFBa0IscUJBQXFCLDRCQUE0QixhQUFhLHVDQUF1QyxrQkFBa0IseUJBQXlCLHNCQUFzQixzQkFBc0Isa0NBQWtDLGlCQUFpQixlQUFlLHNCQUFzQixrQ0FBa0MsU0FBUyxVQUFVLCtCQUErQixlQUFlLFNBQVMsaUJBQWlCLGVBQWUsY0FBYyxlQUFlLGdCQUFnQixtQkFBbUIsZ0JBQWdCLHVCQUF1QixnRkFBZ0YseUJBQXlCLHVDQUF1QyxlQUFlLDBCQUEwQixrREFBa0QsbUJBQW1CLDBDQUEwQyxrQkFBa0IsYUFBYSxrQkFBa0IsZUFBZSxXQUFXLGlEQUFpRCxxQkFBcUIsYUFBYSxZQUFZLHNCQUFzQixnREFBZ0Qsc0JBQXNCLHdEQUF3RCxzQkFBc0IsYUFBYSxxQkFBcUIsa0JBQWtCLGNBQWMsZUFBZSw4QkFBOEIsY0FBYyx5Q0FBeUMsV0FBVyx3Q0FBd0MsaUJBQWlCLGtCQUFrQixrQkFBa0IsaUJBQWlCLGdEQUFnRCxXQUFXLGtCQUFrQixjQUFjLFVBQVUsUUFBUSxXQUFXLE9BQU8sZ0NBQWdDLG1FQUFtRSxnQ0FBZ0Msd0VBQXdFLE1BQU0sU0FBUywyREFBMkQsZUFBZSxtQkFBbUIsZUFBZSxhQUFhLDRHQUE0RyxnQkFBZ0Isd0JBQXdCLG1CQUFtQixXQUFXLGtCQUFrQixrQkFBa0IsTUFBTSxPQUFPLFdBQVcsZUFBZSxhQUFhLHNCQUFzQix5QkFBeUIsa0JBQWtCLHVDQUF1QyxzQ0FBc0MsZUFBZSxlQUFlLGVBQWUsd0JBQXdCLGdCQUFnQixpQkFBaUIsU0FBUyxjQUFjLFVBQVUsOEVBQThFLHlCQUF5QixjQUFjLDBCQUEwQixpQkFBaUIsaUNBQWlDLGtCQUFrQixlQUFlLDZCQUE2Qix3Q0FBd0MsV0FBVyxXQUFXLGNBQWMsZUFBZSxzQkFBc0Isb0NBQW9DLGVBQWUsV0FBVyxvQkFBb0IsMEJBQTBCLGNBQWMsa0RBQWtELGlCQUFpQixlQUFlLGVBQWUsa0ZBQWtGLGVBQWUseUZBQXlGLFdBQVcsZUFBZSx5QkFBeUIsY0FBYyxpREFBaUQsaUJBQWlCLGVBQWUsZUFBZSxpRkFBaUYsZUFBZSx3RkFBd0YsV0FBVyxlQUFlLHdCQUF3QixjQUFjLGdEQUFnRCxpQkFBaUIsZUFBZSxlQUFlLGdGQUFnRixlQUFlLHVGQUF1RixXQUFXLGVBQWUsU0FBUywrQkFBK0IsZ0JBQWdCLGtCQUFrQixTQUFTLGVBQWUsc0JBQXNCLGdMQUFnTCxzQkFBc0IsaUNBQWlDLGNBQWMsYUFBYSw2TEFBNkwsYUFBYSxnQkFBZ0IsV0FBVyw2QkFBNkIsZ0NBQWdDLHFCQUFxQixrQkFBa0IsbUNBQW1DLFdBQVcsWUFBWSxpQkFBaUIsU0FBUyxvQ0FBb0MsY0FBYyxnRkFBZ0YsY0FBYyxpQ0FBaUMsV0FBVyw4RUFBOEUsVUFBVSxvSEFBb0gsY0FBYyw4REFBOEQsZ0NBQWdDLGNBQWMsb0RBQW9ELFlBQVksaUJBQWlCLG9DQUFvQyxjQUFjLHlEQUF5RCxnQkFBZ0Isc0JBQXNCLGdCQUFnQixnQkFBZ0IsNkNBQTZDLGtCQUFrQiw2RkFBNkYsc0JBQXNCLFdBQVcsWUFBWSxpQkFBaUIsZUFBZSxjQUFjLDZIQUE2SCxjQUFjLHNIQUFzSCxVQUFVLGNBQWMsNkNBQTZDLGdDQUFnQyxjQUFjLG1CQUFtQixXQUFXLHVIQUF1SCxTQUFTLHNCQUFzQixXQUFXLGtCQUFrQiw2RkFBNkYsU0FBUyxRQUFRLGdCQUFnQixrQkFBa0IscUJBQXFCLGlDQUFpQyxZQUFZLGlCQUFpQixnQkFBZ0IsNkNBQTZDLGNBQWMsd0NBQXdDLGdCQUFnQix3Q0FBd0Msa0JBQWtCLGdCQUFnQixNQUFNLFVBQVUsV0FBVyx5QkFBeUIsa0JBQWtCLHVDQUF1QyxvRkFBb0YsZUFBZSxnQkFBZ0IsWUFBWSxnQkFBZ0IsWUFBWSxjQUFjLGtCQUFrQix1Q0FBdUMsNkJBQTZCLGVBQWUsNEJBQTRCLGdCQUFnQixpQkFBaUIsY0FBYyxjQUFjLDJEQUEyRCxzQkFBc0IsbUJBQW1CLDJDQUEyQyw4QkFBOEIsa0JBQWtCLG1CQUFtQixnQkFBZ0Isc0JBQXNCLGdCQUFnQixjQUFjLHdDQUF3QyxVQUFVLHlCQUF5QiwwQkFBMEIsWUFBWSxtQkFBbUIseUJBQXlCLGdDQUFnQyxpQkFBaUIsV0FBVyxrQkFBa0IsZUFBZSxzQkFBc0Isd0JBQXdCLGNBQWMsMEJBQTBCLGNBQWMsWUFBWSxnQkFBZ0IsU0FBUyxlQUFlLG1CQUFtQixlQUFlLGNBQWMsZUFBZSxlQUFlLDJEQUEyRCxzQkFBc0IscUJBQXFCLHNCQUFzQixxQkFBcUIsY0FBYyxrREFBa0QsVUFBVSx5QkFBeUIsK0JBQStCLFlBQVksbUJBQW1CLHlCQUF5Qix5QkFBeUIseUJBQXlCLHFCQUFxQixZQUFZLDBCQUEwQixZQUFZLGlCQUFpQixlQUFlLGdCQUFnQix3QkFBd0Isa0JBQWtCLFFBQVEsV0FBVyxnQkFBZ0IseUJBQXlCLGVBQWUseUNBQXlDLDRCQUE0QixpRUFBaUUsMEJBQTBCLGlGQUFpRixZQUFZLG1CQUFtQix5QkFBeUIsOEJBQThCLHNCQUFzQixpQkFBaUIsV0FBVyxrQkFBa0IsZUFBZSx1QkFBdUIsVUFBVSwyQkFBMkIsdUJBQXVCLG1CQUFtQixlQUFlLGNBQWMsd0NBQXdDLHFCQUFxQixjQUFjLHNCQUFzQiwyRUFBMkUsZUFBZSxVQUFVLGdCQUFnQixZQUFZLGlCQUFpQixrQkFBa0IscUJBQXFCLFVBQVUsd0JBQXdCLGdCQUFnQix5QkFBeUIsZ0JBQWdCLGNBQWMsY0FBYyx3QkFBd0Isa0JBQWtCLHNCQUFzQixVQUFVLFNBQVMsZUFBZSxrREFBa0Qsa0JBQWtCLGVBQWUsZ0JBQWdCLGlDQUFpQyxrQkFBa0IsOEJBQThCLGNBQWMsMENBQTBDLGVBQWUsK0NBQStDLGdCQUFnQixxREFBcUQsOEJBQThCLDBCQUEwQiwwQkFBMEIsNkJBQTZCLFVBQVUsVUFBVSxrQkFBa0IsV0FBVyw2REFBNkQsV0FBVyx5QkFBeUIscUJBQXFCLDhCQUE4Qiw4REFBOEQsY0FBYyxtQkFBbUIsc0JBQXNCLHNCQUFzQixxQkFBcUIsZ0JBQWdCLHNFQUFzRSx5QkFBeUIsb0RBQW9ELDBCQUEwQixnRUFBZ0Usa0JBQWtCLGlEQUFpRCxrQkFBa0IsZUFBZSxnQkFBZ0IsMERBQTBELGtCQUFrQixnREFBZ0QsaUJBQWlCLGVBQWUsZ0JBQWdCLHlEQUF5RCxpQkFBaUIsK0NBQStDLGlCQUFpQixlQUFlLGdCQUFnQix3REFBd0QsaUJBQWlCLHFFQUFxRSwrQkFBK0IsaUZBQWlGLCtDQUErQyxXQUFXLG9CQUFvQixtQkFBbUIsa0JBQWtCLGVBQWUsaUJBQWlCLFlBQVksc0JBQXNCLG1DQUFtQyxxQkFBcUIsZUFBZSxpRkFBaUYsbUJBQW1CLGtCQUFrQixlQUFlLFlBQVksZUFBZSxnQkFBZ0Isc0JBQXNCLGNBQWMsNEJBQTRCLGNBQWMsd0JBQXdCLGtCQUFrQix5QkFBeUIsaUJBQWlCLG9CQUFvQixjQUFjLGVBQWUscUJBQXFCLGtCQUFrQixrQkFBa0IsUUFBUSxTQUFTLFVBQVUsU0FBUyxpQkFBaUIsU0FBUyxrQkFBa0IsV0FBVyxZQUFZLHlCQUF5QixVQUFVLG1CQUFtQixzQkFBc0IsbUJBQW1CLGlEQUFpRCxzQkFBc0Isb0NBQW9DLDJCQUEyQixjQUFjLHVCQUF1QixhQUFhLGtCQUFrQixRQUFRLFNBQVMsbUJBQW1CLG1CQUFtQixXQUFXLFlBQVksc0JBQXNCLHVDQUF1QyxxQkFBcUIseUJBQXlCLDhDQUE4QyxVQUFVLGtCQUFrQix1QkFBdUIsV0FBVywrREFBK0QsVUFBVSxnRUFBZ0UsV0FBVyxpRUFBaUUsVUFBVSxvQkFBb0Isa0JBQWtCLGFBQWEseUJBQXlCLGtCQUFrQixzQkFBc0IsdUNBQXVDLHNCQUFzQixhQUFhLDBEQUEwRCxtQkFBbUIsbUVBQW1FLGNBQWMsc0JBQXNCLHlFQUF5RSx5QkFBeUIsMEVBQTBFLGtCQUFrQixXQUFXLDBCQUEwQixtQkFBbUIsZUFBZSxnQkFBZ0IsbUNBQW1DLGtDQUFrQyxxRUFBcUUsVUFBVSwyQkFBMkIsZUFBZSxTQUFTLGtCQUFrQixXQUFXLGVBQWUsMEJBQTBCLGlCQUFpQiwwQkFBMEIsZ0JBQWdCLGNBQWMsU0FBUyxzQkFBc0IsMEJBQTBCLGVBQWUsZUFBZSxrQkFBa0IsbUJBQW1CLGdCQUFnQix1QkFBdUIsY0FBYyxZQUFZLGlCQUFpQixzQkFBc0IsZUFBZSxzQ0FBc0MsY0FBYyxtQkFBbUIsNENBQTRDLHNCQUFzQixnRUFBZ0UseUJBQXlCLG1DQUFtQyxjQUFjLGdCQUFnQixpQkFBaUIsU0FBUyxVQUFVLHVCQUF1QixrQkFBa0IsZ0JBQWdCLFNBQVMsVUFBVSwwQ0FBMEMsb0JBQW9CLGlEQUFpRCxXQUFXLGtCQUFrQixjQUFjLFVBQVUsV0FBVyxZQUFZLFdBQVcsbUJBQW1CLHdCQUF3QixrQkFBa0IsZUFBZSxjQUFjLGlCQUFpQiwyQ0FBMkMsa0JBQWtCLFdBQVcscUJBQXFCLGtCQUFrQixpQ0FBaUMsaUJBQWlCLGtDQUFrQyxxQkFBcUIsNEJBQTRCLGVBQWUsbUJBQW1CLGtDQUFrQyxxQkFBcUIsdUNBQXVDLGNBQWMsZUFBZSx5QkFBeUIsMEJBQTBCLGVBQWUsa0RBQWtELHFCQUFxQixxREFBcUQsZUFBZSxrQkFBa0IsMEJBQTBCLG1CQUFtQixjQUFjLG9EQUFvRCwyREFBMkQsY0FBYyxrREFBa0QsbUJBQW1CLHdEQUF3RCxxQkFBcUIsMkdBQTJHLHFCQUFxQixxQkFBcUIsY0FBYyxrQkFBa0IsWUFBWSxVQUFVLFVBQVUsaUJBQWlCLFdBQVcsZUFBZSx3QkFBd0IscUJBQXFCLGdCQUFnQixZQUFZLDZCQUE2QiwwQkFBMEIsWUFBWSxrQkFBa0IsZUFBZSxrQkFBa0IsUUFBUSxhQUFhLFdBQVcsY0FBYyxpQkFBaUIsZUFBZSx3QkFBd0IsY0FBYyxpQkFBaUIsa0JBQWtCLG1CQUFtQixtQkFBbUIsVUFBVSxRQUFRLDJCQUEyQixhQUFhLG1CQUFtQixlQUFlLHNCQUFzQixnQkFBZ0IsdUJBQXVCLG1CQUFtQixzQkFBc0IseUJBQXlCLHFCQUFxQix5QkFBeUIsYUFBYSxlQUFlLG1CQUFtQix3Q0FBd0MseUJBQXlCLE1BQU0sV0FBVyxjQUFjLDhDQUE4Qyx5QkFBeUIsbUNBQW1DLHNCQUFzQixnREFBZ0QsY0FBYyw0QkFBNEIsVUFBVSxrQkFBa0IsZ0JBQWdCLHNCQUFzQixPQUFPLFdBQVcsZUFBZSxlQUFlLGNBQWMsdUJBQXVCLGdCQUFnQixrQkFBa0IsV0FBVyxhQUFhLHVCQUF1QixtQkFBbUIsc0JBQXNCLGlCQUFpQixVQUFVLGNBQWMsK0JBQStCLFVBQVUsa0JBQWtCLHVCQUF1QixrQkFBa0IsZUFBZSxXQUFXLGVBQWUscUNBQXFDLFlBQVksaUNBQWlDLHdCQUF3QixnQ0FBZ0Msa0JBQWtCLFNBQVMsUUFBUSxpQkFBaUIsZ0JBQWdCLHNDQUFzQyxrQkFBa0IsK0JBQStCLHVDQUF1Qyx1QkFBdUIscUJBQXFCLFdBQVcsMEJBQTBCLGdCQUFnQixlQUFlLGVBQWUsZ0JBQWdCLHNDQUFzQyx1QkFBdUIsZ0RBQWdELGdCQUFnQixnREFBZ0QsZ0JBQWdCLGdCQUFnQixjQUFjLGdCQUFnQiwyQ0FBMkMsbUJBQW1CLDBCQUEwQixlQUFlLFlBQVksc0JBQXNCLHVCQUF1QixzQkFBc0Isa0JBQWtCLGdCQUFnQixvQ0FBb0Msa0JBQWtCLG1DQUFtQyxpQkFBaUIsaUNBQWlDLFdBQVcscUJBQXFCLHNCQUFzQixVQUFVLHNDQUFzQyxrQkFBa0Isa0NBQWtDLGVBQWUsaUJBQWlCLGVBQWUsaUNBQWlDLGNBQWMsZ0JBQWdCLGVBQWUsZ0NBQWdDLGNBQWMsYUFBYSxzQkFBc0Isa0NBQWtDLFNBQVMsZ0VBQWdFLGdDQUFnQyx3Q0FBd0MsZUFBZSw0QkFBNEIsZ0JBQWdCLHlCQUF5QixzQkFBc0IsaUJBQWlCLHNCQUFzQixrQ0FBa0MscUJBQXFCLHNCQUFzQixrQkFBa0Isc0JBQXNCLGtCQUFrQixtQkFBbUIsV0FBVyw0Q0FBNEMsY0FBYyxpREFBaUQscUJBQXFCLGFBQWEsVUFBVSxXQUFXLGtCQUFrQixtQkFBbUIsaUJBQWlCLHNCQUFzQixnQ0FBZ0Msc0JBQXNCLG1EQUFtRCw4QkFBOEIsbUNBQW1DLFFBQVEsZ0JBQWdCLHNCQUFzQixnQkFBZ0IsdUJBQXVCLG1CQUFtQixxQkFBcUIsaUJBQWlCLGtCQUFrQixtQkFBbUIsMkJBQTJCLG1CQUFtQixlQUFlLG1DQUFtQyx5QkFBeUIsbUVBQW1FLFdBQVcsa0JBQWtCLHlCQUF5QixVQUFVLGlEQUFpRCxNQUFNLFFBQVEsVUFBVSxZQUFZLGtCQUFrQixPQUFPLFNBQVMsV0FBVyxXQUFXLGtCQUFrQixrQkFBa0IsbUJBQW1CLDhDQUE4Qyx5QkFBeUIsK0dBQStHLCtCQUErQixvREFBb0Qsa0JBQWtCLHdEQUF3RCxnQ0FBZ0Msd0JBQXdCLGlFQUFpRSxnQ0FBZ0Msa0JBQWtCLGtCQUFrQix3Q0FBd0Msa0JBQWtCLE1BQU0sT0FBTyxrQkFBa0Isa0JBQWtCLG9DQUFvQyx3REFBd0QsV0FBVyxrQkFBa0IsT0FBTyxTQUFTLFdBQVcsV0FBVyx5QkFBeUIsVUFBVSw2QkFBNkIsa0JBQWtCLFNBQVMsUUFBUSxzQkFBc0IsdUJBQXVCLE1BQU0sVUFBVSxRQUFRLG1LQUFtSyxVQUFVLFFBQVEsZ0NBQWdDLGtCQUFrQixPQUFPLE1BQU0sVUFBVSxnQ0FBZ0Msa0JBQWtCLE9BQU8sU0FBUyxVQUFVLHdEQUF3RCw2QkFBNkIseUJBQXlCLGNBQWMsOEJBQThCLGtCQUFrQixPQUFPLFNBQVMsZ0JBQWdCLFVBQVUsNEVBQTRFLFdBQVcsMEJBQTBCLGdCQUFnQiw0Q0FBNEMsNkJBQTZCLG9EQUFvRCxtQkFBbUIseUJBQXlCLG9EQUFvRCxnQkFBZ0Isb0dBQW9HLHlCQUF5QixjQUFjLHdCQUF3QixnQkFBZ0Isa0JBQWtCLHlQQUF5UCxnQkFBZ0Isb0ZBQW9GLDhCQUE4Qix5QkFBeUIsb0JBQW9CLHNCQUFzQixtQkFBbUIsWUFBWSxXQUFXLHNCQUFzQixlQUFlLGlCQUFpQixrQkFBa0Isc0JBQXNCLFFBQVEsU0FBUyw2QkFBNkIsa0JBQWtCLFNBQVMsZ0NBQWdDLDRCQUE0QixRQUFRLGlDQUFpQyx5QkFBeUIsV0FBVywyQ0FBMkMsNEJBQTRCLDZDQUE2Qyx5QkFBeUIsMEJBQTBCLGtCQUFrQixrQkFBa0IsV0FBVywrRUFBK0UsbUJBQW1CLHdMQUF3TCx5QkFBeUIsbVpBQW1aLHlCQUF5QixvR0FBb0cseUJBQXlCLCtCQUErQixrQkFBa0IsV0FBVyxNQUFNLFNBQVMsUUFBUSw4QkFBOEIsV0FBVyxpQ0FBaUMscUJBQXFCLGlCQUFpQixlQUFlLG1DQUFtQyxjQUFjLGVBQWUscUJBQXFCLG1FQUFtRSxzQ0FBc0MsdUVBQXVFLHlCQUF5Qix3RkFBd0YsU0FBUyxnQkFBZ0IsK0RBQStELHFCQUFxQixXQUFXLGlCQUFpQixZQUFZLGtCQUFrQixpQkFBaUIsa0NBQWtDLGtCQUFrQixtQkFBbUIsaUJBQWlCLHlCQUF5QixrQkFBa0Isc0JBQXNCLHVDQUF1QyxzQkFBc0IsYUFBYSx1QkFBdUIsY0FBYyxTQUFTLGdCQUFnQixnQkFBZ0IsNEJBQTRCLGlCQUFpQixlQUFlLGVBQWUsZUFBZSxrQ0FBa0MseUJBQXlCLGNBQWMsc0NBQXNDLHlCQUF5QixXQUFXLDBCQUEwQixnQkFBZ0IseUJBQXlCLDZCQUE2QixZQUFZLGdDQUFnQyxlQUFlLFlBQVksY0FBYyxlQUFlLGVBQWUsY0FBYywwTEFBMEwseUJBQXlCLHNDQUFzQyxjQUFjLHNDQUFzQyxVQUFVLDRDQUE0QyxjQUFjLG1CQUFtQix1QkFBdUIsaUJBQWlCLGlDQUFpQyxhQUFhLG1EQUFtRCxjQUFjLGlCQUFpQixrQkFBa0IsZ0JBQWdCLHlEQUF5RCxnQkFBZ0IsZUFBZSxlQUFlLHlCQUF5QixzQkFBc0IsaUJBQWlCLHlFQUF5RSxjQUFjLHlFQUF5RSxnQkFBZ0IsNEJBQTRCLCtCQUErQix3RUFBd0UsaUJBQWlCLDZCQUE2QixnQ0FBZ0Msa0JBQWtCLFdBQVcsWUFBWSxjQUFjLHNCQUFzQixrQkFBa0IsZUFBZSxrQkFBa0Isc0JBQXNCLFlBQVksY0FBYyxzQkFBc0IsdUJBQXVCLFdBQVcsWUFBWSxjQUFjLGNBQWMsaUJBQWlCLGtCQUFrQixTQUFTLDJCQUEyQixrQkFBa0IsMERBQTBELGNBQWMsd0JBQXdCLGtCQUFrQiw2QkFBNkIsY0FBYyxnQkFBZ0IsOEVBQThFLFdBQVcsa0NBQWtDLGNBQWMsOENBQThDLFdBQVcseUJBQXlCLGdFQUFnRSxXQUFXLGtFQUFrRSx5QkFBeUIsaUNBQWlDLGdCQUFnQiw0QkFBNEIsK0JBQStCLCtCQUErQixpQkFBaUIsNkJBQTZCLGdDQUFnQywrQkFBK0IseUJBQXlCLFVBQVUsbUJBQW1CLGNBQWMsK0JBQStCLGdCQUFnQixpQkFBaUIseUJBQXlCLG1CQUFtQixxQ0FBcUMseUJBQXlCLGdDQUFnQyx5QkFBeUIsV0FBVyxtQkFBbUIsdUJBQXVCLGNBQWMsY0FBYywrQkFBK0IsZUFBZSx5QkFBeUIsa0JBQWtCLFlBQVksY0FBYyxnQkFBZ0IsZ0NBQWdDLGdCQUFnQixZQUFZLG1CQUFtQixrQkFBa0IsY0FBYyxlQUFlLHVCQUF1QixZQUFZLGNBQWMsc0JBQXNCLCtCQUErQixjQUFjLGdCQUFnQixrRkFBa0YsV0FBVyxrQ0FBa0MseUJBQXlCLG1CQUFtQixjQUFjLHdDQUF3QyxjQUFjLHlCQUF5QixXQUFXLFlBQVksY0FBYyxpQkFBaUIsY0FBYyxjQUFjLG1CQUFtQiwrQkFBK0IsY0FBYyxzRUFBc0UseUJBQXlCLGtFQUFrRSxXQUFXLHNFQUFzRSxXQUFXLHlCQUF5QixrQ0FBa0MsNEJBQTRCLCtCQUErQixnQ0FBZ0MsNkJBQTZCLGdDQUFnQyxnREFBZ0QsY0FBYyxlQUFlLFlBQVksd0JBQXdCLGNBQWMsa0JBQWtCLGtCQUFrQixpQkFBaUIsZUFBZSw4QkFBOEIsY0FBYyxnQkFBZ0IsaUNBQWlDLHlCQUF5QixtQkFBbUIsY0FBYyx1Q0FBdUMsY0FBYyx3QkFBd0IsV0FBVyxZQUFZLGNBQWMsaUJBQWlCLGNBQWMsY0FBYyw2RUFBNkUsY0FBYyxzQkFBc0IsWUFBWSxrQ0FBa0MsWUFBWSw0QkFBNEIsbUJBQW1CLFdBQVcsNkNBQTZDLGdCQUFnQixnREFBZ0QsU0FBUyw4QkFBOEIsa0JBQWtCLGtCQUFrQixZQUFZLGtEQUFrRCxXQUFXLG1EQUFtRCxZQUFZLGtDQUFrQyxlQUFlLGdCQUFnQixrQkFBa0IsK0JBQStCLFdBQVcsVUFBVSxzQkFBc0IsU0FBUyxhQUFhLHVDQUF1QywrQkFBK0IsaUVBQWlFLGlCQUFpQixrQkFBa0Isb0NBQW9DLHNCQUFzQixtQkFBbUIsNkNBQTZDLGlCQUFpQixtQ0FBbUMsa0JBQWtCLGdDQUFnQyxlQUFlLG9CQUFvQixjQUFjLFdBQVcsc0JBQXNCLHdEQUF3RCxlQUFlLHNCQUFzQixtQkFBbUIsY0FBYyx3Q0FBd0Msa0JBQWtCLG1CQUFtQixjQUFjLHlEQUF5RCxrQkFBa0IsU0FBUyxRQUFRLFVBQVUsZ0JBQWdCLGdCQUFnQixZQUFZLHFDQUFxQyxZQUFZLDRCQUE0QixZQUFZLHdEQUF3RCxrQkFBa0IsMENBQTBDLFlBQVksc0JBQXNCLG1CQUFtQixXQUFXLDZCQUE2QixrQkFBa0IsbUJBQW1CLGNBQWMsNkJBQTZCLGtCQUFrQixnQ0FBZ0MsZUFBZSxvQkFBb0IsY0FBYyxXQUFXLHNCQUFzQix3QkFBd0IsWUFBWSxrQkFBa0Isa0NBQWtDLGdCQUFnQixvQkFBb0IsZ0NBQWdDLDREQUE0RCxhQUFhLDhCQUE4QixlQUFlLGdCQUFnQixjQUFjLGlCQUFpQixrQkFBa0IsZUFBZSxjQUFjLHlFQUF5RSxjQUFjLDBCQUEwQixXQUFXLDBCQUEwQixZQUFZLDJCQUEyQixhQUFhLGtCQUFrQiw0QkFBNEIsV0FBVyxlQUFlLGlCQUFpQixpQkFBaUIsYUFBYSxhQUFhLFlBQVksdUNBQXVDLGlCQUFpQixTQUFTLGtCQUFrQixpQkFBaUIsZUFBZSxpQkFBaUIsMENBQTBDLGNBQWMsZ0JBQWdCLDJCQUEyQixjQUFjLG1CQUFtQix3QkFBd0IseUJBQXlCLGdCQUFnQixlQUFlLGdCQUFnQixrQkFBa0IscUJBQXFCLGdCQUFnQix5REFBeUQsWUFBWSxpRkFBaUYsWUFBWSw4SkFBOEosWUFBWSx1RkFBdUYsWUFBWSx3Q0FBd0MsdUJBQXVCLG1CQUFtQixzQ0FBc0MsZUFBZSxnQ0FBZ0MsZUFBZSxpQkFBaUIsY0FBYyxXQUFXLGlCQUFpQixnQ0FBZ0Msd0JBQXdCLHFCQUFxQixnQkFBZ0IsWUFBWSxVQUFVLHFCQUFxQixZQUFZLFNBQVMsVUFBVSxVQUFVLGtCQUFrQixlQUFlLGNBQWMsa0RBQWtELGNBQWMsNkNBQTZDLGNBQWMsb0NBQW9DLHFCQUFxQixZQUFZLGNBQWMsU0FBUyxrQkFBa0IsaUJBQWlCLGVBQWUsU0FBUyxjQUFjLHNDQUFzQyxlQUFlLGNBQWMsV0FBVyxxQkFBcUIsWUFBWSxpQkFBaUIsaUNBQWlDLG9CQUFvQixtQkFBbUIsaUJBQWlCLGlDQUFpQyxjQUFjLHlDQUF5QyxZQUFZLDZDQUE2QyxpQkFBaUIsZUFBZSx5Q0FBeUMsZUFBZSx3RkFBd0YsaUJBQWlCLHdDQUF3QyxZQUFZLDRDQUE0QyxpQkFBaUIsZUFBZSx3Q0FBd0MsZUFBZSxzRkFBc0YsaUJBQWlCLHVDQUF1QyxZQUFZLDJDQUEyQyxpQkFBaUIsZUFBZSx1Q0FBdUMsZUFBZSxvRkFBb0YsaUJBQWlCLDZCQUE2Qix5QkFBeUIscUJBQXFCLGNBQWMsbUJBQW1CLHNFQUFzRSxxQkFBcUIsbUNBQW1DLHlCQUF5QixjQUFjLG1CQUFtQixxREFBcUQsY0FBYyxnREFBZ0QsY0FBYyxpREFBaUQsY0FBYyxpQkFBaUIsY0FBYyx5QkFBeUIsdUNBQXVDLGdCQUFnQixrQkFBa0IsaUJBQWlCLGFBQWEsb0VBQW9FLGFBQWEsY0FBYyxXQUFXLDBCQUEwQixrQkFBa0IsWUFBWSx5QkFBeUIsNkJBQTZCLFlBQVksaUJBQWlCLHNCQUFzQixrQkFBa0IsWUFBWSwyQkFBMkIsY0FBYyxXQUFXLFNBQVMsNkJBQTZCLGlCQUFpQixlQUFlLGNBQWMsa0JBQWtCLGdCQUFnQixVQUFVLGVBQWUsaUNBQWlDLGNBQWMsa0NBQWtDLHlCQUF5QixjQUFjLHNCQUFzQix5QkFBeUIsV0FBVyxpQkFBaUIsa0JBQWtCLGVBQWUsZUFBZSw2QkFBNkIsVUFBVSxlQUFlLGdDQUFnQyxXQUFXLG1CQUFtQiwyQkFBMkIsZUFBZSxjQUFjLFNBQVMsZUFBZSxlQUFlLFVBQVUsZUFBZSxpQ0FBaUMsY0FBYyx1Q0FBdUMsV0FBVyw2Q0FBNkMsbUJBQW1CLDJCQUEyQixzQkFBc0IsMERBQTBELGtCQUFrQixNQUFNLFNBQVMsWUFBWSwrQkFBK0Isc0JBQXNCLGdCQUFnQixzQkFBc0IsY0FBYyx3R0FBd0csa0JBQWtCLHVEQUF1RCxZQUFZLDBCQUEwQixpQkFBaUIsY0FBYyxxQkFBcUIsVUFBVSxtQkFBbUIsa0JBQWtCLHVGQUF1RixvQkFBb0IseUVBQXlFLFVBQVUsa0JBQWtCLG1DQUFtQyxzQkFBc0Isa0JBQWtCLGdCQUFnQiwwREFBMEQsNEJBQTRCLDRGQUE0RixnQkFBZ0IsZUFBZSx3QkFBd0IsZUFBZSxjQUFjLGtCQUFrQixPQUFPLFdBQVcsVUFBVSxrQkFBa0IsWUFBWSxpQkFBaUIsZUFBZSw4QkFBOEIsY0FBYyx5Q0FBeUMsU0FBUywyQ0FBMkMsWUFBWSxpQ0FBaUMsVUFBVSx1QkFBdUIsU0FBUyxnQkFBZ0IsNkRBQTZELFdBQVcsY0FBYyxXQUFXLFlBQVksdUJBQXVCLFlBQVksaUJBQWlCLGVBQWUsY0FBYyx5REFBeUQsbUJBQW1CLGVBQWUsNkNBQTZDLGNBQWMsZ0JBQWdCLGdDQUFnQyxjQUFjLG1CQUFtQixlQUFlLGFBQWEseUJBQXlCLHNCQUFzQix1Q0FBdUMsa0JBQWtCLGtCQUFrQixZQUFZLE9BQU8sYUFBYSx5QkFBeUIsc0JBQXNCLGlCQUFpQix1QkFBdUIsd0JBQXdCLFlBQVksa0JBQWtCLGdCQUFnQiwrREFBK0QsYUFBYSxRQUFRLGtCQUFrQixpQkFBaUIsWUFBWSxXQUFXLE9BQU8sUUFBUSxzQkFBc0IsZ0JBQWdCLGdCQUFnQiw2QkFBNkIsZ0NBQWdDLCtCQUErQixTQUFTLGdCQUFnQixpQkFBaUIsZ0NBQWdDLGlCQUFpQixpQkFBaUIsZ0JBQWdCLDJDQUEyQyx3QkFBd0IsNENBQTRDLDRCQUE0Qix1QkFBdUIsNkJBQTZCLFlBQVksWUFBWSxpQkFBaUIsaUJBQWlCLHNCQUFzQixvQkFBb0IsWUFBWSxpQkFBaUIsY0FBYyxhQUFhLGVBQWUsNkJBQTZCLFVBQVUsZUFBZSxjQUFjLDRCQUE0QixnQkFBZ0IsY0FBYyxzQkFBc0IsWUFBWSxpQkFBaUIsK0JBQStCLGtCQUFrQixrQkFBa0IsYUFBYSw0QkFBNEIsc0JBQXNCLFNBQVMsb0JBQW9CLFVBQVUscUJBQXFCLDhCQUE4QixrQkFBa0Isa0JBQWtCLGVBQWUsNEJBQTRCLGtCQUFrQix5QkFBeUIsWUFBWSxrQkFBa0IsZ0JBQWdCLGdCQUFnQixrQkFBa0IseUJBQXlCLGFBQWEsYUFBYSxjQUFjLGdCQUFnQixtQkFBbUIsZUFBZSx1Q0FBdUMscUJBQXFCLHdLQUF3SywrQ0FBK0MsbUJBQW1CLGtCQUFrQixtQkFBbUIsY0FBYyxlQUFlLGNBQWMsbUJBQW1CLDBIQUEwSCxnQkFBZ0IsZUFBZSw4QkFBOEIsZUFBZSx3Q0FBd0Msc0JBQXNCLEdBQUcsV0FBVyx1QkFBdUIsS0FBSyxXQUFXLFNBQVMsZUFBZSxPQUFPLE1BQU0sV0FBVyxZQUFZLFdBQVcsZ0JBQWdCLHlCQUF5QixnQkFBZ0IsZ0JBQWdCLHFCQUFxQixZQUFZLG9CQUFvQixzQkFBc0Isc0JBQXNCLGtCQUFrQix5QkFBeUIsZUFBZSx1Q0FBdUMsZ0JBQWdCLGdCQUFnQiwyQkFBMkIseUJBQXlCLGVBQWUsTUFBTSxTQUFTLE9BQU8sUUFBUSxrQkFBa0IsZ0NBQWdDLGFBQWEscUJBQXFCLFlBQVksUUFBUSxzQkFBc0Isd0JBQXdCLGtCQUFrQix1QkFBdUIsdUJBQXVCLGVBQWUsZ0JBQWdCLGVBQWUsY0FBYyxjQUFjLDJCQUEyQixrQkFBa0IsU0FBUyxXQUFXLFVBQVUsWUFBWSxVQUFVLGVBQWUsZUFBZSxlQUFlLGtRQUFrUSxxQkFBcUIsa0RBQWtELGNBQWMsZ0hBQWdILGNBQWMseUJBQXlCLGtCQUFrQixjQUFjLGVBQWUsMkJBQTJCLGtCQUFrQix1QkFBdUIsaUJBQWlCLHdCQUF3QixrQkFBa0IsUUFBUSwyQkFBMkIseUJBQXlCLGdDQUFnQyxpQkFBaUIsaURBQWlELGtCQUFrQixtQkFBbUIsd0NBQXdDLGNBQWMscUNBQXFDLGNBQWMsd0NBQXdDLGNBQWMsc0NBQXNDLGNBQWMseUJBQXlCLFNBQVMsMkJBQTJCLFNBQVMsaUJBQWlCLDBCQUEwQixjQUFjLGVBQWUsZ0JBQWdCLGVBQWUsc0JBQXNCLG1CQUFtQixpQkFBaUIsMENBQTBDLGlCQUFpQiw4QkFBOEIsMkJBQTJCLHdCQUF3QixvQkFBb0IsZ0RBQWdELGlCQUFpQiwrQ0FBK0Msa0JBQWtCLGFBQWEsbUJBQW1CLHVCQUF1QixnREFBZ0Qsa0JBQWtCLFNBQVMsa0JBQWtCLGtCQUFrQiwyQkFBMkIsaURBQWlELGNBQWMsK0ZBQStGLGtCQUFrQixpREFBaUQsa0JBQWtCLG1CQUFtQiwwQkFBMEIsNkJBQTZCLDBCQUEwQiw4QkFBOEIsMEJBQTBCLEdBQUcsaUNBQWlDLFVBQVUsS0FBSyw2QkFBNkIsV0FBVywyQkFBMkIsR0FBRyw2QkFBNkIsVUFBVSxLQUFLLGlDQUFpQyxXQUFXLGVBQWUsZUFBZSxjQUFjLDZDQUE2QyxjQUFjLGFBQWEsc0JBQXNCLFdBQVcsMEJBQTBCLGFBQWEsZ0JBQWdCLGNBQWMsdUNBQXVDLGFBQWEsZ0JBQWdCLHFCQUFxQixXQUFXLHNCQUFzQixjQUFjLHNEQUFzRCxnQkFBZ0IscUJBQXFCLG9EQUFvRCxjQUFjLGtFQUFrRSxjQUFjLGVBQWUsd09BQXdPLGdCQUFnQixjQUFjLFlBQVksMENBQTBDLGdCQUFnQix5Q0FBeUMsV0FBVyxxQkFBcUIsZ0JBQWdCLGlCQUFpQiwrQkFBK0IscUJBQXFCLGtCQUFrQixtQkFBbUIsc0NBQXNDLFdBQVcscUJBQXFCLHdDQUF3QyxxQkFBcUIsbUJBQW1CLDJEQUEyRCxjQUFjLGNBQWMsbUJBQW1CLDJDQUEyQyxjQUFjLGFBQWEscUJBQXFCLFdBQVcsNEJBQTRCLGdCQUFnQixtRUFBbUUsbUJBQW1CLHNDQUFzQyxhQUFhLHdGQUF3RixpQkFBaUIsc0ZBQXNGLGlCQUFpQiwwQ0FBMEMsZ0JBQWdCLG9GQUFvRixpQkFBaUIseUNBQXlDLGdCQUFnQiwwQkFBMEIsV0FBVywrQ0FBK0MscUJBQXFCLFdBQVcscUJBQXFCLGlCQUFpQixzQkFBc0IsV0FBVyxlQUFlLGNBQWMsaUJBQWlCLG1CQUFtQixzQkFBc0IsdUJBQXVCLGlCQUFpQixrQkFBa0IsZUFBZSw2REFBNkQsY0FBYyxhQUFhLDhCQUE4QixXQUFXLHVDQUF1QyxtQkFBbUIscUJBQXFCLGNBQWMsZUFBZSxjQUFjLGdCQUFnQixrQkFBa0IsU0FBUyxPQUFPLDZCQUE2QixrQkFBa0IsU0FBUyxVQUFVLHFCQUFxQixpQkFBaUIsZ0xBQWdMLFlBQVksY0FBYyxpQkFBaUIsaUlBQWlJLHlCQUF5QiwrQ0FBK0MsY0FBYyxnREFBZ0QscUJBQXFCLGlCQUFpQixVQUFVLGtCQUFrQixnQkFBZ0IscUJBQXFCLGtCQUFrQixTQUFTLE9BQU8sV0FBVyx5QkFBeUIsVUFBVSx3REFBd0QsZ0JBQWdCLGtCQUFrQixZQUFZLHlCQUF5QixZQUFZLFdBQVcsaUJBQWlCLHVCQUF1QixrQkFBa0Isa0JBQWtCLGVBQWUsY0FBYyxlQUFlLG9CQUFvQixnQ0FBZ0MsdUJBQXVCLHdCQUF3QixjQUFjLG1CQUFtQixnQkFBZ0IsbUJBQW1CLGtCQUFrQiwwQkFBMEIsYUFBYSxrQkFBa0IsT0FBTyxTQUFTLFdBQVcsV0FBVyx5QkFBeUIsVUFBVSxpQ0FBaUMsZUFBZSxzQkFBc0IscUJBQXFCLGdCQUFnQixzQ0FBc0Msa0JBQWtCLGVBQWUsaUJBQWlCLGVBQWUsY0FBYyxtQkFBbUIsUUFBUSxtQkFBbUIsT0FBTyxjQUFjLG1CQUFtQixrQkFBa0IseUJBQXlCLFdBQVcsVUFBVSx5QkFBeUIsZUFBZSxhQUFhLDJCQUEyQixPQUFPLGtCQUFrQixlQUFlLGVBQWUsWUFBWSxzQkFBc0IsaUJBQWlCLHFCQUFxQixnQkFBZ0IsZUFBZSxnQkFBZ0IsY0FBYyxrQkFBa0IsaURBQWlELFVBQVUscURBQXFELHFDQUFxQyxrQkFBa0IsOEJBQThCLGtCQUFrQixrQkFBa0Isa0RBQWtELGdCQUFnQixxQ0FBcUMsb0JBQW9CLHFCQUFxQiwyS0FBMkssYUFBYSxvQ0FBb0MseUJBQXlCLFdBQVcseUJBQXlCLGNBQWMscUJBQXFCLGNBQWMsZUFBZSwyQkFBMkIsY0FBYyxlQUFlLGtCQUFrQixnQkFBZ0Isa0JBQWtCLGdDQUFnQyxnQ0FBZ0MsMERBQTBELGFBQWEsOENBQThDLHlCQUF5QixtQkFBbUIsMEJBQTBCLHNCQUFzQiw4REFBOEQsa0JBQWtCLGVBQWUsUUFBUSxZQUFZLHNCQUFzQixpQkFBaUIsZ0JBQWdCLFNBQVMsV0FBVywwQkFBMEIsK0NBQStDLG9DQUFvQyw4QkFBOEIsK0ZBQStGLDJEQUEyRCxpQkFBaUIsaUVBQWlFLGtCQUFrQixtQkFBbUIsZ0ZBQWdGLFdBQVcseURBQXlELHlCQUF5QixxRUFBcUUsa0JBQWtCLG1CQUFtQixvRkFBb0YsV0FBVyxzQkFBc0IsZ0JBQWdCLHlCQUF5QixpRUFBaUUsd0NBQXdDLGFBQWEsdUNBQXVDLHlCQUF5QixnQ0FBZ0MsU0FBUyxpRUFBaUUsYUFBYSxzREFBc0Qsa0RBQWtELDZCQUE2QixnQkFBZ0IsY0FBYyx1SUFBdUksaUJBQWlCLGtHQUFrRyxjQUFjLGdFQUFnRSxjQUFjLHNCQUFzQiwyQkFBMkIsMEJBQTBCLDhFQUE4RSxjQUFjLGtFQUFrRSxjQUFjLGdOQUFnTixlQUFlLHdNQUF3TSxnQkFBZ0IsdW9CQUF1b0IsbUJBQW1CLHdtQkFBd21CLGtCQUFrQiw0Q0FBNEMsZ0JBQWdCLGdCQUFnQixpRUFBaUUsZ0JBQWdCLDZCQUE2QixtRUFBbUUsZ0JBQWdCLGdCQUFnQiwrRUFBK0UsNkJBQTZCLCtEQUErRCxtQkFBbUIsK0JBQStCLGdCQUFnQix5WkFBeVosWUFBWSxvTEFBb0wsTUFBTSxZQUFZLFVBQVUsWUFBWSw0S0FBNEssZ0JBQWdCLGdmQUFnZixZQUFZLGlCQUFpQixXQUFXLGtCQUFrQixlQUFlLGdnQkFBZ2dCLHlCQUF5Qix3UEFBd1AsVUFBVSxNQUFNLHdQQUF3UCxXQUFXLFNBQVMsNkZBQTZGLFFBQVEsVUFBVSxvT0FBb08sZUFBZSx3TUFBd00sWUFBWSxVQUFVLFlBQVksTUFBTSx3SkFBd0osV0FBVyw0SkFBNEosY0FBYyx3Q0FBd0MsV0FBVyxnQkFBZ0Isa0JBQWtCLHVGQUF1RixrQkFBa0Isc0NBQXNDLGlCQUFpQixvREFBb0QsaUJBQWlCLCtCQUErQixtQkFBbUIsNkJBQTZCLGdCQUFnQixnRUFBZ0UsK0JBQStCLGdCQUFnQiw4REFBOEQseUJBQXlCLHdCQUF3QixpQkFBaUIsbUJBQW1CLDBFQUEwRSxnQkFBZ0IseUVBQXlFLG1CQUFtQiwyQ0FBMkMsMEJBQTBCLGdDQUFnQyxrQkFBa0IsK0NBQStDLFdBQVcsNkRBQTZELCtCQUErQiwyREFBMkQsNkJBQTZCLHdCQUF3QixxRUFBcUUsaUNBQWlDLDBDQUEwQyxZQUFZLGdCQUFnQixpQkFBaUIsNENBQTRDLGlCQUFpQixtREFBbUQsT0FBTyxXQUFXLDhDQUE4QyxPQUFPLHNEQUFzRCxtQkFBbUIsNkJBQTZCLGtFQUFrRSw4QkFBOEIsZ0JBQWdCLGdFQUFnRSx5QkFBeUIsdUJBQXVCLGtCQUFrQixtQkFBbUIsNEVBQTRFLGdCQUFnQiwyRUFBMkUsbUJBQW1CLDRDQUE0QywwQkFBMEIsZ0NBQWdDLGlCQUFpQiwrREFBK0QsOEJBQThCLDZEQUE2RCw2QkFBNkIsd0JBQXdCLHVFQUF1RSxpQ0FBaUMsaURBQWlELHFCQUFxQixvQkFBb0IsaUNBQWlDLG9CQUFvQixrQkFBa0IsT0FBTyxRQUFRLGlDQUFpQyxtQkFBbUIsZ0NBQWdDLG1CQUFtQixrQkFBa0IsT0FBTyxRQUFRLGdDQUFnQyw4QkFBOEIsR0FBRyxVQUFVLHFCQUFxQiwyQkFBMkIsR0FBRyxVQUFVLHFCQUFxQix5QkFBeUIsOEJBQThCLEdBQUcscUJBQXFCLHdCQUF3QixVQUFVLEtBQUsscUJBQXFCLDJCQUEyQixXQUFXLDZCQUE2QixHQUFHLFVBQVUscUJBQXFCLDRCQUE0QixHQUFHLFVBQVUscUJBQXFCLHlCQUF5Qiw2QkFBNkIsR0FBRyxxQkFBcUIsd0JBQXdCLFVBQVUsS0FBSyxxQkFBcUIsNEJBQTRCLFdBQVcsU0FBUyxrQkFBa0IsZUFBZSxnQkFBZ0IsY0FBYyxzQkFBc0Isa0JBQWtCLGdCQUFnQixrQkFBa0IsV0FBVyxZQUFZLHFCQUFxQixrQkFBa0IsU0FBUyxRQUFRLCtCQUErQixjQUFjLGVBQWUseUJBQXlCLGtCQUFrQixPQUFPLFFBQVEsV0FBVyx5QkFBeUIsY0FBYyxtQkFBbUIsVUFBVSwyQ0FBMkMseUJBQXlCLHdFQUF3RSx5QkFBeUIsV0FBVyx5REFBeUQseUJBQXlCLHVCQUF1QixhQUFhLG1CQUFtQixZQUFZLGVBQWUsa0RBQWtELFlBQVkseUNBQXlDLGlCQUFpQiw0Q0FBNEMsWUFBWSw4Q0FBOEMsb0JBQW9CLDhEQUE4RCxtQkFBbUIsMkJBQTJCLGVBQWUsY0FBYyxlQUFlLG9CQUFvQixxQ0FBcUMsb0NBQW9DLHdCQUF3QixtQ0FBbUMsa0JBQWtCLGVBQWUscUJBQXFCLGVBQWUsNEJBQTRCLGlCQUFpQixlQUFlLGNBQWMsc0NBQXNDLGdCQUFnQiw2QkFBNkIsa0RBQWtELGNBQWMsNEVBQTRFLHlCQUF5QixVQUFVLFdBQVcsaUJBQWlCLFNBQVMsc0JBQXNCLGtCQUFrQixrQkFBa0Isc0JBQXNCLGdCQUFnQixVQUFVLGFBQWEsbUJBQW1CLHVCQUF1Qix1Q0FBdUMsY0FBYywrRUFBK0UsV0FBVyxvQkFBb0IsdUJBQXVCLDRCQUE0Qix5QkFBeUIsY0FBYyxtREFBbUQsY0FBYywyQkFBMkIseUJBQXlCLFdBQVcseUJBQXlCLHlCQUF5QixjQUFjLHdCQUF3Qix5QkFBeUIsV0FBVyx1Q0FBdUMsY0FBYyw0QkFBNEIseUJBQXlCLGNBQWMsbURBQW1ELGNBQWMsMkJBQTJCLHlCQUF5QixXQUFXLDBCQUEwQix5QkFBeUIsY0FBYyxpREFBaUQsY0FBYyx5QkFBeUIseUJBQXlCLFdBQVcsbUJBQW1CLG1CQUFtQixjQUFjLGdCQUFnQixlQUFlLFdBQVcsdUJBQXVCLGVBQWUsV0FBVyxpQkFBaUIsZUFBZSxpQkFBaUIseUJBQXlCLGdCQUFnQixpQ0FBaUMsZUFBZSxlQUFlLG9CQUFvQixlQUFlLFVBQVUsa0JBQWtCLFNBQVMsV0FBVyxlQUFlLDJKQUEySixVQUFVLGtEQUFrRCxXQUFXLGdDQUFnQyxrQkFBa0IsZUFBZSxRQUFRLGlCQUFpQixhQUFhLFlBQVksNEJBQTRCLGtCQUFrQixzQkFBc0IseUJBQXlCLGVBQWUsc0JBQXNCLHVDQUF1QywyRUFBMkUsZ0JBQWdCLHNCQUFzQixVQUFVLHdCQUF3QixpQkFBaUIsaUJBQWlCLHdCQUF3QixnQkFBZ0IsZUFBZSxjQUFjLFNBQVMsMEJBQTBCLGVBQWUsaUJBQWlCLGVBQWUsY0FBYyxtQkFBbUIsNEJBQTRCLFNBQVMsdUJBQXVCLFlBQVksV0FBVyxlQUFlLDJCQUEyQixrQkFBa0IsU0FBUyxXQUFXLGVBQWUsY0FBYyxlQUFlLGlDQUFpQyxjQUFjLGtDQUFrQyxjQUFjLGdDQUFnQyxjQUFjLCtCQUErQixjQUFjLGtDQUFrQyxjQUFjLGtDQUFrQyxRQUFRLDJCQUEyQixpQ0FBaUMsT0FBTyw0QkFBNEIsaUJBQWlCLGtCQUFrQixxQkFBcUIsWUFBWSxpQkFBaUIsMkJBQTJCLGNBQWMsa0NBQWtDLHdCQUF3QixrQkFBa0IsbUJBQW1CLGtCQUFrQixzREFBc0Qsa0JBQWtCLFVBQVUsUUFBUSxXQUFXLFlBQVksa0JBQWtCLG1CQUFtQixjQUFjLGVBQWUsZUFBZSxrRUFBa0UsY0FBYyxnTUFBZ00scUJBQXFCLDhFQUE4RSxjQUFjLG1CQUFtQiwyQkFBMkIsVUFBVSwwQkFBMEIsOEJBQThCLDJCQUEyQixTQUFTLDBCQUEwQiwrQkFBK0IsZ0hBQWdILHFCQUFxQixjQUFjLDRIQUE0SCxjQUFjLG1CQUFtQix5QkFBeUIsWUFBWSxpQkFBaUIsd0dBQXdHLFdBQVcsZUFBZSwwQ0FBMEMsa0JBQWtCLG1CQUFtQix3QkFBd0IsWUFBWSxpQkFBaUIsc0dBQXNHLFdBQVcsZUFBZSx3SUFBd0ksb0JBQW9CLHlDQUF5QyxrQkFBa0IsbUJBQW1CLHVCQUF1QixZQUFZLGlCQUFpQixvR0FBb0csV0FBVyxlQUFlLHNJQUFzSSxvQkFBb0Isd0NBQXdDLGtCQUFrQixtQkFBbUIsc0RBQXNELGtCQUFrQixtQkFBbUIsb0RBQW9ELGtCQUFrQixtQkFBbUIsNEhBQTRILFlBQVksaUJBQWlCLDhKQUE4SixvQkFBb0IsOERBQThELHdCQUF3QixnQ0FBZ0MsOERBQThELFVBQVUsV0FBVyxTQUFTLFVBQVUsa0JBQWtCLDhCQUE4QixzQkFBc0Isd0lBQXdJLGlCQUFpQixzSUFBc0ksaUJBQWlCLG9JQUFvSSxpQkFBaUIseURBQXlELGdCQUFnQixvQkFBb0Isa0JBQWtCLGtCQUFrQixhQUFhLGFBQWEsZUFBZSxnQkFBZ0IsZUFBZSxxQkFBcUIsNkVBQTZFLGtCQUFrQixjQUFjLFFBQVEsU0FBUyx5QkFBeUIsbUJBQW1CLG1DQUFtQyxpQkFBaUIsMENBQTBDLGNBQWMsaUJBQWlCLDZhQUE2YSxhQUFhLHNDQUFzQyxtQkFBbUIscURBQXFELFlBQVkseUJBQXlCLHNCQUFzQiw0REFBNEQsV0FBVyxpQkFBaUIseUJBQXlCLHNCQUFzQix5Q0FBeUMsZ0JBQWdCLHdEQUF3RCxTQUFTLG1CQUFtQiw0QkFBNEIsK0RBQStELFFBQVEsaUJBQWlCLG1CQUFtQiw0QkFBNEIsd0NBQXdDLGlCQUFpQix1REFBdUQsVUFBVSwyQkFBMkIsb0JBQW9CLDhEQUE4RCxZQUFZLFNBQVMsMkJBQTJCLG9CQUFvQix1Q0FBdUMsa0JBQWtCLHNEQUFzRCxXQUFXLHFCQUFxQiwwQkFBMEIsNkRBQTZELFVBQVUsWUFBWSxpQkFBaUIscUJBQXFCLDBCQUEwQiw0QkFBNEIsbUJBQW1CLFdBQVcsNkJBQTZCLGdCQUFnQix5QkFBeUIsOERBQThELHlCQUF5QixxRUFBcUUsc0JBQXNCLGlFQUFpRSw0QkFBNEIsd0VBQXdFLHlCQUF5QiwrREFBK0QsMEJBQTBCLHNFQUFzRSx1QkFBdUIsZ0VBQWdFLDJCQUEyQix1RUFBdUUsd0JBQXdCLHFDQUFxQyxjQUFjLHlFQUF5RSxxQkFBcUIsc0JBQXNCLGtCQUFrQixXQUFXLG1CQUFtQixXQUFXLFdBQVcsY0FBYyx5QkFBeUIsa0JBQWtCLGtCQUFrQixlQUFlLHNCQUFzQiw4QkFBOEIsbUJBQW1CLFdBQVcsNEJBQTRCLGVBQWUsNENBQTRDLHlCQUF5QiwrQ0FBK0MscUJBQXFCLDBMQUEwTCxtQkFBbUIsa0tBQWtLLG1CQUFtQixtQkFBbUIsNENBQTRDLG1DQUFtQyxrQkFBa0Isa0JBQWtCLFlBQVksZUFBZSxZQUFZLHdDQUF3QyxlQUFlLDBDQUEwQyxhQUFhLHlDQUF5QyxnQkFBZ0IsZ0JBQWdCLFdBQVcseUJBQXlCLDJCQUEyQiw4QkFBOEIsa0JBQWtCLDJCQUEyQixZQUFZLFdBQVcsYUFBYSxVQUFVLDJCQUEyQiw2QkFBNkIsa0JBQWtCLHlCQUF5QixzQkFBc0IsaUJBQWlCLG1CQUFtQiw4REFBOEQsc0JBQXNCLHFCQUFxQixrQ0FBa0MsWUFBWSxrRUFBa0UsWUFBWSxvQ0FBb0MsZ0JBQWdCLG1CQUFtQixXQUFXLFlBQVkseUJBQXlCLHNCQUFzQixrQkFBa0IsZUFBZSx5QkFBeUIsc0JBQXNCLGlCQUFpQiw4RUFBOEUscUJBQXFCLGtEQUFrRCxZQUFZLDRCQUE0QixnQkFBZ0IsaUJBQWlCLFdBQVcsVUFBVSxtQkFBbUIsc0JBQXNCLDJCQUEyQixrQkFBa0IsTUFBTSxVQUFVLFdBQVcsWUFBWSx1QkFBdUIsa0JBQWtCLDJCQUEyQixlQUFlLGNBQWMsZ0JBQWdCLHVCQUF1QixrQkFBa0IsMENBQTBDLFVBQVUsWUFBWSxjQUFjLHVDQUF1QyxVQUFVLFlBQVksMEJBQTBCLGtEQUFrRCxTQUFTLFdBQVcsMEJBQTBCLHdDQUF3QywwQkFBMEIsNkNBQTZDLG9CQUFvQiwrREFBK0QsaUJBQWlCLFdBQVcsa0JBQWtCLFlBQVksV0FBVyxnQkFBZ0IsZ0ZBQWdGLGtCQUFrQixpQkFBaUIsa0JBQWtCLG9MQUFvTCxTQUFTLGdCQUFnQix5QkFBeUIsaUJBQWlCLHNCQUFzQiwyREFBMkQsMEZBQTBGLFdBQVcsV0FBVyw4QkFBOEIsMEZBQTBGLFdBQVcsK0JBQStCLHFIQUFxSCw0QkFBNEIsNkJBQTZCLGdNQUFnTSxxQkFBcUIsa01BQWtNLHFCQUFxQiw4Q0FBOEMsYUFBYSxVQUFVLDBCQUEwQiw2QkFBNkIsNEJBQTRCLDJCQUEyQiwwQkFBMEIsaUJBQWlCLGtCQUFrQixhQUFhLHNDQUFzQyxTQUFTLE1BQU0sUUFBUSxTQUFTLE9BQU8sdUJBQXVCLCtCQUErQixlQUFlLG1EQUFtRCxpQkFBaUIsNkRBQTZELFlBQVksV0FBVyxvQkFBb0IsUUFBUSxpQkFBaUIsV0FBVyxrQkFBa0Isa0JBQWtCLDZ6QkFBNnpCLGtCQUFrQixxQ0FBcUMsY0FBYyxhQUFhLGVBQWUsOEJBQThCLFlBQVksV0FBVyw0Q0FBNEMsMEJBQTBCLGlEQUFpRCx3QkFBd0Isb0JBQW9CLGVBQWUsZUFBZSxxQkFBcUIsc0JBQXNCLGNBQWMsMEJBQTBCLEtBQUssMEJBQTBCLHdCQUF3QixHQUFHLHVCQUF1QixvQkFBb0IsSUFBSSx3QkFBd0Isd0JBQXdCLEtBQUssd0JBQXdCLDBCQUEwQixRQUFRLHNCQUFzQiwrQkFBK0IsY0FBYyxlQUFlLFdBQVcsY0FBYyxhQUFhLG1EQUFtRCxhQUFhLGdDQUFnQyx1QkFBdUIsNkJBQTZCLHlCQUF5Qix1Q0FBdUMsOEJBQThCLHNDQUFzQyw2QkFBNkIsMkJBQTJCLHVCQUF1Qiw4QkFBOEIsbUJBQW1CLDhCQUE4QixxQkFBcUIsaUJBQWlCLFdBQVcsc0JBQXNCLFVBQVUsU0FBUyxlQUFlLFFBQVEsZUFBZSxPQUFPLFVBQVUsZUFBZSxpQkFBaUIscUJBQXFCLGVBQWUsZUFBZSxlQUFlLGNBQWMsVUFBVSxlQUFlLGlCQUFpQixxQkFBcUIsZUFBZSxlQUFlLGVBQWUsY0FBYyxVQUFVLFlBQVksaUJBQWlCLGtCQUFrQixlQUFlLFlBQVksZUFBZSxXQUFXLFVBQVUsZ0JBQWdCLGlCQUFpQixzQkFBc0IsZUFBZSxnQkFBZ0IsZUFBZSxlQUFlLFVBQVUsZ0JBQWdCLGlCQUFpQixzQkFBc0IsZUFBZSxnQkFBZ0IsZUFBZSxlQUFlLFVBQVUsVUFBVSxpQkFBaUIsZ0JBQWdCLGVBQWUsVUFBVSxlQUFlLFNBQVMsVUFBVSxnQkFBZ0IsaUJBQWlCLHNCQUFzQixlQUFlLGdCQUFnQixlQUFlLGVBQWUsVUFBVSxnQkFBZ0IsaUJBQWlCLHNCQUFzQixlQUFlLGdCQUFnQixlQUFlLGVBQWUsVUFBVSxZQUFZLGlCQUFpQixrQkFBa0IsZUFBZSxZQUFZLGVBQWUsV0FBVyxXQUFXLGdCQUFnQixrQkFBa0Isc0JBQXNCLGdCQUFnQixnQkFBZ0IsZ0JBQWdCLGVBQWUsV0FBVyxnQkFBZ0Isa0JBQWtCLHNCQUFzQixnQkFBZ0IsZ0JBQWdCLGdCQUFnQixlQUFlLFdBQVcsVUFBVSxrQkFBa0IsZ0JBQWdCLGdCQUFnQixVQUFVLGdCQUFnQixTQUFTLFdBQVcsZ0JBQWdCLGtCQUFrQixzQkFBc0IsZ0JBQWdCLGdCQUFnQixnQkFBZ0IsZUFBZSxXQUFXLGdCQUFnQixrQkFBa0Isc0JBQXNCLGdCQUFnQixnQkFBZ0IsZ0JBQWdCLGVBQWUsV0FBVyxZQUFZLGtCQUFrQixrQkFBa0IsZ0JBQWdCLFlBQVksZ0JBQWdCLFdBQVcsV0FBVyxnQkFBZ0Isa0JBQWtCLHNCQUFzQixnQkFBZ0IsZ0JBQWdCLGdCQUFnQixlQUFlLFdBQVcsZ0JBQWdCLGtCQUFrQixzQkFBc0IsZ0JBQWdCLGdCQUFnQixnQkFBZ0IsZUFBZSxXQUFXLFVBQVUsa0JBQWtCLGdCQUFnQixnQkFBZ0IsVUFBVSxnQkFBZ0IsU0FBUyxXQUFXLGdCQUFnQixrQkFBa0Isc0JBQXNCLGdCQUFnQixnQkFBZ0IsZ0JBQWdCLGVBQWUsV0FBVyxnQkFBZ0Isa0JBQWtCLHNCQUFzQixnQkFBZ0IsZ0JBQWdCLGdCQUFnQixlQUFlLFdBQVcsWUFBWSxrQkFBa0Isa0JBQWtCLGdCQUFnQixZQUFZLGdCQUFnQixXQUFXLFdBQVcsZ0JBQWdCLGtCQUFrQixzQkFBc0IsZ0JBQWdCLGdCQUFnQixnQkFBZ0IsZUFBZSxXQUFXLGdCQUFnQixrQkFBa0Isc0JBQXNCLGdCQUFnQixnQkFBZ0IsZ0JBQWdCLGVBQWUsV0FBVyxXQUFXLGtCQUFrQixpQkFBaUIsZ0JBQWdCLFdBQVcsZ0JBQWdCLFVBQVUseUNBQXlDLGFBQWEsYUFBYSxTQUFTLG9CQUFvQixjQUFjLGtCQUFrQixrQkFBa0IsUUFBUSxrQkFBa0Isa0JBQWtCLE9BQU8sYUFBYSxlQUFlLG9CQUFvQixxQkFBcUIsa0JBQWtCLGtCQUFrQixlQUFlLGtCQUFrQixrQkFBa0IsY0FBYyxhQUFhLGVBQWUsb0JBQW9CLHFCQUFxQixrQkFBa0Isa0JBQWtCLGVBQWUsa0JBQWtCLGtCQUFrQixjQUFjLGFBQWEsWUFBWSxvQkFBb0Isa0JBQWtCLGtCQUFrQixrQkFBa0IsWUFBWSxrQkFBa0Isa0JBQWtCLFdBQVcsYUFBYSxnQkFBZ0Isb0JBQW9CLHNCQUFzQixrQkFBa0Isa0JBQWtCLGdCQUFnQixrQkFBa0Isa0JBQWtCLGVBQWUsYUFBYSxnQkFBZ0Isb0JBQW9CLHNCQUFzQixrQkFBa0Isa0JBQWtCLGdCQUFnQixrQkFBa0Isa0JBQWtCLGVBQWUsYUFBYSxVQUFVLG9CQUFvQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixVQUFVLGtCQUFrQixrQkFBa0IsU0FBUyxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLFlBQVksb0JBQW9CLGtCQUFrQixrQkFBa0Isa0JBQWtCLFlBQVksa0JBQWtCLGtCQUFrQixXQUFXLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsVUFBVSxxQkFBcUIsZ0JBQWdCLG1CQUFtQixrQkFBa0IsVUFBVSxtQkFBbUIsa0JBQWtCLFNBQVMsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxZQUFZLHFCQUFxQixrQkFBa0IsbUJBQW1CLGtCQUFrQixZQUFZLG1CQUFtQixrQkFBa0IsV0FBVyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFVBQVUscUJBQXFCLGdCQUFnQixtQkFBbUIsa0JBQWtCLFVBQVUsbUJBQW1CLGtCQUFrQixTQUFTLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsWUFBWSxxQkFBcUIsa0JBQWtCLG1CQUFtQixrQkFBa0IsWUFBWSxtQkFBbUIsa0JBQWtCLFdBQVcsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxXQUFXLHFCQUFxQixpQkFBaUIsbUJBQW1CLGtCQUFrQixXQUFXLG1CQUFtQixrQkFBa0IsV0FBVyx5Q0FBeUMsYUFBYSxhQUFhLFNBQVMsb0JBQW9CLGNBQWMsa0JBQWtCLGtCQUFrQixRQUFRLGtCQUFrQixrQkFBa0IsT0FBTyxhQUFhLGVBQWUsb0JBQW9CLHFCQUFxQixrQkFBa0Isa0JBQWtCLGVBQWUsa0JBQWtCLGtCQUFrQixjQUFjLGFBQWEsZUFBZSxvQkFBb0IscUJBQXFCLGtCQUFrQixrQkFBa0IsZUFBZSxrQkFBa0Isa0JBQWtCLGNBQWMsYUFBYSxZQUFZLG9CQUFvQixrQkFBa0Isa0JBQWtCLGtCQUFrQixZQUFZLGtCQUFrQixrQkFBa0IsV0FBVyxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLFVBQVUsb0JBQW9CLGdCQUFnQixrQkFBa0Isa0JBQWtCLFVBQVUsa0JBQWtCLGtCQUFrQixTQUFTLGFBQWEsZ0JBQWdCLG9CQUFvQixzQkFBc0Isa0JBQWtCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixlQUFlLGFBQWEsZ0JBQWdCLG9CQUFvQixzQkFBc0Isa0JBQWtCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixlQUFlLGFBQWEsWUFBWSxvQkFBb0Isa0JBQWtCLGtCQUFrQixrQkFBa0IsWUFBWSxrQkFBa0Isa0JBQWtCLFdBQVcsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxVQUFVLHFCQUFxQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixVQUFVLG1CQUFtQixrQkFBa0IsU0FBUyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFlBQVkscUJBQXFCLGtCQUFrQixtQkFBbUIsa0JBQWtCLFlBQVksbUJBQW1CLGtCQUFrQixXQUFXLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsVUFBVSxxQkFBcUIsZ0JBQWdCLG1CQUFtQixrQkFBa0IsVUFBVSxtQkFBbUIsa0JBQWtCLFNBQVMsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxZQUFZLHFCQUFxQixrQkFBa0IsbUJBQW1CLGtCQUFrQixZQUFZLG1CQUFtQixrQkFBa0IsV0FBVyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFdBQVcscUJBQXFCLGlCQUFpQixtQkFBbUIsa0JBQWtCLFdBQVcsbUJBQW1CLGtCQUFrQixXQUFXLHlDQUF5QyxhQUFhLGFBQWEsU0FBUyxvQkFBb0IsY0FBYyxrQkFBa0Isa0JBQWtCLFFBQVEsa0JBQWtCLGtCQUFrQixPQUFPLGFBQWEsZUFBZSxvQkFBb0IscUJBQXFCLGtCQUFrQixrQkFBa0IsZUFBZSxrQkFBa0Isa0JBQWtCLGNBQWMsYUFBYSxlQUFlLG9CQUFvQixxQkFBcUIsa0JBQWtCLGtCQUFrQixlQUFlLGtCQUFrQixrQkFBa0IsY0FBYyxhQUFhLFlBQVksb0JBQW9CLGtCQUFrQixrQkFBa0Isa0JBQWtCLFlBQVksa0JBQWtCLGtCQUFrQixXQUFXLGFBQWEsZ0JBQWdCLG9CQUFvQixzQkFBc0Isa0JBQWtCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixlQUFlLGFBQWEsZ0JBQWdCLG9CQUFvQixzQkFBc0Isa0JBQWtCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixlQUFlLGFBQWEsVUFBVSxvQkFBb0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsVUFBVSxrQkFBa0Isa0JBQWtCLFNBQVMsYUFBYSxnQkFBZ0Isb0JBQW9CLHNCQUFzQixrQkFBa0Isa0JBQWtCLGdCQUFnQixrQkFBa0Isa0JBQWtCLGVBQWUsYUFBYSxnQkFBZ0Isb0JBQW9CLHNCQUFzQixrQkFBa0Isa0JBQWtCLGdCQUFnQixrQkFBa0Isa0JBQWtCLGVBQWUsYUFBYSxZQUFZLG9CQUFvQixrQkFBa0Isa0JBQWtCLGtCQUFrQixZQUFZLGtCQUFrQixrQkFBa0IsV0FBVyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFVBQVUscUJBQXFCLGdCQUFnQixtQkFBbUIsa0JBQWtCLFVBQVUsbUJBQW1CLGtCQUFrQixTQUFTLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsWUFBWSxxQkFBcUIsa0JBQWtCLG1CQUFtQixrQkFBa0IsWUFBWSxtQkFBbUIsa0JBQWtCLFdBQVcsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxVQUFVLHFCQUFxQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixVQUFVLG1CQUFtQixrQkFBa0IsU0FBUyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFlBQVkscUJBQXFCLGtCQUFrQixtQkFBbUIsa0JBQWtCLFlBQVksbUJBQW1CLGtCQUFrQixXQUFXLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsV0FBVyxxQkFBcUIsaUJBQWlCLG1CQUFtQixrQkFBa0IsV0FBVyxtQkFBbUIsa0JBQWtCLFdBQVcsMENBQTBDLGFBQWEsYUFBYSxTQUFTLG9CQUFvQixjQUFjLGtCQUFrQixrQkFBa0IsUUFBUSxrQkFBa0Isa0JBQWtCLE9BQU8sYUFBYSxlQUFlLG9CQUFvQixxQkFBcUIsa0JBQWtCLGtCQUFrQixlQUFlLGtCQUFrQixrQkFBa0IsY0FBYyxhQUFhLGVBQWUsb0JBQW9CLHFCQUFxQixrQkFBa0Isa0JBQWtCLGVBQWUsa0JBQWtCLGtCQUFrQixjQUFjLGFBQWEsWUFBWSxvQkFBb0Isa0JBQWtCLGtCQUFrQixrQkFBa0IsWUFBWSxrQkFBa0Isa0JBQWtCLFdBQVcsYUFBYSxnQkFBZ0Isb0JBQW9CLHNCQUFzQixrQkFBa0Isa0JBQWtCLGdCQUFnQixrQkFBa0Isa0JBQWtCLGVBQWUsYUFBYSxnQkFBZ0Isb0JBQW9CLHNCQUFzQixrQkFBa0Isa0JBQWtCLGdCQUFnQixrQkFBa0Isa0JBQWtCLGVBQWUsYUFBYSxVQUFVLG9CQUFvQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixVQUFVLGtCQUFrQixrQkFBa0IsU0FBUyxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLFlBQVksb0JBQW9CLGtCQUFrQixrQkFBa0Isa0JBQWtCLFlBQVksa0JBQWtCLGtCQUFrQixXQUFXLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsVUFBVSxxQkFBcUIsZ0JBQWdCLG1CQUFtQixrQkFBa0IsVUFBVSxtQkFBbUIsa0JBQWtCLFNBQVMsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxZQUFZLHFCQUFxQixrQkFBa0IsbUJBQW1CLGtCQUFrQixZQUFZLG1CQUFtQixrQkFBa0IsV0FBVyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFVBQVUscUJBQXFCLGdCQUFnQixtQkFBbUIsa0JBQWtCLFVBQVUsbUJBQW1CLGtCQUFrQixTQUFTLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsWUFBWSxxQkFBcUIsa0JBQWtCLG1CQUFtQixrQkFBa0IsWUFBWSxtQkFBbUIsa0JBQWtCLFdBQVcsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxXQUFXLHFCQUFxQixpQkFBaUIsbUJBQW1CLGtCQUFrQixXQUFXLG1CQUFtQixrQkFBa0IsV0FBVywwQ0FBMEMsYUFBYSxhQUFhLFNBQVMsb0JBQW9CLGNBQWMsa0JBQWtCLGtCQUFrQixRQUFRLGtCQUFrQixrQkFBa0IsT0FBTyxhQUFhLGVBQWUsb0JBQW9CLHFCQUFxQixrQkFBa0Isa0JBQWtCLGVBQWUsa0JBQWtCLGtCQUFrQixjQUFjLGFBQWEsZUFBZSxvQkFBb0IscUJBQXFCLGtCQUFrQixrQkFBa0IsZUFBZSxrQkFBa0Isa0JBQWtCLGNBQWMsYUFBYSxZQUFZLG9CQUFvQixrQkFBa0Isa0JBQWtCLGtCQUFrQixZQUFZLGtCQUFrQixrQkFBa0IsV0FBVyxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLFVBQVUsb0JBQW9CLGdCQUFnQixrQkFBa0Isa0JBQWtCLFVBQVUsa0JBQWtCLGtCQUFrQixTQUFTLGFBQWEsZ0JBQWdCLG9CQUFvQixzQkFBc0Isa0JBQWtCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixlQUFlLGFBQWEsZ0JBQWdCLG9CQUFvQixzQkFBc0Isa0JBQWtCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixlQUFlLGFBQWEsWUFBWSxvQkFBb0Isa0JBQWtCLGtCQUFrQixrQkFBa0IsWUFBWSxrQkFBa0Isa0JBQWtCLFdBQVcsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxVQUFVLHFCQUFxQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixVQUFVLG1CQUFtQixrQkFBa0IsU0FBUyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFlBQVkscUJBQXFCLGtCQUFrQixtQkFBbUIsa0JBQWtCLFlBQVksbUJBQW1CLGtCQUFrQixXQUFXLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsVUFBVSxxQkFBcUIsZ0JBQWdCLG1CQUFtQixrQkFBa0IsVUFBVSxtQkFBbUIsa0JBQWtCLFNBQVMsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxZQUFZLHFCQUFxQixrQkFBa0IsbUJBQW1CLGtCQUFrQixZQUFZLG1CQUFtQixrQkFBa0IsV0FBVyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0Is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QUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLFlBQVksb0JBQW9CLGtCQUFrQixrQkFBa0Isa0JBQWtCLFlBQVksa0JBQWtCLGtCQUFrQixXQUFXLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsVUFBVSxxQkFBcUIsZ0JBQWdCLG1CQUFtQixrQkFBa0IsVUFBVSxtQkFBbUIsa0JBQWtCLFNBQVMsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxZQUFZLHFCQUFxQixrQkFBa0IsbUJBQW1CLGtCQUFrQixZQUFZLG1CQUFtQixrQkFBa0IsV0FBVyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFVBQVUscUJBQXFCLGdCQUFnQixtQkFBbUIsa0JBQWtCLFVBQVUsbUJBQW1CLGtCQUFrQixTQUFTLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsWUFBWSxxQkFBcUIsa0JBQWtCLG1CQUFtQixrQkFBa0IsWUFBWSxtQkFBbUIsa0JBQWtCLFdBQVcsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxXQUFXLHFCQUFxQixpQkFBaUIsbUJBQW1CLGtCQUFrQixXQUFXLG1CQUFtQixrQkFBa0IsV0FBVyx5Q0FBeUMsYUFBYSxhQUFhLFNBQVMsb0JBQW9CLGNBQWMsa0JBQWtCLGtCQUFrQixRQUFRLGtCQUFrQixrQkFBa0IsT0FBTyxhQUFhLGVBQWUsb0JBQW9CLHFCQUFxQixrQkFBa0Isa0JBQWtCLGVBQWUsa0JBQWtCLGtCQUFrQixjQUFjLGFBQWEsZUFBZSxvQkFBb0IscUJBQXFCLGtCQUFrQixrQkFBa0IsZUFBZSxrQkFBa0Isa0JBQWtCLGNBQWMsYUFBYSxZQUFZLG9CQUFvQixrQkFBa0Isa0JBQWtCLGtCQUFrQixZQUFZLGtCQUFrQixrQkFBa0IsV0FBVyxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLFVBQVUsb0JBQW9CLGdCQUFnQixrQkFBa0Isa0JBQWtCLFVBQVUsa0JBQWtCLGtCQUFrQixTQUFTLGFBQWEsZ0JBQWdCLG9CQUFvQixzQkFBc0Isa0JBQWtCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixlQUFlLGFBQWEsZ0JBQWdCLG9CQUFvQixzQkFBc0Isa0JBQWtCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixlQUFlLGFBQWEsWUFBWSxvQkFBb0Isa0JBQWtCLGtCQUFrQixrQkFBa0IsWUFBWSxrQkFBa0Isa0JBQWtCLFdBQVcsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxVQUFVLHFCQUFxQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixVQUFVLG1CQUFtQixrQkFBa0IsU0FBUyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFlBQVkscUJBQXFCLGtCQUFrQixtQkFBbUIsa0JBQWtCLFlBQVksbUJBQW1CLGtCQUFrQixXQUFXLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsVUFBVSxxQkFBcUIsZ0JBQWdCLG1CQUFtQixrQkFBa0IsVUFBVSxtQkFBbUIsa0JBQWtCLFNBQVMsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxZQUFZLHFCQUFxQixrQkFBa0IsbUJBQW1CLGtCQUFrQixZQUFZLG1CQUFtQixrQkFBa0IsV0FBVyxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLGdCQUFnQixxQkFBcUIsc0JBQXNCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLFdBQVcs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YyxhQUFhLGVBQWUsb0JBQW9CLHFCQUFxQixrQkFBa0Isa0JBQWtCLGVBQWUsa0JBQWtCLGtCQUFrQixjQUFjLGFBQWEsWUFBWSxvQkFBb0Isa0JBQWtCLGtCQUFrQixrQkFBa0IsWUFBWSxrQkFBa0Isa0JBQWtCLFdBQVcsYUFBYSxnQkFBZ0Isb0JBQW9CLHNCQUFzQixrQkFBa0Isa0JBQWtCLGdCQUFnQixrQkFBa0Isa0JBQWtCLGVBQWUsYUFBYSxnQkFBZ0Isb0JBQW9CLHNCQUFzQixrQkFBa0Isa0JBQWtCLGdCQUFnQixrQkFBa0Isa0JBQWtCLGVBQWUsYUFBYSxVQUFVLG9CQUFvQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixVQUFVLGtCQUFrQixrQkFBa0IsU0FBUyxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLGdCQUFnQixvQkFBb0Isc0JBQXNCLGtCQUFrQixrQkFBa0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsZUFBZSxhQUFhLFlBQVksb0JBQW9CLGtCQUFrQixrQkFBa0Isa0JBQWtCLFlBQVksa0JBQWtCLGtCQUFrQixXQUFXLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsZ0JBQWdCLHFCQUFxQixzQkFBc0IsbUJBQW1CLGtCQUFrQixnQkFBZ0IsbUJBQW1CLGtCQUFrQixlQUFlLGNBQWMsVUFBVSxxQkFBcUIsZ0JBQWdCLG1CQUFtQixrQkFBa0IsVUFBVSxtQkFBbUIsa0JBQWtCLFNBQVMsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLHNCQUFzQixtQkFBbUIsa0JBQWtCLGdCQUFnQixtQkFBbUIsa0JBQWtCLGVBQWUsY0FBYyxZQUFZLHFCQUFxQixrQkFBa0IsbUJBQW1CLGtCQUFrQixZQUFZLG1CQUFtQixrQkFBa0IsV0FB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QkFBbUIscURBQXFELGtCQUFrQiwrQkFBK0Isc0JBQXNCLHlCQUF5QixXQUFXLG9CQUFvQixvQkFBb0IsYUFBYSx3QkFBd0IscUJBQXFCLHVCQUF1Qix5QkFBeUIsc0JBQXNCLG1CQUFtQiwwQkFBMEIsc0JBQXNCLGtCQUFrQiw4QkFBOEIsc0JBQXNCLGtCQUFrQixxQkFBcUIsV0FBVyxZQUFZLG9CQUFvQixTQUFTLGVBQWUsY0FBYyxnQkFBZ0IscUJBQXFCLGdCQUFnQix1QkFBdUIsU0FBUyxlQUFlLGNBQWMsZ0JBQWdCLGtCQUFrQixnQkFBZ0IseUJBQXlCLGFBQWEsdUJBQXVCLGFBQWEsc0JBQXNCLGFBQWEseUJBQXlCLGFBQWEsbUJBQW1CO0FBQ2ptZ2hCO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvaW5kZXguY3NzPzIwMzYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fIGZyb20gXCIuL2ZvbnRzL2VsZW1lbnQtaWNvbnMud29mZlwiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fIGZyb20gXCIuL2ZvbnRzL2VsZW1lbnQtaWNvbnMudHRmXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7QGZvbnQtZmFjZXtmb250LWZhbWlseTplbGVtZW50LWljb25zO3NyYzp1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpIGZvcm1hdChcXFwid29mZlxcXCIpLHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gKyBcIikgZm9ybWF0KFxcXCJ0cnVldHlwZVxcXCIpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6XFxcImF1dG9cXFwiO2ZvbnQtc3R5bGU6bm9ybWFsfVtjbGFzcyo9XFxcIiBlbC1pY29uLVxcXCJdLFtjbGFzc149ZWwtaWNvbi1de2ZvbnQtZmFtaWx5OmVsZW1lbnQtaWNvbnMhaW1wb3J0YW50O3NwZWFrOm5vbmU7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtdmFyaWFudDpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtsaW5lLWhlaWdodDoxO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2Rpc3BsYXk6aW5saW5lLWJsb2NrOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfS5lbC1pY29uLWljZS1jcmVhbS1yb3VuZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YTBcXFwifS5lbC1pY29uLWljZS1jcmVhbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmEzXFxcIn0uZWwtaWNvbi1sb2xsaXBvcDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YTRcXFwifS5lbC1pY29uLXBvdGF0by1zdHJpcHM6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmE1XFxcIn0uZWwtaWNvbi1taWxrLXRlYTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YTZcXFwifS5lbC1pY29uLWljZS1kcmluazpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YTdcXFwifS5lbC1pY29uLWljZS10ZWE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmE5XFxcIn0uZWwtaWNvbi1jb2ZmZWU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmFhXFxcIn0uZWwtaWNvbi1vcmFuZ2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmFiXFxcIn0uZWwtaWNvbi1wZWFyOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZhY1xcXCJ9LmVsLWljb24tYXBwbGU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmFkXFxcIn0uZWwtaWNvbi1jaGVycnk6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmFlXFxcIn0uZWwtaWNvbi13YXRlcm1lbG9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZhZlxcXCJ9LmVsLWljb24tZ3JhcGU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmIwXFxcIn0uZWwtaWNvbi1yZWZyaWdlcmF0b3I6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmIxXFxcIn0uZWwtaWNvbi1nb2JsZXQtc3F1YXJlLWZ1bGw6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmIyXFxcIn0uZWwtaWNvbi1nb2JsZXQtc3F1YXJlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZiM1xcXCJ9LmVsLWljb24tZ29ibGV0LWZ1bGw6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmI0XFxcIn0uZWwtaWNvbi1nb2JsZXQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmI1XFxcIn0uZWwtaWNvbi1jb2xkLWRyaW5rOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZiNlxcXCJ9LmVsLWljb24tY29mZmVlLWN1cDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YjhcXFwifS5lbC1pY29uLXdhdGVyLWN1cDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YjlcXFwifS5lbC1pY29uLWhvdC13YXRlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YmFcXFwifS5lbC1pY29uLWljZS1jcmVhbTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YmJcXFwifS5lbC1pY29uLWRlc3NlcnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmJjXFxcIn0uZWwtaWNvbi1zdWdhcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YmRcXFwifS5lbC1pY29uLXRhYmxld2FyZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YmVcXFwifS5lbC1pY29uLWJ1cmdlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YmZcXFwifS5lbC1pY29uLWtuaWZlLWZvcms6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmMxXFxcIn0uZWwtaWNvbi1mb3JrLXNwb29uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjMlxcXCJ9LmVsLWljb24tY2hpY2tlbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YzNcXFwifS5lbC1pY29uLWZvb2Q6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmM0XFxcIn0uZWwtaWNvbi1kaXNoLTE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmM1XFxcIn0uZWwtaWNvbi1kaXNoOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjNlxcXCJ9LmVsLWljb24tbW9vbi1uaWdodDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZWVcXFwifS5lbC1pY29uLW1vb246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmYwXFxcIn0uZWwtaWNvbi1jbG91ZHktYW5kLXN1bm55OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmMVxcXCJ9LmVsLWljb24tcGFydGx5LWNsb3VkeTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZjJcXFwifS5lbC1pY29uLWNsb3VkeTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZjNcXFwifS5lbC1pY29uLXN1bm55OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmNlxcXCJ9LmVsLWljb24tc3Vuc2V0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmN1xcXCJ9LmVsLWljb24tc3VucmlzZS0xOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmOFxcXCJ9LmVsLWljb24tc3VucmlzZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZjlcXFwifS5lbC1pY29uLWhlYXZ5LXJhaW46YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmZhXFxcIn0uZWwtaWNvbi1saWdodG5pbmc6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmZiXFxcIn0uZWwtaWNvbi1saWdodC1yYWluOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmY1xcXCJ9LmVsLWljb24td2luZC1wb3dlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZmRcXFwifS5lbC1pY29uLWJhc2ViYWxsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxMlxcXCJ9LmVsLWljb24tc29jY2VyOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxM1xcXCJ9LmVsLWljb24tZm9vdGJhbGw6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzE1XFxcIn0uZWwtaWNvbi1iYXNrZXRiYWxsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxNlxcXCJ9LmVsLWljb24tc2hpcDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3M2ZcXFwifS5lbC1pY29uLXRydWNrOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc0MFxcXCJ9LmVsLWljb24tYmljeWNsZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NDFcXFwifS5lbC1pY29uLW1vYmlsZS1waG9uZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZDNcXFwifS5lbC1pY29uLXNlcnZpY2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmQ0XFxcIn0uZWwtaWNvbi1rZXk6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmUyXFxcIn0uZWwtaWNvbi11bmxvY2s6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmU0XFxcIn0uZWwtaWNvbi1sb2NrOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlNVxcXCJ9LmVsLWljb24td2F0Y2g6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmZlXFxcIn0uZWwtaWNvbi13YXRjaC0xOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmZlxcXCJ9LmVsLWljb24tdGltZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzAyXFxcIn0uZWwtaWNvbi1hbGFybS1jbG9jazpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MDNcXFwifS5lbC1pY29uLW1hcC1sb2NhdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MDRcXFwifS5lbC1pY29uLWRlbGV0ZS1sb2NhdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MDVcXFwifS5lbC1pY29uLWFkZC1sb2NhdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MDZcXFwifS5lbC1pY29uLWxvY2F0aW9uLWluZm9ybWF0aW9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcwN1xcXCJ9LmVsLWljb24tbG9jYXRpb24tb3V0bGluZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MDhcXFwifS5lbC1pY29uLWxvY2F0aW9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc5ZVxcXCJ9LmVsLWljb24tcGxhY2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzA5XFxcIn0uZWwtaWNvbi1kaXNjb3ZlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MGFcXFwifS5lbC1pY29uLWZpcnN0LWFpZC1raXQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzBiXFxcIn0uZWwtaWNvbi10cm9waHktMTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MGNcXFwifS5lbC1pY29uLXRyb3BoeTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MGRcXFwifS5lbC1pY29uLW1lZGFsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcwZVxcXCJ9LmVsLWljb24tbWVkYWwtMTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MGZcXFwifS5lbC1pY29uLXN0b3B3YXRjaDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MTBcXFwifS5lbC1pY29uLW1pYzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MTFcXFwifS5lbC1pY29uLWNvcHktZG9jdW1lbnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzE4XFxcIn0uZWwtaWNvbi1mdWxsLXNjcmVlbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MTlcXFwifS5lbC1pY29uLXN3aXRjaC1idXR0b246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzFiXFxcIn0uZWwtaWNvbi1haW06YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzFjXFxcIn0uZWwtaWNvbi1jcm9wOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxZFxcXCJ9LmVsLWljb24tb2RvbWV0ZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzFlXFxcIn0uZWwtaWNvbi10aW1lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxZlxcXCJ9LmVsLWljb24tYmFuZ3podTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MjRcXFwifS5lbC1pY29uLWNsb3NlLW5vdGlmaWNhdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MjZcXFwifS5lbC1pY29uLW1pY3JvcGhvbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzI3XFxcIn0uZWwtaWNvbi10dXJuLW9mZi1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcyOFxcXCJ9LmVsLWljb24tcG9zaXRpb246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzI5XFxcIn0uZWwtaWNvbi1wb3N0Y2FyZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MmFcXFwifS5lbC1pY29uLW1lc3NhZ2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzJiXFxcIn0uZWwtaWNvbi1jaGF0LWxpbmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcyZFxcXCJ9LmVsLWljb24tY2hhdC1kb3Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcyZVxcXCJ9LmVsLWljb24tY2hhdC1kb3Qtcm91bmQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzJmXFxcIn0uZWwtaWNvbi1jaGF0LXNxdWFyZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MzBcXFwifS5lbC1pY29uLWNoYXQtbGluZS1yb3VuZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MzFcXFwifS5lbC1pY29uLWNoYXQtcm91bmQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzMyXFxcIn0uZWwtaWNvbi1zZXQtdXA6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzMzXFxcIn0uZWwtaWNvbi10dXJuLW9mZjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MzRcXFwifS5lbC1pY29uLW9wZW46YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzM1XFxcIn0uZWwtaWNvbi1jb25uZWN0aW9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTczNlxcXCJ9LmVsLWljb24tbGluazpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MzdcXFwifS5lbC1pY29uLWNwdTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MzhcXFwifS5lbC1pY29uLXRodW1iOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTczOVxcXCJ9LmVsLWljb24tZmVtYWxlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTczYVxcXCJ9LmVsLWljb24tbWFsZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3M2JcXFwifS5lbC1pY29uLWd1aWRlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTczY1xcXCJ9LmVsLWljb24tbmV3czpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3M2VcXFwifS5lbC1pY29uLXByaWNlLXRhZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NDRcXFwifS5lbC1pY29uLWRpc2NvdW50OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc0NVxcXCJ9LmVsLWljb24td2FsbGV0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc0N1xcXCJ9LmVsLWljb24tY29pbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NDhcXFwifS5lbC1pY29uLW1vbmV5OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc0OVxcXCJ9LmVsLWljb24tYmFuay1jYXJkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc0YVxcXCJ9LmVsLWljb24tYm94OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc0YlxcXCJ9LmVsLWljb24tcHJlc2VudDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NGNcXFwifS5lbC1pY29uLXNlbGw6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmQ1XFxcIn0uZWwtaWNvbi1zb2xkLW91dDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZDZcXFwifS5lbC1pY29uLXNob3BwaW5nLWJhZy0yOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc0ZFxcXCJ9LmVsLWljb24tc2hvcHBpbmctYmFnLTE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzRlXFxcIn0uZWwtaWNvbi1zaG9wcGluZy1jYXJ0LTI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzRmXFxcIn0uZWwtaWNvbi1zaG9wcGluZy1jYXJ0LTE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzUwXFxcIn0uZWwtaWNvbi1zaG9wcGluZy1jYXJ0LWZ1bGw6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzUxXFxcIn0uZWwtaWNvbi1zbW9raW5nOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc1MlxcXCJ9LmVsLWljb24tbm8tc21va2luZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NTNcXFwifS5lbC1pY29uLWhvdXNlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc1NFxcXCJ9LmVsLWljb24tdGFibGUtbGFtcDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NTVcXFwifS5lbC1pY29uLXNjaG9vbDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NTZcXFwifS5lbC1pY29uLW9mZmljZS1idWlsZGluZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NTdcXFwifS5lbC1pY29uLXRvaWxldC1wYXBlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NThcXFwifS5lbC1pY29uLW5vdGVib29rLTI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzU5XFxcIn0uZWwtaWNvbi1ub3RlYm9vay0xOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc1YVxcXCJ9LmVsLWljb24tZmlsZXM6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzViXFxcIn0uZWwtaWNvbi1jb2xsZWN0aW9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc1Y1xcXCJ9LmVsLWljb24tcmVjZWl2aW5nOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc1ZFxcXCJ9LmVsLWljb24tc3VpdGNhc2UtMTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NjBcXFwifS5lbC1pY29uLXN1aXRjYXNlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2MVxcXCJ9LmVsLWljb24tZmlsbTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NjNcXFwifS5lbC1pY29uLWNvbGxlY3Rpb24tdGFnOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2NVxcXCJ9LmVsLWljb24tZGF0YS1hbmFseXNpczpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NjZcXFwifS5lbC1pY29uLXBpZS1jaGFydDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NjdcXFwifS5lbC1pY29uLWRhdGEtYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzY4XFxcIn0uZWwtaWNvbi1kYXRhLWxpbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzZkXFxcIn0uZWwtaWNvbi1yZWFkaW5nOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2OVxcXCJ9LmVsLWljb24tbWFnaWMtc3RpY2s6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzZhXFxcIn0uZWwtaWNvbi1jb29yZGluYXRlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2YlxcXCJ9LmVsLWljb24tbW91c2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzZjXFxcIn0uZWwtaWNvbi1icnVzaDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NmVcXFwifS5lbC1pY29uLWhlYWRzZXQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzZmXFxcIn0uZWwtaWNvbi11bWJyZWxsYTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NzBcXFwifS5lbC1pY29uLXNjaXNzb3JzOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc3MVxcXCJ9LmVsLWljb24tbW9iaWxlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc3M1xcXCJ9LmVsLWljb24tYXR0cmFjdDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NzRcXFwifS5lbC1pY29uLW1vbml0b3I6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzc1XFxcIn0uZWwtaWNvbi1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzc4XFxcIn0uZWwtaWNvbi10YWtlYXdheS1ib3g6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzdhXFxcIn0uZWwtaWNvbi1wYXBlcmNsaXA6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzdkXFxcIn0uZWwtaWNvbi1wcmludGVyOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc3ZVxcXCJ9LmVsLWljb24tZG9jdW1lbnQtYWRkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc4MlxcXCJ9LmVsLWljb24tZG9jdW1lbnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzg1XFxcIn0uZWwtaWNvbi1kb2N1bWVudC1jaGVja2VkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc4NlxcXCJ9LmVsLWljb24tZG9jdW1lbnQtY29weTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3ODdcXFwifS5lbC1pY29uLWRvY3VtZW50LWRlbGV0ZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3ODhcXFwifS5lbC1pY29uLWRvY3VtZW50LXJlbW92ZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3ODlcXFwifS5lbC1pY29uLXRpY2tldHM6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzhiXFxcIn0uZWwtaWNvbi1mb2xkZXItY2hlY2tlZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3N2ZcXFwifS5lbC1pY29uLWZvbGRlci1kZWxldGU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzgwXFxcIn0uZWwtaWNvbi1mb2xkZXItcmVtb3ZlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc4MVxcXCJ9LmVsLWljb24tZm9sZGVyLWFkZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3ODNcXFwifS5lbC1pY29uLWZvbGRlci1vcGVuZWQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzg0XFxcIn0uZWwtaWNvbi1mb2xkZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzhhXFxcIn0uZWwtaWNvbi1lZGl0LW91dGxpbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzY0XFxcIn0uZWwtaWNvbi1lZGl0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc4Y1xcXCJ9LmVsLWljb24tZGF0ZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OGVcXFwifS5lbC1pY29uLWMtc2NhbGUtdG8tb3JpZ2luYWw6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2M2XFxcIn0uZWwtaWNvbi12aWV3OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjZVxcXCJ9LmVsLWljb24tbG9hZGluZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2Y2ZcXFwifS5lbC1pY29uLXJhbms6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmQxXFxcIn0uZWwtaWNvbi1zb3J0LWRvd246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2M0XFxcIn0uZWwtaWNvbi1zb3J0LXVwOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdjNVxcXCJ9LmVsLWljb24tc29ydDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZDJcXFwifS5lbC1pY29uLWZpbmlzaGVkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjZFxcXCJ9LmVsLWljb24tcmVmcmVzaC1sZWZ0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjN1xcXCJ9LmVsLWljb24tcmVmcmVzaC1yaWdodDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YzhcXFwifS5lbC1pY29uLXJlZnJlc2g6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmQwXFxcIn0uZWwtaWNvbi12aWRlby1wbGF5OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdjMFxcXCJ9LmVsLWljb24tdmlkZW8tcGF1c2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2MxXFxcIn0uZWwtaWNvbi1kLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkY1xcXCJ9LmVsLWljb24tZC1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkZFxcXCJ9LmVsLWljb24tYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmUxXFxcIn0uZWwtaWNvbi1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkZlxcXCJ9LmVsLWljb24tYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmUwXFxcIn0uZWwtaWNvbi1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkZVxcXCJ9LmVsLWljb24tdG9wLXJpZ2h0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlN1xcXCJ9LmVsLWljb24tdG9wLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmU4XFxcIn0uZWwtaWNvbi10b3A6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmU2XFxcIn0uZWwtaWNvbi1ib3R0b206YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmViXFxcIn0uZWwtaWNvbi1yaWdodDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZTlcXFwifS5lbC1pY29uLWJhY2s6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmVhXFxcIn0uZWwtaWNvbi1ib3R0b20tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmVjXFxcIn0uZWwtaWNvbi1ib3R0b20tbGVmdDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZWRcXFwifS5lbC1pY29uLWNhcmV0LXRvcDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OGZcXFwifS5lbC1pY29uLWNhcmV0LWJvdHRvbTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OTBcXFwifS5lbC1pY29uLWNhcmV0LXJpZ2h0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc5MVxcXCJ9LmVsLWljb24tY2FyZXQtbGVmdDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OTJcXFwifS5lbC1pY29uLWQtY2FyZXQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzlhXFxcIn0uZWwtaWNvbi1zaGFyZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OTNcXFwifS5lbC1pY29uLW1lbnU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzk4XFxcIn0uZWwtaWNvbi1zLWdyaWQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2E2XFxcIn0uZWwtaWNvbi1zLWNoZWNrOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdhN1xcXCJ9LmVsLWljb24tcy1kYXRhOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdhOFxcXCJ9LmVsLWljb24tcy1vcHBvcnR1bml0eTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YWFcXFwifS5lbC1pY29uLXMtY3VzdG9tOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdhYlxcXCJ9LmVsLWljb24tcy1jbGFpbTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YWRcXFwifS5lbC1pY29uLXMtZmluYW5jZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YWVcXFwifS5lbC1pY29uLXMtY29tbWVudDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YWZcXFwifS5lbC1pY29uLXMtZmxhZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YjBcXFwifS5lbC1pY29uLXMtbWFya2V0aW5nOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiMVxcXCJ9LmVsLWljb24tcy1zaG9wOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiNFxcXCJ9LmVsLWljb24tcy1vcGVuOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiNVxcXCJ9LmVsLWljb24tcy1tYW5hZ2VtZW50OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiNlxcXCJ9LmVsLWljb24tcy10aWNrZXQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2I3XFxcIn0uZWwtaWNvbi1zLXJlbGVhc2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2I4XFxcIn0uZWwtaWNvbi1zLWhvbWU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2I5XFxcIn0uZWwtaWNvbi1zLXByb21vdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YmFcXFwifS5lbC1pY29uLXMtb3BlcmF0aW9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiYlxcXCJ9LmVsLWljb24tcy11bmZvbGQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2JjXFxcIn0uZWwtaWNvbi1zLWZvbGQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2E5XFxcIn0uZWwtaWNvbi1zLXBsYXRmb3JtOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiZFxcXCJ9LmVsLWljb24tcy1vcmRlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YmVcXFwifS5lbC1pY29uLXMtY29vcGVyYXRpb246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2JmXFxcIn0uZWwtaWNvbi1iZWxsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcyNVxcXCJ9LmVsLWljb24tbWVzc2FnZS1zb2xpZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OTlcXFwifS5lbC1pY29uLXZpZGVvLWNhbWVyYTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NzJcXFwifS5lbC1pY29uLXZpZGVvLWNhbWVyYS1zb2xpZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OTZcXFwifS5lbC1pY29uLWNhbWVyYTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NzlcXFwifS5lbC1pY29uLWNhbWVyYS1zb2xpZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OWJcXFwifS5lbC1pY29uLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc3Y1xcXCJ9LmVsLWljb24tdXBsb2FkMjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3N2JcXFwifS5lbC1pY29uLXVwbG9hZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YzNcXFwifS5lbC1pY29uLXBpY3R1cmUtb3V0bGluZS1yb3VuZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NWZcXFwifS5lbC1pY29uLXBpY3R1cmUtb3V0bGluZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NWVcXFwifS5lbC1pY29uLXBpY3R1cmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzlmXFxcIn0uZWwtaWNvbi1jbG9zZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZGJcXFwifS5lbC1pY29uLWNoZWNrOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkYVxcXCJ9LmVsLWljb24tcGx1czpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZDlcXFwifS5lbC1pY29uLW1pbnVzOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkOFxcXCJ9LmVsLWljb24taGVscDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3M2RcXFwifS5lbC1pY29uLXMtaGVscDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YjNcXFwifS5lbC1pY29uLWNpcmNsZS1jbG9zZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OGRcXFwifS5lbC1pY29uLWNpcmNsZS1jaGVjazpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MjBcXFwifS5lbC1pY29uLWNpcmNsZS1wbHVzLW91dGxpbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzIzXFxcIn0uZWwtaWNvbi1yZW1vdmUtb3V0bGluZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MjJcXFwifS5lbC1pY29uLXpvb20tb3V0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc3NlxcXCJ9LmVsLWljb24tem9vbS1pbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NzdcXFwifS5lbC1pY29uLWVycm9yOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc5ZFxcXCJ9LmVsLWljb24tc3VjY2VzczpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OWNcXFwifS5lbC1pY29uLWNpcmNsZS1wbHVzOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdhMFxcXCJ9LmVsLWljb24tcmVtb3ZlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdhMlxcXCJ9LmVsLWljb24taW5mbzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YTFcXFwifS5lbC1pY29uLXF1ZXN0aW9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdhNFxcXCJ9LmVsLWljb24td2FybmluZy1vdXRsaW5lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjOVxcXCJ9LmVsLWljb24td2FybmluZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YTNcXFwifS5lbC1pY29uLWdvb2RzOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdjMlxcXCJ9LmVsLWljb24tcy1nb29kczpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YjJcXFwifS5lbC1pY29uLXN0YXItb2ZmOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxN1xcXCJ9LmVsLWljb24tc3Rhci1vbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OTdcXFwifS5lbC1pY29uLW1vcmUtb3V0bGluZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2Y2NcXFwifS5lbC1pY29uLW1vcmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzk0XFxcIn0uZWwtaWNvbi1waG9uZS1vdXRsaW5lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjYlxcXCJ9LmVsLWljb24tcGhvbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzk1XFxcIn0uZWwtaWNvbi11c2VyOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlM1xcXCJ9LmVsLWljb24tdXNlci1zb2xpZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YTVcXFwifS5lbC1pY29uLXNldHRpbmc6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmNhXFxcIn0uZWwtaWNvbi1zLXRvb2xzOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdhY1xcXCJ9LmVsLWljb24tZGVsZXRlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkN1xcXCJ9LmVsLWljb24tZGVsZXRlLXNvbGlkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdjOVxcXCJ9LmVsLWljb24tZWxlbWU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2M3XFxcIn0uZWwtaWNvbi1wbGF0Zm9ybS1lbGVtZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3Y2FcXFwifS5lbC1pY29uLWxvYWRpbmd7YW5pbWF0aW9uOnJvdGF0aW5nIDJzIGxpbmVhciBpbmZpbml0ZX0uZWwtaWNvbi0tcmlnaHR7bWFyZ2luLWxlZnQ6NXB4fS5lbC1pY29uLS1sZWZ0e21hcmdpbi1yaWdodDo1cHh9QGtleWZyYW1lcyByb3RhdGluZ3swJXt0cmFuc2Zvcm06cm90YXRlWigwKX0xMDAle3RyYW5zZm9ybTpyb3RhdGVaKDM2MGRlZyl9fS5lbC1wYWdpbmF0aW9ue3doaXRlLXNwYWNlOm5vd3JhcDtwYWRkaW5nOjJweCA1cHg7Y29sb3I6IzMwMzEzMztmb250LXdlaWdodDo3MDB9LmVsLXBhZ2luYXRpb246OmFmdGVyLC5lbC1wYWdpbmF0aW9uOjpiZWZvcmV7ZGlzcGxheTp0YWJsZTtjb250ZW50OlxcXCJcXFwifS5lbC1wYWdpbmF0aW9uOjphZnRlcntjbGVhcjpib3RofS5lbC1wYWdpbmF0aW9uIGJ1dHRvbiwuZWwtcGFnaW5hdGlvbiBzcGFuOm5vdChbY2xhc3MqPXN1ZmZpeF0pe2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxM3B4O21pbi13aWR0aDozNS41cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweDt2ZXJ0aWNhbC1hbGlnbjp0b3A7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1wYWdpbmF0aW9uIC5lbC1pbnB1dF9faW5uZXJ7dGV4dC1hbGlnbjpjZW50ZXI7LW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZDtsaW5lLWhlaWdodDpub3JtYWx9LmVsLXBhZ2luYXRpb24gLmVsLWlucHV0X19zdWZmaXh7cmlnaHQ6MDt0cmFuc2Zvcm06c2NhbGUoLjgpfS5lbC1wYWdpbmF0aW9uIC5lbC1zZWxlY3QgLmVsLWlucHV0e3dpZHRoOjEwMHB4O21hcmdpbjowIDVweH0uZWwtcGFnaW5hdGlvbiAuZWwtc2VsZWN0IC5lbC1pbnB1dCAuZWwtaW5wdXRfX2lubmVye3BhZGRpbmctcmlnaHQ6MjVweDtib3JkZXItcmFkaXVzOjNweH0uZWwtcGFnaW5hdGlvbiBidXR0b257Ym9yZGVyOm5vbmU7cGFkZGluZzowIDZweDtiYWNrZ3JvdW5kOjAgMH0uZWwtcGFnaW5hdGlvbiBidXR0b246Zm9jdXN7b3V0bGluZTowfS5lbC1wYWdpbmF0aW9uIGJ1dHRvbjpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1wYWdpbmF0aW9uIGJ1dHRvbjpkaXNhYmxlZHtjb2xvcjojQzBDNENDO2JhY2tncm91bmQtY29sb3I6I0ZGRjtjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXBhZ2luYXRpb24gLmJ0bi1uZXh0LC5lbC1wYWdpbmF0aW9uIC5idG4tcHJldntiYWNrZ3JvdW5kOmNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICNGRkY7YmFja2dyb3VuZC1zaXplOjE2cHg7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOjA7Y29sb3I6IzMwMzEzM30uZWwtcGFnaW5hdGlvbiAuYnRuLW5leHQgLmVsLWljb24sLmVsLXBhZ2luYXRpb24gLmJ0bi1wcmV2IC5lbC1pY29ue2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwfS5lbC1wYWdpbmF0aW9uIC5idG4tcHJldntwYWRkaW5nLXJpZ2h0OjEycHh9LmVsLXBhZ2luYXRpb24gLmJ0bi1uZXh0e3BhZGRpbmctbGVmdDoxMnB4fS5lbC1wYWdpbmF0aW9uIC5lbC1wYWdlciBsaS5kaXNhYmxlZHtjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtcGFnZXIgbGksLmVsLXBhZ2VyIGxpLmJ0bi1xdWlja25leHQ6aG92ZXIsLmVsLXBhZ2VyIGxpLmJ0bi1xdWlja3ByZXY6aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmVsLXBhZ2luYXRpb24tLXNtYWxsIC5idG4tbmV4dCwuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmJ0bi1wcmV2LC5lbC1wYWdpbmF0aW9uLS1zbWFsbCAuZWwtcGFnZXIgbGksLmVsLXBhZ2luYXRpb24tLXNtYWxsIC5lbC1wYWdlciBsaS5idG4tcXVpY2tuZXh0LC5lbC1wYWdpbmF0aW9uLS1zbWFsbCAuZWwtcGFnZXIgbGkuYnRuLXF1aWNrcHJldiwuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmVsLXBhZ2VyIGxpOmxhc3QtY2hpbGR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjIycHg7aGVpZ2h0OjIycHg7bWluLXdpZHRoOjIycHh9LmVsLXBhZ2luYXRpb24tLXNtYWxsIC5hcnJvdy5kaXNhYmxlZHt2aXNpYmlsaXR5OmhpZGRlbn0uZWwtcGFnaW5hdGlvbi0tc21hbGwgLm1vcmU6OmJlZm9yZSwuZWwtcGFnaW5hdGlvbi0tc21hbGwgbGkubW9yZTo6YmVmb3Jle2xpbmUtaGVpZ2h0OjI0cHh9LmVsLXBhZ2luYXRpb24tLXNtYWxsIGJ1dHRvbiwuZWwtcGFnaW5hdGlvbi0tc21hbGwgc3Bhbjpub3QoW2NsYXNzKj1zdWZmaXhdKXtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5lbC1wYWdpbmF0aW9uLS1zbWFsbCAuZWwtcGFnaW5hdGlvbl9fZWRpdG9yLC5lbC1wYWdpbmF0aW9uLS1zbWFsbCAuZWwtcGFnaW5hdGlvbl9fZWRpdG9yLmVsLWlucHV0IC5lbC1pbnB1dF9faW5uZXJ7aGVpZ2h0OjIycHh9LmVsLXBhZ2luYXRpb25fX3NpemVze21hcmdpbjowIDEwcHggMCAwO2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojNjA2MjY2fS5lbC1wYWdpbmF0aW9uX19zaXplcyAuZWwtaW5wdXQgLmVsLWlucHV0X19pbm5lcntmb250LXNpemU6MTNweDtwYWRkaW5nLWxlZnQ6OHB4fS5lbC1wYWdpbmF0aW9uX19zaXplcyAuZWwtaW5wdXQgLmVsLWlucHV0X19pbm5lcjpob3Zlcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtcGFnaW5hdGlvbl9fdG90YWx7bWFyZ2luLXJpZ2h0OjEwcHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MDYyNjZ9LmVsLXBhZ2luYXRpb25fX2p1bXB7bWFyZ2luLWxlZnQ6MjRweDtmb250LXdlaWdodDo0MDA7Y29sb3I6IzYwNjI2Nn0uZWwtcGFnaW5hdGlvbl9fanVtcCAuZWwtaW5wdXRfX2lubmVye3BhZGRpbmc6MCAzcHh9LmVsLXBhZ2luYXRpb25fX3JpZ2h0d3JhcHBlcntmbG9hdDpyaWdodH0uZWwtcGFnaW5hdGlvbl9fZWRpdG9ye2xpbmUtaGVpZ2h0OjE4cHg7cGFkZGluZzowIDJweDtoZWlnaHQ6MjhweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MCAycHg7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlci1yYWRpdXM6M3B4fS5lbC1wYWdlciwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tbmV4dCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tcHJldntwYWRkaW5nOjB9LmVsLWRpYWxvZywuZWwtcGFnZXIgbGl7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXBhZ2luYXRpb25fX2VkaXRvci5lbC1pbnB1dHt3aWR0aDo1MHB4fS5lbC1wYWdpbmF0aW9uX19lZGl0b3IuZWwtaW5wdXQgLmVsLWlucHV0X19pbm5lcntoZWlnaHQ6MjhweH0uZWwtcGFnaW5hdGlvbl9fZWRpdG9yIC5lbC1pbnB1dF9faW5uZXI6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLmVsLXBhZ2luYXRpb25fX2VkaXRvciAuZWwtaW5wdXRfX2lubmVyOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbjowfS5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQgLmJ0bi1uZXh0LC5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQgLmJ0bi1wcmV2LC5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQgLmVsLXBhZ2VyIGxpe21hcmdpbjowIDVweDtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjU7Y29sb3I6IzYwNjI2NjttaW4td2lkdGg6MzBweDtib3JkZXItcmFkaXVzOjJweH0uZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tbmV4dC5kaXNhYmxlZCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tbmV4dDpkaXNhYmxlZCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tcHJldi5kaXNhYmxlZCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tcHJldjpkaXNhYmxlZCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5lbC1wYWdlciBsaS5kaXNhYmxlZHtjb2xvcjojQzBDNENDfS5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQgLmVsLXBhZ2VyIGxpOm5vdCguZGlzYWJsZWQpOmhvdmVye2NvbG9yOiM0MDlFRkZ9LmVsLXBhZ2luYXRpb24uaXMtYmFja2dyb3VuZCAuZWwtcGFnZXIgbGk6bm90KC5kaXNhYmxlZCkuYWN0aXZle2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjtjb2xvcjojRkZGfS5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmJ0bi1uZXh0LC5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmJ0bi1wcmV2LC5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmVsLXBhZ2VyIGxpe21hcmdpbjowIDNweDttaW4td2lkdGg6MjJweH0uZWwtcGFnZXIsLmVsLXBhZ2VyIGxpe3ZlcnRpY2FsLWFsaWduOnRvcDttYXJnaW46MDtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtcGFnZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2xpc3Qtc3R5bGU6bm9uZTtmb250LXNpemU6MH0uZWwtcGFnZXIgLm1vcmU6OmJlZm9yZXtsaW5lLWhlaWdodDozMHB4fS5lbC1wYWdlciBsaXtwYWRkaW5nOjAgNHB4O2JhY2tncm91bmQ6I0ZGRjtmb250LXNpemU6MTNweDttaW4td2lkdGg6MzUuNXB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHg7Ym94LXNpemluZzpib3JkZXItYm94O3RleHQtYWxpZ246Y2VudGVyfS5lbC1wYWdlciBsaS5idG4tcXVpY2tuZXh0LC5lbC1wYWdlciBsaS5idG4tcXVpY2twcmV2e2xpbmUtaGVpZ2h0OjI4cHg7Y29sb3I6IzMwMzEzM30uZWwtcGFnZXIgbGkuYnRuLXF1aWNrbmV4dC5kaXNhYmxlZCwuZWwtcGFnZXIgbGkuYnRuLXF1aWNrcHJldi5kaXNhYmxlZHtjb2xvcjojQzBDNENDfS5lbC1wYWdlciBsaS5hY3RpdmUrbGl7Ym9yZGVyLWxlZnQ6MH0uZWwtcGFnZXIgbGk6aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtcGFnZXIgbGkuYWN0aXZle2NvbG9yOiM0MDlFRkY7Y3Vyc29yOmRlZmF1bHR9LmVsLWRpYWxvZ3twb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MCBhdXRvIDUwcHg7YmFja2dyb3VuZDojRkZGO2JvcmRlci1yYWRpdXM6MnB4O2JveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwwLDAsLjMpO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDo1MCV9LmVsLWRpYWxvZy5pcy1mdWxsc2NyZWVue3dpZHRoOjEwMCU7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvfS5lbC1kaWFsb2dfX3dyYXBwZXJ7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7b3ZlcmZsb3c6YXV0bzttYXJnaW46MH0uZWwtZGlhbG9nX19oZWFkZXJ7cGFkZGluZzoyMHB4IDIwcHggMTBweH0uZWwtZGlhbG9nX19oZWFkZXJidG57cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7cmlnaHQ6MjBweDtwYWRkaW5nOjA7YmFja2dyb3VuZDowIDA7Ym9yZGVyOm5vbmU7b3V0bGluZTowO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxNnB4fS5lbC1kaWFsb2dfX2hlYWRlcmJ0biAuZWwtZGlhbG9nX19jbG9zZXtjb2xvcjojOTA5Mzk5fS5lbC1kaWFsb2dfX2hlYWRlcmJ0bjpmb2N1cyAuZWwtZGlhbG9nX19jbG9zZSwuZWwtZGlhbG9nX19oZWFkZXJidG46aG92ZXIgLmVsLWRpYWxvZ19fY2xvc2V7Y29sb3I6IzQwOUVGRn0uZWwtZGlhbG9nX190aXRsZXtsaW5lLWhlaWdodDoyNHB4O2ZvbnQtc2l6ZToxOHB4O2NvbG9yOiMzMDMxMzN9LmVsLWRpYWxvZ19fYm9keXtwYWRkaW5nOjMwcHggMjBweDtjb2xvcjojNjA2MjY2O2ZvbnQtc2l6ZToxNHB4O3dvcmQtYnJlYWs6YnJlYWstYWxsfS5lbC1kaWFsb2dfX2Zvb3RlcntwYWRkaW5nOjEwcHggMjBweCAyMHB4O3RleHQtYWxpZ246cmlnaHQ7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1kaWFsb2ctLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtZGlhbG9nLS1jZW50ZXIgLmVsLWRpYWxvZ19fYm9keXt0ZXh0LWFsaWduOmluaXRpYWw7cGFkZGluZzoyNXB4IDI1cHggMzBweH0uZWwtZGlhbG9nLS1jZW50ZXIgLmVsLWRpYWxvZ19fZm9vdGVye3RleHQtYWxpZ246aW5oZXJpdH0uZGlhbG9nLWZhZGUtZW50ZXItYWN0aXZle2FuaW1hdGlvbjpkaWFsb2ctZmFkZS1pbiAuM3N9LmRpYWxvZy1mYWRlLWxlYXZlLWFjdGl2ZXthbmltYXRpb246ZGlhbG9nLWZhZGUtb3V0IC4zc31Aa2V5ZnJhbWVzIGRpYWxvZy1mYWRlLWluezAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO29wYWNpdHk6MH0xMDAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGRpYWxvZy1mYWRlLW91dHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO29wYWNpdHk6MX0xMDAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO29wYWNpdHk6MH19LmVsLWF1dG9jb21wbGV0ZXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb257bWFyZ2luOjVweCAwO2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI0U0RTdFRDtib3gtc2l6aW5nOmJvcmRlci1ib3g7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbl9fd3JhcHttYXgtaGVpZ2h0OjI4MHB4O3BhZGRpbmc6MTBweCAwO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb25fX2xpc3R7bWFyZ2luOjA7cGFkZGluZzowfS5lbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbiBsaXtwYWRkaW5nOjAgMjBweDttYXJnaW46MDtsaW5lLWhlaWdodDozNHB4O2N1cnNvcjpwb2ludGVyO2NvbG9yOiM2MDYyNjY7Zm9udC1zaXplOjE0cHg7bGlzdC1zdHlsZTpub25lO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb24gbGkuaGlnaGxpZ2h0ZWQsLmVsLWF1dG9jb21wbGV0ZS1zdWdnZXN0aW9uIGxpOmhvdmVye2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQX0uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb24gbGkuZGl2aWRlcnttYXJnaW4tdG9wOjZweDtib3JkZXItdG9wOjFweCBzb2xpZCAjMDAwfS5lbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbiBsaS5kaXZpZGVyOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTotNnB4fS5lbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbi5pcy1sb2FkaW5nIGxpe3RleHQtYWxpZ246Y2VudGVyO2hlaWdodDoxMDBweDtsaW5lLWhlaWdodDoxMDBweDtmb250LXNpemU6MjBweDtjb2xvcjojOTk5fS5lbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbi5pcy1sb2FkaW5nIGxpOjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jaztjb250ZW50OlxcXCJcXFwiO2hlaWdodDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb24uaXMtbG9hZGluZyBsaTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNGRkZ9LmVsLWF1dG9jb21wbGV0ZS1zdWdnZXN0aW9uLmlzLWxvYWRpbmcgLmVsLWljb24tbG9hZGluZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLWRyb3Bkb3due2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOiM2MDYyNjY7Zm9udC1zaXplOjE0cHh9LmVsLWRyb3Bkb3duIC5lbC1idXR0b24tZ3JvdXB7ZGlzcGxheTpibG9ja30uZWwtZHJvcGRvd24gLmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9ue2Zsb2F0Om5vbmV9LmVsLWRyb3Bkb3duIC5lbC1kcm9wZG93bl9fY2FyZXQtYnV0dG9ue3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDo1cHg7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLWxlZnQ6bm9uZX0uZWwtZHJvcGRvd24gLmVsLWRyb3Bkb3duX19jYXJldC1idXR0b246OmJlZm9yZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MXB4O3RvcDo1cHg7Ym90dG9tOjVweDtsZWZ0OjA7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC41KX0uZWwtZHJvcGRvd24gLmVsLWRyb3Bkb3duX19jYXJldC1idXR0b24uZWwtYnV0dG9uLS1kZWZhdWx0OjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDIyMCwyMjMsMjMwLC41KX0uZWwtZHJvcGRvd24gLmVsLWRyb3Bkb3duX19jYXJldC1idXR0b246aG92ZXI6bm90KC5pcy1kaXNhYmxlZCk6OmJlZm9yZXt0b3A6MDtib3R0b206MH0uZWwtZHJvcGRvd24gLmVsLWRyb3Bkb3duX19jYXJldC1idXR0b24gLmVsLWRyb3Bkb3duX19pY29ue3BhZGRpbmctbGVmdDowfS5lbC1kcm9wZG93bl9faWNvbntmb250LXNpemU6MTJweDttYXJnaW46MCAzcHh9LmVsLWRyb3Bkb3duIC5lbC1kcm9wZG93bi1zZWxmZGVmaW5lOmZvY3VzOmFjdGl2ZSwuZWwtZHJvcGRvd24gLmVsLWRyb3Bkb3duLXNlbGZkZWZpbmU6Zm9jdXM6bm90KC5mb2N1c2luZyl7b3V0bGluZS13aWR0aDowfS5lbC1kcm9wZG93biBbZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZDtjb2xvcjojYmJifS5lbC1kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt6LWluZGV4OjEwO3BhZGRpbmc6MTBweCAwO21hcmdpbjo1cHggMDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjRUJFRUY1O2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpfS5lbC1kcm9wZG93bi1tZW51X19pdGVtLC5lbC1tZW51LWl0ZW17Zm9udC1zaXplOjE0cHg7cGFkZGluZzowIDIwcHg7Y3Vyc29yOnBvaW50ZXJ9LmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW17bGlzdC1zdHlsZTpub25lO2xpbmUtaGVpZ2h0OjM2cHg7bWFyZ2luOjA7Y29sb3I6IzYwNjI2NjtvdXRsaW5lOjB9LmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW06Zm9jdXMsLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW06bm90KC5pcy1kaXNhYmxlZCk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWNmNWZmO2NvbG9yOiM2NmIxZmZ9LmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW0gaXttYXJnaW4tcmlnaHQ6NXB4fS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVke3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6NnB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNFQkVFRjV9LmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW0tLWRpdmlkZWQ6YmVmb3Jle2NvbnRlbnQ6Jyc7aGVpZ2h0OjZweDtkaXNwbGF5OmJsb2NrO21hcmdpbjowIC0yMHB4O2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtZHJvcGRvd24tbWVudV9faXRlbS5pcy1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtjb2xvcjojYmJiO3BvaW50ZXItZXZlbnRzOm5vbmV9LmVsLWRyb3Bkb3duLW1lbnUtLW1lZGl1bXtwYWRkaW5nOjZweCAwfS5lbC1kcm9wZG93bi1tZW51LS1tZWRpdW0gLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW17bGluZS1oZWlnaHQ6MzBweDtwYWRkaW5nOjAgMTdweDtmb250LXNpemU6MTRweH0uZWwtZHJvcGRvd24tbWVudS0tbWVkaXVtIC5lbC1kcm9wZG93bi1tZW51X19pdGVtLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW0tLWRpdmlkZWR7bWFyZ2luLXRvcDo2cHh9LmVsLWRyb3Bkb3duLW1lbnUtLW1lZGl1bSAuZWwtZHJvcGRvd24tbWVudV9faXRlbS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVkOmJlZm9yZXtoZWlnaHQ6NnB4O21hcmdpbjowIC0xN3B4fS5lbC1kcm9wZG93bi1tZW51LS1zbWFsbHtwYWRkaW5nOjZweCAwfS5lbC1kcm9wZG93bi1tZW51LS1zbWFsbCAuZWwtZHJvcGRvd24tbWVudV9faXRlbXtsaW5lLWhlaWdodDoyN3B4O3BhZGRpbmc6MCAxNXB4O2ZvbnQtc2l6ZToxM3B4fS5lbC1kcm9wZG93bi1tZW51LS1zbWFsbCAuZWwtZHJvcGRvd24tbWVudV9faXRlbS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVke21hcmdpbi10b3A6NHB4fS5lbC1kcm9wZG93bi1tZW51LS1zbWFsbCAuZWwtZHJvcGRvd24tbWVudV9faXRlbS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVkOmJlZm9yZXtoZWlnaHQ6NHB4O21hcmdpbjowIC0xNXB4fS5lbC1kcm9wZG93bi1tZW51LS1taW5pe3BhZGRpbmc6M3B4IDB9LmVsLWRyb3Bkb3duLW1lbnUtLW1pbmkgLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW17bGluZS1oZWlnaHQ6MjRweDtwYWRkaW5nOjAgMTBweDtmb250LXNpemU6MTJweH0uZWwtZHJvcGRvd24tbWVudS0tbWluaSAuZWwtZHJvcGRvd24tbWVudV9faXRlbS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVke21hcmdpbi10b3A6M3B4fS5lbC1kcm9wZG93bi1tZW51LS1taW5pIC5lbC1kcm9wZG93bi1tZW51X19pdGVtLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW0tLWRpdmlkZWQ6YmVmb3Jle2hlaWdodDozcHg7bWFyZ2luOjAgLTEwcHh9LmVsLW1lbnV7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCAjZTZlNmU2O2xpc3Qtc3R5bGU6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkZ9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLW1lbnUtaXRlbTpub3QoLmlzLWRpc2FibGVkKTpmb2N1cywuZWwtbWVudS0taG9yaXpvbnRhbD4uZWwtbWVudS1pdGVtOm5vdCguaXMtZGlzYWJsZWQpOmhvdmVyLC5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1zdWJtZW51IC5lbC1zdWJtZW51X190aXRsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmVsLW1lbnU6OmFmdGVyLC5lbC1tZW51OjpiZWZvcmV7ZGlzcGxheTp0YWJsZTtjb250ZW50OlxcXCJcXFwifS5lbC1icmVhZGNydW1iX19pdGVtOmxhc3QtY2hpbGQgLmVsLWJyZWFkY3J1bWJfX3NlcGFyYXRvciwuZWwtbWVudS0tY29sbGFwc2U+LmVsLW1lbnUtaXRlbSAuZWwtc3VibWVudV9faWNvbi1hcnJvdywuZWwtbWVudS0tY29sbGFwc2U+LmVsLXN1Ym1lbnU+LmVsLXN1Ym1lbnVfX3RpdGxlIC5lbC1zdWJtZW51X19pY29uLWFycm93e2Rpc3BsYXk6bm9uZX0uZWwtbWVudTo6YWZ0ZXJ7Y2xlYXI6Ym90aH0uZWwtbWVudS5lbC1tZW51LS1ob3Jpem9udGFse2JvcmRlci1ib3R0b206c29saWQgMXB4ICNlNmU2ZTZ9LmVsLW1lbnUtLWhvcml6b250YWx7Ym9yZGVyLXJpZ2h0Om5vbmV9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLW1lbnUtaXRlbXtmbG9hdDpsZWZ0O2hlaWdodDo2MHB4O2xpbmUtaGVpZ2h0OjYwcHg7bWFyZ2luOjA7Ym9yZGVyLWJvdHRvbToycHggc29saWQgdHJhbnNwYXJlbnQ7Y29sb3I6IzkwOTM5OX0uZWwtbWVudS0taG9yaXpvbnRhbD4uZWwtbWVudS1pdGVtIGEsLmVsLW1lbnUtLWhvcml6b250YWw+LmVsLW1lbnUtaXRlbSBhOmhvdmVye2NvbG9yOmluaGVyaXR9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLXN1Ym1lbnV7ZmxvYXQ6bGVmdH0uZWwtbWVudS0taG9yaXpvbnRhbD4uZWwtc3VibWVudTpmb2N1cywuZWwtbWVudS0taG9yaXpvbnRhbD4uZWwtc3VibWVudTpob3ZlcntvdXRsaW5lOjB9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLXN1Ym1lbnU6Zm9jdXMgLmVsLXN1Ym1lbnVfX3RpdGxlLC5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1zdWJtZW51OmhvdmVyIC5lbC1zdWJtZW51X190aXRsZXtjb2xvcjojMzAzMTMzfS5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1zdWJtZW51LmlzLWFjdGl2ZSAuZWwtc3VibWVudV9fdGl0bGV7Ym9yZGVyLWJvdHRvbToycHggc29saWQgIzQwOUVGRjtjb2xvcjojMzAzMTMzfS5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1zdWJtZW51IC5lbC1zdWJtZW51X190aXRsZXtoZWlnaHQ6NjBweDtsaW5lLWhlaWdodDo2MHB4O2JvcmRlci1ib3R0b206MnB4IHNvbGlkIHRyYW5zcGFyZW50O2NvbG9yOiM5MDkzOTl9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLXN1Ym1lbnUgLmVsLXN1Ym1lbnVfX2ljb24tYXJyb3d7cG9zaXRpb246c3RhdGljO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXRvcDotM3B4fS5lbC1tZW51LS1jb2xsYXBzZSAuZWwtc3VibWVudSwuZWwtbWVudS1pdGVte3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC1tZW51LS1ob3Jpem9udGFsIC5lbC1tZW51IC5lbC1tZW51LWl0ZW0sLmVsLW1lbnUtLWhvcml6b250YWwgLmVsLW1lbnUgLmVsLXN1Ym1lbnVfX3RpdGxle2JhY2tncm91bmQtY29sb3I6I0ZGRjtmbG9hdDpub25lO2hlaWdodDozNnB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDEwcHg7Y29sb3I6IzkwOTM5OX0uZWwtbWVudS0taG9yaXpvbnRhbCAuZWwtbWVudSAuZWwtbWVudS1pdGVtLmlzLWFjdGl2ZSwuZWwtbWVudS0taG9yaXpvbnRhbCAuZWwtbWVudSAuZWwtc3VibWVudS5pcy1hY3RpdmU+LmVsLXN1Ym1lbnVfX3RpdGxle2NvbG9yOiMzMDMxMzN9LmVsLW1lbnUtLWhvcml6b250YWwgLmVsLW1lbnUtaXRlbTpub3QoLmlzLWRpc2FibGVkKTpmb2N1cywuZWwtbWVudS0taG9yaXpvbnRhbCAuZWwtbWVudS1pdGVtOm5vdCguaXMtZGlzYWJsZWQpOmhvdmVye291dGxpbmU6MDtjb2xvcjojMzAzMTMzfS5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1tZW51LWl0ZW0uaXMtYWN0aXZle2JvcmRlci1ib3R0b206MnB4IHNvbGlkICM0MDlFRkY7Y29sb3I6IzMwMzEzM30uZWwtbWVudS0tY29sbGFwc2V7d2lkdGg6NjRweH0uZWwtbWVudS0tY29sbGFwc2U+LmVsLW1lbnUtaXRlbSBbY2xhc3NePWVsLWljb24tXSwuZWwtbWVudS0tY29sbGFwc2U+LmVsLXN1Ym1lbnU+LmVsLXN1Ym1lbnVfX3RpdGxlIFtjbGFzc149ZWwtaWNvbi1de21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoyNHB4O3RleHQtYWxpZ246Y2VudGVyfS5lbC1tZW51LS1jb2xsYXBzZT4uZWwtbWVudS1pdGVtIHNwYW4sLmVsLW1lbnUtLWNvbGxhcHNlPi5lbC1zdWJtZW51Pi5lbC1zdWJtZW51X190aXRsZSBzcGFue2hlaWdodDowO3dpZHRoOjA7b3ZlcmZsb3c6aGlkZGVuO3Zpc2liaWxpdHk6aGlkZGVuO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC1tZW51LWl0ZW0sLmVsLXN1Ym1lbnVfX3RpdGxle2hlaWdodDo1NnB4O2xpbmUtaGVpZ2h0OjU2cHg7bGlzdC1zdHlsZTpub25lfS5lbC1tZW51LS1jb2xsYXBzZT4uZWwtbWVudS1pdGVtLmlzLWFjdGl2ZSBpe2NvbG9yOmluaGVyaXR9LmVsLW1lbnUtLWNvbGxhcHNlIC5lbC1tZW51IC5lbC1zdWJtZW51e21pbi13aWR0aDoyMDBweH0uZWwtbWVudS0tY29sbGFwc2UgLmVsLXN1Ym1lbnUgLmVsLW1lbnV7cG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLWxlZnQ6NXB4O3RvcDowO2xlZnQ6MTAwJTt6LWluZGV4OjEwO2JvcmRlcjoxcHggc29saWQgI0U0RTdFRDtib3JkZXItcmFkaXVzOjJweDtib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKX0uZWwtbWVudS0tY29sbGFwc2UgLmVsLXN1Ym1lbnUuaXMtb3BlbmVkPi5lbC1zdWJtZW51X190aXRsZSAuZWwtc3VibWVudV9faWNvbi1hcnJvd3t0cmFuc2Zvcm06bm9uZX0uZWwtbWVudS0tcG9wdXB7ei1pbmRleDoxMDA7bWluLXdpZHRoOjIwMHB4O2JvcmRlcjpub25lO3BhZGRpbmc6NXB4IDA7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSl9LmVsLW1lbnUtLXBvcHVwLWJvdHRvbS1zdGFydHttYXJnaW4tdG9wOjVweH0uZWwtbWVudS0tcG9wdXAtcmlnaHQtc3RhcnR7bWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1yaWdodDo1cHh9LmVsLW1lbnUtaXRlbXtjb2xvcjojMzAzMTMzO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4zcyxiYWNrZ3JvdW5kLWNvbG9yIC4zcyxjb2xvciAuM3M7Ym94LXNpemluZzpib3JkZXItYm94O3doaXRlLXNwYWNlOm5vd3JhcH0uZWwtcmFkaW8tYnV0dG9uX19pbm5lciwuZWwtc3VibWVudV9fdGl0bGV7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7d2hpdGUtc3BhY2U6bm93cmFwfS5lbC1tZW51LWl0ZW0gKnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLW1lbnUtaXRlbSBpe2NvbG9yOiM5MDkzOTl9LmVsLW1lbnUtaXRlbTpmb2N1cywuZWwtbWVudS1pdGVtOmhvdmVye291dGxpbmU6MDtiYWNrZ3JvdW5kLWNvbG9yOiNlY2Y1ZmZ9LmVsLW1lbnUtaXRlbS5pcy1kaXNhYmxlZHtvcGFjaXR5Oi4yNTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZDowIDAhaW1wb3J0YW50fS5lbC1tZW51LWl0ZW0gW2NsYXNzXj1lbC1pY29uLV17bWFyZ2luLXJpZ2h0OjVweDt3aWR0aDoyNHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxOHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtbWVudS1pdGVtLmlzLWFjdGl2ZXtjb2xvcjojNDA5RUZGfS5lbC1tZW51LWl0ZW0uaXMtYWN0aXZlIGl7Y29sb3I6aW5oZXJpdH0uZWwtc3VibWVudXtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OjB9LmVsLXN1Ym1lbnVfX3RpdGxle2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiMzMDMxMzM7cGFkZGluZzowIDIwcHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjNzLGJhY2tncm91bmQtY29sb3IgLjNzLGNvbG9yIC4zcztib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXN1Ym1lbnVfX3RpdGxlICp7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1zdWJtZW51X190aXRsZSBpe2NvbG9yOiM5MDkzOTl9LmVsLXN1Ym1lbnVfX3RpdGxlOmZvY3VzLC5lbC1zdWJtZW51X190aXRsZTpob3ZlcntvdXRsaW5lOjA7YmFja2dyb3VuZC1jb2xvcjojZWNmNWZmfS5lbC1zdWJtZW51X190aXRsZS5pcy1kaXNhYmxlZHtvcGFjaXR5Oi4yNTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZDowIDAhaW1wb3J0YW50fS5lbC1zdWJtZW51X190aXRsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlY2Y1ZmZ9LmVsLXN1Ym1lbnUgLmVsLW1lbnV7Ym9yZGVyOm5vbmV9LmVsLXN1Ym1lbnUgLmVsLW1lbnUtaXRlbXtoZWlnaHQ6NTBweDtsaW5lLWhlaWdodDo1MHB4O3BhZGRpbmc6MCA0NXB4O21pbi13aWR0aDoyMDBweH0uZWwtc3VibWVudV9faWNvbi1hcnJvd3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjIwcHg7bWFyZ2luLXRvcDotN3B4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcztmb250LXNpemU6MTJweH0uZWwtc3VibWVudS5pcy1hY3RpdmUgLmVsLXN1Ym1lbnVfX3RpdGxle2JvcmRlci1ib3R0b20tY29sb3I6IzQwOUVGRn0uZWwtc3VibWVudS5pcy1vcGVuZWQ+LmVsLXN1Ym1lbnVfX3RpdGxlIC5lbC1zdWJtZW51X19pY29uLWFycm93e3RyYW5zZm9ybTpyb3RhdGVaKDE4MGRlZyl9LmVsLXN1Ym1lbnUuaXMtZGlzYWJsZWQgLmVsLW1lbnUtaXRlbSwuZWwtc3VibWVudS5pcy1kaXNhYmxlZCAuZWwtc3VibWVudV9fdGl0bGV7b3BhY2l0eTouMjU7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQ6MCAwIWltcG9ydGFudH0uZWwtc3VibWVudSBbY2xhc3NePWVsLWljb24tXXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjVweDt3aWR0aDoyNHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxOHB4fS5lbC1tZW51LWl0ZW0tZ3JvdXA+dWx7cGFkZGluZzowfS5lbC1tZW51LWl0ZW0tZ3JvdXBfX3RpdGxle3BhZGRpbmc6N3B4IDAgN3B4IDIwcHg7bGluZS1oZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM5MDkzOTl9LmVsLXJhZGlvLWJ1dHRvbl9faW5uZXIsLmVsLXJhZGlvLWdyb3Vwe2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjE7dmVydGljYWwtYWxpZ246bWlkZGxlfS5ob3Jpem9udGFsLWNvbGxhcHNlLXRyYW5zaXRpb24gLmVsLXN1Ym1lbnVfX3RpdGxlIC5lbC1zdWJtZW51X19pY29uLWFycm93e3RyYW5zaXRpb246LjJzO29wYWNpdHk6MH0uZWwtcmFkaW8tZ3JvdXB7Zm9udC1zaXplOjB9LmVsLXJhZGlvLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztvdXRsaW5lOjB9LmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7YmFja2dyb3VuZDojRkZGO2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtmb250LXdlaWdodDo1MDA7Ym9yZGVyLWxlZnQ6MDtjb2xvcjojNjA2MjY2Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lO3RleHQtYWxpZ246Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdXRsaW5lOjA7bWFyZ2luOjA7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTtwYWRkaW5nOjEycHggMjBweDtmb250LXNpemU6MTRweDtib3JkZXItcmFkaXVzOjB9LmVsLXJhZGlvLWJ1dHRvbl9faW5uZXIuaXMtcm91bmR7cGFkZGluZzoxMnB4IDIwcHh9LmVsLXJhZGlvLWJ1dHRvbl9faW5uZXI6aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtcmFkaW8tYnV0dG9uX19pbm5lciBbY2xhc3MqPWVsLWljb24tXXtsaW5lLWhlaWdodDouOX0uZWwtcmFkaW8tYnV0dG9uX19pbm5lciBbY2xhc3MqPWVsLWljb24tXStzcGFue21hcmdpbi1sZWZ0OjVweH0uZWwtcmFkaW8tYnV0dG9uOmZpcnN0LWNoaWxkIC5lbC1yYWRpby1idXR0b25fX2lubmVye2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRENERkU2O2JvcmRlci1yYWRpdXM6NHB4IDAgMCA0cHg7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH0uZWwtcmFkaW8tYnV0dG9uX19vcmlnLXJhZGlve29wYWNpdHk6MDtvdXRsaW5lOjA7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDotMX0uZWwtcmFkaW8tYnV0dG9uX19vcmlnLXJhZGlvOmNoZWNrZWQrLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkY7Ym9yZGVyLWNvbG9yOiM0MDlFRkY7Ym94LXNoYWRvdzotMXB4IDAgMCAwICM0MDlFRkZ9LmVsLXJhZGlvLWJ1dHRvbl9fb3JpZy1yYWRpbzpkaXNhYmxlZCsuZWwtcmFkaW8tYnV0dG9uX19pbm5lcntjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JvcmRlci1jb2xvcjojRUJFRUY1O2JveC1zaGFkb3c6bm9uZX0uZWwtcmFkaW8tYnV0dG9uX19vcmlnLXJhZGlvOmRpc2FibGVkOmNoZWNrZWQrLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7YmFja2dyb3VuZC1jb2xvcjojRjJGNkZDfS5lbC1yYWRpby1idXR0b246bGFzdC1jaGlsZCAuZWwtcmFkaW8tYnV0dG9uX19pbm5lcntib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwfS5lbC1yYWRpby1idXR0b246Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZCAuZWwtcmFkaW8tYnV0dG9uX19pbm5lcntib3JkZXItcmFkaXVzOjRweH0uZWwtcmFkaW8tYnV0dG9uLS1tZWRpdW0gLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7cGFkZGluZzoxMHB4IDIwcHg7Zm9udC1zaXplOjE0cHg7Ym9yZGVyLXJhZGl1czowfS5lbC1yYWRpby1idXR0b24tLW1lZGl1bSAuZWwtcmFkaW8tYnV0dG9uX19pbm5lci5pcy1yb3VuZHtwYWRkaW5nOjEwcHggMjBweH0uZWwtcmFkaW8tYnV0dG9uLS1zbWFsbCAuZWwtcmFkaW8tYnV0dG9uX19pbm5lcntwYWRkaW5nOjlweCAxNXB4O2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1yYWRpdXM6MH0uZWwtcmFkaW8tYnV0dG9uLS1zbWFsbCAuZWwtcmFkaW8tYnV0dG9uX19pbm5lci5pcy1yb3VuZHtwYWRkaW5nOjlweCAxNXB4fS5lbC1yYWRpby1idXR0b24tLW1pbmkgLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7cGFkZGluZzo3cHggMTVweDtmb250LXNpemU6MTJweDtib3JkZXItcmFkaXVzOjB9LmVsLXJhZGlvLWJ1dHRvbi0tbWluaSAuZWwtcmFkaW8tYnV0dG9uX19pbm5lci5pcy1yb3VuZHtwYWRkaW5nOjdweCAxNXB4fS5lbC1yYWRpby1idXR0b246Zm9jdXM6bm90KC5pcy1mb2N1cyk6bm90KDphY3RpdmUpOm5vdCguaXMtZGlzYWJsZWQpe2JveC1zaGFkb3c6MCAwIDJweCAycHggIzQwOUVGRn0uZWwtcGlja2VyLXBhbmVsLC5lbC1wb3BvdmVyLC5lbC1zZWxlY3QtZHJvcGRvd24sLmVsLXRhYmxlLWZpbHRlciwuZWwtdGltZS1wYW5lbHstd2Via2l0LWJveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpfS5lbC1zd2l0Y2h7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDtoZWlnaHQ6MjBweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXN3aXRjaF9fY29yZSwuZWwtc3dpdGNoX19sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztjdXJzb3I6cG9pbnRlcn0uZWwtc3dpdGNoLmlzLWRpc2FibGVkIC5lbC1zd2l0Y2hfX2NvcmUsLmVsLXN3aXRjaC5pcy1kaXNhYmxlZCAuZWwtc3dpdGNoX19sYWJlbHtjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXN3aXRjaF9fbGFiZWx7dHJhbnNpdGlvbjouMnM7aGVpZ2h0OjIwcHg7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjb2xvcjojMzAzMTMzfS5lbC1zd2l0Y2hfX2xhYmVsLmlzLWFjdGl2ZXtjb2xvcjojNDA5RUZGfS5lbC1zd2l0Y2hfX2xhYmVsLS1sZWZ0e21hcmdpbi1yaWdodDoxMHB4fS5lbC1zd2l0Y2hfX2xhYmVsLS1yaWdodHttYXJnaW4tbGVmdDoxMHB4fS5lbC1zd2l0Y2hfX2xhYmVsICp7bGluZS1oZWlnaHQ6MTtmb250LXNpemU6MTRweDtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtc3dpdGNoX19pbnB1dHtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowO2hlaWdodDowO29wYWNpdHk6MDttYXJnaW46MH0uZWwtc3dpdGNoX19jb3Jle21hcmdpbjowO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjQwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2O291dGxpbmU6MDtib3JkZXItcmFkaXVzOjEwcHg7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQ6I0RDREZFNjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuM3MsYmFja2dyb3VuZC1jb2xvciAuM3M7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1pbnB1dF9fcHJlZml4LC5lbC1pbnB1dF9fc3VmZml4ey13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzO2NvbG9yOiNDMEM0Q0N9LmVsLXN3aXRjaF9fY29yZTphZnRlcntjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxcHg7bGVmdDoxcHg7Ym9yZGVyLXJhZGl1czoxMDAlO3RyYW5zaXRpb246YWxsIC4zczt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtc3dpdGNoLmlzLWNoZWNrZWQgLmVsLXN3aXRjaF9fY29yZXtib3JkZXItY29sb3I6IzQwOUVGRjtiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkZ9LmVsLXN3aXRjaC5pcy1jaGVja2VkIC5lbC1zd2l0Y2hfX2NvcmU6OmFmdGVye2xlZnQ6MTAwJTttYXJnaW4tbGVmdDotMTdweH0uZWwtc3dpdGNoLmlzLWRpc2FibGVke29wYWNpdHk6LjZ9LmVsLXN3aXRjaC0td2lkZSAuZWwtc3dpdGNoX19sYWJlbC5lbC1zd2l0Y2hfX2xhYmVsLS1sZWZ0IHNwYW57bGVmdDoxMHB4fS5lbC1zd2l0Y2gtLXdpZGUgLmVsLXN3aXRjaF9fbGFiZWwuZWwtc3dpdGNoX19sYWJlbC0tcmlnaHQgc3BhbntyaWdodDoxMHB4fS5lbC1zd2l0Y2ggLmxhYmVsLWZhZGUtZW50ZXIsLmVsLXN3aXRjaCAubGFiZWwtZmFkZS1sZWF2ZS1hY3RpdmV7b3BhY2l0eTowfS5lbC1zZWxlY3QtZHJvcGRvd257cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAxO2JvcmRlcjoxcHggc29saWQgI0U0RTdFRDtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSk7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjo1cHggMH0uZWwtc2VsZWN0LWRyb3Bkb3duLmlzLW11bHRpcGxlIC5lbC1zZWxlY3QtZHJvcGRvd25fX2l0ZW17cGFkZGluZy1yaWdodDo0MHB4fS5lbC1zZWxlY3QtZHJvcGRvd24uaXMtbXVsdGlwbGUgLmVsLXNlbGVjdC1kcm9wZG93bl9faXRlbS5zZWxlY3RlZHtjb2xvcjojNDA5RUZGO2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtc2VsZWN0LWRyb3Bkb3duLmlzLW11bHRpcGxlIC5lbC1zZWxlY3QtZHJvcGRvd25fX2l0ZW0uc2VsZWN0ZWQuaG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBfS5lbC1zZWxlY3QtZHJvcGRvd24uaXMtbXVsdGlwbGUgLmVsLXNlbGVjdC1kcm9wZG93bl9faXRlbS5zZWxlY3RlZDo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MjBweDtmb250LWZhbWlseTplbGVtZW50LWljb25zO2NvbnRlbnQ6XFxcIlxcXFxlNmRhXFxcIjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9LmVsLXNlbGVjdC1kcm9wZG93biAuZWwtc2Nyb2xsYmFyLmlzLWVtcHR5IC5lbC1zZWxlY3QtZHJvcGRvd25fX2xpc3R7cGFkZGluZzowfS5lbC1zZWxlY3QtZHJvcGRvd25fX2VtcHR5e3BhZGRpbmc6MTBweCAwO21hcmdpbjowO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM5OTk7Zm9udC1zaXplOjE0cHh9LmVsLXNlbGVjdC1kcm9wZG93bl9fd3JhcHttYXgtaGVpZ2h0OjI3NHB4fS5lbC1zZWxlY3QtZHJvcGRvd25fX2xpc3R7bGlzdC1zdHlsZTpub25lO3BhZGRpbmc6NnB4IDA7bWFyZ2luOjA7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1zZWxlY3QtZHJvcGRvd25fX2l0ZW17Zm9udC1zaXplOjE0cHg7cGFkZGluZzowIDIwcHg7cG9zaXRpb246cmVsYXRpdmU7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2NvbG9yOiM2MDYyNjY7aGVpZ2h0OjM0cHg7bGluZS1oZWlnaHQ6MzRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXJ9LmVsLXNlbGVjdC1kcm9wZG93bl9faXRlbS5pcy1kaXNhYmxlZHtjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtc2VsZWN0LWRyb3Bkb3duX19pdGVtLmlzLWRpc2FibGVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtc2VsZWN0LWRyb3Bkb3duX19pdGVtLmhvdmVyLC5lbC1zZWxlY3QtZHJvcGRvd25fX2l0ZW06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBfS5lbC1zZWxlY3QtZHJvcGRvd25fX2l0ZW0uc2VsZWN0ZWR7Y29sb3I6IzQwOUVGRjtmb250LXdlaWdodDo3MDB9LmVsLXNlbGVjdC1ncm91cHttYXJnaW46MDtwYWRkaW5nOjB9LmVsLXNlbGVjdC1ncm91cF9fd3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfS5lbC1zZWxlY3QtZ3JvdXBfX3dyYXA6bm90KDpsYXN0LW9mLXR5cGUpe3BhZGRpbmctYm90dG9tOjI0cHh9LmVsLXNlbGVjdC1ncm91cF9fd3JhcDpub3QoOmxhc3Qtb2YtdHlwZSk6OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztsZWZ0OjIwcHg7cmlnaHQ6MjBweDtib3R0b206MTJweDtoZWlnaHQ6MXB4O2JhY2tncm91bmQ6I0U0RTdFRH0uZWwtc2VsZWN0LWdyb3VwX190aXRsZXtwYWRkaW5nLWxlZnQ6MjBweDtmb250LXNpemU6MTJweDtjb2xvcjojOTA5Mzk5O2xpbmUtaGVpZ2h0OjMwcHh9LmVsLXNlbGVjdC1ncm91cCAuZWwtc2VsZWN0LWRyb3Bkb3duX19pdGVte3BhZGRpbmctbGVmdDoyMHB4fS5lbC1zZWxlY3R7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmVsLXNlbGVjdCAuZWwtc2VsZWN0X190YWdzPnNwYW57ZGlzcGxheTpjb250ZW50c30uZWwtc2VsZWN0OmhvdmVyIC5lbC1pbnB1dF9faW5uZXJ7Ym9yZGVyLWNvbG9yOiNDMEM0Q0N9LmVsLXNlbGVjdCAuZWwtaW5wdXRfX2lubmVye2N1cnNvcjpwb2ludGVyO3BhZGRpbmctcmlnaHQ6MzVweH0uZWwtc2VsZWN0IC5lbC1pbnB1dF9faW5uZXI6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLXNlbGVjdCAuZWwtaW5wdXQgLmVsLXNlbGVjdF9fY2FyZXR7Y29sb3I6I0MwQzRDQztmb250LXNpemU6MTRweDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7dHJhbnNmb3JtOnJvdGF0ZVooMTgwZGVnKTtjdXJzb3I6cG9pbnRlcn0uZWwtc2VsZWN0IC5lbC1pbnB1dCAuZWwtc2VsZWN0X19jYXJldC5pcy1yZXZlcnNle3RyYW5zZm9ybTpyb3RhdGVaKDApfS5lbC1zZWxlY3QgLmVsLWlucHV0IC5lbC1zZWxlY3RfX2NhcmV0LmlzLXNob3ctY2xvc2V7Zm9udC1zaXplOjE0cHg7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNmb3JtOnJvdGF0ZVooMTgwZGVnKTtib3JkZXItcmFkaXVzOjEwMCU7Y29sb3I6I0MwQzRDQzt0cmFuc2l0aW9uOmNvbG9yIC4ycyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSl9LmVsLXNlbGVjdCAuZWwtaW5wdXQgLmVsLXNlbGVjdF9fY2FyZXQuaXMtc2hvdy1jbG9zZTpob3Zlcntjb2xvcjojOTA5Mzk5fS5lbC1zZWxlY3QgLmVsLWlucHV0LmlzLWRpc2FibGVkIC5lbC1pbnB1dF9faW5uZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1zZWxlY3QgLmVsLWlucHV0LmlzLWRpc2FibGVkIC5lbC1pbnB1dF9faW5uZXI6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNFNEU3RUR9LmVsLXJhbmdlLWVkaXRvci5pcy1hY3RpdmUsLmVsLXJhbmdlLWVkaXRvci5pcy1hY3RpdmU6aG92ZXIsLmVsLXNlbGVjdCAuZWwtaW5wdXQuaXMtZm9jdXMgLmVsLWlucHV0X19pbm5lcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtc2VsZWN0Pi5lbC1pbnB1dHtkaXNwbGF5OmJsb2NrfS5lbC1zZWxlY3RfX2lucHV0e2JvcmRlcjpub25lO291dGxpbmU6MDtwYWRkaW5nOjA7bWFyZ2luLWxlZnQ6MTVweDtjb2xvcjojNjY2O2ZvbnQtc2l6ZToxNHB4Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtoZWlnaHQ6MjhweDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5lbC1zZWxlY3RfX2lucHV0LmlzLW1pbml7aGVpZ2h0OjE0cHh9LmVsLXNlbGVjdF9fY2xvc2V7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjhweDt6LWluZGV4OjEwMDA7cmlnaHQ6MjVweDtjb2xvcjojQzBDNENDO2xpbmUtaGVpZ2h0OjE4cHg7Zm9udC1zaXplOjE0cHh9LmVsLXNlbGVjdF9fY2xvc2U6aG92ZXJ7Y29sb3I6IzkwOTM5OX0uZWwtc2VsZWN0X190YWdze3Bvc2l0aW9uOmFic29sdXRlO2xpbmUtaGVpZ2h0Om5vcm1hbDt3aGl0ZS1zcGFjZTpub3JtYWw7ei1pbmRleDoxO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcH0uZWwtc2VsZWN0X190YWdzLXRleHR7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmVsLXNlbGVjdCAuZWwtdGFne2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7bWFyZ2luOjJweCAwIDJweCA2cHg7YmFja2dyb3VuZC1jb2xvcjojZjBmMmY1O2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTthbGlnbi1pdGVtczpjZW50ZXJ9LmVsLXNlbGVjdCAuZWwtdGFnX19jbG9zZS5lbC1pY29uLWNsb3Nle2JhY2tncm91bmQtY29sb3I6I0MwQzRDQzt0b3A6MDtjb2xvcjojRkZGO2ZsZXgtc2hyaW5rOjB9LmVsLXNlbGVjdCAuZWwtdGFnX19jbG9zZS5lbC1pY29uLWNsb3NlOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzkwOTM5OX0uZWwtdGFibGUsLmVsLXRhYmxlX19leHBhbmRlZC1jZWxse2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtc2VsZWN0IC5lbC10YWdfX2Nsb3NlLmVsLWljb24tY2xvc2U6OmJlZm9yZXtkaXNwbGF5OmJsb2NrO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwuNXB4KX0uZWwtdGFibGV7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmbGV4OjE7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTtmb250LXNpemU6MTRweDtjb2xvcjojNjA2MjY2fS5lbC10YWJsZV9fZW1wdHktYmxvY2t7bWluLWhlaWdodDo2MHB4O3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5lbC10YWJsZV9fZW1wdHktdGV4dHtsaW5lLWhlaWdodDo2MHB4O3dpZHRoOjUwJTtjb2xvcjojOTA5Mzk5fS5lbC10YWJsZV9fZXhwYW5kLWNvbHVtbiAuY2VsbHtwYWRkaW5nOjA7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXRhYmxlX19leHBhbmQtaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNjY2O2ZvbnQtc2l6ZToxMnB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLWluLW91dDtoZWlnaHQ6MjBweH0uZWwtdGFibGVfX2V4cGFuZC1pY29uLS1leHBhbmRlZHt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0uZWwtdGFibGVfX2V4cGFuZC1pY29uPi5lbC1pY29ue3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO3RvcDo1MCU7bWFyZ2luLWxlZnQ6LTVweDttYXJnaW4tdG9wOi01cHh9LmVsLXRhYmxlX19leHBhbmRlZC1jZWxsW2NsYXNzKj1jZWxsXXtwYWRkaW5nOjIwcHggNTBweH0uZWwtdGFibGVfX2V4cGFuZGVkLWNlbGw6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnR9LmVsLXRhYmxlX19wbGFjZWhvbGRlcntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyMHB4fS5lbC10YWJsZV9fYXBwZW5kLXdyYXBwZXJ7b3ZlcmZsb3c6aGlkZGVufS5lbC10YWJsZS0tZml0e2JvcmRlci1yaWdodDowO2JvcmRlci1ib3R0b206MH0uZWwtdGFibGUtLWZpdCAuZWwtdGFibGVfX2NlbGwuZ3V0dGVye2JvcmRlci1yaWdodC13aWR0aDoxcHh9LmVsLXRhYmxlLS1zY3JvbGxhYmxlLXggLmVsLXRhYmxlX19ib2R5LXdyYXBwZXJ7b3ZlcmZsb3cteDphdXRvfS5lbC10YWJsZS0tc2Nyb2xsYWJsZS15IC5lbC10YWJsZV9fYm9keS13cmFwcGVye292ZXJmbG93LXk6YXV0b30uZWwtdGFibGUgdGhlYWR7Y29sb3I6IzkwOTM5OTtmb250LXdlaWdodDo1MDB9LmVsLXRhYmxlIHRoZWFkLmlzLWdyb3VwIHRoLmVsLXRhYmxlX19jZWxse2JhY2tncm91bmQ6I0Y1RjdGQX0uZWwtdGFibGUgLmVsLXRhYmxlX19jZWxse3BhZGRpbmc6MTJweCAwO21pbi13aWR0aDowO2JveC1zaXppbmc6Ym9yZGVyLWJveDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmxlZnR9LmVsLXRhYmxlIC5lbC10YWJsZV9fY2VsbC5pcy1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXRhYmxlIC5lbC10YWJsZV9fY2VsbC5pcy1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0fS5lbC10YWJsZSAuZWwtdGFibGVfX2NlbGwuZ3V0dGVye3dpZHRoOjE1cHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDowO3BhZGRpbmc6MH0uZWwtdGFibGUgLmVsLXRhYmxlX19jZWxsLmlzLWhpZGRlbj4qe3Zpc2liaWxpdHk6aGlkZGVufS5lbC10YWJsZS0tbWVkaXVtIC5lbC10YWJsZV9fY2VsbHtwYWRkaW5nOjEwcHggMH0uZWwtdGFibGUtLXNtYWxse2ZvbnQtc2l6ZToxMnB4fS5lbC10YWJsZS0tc21hbGwgLmVsLXRhYmxlX19jZWxse3BhZGRpbmc6OHB4IDB9LmVsLXRhYmxlLS1taW5pe2ZvbnQtc2l6ZToxMnB4fS5lbC10YWJsZS0tbWluaSAuZWwtdGFibGVfX2NlbGx7cGFkZGluZzo2cHggMH0uZWwtdGFibGUgdHJ7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC10YWJsZSB0ciBpbnB1dFt0eXBlPWNoZWNrYm94XXttYXJnaW46MH0uZWwtdGFibGUgdGQuZWwtdGFibGVfX2NlbGwsLmVsLXRhYmxlIHRoLmVsLXRhYmxlX19jZWxsLmlzLWxlYWZ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGUgdGguZWwtdGFibGVfX2NlbGwuaXMtc29ydGFibGV7Y3Vyc29yOnBvaW50ZXJ9LmVsLXRhYmxlIHRoLmVsLXRhYmxlX19jZWxse292ZXJmbG93OmhpZGRlbjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC10YWJsZSB0aC5lbC10YWJsZV9fY2VsbD4uY2VsbHtkaXNwbGF5OmlubGluZS1ibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctcmlnaHQ6MTBweDt3aWR0aDoxMDAlfS5lbC10YWJsZSB0aC5lbC10YWJsZV9fY2VsbD4uY2VsbC5oaWdobGlnaHR7Y29sb3I6IzQwOUVGRn0uZWwtdGFibGUgdGguZWwtdGFibGVfX2NlbGwucmVxdWlyZWQ+ZGl2OjpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDpcXFwiXFxcIjt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiNmZjRkNTE7bWFyZ2luLXJpZ2h0OjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXRhYmxlIHRkLmVsLXRhYmxlX19jZWxsIGRpdntib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWRhdGUtdGFibGUgdGQsLmVsLXRhYmxlIC5jZWxsLC5lbC10YWJsZS1maWx0ZXJ7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXRhYmxlIHRkLmVsLXRhYmxlX19jZWxsLmd1dHRlcnt3aWR0aDowfS5lbC10YWJsZSAuY2VsbHtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm9ybWFsO3dvcmQtYnJlYWs6YnJlYWstYWxsO2xpbmUtaGVpZ2h0OjIzcHg7cGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy1yaWdodDoxMHB4fS5lbC10YWJsZSAuY2VsbC5lbC10b29sdGlwe3doaXRlLXNwYWNlOm5vd3JhcDttaW4td2lkdGg6NTBweH0uZWwtdGFibGUtLWJvcmRlciwuZWwtdGFibGUtLWdyb3Vwe2JvcmRlcjoxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGUtLWJvcmRlcjo6YWZ0ZXIsLmVsLXRhYmxlLS1ncm91cDo6YWZ0ZXIsLmVsLXRhYmxlOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNFQkVFRjU7ei1pbmRleDoxfS5lbC10YWJsZS0tYm9yZGVyOjphZnRlciwuZWwtdGFibGUtLWdyb3VwOjphZnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjFweDtoZWlnaHQ6MTAwJX0uZWwtdGFibGU6OmJlZm9yZXtsZWZ0OjA7Ym90dG9tOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4fS5lbC10YWJsZS0tYm9yZGVye2JvcmRlci1yaWdodDpub25lO2JvcmRlci1ib3R0b206bm9uZX0uZWwtdGFibGUtLWJvcmRlci5lbC1sb2FkaW5nLXBhcmVudC0tcmVsYXRpdmV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5lbC10YWJsZS0tYm9yZGVyIC5lbC10YWJsZV9fY2VsbCwuZWwtdGFibGVfX2JvZHktd3JhcHBlciAuZWwtdGFibGUtLWJvcmRlci5pcy1zY3JvbGxpbmctbGVmdH4uZWwtdGFibGVfX2ZpeGVke2JvcmRlci1yaWdodDoxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGUtLWJvcmRlciAuZWwtdGFibGVfX2NlbGw6Zmlyc3QtY2hpbGQgLmNlbGx7cGFkZGluZy1sZWZ0OjEwcHh9LmVsLXRhYmxlLS1ib3JkZXIgdGguZWwtdGFibGVfX2NlbGwuZ3V0dGVyOmxhc3Qtb2YtdHlwZXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRUJFRUY1O2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5lbC10YWJsZS0tYm9yZGVyIHRoLmVsLXRhYmxlX19jZWxsLC5lbC10YWJsZV9fZml4ZWQtcmlnaHQtcGF0Y2h7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGUtLWhpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbn0uZWwtdGFibGVfX2ZpeGVkLC5lbC10YWJsZV9fZml4ZWQtcmlnaHR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6aGlkZGVuO2JveC1zaGFkb3c6MCAwIDEwcHggcmdiYSgwLDAsMCwuMTIpfS5lbC10YWJsZV9fZml4ZWQtcmlnaHQ6OmJlZm9yZSwuZWwtdGFibGVfX2ZpeGVkOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6I0VCRUVGNTt6LWluZGV4OjR9LmVsLXRhYmxlX19maXhlZC1yaWdodC1wYXRjaHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTFweDtyaWdodDowO2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtdGFibGVfX2ZpeGVkLXJpZ2h0e3RvcDowO2xlZnQ6YXV0bztyaWdodDowfS5lbC10YWJsZV9fZml4ZWQtcmlnaHQgLmVsLXRhYmxlX19maXhlZC1ib2R5LXdyYXBwZXIsLmVsLXRhYmxlX19maXhlZC1yaWdodCAuZWwtdGFibGVfX2ZpeGVkLWZvb3Rlci13cmFwcGVyLC5lbC10YWJsZV9fZml4ZWQtcmlnaHQgLmVsLXRhYmxlX19maXhlZC1oZWFkZXItd3JhcHBlcntsZWZ0OmF1dG87cmlnaHQ6MH0uZWwtdGFibGVfX2ZpeGVkLWhlYWRlci13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt6LWluZGV4OjN9LmVsLXRhYmxlX19maXhlZC1mb290ZXItd3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjA7ei1pbmRleDozfS5lbC10YWJsZV9fZml4ZWQtZm9vdGVyLXdyYXBwZXIgdGJvZHkgdGQuZWwtdGFibGVfX2NlbGx7Ym9yZGVyLXRvcDoxcHggc29saWQgI0VCRUVGNTtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Y29sb3I6IzYwNjI2Nn0uZWwtdGFibGVfX2ZpeGVkLWJvZHktd3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjM3cHg7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6M30uZWwtdGFibGVfX2JvZHktd3JhcHBlciwuZWwtdGFibGVfX2Zvb3Rlci13cmFwcGVyLC5lbC10YWJsZV9faGVhZGVyLXdyYXBwZXJ7d2lkdGg6MTAwJX0uZWwtdGFibGVfX2Zvb3Rlci13cmFwcGVye21hcmdpbi10b3A6LTFweH0uZWwtdGFibGVfX2Zvb3Rlci13cmFwcGVyIHRkLmVsLXRhYmxlX19jZWxse2JvcmRlci10b3A6MXB4IHNvbGlkICNFQkVFRjV9LmVsLXRhYmxlX19ib2R5LC5lbC10YWJsZV9fZm9vdGVyLC5lbC10YWJsZV9faGVhZGVye3RhYmxlLWxheW91dDpmaXhlZDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGV9LmVsLXRhYmxlX19mb290ZXItd3JhcHBlciwuZWwtdGFibGVfX2hlYWRlci13cmFwcGVye292ZXJmbG93OmhpZGRlbn0uZWwtdGFibGVfX2Zvb3Rlci13cmFwcGVyIHRib2R5IHRkLmVsLXRhYmxlX19jZWxsLC5lbC10YWJsZV9faGVhZGVyLXdyYXBwZXIgdGJvZHkgdGQuZWwtdGFibGVfX2NlbGx7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBO2NvbG9yOiM2MDYyNjZ9LmVsLXRhYmxlX19ib2R5LXdyYXBwZXJ7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC10YWJsZV9fYm9keS13cmFwcGVyLmlzLXNjcm9sbGluZy1sZWZ0fi5lbC10YWJsZV9fZml4ZWQsLmVsLXRhYmxlX19ib2R5LXdyYXBwZXIuaXMtc2Nyb2xsaW5nLW5vbmV+LmVsLXRhYmxlX19maXhlZCwuZWwtdGFibGVfX2JvZHktd3JhcHBlci5pcy1zY3JvbGxpbmctbm9uZX4uZWwtdGFibGVfX2ZpeGVkLXJpZ2h0LC5lbC10YWJsZV9fYm9keS13cmFwcGVyLmlzLXNjcm9sbGluZy1yaWdodH4uZWwtdGFibGVfX2ZpeGVkLXJpZ2h0e2JveC1zaGFkb3c6bm9uZX0uZWwtdGFibGVfX2JvZHktd3JhcHBlciAuZWwtdGFibGUtLWJvcmRlci5pcy1zY3JvbGxpbmctcmlnaHR+LmVsLXRhYmxlX19maXhlZC1yaWdodHtib3JkZXItbGVmdDoxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGUgLmNhcmV0LXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDozNHB4O3dpZHRoOjI0cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmluaXRpYWw7cG9zaXRpb246cmVsYXRpdmV9LmVsLXRhYmxlIC5zb3J0LWNhcmV0e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyOjVweCBzb2xpZCB0cmFuc3BhcmVudDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjdweH0uZWwtdGFibGUgLnNvcnQtY2FyZXQuYXNjZW5kaW5ne2JvcmRlci1ib3R0b20tY29sb3I6I0MwQzRDQzt0b3A6NXB4fS5lbC10YWJsZSAuc29ydC1jYXJldC5kZXNjZW5kaW5ne2JvcmRlci10b3AtY29sb3I6I0MwQzRDQztib3R0b206N3B4fS5lbC10YWJsZSAuYXNjZW5kaW5nIC5zb3J0LWNhcmV0LmFzY2VuZGluZ3tib3JkZXItYm90dG9tLWNvbG9yOiM0MDlFRkZ9LmVsLXRhYmxlIC5kZXNjZW5kaW5nIC5zb3J0LWNhcmV0LmRlc2NlbmRpbmd7Ym9yZGVyLXRvcC1jb2xvcjojNDA5RUZGfS5lbC10YWJsZSAuaGlkZGVuLWNvbHVtbnN7dmlzaWJpbGl0eTpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDotMX0uZWwtdGFibGUtLXN0cmlwZWQgLmVsLXRhYmxlX19ib2R5IHRyLmVsLXRhYmxlX19yb3ctLXN0cmlwZWQgdGQuZWwtdGFibGVfX2NlbGx7YmFja2dyb3VuZDojRkFGQUZBfS5lbC10YWJsZS0tc3RyaXBlZCAuZWwtdGFibGVfX2JvZHkgdHIuZWwtdGFibGVfX3Jvdy0tc3RyaXBlZC5jdXJyZW50LXJvdyB0ZC5lbC10YWJsZV9fY2VsbCwuZWwtdGFibGUtLXN0cmlwZWQgLmVsLXRhYmxlX19ib2R5IHRyLmVsLXRhYmxlX19yb3ctLXN0cmlwZWQuc2VsZWN0aW9uLXJvdyB0ZC5lbC10YWJsZV9fY2VsbHtiYWNrZ3JvdW5kLWNvbG9yOiNlY2Y1ZmZ9LmVsLXRhYmxlX19ib2R5IHRyLmhvdmVyLXJvdy5jdXJyZW50LXJvdz50ZC5lbC10YWJsZV9fY2VsbCwuZWwtdGFibGVfX2JvZHkgdHIuaG92ZXItcm93LmVsLXRhYmxlX19yb3ctLXN0cmlwZWQuY3VycmVudC1yb3c+dGQuZWwtdGFibGVfX2NlbGwsLmVsLXRhYmxlX19ib2R5IHRyLmhvdmVyLXJvdy5lbC10YWJsZV9fcm93LS1zdHJpcGVkLnNlbGVjdGlvbi1yb3c+dGQuZWwtdGFibGVfX2NlbGwsLmVsLXRhYmxlX19ib2R5IHRyLmhvdmVyLXJvdy5lbC10YWJsZV9fcm93LS1zdHJpcGVkPnRkLmVsLXRhYmxlX19jZWxsLC5lbC10YWJsZV9fYm9keSB0ci5ob3Zlci1yb3cuc2VsZWN0aW9uLXJvdz50ZC5lbC10YWJsZV9fY2VsbCwuZWwtdGFibGVfX2JvZHkgdHIuaG92ZXItcm93PnRkLmVsLXRhYmxlX19jZWxse2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQX0uZWwtdGFibGVfX2JvZHkgdHIuY3VycmVudC1yb3c+dGQuZWwtdGFibGVfX2NlbGwsLmVsLXRhYmxlX19ib2R5IHRyLnNlbGVjdGlvbi1yb3c+dGQuZWwtdGFibGVfX2NlbGx7YmFja2dyb3VuZC1jb2xvcjojZWNmNWZmfS5lbC10YWJsZV9fY29sdW1uLXJlc2l6ZS1wcm94eXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjIwMHB4O3RvcDowO2JvdHRvbTowO3dpZHRoOjA7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNFQkVFRjU7ei1pbmRleDoxMH0uZWwtdGFibGVfX2NvbHVtbi1maWx0ZXItdHJpZ2dlcntkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDozNHB4O2N1cnNvcjpwb2ludGVyfS5lbC10YWJsZV9fY29sdW1uLWZpbHRlci10cmlnZ2VyIGl7Y29sb3I6IzkwOTM5OTtmb250LXNpemU6MTJweDt0cmFuc2Zvcm06c2NhbGUoLjc1KX0uZWwtdGFibGUtLWVuYWJsZS1yb3ctdHJhbnNpdGlvbiAuZWwtdGFibGVfX2JvZHkgdGQuZWwtdGFibGVfX2NlbGx7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4yNXMgZWFzZX0uZWwtdGFibGUtLWVuYWJsZS1yb3ctaG92ZXIgLmVsLXRhYmxlX19ib2R5IHRyOmhvdmVyPnRkLmVsLXRhYmxlX19jZWxse2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQX0uZWwtdGFibGUtLWZsdWlkLWhlaWdodCAuZWwtdGFibGVfX2ZpeGVkLC5lbC10YWJsZS0tZmx1aWQtaGVpZ2h0IC5lbC10YWJsZV9fZml4ZWQtcmlnaHR7Ym90dG9tOjA7b3ZlcmZsb3c6aGlkZGVufS5lbC10YWJsZSBbY2xhc3MqPWVsLXRhYmxlX19yb3ctLWxldmVsXSAuZWwtdGFibGVfX2V4cGFuZC1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjIwcHg7bGluZS1oZWlnaHQ6MjBweDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tcmlnaHQ6M3B4fS5lbC10YWJsZS1jb2x1bW4tLXNlbGVjdGlvbiAuY2VsbHtwYWRkaW5nLWxlZnQ6MTRweDtwYWRkaW5nLXJpZ2h0OjE0cHh9LmVsLXRhYmxlLWZpbHRlcntib3JkZXI6MXB4IHNvbGlkICNFQkVFRjU7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW46MnB4IDB9LmVsLXRhYmxlLWZpbHRlcl9fbGlzdHtwYWRkaW5nOjVweCAwO21hcmdpbjowO2xpc3Qtc3R5bGU6bm9uZTttaW4td2lkdGg6MTAwcHh9LmVsLXRhYmxlLWZpbHRlcl9fbGlzdC1pdGVte2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDEwcHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE0cHh9LmVsLXRhYmxlLWZpbHRlcl9fbGlzdC1pdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VjZjVmZjtjb2xvcjojNjZiMWZmfS5lbC10YWJsZS1maWx0ZXJfX2xpc3QtaXRlbS5pcy1hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNDA5RUZGO2NvbG9yOiNGRkZ9LmVsLXRhYmxlLWZpbHRlcl9fY29udGVudHttaW4td2lkdGg6MTAwcHh9LmVsLXRhYmxlLWZpbHRlcl9fYm90dG9te2JvcmRlci10b3A6MXB4IHNvbGlkICNFQkVFRjU7cGFkZGluZzo4cHh9LmVsLXRhYmxlLWZpbHRlcl9fYm90dG9tIGJ1dHRvbntiYWNrZ3JvdW5kOjAgMDtib3JkZXI6bm9uZTtjb2xvcjojNjA2MjY2O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6MCAzcHh9LmVsLWRhdGUtdGFibGUgdGQuaW4tcmFuZ2UgZGl2LC5lbC1kYXRlLXRhYmxlIHRkLmluLXJhbmdlIGRpdjpob3ZlciwuZWwtZGF0ZS10YWJsZS5pcy13ZWVrLW1vZGUgLmVsLWRhdGUtdGFibGVfX3Jvdy5jdXJyZW50IGRpdiwuZWwtZGF0ZS10YWJsZS5pcy13ZWVrLW1vZGUgLmVsLWRhdGUtdGFibGVfX3Jvdzpob3ZlciBkaXZ7YmFja2dyb3VuZC1jb2xvcjojRjJGNkZDfS5lbC10YWJsZS1maWx0ZXJfX2JvdHRvbSBidXR0b246aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtdGFibGUtZmlsdGVyX19ib3R0b20gYnV0dG9uOmZvY3Vze291dGxpbmU6MH0uZWwtdGFibGUtZmlsdGVyX19ib3R0b20gYnV0dG9uLmlzLWRpc2FibGVke2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC10YWJsZS1maWx0ZXJfX3dyYXB7bWF4LWhlaWdodDoyODBweH0uZWwtdGFibGUtZmlsdGVyX19jaGVja2JveC1ncm91cHtwYWRkaW5nOjEwcHh9LmVsLXRhYmxlLWZpbHRlcl9fY2hlY2tib3gtZ3JvdXAgbGFiZWwuZWwtY2hlY2tib3h7ZGlzcGxheTpibG9jazttYXJnaW4tcmlnaHQ6NXB4O21hcmdpbi1ib3R0b206OHB4O21hcmdpbi1sZWZ0OjVweH0uZWwtdGFibGUtZmlsdGVyX19jaGVja2JveC1ncm91cCAuZWwtY2hlY2tib3g6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmVsLWRhdGUtdGFibGV7Zm9udC1zaXplOjEycHg7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5lbC1kYXRlLXRhYmxlLmlzLXdlZWstbW9kZSAuZWwtZGF0ZS10YWJsZV9fcm93OmhvdmVyIHRkLmF2YWlsYWJsZTpob3Zlcntjb2xvcjojNjA2MjY2fS5lbC1kYXRlLXRhYmxlLmlzLXdlZWstbW9kZSAuZWwtZGF0ZS10YWJsZV9fcm93OmhvdmVyIHRkOmZpcnN0LWNoaWxkIGRpdnttYXJnaW4tbGVmdDo1cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxNXB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MTVweH0uZWwtZGF0ZS10YWJsZS5pcy13ZWVrLW1vZGUgLmVsLWRhdGUtdGFibGVfX3Jvdzpob3ZlciB0ZDpsYXN0LWNoaWxkIGRpdnttYXJnaW4tcmlnaHQ6NXB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjE1cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MTVweH0uZWwtZGF0ZS10YWJsZSB0ZHt3aWR0aDozMnB4O2hlaWdodDozMHB4O3BhZGRpbmc6NHB4IDA7Ym94LXNpemluZzpib3JkZXItYm94O3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC1kYXRlLXRhYmxlIHRkIGRpdntoZWlnaHQ6MzBweDtwYWRkaW5nOjNweCAwO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtZGF0ZS10YWJsZSB0ZCBzcGFue3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvO2xpbmUtaGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7Ym9yZGVyLXJhZGl1czo1MCV9LmVsLWRhdGUtdGFibGUgdGQubmV4dC1tb250aCwuZWwtZGF0ZS10YWJsZSB0ZC5wcmV2LW1vbnRoe2NvbG9yOiNDMEM0Q0N9LmVsLWRhdGUtdGFibGUgdGQudG9kYXl7cG9zaXRpb246cmVsYXRpdmV9LmVsLWRhdGUtdGFibGUgdGQudG9kYXkgc3Bhbntjb2xvcjojNDA5RUZGO2ZvbnQtd2VpZ2h0OjcwMH0uZWwtZGF0ZS10YWJsZSB0ZC50b2RheS5lbmQtZGF0ZSBzcGFuLC5lbC1kYXRlLXRhYmxlIHRkLnRvZGF5LnN0YXJ0LWRhdGUgc3Bhbntjb2xvcjojRkZGfS5lbC1kYXRlLXRhYmxlIHRkLmF2YWlsYWJsZTpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1kYXRlLXRhYmxlIHRkLmN1cnJlbnQ6bm90KC5kaXNhYmxlZCkgc3Bhbntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6IzQwOUVGRn0uZWwtZGF0ZS10YWJsZSB0ZC5lbmQtZGF0ZSBkaXYsLmVsLWRhdGUtdGFibGUgdGQuc3RhcnQtZGF0ZSBkaXZ7Y29sb3I6I0ZGRn0uZWwtZGF0ZS10YWJsZSB0ZC5lbmQtZGF0ZSBzcGFuLC5lbC1kYXRlLXRhYmxlIHRkLnN0YXJ0LWRhdGUgc3BhbntiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkZ9LmVsLWRhdGUtdGFibGUgdGQuc3RhcnQtZGF0ZSBkaXZ7bWFyZ2luLWxlZnQ6NXB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MTVweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjE1cHh9LmVsLWRhdGUtdGFibGUgdGQuZW5kLWRhdGUgZGl2e21hcmdpbi1yaWdodDo1cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MTVweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czoxNXB4fS5lbC1kYXRlLXRhYmxlIHRkLmRpc2FibGVkIGRpdntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7b3BhY2l0eToxO2N1cnNvcjpub3QtYWxsb3dlZDtjb2xvcjojQzBDNENDfS5lbC1kYXRlLXRhYmxlIHRkLnNlbGVjdGVkIGRpdnttYXJnaW4tbGVmdDo1cHg7bWFyZ2luLXJpZ2h0OjVweDtiYWNrZ3JvdW5kLWNvbG9yOiNGMkY2RkM7Ym9yZGVyLXJhZGl1czoxNXB4fS5lbC1kYXRlLXRhYmxlIHRkLnNlbGVjdGVkIGRpdjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNGMkY2RkN9LmVsLWRhdGUtdGFibGUgdGQuc2VsZWN0ZWQgc3BhbntiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkY7Y29sb3I6I0ZGRjtib3JkZXItcmFkaXVzOjE1cHh9LmVsLWRhdGUtdGFibGUgdGQud2Vla3tmb250LXNpemU6ODAlO2NvbG9yOiM2MDYyNjZ9LmVsLW1vbnRoLXRhYmxlLC5lbC15ZWFyLXRhYmxle2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX0uZWwtZGF0ZS10YWJsZSB0aHtwYWRkaW5nOjVweDtjb2xvcjojNjA2MjY2O2ZvbnQtd2VpZ2h0OjQwMDtib3JkZXItYm90dG9tOnNvbGlkIDFweCAjRUJFRUY1fS5lbC1tb250aC10YWJsZXttYXJnaW46LTFweH0uZWwtbW9udGgtdGFibGUgdGR7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo4cHggMDtjdXJzb3I6cG9pbnRlcn0uZWwtbW9udGgtdGFibGUgdGQgZGl2e2hlaWdodDo0OHB4O3BhZGRpbmc6NnB4IDA7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1tb250aC10YWJsZSB0ZC50b2RheSAuY2VsbHtjb2xvcjojNDA5RUZGO2ZvbnQtd2VpZ2h0OjcwMH0uZWwtbW9udGgtdGFibGUgdGQudG9kYXkuZW5kLWRhdGUgLmNlbGwsLmVsLW1vbnRoLXRhYmxlIHRkLnRvZGF5LnN0YXJ0LWRhdGUgLmNlbGx7Y29sb3I6I0ZGRn0uZWwtbW9udGgtdGFibGUgdGQuZGlzYWJsZWQgLmNlbGx7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBO2N1cnNvcjpub3QtYWxsb3dlZDtjb2xvcjojQzBDNENDfS5lbC1tb250aC10YWJsZSB0ZC5kaXNhYmxlZCAuY2VsbDpob3Zlcntjb2xvcjojQzBDNENDfS5lbC1tb250aC10YWJsZSB0ZCAuY2VsbHt3aWR0aDo2MHB4O2hlaWdodDozNnB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MzZweDtjb2xvcjojNjA2MjY2O21hcmdpbjowIGF1dG87Ym9yZGVyLXJhZGl1czoxOHB4fS5lbC1tb250aC10YWJsZSB0ZCAuY2VsbDpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1tb250aC10YWJsZSB0ZC5pbi1yYW5nZSBkaXYsLmVsLW1vbnRoLXRhYmxlIHRkLmluLXJhbmdlIGRpdjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNGMkY2RkN9LmVsLW1vbnRoLXRhYmxlIHRkLmVuZC1kYXRlIGRpdiwuZWwtbW9udGgtdGFibGUgdGQuc3RhcnQtZGF0ZSBkaXZ7Y29sb3I6I0ZGRn0uZWwtbW9udGgtdGFibGUgdGQuZW5kLWRhdGUgLmNlbGwsLmVsLW1vbnRoLXRhYmxlIHRkLnN0YXJ0LWRhdGUgLmNlbGx7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkZ9LmVsLW1vbnRoLXRhYmxlIHRkLnN0YXJ0LWRhdGUgZGl2e2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MjRweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjI0cHh9LmVsLW1vbnRoLXRhYmxlIHRkLmVuZC1kYXRlIGRpdntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czoyNHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjI0cHh9LmVsLW1vbnRoLXRhYmxlIHRkLmN1cnJlbnQ6bm90KC5kaXNhYmxlZCkgLmNlbGx7Y29sb3I6IzQwOUVGRn0uZWwteWVhci10YWJsZXttYXJnaW46LTFweH0uZWwteWVhci10YWJsZSAuZWwtaWNvbntjb2xvcjojMzAzMTMzfS5lbC15ZWFyLXRhYmxlIHRke3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MjBweCAzcHg7Y3Vyc29yOnBvaW50ZXJ9LmVsLXllYXItdGFibGUgdGQudG9kYXkgLmNlbGx7Y29sb3I6IzQwOUVGRjtmb250LXdlaWdodDo3MDB9LmVsLXllYXItdGFibGUgdGQuZGlzYWJsZWQgLmNlbGx7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBO2N1cnNvcjpub3QtYWxsb3dlZDtjb2xvcjojQzBDNENDfS5lbC15ZWFyLXRhYmxlIHRkLmRpc2FibGVkIC5jZWxsOmhvdmVye2NvbG9yOiNDMEM0Q0N9LmVsLXllYXItdGFibGUgdGQgLmNlbGx7d2lkdGg6NDhweDtoZWlnaHQ6MzJweDtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjMycHg7Y29sb3I6IzYwNjI2NjttYXJnaW46MCBhdXRvfS5lbC15ZWFyLXRhYmxlIHRkIC5jZWxsOmhvdmVyLC5lbC15ZWFyLXRhYmxlIHRkLmN1cnJlbnQ6bm90KC5kaXNhYmxlZCkgLmNlbGx7Y29sb3I6IzQwOUVGRn0uZWwtZGF0ZS1yYW5nZS1waWNrZXJ7d2lkdGg6NjQ2cHh9LmVsLWRhdGUtcmFuZ2UtcGlja2VyLmhhcy1zaWRlYmFye3dpZHRoOjc1NnB4fS5lbC1kYXRlLXJhbmdlLXBpY2tlciB0YWJsZXt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MTAwJX0uZWwtZGF0ZS1yYW5nZS1waWNrZXIgLmVsLXBpY2tlci1wYW5lbF9fYm9keXttaW4td2lkdGg6NTEzcHh9LmVsLWRhdGUtcmFuZ2UtcGlja2VyIC5lbC1waWNrZXItcGFuZWxfX2NvbnRlbnR7bWFyZ2luOjB9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX19oZWFkZXJ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7aGVpZ2h0OjI4cHh9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX19oZWFkZXIgW2NsYXNzKj1hcnJvdy1sZWZ0XXtmbG9hdDpsZWZ0fS5lbC1kYXRlLXJhbmdlLXBpY2tlcl9faGVhZGVyIFtjbGFzcyo9YXJyb3ctcmlnaHRde2Zsb2F0OnJpZ2h0fS5lbC1kYXRlLXJhbmdlLXBpY2tlcl9faGVhZGVyIGRpdntmb250LXNpemU6MTZweDtmb250LXdlaWdodDo1MDA7bWFyZ2luLXJpZ2h0OjUwcHh9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX19jb250ZW50e2Zsb2F0OmxlZnQ7d2lkdGg6NTAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW46MDtwYWRkaW5nOjE2cHh9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX19jb250ZW50LmlzLWxlZnR7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZTRlNGU0fS5lbC1kYXRlLXJhbmdlLXBpY2tlcl9fY29udGVudCAuZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2hlYWRlciBkaXZ7bWFyZ2luLWxlZnQ6NTBweDttYXJnaW4tcmlnaHQ6NTBweH0uZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2VkaXRvcnMtd3JhcHtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTp0YWJsZS1jZWxsfS5lbC1kYXRlLXJhbmdlLXBpY2tlcl9fZWRpdG9ycy13cmFwLmlzLXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX190aW1lLWhlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTRlNGU0O2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmc6OHB4IDVweCA1cHg7ZGlzcGxheTp0YWJsZTt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtZGF0ZS1yYW5nZS1waWNrZXJfX3RpbWUtaGVhZGVyPi5lbC1pY29uLWFycm93LXJpZ2h0e2ZvbnQtc2l6ZToyMHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OnRhYmxlLWNlbGw7Y29sb3I6IzMwMzEzM30uZWwtZGF0ZS1yYW5nZS1waWNrZXJfX3RpbWUtcGlja2VyLXdyYXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTp0YWJsZS1jZWxsO3BhZGRpbmc6MCA1cHh9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX190aW1lLXBpY2tlci13cmFwIC5lbC1waWNrZXItcGFuZWx7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEzcHg7cmlnaHQ6MDt6LWluZGV4OjE7YmFja2dyb3VuZDojRkZGfS5lbC1kYXRlLXBpY2tlcnt3aWR0aDozMjJweH0uZWwtZGF0ZS1waWNrZXIuaGFzLXNpZGViYXIuaGFzLXRpbWV7d2lkdGg6NDM0cHh9LmVsLWRhdGUtcGlja2VyLmhhcy1zaWRlYmFye3dpZHRoOjQzOHB4fS5lbC1kYXRlLXBpY2tlci5oYXMtdGltZSAuZWwtcGlja2VyLXBhbmVsX19ib2R5LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9LmVsLWRhdGUtcGlja2VyIC5lbC1waWNrZXItcGFuZWxfX2NvbnRlbnR7d2lkdGg6MjkycHh9LmVsLWRhdGUtcGlja2VyIHRhYmxle3RhYmxlLWxheW91dDpmaXhlZDt3aWR0aDoxMDAlfS5lbC1kYXRlLXBpY2tlcl9fZWRpdG9yLXdyYXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTp0YWJsZS1jZWxsO3BhZGRpbmc6MCA1cHh9LmVsLWRhdGUtcGlja2VyX190aW1lLWhlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTRlNGU0O2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmc6OHB4IDVweCA1cHg7ZGlzcGxheTp0YWJsZTt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtZGF0ZS1waWNrZXJfX2hlYWRlcnttYXJnaW46MTJweDt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtZGF0ZS1waWNrZXJfX2hlYWRlci0tYm9yZGVyZWR7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctYm90dG9tOjEycHg7Ym9yZGVyLWJvdHRvbTpzb2xpZCAxcHggI0VCRUVGNX0uZWwtZGF0ZS1waWNrZXJfX2hlYWRlci0tYm9yZGVyZWQrLmVsLXBpY2tlci1wYW5lbF9fY29udGVudHttYXJnaW4tdG9wOjB9LmVsLWRhdGUtcGlja2VyX19oZWFkZXItbGFiZWx7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NTAwO3BhZGRpbmc6MCA1cHg7bGluZS1oZWlnaHQ6MjJweDt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNjA2MjY2fS5lbC1kYXRlLXBpY2tlcl9faGVhZGVyLWxhYmVsLmFjdGl2ZSwuZWwtZGF0ZS1waWNrZXJfX2hlYWRlci1sYWJlbDpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1kYXRlLXBpY2tlcl9fcHJldi1idG57ZmxvYXQ6bGVmdH0uZWwtZGF0ZS1waWNrZXJfX25leHQtYnRue2Zsb2F0OnJpZ2h0fS5lbC1kYXRlLXBpY2tlcl9fdGltZS13cmFwe3BhZGRpbmc6MTBweDt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtZGF0ZS1waWNrZXJfX3RpbWUtbGFiZWx7ZmxvYXQ6bGVmdDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDozMHB4O21hcmdpbi1sZWZ0OjEwcHh9LnRpbWUtc2VsZWN0e21hcmdpbjo1cHggMDttaW4td2lkdGg6MH0udGltZS1zZWxlY3QgLmVsLXBpY2tlci1wYW5lbF9fY29udGVudHttYXgtaGVpZ2h0OjIwMHB4O21hcmdpbjowfS50aW1lLXNlbGVjdC1pdGVte3BhZGRpbmc6OHB4IDEwcHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweH0udGltZS1zZWxlY3QtaXRlbS5zZWxlY3RlZDpub3QoLmRpc2FibGVkKXtjb2xvcjojNDA5RUZGO2ZvbnQtd2VpZ2h0OjcwMH0udGltZS1zZWxlY3QtaXRlbS5kaXNhYmxlZHtjb2xvcjojRTRFN0VEO2N1cnNvcjpub3QtYWxsb3dlZH0udGltZS1zZWxlY3QtaXRlbTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Zm9udC13ZWlnaHQ6NzAwO2N1cnNvcjpwb2ludGVyfS5lbC1kYXRlLWVkaXRvcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmxlZnR9LmVsLWRhdGUtZWRpdG9yLmVsLWlucHV0LC5lbC1kYXRlLWVkaXRvci5lbC1pbnB1dF9faW5uZXJ7d2lkdGg6MjIwcHh9LmVsLWRhdGUtZWRpdG9yLS1tb250aHJhbmdlLmVsLWlucHV0LC5lbC1kYXRlLWVkaXRvci0tbW9udGhyYW5nZS5lbC1pbnB1dF9faW5uZXJ7d2lkdGg6MzAwcHh9LmVsLWRhdGUtZWRpdG9yLS1kYXRlcmFuZ2UuZWwtaW5wdXQsLmVsLWRhdGUtZWRpdG9yLS1kYXRlcmFuZ2UuZWwtaW5wdXRfX2lubmVyLC5lbC1kYXRlLWVkaXRvci0tdGltZXJhbmdlLmVsLWlucHV0LC5lbC1kYXRlLWVkaXRvci0tdGltZXJhbmdlLmVsLWlucHV0X19pbm5lcnt3aWR0aDozNTBweH0uZWwtZGF0ZS1lZGl0b3ItLWRhdGV0aW1lcmFuZ2UuZWwtaW5wdXQsLmVsLWRhdGUtZWRpdG9yLS1kYXRldGltZXJhbmdlLmVsLWlucHV0X19pbm5lcnt3aWR0aDo0MDBweH0uZWwtZGF0ZS1lZGl0b3ItLWRhdGVzIC5lbC1pbnB1dF9faW5uZXJ7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LmVsLWRhdGUtZWRpdG9yIC5lbC1pY29uLWNpcmNsZS1jbG9zZXtjdXJzb3I6cG9pbnRlcn0uZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlX19pY29ue2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1sZWZ0Oi01cHg7Y29sb3I6I0MwQzRDQztmbG9hdDpsZWZ0O2xpbmUtaGVpZ2h0OjMycHh9LmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZS1pbnB1dHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOm5vbmU7b3V0bGluZTowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDozOSU7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzYwNjI2Nn0uZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlLWlucHV0OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZS1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlLXNlcGFyYXRvcntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTtwYWRkaW5nOjAgNXB4O21hcmdpbjowO3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjMycHg7Zm9udC1zaXplOjE0cHg7d2lkdGg6NSU7Y29sb3I6IzMwMzEzM30uZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlX19jbG9zZS1pY29ue2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiNDMEM0Q0M7d2lkdGg6MjVweDtkaXNwbGF5OmlubGluZS1ibG9jaztmbG9hdDpyaWdodDtsaW5lLWhlaWdodDozMnB4fS5lbC1yYW5nZS1lZGl0b3IuZWwtaW5wdXRfX2lubmVye2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6M3B4IDEwcHh9LmVsLXJhbmdlLWVkaXRvciAuZWwtcmFuZ2UtaW5wdXR7bGluZS1oZWlnaHQ6MX0uZWwtcmFuZ2UtZWRpdG9yLS1tZWRpdW0uZWwtaW5wdXRfX2lubmVye2hlaWdodDozNnB4fS5lbC1yYW5nZS1lZGl0b3ItLW1lZGl1bSAuZWwtcmFuZ2Utc2VwYXJhdG9ye2xpbmUtaGVpZ2h0OjI4cHg7Zm9udC1zaXplOjE0cHh9LmVsLXJhbmdlLWVkaXRvci0tbWVkaXVtIC5lbC1yYW5nZS1pbnB1dHtmb250LXNpemU6MTRweH0uZWwtcmFuZ2UtZWRpdG9yLS1tZWRpdW0gLmVsLXJhbmdlX19jbG9zZS1pY29uLC5lbC1yYW5nZS1lZGl0b3ItLW1lZGl1bSAuZWwtcmFuZ2VfX2ljb257bGluZS1oZWlnaHQ6MjhweH0uZWwtcmFuZ2UtZWRpdG9yLS1zbWFsbC5lbC1pbnB1dF9faW5uZXJ7aGVpZ2h0OjMycHh9LmVsLXJhbmdlLWVkaXRvci0tc21hbGwgLmVsLXJhbmdlLXNlcGFyYXRvcntsaW5lLWhlaWdodDoyNHB4O2ZvbnQtc2l6ZToxM3B4fS5lbC1yYW5nZS1lZGl0b3ItLXNtYWxsIC5lbC1yYW5nZS1pbnB1dHtmb250LXNpemU6MTNweH0uZWwtcmFuZ2UtZWRpdG9yLS1zbWFsbCAuZWwtcmFuZ2VfX2Nsb3NlLWljb24sLmVsLXJhbmdlLWVkaXRvci0tc21hbGwgLmVsLXJhbmdlX19pY29ue2xpbmUtaGVpZ2h0OjI0cHh9LmVsLXJhbmdlLWVkaXRvci0tbWluaS5lbC1pbnB1dF9faW5uZXJ7aGVpZ2h0OjI4cHh9LmVsLXJhbmdlLWVkaXRvci0tbWluaSAuZWwtcmFuZ2Utc2VwYXJhdG9ye2xpbmUtaGVpZ2h0OjIwcHg7Zm9udC1zaXplOjEycHh9LmVsLXJhbmdlLWVkaXRvci0tbWluaSAuZWwtcmFuZ2UtaW5wdXR7Zm9udC1zaXplOjEycHh9LmVsLXJhbmdlLWVkaXRvci0tbWluaSAuZWwtcmFuZ2VfX2Nsb3NlLWljb24sLmVsLXJhbmdlLWVkaXRvci0tbWluaSAuZWwtcmFuZ2VfX2ljb257bGluZS1oZWlnaHQ6MjBweH0uZWwtcmFuZ2UtZWRpdG9yLmlzLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQTtib3JkZXItY29sb3I6I0U0RTdFRDtjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtcmFuZ2UtZWRpdG9yLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1yYW5nZS1lZGl0b3IuaXMtZGlzYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNFNEU3RUR9LmVsLXJhbmdlLWVkaXRvci5pcy1kaXNhYmxlZCBpbnB1dHtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXJhbmdlLWVkaXRvci5pcy1kaXNhYmxlZCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC1yYW5nZS1lZGl0b3IuaXMtZGlzYWJsZWQgaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLXJhbmdlLWVkaXRvci5pcy1kaXNhYmxlZCAuZWwtcmFuZ2Utc2VwYXJhdG9ye2NvbG9yOiNDMEM0Q0N9LmVsLXBpY2tlci1wYW5lbHtjb2xvcjojNjA2MjY2O2JvcmRlcjoxcHggc29saWQgI0U0RTdFRDtib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKTtiYWNrZ3JvdW5kOiNGRkY7Ym9yZGVyLXJhZGl1czo0cHg7bGluZS1oZWlnaHQ6MzBweDttYXJnaW46NXB4IDB9LmVsLXBpY2tlci1wYW5lbF9fYm9keS13cmFwcGVyOjphZnRlciwuZWwtcGlja2VyLXBhbmVsX19ib2R5OjphZnRlcntjb250ZW50OlxcXCJcXFwiO2Rpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH0uZWwtcGlja2VyLXBhbmVsX19jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjoxNXB4fS5lbC1waWNrZXItcGFuZWxfX2Zvb3Rlcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTRlNGU0O3BhZGRpbmc6NHB4O3RleHQtYWxpZ246cmlnaHQ7YmFja2dyb3VuZC1jb2xvcjojRkZGO3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTowfS5lbC1waWNrZXItcGFuZWxfX3Nob3J0Y3V0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2xpbmUtaGVpZ2h0OjI4cHg7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzYwNjI2NjtwYWRkaW5nLWxlZnQ6MTJweDt0ZXh0LWFsaWduOmxlZnQ7b3V0bGluZTowO2N1cnNvcjpwb2ludGVyfS5lbC1waWNrZXItcGFuZWxfX3Nob3J0Y3V0OmhvdmVye2NvbG9yOiM0MDlFRkZ9LmVsLXBpY2tlci1wYW5lbF9fc2hvcnRjdXQuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2U2ZjFmZTtjb2xvcjojNDA5RUZGfS5lbC1waWNrZXItcGFuZWxfX2J0bntib3JkZXI6MXB4IHNvbGlkICNkY2RjZGM7Y29sb3I6IzMzMztsaW5lLWhlaWdodDoyNHB4O2JvcmRlci1yYWRpdXM6MnB4O3BhZGRpbmc6MCAyMHB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7b3V0bGluZTowO2ZvbnQtc2l6ZToxMnB4fS5lbC1waWNrZXItcGFuZWxfX2J0bltkaXNhYmxlZF17Y29sb3I6I2NjYztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXBpY2tlci1wYW5lbF9faWNvbi1idG57Zm9udC1zaXplOjEycHg7Y29sb3I6IzMwMzEzMztib3JkZXI6MDtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOjA7bWFyZ2luLXRvcDo4cHh9LmVsLXBpY2tlci1wYW5lbF9faWNvbi1idG46aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0bi5pcy1kaXNhYmxlZHtjb2xvcjojYmJifS5lbC1waWNrZXItcGFuZWxfX2ljb24tYnRuLmlzLWRpc2FibGVkOmhvdmVye2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtcGlja2VyLXBhbmVsX19saW5rLWJ0bnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXBpY2tlci1wYW5lbCBbc2xvdD1zaWRlYmFyXSwuZWwtcGlja2VyLXBhbmVsX19zaWRlYmFye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3dpZHRoOjExMHB4O2JvcmRlci1yaWdodDoxcHggc29saWQgI2U0ZTRlNDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZy10b3A6NnB4O2JhY2tncm91bmQtY29sb3I6I0ZGRjtvdmVyZmxvdzphdXRvfS5lbC1waWNrZXItcGFuZWwgW3Nsb3Q9c2lkZWJhcl0rLmVsLXBpY2tlci1wYW5lbF9fYm9keSwuZWwtcGlja2VyLXBhbmVsX19zaWRlYmFyKy5lbC1waWNrZXItcGFuZWxfX2JvZHl7bWFyZ2luLWxlZnQ6MTEwcHh9LmVsLXRpbWUtc3Bpbm5lci5oYXMtc2Vjb25kcyAuZWwtdGltZS1zcGlubmVyX193cmFwcGVye3dpZHRoOjMzLjMlfS5lbC10aW1lLXNwaW5uZXJfX3dyYXBwZXJ7bWF4LWhlaWdodDoxOTBweDtvdmVyZmxvdzphdXRvO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjUwJTt2ZXJ0aWNhbC1hbGlnbjp0b3A7cG9zaXRpb246cmVsYXRpdmV9LmVsLXRpbWUtc3Bpbm5lcl9fd3JhcHBlciAuZWwtc2Nyb2xsYmFyX193cmFwOm5vdCguZWwtc2Nyb2xsYmFyX193cmFwLS1oaWRkZW4tZGVmYXVsdCl7cGFkZGluZy1ib3R0b206MTVweH0uZWwtdGltZS1zcGlubmVyX19pbnB1dC5lbC1pbnB1dCAuZWwtaW5wdXRfX2lubmVyLC5lbC10aW1lLXNwaW5uZXJfX2xpc3R7cGFkZGluZzowO3RleHQtYWxpZ246Y2VudGVyfS5lbC10aW1lLXNwaW5uZXJfX3dyYXBwZXIuaXMtYXJyb3d7Ym94LXNpemluZzpib3JkZXItYm94O3RleHQtYWxpZ246Y2VudGVyO292ZXJmbG93OmhpZGRlbn0uZWwtdGltZS1zcGlubmVyX193cmFwcGVyLmlzLWFycm93IC5lbC10aW1lLXNwaW5uZXJfX2xpc3R7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTMycHgpfS5lbC10aW1lLXNwaW5uZXJfX3dyYXBwZXIuaXMtYXJyb3cgLmVsLXRpbWUtc3Bpbm5lcl9faXRlbTpob3Zlcjpub3QoLmRpc2FibGVkKTpub3QoLmFjdGl2ZSl7YmFja2dyb3VuZDojRkZGO2N1cnNvcjpkZWZhdWx0fS5lbC10aW1lLXNwaW5uZXJfX2Fycm93e2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM5MDkzOTk7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3dpZHRoOjEwMCU7ei1pbmRleDoxO3RleHQtYWxpZ246Y2VudGVyO2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjMwcHg7Y3Vyc29yOnBvaW50ZXJ9LmVsLXRpbWUtc3Bpbm5lcl9fYXJyb3c6aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtdGltZS1zcGlubmVyX19hcnJvdy5lbC1pY29uLWFycm93LXVwe3RvcDoxMHB4fS5lbC10aW1lLXNwaW5uZXJfX2Fycm93LmVsLWljb24tYXJyb3ctZG93bntib3R0b206MTBweH0uZWwtdGltZS1zcGlubmVyX19pbnB1dC5lbC1pbnB1dHt3aWR0aDo3MCV9LmVsLXRpbWUtc3Bpbm5lcl9fbGlzdHttYXJnaW46MDtsaXN0LXN0eWxlOm5vbmV9LmVsLXRpbWUtc3Bpbm5lcl9fbGlzdDo6YWZ0ZXIsLmVsLXRpbWUtc3Bpbm5lcl9fbGlzdDo6YmVmb3Jle2NvbnRlbnQ6Jyc7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDo4MHB4fS5lbC10aW1lLXNwaW5uZXJfX2l0ZW17aGVpZ2h0OjMycHg7bGluZS1oZWlnaHQ6MzJweDtmb250LXNpemU6MTJweDtjb2xvcjojNjA2MjY2fS5lbC10aW1lLXNwaW5uZXJfX2l0ZW06aG92ZXI6bm90KC5kaXNhYmxlZCk6bm90KC5hY3RpdmUpe2JhY2tncm91bmQ6I0Y1RjdGQTtjdXJzb3I6cG9pbnRlcn0uZWwtdGltZS1zcGlubmVyX19pdGVtLmFjdGl2ZTpub3QoLmRpc2FibGVkKXtjb2xvcjojMzAzMTMzO2ZvbnQtd2VpZ2h0OjcwMH0uZWwtdGltZS1zcGlubmVyX19pdGVtLmRpc2FibGVke2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC10aW1lLXBhbmVse21hcmdpbjo1cHggMDtib3JkZXI6MXB4IHNvbGlkICNFNEU3RUQ7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpO2JvcmRlci1yYWRpdXM6MnB4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjE4MHB4O2xlZnQ6MDt6LWluZGV4OjEwMDA7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JveC1zaXppbmc6Y29udGVudC1ib3h9LmVsLXRpbWUtcGFuZWxfX2NvbnRlbnR7Zm9udC1zaXplOjA7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5lbC10aW1lLXBhbmVsX19jb250ZW50OjphZnRlciwuZWwtdGltZS1wYW5lbF9fY29udGVudDo6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7dG9wOjUwJTtwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW4tdG9wOi0xNXB4O2hlaWdodDozMnB4O3otaW5kZXg6LTE7bGVmdDowO3JpZ2h0OjA7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctdG9wOjZweDt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLXRvcDoxcHggc29saWQgI0U0RTdFRDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRTRFN0VEfS5lbC10aW1lLXBhbmVsX19jb250ZW50OjphZnRlcntsZWZ0OjUwJTttYXJnaW4tbGVmdDoxMiU7bWFyZ2luLXJpZ2h0OjEyJX0uZWwtdGltZS1wYW5lbF9fY29udGVudDo6YmVmb3Jle3BhZGRpbmctbGVmdDo1MCU7bWFyZ2luLXJpZ2h0OjEyJTttYXJnaW4tbGVmdDoxMiV9LmVsLXRpbWUtcGFuZWxfX2NvbnRlbnQuaGFzLXNlY29uZHM6OmFmdGVye2xlZnQ6Y2FsYygxMDAlIC8gMyAqIDIpfS5lbC10aW1lLXBhbmVsX19jb250ZW50Lmhhcy1zZWNvbmRzOjpiZWZvcmV7cGFkZGluZy1sZWZ0OmNhbGMoMTAwJSAvIDMpfS5lbC10aW1lLXBhbmVsX19mb290ZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U0ZTRlNDtwYWRkaW5nOjRweDtoZWlnaHQ6MzZweDtsaW5lLWhlaWdodDoyNXB4O3RleHQtYWxpZ246cmlnaHQ7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC10aW1lLXBhbmVsX19idG57Ym9yZGVyOm5vbmU7bGluZS1oZWlnaHQ6MjhweDtwYWRkaW5nOjAgNXB4O21hcmdpbjowIDVweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O291dGxpbmU6MDtmb250LXNpemU6MTJweDtjb2xvcjojMzAzMTMzfS5lbC10aW1lLXBhbmVsX19idG4uY29uZmlybXtmb250LXdlaWdodDo4MDA7Y29sb3I6IzQwOUVGRn0uZWwtdGltZS1yYW5nZS1waWNrZXJ7d2lkdGg6MzU0cHg7b3ZlcmZsb3c6dmlzaWJsZX0uZWwtdGltZS1yYW5nZS1waWNrZXJfX2NvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxMHB4fS5lbC10aW1lLXJhbmdlLXBpY2tlcl9fY2VsbHtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzo0cHggN3B4IDdweDt3aWR0aDo1MCU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXRpbWUtcmFuZ2UtcGlja2VyX19oZWFkZXJ7bWFyZ2luLWJvdHRvbTo1cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE0cHh9LmVsLXRpbWUtcmFuZ2UtcGlja2VyX19ib2R5e2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgI0U0RTdFRH0uZWwtcG9wb3Zlcntwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiNGRkY7bWluLXdpZHRoOjE1MHB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI0VCRUVGNTtwYWRkaW5nOjEycHg7ei1pbmRleDoyMDAwO2NvbG9yOiM2MDYyNjY7bGluZS1oZWlnaHQ6MS40O3RleHQtYWxpZ246anVzdGlmeTtmb250LXNpemU6MTRweDtib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKTt3b3JkLWJyZWFrOmJyZWFrLWFsbH0uZWwtY2FyZC5pcy1hbHdheXMtc2hhZG93LC5lbC1jYXJkLmlzLWhvdmVyLXNoYWRvdzpmb2N1cywuZWwtY2FyZC5pcy1ob3Zlci1zaGFkb3c6aG92ZXIsLmVsLWNhc2NhZGVyX19kcm9wZG93biwuZWwtY29sb3ItcGlja2VyX19wYW5lbCwuZWwtbWVzc2FnZS1ib3gsLmVsLW5vdGlmaWNhdGlvbnstd2Via2l0LWJveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpfS5lbC1wb3BvdmVyLS1wbGFpbntwYWRkaW5nOjE4cHggMjBweH0uZWwtcG9wb3Zlcl9fdGl0bGV7Y29sb3I6IzMwMzEzMztmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxO21hcmdpbi1ib3R0b206MTJweH0uZWwtcG9wb3Zlcjpmb2N1cywuZWwtcG9wb3Zlcjpmb2N1czphY3RpdmUsLmVsLXBvcG92ZXJfX3JlZmVyZW5jZTpmb2N1czpob3ZlciwuZWwtcG9wb3Zlcl9fcmVmZXJlbmNlOmZvY3VzOm5vdCguZm9jdXNpbmcpe291dGxpbmUtd2lkdGg6MH0udi1tb2RhbC1lbnRlcnthbmltYXRpb246di1tb2RhbC1pbiAuMnMgZWFzZX0udi1tb2RhbC1sZWF2ZXthbmltYXRpb246di1tb2RhbC1vdXQgLjJzIGVhc2UgZm9yd2FyZHN9QGtleWZyYW1lcyB2LW1vZGFsLWluezAle29wYWNpdHk6MH19QGtleWZyYW1lcyB2LW1vZGFsLW91dHsxMDAle29wYWNpdHk6MH19LnYtbW9kYWx7cG9zaXRpb246Zml4ZWQ7bGVmdDowO3RvcDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3BhY2l0eTouNTtiYWNrZ3JvdW5kOiMwMDB9LmVsLXBvcHVwLXBhcmVudC0taGlkZGVue292ZXJmbG93OmhpZGRlbn0uZWwtbWVzc2FnZS1ib3h7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6NDIwcHg7cGFkZGluZy1ib3R0b206MTBweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI0VCRUVGNTtmb250LXNpemU6MThweDtib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKTt0ZXh0LWFsaWduOmxlZnQ7b3ZlcmZsb3c6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS5lbC1tZXNzYWdlLWJveF9fd3JhcHBlcntwb3NpdGlvbjpmaXhlZDt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtbWVzc2FnZS1ib3hfX3dyYXBwZXI6OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwMCU7d2lkdGg6MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLW1lc3NhZ2UtYm94X19oZWFkZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzoxNXB4IDE1cHggMTBweH0uZWwtbWVzc2FnZS1ib3hfX3RpdGxle3BhZGRpbmctbGVmdDowO21hcmdpbi1ib3R0b206MDtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxO2NvbG9yOiMzMDMxMzN9LmVsLW1lc3NhZ2UtYm94X19oZWFkZXJidG57cG9zaXRpb246YWJzb2x1dGU7dG9wOjE1cHg7cmlnaHQ6MTVweDtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7b3V0bGluZTowO2JhY2tncm91bmQ6MCAwO2ZvbnQtc2l6ZToxNnB4O2N1cnNvcjpwb2ludGVyfS5lbC1mb3JtLWl0ZW0uaXMtZXJyb3IgLmVsLWlucHV0X19pbm5lciwuZWwtZm9ybS1pdGVtLmlzLWVycm9yIC5lbC1pbnB1dF9faW5uZXI6Zm9jdXMsLmVsLWZvcm0taXRlbS5pcy1lcnJvciAuZWwtdGV4dGFyZWFfX2lubmVyLC5lbC1mb3JtLWl0ZW0uaXMtZXJyb3IgLmVsLXRleHRhcmVhX19pbm5lcjpmb2N1cywuZWwtbWVzc2FnZS1ib3hfX2lucHV0IGlucHV0LmludmFsaWQsLmVsLW1lc3NhZ2UtYm94X19pbnB1dCBpbnB1dC5pbnZhbGlkOmZvY3Vze2JvcmRlci1jb2xvcjojRjU2QzZDfS5lbC1tZXNzYWdlLWJveF9faGVhZGVyYnRuIC5lbC1tZXNzYWdlLWJveF9fY2xvc2V7Y29sb3I6IzkwOTM5OX0uZWwtbWVzc2FnZS1ib3hfX2hlYWRlcmJ0bjpmb2N1cyAuZWwtbWVzc2FnZS1ib3hfX2Nsb3NlLC5lbC1tZXNzYWdlLWJveF9faGVhZGVyYnRuOmhvdmVyIC5lbC1tZXNzYWdlLWJveF9fY2xvc2V7Y29sb3I6IzQwOUVGRn0uZWwtbWVzc2FnZS1ib3hfX2NvbnRlbnR7cGFkZGluZzoxMHB4IDE1cHg7Y29sb3I6IzYwNjI2Njtmb250LXNpemU6MTRweH0uZWwtbWVzc2FnZS1ib3hfX2NvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtbWVzc2FnZS1ib3hfX2lucHV0e3BhZGRpbmctdG9wOjE1cHh9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXN7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtmb250LXNpemU6MjRweCFpbXBvcnRhbnR9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXM6OmJlZm9yZXtwYWRkaW5nLWxlZnQ6MXB4fS5lbC1tZXNzYWdlLWJveF9fc3RhdHVzKy5lbC1tZXNzYWdlLWJveF9fbWVzc2FnZXtwYWRkaW5nLWxlZnQ6MzZweDtwYWRkaW5nLXJpZ2h0OjEycHh9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXMuZWwtaWNvbi1zdWNjZXNze2NvbG9yOiM2N0MyM0F9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXMuZWwtaWNvbi1pbmZve2NvbG9yOiM5MDkzOTl9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXMuZWwtaWNvbi13YXJuaW5ne2NvbG9yOiNFNkEyM0N9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXMuZWwtaWNvbi1lcnJvcntjb2xvcjojRjU2QzZDfS5lbC1tZXNzYWdlLWJveF9fbWVzc2FnZXttYXJnaW46MH0uZWwtbWVzc2FnZS1ib3hfX21lc3NhZ2UgcHttYXJnaW46MDtsaW5lLWhlaWdodDoyNHB4fS5lbC1tZXNzYWdlLWJveF9fZXJyb3Jtc2d7Y29sb3I6I0Y1NkM2Qztmb250LXNpemU6MTJweDttaW4taGVpZ2h0OjE4cHg7bWFyZ2luLXRvcDoycHh9LmVsLW1lc3NhZ2UtYm94X19idG5ze3BhZGRpbmc6NXB4IDE1cHggMDt0ZXh0LWFsaWduOnJpZ2h0fS5lbC1tZXNzYWdlLWJveF9fYnRucyBidXR0b246bnRoLWNoaWxkKDIpe21hcmdpbi1sZWZ0OjEwcHh9LmVsLW1lc3NhZ2UtYm94X19idG5zLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9LmVsLW1lc3NhZ2UtYm94LS1jZW50ZXJ7cGFkZGluZy1ib3R0b206MzBweH0uZWwtbWVzc2FnZS1ib3gtLWNlbnRlciAuZWwtbWVzc2FnZS1ib3hfX2hlYWRlcntwYWRkaW5nLXRvcDozMHB4fS5lbC1tZXNzYWdlLWJveC0tY2VudGVyIC5lbC1tZXNzYWdlLWJveF9fdGl0bGV7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5lbC1tZXNzYWdlLWJveC0tY2VudGVyIC5lbC1tZXNzYWdlLWJveF9fc3RhdHVze3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDphdXRvO3BhZGRpbmctcmlnaHQ6NXB4O3RleHQtYWxpZ246Y2VudGVyO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpfS5lbC1tZXNzYWdlLWJveC0tY2VudGVyIC5lbC1tZXNzYWdlLWJveF9fbWVzc2FnZXttYXJnaW4tbGVmdDowfS5lbC1tZXNzYWdlLWJveC0tY2VudGVyIC5lbC1tZXNzYWdlLWJveF9fYnRucywuZWwtbWVzc2FnZS1ib3gtLWNlbnRlciAuZWwtbWVzc2FnZS1ib3hfX2NvbnRlbnR7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLW1lc3NhZ2UtYm94LS1jZW50ZXIgLmVsLW1lc3NhZ2UtYm94X19jb250ZW50e3BhZGRpbmctbGVmdDoyN3B4O3BhZGRpbmctcmlnaHQ6MjdweH0ubXNnYm94LWZhZGUtZW50ZXItYWN0aXZle2FuaW1hdGlvbjptc2dib3gtZmFkZS1pbiAuM3N9Lm1zZ2JveC1mYWRlLWxlYXZlLWFjdGl2ZXthbmltYXRpb246bXNnYm94LWZhZGUtb3V0IC4zc31Aa2V5ZnJhbWVzIG1zZ2JveC1mYWRlLWluezAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO29wYWNpdHk6MH0xMDAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIG1zZ2JveC1mYWRlLW91dHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO29wYWNpdHk6MX0xMDAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO29wYWNpdHk6MH19LmVsLWJyZWFkY3J1bWJ7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MX0uZWwtYnJlYWRjcnVtYjo6YWZ0ZXIsLmVsLWJyZWFkY3J1bWI6OmJlZm9yZXtkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6XFxcIlxcXCJ9LmVsLWJyZWFkY3J1bWI6OmFmdGVye2NsZWFyOmJvdGh9LmVsLWJyZWFkY3J1bWJfX3NlcGFyYXRvcnttYXJnaW46MCA5cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiNDMEM0Q0N9LmVsLWJyZWFkY3J1bWJfX3NlcGFyYXRvcltjbGFzcyo9aWNvbl17bWFyZ2luOjAgNnB4O2ZvbnQtd2VpZ2h0OjQwMH0uZWwtYnJlYWRjcnVtYl9faXRlbXtmbG9hdDpsZWZ0fS5lbC1icmVhZGNydW1iX19pbm5lcntjb2xvcjojNjA2MjY2fS5lbC1icmVhZGNydW1iX19pbm5lciBhLC5lbC1icmVhZGNydW1iX19pbm5lci5pcy1saW5re2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWRlY29yYXRpb246bm9uZTt0cmFuc2l0aW9uOmNvbG9yIC4ycyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7Y29sb3I6IzMwMzEzM30uZWwtYnJlYWRjcnVtYl9faW5uZXIgYTpob3ZlciwuZWwtYnJlYWRjcnVtYl9faW5uZXIuaXMtbGluazpob3Zlcntjb2xvcjojNDA5RUZGO2N1cnNvcjpwb2ludGVyfS5lbC1icmVhZGNydW1iX19pdGVtOmxhc3QtY2hpbGQgLmVsLWJyZWFkY3J1bWJfX2lubmVyLC5lbC1icmVhZGNydW1iX19pdGVtOmxhc3QtY2hpbGQgLmVsLWJyZWFkY3J1bWJfX2lubmVyIGEsLmVsLWJyZWFkY3J1bWJfX2l0ZW06bGFzdC1jaGlsZCAuZWwtYnJlYWRjcnVtYl9faW5uZXIgYTpob3ZlciwuZWwtYnJlYWRjcnVtYl9faXRlbTpsYXN0LWNoaWxkIC5lbC1icmVhZGNydW1iX19pbm5lcjpob3Zlcntmb250LXdlaWdodDo0MDA7Y29sb3I6IzYwNjI2NjtjdXJzb3I6dGV4dH0uZWwtZm9ybS0tbGFiZWwtbGVmdCAuZWwtZm9ybS1pdGVtX19sYWJlbHt0ZXh0LWFsaWduOmxlZnR9LmVsLWZvcm0tLWxhYmVsLXRvcCAuZWwtZm9ybS1pdGVtX19sYWJlbHtmbG9hdDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtYWxpZ246bGVmdDtwYWRkaW5nOjAgMCAxMHB4fS5lbC1mb3JtLS1pbmxpbmUgLmVsLWZvcm0taXRlbXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6MTBweDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmVsLWZvcm0tLWlubGluZSAuZWwtZm9ybS1pdGVtX19sYWJlbHtmbG9hdDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC1mb3JtLS1pbmxpbmUgLmVsLWZvcm0taXRlbV9fY29udGVudHtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmVsLWZvcm0tLWlubGluZS5lbC1mb3JtLS1sYWJlbC10b3AgLmVsLWZvcm0taXRlbV9fY29udGVudHtkaXNwbGF5OmJsb2NrfS5lbC1mb3JtLWl0ZW17bWFyZ2luLWJvdHRvbToyMnB4fS5lbC1mb3JtLWl0ZW06OmFmdGVyLC5lbC1mb3JtLWl0ZW06OmJlZm9yZXtkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6XFxcIlxcXCJ9LmVsLWZvcm0taXRlbTo6YWZ0ZXJ7Y2xlYXI6Ym90aH0uZWwtZm9ybS1pdGVtIC5lbC1mb3JtLWl0ZW17bWFyZ2luLWJvdHRvbTowfS5lbC1mb3JtLWl0ZW0tLW1pbmkuZWwtZm9ybS1pdGVtLC5lbC1mb3JtLWl0ZW0tLXNtYWxsLmVsLWZvcm0taXRlbXttYXJnaW4tYm90dG9tOjE4cHh9LmVsLWZvcm0taXRlbSAuZWwtaW5wdXRfX3ZhbGlkYXRlSWNvbntkaXNwbGF5Om5vbmV9LmVsLWZvcm0taXRlbS0tbWVkaXVtIC5lbC1mb3JtLWl0ZW1fX2NvbnRlbnQsLmVsLWZvcm0taXRlbS0tbWVkaXVtIC5lbC1mb3JtLWl0ZW1fX2xhYmVse2xpbmUtaGVpZ2h0OjM2cHh9LmVsLWZvcm0taXRlbS0tc21hbGwgLmVsLWZvcm0taXRlbV9fY29udGVudCwuZWwtZm9ybS1pdGVtLS1zbWFsbCAuZWwtZm9ybS1pdGVtX19sYWJlbHtsaW5lLWhlaWdodDozMnB4fS5lbC1mb3JtLWl0ZW0tLXNtYWxsIC5lbC1mb3JtLWl0ZW1fX2Vycm9ye3BhZGRpbmctdG9wOjJweH0uZWwtZm9ybS1pdGVtLS1taW5pIC5lbC1mb3JtLWl0ZW1fX2NvbnRlbnQsLmVsLWZvcm0taXRlbS0tbWluaSAuZWwtZm9ybS1pdGVtX19sYWJlbHtsaW5lLWhlaWdodDoyOHB4fS5lbC1mb3JtLWl0ZW0tLW1pbmkgLmVsLWZvcm0taXRlbV9fZXJyb3J7cGFkZGluZy10b3A6MXB4fS5lbC1mb3JtLWl0ZW1fX2xhYmVsLXdyYXB7ZmxvYXQ6bGVmdH0uZWwtZm9ybS1pdGVtX19sYWJlbC13cmFwIC5lbC1mb3JtLWl0ZW1fX2xhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Zsb2F0Om5vbmV9LmVsLWZvcm0taXRlbV9fbGFiZWx7dGV4dC1hbGlnbjpyaWdodDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZmxvYXQ6bGVmdDtmb250LXNpemU6MTRweDtjb2xvcjojNjA2MjY2O2xpbmUtaGVpZ2h0OjQwcHg7cGFkZGluZzowIDEycHggMCAwO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtZm9ybS1pdGVtX19jb250ZW50e2xpbmUtaGVpZ2h0OjQwcHg7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjE0cHh9LmVsLWZvcm0taXRlbV9fY29udGVudDo6YWZ0ZXIsLmVsLWZvcm0taXRlbV9fY29udGVudDo6YmVmb3Jle2Rpc3BsYXk6dGFibGU7Y29udGVudDpcXFwiXFxcIn0uZWwtZm9ybS1pdGVtX19jb250ZW50OjphZnRlcntjbGVhcjpib3RofS5lbC1mb3JtLWl0ZW1fX2NvbnRlbnQgLmVsLWlucHV0LWdyb3Vwe3ZlcnRpY2FsLWFsaWduOnRvcH0uZWwtZm9ybS1pdGVtX19lcnJvcntjb2xvcjojRjU2QzZDO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE7cGFkZGluZy10b3A6NHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO2xlZnQ6MH0uZWwtZm9ybS1pdGVtX19lcnJvci0taW5saW5le3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDphdXRvO2xlZnQ6YXV0bztkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tbGVmdDoxMHB4fS5lbC1mb3JtLWl0ZW0uaXMtcmVxdWlyZWQ6bm90KC5pcy1uby1hc3RlcmlzaykgLmVsLWZvcm0taXRlbV9fbGFiZWwtd3JhcD4uZWwtZm9ybS1pdGVtX19sYWJlbDpiZWZvcmUsLmVsLWZvcm0taXRlbS5pcy1yZXF1aXJlZDpub3QoLmlzLW5vLWFzdGVyaXNrKT4uZWwtZm9ybS1pdGVtX19sYWJlbDpiZWZvcmV7Y29udGVudDonKic7Y29sb3I6I0Y1NkM2QzttYXJnaW4tcmlnaHQ6NHB4fS5lbC1mb3JtLWl0ZW0uaXMtZXJyb3IgLmVsLWlucHV0LWdyb3VwX19hcHBlbmQgLmVsLWlucHV0X19pbm5lciwuZWwtZm9ybS1pdGVtLmlzLWVycm9yIC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCAuZWwtaW5wdXRfX2lubmVye2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uZWwtZm9ybS1pdGVtLmlzLWVycm9yIC5lbC1pbnB1dF9fdmFsaWRhdGVJY29ue2NvbG9yOiNGNTZDNkN9LmVsLWZvcm0taXRlbS0tZmVlZGJhY2sgLmVsLWlucHV0X192YWxpZGF0ZUljb257ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXRhYnNfX2hlYWRlcntwYWRkaW5nOjA7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjAgMCAxNXB4fS5lbC10YWJzX19hY3RpdmUtYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2xlZnQ6MDtoZWlnaHQ6MnB4O2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjt6LWluZGV4OjE7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTtsaXN0LXN0eWxlOm5vbmV9LmVsLXRhYnNfX25ldy10YWJ7ZmxvYXQ6cmlnaHQ7Ym9yZGVyOjFweCBzb2xpZCAjZDNkY2U2O2hlaWdodDoxOHB4O3dpZHRoOjE4cHg7bGluZS1oZWlnaHQ6MThweDttYXJnaW46MTJweCAwIDlweCAxMHB4O2JvcmRlci1yYWRpdXM6M3B4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiNkM2RjZTY7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjphbGwgLjE1c30uZWwtdGFic19fbmV3LXRhYiAuZWwtaWNvbi1wbHVze3RyYW5zZm9ybTpzY2FsZSguOCwuOCl9LmVsLXRhYnNfX25ldy10YWI6aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtdGFic19fbmF2LXdyYXB7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbi1ib3R0b206LTFweDtwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtdGFic19fbmF2LXdyYXA6OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO3dpZHRoOjEwMCU7aGVpZ2h0OjJweDtiYWNrZ3JvdW5kLWNvbG9yOiNFNEU3RUQ7ei1pbmRleDoxfS5lbC10YWJzX19uYXYtd3JhcC5pcy1zY3JvbGxhYmxle3BhZGRpbmc6MCAyMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtdGFic19fbmF2LXNjcm9sbHtvdmVyZmxvdzpoaWRkZW59LmVsLXRhYnNfX25hdi1uZXh0LC5lbC10YWJzX19uYXYtcHJldntwb3NpdGlvbjphYnNvbHV0ZTtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDo0NHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM5MDkzOTl9LmVsLXRhYnNfX25hdi1uZXh0e3JpZ2h0OjB9LmVsLXRhYnNfX25hdi1wcmV2e2xlZnQ6MH0uZWwtdGFic19fbmF2e3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7ZmxvYXQ6bGVmdDt6LWluZGV4OjJ9LmVsLXRhYnNfX25hdi5pcy1zdHJldGNoe21pbi13aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleH0uZWwtdGFic19fbmF2LmlzLXN0cmV0Y2g+KntmbGV4OjE7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXRhYnNfX2l0ZW17cGFkZGluZzowIDIwcHg7aGVpZ2h0OjQwcHg7Ym94LXNpemluZzpib3JkZXItYm94O2xpbmUtaGVpZ2h0OjQwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGlzdC1zdHlsZTpub25lO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjojMzAzMTMzO3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC10YWJzX19pdGVtOmZvY3VzLC5lbC10YWJzX19pdGVtOmZvY3VzOmFjdGl2ZXtvdXRsaW5lOjB9LmVsLXRhYnNfX2l0ZW06Zm9jdXMuaXMtYWN0aXZlLmlzLWZvY3VzOm5vdCg6YWN0aXZlKXtib3gtc2hhZG93OjAgMCAycHggMnB4ICM0MDlFRkYgaW5zZXQ7Ym9yZGVyLXJhZGl1czozcHh9LmVsLXRhYnNfX2l0ZW0gLmVsLWljb24tY2xvc2V7Ym9yZGVyLXJhZGl1czo1MCU7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTttYXJnaW4tbGVmdDo1cHh9LmVsLXRhYnNfX2l0ZW0gLmVsLWljb24tY2xvc2U6YmVmb3Jle3RyYW5zZm9ybTpzY2FsZSguOSk7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19fYWN0aXZlLWJhciwuZWwtdGFicy0tbGVmdC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19hY3RpdmUtYmFyLmlzLWxlZnQsLmVsLXRhYnMtLXJpZ2h0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX2FjdGl2ZS1iYXIuaXMtcmlnaHR7ZGlzcGxheTpub25lfS5lbC10YWJzX19pdGVtIC5lbC1pY29uLWNsb3NlOmhvdmVye2JhY2tncm91bmQtY29sb3I6I0MwQzRDQztjb2xvcjojRkZGfS5lbC10YWJzX19pdGVtLmlzLWFjdGl2ZXtjb2xvcjojNDA5RUZGfS5lbC10YWJzX19pdGVtOmhvdmVye2NvbG9yOiM0MDlFRkY7Y3Vyc29yOnBvaW50ZXJ9LmVsLXRhYnNfX2l0ZW0uaXMtZGlzYWJsZWR7Y29sb3I6I0MwQzRDQztjdXJzb3I6ZGVmYXVsdH0uZWwtdGFic19fY29udGVudHtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9LmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRTRFN0VEfS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX25hdi13cmFwOjphZnRlcntjb250ZW50Om5vbmV9LmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19fbmF2e2JvcmRlcjoxcHggc29saWQgI0U0RTdFRDtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbSAuZWwtaWNvbi1jbG9zZXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MTJweDt3aWR0aDowO2hlaWdodDoxNHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtsaW5lLWhlaWdodDoxNXB4O292ZXJmbG93OmhpZGRlbjt0b3A6LTFweDtyaWdodDotMnB4O3RyYW5zZm9ybS1vcmlnaW46MTAwJSA1MCV9LmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbXtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDoxcHggc29saWQgI0U0RTdFRDt0cmFuc2l0aW9uOmNvbG9yIC4zcyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSkscGFkZGluZyAuM3MgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpfS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6bm9uZX0uZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtLmlzLWNsb3NhYmxlOmhvdmVye3BhZGRpbmctbGVmdDoxM3B4O3BhZGRpbmctcmlnaHQ6MTNweH0uZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtLmlzLWNsb3NhYmxlOmhvdmVyIC5lbC1pY29uLWNsb3Nle3dpZHRoOjE0cHh9LmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbS5pcy1hY3RpdmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjojRkZGfS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW0uaXMtYWN0aXZlLmlzLWNsb3NhYmxle3BhZGRpbmctbGVmdDoyMHB4O3BhZGRpbmctcmlnaHQ6MjBweH0uZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtLmlzLWFjdGl2ZS5pcy1jbG9zYWJsZSAuZWwtaWNvbi1jbG9zZXt3aWR0aDoxNHB4fS5lbC10YWJzLS1ib3JkZXItY2FyZHtiYWNrZ3JvdW5kOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2O2JveC1zaGFkb3c6MCAycHggNHB4IDAgcmdiYSgwLDAsMCwuMTIpLDAgMCA2cHggMCByZ2JhKDAsMCwwLC4wNCl9LmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19jb250ZW50e3BhZGRpbmc6MTVweH0uZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlcntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0U0RTdFRDttYXJnaW46MH0uZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19fbmF2LXdyYXA6OmFmdGVye2NvbnRlbnQ6bm9uZX0uZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbXt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7bWFyZ2luLXRvcDotMXB4O2NvbG9yOiM5MDkzOTl9LmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW0rLmVsLXRhYnNfX2l0ZW0sLmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6LTFweH0uZWwtY29sLW9mZnNldC0wLC5lbC10YWJzLS1ib3JkZXItY2FyZD4uZWwtdGFic19faGVhZGVyIC5pcy1zY3JvbGxhYmxlIC5lbC10YWJzX19pdGVtOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjB9LmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW0uaXMtYWN0aXZle2NvbG9yOiM0MDlFRkY7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JvcmRlci1yaWdodC1jb2xvcjojRENERkU2O2JvcmRlci1sZWZ0LWNvbG9yOiNEQ0RGRTZ9LmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06bm90KC5pcy1kaXNhYmxlZCk6aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbS5pcy1kaXNhYmxlZHtjb2xvcjojQzBDNENDfS5lbC10YWJzLS1ib3R0b20gLmVsLXRhYnNfX2l0ZW0uaXMtYm90dG9tOm50aC1jaGlsZCgyKSwuZWwtdGFicy0tYm90dG9tIC5lbC10YWJzX19pdGVtLmlzLXRvcDpudGgtY2hpbGQoMiksLmVsLXRhYnMtLXRvcCAuZWwtdGFic19faXRlbS5pcy1ib3R0b206bnRoLWNoaWxkKDIpLC5lbC10YWJzLS10b3AgLmVsLXRhYnNfX2l0ZW0uaXMtdG9wOm50aC1jaGlsZCgyKXtwYWRkaW5nLWxlZnQ6MH0uZWwtdGFicy0tYm90dG9tIC5lbC10YWJzX19pdGVtLmlzLWJvdHRvbTpsYXN0LWNoaWxkLC5lbC10YWJzLS1ib3R0b20gLmVsLXRhYnNfX2l0ZW0uaXMtdG9wOmxhc3QtY2hpbGQsLmVsLXRhYnMtLXRvcCAuZWwtdGFic19faXRlbS5pcy1ib3R0b206bGFzdC1jaGlsZCwuZWwtdGFicy0tdG9wIC5lbC10YWJzX19pdGVtLmlzLXRvcDpsYXN0LWNoaWxke3BhZGRpbmctcmlnaHQ6MH0uZWwtY2FzY2FkZXItbWVudTpsYXN0LWNoaWxkIC5lbC1jYXNjYWRlci1ub2RlLC5lbC10YWJzLS1ib3R0b20gLmVsLXRhYnMtLWxlZnQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpsYXN0LWNoaWxkLC5lbC10YWJzLS1ib3R0b20gLmVsLXRhYnMtLXJpZ2h0Pi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06bGFzdC1jaGlsZCwuZWwtdGFicy0tYm90dG9tLmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06bGFzdC1jaGlsZCwuZWwtdGFicy0tYm90dG9tLmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpsYXN0LWNoaWxkLC5lbC10YWJzLS10b3AgLmVsLXRhYnMtLWxlZnQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpsYXN0LWNoaWxkLC5lbC10YWJzLS10b3AgLmVsLXRhYnMtLXJpZ2h0Pi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06bGFzdC1jaGlsZCwuZWwtdGFicy0tdG9wLmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06bGFzdC1jaGlsZCwuZWwtdGFicy0tdG9wLmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpsYXN0LWNoaWxke3BhZGRpbmctcmlnaHQ6MjBweH0uZWwtdGFicy0tYm90dG9tIC5lbC10YWJzLS1sZWZ0Pi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDIpLC5lbC10YWJzLS1ib3R0b20gLmVsLXRhYnMtLXJpZ2h0Pi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDIpLC5lbC10YWJzLS1ib3R0b20uZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpudGgtY2hpbGQoMiksLmVsLXRhYnMtLWJvdHRvbS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDIpLC5lbC10YWJzLS10b3AgLmVsLXRhYnMtLWxlZnQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpudGgtY2hpbGQoMiksLmVsLXRhYnMtLXRvcCAuZWwtdGFicy0tcmlnaHQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpudGgtY2hpbGQoMiksLmVsLXRhYnMtLXRvcC5lbC10YWJzLS1ib3JkZXItY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtOm50aC1jaGlsZCgyKSwuZWwtdGFicy0tdG9wLmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpudGgtY2hpbGQoMil7cGFkZGluZy1sZWZ0OjIwcHh9LmVsLXRhYnMtLWJvdHRvbSAuZWwtdGFic19faGVhZGVyLmlzLWJvdHRvbXttYXJnaW4tYm90dG9tOjA7bWFyZ2luLXRvcDoxMHB4fS5lbC10YWJzLS1ib3R0b20uZWwtdGFicy0tYm9yZGVyLWNhcmQgLmVsLXRhYnNfX2hlYWRlci5pcy1ib3R0b217Ym9yZGVyLWJvdHRvbTowO2JvcmRlci10b3A6MXB4IHNvbGlkICNEQ0RGRTZ9LmVsLXRhYnMtLWJvdHRvbS5lbC10YWJzLS1ib3JkZXItY2FyZCAuZWwtdGFic19fbmF2LXdyYXAuaXMtYm90dG9te21hcmdpbi10b3A6LTFweDttYXJnaW4tYm90dG9tOjB9LmVsLXRhYnMtLWJvdHRvbS5lbC10YWJzLS1ib3JkZXItY2FyZCAuZWwtdGFic19faXRlbS5pcy1ib3R0b206bm90KC5pcy1hY3RpdmUpe2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnR9LmVsLXRhYnMtLWJvdHRvbS5lbC10YWJzLS1ib3JkZXItY2FyZCAuZWwtdGFic19faXRlbS5pcy1ib3R0b217bWFyZ2luOjAgLTFweCAtMXB4fS5lbC10YWJzLS1sZWZ0LC5lbC10YWJzLS1yaWdodHtvdmVyZmxvdzpoaWRkZW59LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX2hlYWRlci5pcy1sZWZ0LC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19oZWFkZXIuaXMtcmlnaHQsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi1zY3JvbGwsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19faGVhZGVyLmlzLWxlZnQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19oZWFkZXIuaXMtcmlnaHQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtc2Nyb2xsLC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0e2hlaWdodDoxMDAlfS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19hY3RpdmUtYmFyLmlzLWxlZnQsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX2FjdGl2ZS1iYXIuaXMtcmlnaHQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19hY3RpdmUtYmFyLmlzLWxlZnQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19hY3RpdmUtYmFyLmlzLXJpZ2h0e3RvcDowO2JvdHRvbTphdXRvO3dpZHRoOjJweDtoZWlnaHQ6YXV0b30uZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdCwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHR7bWFyZ2luLWJvdHRvbTowfS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0Pi5lbC10YWJzX19uYXYtbmV4dCwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdD4uZWwtdGFic19fbmF2LXByZXYsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtbmV4dCwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ+LmVsLXRhYnNfX25hdi1wcmV2LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdD4uZWwtdGFic19fbmF2LW5leHQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0Pi5lbC10YWJzX19uYXYtcHJldiwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtbmV4dCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtcHJldntoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDozMHB4O3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXJ9LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1uZXh0IGksLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1wcmV2IGksLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtbmV4dCBpLC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodD4uZWwtdGFic19fbmF2LXByZXYgaSwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1uZXh0IGksLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0Pi5lbC10YWJzX19uYXYtcHJldiBpLC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ+LmVsLXRhYnNfX25hdi1uZXh0IGksLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodD4uZWwtdGFic19fbmF2LXByZXYgaXt0cmFuc2Zvcm06cm90YXRlWig5MGRlZyl9LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1wcmV2LC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodD4uZWwtdGFic19fbmF2LXByZXYsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0Pi5lbC10YWJzX19uYXYtcHJldiwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtcHJldntsZWZ0OmF1dG87dG9wOjB9LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1uZXh0LC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodD4uZWwtdGFic19fbmF2LW5leHQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0Pi5lbC10YWJzX19uYXYtbmV4dCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtbmV4dHtyaWdodDphdXRvO2JvdHRvbTowfS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19hY3RpdmUtYmFyLmlzLWxlZnQsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ6OmFmdGVye3JpZ2h0OjA7bGVmdDphdXRvfS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0LmlzLXNjcm9sbGFibGUsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0LmlzLXNjcm9sbGFibGUsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0LmlzLXNjcm9sbGFibGUsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodC5pcy1zY3JvbGxhYmxle3BhZGRpbmc6MzBweCAwfS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0OjphZnRlciwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ6OmFmdGVyLC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdDo6YWZ0ZXIsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodDo6YWZ0ZXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4O2JvdHRvbTphdXRvO3RvcDowfS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYuaXMtbGVmdCwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LmlzLXJpZ2h0LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LmlzLWxlZnQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYuaXMtcmlnaHR7ZmxvYXQ6bm9uZX0uZWwtdGFicy0tbGVmdCAuZWwtdGFic19faXRlbS5pcy1sZWZ0LC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19pdGVtLmlzLXJpZ2h0LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19faXRlbS5pcy1sZWZ0LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19faXRlbS5pcy1yaWdodHtkaXNwbGF5OmJsb2NrfS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19oZWFkZXIuaXMtbGVmdHtmbG9hdDpsZWZ0O21hcmdpbi1ib3R0b206MDttYXJnaW4tcmlnaHQ6MTBweH0uZWwtYnV0dG9uLWdyb3VwPi5lbC1idXR0b246bm90KDpsYXN0LWNoaWxkKSwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdHttYXJnaW4tcmlnaHQ6LTFweH0uZWwtdGFicy0tbGVmdCAuZWwtdGFic19faXRlbS5pcy1sZWZ0e3RleHQtYWxpZ246cmlnaHR9LmVsLXRhYnMtLWxlZnQuZWwtdGFicy0tY2FyZCAuZWwtdGFic19faXRlbS5pcy1sZWZ0e2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjRTRFN0VEO2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOjFweCBzb2xpZCAjRTRFN0VEO3RleHQtYWxpZ246bGVmdH0uZWwtdGFicy0tbGVmdC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19pdGVtLmlzLWxlZnQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjRTRFN0VEO2JvcmRlci10b3A6bm9uZX0uZWwtdGFicy0tbGVmdC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19pdGVtLmlzLWxlZnQuaXMtYWN0aXZle2JvcmRlcjoxcHggc29saWQgI0U0RTdFRDtib3JkZXItcmlnaHQtY29sb3I6I2ZmZjtib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b206bm9uZX0uZWwtdGFicy0tbGVmdC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19pdGVtLmlzLWxlZnQuaXMtYWN0aXZlOmZpcnN0LWNoaWxke2JvcmRlci10b3A6bm9uZX0uZWwtdGFicy0tbGVmdC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19pdGVtLmlzLWxlZnQuaXMtYWN0aXZlOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfS5lbC10YWJzLS1sZWZ0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX25hdntib3JkZXItcmFkaXVzOjRweCAwIDAgNHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLXJpZ2h0Om5vbmV9LmVsLXRhYnMtLWxlZnQuZWwtdGFicy0tY2FyZCAuZWwtdGFic19fbmV3LXRhYntmbG9hdDpub25lfS5lbC10YWJzLS1sZWZ0LmVsLXRhYnMtLWJvcmRlci1jYXJkIC5lbC10YWJzX19oZWFkZXIuaXMtbGVmdHtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZmU0ZWR9LmVsLXRhYnMtLWxlZnQuZWwtdGFicy0tYm9yZGVyLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtbGVmdHtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O21hcmdpbjotMXB4IDAgLTFweCAtMXB4fS5lbC10YWJzLS1sZWZ0LmVsLXRhYnMtLWJvcmRlci1jYXJkIC5lbC10YWJzX19pdGVtLmlzLWxlZnQuaXMtYWN0aXZle2JvcmRlci1jb2xvcjojZDFkYmU1IHRyYW5zcGFyZW50fS5lbC10YWJzLS1yaWdodCAuZWwtdGFic19faGVhZGVyLmlzLXJpZ2h0e2Zsb2F0OnJpZ2h0O21hcmdpbi1ib3R0b206MDttYXJnaW4tbGVmdDoxMHB4fS5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHR7bWFyZ2luLWxlZnQ6LTFweH0uZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0OjphZnRlcntsZWZ0OjA7cmlnaHQ6YXV0b30uZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX2FjdGl2ZS1iYXIuaXMtcmlnaHR7bGVmdDowfS5lbC10YWJzLS1yaWdodC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19pdGVtLmlzLXJpZ2h0e2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOjFweCBzb2xpZCAjRTRFN0VEfS5lbC10YWJzLS1yaWdodC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19pdGVtLmlzLXJpZ2h0OmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRTRFN0VEO2JvcmRlci10b3A6bm9uZX0uZWwtdGFicy0tcmlnaHQuZWwtdGFicy0tY2FyZCAuZWwtdGFic19faXRlbS5pcy1yaWdodC5pcy1hY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjRTRFN0VEO2JvcmRlci1sZWZ0LWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLWJvdHRvbTpub25lfS5lbC10YWJzLS1yaWdodC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19pdGVtLmlzLXJpZ2h0LmlzLWFjdGl2ZTpmaXJzdC1jaGlsZHtib3JkZXItdG9wOm5vbmV9LmVsLXRhYnMtLXJpZ2h0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtcmlnaHQuaXMtYWN0aXZlOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfS5lbC10YWJzLS1yaWdodC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19uYXZ7Ym9yZGVyLXJhZGl1czowIDRweCA0cHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRTRFN0VEO2JvcmRlci1sZWZ0Om5vbmV9LmVsLXRhYnMtLXJpZ2h0LmVsLXRhYnMtLWJvcmRlci1jYXJkIC5lbC10YWJzX19oZWFkZXIuaXMtcmlnaHR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZmU0ZWR9LmVsLXRhYnMtLXJpZ2h0LmVsLXRhYnMtLWJvcmRlci1jYXJkIC5lbC10YWJzX19pdGVtLmlzLXJpZ2h0e2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7bWFyZ2luOi0xcHggLTFweCAtMXB4IDB9LmVsLXRhYnMtLXJpZ2h0LmVsLXRhYnMtLWJvcmRlci1jYXJkIC5lbC10YWJzX19pdGVtLmlzLXJpZ2h0LmlzLWFjdGl2ZXtib3JkZXItY29sb3I6I2QxZGJlNSB0cmFuc3BhcmVudH0uc2xpZGVJbkxlZnQtdHJhbnNpdGlvbiwuc2xpZGVJblJpZ2h0LXRyYW5zaXRpb257ZGlzcGxheTppbmxpbmUtYmxvY2t9LnNsaWRlSW5SaWdodC1lbnRlcnthbmltYXRpb246c2xpZGVJblJpZ2h0LWVudGVyIC4zc30uc2xpZGVJblJpZ2h0LWxlYXZle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO2FuaW1hdGlvbjpzbGlkZUluUmlnaHQtbGVhdmUgLjNzfS5zbGlkZUluTGVmdC1lbnRlcnthbmltYXRpb246c2xpZGVJbkxlZnQtZW50ZXIgLjNzfS5zbGlkZUluTGVmdC1sZWF2ZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDthbmltYXRpb246c2xpZGVJbkxlZnQtbGVhdmUgLjNzfUBrZXlmcmFtZXMgc2xpZGVJblJpZ2h0LWVudGVyezAle29wYWNpdHk6MDt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9fUBrZXlmcmFtZXMgc2xpZGVJblJpZ2h0LWxlYXZlezAle3RyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApO29wYWNpdHk6MX0xMDAle3RyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpO29wYWNpdHk6MH19QGtleWZyYW1lcyBzbGlkZUluTGVmdC1lbnRlcnswJXtvcGFjaXR5OjA7dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QGtleWZyYW1lcyBzbGlkZUluTGVmdC1sZWF2ZXswJXt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTtvcGFjaXR5OjF9MTAwJXt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7b3BhY2l0eTowfX0uZWwtdHJlZXtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kOiNGRkY7Y29sb3I6IzYwNjI2Nn0uZWwtdHJlZV9fZW1wdHktYmxvY2t7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDo2MHB4O3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LmVsLXRyZWVfX2VtcHR5LXRleHR7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7Y29sb3I6IzkwOTM5OTtmb250LXNpemU6MTRweH0uZWwtdHJlZV9fZHJvcC1pbmRpY2F0b3J7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkZ9LmVsLXRyZWUtbm9kZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowfS5lbC10cmVlLW5vZGU6Zm9jdXM+LmVsLXRyZWUtbm9kZV9fY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkF9LmVsLXRyZWUtbm9kZS5pcy1kcm9wLWlubmVyPi5lbC10cmVlLW5vZGVfX2NvbnRlbnQgLmVsLXRyZWUtbm9kZV9fbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojNDA5RUZGO2NvbG9yOiNmZmZ9LmVsLXRyZWUtbm9kZV9fY29udGVudDpob3ZlciwuZWwtdXBsb2FkLWxpc3RfX2l0ZW06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBfS5lbC10cmVlLW5vZGVfX2NvbnRlbnR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjZweDtjdXJzb3I6cG9pbnRlcn0uZWwtdHJlZS1ub2RlX19jb250ZW50Pi5lbC10cmVlLW5vZGVfX2V4cGFuZC1pY29ue3BhZGRpbmc6NnB4fS5lbC10cmVlLW5vZGVfX2NvbnRlbnQ+bGFiZWwuZWwtY2hlY2tib3h7bWFyZ2luLXJpZ2h0OjhweH0uZWwtdHJlZS5pcy1kcmFnZ2luZyAuZWwtdHJlZS1ub2RlX19jb250ZW50e2N1cnNvcjptb3ZlfS5lbC10cmVlLmlzLWRyYWdnaW5nIC5lbC10cmVlLW5vZGVfX2NvbnRlbnQgKntwb2ludGVyLWV2ZW50czpub25lfS5lbC10cmVlLmlzLWRyYWdnaW5nLmlzLWRyb3Atbm90LWFsbG93IC5lbC10cmVlLW5vZGVfX2NvbnRlbnR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC10cmVlLW5vZGVfX2V4cGFuZC1pY29ue2N1cnNvcjpwb2ludGVyO2NvbG9yOiNDMEM0Q0M7Zm9udC1zaXplOjEycHg7dHJhbnNmb3JtOnJvdGF0ZSgwKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZS1pbi1vdXR9LmVsLXRyZWUtbm9kZV9fZXhwYW5kLWljb24uZXhwYW5kZWR7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LmVsLXRyZWUtbm9kZV9fZXhwYW5kLWljb24uaXMtbGVhZntjb2xvcjp0cmFuc3BhcmVudDtjdXJzb3I6ZGVmYXVsdH0uZWwtdHJlZS1ub2RlX19sYWJlbHtmb250LXNpemU6MTRweH0uZWwtdHJlZS1ub2RlX19sb2FkaW5nLWljb257bWFyZ2luLXJpZ2h0OjhweDtmb250LXNpemU6MTRweDtjb2xvcjojQzBDNENDfS5lbC10cmVlLW5vZGU+LmVsLXRyZWUtbm9kZV9fY2hpbGRyZW57b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmVsLXRyZWUtbm9kZS5pcy1leHBhbmRlZD4uZWwtdHJlZS1ub2RlX19jaGlsZHJlbntkaXNwbGF5OmJsb2NrfS5lbC10cmVlLS1oaWdobGlnaHQtY3VycmVudCAuZWwtdHJlZS1ub2RlLmlzLWN1cnJlbnQ+LmVsLXRyZWUtbm9kZV9fY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmMGY3ZmZ9LmVsLWFsZXJ0e3dpZHRoOjEwMCU7cGFkZGluZzo4cHggMTZweDttYXJnaW46MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo0cHg7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZC1jb2xvcjojRkZGO292ZXJmbG93OmhpZGRlbjtvcGFjaXR5OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzfS5lbC1hbGVydC5pcy1saWdodCAuZWwtYWxlcnRfX2Nsb3NlYnRue2NvbG9yOiNDMEM0Q0N9LmVsLWFsZXJ0LmlzLWRhcmsgLmVsLWFsZXJ0X19jbG9zZWJ0biwuZWwtYWxlcnQuaXMtZGFyayAuZWwtYWxlcnRfX2Rlc2NyaXB0aW9ue2NvbG9yOiNGRkZ9LmVsLWFsZXJ0LmlzLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5lbC1hbGVydC0tc3VjY2Vzcy5pcy1saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmMGY5ZWI7Y29sb3I6IzY3QzIzQX0uZWwtYWxlcnQtLXN1Y2Nlc3MuaXMtbGlnaHQgLmVsLWFsZXJ0X19kZXNjcmlwdGlvbntjb2xvcjojNjdDMjNBfS5lbC1hbGVydC0tc3VjY2Vzcy5pcy1kYXJre2JhY2tncm91bmQtY29sb3I6IzY3QzIzQTtjb2xvcjojRkZGfS5lbC1hbGVydC0taW5mby5pcy1saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjU7Y29sb3I6IzkwOTM5OX0uZWwtYWxlcnQtLWluZm8uaXMtZGFya3tiYWNrZ3JvdW5kLWNvbG9yOiM5MDkzOTk7Y29sb3I6I0ZGRn0uZWwtYWxlcnQtLWluZm8gLmVsLWFsZXJ0X19kZXNjcmlwdGlvbntjb2xvcjojOTA5Mzk5fS5lbC1hbGVydC0td2FybmluZy5pcy1saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmZGY2ZWM7Y29sb3I6I0U2QTIzQ30uZWwtYWxlcnQtLXdhcm5pbmcuaXMtbGlnaHQgLmVsLWFsZXJ0X19kZXNjcmlwdGlvbntjb2xvcjojRTZBMjNDfS5lbC1hbGVydC0td2FybmluZy5pcy1kYXJre2JhY2tncm91bmQtY29sb3I6I0U2QTIzQztjb2xvcjojRkZGfS5lbC1hbGVydC0tZXJyb3IuaXMtbGlnaHR7YmFja2dyb3VuZC1jb2xvcjojZmVmMGYwO2NvbG9yOiNGNTZDNkN9LmVsLWFsZXJ0LS1lcnJvci5pcy1saWdodCAuZWwtYWxlcnRfX2Rlc2NyaXB0aW9ue2NvbG9yOiNGNTZDNkN9LmVsLWFsZXJ0LS1lcnJvci5pcy1kYXJre2JhY2tncm91bmQtY29sb3I6I0Y1NkM2Qztjb2xvcjojRkZGfS5lbC1hbGVydF9fY29udGVudHtkaXNwbGF5OnRhYmxlLWNlbGw7cGFkZGluZzowIDhweH0uZWwtYWxlcnRfX2ljb257Zm9udC1zaXplOjE2cHg7d2lkdGg6MTZweH0uZWwtYWxlcnRfX2ljb24uaXMtYmlne2ZvbnQtc2l6ZToyOHB4O3dpZHRoOjI4cHh9LmVsLWFsZXJ0X190aXRsZXtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxOHB4fS5lbC1hbGVydF9fdGl0bGUuaXMtYm9sZHtmb250LXdlaWdodDo3MDB9LmVsLWFsZXJ0IC5lbC1hbGVydF9fZGVzY3JpcHRpb257Zm9udC1zaXplOjEycHg7bWFyZ2luOjVweCAwIDB9LmVsLWFsZXJ0X19jbG9zZWJ0bntmb250LXNpemU6MTJweDtvcGFjaXR5OjE7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEycHg7cmlnaHQ6MTVweDtjdXJzb3I6cG9pbnRlcn0uZWwtYWxlcnQtZmFkZS1lbnRlciwuZWwtYWxlcnQtZmFkZS1sZWF2ZS1hY3RpdmUsLmVsLWxvYWRpbmctZmFkZS1lbnRlciwuZWwtbG9hZGluZy1mYWRlLWxlYXZlLWFjdGl2ZSwuZWwtbm90aWZpY2F0aW9uLWZhZGUtbGVhdmUtYWN0aXZlLC5lbC11cGxvYWQgaWZyYW1le29wYWNpdHk6MH0uZWwtY2Fyb3VzZWxfX2Fycm93LS1yaWdodCwuZWwtbm90aWZpY2F0aW9uLnJpZ2h0e3JpZ2h0OjE2cHh9LmVsLWFsZXJ0X19jbG9zZWJ0bi5pcy1jdXN0b21lZHtmb250LXN0eWxlOm5vcm1hbDtmb250LXNpemU6MTNweDt0b3A6OXB4fS5lbC1ub3RpZmljYXRpb257ZGlzcGxheTpmbGV4O3dpZHRoOjMzMHB4O3BhZGRpbmc6MTRweCAyNnB4IDE0cHggMTNweDtib3JkZXItcmFkaXVzOjhweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOjFweCBzb2xpZCAjRUJFRUY1O3Bvc2l0aW9uOmZpeGVkO2JhY2tncm91bmQtY29sb3I6I0ZGRjtib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzLHRyYW5zZm9ybSAuM3MsbGVmdCAuM3MscmlnaHQgLjNzLHRvcCAuNHMsYm90dG9tIC4zcztvdmVyZmxvdzpoaWRkZW59LmVsLW5vdGlmaWNhdGlvbi5sZWZ0e2xlZnQ6MTZweH0uZWwtbm90aWZpY2F0aW9uX19ncm91cHttYXJnaW4tbGVmdDoxM3B4O21hcmdpbi1yaWdodDo4cHh9LmVsLW5vdGlmaWNhdGlvbl9fdGl0bGV7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNnB4O2NvbG9yOiMzMDMxMzM7bWFyZ2luOjB9LmVsLW5vdGlmaWNhdGlvbl9fY29udGVudHtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoyMXB4O21hcmdpbjo2cHggMCAwO2NvbG9yOiM2MDYyNjY7dGV4dC1hbGlnbjpqdXN0aWZ5fS5lbC1ub3RpZmljYXRpb25fX2NvbnRlbnQgcHttYXJnaW46MH0uZWwtbm90aWZpY2F0aW9uX19pY29ue2hlaWdodDoyNHB4O3dpZHRoOjI0cHg7Zm9udC1zaXplOjI0cHh9LmVsLW5vdGlmaWNhdGlvbl9fY2xvc2VCdG57cG9zaXRpb246YWJzb2x1dGU7dG9wOjE4cHg7cmlnaHQ6MTVweDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojOTA5Mzk5O2ZvbnQtc2l6ZToxNnB4fS5lbC1ub3RpZmljYXRpb25fX2Nsb3NlQnRuOmhvdmVye2NvbG9yOiM2MDYyNjZ9LmVsLW5vdGlmaWNhdGlvbiAuZWwtaWNvbi1zdWNjZXNze2NvbG9yOiM2N0MyM0F9LmVsLW5vdGlmaWNhdGlvbiAuZWwtaWNvbi1lcnJvcntjb2xvcjojRjU2QzZDfS5lbC1ub3RpZmljYXRpb24gLmVsLWljb24taW5mb3tjb2xvcjojOTA5Mzk5fS5lbC1ub3RpZmljYXRpb24gLmVsLWljb24td2FybmluZ3tjb2xvcjojRTZBMjNDfS5lbC1ub3RpZmljYXRpb24tZmFkZS1lbnRlci5yaWdodHtyaWdodDowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpfS5lbC1ub3RpZmljYXRpb24tZmFkZS1lbnRlci5sZWZ0e2xlZnQ6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9LmVsLWlucHV0LW51bWJlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxODBweDtsaW5lLWhlaWdodDozOHB4fS5lbC1pbnB1dC1udW1iZXIgLmVsLWlucHV0e2Rpc3BsYXk6YmxvY2t9LmVsLWlucHV0LW51bWJlciAuZWwtaW5wdXRfX2lubmVyey13ZWJraXQtYXBwZWFyYW5jZTpub25lO3BhZGRpbmctbGVmdDo1MHB4O3BhZGRpbmctcmlnaHQ6NTBweDt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZSwuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7dG9wOjFweDt3aWR0aDo0MHB4O2hlaWdodDphdXRvO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6I0Y1RjdGQTtjb2xvcjojNjA2MjY2O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxM3B4fS5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlOmhvdmVyLC5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNlOmhvdmVye2NvbG9yOiM0MDlFRkZ9LmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2U6aG92ZXI6bm90KC5pcy1kaXNhYmxlZCl+LmVsLWlucHV0IC5lbC1pbnB1dF9faW5uZXI6bm90KC5pcy1kaXNhYmxlZCksLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2U6aG92ZXI6bm90KC5pcy1kaXNhYmxlZCl+LmVsLWlucHV0IC5lbC1pbnB1dF9faW5uZXI6bm90KC5pcy1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UuaXMtZGlzYWJsZWQsLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2UuaXMtZGlzYWJsZWR7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7cmlnaHQ6MXB4O2JvcmRlci1yYWRpdXM6MCA0cHggNHB4IDA7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNEQ0RGRTZ9LmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2V7bGVmdDoxcHg7Ym9yZGVyLXJhZGl1czo0cHggMCAwIDRweDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNEQ0RGRTZ9LmVsLWlucHV0LW51bWJlci5pcy1kaXNhYmxlZCAuZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZSwuZWwtaW5wdXQtbnVtYmVyLmlzLWRpc2FibGVkIC5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNle2JvcmRlci1jb2xvcjojRTRFN0VEO2NvbG9yOiNFNEU3RUR9LmVsLWlucHV0LW51bWJlci5pcy1kaXNhYmxlZCAuZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZTpob3ZlciwuZWwtaW5wdXQtbnVtYmVyLmlzLWRpc2FibGVkIC5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNlOmhvdmVye2NvbG9yOiNFNEU3RUQ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1pbnB1dC1udW1iZXItLW1lZGl1bXt3aWR0aDoyMDBweDtsaW5lLWhlaWdodDozNHB4fS5lbC1pbnB1dC1udW1iZXItLW1lZGl1bSAuZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZSwuZWwtaW5wdXQtbnVtYmVyLS1tZWRpdW0gLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7d2lkdGg6MzZweDtmb250LXNpemU6MTRweH0uZWwtaW5wdXQtbnVtYmVyLS1tZWRpdW0gLmVsLWlucHV0X19pbm5lcntwYWRkaW5nLWxlZnQ6NDNweDtwYWRkaW5nLXJpZ2h0OjQzcHh9LmVsLWlucHV0LW51bWJlci0tc21hbGx7d2lkdGg6MTMwcHg7bGluZS1oZWlnaHQ6MzBweH0uZWwtaW5wdXQtbnVtYmVyLS1zbWFsbCAuZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZSwuZWwtaW5wdXQtbnVtYmVyLS1zbWFsbCAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZXt3aWR0aDozMnB4O2ZvbnQtc2l6ZToxM3B4fS5lbC1pbnB1dC1udW1iZXItLXNtYWxsIC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlIFtjbGFzcyo9ZWwtaWNvbl0sLmVsLWlucHV0LW51bWJlci0tc21hbGwgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2UgW2NsYXNzKj1lbC1pY29uXXt0cmFuc2Zvcm06c2NhbGUoLjkpfS5lbC1pbnB1dC1udW1iZXItLXNtYWxsIC5lbC1pbnB1dF9faW5uZXJ7cGFkZGluZy1sZWZ0OjM5cHg7cGFkZGluZy1yaWdodDozOXB4fS5lbC1pbnB1dC1udW1iZXItLW1pbml7d2lkdGg6MTMwcHg7bGluZS1oZWlnaHQ6MjZweH0uZWwtaW5wdXQtbnVtYmVyLS1taW5pIC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlLC5lbC1pbnB1dC1udW1iZXItLW1pbmkgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7d2lkdGg6MjhweDtmb250LXNpemU6MTJweH0uZWwtaW5wdXQtbnVtYmVyLS1taW5pIC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlIFtjbGFzcyo9ZWwtaWNvbl0sLmVsLWlucHV0LW51bWJlci0tbWluaSAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZSBbY2xhc3MqPWVsLWljb25de3RyYW5zZm9ybTpzY2FsZSguOCl9LmVsLWlucHV0LW51bWJlci0tbWluaSAuZWwtaW5wdXRfX2lubmVye3BhZGRpbmctbGVmdDozNXB4O3BhZGRpbmctcmlnaHQ6MzVweH0uZWwtaW5wdXQtbnVtYmVyLmlzLXdpdGhvdXQtY29udHJvbHMgLmVsLWlucHV0X19pbm5lcntwYWRkaW5nLWxlZnQ6MTVweDtwYWRkaW5nLXJpZ2h0OjE1cHh9LmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodCAuZWwtaW5wdXRfX2lubmVye3BhZGRpbmctbGVmdDoxNXB4O3BhZGRpbmctcmlnaHQ6NTBweH0uZWwtaW5wdXQtbnVtYmVyLmlzLWNvbnRyb2xzLXJpZ2h0IC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlLC5lbC1pbnB1dC1udW1iZXIuaXMtY29udHJvbHMtcmlnaHQgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7aGVpZ2h0OmF1dG87bGluZS1oZWlnaHQ6MTlweH0uZWwtaW5wdXQtbnVtYmVyLmlzLWNvbnRyb2xzLXJpZ2h0IC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlIFtjbGFzcyo9ZWwtaWNvbl0sLmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodCAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZSBbY2xhc3MqPWVsLWljb25de3RyYW5zZm9ybTpzY2FsZSguOCl9LmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodCAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZXtib3JkZXItcmFkaXVzOjAgNHB4IDAgMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRENERkU2fS5lbC1pbnB1dC1udW1iZXIuaXMtY29udHJvbHMtcmlnaHQgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2V7cmlnaHQ6MXB4O2JvdHRvbToxcHg7dG9wOmF1dG87bGVmdDphdXRvO2JvcmRlci1yaWdodDpub25lO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRENERkU2O2JvcmRlci1yYWRpdXM6MCAwIDRweH0uZWwtaW5wdXQtbnVtYmVyLmlzLWNvbnRyb2xzLXJpZ2h0W2NsYXNzKj1tZWRpdW1dIFtjbGFzcyo9ZGVjcmVhc2VdLC5lbC1pbnB1dC1udW1iZXIuaXMtY29udHJvbHMtcmlnaHRbY2xhc3MqPW1lZGl1bV0gW2NsYXNzKj1pbmNyZWFzZV17bGluZS1oZWlnaHQ6MTdweH0uZWwtaW5wdXQtbnVtYmVyLmlzLWNvbnRyb2xzLXJpZ2h0W2NsYXNzKj1zbWFsbF0gW2NsYXNzKj1kZWNyZWFzZV0sLmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodFtjbGFzcyo9c21hbGxdIFtjbGFzcyo9aW5jcmVhc2Vde2xpbmUtaGVpZ2h0OjE1cHh9LmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodFtjbGFzcyo9bWluaV0gW2NsYXNzKj1kZWNyZWFzZV0sLmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodFtjbGFzcyo9bWluaV0gW2NsYXNzKj1pbmNyZWFzZV17bGluZS1oZWlnaHQ6MTNweH0uZWwtdG9vbHRpcDpmb2N1czpob3ZlciwuZWwtdG9vbHRpcDpmb2N1czpub3QoLmZvY3VzaW5nKXtvdXRsaW5lLXdpZHRoOjB9LmVsLXRvb2x0aXBfX3BvcHBlcntwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjRweDtwYWRkaW5nOjEwcHg7ei1pbmRleDoyMDAwO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuMjttaW4td2lkdGg6MTBweDt3b3JkLXdyYXA6YnJlYWstd29yZH0uZWwtdG9vbHRpcF9fcG9wcGVyIC5wb3BwZXJfX2Fycm93LC5lbC10b29sdGlwX19wb3BwZXIgLnBvcHBlcl9fYXJyb3c6OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkfS5lbC10b29sdGlwX19wb3BwZXIgLnBvcHBlcl9fYXJyb3d7Ym9yZGVyLXdpZHRoOjZweH0uZWwtdG9vbHRpcF9fcG9wcGVyIC5wb3BwZXJfX2Fycm93OjphZnRlcntjb250ZW50OlxcXCIgXFxcIjtib3JkZXItd2lkdGg6NXB4fS5lbC1idXR0b24tZ3JvdXA6OmFmdGVyLC5lbC1idXR0b24tZ3JvdXA6OmJlZm9yZSwuZWwtY29sb3ItZHJvcGRvd25fX21haW4td3JhcHBlcjo6YWZ0ZXIsLmVsLWxpbmsuaXMtdW5kZXJsaW5lOmhvdmVyOmFmdGVyLC5lbC1wYWdlLWhlYWRlcl9fbGVmdDo6YWZ0ZXIsLmVsLXByb2dyZXNzLWJhcl9faW5uZXI6OmFmdGVyLC5lbC1yb3c6OmFmdGVyLC5lbC1yb3c6OmJlZm9yZSwuZWwtc2xpZGVyOjphZnRlciwuZWwtc2xpZGVyOjpiZWZvcmUsLmVsLXNsaWRlcl9fYnV0dG9uLXdyYXBwZXI6OmFmdGVyLC5lbC10cmFuc2Zlci1wYW5lbCAuZWwtdHJhbnNmZXItcGFuZWxfX2Zvb3Rlcjo6YWZ0ZXIsLmVsLXVwbG9hZC1jb3Zlcjo6YWZ0ZXIsLmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmQgLmVsLXVwbG9hZC1saXN0X19pdGVtLWFjdGlvbnM6OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCJ9LmVsLXRvb2x0aXBfX3BvcHBlclt4LXBsYWNlbWVudF49dG9wXXttYXJnaW4tYm90dG9tOjEycHh9LmVsLXRvb2x0aXBfX3BvcHBlclt4LXBsYWNlbWVudF49dG9wXSAucG9wcGVyX19hcnJvd3tib3R0b206LTZweDtib3JkZXItdG9wLWNvbG9yOiMzMDMxMzM7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5lbC10b29sdGlwX19wb3BwZXJbeC1wbGFjZW1lbnRePXRvcF0gLnBvcHBlcl9fYXJyb3c6OmFmdGVye2JvdHRvbToxcHg7bWFyZ2luLWxlZnQ6LTVweDtib3JkZXItdG9wLWNvbG9yOiMzMDMxMzM7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5lbC10b29sdGlwX19wb3BwZXJbeC1wbGFjZW1lbnRePWJvdHRvbV17bWFyZ2luLXRvcDoxMnB4fS5lbC10b29sdGlwX19wb3BwZXJbeC1wbGFjZW1lbnRePWJvdHRvbV0gLnBvcHBlcl9fYXJyb3d7dG9wOi02cHg7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20tY29sb3I6IzMwMzEzM30uZWwtdG9vbHRpcF9fcG9wcGVyW3gtcGxhY2VtZW50Xj1ib3R0b21dIC5wb3BwZXJfX2Fycm93OjphZnRlcnt0b3A6MXB4O21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20tY29sb3I6IzMwMzEzM30uZWwtdG9vbHRpcF9fcG9wcGVyW3gtcGxhY2VtZW50Xj1yaWdodF17bWFyZ2luLWxlZnQ6MTJweH0uZWwtdG9vbHRpcF9fcG9wcGVyW3gtcGxhY2VtZW50Xj1yaWdodF0gLnBvcHBlcl9fYXJyb3d7bGVmdDotNnB4O2JvcmRlci1yaWdodC1jb2xvcjojMzAzMTMzO2JvcmRlci1sZWZ0LXdpZHRoOjB9LmVsLXRvb2x0aXBfX3BvcHBlclt4LXBsYWNlbWVudF49cmlnaHRdIC5wb3BwZXJfX2Fycm93OjphZnRlcntib3R0b206LTVweDtsZWZ0OjFweDtib3JkZXItcmlnaHQtY29sb3I6IzMwMzEzMztib3JkZXItbGVmdC13aWR0aDowfS5lbC10b29sdGlwX19wb3BwZXJbeC1wbGFjZW1lbnRePWxlZnRde21hcmdpbi1yaWdodDoxMnB4fS5lbC10b29sdGlwX19wb3BwZXJbeC1wbGFjZW1lbnRePWxlZnRdIC5wb3BwZXJfX2Fycm93e3JpZ2h0Oi02cHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQtY29sb3I6IzMwMzEzM30uZWwtdG9vbHRpcF9fcG9wcGVyW3gtcGxhY2VtZW50Xj1sZWZ0XSAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7cmlnaHQ6MXB4O2JvdHRvbTotNXB4O21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQtY29sb3I6IzMwMzEzM30uZWwtdG9vbHRpcF9fcG9wcGVyLmlzLWRhcmt7YmFja2dyb3VuZDojMzAzMTMzO2NvbG9yOiNGRkZ9LmVsLXRvb2x0aXBfX3BvcHBlci5pcy1saWdodHtiYWNrZ3JvdW5kOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjMzAzMTMzfS5lbC10b29sdGlwX19wb3BwZXIuaXMtbGlnaHRbeC1wbGFjZW1lbnRePXRvcF0gLnBvcHBlcl9fYXJyb3d7Ym9yZGVyLXRvcC1jb2xvcjojMzAzMTMzfS5lbC10b29sdGlwX19wb3BwZXIuaXMtbGlnaHRbeC1wbGFjZW1lbnRePXRvcF0gLnBvcHBlcl9fYXJyb3c6OmFmdGVye2JvcmRlci10b3AtY29sb3I6I0ZGRn0uZWwtdG9vbHRpcF9fcG9wcGVyLmlzLWxpZ2h0W3gtcGxhY2VtZW50Xj1ib3R0b21dIC5wb3BwZXJfX2Fycm93e2JvcmRlci1ib3R0b20tY29sb3I6IzMwMzEzM30uZWwtdG9vbHRpcF9fcG9wcGVyLmlzLWxpZ2h0W3gtcGxhY2VtZW50Xj1ib3R0b21dIC5wb3BwZXJfX2Fycm93OjphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOiNGRkZ9LmVsLXRvb2x0aXBfX3BvcHBlci5pcy1saWdodFt4LXBsYWNlbWVudF49bGVmdF0gLnBvcHBlcl9fYXJyb3d7Ym9yZGVyLWxlZnQtY29sb3I6IzMwMzEzM30uZWwtdG9vbHRpcF9fcG9wcGVyLmlzLWxpZ2h0W3gtcGxhY2VtZW50Xj1sZWZ0XSAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7Ym9yZGVyLWxlZnQtY29sb3I6I0ZGRn0uZWwtdG9vbHRpcF9fcG9wcGVyLmlzLWxpZ2h0W3gtcGxhY2VtZW50Xj1yaWdodF0gLnBvcHBlcl9fYXJyb3d7Ym9yZGVyLXJpZ2h0LWNvbG9yOiMzMDMxMzN9LmVsLXRvb2x0aXBfX3BvcHBlci5pcy1saWdodFt4LXBsYWNlbWVudF49cmlnaHRdIC5wb3BwZXJfX2Fycm93OjphZnRlcntib3JkZXItcmlnaHQtY29sb3I6I0ZGRn0uZWwtc2xpZGVyOjphZnRlciwuZWwtc2xpZGVyOjpiZWZvcmV7ZGlzcGxheTp0YWJsZX0uZWwtc2xpZGVyX19idXR0b24td3JhcHBlciAuZWwtdG9vbHRpcCwuZWwtc2xpZGVyX19idXR0b24td3JhcHBlcjo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1zbGlkZXI6OmFmdGVye2NsZWFyOmJvdGh9LmVsLXNsaWRlcl9fcnVud2F5e3dpZHRoOjEwMCU7aGVpZ2h0OjZweDttYXJnaW46MTZweCAwO2JhY2tncm91bmQtY29sb3I6I0U0RTdFRDtib3JkZXItcmFkaXVzOjNweDtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXNsaWRlcl9fcnVud2F5LnNob3ctaW5wdXR7bWFyZ2luLXJpZ2h0OjE2MHB4O3dpZHRoOmF1dG99LmVsLXNsaWRlcl9fcnVud2F5LmRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5lbC1zbGlkZXJfX3J1bndheS5kaXNhYmxlZCAuZWwtc2xpZGVyX19iYXJ7YmFja2dyb3VuZC1jb2xvcjojQzBDNENDfS5lbC1zbGlkZXJfX3J1bndheS5kaXNhYmxlZCAuZWwtc2xpZGVyX19idXR0b257Ym9yZGVyLWNvbG9yOiNDMEM0Q0N9LmVsLXNsaWRlcl9fcnVud2F5LmRpc2FibGVkIC5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyLmRyYWdnaW5nLC5lbC1zbGlkZXJfX3J1bndheS5kaXNhYmxlZCAuZWwtc2xpZGVyX19idXR0b24td3JhcHBlci5ob3ZlciwuZWwtc2xpZGVyX19ydW53YXkuZGlzYWJsZWQgLmVsLXNsaWRlcl9fYnV0dG9uLXdyYXBwZXI6aG92ZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1zbGlkZXJfX3J1bndheS5kaXNhYmxlZCAuZWwtc2xpZGVyX19idXR0b24uZHJhZ2dpbmcsLmVsLXNsaWRlcl9fcnVud2F5LmRpc2FibGVkIC5lbC1zbGlkZXJfX2J1dHRvbi5ob3ZlciwuZWwtc2xpZGVyX19ydW53YXkuZGlzYWJsZWQgLmVsLXNsaWRlcl9fYnV0dG9uOmhvdmVye3RyYW5zZm9ybTpzY2FsZSgxKTtjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXNsaWRlcl9fYnV0dG9uLXdyYXBwZXIsLmVsLXNsaWRlcl9fc3RvcHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3Bvc2l0aW9uOmFic29sdXRlfS5lbC1zbGlkZXJfX2lucHV0e2Zsb2F0OnJpZ2h0O21hcmdpbi10b3A6M3B4O3dpZHRoOjEzMHB4fS5lbC1zbGlkZXJfX2lucHV0LmVsLWlucHV0LW51bWJlci0tbWluaXttYXJnaW4tdG9wOjVweH0uZWwtc2xpZGVyX19pbnB1dC5lbC1pbnB1dC1udW1iZXItLW1lZGl1bXttYXJnaW4tdG9wOjB9LmVsLXNsaWRlcl9faW5wdXQuZWwtaW5wdXQtbnVtYmVyLS1sYXJnZXttYXJnaW4tdG9wOi0ycHh9LmVsLXNsaWRlcl9fYmFye2hlaWdodDo2cHg7YmFja2dyb3VuZC1jb2xvcjojNDA5RUZGO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4O3Bvc2l0aW9uOmFic29sdXRlfS5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVye2hlaWdodDozNnB4O3dpZHRoOjM2cHg7ei1pbmRleDoxMDAxO3RvcDotMTVweDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3RleHQtYWxpZ246Y2VudGVyOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtsaW5lLWhlaWdodDpub3JtYWx9LmVsLWltYWdlLXZpZXdlcl9fYnRuLC5lbC1zbGlkZXJfX2J1dHRvbiwuZWwtc3RlcF9faWNvbi1pbm5lcnstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmV9LmVsLXNsaWRlcl9fYnV0dG9uLXdyYXBwZXI6OmFmdGVye2hlaWdodDoxMDAlfS5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyLmhvdmVyLC5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyOmhvdmVye2N1cnNvcjpncmFifS5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyLmRyYWdnaW5ne2N1cnNvcjpncmFiYmluZ30uZWwtc2xpZGVyX19idXR0b257d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtib3JkZXI6MnB4IHNvbGlkICM0MDlFRkY7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246LjJzOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZWwtc2xpZGVyX19idXR0b24uZHJhZ2dpbmcsLmVsLXNsaWRlcl9fYnV0dG9uLmhvdmVyLC5lbC1zbGlkZXJfX2J1dHRvbjpob3Zlcnt0cmFuc2Zvcm06c2NhbGUoMS4yKX0uZWwtc2xpZGVyX19idXR0b24uaG92ZXIsLmVsLXNsaWRlcl9fYnV0dG9uOmhvdmVye2N1cnNvcjpncmFifS5lbC1zbGlkZXJfX2J1dHRvbi5kcmFnZ2luZ3tjdXJzb3I6Z3JhYmJpbmd9LmVsLXNsaWRlcl9fc3RvcHtoZWlnaHQ6NnB4O3dpZHRoOjZweDtib3JkZXItcmFkaXVzOjEwMCU7YmFja2dyb3VuZC1jb2xvcjojRkZGO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfS5lbC1zbGlkZXJfX21hcmtze3RvcDowO2xlZnQ6MTJweDt3aWR0aDoxOHB4O2hlaWdodDoxMDAlfS5lbC1zbGlkZXJfX21hcmtzLXRleHR7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzkwOTM5OTttYXJnaW4tdG9wOjE1cHh9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbHtwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsIC5lbC1zbGlkZXJfX3J1bndheXt3aWR0aDo2cHg7aGVpZ2h0OjEwMCU7bWFyZ2luOjAgMTZweH0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsIC5lbC1zbGlkZXJfX2Jhcnt3aWR0aDo2cHg7aGVpZ2h0OmF1dG87Ym9yZGVyLXJhZGl1czowIDAgM3B4IDNweH0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsIC5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVye3RvcDphdXRvO2xlZnQ6LTE1cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNTAlKX0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsIC5lbC1zbGlkZXJfX3N0b3B7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNTAlKX0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dHtwYWRkaW5nLWJvdHRvbTo1OHB4fS5lbC1zbGlkZXIuaXMtdmVydGljYWwuZWwtc2xpZGVyLS13aXRoLWlucHV0IC5lbC1zbGlkZXJfX2lucHV0e292ZXJmbG93OnZpc2libGU7ZmxvYXQ6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MjJweDt3aWR0aDozNnB4O21hcmdpbi10b3A6MTVweH0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dCAuZWwtc2xpZGVyX19pbnB1dCAuZWwtaW5wdXRfX2lubmVye3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDo1cHh9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UsLmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7dG9wOjMycHg7bWFyZ2luLXRvcDotMXB4O2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtsaW5lLWhlaWdodDoyMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMnMgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpfS5lbC1zbGlkZXIuaXMtdmVydGljYWwuZWwtc2xpZGVyLS13aXRoLWlucHV0IC5lbC1zbGlkZXJfX2lucHV0IC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNle3dpZHRoOjE4cHg7cmlnaHQ6MThweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweH0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dCAuZWwtc2xpZGVyX19pbnB1dCAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZXt3aWR0aDoxOXB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweH0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dCAuZWwtc2xpZGVyX19pbnB1dCAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZX4uZWwtaW5wdXQgLmVsLWlucHV0X19pbm5lcntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dCAuZWwtc2xpZGVyX19pbnB1dDpob3ZlciAuZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZSwuZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dCAuZWwtc2xpZGVyX19pbnB1dDpob3ZlciAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZXtib3JkZXItY29sb3I6I0MwQzRDQ30uZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dCAuZWwtc2xpZGVyX19pbnB1dDphY3RpdmUgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UsLmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQ6YWN0aXZlIC5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNle2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1zbGlkZXIuaXMtdmVydGljYWwgLmVsLXNsaWRlcl9fbWFya3MtdGV4dHttYXJnaW4tdG9wOjA7bGVmdDoxNXB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKDUwJSl9LmVsLWxvYWRpbmctcGFyZW50LS1yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnR9LmVsLWxvYWRpbmctcGFyZW50LS1oaWRkZW57b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH0uZWwtbG9hZGluZy1tYXNre3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MjAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpO21hcmdpbjowO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3RyYW5zaXRpb246b3BhY2l0eSAuM3N9LmVsLWxvYWRpbmctbWFzay5pcy1mdWxsc2NyZWVue3Bvc2l0aW9uOmZpeGVkfS5lbC1sb2FkaW5nLW1hc2suaXMtZnVsbHNjcmVlbiAuZWwtbG9hZGluZy1zcGlubmVye21hcmdpbi10b3A6LTI1cHh9LmVsLWxvYWRpbmctbWFzay5pcy1mdWxsc2NyZWVuIC5lbC1sb2FkaW5nLXNwaW5uZXIgLmNpcmN1bGFye2hlaWdodDo1MHB4O3dpZHRoOjUwcHh9LmVsLWxvYWRpbmctc3Bpbm5lcnt0b3A6NTAlO21hcmdpbi10b3A6LTIxcHg7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZX0uZWwtY29sLXB1bGwtMCwuZWwtY29sLXB1bGwtMSwuZWwtY29sLXB1bGwtMTAsLmVsLWNvbC1wdWxsLTExLC5lbC1jb2wtcHVsbC0xMiwuZWwtY29sLXB1bGwtMTMsLmVsLWNvbC1wdWxsLTE0LC5lbC1jb2wtcHVsbC0xNSwuZWwtY29sLXB1bGwtMTYsLmVsLWNvbC1wdWxsLTE3LC5lbC1jb2wtcHVsbC0xOCwuZWwtY29sLXB1bGwtMTksLmVsLWNvbC1wdWxsLTIsLmVsLWNvbC1wdWxsLTIwLC5lbC1jb2wtcHVsbC0yMSwuZWwtY29sLXB1bGwtMjIsLmVsLWNvbC1wdWxsLTIzLC5lbC1jb2wtcHVsbC0yNCwuZWwtY29sLXB1bGwtMywuZWwtY29sLXB1bGwtNCwuZWwtY29sLXB1bGwtNSwuZWwtY29sLXB1bGwtNiwuZWwtY29sLXB1bGwtNywuZWwtY29sLXB1bGwtOCwuZWwtY29sLXB1bGwtOSwuZWwtY29sLXB1c2gtMCwuZWwtY29sLXB1c2gtMSwuZWwtY29sLXB1c2gtMTAsLmVsLWNvbC1wdXNoLTExLC5lbC1jb2wtcHVzaC0xMiwuZWwtY29sLXB1c2gtMTMsLmVsLWNvbC1wdXNoLTE0LC5lbC1jb2wtcHVzaC0xNSwuZWwtY29sLXB1c2gtMTYsLmVsLWNvbC1wdXNoLTE3LC5lbC1jb2wtcHVzaC0xOCwuZWwtY29sLXB1c2gtMTksLmVsLWNvbC1wdXNoLTIsLmVsLWNvbC1wdXNoLTIwLC5lbC1jb2wtcHVzaC0yMSwuZWwtY29sLXB1c2gtMjIsLmVsLWNvbC1wdXNoLTIzLC5lbC1jb2wtcHVzaC0yNCwuZWwtY29sLXB1c2gtMywuZWwtY29sLXB1c2gtNCwuZWwtY29sLXB1c2gtNSwuZWwtY29sLXB1c2gtNiwuZWwtY29sLXB1c2gtNywuZWwtY29sLXB1c2gtOCwuZWwtY29sLXB1c2gtOSwuZWwtcm93LC5lbC11cGxvYWQtZHJhZ2dlciwuZWwtdXBsb2FkLWxpc3RfX2l0ZW17cG9zaXRpb246cmVsYXRpdmV9LmVsLWxvYWRpbmctc3Bpbm5lciAuZWwtbG9hZGluZy10ZXh0e2NvbG9yOiM0MDlFRkY7bWFyZ2luOjNweCAwO2ZvbnQtc2l6ZToxNHB4fS5lbC1sb2FkaW5nLXNwaW5uZXIgLmNpcmN1bGFye2hlaWdodDo0MnB4O3dpZHRoOjQycHg7YW5pbWF0aW9uOmxvYWRpbmctcm90YXRlIDJzIGxpbmVhciBpbmZpbml0ZX0uZWwtbG9hZGluZy1zcGlubmVyIC5wYXRoe2FuaW1hdGlvbjpsb2FkaW5nLWRhc2ggMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtzdHJva2UtZGFzaGFycmF5OjkwLDE1MDtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS13aWR0aDoyO3N0cm9rZTojNDA5RUZGO3N0cm9rZS1saW5lY2FwOnJvdW5kfS5lbC1sb2FkaW5nLXNwaW5uZXIgaXtjb2xvcjojNDA5RUZGfUBrZXlmcmFtZXMgbG9hZGluZy1yb3RhdGV7MTAwJXt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgbG9hZGluZy1kYXNoezAle3N0cm9rZS1kYXNoYXJyYXk6MSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MH01MCV7c3Ryb2tlLWRhc2hhcnJheTo5MCwxNTA7c3Ryb2tlLWRhc2hvZmZzZXQ6LTQwcHh9MTAwJXtzdHJva2UtZGFzaGFycmF5OjkwLDE1MDtzdHJva2UtZGFzaG9mZnNldDotMTIwcHh9fS5lbC1yb3d7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1yb3c6OmFmdGVyLC5lbC1yb3c6OmJlZm9yZXtkaXNwbGF5OnRhYmxlfS5lbC1yb3c6OmFmdGVye2NsZWFyOmJvdGh9LmVsLXJvdy0tZmxleHtkaXNwbGF5OmZsZXh9LmVsLWNvbC0wLC5lbC1yb3ctLWZsZXg6YWZ0ZXIsLmVsLXJvdy0tZmxleDpiZWZvcmV7ZGlzcGxheTpub25lfS5lbC1yb3ctLWZsZXguaXMtanVzdGlmeS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uZWwtcm93LS1mbGV4LmlzLWp1c3RpZnktZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZWwtcm93LS1mbGV4LmlzLWp1c3RpZnktc3BhY2UtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uZWwtcm93LS1mbGV4LmlzLWp1c3RpZnktc3BhY2UtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmVsLXJvdy0tZmxleC5pcy1hbGlnbi10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uZWwtcm93LS1mbGV4LmlzLWFsaWduLW1pZGRsZXthbGlnbi1pdGVtczpjZW50ZXJ9LmVsLXJvdy0tZmxleC5pcy1hbGlnbi1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9W2NsYXNzKj1lbC1jb2wtXXtmbG9hdDpsZWZ0O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtY29sLTB7d2lkdGg6MCV9LmVsLWNvbC1wdWxsLTB7cmlnaHQ6MH0uZWwtY29sLXB1c2gtMHtsZWZ0OjB9LmVsLWNvbC0xe3dpZHRoOjQuMTY2NjclfS5lbC1jb2wtb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6NC4xNjY2NyV9LmVsLWNvbC1wdWxsLTF7cmlnaHQ6NC4xNjY2NyV9LmVsLWNvbC1wdXNoLTF7bGVmdDo0LjE2NjY3JX0uZWwtY29sLTJ7d2lkdGg6OC4zMzMzMyV9LmVsLWNvbC1vZmZzZXQtMnttYXJnaW4tbGVmdDo4LjMzMzMzJX0uZWwtY29sLXB1bGwtMntyaWdodDo4LjMzMzMzJX0uZWwtY29sLXB1c2gtMntsZWZ0OjguMzMzMzMlfS5lbC1jb2wtM3t3aWR0aDoxMi41JX0uZWwtY29sLW9mZnNldC0ze21hcmdpbi1sZWZ0OjEyLjUlfS5lbC1jb2wtcHVsbC0ze3JpZ2h0OjEyLjUlfS5lbC1jb2wtcHVzaC0ze2xlZnQ6MTIuNSV9LmVsLWNvbC00e3dpZHRoOjE2LjY2NjY3JX0uZWwtY29sLW9mZnNldC00e21hcmdpbi1sZWZ0OjE2LjY2NjY3JX0uZWwtY29sLXB1bGwtNHtyaWdodDoxNi42NjY2NyV9LmVsLWNvbC1wdXNoLTR7bGVmdDoxNi42NjY2NyV9LmVsLWNvbC01e3dpZHRoOjIwLjgzMzMzJX0uZWwtY29sLW9mZnNldC01e21hcmdpbi1sZWZ0OjIwLjgzMzMzJX0uZWwtY29sLXB1bGwtNXtyaWdodDoyMC44MzMzMyV9LmVsLWNvbC1wdXNoLTV7bGVmdDoyMC44MzMzMyV9LmVsLWNvbC02e3dpZHRoOjI1JX0uZWwtY29sLW9mZnNldC02e21hcmdpbi1sZWZ0OjI1JX0uZWwtY29sLXB1bGwtNntyaWdodDoyNSV9LmVsLWNvbC1wdXNoLTZ7bGVmdDoyNSV9LmVsLWNvbC03e3dpZHRoOjI5LjE2NjY3JX0uZWwtY29sLW9mZnNldC03e21hcmdpbi1sZWZ0OjI5LjE2NjY3JX0uZWwtY29sLXB1bGwtN3tyaWdodDoyOS4xNjY2NyV9LmVsLWNvbC1wdXNoLTd7bGVmdDoyOS4xNjY2NyV9LmVsLWNvbC04e3dpZHRoOjMzLjMzMzMzJX0uZWwtY29sLW9mZnNldC04e21hcmdpbi1sZWZ0OjMzLjMzMzMzJX0uZWwtY29sLXB1bGwtOHtyaWdodDozMy4zMzMzMyV9LmVsLWNvbC1wdXNoLTh7bGVmdDozMy4zMzMzMyV9LmVsLWNvbC05e3dpZHRoOjM3LjUlfS5lbC1jb2wtb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6MzcuNSV9LmVsLWNvbC1wdWxsLTl7cmlnaHQ6MzcuNSV9LmVsLWNvbC1wdXNoLTl7bGVmdDozNy41JX0uZWwtY29sLTEwe3dpZHRoOjQxLjY2NjY3JX0uZWwtY29sLW9mZnNldC0xMHttYXJnaW4tbGVmdDo0MS42NjY2NyV9LmVsLWNvbC1wdWxsLTEwe3JpZ2h0OjQxLjY2NjY3JX0uZWwtY29sLXB1c2gtMTB7bGVmdDo0MS42NjY2NyV9LmVsLWNvbC0xMXt3aWR0aDo0NS44MzMzMyV9LmVsLWNvbC1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6NDUuODMzMzMlfS5lbC1jb2wtcHVsbC0xMXtyaWdodDo0NS44MzMzMyV9LmVsLWNvbC1wdXNoLTExe2xlZnQ6NDUuODMzMzMlfS5lbC1jb2wtMTJ7d2lkdGg6NTAlfS5lbC1jb2wtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjUwJX0uZWwtY29sLXB1bGwtMTJ7cmlnaHQ6NTAlfS5lbC1jb2wtcHVzaC0xMntsZWZ0OjUwJX0uZWwtY29sLTEze3dpZHRoOjU0LjE2NjY3JX0uZWwtY29sLW9mZnNldC0xM3ttYXJnaW4tbGVmdDo1NC4xNjY2NyV9LmVsLWNvbC1wdWxsLTEze3JpZ2h0OjU0LjE2NjY3JX0uZWwtY29sLXB1c2gtMTN7bGVmdDo1NC4xNjY2NyV9LmVsLWNvbC0xNHt3aWR0aDo1OC4zMzMzMyV9LmVsLWNvbC1vZmZzZXQtMTR7bWFyZ2luLWxlZnQ6NTguMzMzMzMlfS5lbC1jb2wtcHVsbC0xNHtyaWdodDo1OC4zMzMzMyV9LmVsLWNvbC1wdXNoLTE0e2xlZnQ6NTguMzMzMzMlfS5lbC1jb2wtMTV7d2lkdGg6NjIuNSV9LmVsLWNvbC1vZmZzZXQtMTV7bWFyZ2luLWxlZnQ6NjIuNSV9LmVsLWNvbC1wdWxsLTE1e3JpZ2h0OjYyLjUlfS5lbC1jb2wtcHVzaC0xNXtsZWZ0OjYyLjUlfS5lbC1jb2wtMTZ7d2lkdGg6NjYuNjY2NjclfS5lbC1jb2wtb2Zmc2V0LTE2e21hcmdpbi1sZWZ0OjY2LjY2NjY3JX0uZWwtY29sLXB1bGwtMTZ7cmlnaHQ6NjYuNjY2NjclfS5lbC1jb2wtcHVzaC0xNntsZWZ0OjY2LjY2NjY3JX0uZWwtY29sLTE3e3dpZHRoOjcwLjgzMzMzJX0uZWwtY29sLW9mZnNldC0xN3ttYXJnaW4tbGVmdDo3MC44MzMzMyV9LmVsLWNvbC1wdWxsLTE3e3JpZ2h0OjcwLjgzMzMzJX0uZWwtY29sLXB1c2gtMTd7bGVmdDo3MC44MzMzMyV9LmVsLWNvbC0xOHt3aWR0aDo3NSV9LmVsLWNvbC1vZmZzZXQtMTh7bWFyZ2luLWxlZnQ6NzUlfS5lbC1jb2wtcHVsbC0xOHtyaWdodDo3NSV9LmVsLWNvbC1wdXNoLTE4e2xlZnQ6NzUlfS5lbC1jb2wtMTl7d2lkdGg6NzkuMTY2NjclfS5lbC1jb2wtb2Zmc2V0LTE5e21hcmdpbi1sZWZ0Ojc5LjE2NjY3JX0uZWwtY29sLXB1bGwtMTl7cmlnaHQ6NzkuMTY2NjclfS5lbC1jb2wtcHVzaC0xOXtsZWZ0Ojc5LjE2NjY3JX0uZWwtY29sLTIwe3dpZHRoOjgzLjMzMzMzJX0uZWwtY29sLW9mZnNldC0yMHttYXJnaW4tbGVmdDo4My4zMzMzMyV9LmVsLWNvbC1wdWxsLTIwe3JpZ2h0OjgzLjMzMzMzJX0uZWwtY29sLXB1c2gtMjB7bGVmdDo4My4zMzMzMyV9LmVsLWNvbC0yMXt3aWR0aDo4Ny41JX0uZWwtY29sLW9mZnNldC0yMXttYXJnaW4tbGVmdDo4Ny41JX0uZWwtY29sLXB1bGwtMjF7cmlnaHQ6ODcuNSV9LmVsLWNvbC1wdXNoLTIxe2xlZnQ6ODcuNSV9LmVsLWNvbC0yMnt3aWR0aDo5MS42NjY2NyV9LmVsLWNvbC1vZmZzZXQtMjJ7bWFyZ2luLWxlZnQ6OTEuNjY2NjclfS5lbC1jb2wtcHVsbC0yMntyaWdodDo5MS42NjY2NyV9LmVsLWNvbC1wdXNoLTIye2xlZnQ6OTEuNjY2NjclfS5lbC1jb2wtMjN7d2lkdGg6OTUuODMzMzMlfS5lbC1jb2wtb2Zmc2V0LTIze21hcmdpbi1sZWZ0Ojk1LjgzMzMzJX0uZWwtY29sLXB1bGwtMjN7cmlnaHQ6OTUuODMzMzMlfS5lbC1jb2wtcHVzaC0yM3tsZWZ0Ojk1LjgzMzMzJX0uZWwtY29sLTI0e3dpZHRoOjEwMCV9LmVsLWNvbC1vZmZzZXQtMjR7bWFyZ2luLWxlZnQ6MTAwJX0uZWwtY29sLXB1bGwtMjR7cmlnaHQ6MTAwJX0uZWwtY29sLXB1c2gtMjR7bGVmdDoxMDAlfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCl7LmVsLWNvbC14cy0we2Rpc3BsYXk6bm9uZTt3aWR0aDowJX0uZWwtY29sLXhzLW9mZnNldC0we21hcmdpbi1sZWZ0OjB9LmVsLWNvbC14cy1wdWxsLTB7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MH0uZWwtY29sLXhzLXB1c2gtMHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjB9LmVsLWNvbC14cy0xe3dpZHRoOjQuMTY2NjclfS5lbC1jb2wteHMtb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6NC4xNjY2NyV9LmVsLWNvbC14cy1wdWxsLTF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NC4xNjY2NyV9LmVsLWNvbC14cy1wdXNoLTF7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo0LjE2NjY3JX0uZWwtY29sLXhzLTJ7d2lkdGg6OC4zMzMzMyV9LmVsLWNvbC14cy1vZmZzZXQtMnttYXJnaW4tbGVmdDo4LjMzMzMzJX0uZWwtY29sLXhzLXB1bGwtMntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4LjMzMzMzJX0uZWwtY29sLXhzLXB1c2gtMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjguMzMzMzMlfS5lbC1jb2wteHMtM3t3aWR0aDoxMi41JX0uZWwtY29sLXhzLW9mZnNldC0ze21hcmdpbi1sZWZ0OjEyLjUlfS5lbC1jb2wteHMtcHVsbC0ze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjEyLjUlfS5lbC1jb2wteHMtcHVzaC0ze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTIuNSV9LmVsLWNvbC14cy00e3dpZHRoOjE2LjY2NjY3JX0uZWwtY29sLXhzLW9mZnNldC00e21hcmdpbi1sZWZ0OjE2LjY2NjY3JX0uZWwtY29sLXhzLXB1bGwtNHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxNi42NjY2NyV9LmVsLWNvbC14cy1wdXNoLTR7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoxNi42NjY2NyV9LmVsLWNvbC14cy01e3dpZHRoOjIwLjgzMzMzJX0uZWwtY29sLXhzLW9mZnNldC01e21hcmdpbi1sZWZ0OjIwLjgzMzMzJX0uZWwtY29sLXhzLXB1bGwtNXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoyMC44MzMzMyV9LmVsLWNvbC14cy1wdXNoLTV7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoyMC44MzMzMyV9LmVsLWNvbC14cy02e3dpZHRoOjI1JX0uZWwtY29sLXhzLW9mZnNldC02e21hcmdpbi1sZWZ0OjI1JX0uZWwtY29sLXhzLXB1bGwtNntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoyNSV9LmVsLWNvbC14cy1wdXNoLTZ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoyNSV9LmVsLWNvbC14cy03e3dpZHRoOjI5LjE2NjY3JX0uZWwtY29sLXhzLW9mZnNldC03e21hcmdpbi1sZWZ0OjI5LjE2NjY3JX0uZWwtY29sLXhzLXB1bGwtN3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoyOS4xNjY2NyV9LmVsLWNvbC14cy1wdXNoLTd7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoyOS4xNjY2NyV9LmVsLWNvbC14cy04e3dpZHRoOjMzLjMzMzMzJX0uZWwtY29sLXhzLW9mZnNldC04e21hcmdpbi1sZWZ0OjMzLjMzMzMzJX0uZWwtY29sLXhzLXB1bGwtOHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDozMy4zMzMzMyV9LmVsLWNvbC14cy1wdXNoLTh7cG9zaXRpb246cmVsYXRpdmU7bGVmdDozMy4zMzMzMyV9LmVsLWNvbC14cy05e3dpZHRoOjM3LjUlfS5lbC1jb2wteHMtb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6MzcuNSV9LmVsLWNvbC14cy1wdWxsLTl7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MzcuNSV9LmVsLWNvbC14cy1wdXNoLTl7cG9zaXRpb246cmVsYXRpdmU7bGVmdDozNy41JX0uZWwtY29sLXhzLTEwe3dpZHRoOjQxLjY2NjY3JX0uZWwtY29sLXhzLW9mZnNldC0xMHttYXJnaW4tbGVmdDo0MS42NjY2NyV9LmVsLWNvbC14cy1wdWxsLTEwe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQxLjY2NjY3JX0uZWwtY29sLXhzLXB1c2gtMTB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo0MS42NjY2NyV9LmVsLWNvbC14cy0xMXt3aWR0aDo0NS44MzMzMyV9LmVsLWNvbC14cy1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6NDUuODMzMzMlfS5lbC1jb2wteHMtcHVsbC0xMXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0NS44MzMzMyV9LmVsLWNvbC14cy1wdXNoLTExe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NDUuODMzMzMlfS5lbC1jb2wteHMtMTJ7d2lkdGg6NTAlfS5lbC1jb2wteHMtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjUwJX0uZWwtY29sLXhzLXB1bGwtMTJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTAlfS5lbC1jb2wteHMtcHVzaC0xMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjUwJX0uZWwtY29sLXhzLTEze3dpZHRoOjU0LjE2NjY3JX0uZWwtY29sLXhzLW9mZnNldC0xM3ttYXJnaW4tbGVmdDo1NC4xNjY2NyV9LmVsLWNvbC14cy1wdWxsLTEze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjU0LjE2NjY3JX0uZWwtY29sLXhzLXB1c2gtMTN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1NC4xNjY2NyV9LmVsLWNvbC14cy0xNHt3aWR0aDo1OC4zMzMzMyV9LmVsLWNvbC14cy1vZmZzZXQtMTR7bWFyZ2luLWxlZnQ6NTguMzMzMzMlfS5lbC1jb2wteHMtcHVsbC0xNHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1OC4zMzMzMyV9LmVsLWNvbC14cy1wdXNoLTE0e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTguMzMzMzMlfS5lbC1jb2wteHMtMTV7d2lkdGg6NjIuNSV9LmVsLWNvbC14cy1vZmZzZXQtMTV7bWFyZ2luLWxlZnQ6NjIuNSV9LmVsLWNvbC14cy1wdWxsLTE1e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjYyLjUlfS5lbC1jb2wteHMtcHVzaC0xNXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjYyLjUlfS5lbC1jb2wteHMtMTZ7d2lkdGg6NjYuNjY2NjclfS5lbC1jb2wteHMtb2Zmc2V0LTE2e21hcmdpbi1sZWZ0OjY2LjY2NjY3JX0uZWwtY29sLXhzLXB1bGwtMTZ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NjYuNjY2NjclfS5lbC1jb2wteHMtcHVzaC0xNntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjY2LjY2NjY3JX0uZWwtY29sLXhzLTE3e3dpZHRoOjcwLjgzMzMzJX0uZWwtY29sLXhzLW9mZnNldC0xN3ttYXJnaW4tbGVmdDo3MC44MzMzMyV9LmVsLWNvbC14cy1wdWxsLTE3e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjcwLjgzMzMzJX0uZWwtY29sLXhzLXB1c2gtMTd7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3MC44MzMzMyV9LmVsLWNvbC14cy0xOHt3aWR0aDo3NSV9LmVsLWNvbC14cy1vZmZzZXQtMTh7bWFyZ2luLWxlZnQ6NzUlfS5lbC1jb2wteHMtcHVsbC0xOHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3NSV9LmVsLWNvbC14cy1wdXNoLTE4e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzUlfS5lbC1jb2wteHMtMTl7d2lkdGg6NzkuMTY2NjclfS5lbC1jb2wteHMtb2Zmc2V0LTE5e21hcmdpbi1sZWZ0Ojc5LjE2NjY3JX0uZWwtY29sLXhzLXB1bGwtMTl7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzkuMTY2NjclfS5lbC1jb2wteHMtcHVzaC0xOXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojc5LjE2NjY3JX0uZWwtY29sLXhzLTIwe3dpZHRoOjgzLjMzMzMzJX0uZWwtY29sLXhzLW9mZnNldC0yMHttYXJnaW4tbGVmdDo4My4zMzMzMyV9LmVsLWNvbC14cy1wdWxsLTIwe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjgzLjMzMzMzJX0uZWwtY29sLXhzLXB1c2gtMjB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4My4zMzMzMyV9LmVsLWNvbC14cy0yMXt3aWR0aDo4Ny41JX0uZWwtY29sLXhzLW9mZnNldC0yMXttYXJnaW4tbGVmdDo4Ny41JX0uZWwtY29sLXhzLXB1bGwtMjF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6ODcuNSV9LmVsLWNvbC14cy1wdXNoLTIxe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6ODcuNSV9LmVsLWNvbC14cy0yMnt3aWR0aDo5MS42NjY2NyV9LmVsLWNvbC14cy1vZmZzZXQtMjJ7bWFyZ2luLWxlZnQ6OTEuNjY2NjclfS5lbC1jb2wteHMtcHVsbC0yMntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo5MS42NjY2NyV9LmVsLWNvbC14cy1wdXNoLTIye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6OTEuNjY2NjclfS5lbC1jb2wteHMtMjN7d2lkdGg6OTUuODMzMzMlfS5lbC1jb2wteHMtb2Zmc2V0LTIze21hcmdpbi1sZWZ0Ojk1LjgzMzMzJX0uZWwtY29sLXhzLXB1bGwtMjN7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OTUuODMzMzMlfS5lbC1jb2wteHMtcHVzaC0yM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojk1LjgzMzMzJX0uZWwtY29sLXhzLTI0e3dpZHRoOjEwMCV9LmVsLWNvbC14cy1vZmZzZXQtMjR7bWFyZ2luLWxlZnQ6MTAwJX0uZWwtY29sLXhzLXB1bGwtMjR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTAwJX0uZWwtY29sLXhzLXB1c2gtMjR7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoxMDAlfX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpey5lbC1jb2wtc20tMHtkaXNwbGF5Om5vbmU7d2lkdGg6MCV9LmVsLWNvbC1zbS1vZmZzZXQtMHttYXJnaW4tbGVmdDowfS5lbC1jb2wtc20tcHVsbC0we3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjB9LmVsLWNvbC1zbS1wdXNoLTB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDowfS5lbC1jb2wtc20tMXt3aWR0aDo0LjE2NjY3JX0uZWwtY29sLXNtLW9mZnNldC0xe21hcmdpbi1sZWZ0OjQuMTY2NjclfS5lbC1jb2wtc20tcHVsbC0xe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQuMTY2NjclfS5lbC1jb2wtc20tcHVzaC0xe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NC4xNjY2NyV9LmVsLWNvbC1zbS0ye3dpZHRoOjguMzMzMzMlfS5lbC1jb2wtc20tb2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6OC4zMzMzMyV9LmVsLWNvbC1zbS1wdWxsLTJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OC4zMzMzMyV9LmVsLWNvbC1zbS1wdXNoLTJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4LjMzMzMzJX0uZWwtY29sLXNtLTN7d2lkdGg6MTIuNSV9LmVsLWNvbC1zbS1vZmZzZXQtM3ttYXJnaW4tbGVmdDoxMi41JX0uZWwtY29sLXNtLXB1bGwtM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxMi41JX0uZWwtY29sLXNtLXB1c2gtM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjEyLjUlfS5lbC1jb2wtc20tNHt3aWR0aDoxNi42NjY2NyV9LmVsLWNvbC1zbS1vZmZzZXQtNHttYXJnaW4tbGVmdDoxNi42NjY2NyV9LmVsLWNvbC1zbS1wdWxsLTR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTYuNjY2NjclfS5lbC1jb2wtc20tcHVzaC00e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTYuNjY2NjclfS5lbC1jb2wtc20tNXt3aWR0aDoyMC44MzMzMyV9LmVsLWNvbC1zbS1vZmZzZXQtNXttYXJnaW4tbGVmdDoyMC44MzMzMyV9LmVsLWNvbC1zbS1wdWxsLTV7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjAuODMzMzMlfS5lbC1jb2wtc20tcHVzaC01e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjAuODMzMzMlfS5lbC1jb2wtc20tNnt3aWR0aDoyNSV9LmVsLWNvbC1zbS1vZmZzZXQtNnttYXJnaW4tbGVmdDoyNSV9LmVsLWNvbC1zbS1wdWxsLTZ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjUlfS5lbC1jb2wtc20tcHVzaC02e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjUlfS5lbC1jb2wtc20tN3t3aWR0aDoyOS4xNjY2NyV9LmVsLWNvbC1zbS1vZmZzZXQtN3ttYXJnaW4tbGVmdDoyOS4xNjY2NyV9LmVsLWNvbC1zbS1wdWxsLTd7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjkuMTY2NjclfS5lbC1jb2wtc20tcHVzaC03e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjkuMTY2NjclfS5lbC1jb2wtc20tOHt3aWR0aDozMy4zMzMzMyV9LmVsLWNvbC1zbS1vZmZzZXQtOHttYXJnaW4tbGVmdDozMy4zMzMzMyV9LmVsLWNvbC1zbS1wdWxsLTh7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MzMuMzMzMzMlfS5lbC1jb2wtc20tcHVzaC04e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MzMuMzMzMzMlfS5lbC1jb2wtc20tOXt3aWR0aDozNy41JX0uZWwtY29sLXNtLW9mZnNldC05e21hcmdpbi1sZWZ0OjM3LjUlfS5lbC1jb2wtc20tcHVsbC05e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjM3LjUlfS5lbC1jb2wtc20tcHVzaC05e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MzcuNSV9LmVsLWNvbC1zbS0xMHt3aWR0aDo0MS42NjY2NyV9LmVsLWNvbC1zbS1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6NDEuNjY2NjclfS5lbC1jb2wtc20tcHVsbC0xMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0MS42NjY2NyV9LmVsLWNvbC1zbS1wdXNoLTEwe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NDEuNjY2NjclfS5lbC1jb2wtc20tMTF7d2lkdGg6NDUuODMzMzMlfS5lbC1jb2wtc20tb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLXNtLXB1bGwtMTF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NDUuODMzMzMlfS5lbC1jb2wtc20tcHVzaC0xMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLXNtLTEye3dpZHRoOjUwJX0uZWwtY29sLXNtLW9mZnNldC0xMnttYXJnaW4tbGVmdDo1MCV9LmVsLWNvbC1zbS1wdWxsLTEye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjUwJX0uZWwtY29sLXNtLXB1c2gtMTJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1MCV9LmVsLWNvbC1zbS0xM3t3aWR0aDo1NC4xNjY2NyV9LmVsLWNvbC1zbS1vZmZzZXQtMTN7bWFyZ2luLWxlZnQ6NTQuMTY2NjclfS5lbC1jb2wtc20tcHVsbC0xM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1NC4xNjY2NyV9LmVsLWNvbC1zbS1wdXNoLTEze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTQuMTY2NjclfS5lbC1jb2wtc20tMTR7d2lkdGg6NTguMzMzMzMlfS5lbC1jb2wtc20tb2Zmc2V0LTE0e21hcmdpbi1sZWZ0OjU4LjMzMzMzJX0uZWwtY29sLXNtLXB1bGwtMTR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTguMzMzMzMlfS5lbC1jb2wtc20tcHVzaC0xNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjU4LjMzMzMzJX0uZWwtY29sLXNtLTE1e3dpZHRoOjYyLjUlfS5lbC1jb2wtc20tb2Zmc2V0LTE1e21hcmdpbi1sZWZ0OjYyLjUlfS5lbC1jb2wtc20tcHVsbC0xNXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo2Mi41JX0uZWwtY29sLXNtLXB1c2gtMTV7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo2Mi41JX0uZWwtY29sLXNtLTE2e3dpZHRoOjY2LjY2NjY3JX0uZWwtY29sLXNtLW9mZnNldC0xNnttYXJnaW4tbGVmdDo2Ni42NjY2NyV9LmVsLWNvbC1zbS1wdWxsLTE2e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjY2LjY2NjY3JX0uZWwtY29sLXNtLXB1c2gtMTZ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo2Ni42NjY2NyV9LmVsLWNvbC1zbS0xN3t3aWR0aDo3MC44MzMzMyV9LmVsLWNvbC1zbS1vZmZzZXQtMTd7bWFyZ2luLWxlZnQ6NzAuODMzMzMlfS5lbC1jb2wtc20tcHVsbC0xN3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3MC44MzMzMyV9LmVsLWNvbC1zbS1wdXNoLTE3e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzAuODMzMzMlfS5lbC1jb2wtc20tMTh7d2lkdGg6NzUlfS5lbC1jb2wtc20tb2Zmc2V0LTE4e21hcmdpbi1sZWZ0Ojc1JX0uZWwtY29sLXNtLXB1bGwtMTh7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzUlfS5lbC1jb2wtc20tcHVzaC0xOHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojc1JX0uZWwtY29sLXNtLTE5e3dpZHRoOjc5LjE2NjY3JX0uZWwtY29sLXNtLW9mZnNldC0xOXttYXJnaW4tbGVmdDo3OS4xNjY2NyV9LmVsLWNvbC1zbS1wdWxsLTE5e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojc5LjE2NjY3JX0uZWwtY29sLXNtLXB1c2gtMTl7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3OS4xNjY2NyV9LmVsLWNvbC1zbS0yMHt3aWR0aDo4My4zMzMzMyV9LmVsLWNvbC1zbS1vZmZzZXQtMjB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMlfS5lbC1jb2wtc20tcHVsbC0yMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4My4zMzMzMyV9LmVsLWNvbC1zbS1wdXNoLTIwe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6ODMuMzMzMzMlfS5lbC1jb2wtc20tMjF7d2lkdGg6ODcuNSV9LmVsLWNvbC1zbS1vZmZzZXQtMjF7bWFyZ2luLWxlZnQ6ODcuNSV9LmVsLWNvbC1zbS1wdWxsLTIxe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojg3LjUlfS5lbC1jb2wtc20tcHVzaC0yMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojg3LjUlfS5lbC1jb2wtc20tMjJ7d2lkdGg6OTEuNjY2NjclfS5lbC1jb2wtc20tb2Zmc2V0LTIye21hcmdpbi1sZWZ0OjkxLjY2NjY3JX0uZWwtY29sLXNtLXB1bGwtMjJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OTEuNjY2NjclfS5lbC1jb2wtc20tcHVzaC0yMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjkxLjY2NjY3JX0uZWwtY29sLXNtLTIze3dpZHRoOjk1LjgzMzMzJX0uZWwtY29sLXNtLW9mZnNldC0yM3ttYXJnaW4tbGVmdDo5NS44MzMzMyV9LmVsLWNvbC1zbS1wdWxsLTIze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojk1LjgzMzMzJX0uZWwtY29sLXNtLXB1c2gtMjN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo5NS44MzMzMyV9LmVsLWNvbC1zbS0yNHt3aWR0aDoxMDAlfS5lbC1jb2wtc20tb2Zmc2V0LTI0e21hcmdpbi1sZWZ0OjEwMCV9LmVsLWNvbC1zbS1wdWxsLTI0e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjEwMCV9LmVsLWNvbC1zbS1wdXNoLTI0e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTAwJX19QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjk5MnB4KXsuZWwtY29sLW1kLTB7ZGlzcGxheTpub25lO3dpZHRoOjAlfS5lbC1jb2wtbWQtb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH0uZWwtY29sLW1kLXB1bGwtMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDowfS5lbC1jb2wtbWQtcHVzaC0we3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MH0uZWwtY29sLW1kLTF7d2lkdGg6NC4xNjY2NyV9LmVsLWNvbC1tZC1vZmZzZXQtMXttYXJnaW4tbGVmdDo0LjE2NjY3JX0uZWwtY29sLW1kLXB1bGwtMXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0LjE2NjY3JX0uZWwtY29sLW1kLXB1c2gtMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQuMTY2NjclfS5lbC1jb2wtbWQtMnt3aWR0aDo4LjMzMzMzJX0uZWwtY29sLW1kLW9mZnNldC0ye21hcmdpbi1sZWZ0OjguMzMzMzMlfS5lbC1jb2wtbWQtcHVsbC0ye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjguMzMzMzMlfS5lbC1jb2wtbWQtcHVzaC0ye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6OC4zMzMzMyV9LmVsLWNvbC1tZC0ze3dpZHRoOjEyLjUlfS5lbC1jb2wtbWQtb2Zmc2V0LTN7bWFyZ2luLWxlZnQ6MTIuNSV9LmVsLWNvbC1tZC1wdWxsLTN7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTIuNSV9LmVsLWNvbC1tZC1wdXNoLTN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoxMi41JX0uZWwtY29sLW1kLTR7d2lkdGg6MTYuNjY2NjclfS5lbC1jb2wtbWQtb2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MTYuNjY2NjclfS5lbC1jb2wtbWQtcHVsbC00e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjE2LjY2NjY3JX0uZWwtY29sLW1kLXB1c2gtNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjE2LjY2NjY3JX0uZWwtY29sLW1kLTV7d2lkdGg6MjAuODMzMzMlfS5lbC1jb2wtbWQtb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6MjAuODMzMzMlfS5lbC1jb2wtbWQtcHVsbC01e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjIwLjgzMzMzJX0uZWwtY29sLW1kLXB1c2gtNXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjIwLjgzMzMzJX0uZWwtY29sLW1kLTZ7d2lkdGg6MjUlfS5lbC1jb2wtbWQtb2Zmc2V0LTZ7bWFyZ2luLWxlZnQ6MjUlfS5lbC1jb2wtbWQtcHVsbC02e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjI1JX0uZWwtY29sLW1kLXB1c2gtNntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjI1JX0uZWwtY29sLW1kLTd7d2lkdGg6MjkuMTY2NjclfS5lbC1jb2wtbWQtb2Zmc2V0LTd7bWFyZ2luLWxlZnQ6MjkuMTY2NjclfS5lbC1jb2wtbWQtcHVsbC03e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjI5LjE2NjY3JX0uZWwtY29sLW1kLXB1c2gtN3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjI5LjE2NjY3JX0uZWwtY29sLW1kLTh7d2lkdGg6MzMuMzMzMzMlfS5lbC1jb2wtbWQtb2Zmc2V0LTh7bWFyZ2luLWxlZnQ6MzMuMzMzMzMlfS5lbC1jb2wtbWQtcHVsbC04e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjMzLjMzMzMzJX0uZWwtY29sLW1kLXB1c2gtOHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjMzLjMzMzMzJX0uZWwtY29sLW1kLTl7d2lkdGg6MzcuNSV9LmVsLWNvbC1tZC1vZmZzZXQtOXttYXJnaW4tbGVmdDozNy41JX0uZWwtY29sLW1kLXB1bGwtOXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDozNy41JX0uZWwtY29sLW1kLXB1c2gtOXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjM3LjUlfS5lbC1jb2wtbWQtMTB7d2lkdGg6NDEuNjY2NjclfS5lbC1jb2wtbWQtb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjQxLjY2NjY3JX0uZWwtY29sLW1kLXB1bGwtMTB7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NDEuNjY2NjclfS5lbC1jb2wtbWQtcHVzaC0xMHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQxLjY2NjY3JX0uZWwtY29sLW1kLTExe3dpZHRoOjQ1LjgzMzMzJX0uZWwtY29sLW1kLW9mZnNldC0xMXttYXJnaW4tbGVmdDo0NS44MzMzMyV9LmVsLWNvbC1tZC1wdWxsLTExe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQ1LjgzMzMzJX0uZWwtY29sLW1kLXB1c2gtMTF7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo0NS44MzMzMyV9LmVsLWNvbC1tZC0xMnt3aWR0aDo1MCV9LmVsLWNvbC1tZC1vZmZzZXQtMTJ7bWFyZ2luLWxlZnQ6NTAlfS5lbC1jb2wtbWQtcHVsbC0xMntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1MCV9LmVsLWNvbC1tZC1wdXNoLTEye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTAlfS5lbC1jb2wtbWQtMTN7d2lkdGg6NTQuMTY2NjclfS5lbC1jb2wtbWQtb2Zmc2V0LTEze21hcmdpbi1sZWZ0OjU0LjE2NjY3JX0uZWwtY29sLW1kLXB1bGwtMTN7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTQuMTY2NjclfS5lbC1jb2wtbWQtcHVzaC0xM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjU0LjE2NjY3JX0uZWwtY29sLW1kLTE0e3dpZHRoOjU4LjMzMzMzJX0uZWwtY29sLW1kLW9mZnNldC0xNHttYXJnaW4tbGVmdDo1OC4zMzMzMyV9LmVsLWNvbC1tZC1wdWxsLTE0e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjU4LjMzMzMzJX0uZWwtY29sLW1kLXB1c2gtMTR7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1OC4zMzMzMyV9LmVsLWNvbC1tZC0xNXt3aWR0aDo2Mi41JX0uZWwtY29sLW1kLW9mZnNldC0xNXttYXJnaW4tbGVmdDo2Mi41JX0uZWwtY29sLW1kLXB1bGwtMTV7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NjIuNSV9LmVsLWNvbC1tZC1wdXNoLTE1e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NjIuNSV9LmVsLWNvbC1tZC0xNnt3aWR0aDo2Ni42NjY2NyV9LmVsLWNvbC1tZC1vZmZzZXQtMTZ7bWFyZ2luLWxlZnQ6NjYuNjY2NjclfS5lbC1jb2wtbWQtcHVsbC0xNntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo2Ni42NjY2NyV9LmVsLWNvbC1tZC1wdXNoLTE2e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NjYuNjY2NjclfS5lbC1jb2wtbWQtMTd7d2lkdGg6NzAuODMzMzMlfS5lbC1jb2wtbWQtb2Zmc2V0LTE3e21hcmdpbi1sZWZ0OjcwLjgzMzMzJX0uZWwtY29sLW1kLXB1bGwtMTd7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzAuODMzMzMlfS5lbC1jb2wtbWQtcHVzaC0xN3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjcwLjgzMzMzJX0uZWwtY29sLW1kLTE4e3dpZHRoOjc1JX0uZWwtY29sLW1kLW9mZnNldC0xOHttYXJnaW4tbGVmdDo3NSV9LmVsLWNvbC1tZC1wdWxsLTE4e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojc1JX0uZWwtY29sLW1kLXB1c2gtMTh7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3NSV9LmVsLWNvbC1tZC0xOXt3aWR0aDo3OS4xNjY2NyV9LmVsLWNvbC1tZC1vZmZzZXQtMTl7bWFyZ2luLWxlZnQ6NzkuMTY2NjclfS5lbC1jb2wtbWQtcHVsbC0xOXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3OS4xNjY2NyV9LmVsLWNvbC1tZC1wdXNoLTE5e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzkuMTY2NjclfS5lbC1jb2wtbWQtMjB7d2lkdGg6ODMuMzMzMzMlfS5lbC1jb2wtbWQtb2Zmc2V0LTIwe21hcmdpbi1sZWZ0OjgzLjMzMzMzJX0uZWwtY29sLW1kLXB1bGwtMjB7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6ODMuMzMzMzMlfS5lbC1jb2wtbWQtcHVzaC0yMHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjgzLjMzMzMzJX0uZWwtY29sLW1kLTIxe3dpZHRoOjg3LjUlfS5lbC1jb2wtbWQtb2Zmc2V0LTIxe21hcmdpbi1sZWZ0Ojg3LjUlfS5lbC1jb2wtbWQtcHVsbC0yMXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4Ny41JX0uZWwtY29sLW1kLXB1c2gtMjF7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4Ny41JX0uZWwtY29sLW1kLTIye3dpZHRoOjkxLjY2NjY3JX0uZWwtY29sLW1kLW9mZnNldC0yMnttYXJnaW4tbGVmdDo5MS42NjY2NyV9LmVsLWNvbC1tZC1wdWxsLTIye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjkxLjY2NjY3JX0uZWwtY29sLW1kLXB1c2gtMjJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo5MS42NjY2NyV9LmVsLWNvbC1tZC0yM3t3aWR0aDo5NS44MzMzMyV9LmVsLWNvbC1tZC1vZmZzZXQtMjN7bWFyZ2luLWxlZnQ6OTUuODMzMzMlfS5lbC1jb2wtbWQtcHVsbC0yM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo5NS44MzMzMyV9LmVsLWNvbC1tZC1wdXNoLTIze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6OTUuODMzMzMlfS5lbC1jb2wtbWQtMjR7d2lkdGg6MTAwJX0uZWwtY29sLW1kLW9mZnNldC0yNHttYXJnaW4tbGVmdDoxMDAlfS5lbC1jb2wtbWQtcHVsbC0yNHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxMDAlfS5lbC1jb2wtbWQtcHVzaC0yNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjEwMCV9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMjAwcHgpey5lbC1jb2wtbGctMHtkaXNwbGF5Om5vbmU7d2lkdGg6MCV9LmVsLWNvbC1sZy1vZmZzZXQtMHttYXJnaW4tbGVmdDowfS5lbC1jb2wtbGctcHVsbC0we3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjB9LmVsLWNvbC1sZy1wdXNoLTB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDowfS5lbC1jb2wtbGctMXt3aWR0aDo0LjE2NjY3JX0uZWwtY29sLWxnLW9mZnNldC0xe21hcmdpbi1sZWZ0OjQuMTY2NjclfS5lbC1jb2wtbGctcHVsbC0xe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQuMTY2NjclfS5lbC1jb2wtbGctcHVzaC0xe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NC4xNjY2NyV9LmVsLWNvbC1sZy0ye3dpZHRoOjguMzMzMzMlfS5lbC1jb2wtbGctb2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6OC4zMzMzMyV9LmVsLWNvbC1sZy1wdWxsLTJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OC4zMzMzMyV9LmVsLWNvbC1sZy1wdXNoLTJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4LjMzMzMzJX0uZWwtY29sLWxnLTN7d2lkdGg6MTIuNSV9LmVsLWNvbC1sZy1vZmZzZXQtM3ttYXJnaW4tbGVmdDoxMi41JX0uZWwtY29sLWxnLXB1bGwtM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxMi41JX0uZWwtY29sLWxnLXB1c2gtM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjEyLjUlfS5lbC1jb2wtbGctNHt3aWR0aDoxNi42NjY2NyV9LmVsLWNvbC1sZy1vZmZzZXQtNHttYXJnaW4tbGVmdDoxNi42NjY2NyV9LmVsLWNvbC1sZy1wdWxsLTR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTYuNjY2NjclfS5lbC1jb2wtbGctcHVzaC00e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTYuNjY2NjclfS5lbC1jb2wtbGctNXt3aWR0aDoyMC44MzMzMyV9LmVsLWNvbC1sZy1vZmZzZXQtNXttYXJnaW4tbGVmdDoyMC44MzMzMyV9LmVsLWNvbC1sZy1wdWxsLTV7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjAuODMzMzMlfS5lbC1jb2wtbGctcHVzaC01e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjAuODMzMzMlfS5lbC1jb2wtbGctNnt3aWR0aDoyNSV9LmVsLWNvbC1sZy1vZmZzZXQtNnttYXJnaW4tbGVmdDoyNSV9LmVsLWNvbC1sZy1wdWxsLTZ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjUlfS5lbC1jb2wtbGctcHVzaC02e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjUlfS5lbC1jb2wtbGctN3t3aWR0aDoyOS4xNjY2NyV9LmVsLWNvbC1sZy1vZmZzZXQtN3ttYXJnaW4tbGVmdDoyOS4xNjY2NyV9LmVsLWNvbC1sZy1wdWxsLTd7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjkuMTY2NjclfS5lbC1jb2wtbGctcHVzaC03e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjkuMTY2NjclfS5lbC1jb2wtbGctOHt3aWR0aDozMy4zMzMzMyV9LmVsLWNvbC1sZy1vZmZzZXQtOHttYXJnaW4tbGVmdDozMy4zMzMzMyV9LmVsLWNvbC1sZy1wdWxsLTh7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MzMuMzMzMzMlfS5lbC1jb2wtbGctcHVzaC04e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MzMuMzMzMzMlfS5lbC1jb2wtbGctOXt3aWR0aDozNy41JX0uZWwtY29sLWxnLW9mZnNldC05e21hcmdpbi1sZWZ0OjM3LjUlfS5lbC1jb2wtbGctcHVsbC05e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjM3LjUlfS5lbC1jb2wtbGctcHVzaC05e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MzcuNSV9LmVsLWNvbC1sZy0xMHt3aWR0aDo0MS42NjY2NyV9LmVsLWNvbC1sZy1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6NDEuNjY2NjclfS5lbC1jb2wtbGctcHVsbC0xMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0MS42NjY2NyV9LmVsLWNvbC1sZy1wdXNoLTEwe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NDEuNjY2NjclfS5lbC1jb2wtbGctMTF7d2lkdGg6NDUuODMzMzMlfS5lbC1jb2wtbGctb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLWxnLXB1bGwtMTF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NDUuODMzMzMlfS5lbC1jb2wtbGctcHVzaC0xMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLWxnLTEye3dpZHRoOjUwJX0uZWwtY29sLWxnLW9mZnNldC0xMnttYXJnaW4tbGVmdDo1MCV9LmVsLWNvbC1sZy1wdWxsLTEye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjUwJX0uZWwtY29sLWxnLXB1c2gtMTJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1MCV9LmVsLWNvbC1sZy0xM3t3aWR0aDo1NC4xNjY2NyV9LmVsLWNvbC1sZy1vZmZzZXQtMTN7bWFyZ2luLWxlZnQ6NTQuMTY2NjclfS5lbC1jb2wtbGctcHVsbC0xM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1NC4xNjY2NyV9LmVsLWNvbC1sZy1wdXNoLTEze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTQuMTY2NjclfS5lbC1jb2wtbGctMTR7d2lkdGg6NTguMzMzMzMlfS5lbC1jb2wtbGctb2Zmc2V0LTE0e21hcmdpbi1sZWZ0OjU4LjMzMzMzJX0uZWwtY29sLWxnLXB1bGwtMTR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTguMzMzMzMlfS5lbC1jb2wtbGctcHVzaC0xNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjU4LjMzMzMzJX0uZWwtY29sLWxnLTE1e3dpZHRoOjYyLjUlfS5lbC1jb2wtbGctb2Zmc2V0LTE1e21hcmdpbi1sZWZ0OjYyLjUlfS5lbC1jb2wtbGctcHVsbC0xNXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo2Mi41JX0uZWwtY29sLWxnLXB1c2gtMTV7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo2Mi41JX0uZWwtY29sLWxnLTE2e3dpZHRoOjY2LjY2NjY3JX0uZWwtY29sLWxnLW9mZnNldC0xNnttYXJnaW4tbGVmdDo2Ni42NjY2NyV9LmVsLWNvbC1sZy1wdWxsLTE2e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjY2LjY2NjY3JX0uZWwtY29sLWxnLXB1c2gtMTZ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo2Ni42NjY2NyV9LmVsLWNvbC1sZy0xN3t3aWR0aDo3MC44MzMzMyV9LmVsLWNvbC1sZy1vZmZzZXQtMTd7bWFyZ2luLWxlZnQ6NzAuODMzMzMlfS5lbC1jb2wtbGctcHVsbC0xN3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3MC44MzMzMyV9LmVsLWNvbC1sZy1wdXNoLTE3e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzAuODMzMzMlfS5lbC1jb2wtbGctMTh7d2lkdGg6NzUlfS5lbC1jb2wtbGctb2Zmc2V0LTE4e21hcmdpbi1sZWZ0Ojc1JX0uZWwtY29sLWxnLXB1bGwtMTh7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzUlfS5lbC1jb2wtbGctcHVzaC0xOHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojc1JX0uZWwtY29sLWxnLTE5e3dpZHRoOjc5LjE2NjY3JX0uZWwtY29sLWxnLW9mZnNldC0xOXttYXJnaW4tbGVmdDo3OS4xNjY2NyV9LmVsLWNvbC1sZy1wdWxsLTE5e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojc5LjE2NjY3JX0uZWwtY29sLWxnLXB1c2gtMTl7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3OS4xNjY2NyV9LmVsLWNvbC1sZy0yMHt3aWR0aDo4My4zMzMzMyV9LmVsLWNvbC1sZy1vZmZzZXQtMjB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMlfS5lbC1jb2wtbGctcHVsbC0yMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4My4zMzMzMyV9LmVsLWNvbC1sZy1wdXNoLTIwe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6ODMuMzMzMzMlfS5lbC1jb2wtbGctMjF7d2lkdGg6ODcuNSV9LmVsLWNvbC1sZy1vZmZzZXQtMjF7bWFyZ2luLWxlZnQ6ODcuNSV9LmVsLWNvbC1sZy1wdWxsLTIxe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojg3LjUlfS5lbC1jb2wtbGctcHVzaC0yMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojg3LjUlfS5lbC1jb2wtbGctMjJ7d2lkdGg6OTEuNjY2NjclfS5lbC1jb2wtbGctb2Zmc2V0LTIye21hcmdpbi1sZWZ0OjkxLjY2NjY3JX0uZWwtY29sLWxnLXB1bGwtMjJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OTEuNjY2NjclfS5lbC1jb2wtbGctcHVzaC0yMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjkxLjY2NjY3JX0uZWwtY29sLWxnLTIze3dpZHRoOjk1LjgzMzMzJX0uZWwtY29sLWxnLW9mZnNldC0yM3ttYXJnaW4tbGVmdDo5NS44MzMzMyV9LmVsLWNvbC1sZy1wdWxsLTIze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojk1LjgzMzMzJX0uZWwtY29sLWxnLXB1c2gtMjN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo5NS44MzMzMyV9LmVsLWNvbC1sZy0yNHt3aWR0aDoxMDAlfS5lbC1jb2wtbGctb2Zmc2V0LTI0e21hcmdpbi1sZWZ0OjEwMCV9LmVsLWNvbC1sZy1wdWxsLTI0e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjEwMCV9LmVsLWNvbC1sZy1wdXNoLTI0e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTAwJX19QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjE5MjBweCl7LmVsLWNvbC14bC0we2Rpc3BsYXk6bm9uZTt3aWR0aDowJX0uZWwtY29sLXhsLW9mZnNldC0we21hcmdpbi1sZWZ0OjB9LmVsLWNvbC14bC1wdWxsLTB7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MH0uZWwtY29sLXhsLXB1c2gtMHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjB9LmVsLWNvbC14bC0xe3dpZHRoOjQuMTY2NjclfS5lbC1jb2wteGwtb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6NC4xNjY2NyV9LmVsLWNvbC14bC1wdWxsLTF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NC4xNjY2NyV9LmVsLWNvbC14bC1wdXNoLTF7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo0LjE2NjY3JX0uZWwtY29sLXhsLTJ7d2lkdGg6OC4zMzMzMyV9LmVsLWNvbC14bC1vZmZzZXQtMnttYXJnaW4tbGVmdDo4LjMzMzMzJX0uZWwtY29sLXhsLXB1bGwtMntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4LjMzMzMzJX0uZWwtY29sLXhsLXB1c2gtMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjguMzMzMzMlfS5lbC1jb2wteGwtM3t3aWR0aDoxMi41JX0uZWwtY29sLXhsLW9mZnNldC0ze21hcmdpbi1sZWZ0OjEyLjUlfS5lbC1jb2wteGwtcHVsbC0ze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjEyLjUlfS5lbC1jb2wteGwtcHVzaC0ze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTIuNSV9LmVsLWNvbC14bC00e3dpZHRoOjE2LjY2NjY3JX0uZWwtY29sLXhsLW9mZnNldC00e21hcmdpbi1sZWZ0OjE2LjY2NjY3JX0uZWwtY29sLXhsLXB1bGwtNHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxNi42NjY2NyV9LmVsLWNvbC14bC1wdXNoLTR7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoxNi42NjY2NyV9LmVsLWNvbC14bC01e3dpZHRoOjIwLjgzMzMzJX0uZWwtY29sLXhsLW9mZnNldC01e21hcmdpbi1sZWZ0OjIwLjgzMzMzJX0uZWwtY29sLXhsLXB1bGwtNXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoyMC44MzMzMyV9LmVsLWNvbC14bC1wdXNoLTV7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoyMC44MzMzMyV9LmVsLWNvbC14bC02e3dpZHRoOjI1JX0uZWwtY29sLXhsLW9mZnNldC02e21hcmdpbi1sZWZ0OjI1JX0uZWwtY29sLXhsLXB1bGwtNntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoyNSV9LmVsLWNvbC14bC1wdXNoLTZ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoyNSV9LmVsLWNvbC14bC03e3dpZHRoOjI5LjE2NjY3JX0uZWwtY29sLXhsLW9mZnNldC03e21hcmdpbi1sZWZ0OjI5LjE2NjY3JX0uZWwtY29sLXhsLXB1bGwtN3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoyOS4xNjY2NyV9LmVsLWNvbC14bC1wdXNoLTd7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoyOS4xNjY2NyV9LmVsLWNvbC14bC04e3dpZHRoOjMzLjMzMzMzJX0uZWwtY29sLXhsLW9mZnNldC04e21hcmdpbi1sZWZ0OjMzLjMzMzMzJX0uZWwtY29sLXhsLXB1bGwtOHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDozMy4zMzMzMyV9LmVsLWNvbC14bC1wdXNoLTh7cG9zaXRpb246cmVsYXRpdmU7bGVmdDozMy4zMzMzMyV9LmVsLWNvbC14bC05e3dpZHRoOjM3LjUlfS5lbC1jb2wteGwtb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6MzcuNSV9LmVsLWNvbC14bC1wdWxsLTl7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MzcuNSV9LmVsLWNvbC14bC1wdXNoLTl7cG9zaXRpb246cmVsYXRpdmU7bGVmdDozNy41JX0uZWwtY29sLXhsLTEwe3dpZHRoOjQxLjY2NjY3JX0uZWwtY29sLXhsLW9mZnNldC0xMHttYXJnaW4tbGVmdDo0MS42NjY2NyV9LmVsLWNvbC14bC1wdWxsLTEwe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQxLjY2NjY3JX0uZWwtY29sLXhsLXB1c2gtMTB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo0MS42NjY2NyV9LmVsLWNvbC14bC0xMXt3aWR0aDo0NS44MzMzMyV9LmVsLWNvbC14bC1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6NDUuODMzMzMlfS5lbC1jb2wteGwtcHVsbC0xMXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0NS44MzMzMyV9LmVsLWNvbC14bC1wdXNoLTExe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NDUuODMzMzMlfS5lbC1jb2wteGwtMTJ7d2lkdGg6NTAlfS5lbC1jb2wteGwtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjUwJX0uZWwtY29sLXhsLXB1bGwtMTJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTAlfS5lbC1jb2wteGwtcHVzaC0xMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjUwJX0uZWwtY29sLXhsLTEze3dpZHRoOjU0LjE2NjY3JX0uZWwtY29sLXhsLW9mZnNldC0xM3ttYXJnaW4tbGVmdDo1NC4xNjY2NyV9LmVsLWNvbC14bC1wdWxsLTEze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjU0LjE2NjY3JX0uZWwtY29sLXhsLXB1c2gtMTN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1NC4xNjY2NyV9LmVsLWNvbC14bC0xNHt3aWR0aDo1OC4zMzMzMyV9LmVsLWNvbC14bC1vZmZzZXQtMTR7bWFyZ2luLWxlZnQ6NTguMzMzMzMlfS5lbC1jb2wteGwtcHVsbC0xNHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1OC4zMzMzMyV9LmVsLWNvbC14bC1wdXNoLTE0e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTguMzMzMzMlfS5lbC1jb2wteGwtMTV7d2lkdGg6NjIuNSV9LmVsLWNvbC14bC1vZmZzZXQtMTV7bWFyZ2luLWxlZnQ6NjIuNSV9LmVsLWNvbC14bC1wdWxsLTE1e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjYyLjUlfS5lbC1jb2wteGwtcHVzaC0xNXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjYyLjUlfS5lbC1jb2wteGwtMTZ7d2lkdGg6NjYuNjY2NjclfS5lbC1jb2wteGwtb2Zmc2V0LTE2e21hcmdpbi1sZWZ0OjY2LjY2NjY3JX0uZWwtY29sLXhsLXB1bGwtMTZ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NjYuNjY2NjclfS5lbC1jb2wteGwtcHVzaC0xNntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjY2LjY2NjY3JX0uZWwtY29sLXhsLTE3e3dpZHRoOjcwLjgzMzMzJX0uZWwtY29sLXhsLW9mZnNldC0xN3ttYXJnaW4tbGVmdDo3MC44MzMzMyV9LmVsLWNvbC14bC1wdWxsLTE3e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjcwLjgzMzMzJX0uZWwtY29sLXhsLXB1c2gtMTd7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3MC44MzMzMyV9LmVsLWNvbC14bC0xOHt3aWR0aDo3NSV9LmVsLWNvbC14bC1vZmZzZXQtMTh7bWFyZ2luLWxlZnQ6NzUlfS5lbC1jb2wteGwtcHVsbC0xOHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3NSV9LmVsLWNvbC14bC1wdXNoLTE4e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzUlfS5lbC1jb2wteGwtMTl7d2lkdGg6NzkuMTY2NjclfS5lbC1jb2wteGwtb2Zmc2V0LTE5e21hcmdpbi1sZWZ0Ojc5LjE2NjY3JX0uZWwtY29sLXhsLXB1bGwtMTl7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzkuMTY2NjclfS5lbC1jb2wteGwtcHVzaC0xOXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojc5LjE2NjY3JX0uZWwtY29sLXhsLTIwe3dpZHRoOjgzLjMzMzMzJX0uZWwtY29sLXhsLW9mZnNldC0yMHttYXJnaW4tbGVmdDo4My4zMzMzMyV9LmVsLWNvbC14bC1wdWxsLTIwe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjgzLjMzMzMzJX0uZWwtY29sLXhsLXB1c2gtMjB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4My4zMzMzMyV9LmVsLWNvbC14bC0yMXt3aWR0aDo4Ny41JX0uZWwtY29sLXhsLW9mZnNldC0yMXttYXJnaW4tbGVmdDo4Ny41JX0uZWwtY29sLXhsLXB1bGwtMjF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6ODcuNSV9LmVsLWNvbC14bC1wdXNoLTIxe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6ODcuNSV9LmVsLWNvbC14bC0yMnt3aWR0aDo5MS42NjY2NyV9LmVsLWNvbC14bC1vZmZzZXQtMjJ7bWFyZ2luLWxlZnQ6OTEuNjY2NjclfS5lbC1jb2wteGwtcHVsbC0yMntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo5MS42NjY2NyV9LmVsLWNvbC14bC1wdXNoLTIye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6OTEuNjY2NjclfS5lbC1jb2wteGwtMjN7d2lkdGg6OTUuODMzMzMlfS5lbC1jb2wteGwtb2Zmc2V0LTIze21hcmdpbi1sZWZ0Ojk1LjgzMzMzJX0uZWwtY29sLXhsLXB1bGwtMjN7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OTUuODMzMzMlfS5lbC1jb2wteGwtcHVzaC0yM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojk1LjgzMzMzJX0uZWwtY29sLXhsLTI0e3dpZHRoOjEwMCV9LmVsLWNvbC14bC1vZmZzZXQtMjR7bWFyZ2luLWxlZnQ6MTAwJX0uZWwtY29sLXhsLXB1bGwtMjR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTAwJX0uZWwtY29sLXhsLXB1c2gtMjR7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoxMDAlfX0uZWwtdXBsb2Fke2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO291dGxpbmU6MH0uZWwtdXBsb2FkX19pbnB1dHtkaXNwbGF5Om5vbmV9LmVsLXVwbG9hZF9fdGlwe2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM2MDYyNjY7bWFyZ2luLXRvcDo3cHh9LmVsLXVwbG9hZCBpZnJhbWV7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDotMTt0b3A6MDtsZWZ0OjA7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MCl9LmVsLXVwbG9hZC0tcGljdHVyZS1jYXJke2JhY2tncm91bmQtY29sb3I6I2ZiZmRmZjtib3JkZXI6MXB4IGRhc2hlZCAjYzBjY2RhO2JvcmRlci1yYWRpdXM6NnB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxNDhweDtoZWlnaHQ6MTQ4cHg7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6MTQ2cHg7dmVydGljYWwtYWxpZ246dG9wfS5lbC11cGxvYWQtLXBpY3R1cmUtY2FyZCBpe2ZvbnQtc2l6ZToyOHB4O2NvbG9yOiM4YzkzOWR9LmVsLXVwbG9hZC0tcGljdHVyZS1jYXJkOmhvdmVyLC5lbC11cGxvYWQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM0MDlFRkY7Y29sb3I6IzQwOUVGRn0uZWwtdXBsb2FkOmZvY3VzIC5lbC11cGxvYWQtZHJhZ2dlcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtdXBsb2FkLWRyYWdnZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggZGFzaGVkICNkOWQ5ZDk7Ym9yZGVyLXJhZGl1czo2cHg7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjM2MHB4O2hlaWdodDoxODBweDt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtvdmVyZmxvdzpoaWRkZW59LmVsLXVwbG9hZC1kcmFnZ2VyIC5lbC1pY29uLXVwbG9hZHtmb250LXNpemU6NjdweDtjb2xvcjojQzBDNENDO21hcmdpbjo0MHB4IDAgMTZweDtsaW5lLWhlaWdodDo1MHB4fS5lbC11cGxvYWQtZHJhZ2dlcisuZWwtdXBsb2FkX190aXB7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXVwbG9hZC1kcmFnZ2Vyfi5lbC11cGxvYWRfX2ZpbGVze2JvcmRlci10b3A6MXB4IHNvbGlkICNEQ0RGRTY7bWFyZ2luLXRvcDo3cHg7cGFkZGluZy10b3A6NXB4fS5lbC11cGxvYWQtZHJhZ2dlciAuZWwtdXBsb2FkX190ZXh0e2NvbG9yOiM2MDYyNjY7Zm9udC1zaXplOjE0cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXVwbG9hZC1kcmFnZ2VyIC5lbC11cGxvYWRfX3RleHQgZW17Y29sb3I6IzQwOUVGRjtmb250LXN0eWxlOm5vcm1hbH0uZWwtdXBsb2FkLWRyYWdnZXI6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLXVwbG9hZC1kcmFnZ2VyLmlzLWRyYWdvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgzMiwxNTksMjU1LC4wNik7Ym9yZGVyOjJweCBkYXNoZWQgIzQwOUVGRn0uZWwtdXBsb2FkLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0uZWwtdXBsb2FkLWxpc3RfX2l0ZW17dHJhbnNpdGlvbjphbGwgLjVzIGN1YmljLWJlemllciguNTUsMCwuMSwxKTtmb250LXNpemU6MTRweDtjb2xvcjojNjA2MjY2O2xpbmUtaGVpZ2h0OjEuODttYXJnaW4tdG9wOjVweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo0cHg7d2lkdGg6MTAwJX0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLXByb2dyZXNze3Bvc2l0aW9uOmFic29sdXRlO3RvcDoyMHB4O3dpZHRoOjEwMCV9LmVsLXVwbG9hZC1saXN0X19pdGVtIC5lbC1wcm9ncmVzc19fdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDotMTNweH0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLXByb2dyZXNzLWJhcnttYXJnaW4tcmlnaHQ6MDtwYWRkaW5nLXJpZ2h0OjB9LmVsLXVwbG9hZC1saXN0X19pdGVtOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MTBweH0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLWljb24tdXBsb2FkLXN1Y2Nlc3N7Y29sb3I6IzY3QzIzQX0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLWljb24tY2xvc2V7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1cHg7cmlnaHQ6NXB4O2N1cnNvcjpwb2ludGVyO29wYWNpdHk6Ljc1O2NvbG9yOiM2MDYyNjZ9LmVsLXVwbG9hZC1saXN0X19pdGVtIC5lbC1pY29uLWNsb3NlOmhvdmVye29wYWNpdHk6MX0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLWljb24tY2xvc2UtdGlwe2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NXB4O3JpZ2h0OjVweDtmb250LXNpemU6MTJweDtjdXJzb3I6cG9pbnRlcjtvcGFjaXR5OjE7Y29sb3I6IzQwOUVGRn0uZWwtdXBsb2FkLWxpc3RfX2l0ZW06aG92ZXIgLmVsLWljb24tY2xvc2V7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXVwbG9hZC1saXN0X19pdGVtOmhvdmVyIC5lbC1wcm9ncmVzc19fdGV4dHtkaXNwbGF5Om5vbmV9LmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3MgLmVsLXVwbG9hZC1saXN0X19pdGVtLXN0YXR1cy1sYWJlbHtkaXNwbGF5OmJsb2NrfS5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzIC5lbC11cGxvYWQtbGlzdF9faXRlbS1uYW1lOmZvY3VzLC5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzIC5lbC11cGxvYWQtbGlzdF9faXRlbS1uYW1lOmhvdmVye2NvbG9yOiM0MDlFRkY7Y3Vyc29yOnBvaW50ZXJ9LmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3M6Zm9jdXM6bm90KDpob3ZlcikgLmVsLWljb24tY2xvc2UtdGlwe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzOmFjdGl2ZSwuZWwtdXBsb2FkLWxpc3RfX2l0ZW0uaXMtc3VjY2Vzczpub3QoLmZvY3VzaW5nKTpmb2N1c3tvdXRsaW5lLXdpZHRoOjB9LmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3M6YWN0aXZlIC5lbC1pY29uLWNsb3NlLXRpcCwuZWwtdXBsb2FkLWxpc3RfX2l0ZW0uaXMtc3VjY2Vzczpmb2N1cyAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tc3RhdHVzLWxhYmVsLC5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzOmhvdmVyIC5lbC11cGxvYWQtbGlzdF9faXRlbS1zdGF0dXMtbGFiZWwsLmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3M6bm90KC5mb2N1c2luZyk6Zm9jdXMgLmVsLWljb24tY2xvc2UtdGlwe2Rpc3BsYXk6bm9uZX0uZWwtdXBsb2FkLWxpc3QuaXMtZGlzYWJsZWQgLmVsLXVwbG9hZC1saXN0X19pdGVtOmhvdmVyIC5lbC11cGxvYWQtbGlzdF9faXRlbS1zdGF0dXMtbGFiZWx7ZGlzcGxheTpibG9ja30uZWwtdXBsb2FkLWxpc3RfX2l0ZW0tbmFtZXtjb2xvcjojNjA2MjY2O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXJpZ2h0OjQwcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctbGVmdDo0cHg7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt0cmFuc2l0aW9uOmNvbG9yIC4zczt3aGl0ZS1zcGFjZTpub3dyYXB9LmVsLXVwbG9hZC1saXN0X19pdGVtLW5hbWUgW2NsYXNzXj1lbC1pY29uXXtoZWlnaHQ6MTAwJTttYXJnaW4tcmlnaHQ6N3B4O2NvbG9yOiM5MDkzOTk7bGluZS1oZWlnaHQ6aW5oZXJpdH0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0tc3RhdHVzLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjVweDt0b3A6MDtsaW5lLWhlaWdodDppbmhlcml0O2Rpc3BsYXk6bm9uZX0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0tZGVsZXRle3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwcHg7dG9wOjA7Zm9udC1zaXplOjEycHg7Y29sb3I6IzYwNjI2NjtkaXNwbGF5Om5vbmV9LmVsLXVwbG9hZC1saXN0X19pdGVtLWRlbGV0ZTpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJke21hcmdpbjowO2Rpc3BsYXk6aW5saW5lO3ZlcnRpY2FsLWFsaWduOnRvcH0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW17b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjMGNjZGE7Ym9yZGVyLXJhZGl1czo2cHg7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjE0OHB4O2hlaWdodDoxNDhweDttYXJnaW46MCA4cHggOHB4IDA7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmQgLmVsLXVwbG9hZC1saXN0X19pdGVtIC5lbC1pY29uLWNoZWNrLC5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbSAuZWwtaWNvbi1jaXJjbGUtY2hlY2t7Y29sb3I6I0ZGRn0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLWljb24tY2xvc2UsLmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmQgLmVsLXVwbG9hZC1saXN0X19pdGVtOmhvdmVyIC5lbC11cGxvYWQtbGlzdF9faXRlbS1zdGF0dXMtbGFiZWx7ZGlzcGxheTpub25lfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbTpob3ZlciAuZWwtcHJvZ3Jlc3NfX3RleHR7ZGlzcGxheTpibG9ja30uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tbmFtZXtkaXNwbGF5Om5vbmV9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmQgLmVsLXVwbG9hZC1saXN0X19pdGVtLXRodW1ibmFpbHt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbS1zdGF0dXMtbGFiZWx7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTE1cHg7dG9wOi02cHg7d2lkdGg6NDBweDtoZWlnaHQ6MjRweDtiYWNrZ3JvdW5kOiMxM2NlNjY7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7Ym94LXNoYWRvdzowIDAgMXBjIDFweCByZ2JhKDAsMCwwLC4yKX0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tc3RhdHVzLWxhYmVsIGl7Zm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDoxMXB4O3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tYWN0aW9uc3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2xlZnQ6MDt0b3A6MDtjdXJzb3I6ZGVmYXVsdDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojZmZmO29wYWNpdHk6MDtmb250LXNpemU6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjUpO3RyYW5zaXRpb246b3BhY2l0eSAuM3N9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmQgLmVsLXVwbG9hZC1saXN0X19pdGVtLWFjdGlvbnM6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tYWN0aW9ucyBzcGFue2Rpc3BsYXk6bm9uZTtjdXJzb3I6cG9pbnRlcn0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tYWN0aW9ucyBzcGFuK3NwYW57bWFyZ2luLWxlZnQ6MTVweH0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tYWN0aW9ucyAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tZGVsZXRle3Bvc2l0aW9uOnN0YXRpYztmb250LXNpemU6aW5oZXJpdDtjb2xvcjppbmhlcml0fS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbS1hY3Rpb25zOmhvdmVye29wYWNpdHk6MX0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tYWN0aW9uczpob3ZlciBzcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC1wcm9ncmVzc3t0b3A6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTtib3R0b206YXV0bzt3aWR0aDoxMjZweH0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtcHJvZ3Jlc3MgLmVsLXByb2dyZXNzX190ZXh0e3RvcDo1MCV9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbXtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDowO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjMGNjZGE7Ym9yZGVyLXJhZGl1czo2cHg7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbi10b3A6MTBweDtwYWRkaW5nOjEwcHggMTBweCAxMHB4IDkwcHg7aGVpZ2h0OjkycHh9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbSAuZWwtaWNvbi1jaGVjaywuZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXVwbG9hZC1saXN0X19pdGVtIC5lbC1pY29uLWNpcmNsZS1jaGVja3tjb2xvcjojRkZGfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZSAuZWwtdXBsb2FkLWxpc3RfX2l0ZW06aG92ZXIgLmVsLXVwbG9hZC1saXN0X19pdGVtLXN0YXR1cy1sYWJlbHtiYWNrZ3JvdW5kOjAgMDtib3gtc2hhZG93Om5vbmU7dG9wOi0ycHg7cmlnaHQ6LTEycHh9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbTpob3ZlciAuZWwtcHJvZ3Jlc3NfX3RleHR7ZGlzcGxheTpibG9ja30uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3MgLmVsLXVwbG9hZC1saXN0X19pdGVtLW5hbWV7bGluZS1oZWlnaHQ6NzBweDttYXJnaW4tdG9wOjB9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzIC5lbC11cGxvYWQtbGlzdF9faXRlbS1uYW1lIGl7ZGlzcGxheTpub25lfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZSAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tdGh1bWJuYWlse3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo3MHB4O2hlaWdodDo3MHB4O2Zsb2F0OmxlZnQ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxO21hcmdpbi1sZWZ0Oi04MHB4O2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXVwbG9hZC1saXN0X19pdGVtLW5hbWV7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjIwcHh9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbS1uYW1lIGl7Zm9udC1zaXplOjcwcHg7bGluZS1oZWlnaHQ6MTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjlweDt0b3A6MTBweH0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXVwbG9hZC1saXN0X19pdGVtLXN0YXR1cy1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTdweDt0b3A6LTdweDt3aWR0aDo0NnB4O2hlaWdodDoyNnB4O2JhY2tncm91bmQ6IzEzY2U2Njt0ZXh0LWFsaWduOmNlbnRlcjt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTtib3gtc2hhZG93OjAgMXB4IDFweCAjY2NjfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZSAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tc3RhdHVzLWxhYmVsIGl7Zm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDoxMnB4O3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXByb2dyZXNze3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotN3B4fS5lbC11cGxvYWQtY292ZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MTA7Y3Vyc29yOmRlZmF1bHR9LmVsLXVwbG9hZC1jb3Zlcjo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwMCU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC11cGxvYWQtY292ZXIgaW1ne2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uZWwtdXBsb2FkLWNvdmVyX19sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTVweDt0b3A6LTZweDt3aWR0aDo0MHB4O2hlaWdodDoyNHB4O2JhY2tncm91bmQ6IzEzY2U2Njt0ZXh0LWFsaWduOmNlbnRlcjt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTtib3gtc2hhZG93OjAgMCAxcGMgMXB4IHJnYmEoMCwwLDAsLjIpfS5lbC11cGxvYWQtY292ZXJfX2xhYmVsIGl7Zm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDoxMXB4O3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTtjb2xvcjojZmZmfS5lbC11cGxvYWQtY292ZXJfX3Byb2dyZXNze2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtwb3NpdGlvbjpzdGF0aWM7d2lkdGg6MjQzcHh9LmVsLXVwbG9hZC1jb3Zlcl9fcHJvZ3Jlc3MrLmVsLXVwbG9hZF9faW5uZXJ7b3BhY2l0eTowfS5lbC11cGxvYWQtY292ZXJfX2NvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LmVsLXVwbG9hZC1jb3Zlcl9faW50ZXJhY3R7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC43Mik7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXVwbG9hZC1jb3Zlcl9faW50ZXJhY3QgLmJ0bntkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojRkZGO2ZvbnQtc2l6ZToxNHB4O2N1cnNvcjpwb2ludGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKSxvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO21hcmdpbi10b3A6NjBweH0uZWwtdXBsb2FkLWNvdmVyX19pbnRlcmFjdCAuYnRuIHNwYW57b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGxpbmVhcn0uZWwtdXBsb2FkLWNvdmVyX19pbnRlcmFjdCAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1sZWZ0OjM1cHh9LmVsLXVwbG9hZC1jb3Zlcl9faW50ZXJhY3QgLmJ0bjpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTNweCl9LmVsLXVwbG9hZC1jb3Zlcl9faW50ZXJhY3QgLmJ0bjpob3ZlciBzcGFue29wYWNpdHk6MX0uZWwtdXBsb2FkLWNvdmVyX19pbnRlcmFjdCAuYnRuIGl7Y29sb3I6I0ZGRjtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToyNHB4O2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjAgYXV0byA1cHh9LmVsLXVwbG9hZC1jb3Zlcl9fdGl0bGV7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO2JhY2tncm91bmQtY29sb3I6I0ZGRjtoZWlnaHQ6MzZweDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXdlaWdodDo0MDA7dGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6MCAxMHB4O21hcmdpbjowO2xpbmUtaGVpZ2h0OjM2cHg7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzMwMzEzM30uZWwtdXBsb2FkLWNvdmVyKy5lbC11cGxvYWRfX2lubmVye29wYWNpdHk6MDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LmVsLXByb2dyZXNze3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjF9LmVsLXByb2dyZXNzX190ZXh0e2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM2MDYyNjY7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1sZWZ0OjEwcHg7bGluZS1oZWlnaHQ6MX0uZWwtcHJvZ3Jlc3NfX3RleHQgaXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTpibG9ja30uZWwtcHJvZ3Jlc3MtLWNpcmNsZSwuZWwtcHJvZ3Jlc3MtLWRhc2hib2FyZHtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtcHJvZ3Jlc3MtLWNpcmNsZSAuZWwtcHJvZ3Jlc3NfX3RleHQsLmVsLXByb2dyZXNzLS1kYXNoYm9hcmQgLmVsLXByb2dyZXNzX190ZXh0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDowO3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC01MCUpfS5lbC1wcm9ncmVzcy0tY2lyY2xlIC5lbC1wcm9ncmVzc19fdGV4dCBpLC5lbC1wcm9ncmVzcy0tZGFzaGJvYXJkIC5lbC1wcm9ncmVzc19fdGV4dCBpe3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtcHJvZ3Jlc3MtLXdpdGhvdXQtdGV4dCAuZWwtcHJvZ3Jlc3NfX3RleHR7ZGlzcGxheTpub25lfS5lbC1wcm9ncmVzcy0td2l0aG91dC10ZXh0IC5lbC1wcm9ncmVzcy1iYXJ7cGFkZGluZy1yaWdodDowO21hcmdpbi1yaWdodDowO2Rpc3BsYXk6YmxvY2t9LmVsLXByb2dyZXNzLS10ZXh0LWluc2lkZSAuZWwtcHJvZ3Jlc3MtYmFye3BhZGRpbmctcmlnaHQ6MDttYXJnaW4tcmlnaHQ6MH0uZWwtcHJvZ3Jlc3MuaXMtc3VjY2VzcyAuZWwtcHJvZ3Jlc3MtYmFyX19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiM2N0MyM0F9LmVsLXByb2dyZXNzLmlzLXN1Y2Nlc3MgLmVsLXByb2dyZXNzX190ZXh0e2NvbG9yOiM2N0MyM0F9LmVsLXByb2dyZXNzLmlzLXdhcm5pbmcgLmVsLXByb2dyZXNzLWJhcl9faW5uZXJ7YmFja2dyb3VuZC1jb2xvcjojRTZBMjNDfS5lbC1iYWRnZV9fY29udGVudCwuZWwtcHJvZ3Jlc3MuaXMtZXhjZXB0aW9uIC5lbC1wcm9ncmVzcy1iYXJfX2lubmVye2JhY2tncm91bmQtY29sb3I6I0Y1NkM2Q30uZWwtcHJvZ3Jlc3MuaXMtd2FybmluZyAuZWwtcHJvZ3Jlc3NfX3RleHR7Y29sb3I6I0U2QTIzQ30uZWwtcHJvZ3Jlc3MuaXMtZXhjZXB0aW9uIC5lbC1wcm9ncmVzc19fdGV4dHtjb2xvcjojRjU2QzZDfS5lbC1wcm9ncmVzcy1iYXJ7cGFkZGluZy1yaWdodDo1MHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoxMDAlO21hcmdpbi1yaWdodDotNTVweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWNhcmRfX2hlYWRlciwuZWwtbWVzc2FnZSwuZWwtc3RlcF9faWNvbnstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtcHJvZ3Jlc3MtYmFyX19vdXRlcntoZWlnaHQ6NnB4O2JvcmRlci1yYWRpdXM6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjojRUJFRUY1O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXByb2dyZXNzLWJhcl9faW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO2hlaWdodDoxMDAlO2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjt0ZXh0LWFsaWduOnJpZ2h0O2JvcmRlci1yYWRpdXM6MTAwcHg7bGluZS1oZWlnaHQ6MTt3aGl0ZS1zcGFjZTpub3dyYXA7dHJhbnNpdGlvbjp3aWR0aCAuNnMgZWFzZX0uZWwtcHJvZ3Jlc3MtYmFyX19pbm5lcjo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwMCU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1wcm9ncmVzcy1iYXJfX2lubmVyVGV4dHtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6I0ZGRjtmb250LXNpemU6MTJweDttYXJnaW46MCA1cHh9QGtleWZyYW1lcyBwcm9ncmVzc3swJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0xMDAle2JhY2tncm91bmQtcG9zaXRpb246MzJweCAwfX0uZWwtdGltZS1zcGlubmVye3dpZHRoOjEwMCU7d2hpdGUtc3BhY2U6bm93cmFwfS5lbC1zcGlubmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtc3Bpbm5lci1pbm5lcnthbmltYXRpb246cm90YXRlIDJzIGxpbmVhciBpbmZpbml0ZTt3aWR0aDo1MHB4O2hlaWdodDo1MHB4fS5lbC1zcGlubmVyLWlubmVyIC5wYXRoe3N0cm9rZTojZWNlY2VjO3N0cm9rZS1saW5lY2FwOnJvdW5kO2FuaW1hdGlvbjpkYXNoIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGV9QGtleWZyYW1lcyByb3RhdGV7MTAwJXt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgZGFzaHswJXtzdHJva2UtZGFzaGFycmF5OjEsMTUwO3N0cm9rZS1kYXNob2Zmc2V0OjB9NTAle3N0cm9rZS1kYXNoYXJyYXk6OTAsMTUwO3N0cm9rZS1kYXNob2Zmc2V0Oi0zNX0xMDAle3N0cm9rZS1kYXNoYXJyYXk6OTAsMTUwO3N0cm9rZS1kYXNob2Zmc2V0Oi0xMjR9fS5lbC1tZXNzYWdle21pbi13aWR0aDozODBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNFQkVFRjU7cG9zaXRpb246Zml4ZWQ7bGVmdDo1MCU7dG9wOjIwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7YmFja2dyb3VuZC1jb2xvcjojZWRmMmZjO3RyYW5zaXRpb246b3BhY2l0eSAuM3MsdHJhbnNmb3JtIC40cyx0b3AgLjRzO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDIwcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uZWwtbWVzc2FnZS5pcy1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uZWwtbWVzc2FnZS5pcy1jbG9zYWJsZSAuZWwtbWVzc2FnZV9fY29udGVudHtwYWRkaW5nLXJpZ2h0OjE2cHh9LmVsLW1lc3NhZ2UgcHttYXJnaW46MH0uZWwtbWVzc2FnZS0taW5mbyAuZWwtbWVzc2FnZV9fY29udGVudHtjb2xvcjojOTA5Mzk5fS5lbC1tZXNzYWdlLS1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6I2YwZjllYjtib3JkZXItY29sb3I6I2UxZjNkOH0uZWwtbWVzc2FnZS0tc3VjY2VzcyAuZWwtbWVzc2FnZV9fY29udGVudHtjb2xvcjojNjdDMjNBfS5lbC1tZXNzYWdlLS13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZkZjZlYztib3JkZXItY29sb3I6I2ZhZWNkOH0uZWwtbWVzc2FnZS0td2FybmluZyAuZWwtbWVzc2FnZV9fY29udGVudHtjb2xvcjojRTZBMjNDfS5lbC1tZXNzYWdlLS1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNmZWYwZjA7Ym9yZGVyLWNvbG9yOiNmZGUyZTJ9LmVsLW1lc3NhZ2UtLWVycm9yIC5lbC1tZXNzYWdlX19jb250ZW50e2NvbG9yOiNGNTZDNkN9LmVsLW1lc3NhZ2VfX2ljb257bWFyZ2luLXJpZ2h0OjEwcHh9LmVsLW1lc3NhZ2VfX2NvbnRlbnR7cGFkZGluZzowO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjF9LmVsLW1lc3NhZ2VfX2NvbnRlbnQ6Zm9jdXN7b3V0bGluZS13aWR0aDowfS5lbC1tZXNzYWdlX19jbG9zZUJ0bntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjE1cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6I0MwQzRDQztmb250LXNpemU6MTZweH0uZWwtbWVzc2FnZV9fY2xvc2VCdG46Zm9jdXN7b3V0bGluZS13aWR0aDowfS5lbC1tZXNzYWdlX19jbG9zZUJ0bjpob3Zlcntjb2xvcjojOTA5Mzk5fS5lbC1tZXNzYWdlIC5lbC1pY29uLXN1Y2Nlc3N7Y29sb3I6IzY3QzIzQX0uZWwtbWVzc2FnZSAuZWwtaWNvbi1lcnJvcntjb2xvcjojRjU2QzZDfS5lbC1tZXNzYWdlIC5lbC1pY29uLWluZm97Y29sb3I6IzkwOTM5OX0uZWwtbWVzc2FnZSAuZWwtaWNvbi13YXJuaW5ne2NvbG9yOiNFNkEyM0N9LmVsLW1lc3NhZ2UtZmFkZS1lbnRlciwuZWwtbWVzc2FnZS1mYWRlLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC0xMDAlKX0uZWwtYmFkZ2V7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC1iYWRnZV9fY29udGVudHtib3JkZXItcmFkaXVzOjEwcHg7Y29sb3I6I0ZGRjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTJweDtoZWlnaHQ6MThweDtsaW5lLWhlaWdodDoxOHB4O3BhZGRpbmc6MCA2cHg7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlcjoxcHggc29saWQgI0ZGRn0uZWwtYmFkZ2VfX2NvbnRlbnQuaXMtZml4ZWR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MTBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKDEwMCUpfS5lbC1yYXRlX19pY29uLC5lbC1yYXRlX19pdGVte3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC1iYWRnZV9fY29udGVudC5pcy1maXhlZC5pcy1kb3R7cmlnaHQ6NXB4fS5lbC1iYWRnZV9fY29udGVudC5pcy1kb3R7aGVpZ2h0OjhweDt3aWR0aDo4cHg7cGFkZGluZzowO3JpZ2h0OjA7Ym9yZGVyLXJhZGl1czo1MCV9LmVsLWJhZGdlX19jb250ZW50LS1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6IzQwOUVGRn0uZWwtYmFkZ2VfX2NvbnRlbnQtLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNjdDMjNBfS5lbC1iYWRnZV9fY29udGVudC0td2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNFNkEyM0N9LmVsLWJhZGdlX19jb250ZW50LS1pbmZve2JhY2tncm91bmQtY29sb3I6IzkwOTM5OX0uZWwtYmFkZ2VfX2NvbnRlbnQtLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNGNTZDNkN9LmVsLWNhcmR7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCAjRUJFRUY1O2JhY2tncm91bmQtY29sb3I6I0ZGRjtvdmVyZmxvdzpoaWRkZW47Y29sb3I6IzMwMzEzMzt0cmFuc2l0aW9uOi4zc30uZWwtY2FyZC5pcy1hbHdheXMtc2hhZG93LC5lbC1jYXJkLmlzLWhvdmVyLXNoYWRvdzpmb2N1cywuZWwtY2FyZC5pcy1ob3Zlci1zaGFkb3c6aG92ZXJ7Ym94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSl9LmVsLWNhcmRfX2hlYWRlcntwYWRkaW5nOjE4cHggMjBweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRUJFRUY1O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtY2FyZF9fYm9keSwuZWwtbWFpbntwYWRkaW5nOjIwcHh9LmVsLXJhdGV7aGVpZ2h0OjIwcHg7bGluZS1oZWlnaHQ6MX0uZWwtcmF0ZTphY3RpdmUsLmVsLXJhdGU6Zm9jdXN7b3V0bGluZS13aWR0aDowfS5lbC1yYXRlX19pdGVte2ZvbnQtc2l6ZTowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtcmF0ZV9faWNvbntmb250LXNpemU6MThweDttYXJnaW4tcmlnaHQ6NnB4O2NvbG9yOiNDMEM0Q0M7dHJhbnNpdGlvbjouM3N9LmVsLXJhdGVfX2RlY2ltYWwsLmVsLXJhdGVfX2ljb24gLnBhdGgye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uZWwtcmF0ZV9faWNvbi5ob3Zlcnt0cmFuc2Zvcm06c2NhbGUoMS4xNSl9LmVsLXJhdGVfX2RlY2ltYWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVufS5lbC1zdGVwLmlzLXZlcnRpY2FsLC5lbC1zdGVwc3tkaXNwbGF5Oi1tcy1mbGV4Ym94fS5lbC1yYXRlX190ZXh0e2ZvbnQtc2l6ZToxNHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtc3RlcHN7ZGlzcGxheTpmbGV4fS5lbC1zdGVwcy0tc2ltcGxle3BhZGRpbmc6MTNweCA4JTtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kOiNGNUY3RkF9LmVsLXN0ZXBzLS1ob3Jpem9udGFse3doaXRlLXNwYWNlOm5vd3JhcH0uZWwtc3RlcHMtLXZlcnRpY2Fse2hlaWdodDoxMDAlO2ZsZXgtZmxvdzpjb2x1bW59LmVsLXN0ZXB7cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MX0uZWwtc3RlcDpsYXN0LW9mLXR5cGUgLmVsLXN0ZXBfX2xpbmV7ZGlzcGxheTpub25lfS5lbC1zdGVwOmxhc3Qtb2YtdHlwZS5pcy1mbGV4e2ZsZXgtYmFzaXM6YXV0byFpbXBvcnRhbnQ7ZmxleC1zaHJpbms6MDtmbGV4LWdyb3c6MH0uZWwtc3RlcDpsYXN0LW9mLXR5cGUgLmVsLXN0ZXBfX2Rlc2NyaXB0aW9uLC5lbC1zdGVwOmxhc3Qtb2YtdHlwZSAuZWwtc3RlcF9fbWFpbntwYWRkaW5nLXJpZ2h0OjB9LmVsLXN0ZXBfX2hlYWR7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0uZWwtc3RlcF9faGVhZC5pcy1wcm9jZXNze2NvbG9yOiMzMDMxMzM7Ym9yZGVyLWNvbG9yOiMzMDMxMzN9LmVsLXN0ZXBfX2hlYWQuaXMtd2FpdHtjb2xvcjojQzBDNENDO2JvcmRlci1jb2xvcjojQzBDNENDfS5lbC1zdGVwX19oZWFkLmlzLXN1Y2Nlc3N7Y29sb3I6IzY3QzIzQTtib3JkZXItY29sb3I6IzY3QzIzQX0uZWwtc3RlcF9faGVhZC5pcy1lcnJvcntjb2xvcjojRjU2QzZDO2JvcmRlci1jb2xvcjojRjU2QzZDfS5lbC1zdGVwX19oZWFkLmlzLWZpbmlzaHtjb2xvcjojNDA5RUZGO2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1zdGVwX19pY29ue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7Zm9udC1zaXplOjE0cHg7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQ6I0ZGRjt0cmFuc2l0aW9uOi4xNXMgZWFzZS1vdXR9LmVsLXN0ZXAuaXMtaG9yaXpvbnRhbCwuZWwtc3RlcF9faWNvbi1pbm5lcntkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtc3RlcF9faWNvbi5pcy10ZXh0e2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoycHggc29saWQ7Ym9yZGVyLWNvbG9yOmluaGVyaXR9LmVsLXN0ZXBfX2ljb24uaXMtaWNvbnt3aWR0aDo0MHB4fS5lbC1zdGVwX19pY29uLWlubmVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MTtjb2xvcjppbmhlcml0fS5lbC1zdGVwX19pY29uLWlubmVyW2NsYXNzKj1lbC1pY29uXTpub3QoLmlzLXN0YXR1cyl7Zm9udC1zaXplOjI1cHg7Zm9udC13ZWlnaHQ6NDAwfS5lbC1zdGVwX19pY29uLWlubmVyLmlzLXN0YXR1c3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgxcHgpfS5lbC1zdGVwX19saW5le3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1jb2xvcjppbmhlcml0O2JhY2tncm91bmQtY29sb3I6I0MwQzRDQ30uZWwtc3RlcF9fbGluZS1pbm5lcntkaXNwbGF5OmJsb2NrO2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjppbmhlcml0O3RyYW5zaXRpb246LjE1cyBlYXNlLW91dDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MDtoZWlnaHQ6MH0uZWwtc3RlcF9fbWFpbnt3aGl0ZS1zcGFjZTpub3JtYWw7dGV4dC1hbGlnbjpsZWZ0fS5lbC1zdGVwX190aXRsZXtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDozOHB4fS5lbC1zdGVwX190aXRsZS5pcy1wcm9jZXNze2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMzAzMTMzfS5lbC1zdGVwX190aXRsZS5pcy13YWl0e2NvbG9yOiNDMEM0Q0N9LmVsLXN0ZXBfX3RpdGxlLmlzLXN1Y2Nlc3N7Y29sb3I6IzY3QzIzQX0uZWwtc3RlcF9fdGl0bGUuaXMtZXJyb3J7Y29sb3I6I0Y1NkM2Q30uZWwtc3RlcF9fdGl0bGUuaXMtZmluaXNoe2NvbG9yOiM0MDlFRkZ9LmVsLXN0ZXBfX2Rlc2NyaXB0aW9ue3BhZGRpbmctcmlnaHQ6MTAlO21hcmdpbi10b3A6LTVweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OjQwMH0uZWwtc3RlcF9fZGVzY3JpcHRpb24uaXMtcHJvY2Vzc3tjb2xvcjojMzAzMTMzfS5lbC1zdGVwX19kZXNjcmlwdGlvbi5pcy13YWl0e2NvbG9yOiNDMEM0Q0N9LmVsLXN0ZXBfX2Rlc2NyaXB0aW9uLmlzLXN1Y2Nlc3N7Y29sb3I6IzY3QzIzQX0uZWwtc3RlcF9fZGVzY3JpcHRpb24uaXMtZXJyb3J7Y29sb3I6I0Y1NkM2Q30uZWwtc3RlcF9fZGVzY3JpcHRpb24uaXMtZmluaXNoe2NvbG9yOiM0MDlFRkZ9LmVsLXN0ZXAuaXMtaG9yaXpvbnRhbCAuZWwtc3RlcF9fbGluZXtoZWlnaHQ6MnB4O3RvcDoxMXB4O2xlZnQ6MDtyaWdodDowfS5lbC1zdGVwLmlzLXZlcnRpY2Fse2Rpc3BsYXk6ZmxleH0uZWwtc3RlcC5pcy12ZXJ0aWNhbCAuZWwtc3RlcF9faGVhZHtmbGV4LWdyb3c6MDt3aWR0aDoyNHB4fS5lbC1zdGVwLmlzLXZlcnRpY2FsIC5lbC1zdGVwX19tYWlue3BhZGRpbmctbGVmdDoxMHB4O2ZsZXgtZ3JvdzoxfS5lbC1zdGVwLmlzLXZlcnRpY2FsIC5lbC1zdGVwX190aXRsZXtsaW5lLWhlaWdodDoyNHB4O3BhZGRpbmctYm90dG9tOjhweH0uZWwtc3RlcC5pcy12ZXJ0aWNhbCAuZWwtc3RlcF9fbGluZXt3aWR0aDoycHg7dG9wOjA7Ym90dG9tOjA7bGVmdDoxMXB4fS5lbC1zdGVwLmlzLXZlcnRpY2FsIC5lbC1zdGVwX19pY29uLmlzLWljb257d2lkdGg6MjRweH0uZWwtc3RlcC5pcy1jZW50ZXIgLmVsLXN0ZXBfX2hlYWQsLmVsLXN0ZXAuaXMtY2VudGVyIC5lbC1zdGVwX19tYWlue3RleHQtYWxpZ246Y2VudGVyfS5lbC1zdGVwLmlzLWNlbnRlciAuZWwtc3RlcF9fZGVzY3JpcHRpb257cGFkZGluZy1sZWZ0OjIwJTtwYWRkaW5nLXJpZ2h0OjIwJX0uZWwtc3RlcC5pcy1jZW50ZXIgLmVsLXN0ZXBfX2xpbmV7bGVmdDo1MCU7cmlnaHQ6LTUwJX0uZWwtc3RlcC5pcy1zaW1wbGV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uZWwtc3RlcC5pcy1zaW1wbGUgLmVsLXN0ZXBfX2hlYWR7d2lkdGg6YXV0bztmb250LXNpemU6MDtwYWRkaW5nLXJpZ2h0OjEwcHh9LmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX19pY29ue2JhY2tncm91bmQ6MCAwO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Zm9udC1zaXplOjEycHh9LmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX19pY29uLWlubmVyW2NsYXNzKj1lbC1pY29uXTpub3QoLmlzLXN0YXR1cyl7Zm9udC1zaXplOjE4cHh9LmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX19pY29uLWlubmVyLmlzLXN0YXR1c3t0cmFuc2Zvcm06c2NhbGUoLjgpIHRyYW5zbGF0ZVkoMXB4KX0uZWwtc3RlcC5pcy1zaW1wbGUgLmVsLXN0ZXBfX21haW57cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOnN0cmV0Y2g7ZmxleC1ncm93OjF9LmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX190aXRsZXtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyMHB4fS5lbC1zdGVwLmlzLXNpbXBsZTpub3QoOmxhc3Qtb2YtdHlwZSkgLmVsLXN0ZXBfX3RpdGxle21heC13aWR0aDo1MCU7d29yZC1icmVhazpicmVhay1hbGx9LmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX19hcnJvd3tmbGV4LWdyb3c6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX19hcnJvdzo6YWZ0ZXIsLmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX19hcnJvdzo6YmVmb3Jle2NvbnRlbnQ6Jyc7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjE1cHg7d2lkdGg6MXB4O2JhY2tncm91bmQ6I0MwQzRDQ30uZWwtc3RlcC5pcy1zaW1wbGUgLmVsLXN0ZXBfX2Fycm93OjpiZWZvcmV7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHRyYW5zbGF0ZVkoLTRweCk7dHJhbnNmb3JtLW9yaWdpbjowIDB9LmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX19hcnJvdzo6YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSg0cHgpO3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfS5lbC1zdGVwLmlzLXNpbXBsZTpsYXN0LW9mLXR5cGUgLmVsLXN0ZXBfX2Fycm93e2Rpc3BsYXk6bm9uZX0uZWwtY2Fyb3VzZWx7cG9zaXRpb246cmVsYXRpdmV9LmVsLWNhcm91c2VsLS1ob3Jpem9udGFse292ZXJmbG93LXg6aGlkZGVufS5lbC1jYXJvdXNlbC0tdmVydGljYWx7b3ZlcmZsb3cteTpoaWRkZW59LmVsLWNhcm91c2VsX19jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjMwMHB4fS5lbC1jYXJvdXNlbF9fYXJyb3d7Ym9yZGVyOm5vbmU7b3V0bGluZTowO3BhZGRpbmc6MDttYXJnaW46MDtoZWlnaHQ6MzZweDt3aWR0aDozNnB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246LjNzO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6cmdiYSgzMSw0NSw2MSwuMTEpO2NvbG9yOiNGRkY7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt6LWluZGV4OjEwO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMnB4fS5lbC1jYXJvdXNlbF9fYXJyb3ctLWxlZnR7bGVmdDoxNnB4fS5lbC1jYXJvdXNlbF9fYXJyb3c6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDMxLDQ1LDYxLC4yMyl9LmVsLWNhcm91c2VsX19hcnJvdyBpe2N1cnNvcjpwb2ludGVyfS5lbC1jYXJvdXNlbF9faW5kaWNhdG9yc3twb3NpdGlvbjphYnNvbHV0ZTtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO3otaW5kZXg6Mn0uZWwtY2Fyb3VzZWxfX2luZGljYXRvcnMtLWhvcml6b250YWx7Ym90dG9tOjA7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSl9LmVsLWNhcm91c2VsX19pbmRpY2F0b3JzLS12ZXJ0aWNhbHtyaWdodDowO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmVsLWNhcm91c2VsX19pbmRpY2F0b3JzLS1vdXRzaWRle2JvdHRvbToyNnB4O3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOnN0YXRpYzt0cmFuc2Zvcm06bm9uZX0uZWwtY2Fyb3VzZWxfX2luZGljYXRvcnMtLW91dHNpZGUgLmVsLWNhcm91c2VsX19pbmRpY2F0b3I6aG92ZXIgYnV0dG9ue29wYWNpdHk6LjY0fS5lbC1jYXJvdXNlbF9faW5kaWNhdG9ycy0tb3V0c2lkZSBidXR0b257YmFja2dyb3VuZC1jb2xvcjojQzBDNENDO29wYWNpdHk6LjI0fS5lbC1jYXJvdXNlbF9faW5kaWNhdG9ycy0tbGFiZWxze2xlZnQ6MDtyaWdodDowO3RyYW5zZm9ybTpub25lO3RleHQtYWxpZ246Y2VudGVyfS5lbC1jYXJvdXNlbF9faW5kaWNhdG9ycy0tbGFiZWxzIC5lbC1jYXJvdXNlbF9fYnV0dG9ue2hlaWdodDphdXRvO3dpZHRoOmF1dG87cGFkZGluZzoycHggMThweDtmb250LXNpemU6MTJweH0uZWwtY2Fyb3VzZWxfX2luZGljYXRvcnMtLWxhYmVscyAuZWwtY2Fyb3VzZWxfX2luZGljYXRvcntwYWRkaW5nOjZweCA0cHh9LmVsLWNhcm91c2VsX19pbmRpY2F0b3J7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjdXJzb3I6cG9pbnRlcn0uZWwtY2Fyb3VzZWxfX2luZGljYXRvcjpob3ZlciBidXR0b257b3BhY2l0eTouNzJ9LmVsLWNhcm91c2VsX19pbmRpY2F0b3ItLWhvcml6b250YWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzoxMnB4IDRweH0uZWwtY2Fyb3VzZWxfX2luZGljYXRvci0tdmVydGljYWx7cGFkZGluZzo0cHggMTJweH0uZWwtY2Fyb3VzZWxfX2luZGljYXRvci0tdmVydGljYWwgLmVsLWNhcm91c2VsX19idXR0b257d2lkdGg6MnB4O2hlaWdodDoxNXB4fS5lbC1jYXJvdXNlbF9faW5kaWNhdG9yLmlzLWFjdGl2ZSBidXR0b257b3BhY2l0eToxfS5lbC1jYXJvdXNlbF9fYnV0dG9ue2Rpc3BsYXk6YmxvY2s7b3BhY2l0eTouNDg7d2lkdGg6MzBweDtoZWlnaHQ6MnB4O2JhY2tncm91bmQtY29sb3I6I0ZGRjtib3JkZXI6bm9uZTtvdXRsaW5lOjA7cGFkZGluZzowO21hcmdpbjowO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246LjNzfS5lbC1jYXJvdXNlbF9faXRlbSwuZWwtY2Fyb3VzZWxfX21hc2t7aGVpZ2h0OjEwMCU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jYXJvdXNlbC1hcnJvdy1sZWZ0LWVudGVyLC5jYXJvdXNlbC1hcnJvdy1sZWZ0LWxlYXZlLWFjdGl2ZXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC0xMHB4KTtvcGFjaXR5OjB9LmNhcm91c2VsLWFycm93LXJpZ2h0LWVudGVyLC5jYXJvdXNlbC1hcnJvdy1yaWdodC1sZWF2ZS1hY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgxMHB4KTtvcGFjaXR5OjB9LmVsLWNhcm91c2VsX19pdGVte3dpZHRoOjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MH0uZWwtY2Fyb3VzZWxfX2l0ZW0uaXMtYWN0aXZle3otaW5kZXg6Mn0uZWwtY2Fyb3VzZWxfX2l0ZW0uaXMtYW5pbWF0aW5ne3RyYW5zaXRpb246dHJhbnNmb3JtIC40cyBlYXNlLWluLW91dH0uZWwtY2Fyb3VzZWxfX2l0ZW0tLWNhcmR7d2lkdGg6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIC40cyBlYXNlLWluLW91dH0uZWwtY2Fyb3VzZWxfX2l0ZW0tLWNhcmQuaXMtaW4tc3RhZ2V7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoxfS5lbC1jYXJvdXNlbF9faXRlbS0tY2FyZC5pcy1pbi1zdGFnZS5pcy1ob3ZlciAuZWwtY2Fyb3VzZWxfX21hc2ssLmVsLWNhcm91c2VsX19pdGVtLS1jYXJkLmlzLWluLXN0YWdlOmhvdmVyIC5lbC1jYXJvdXNlbF9fbWFza3tvcGFjaXR5Oi4xMn0uZWwtY2Fyb3VzZWxfX2l0ZW0tLWNhcmQuaXMtYWN0aXZle3otaW5kZXg6Mn0uZWwtY2Fyb3VzZWxfX21hc2t7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7b3BhY2l0eTouMjQ7dHJhbnNpdGlvbjouMnN9LmZhZGUtaW4tbGluZWFyLWVudGVyLWFjdGl2ZSwuZmFkZS1pbi1saW5lYXItbGVhdmUtYWN0aXZle3RyYW5zaXRpb246b3BhY2l0eSAuMnMgbGluZWFyfS5mYWRlLWluLWxpbmVhci1lbnRlciwuZmFkZS1pbi1saW5lYXItbGVhdmUsLmZhZGUtaW4tbGluZWFyLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjB9LmVsLWZhZGUtaW4tbGluZWFyLWVudGVyLWFjdGl2ZSwuZWwtZmFkZS1pbi1saW5lYXItbGVhdmUtYWN0aXZle3RyYW5zaXRpb246b3BhY2l0eSAuMnMgbGluZWFyfS5lbC1mYWRlLWluLWxpbmVhci1lbnRlciwuZWwtZmFkZS1pbi1saW5lYXItbGVhdmUsLmVsLWZhZGUtaW4tbGluZWFyLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjB9LmVsLWZhZGUtaW4tZW50ZXItYWN0aXZlLC5lbC1mYWRlLWluLWxlYXZlLWFjdGl2ZXt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC41NSwwLC4xLDEpfS5lbC1mYWRlLWluLWVudGVyLC5lbC1mYWRlLWluLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjB9LmVsLXpvb20taW4tY2VudGVyLWVudGVyLWFjdGl2ZSwuZWwtem9vbS1pbi1jZW50ZXItbGVhdmUtYWN0aXZle3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjU1LDAsLjEsMSl9LmVsLXpvb20taW4tY2VudGVyLWVudGVyLC5lbC16b29tLWluLWNlbnRlci1sZWF2ZS1hY3RpdmV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoMCl9LmVsLXpvb20taW4tdG9wLWVudGVyLWFjdGl2ZSwuZWwtem9vbS1pbi10b3AtbGVhdmUtYWN0aXZle29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGVZKDEpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpLG9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgdG9wfS5lbC16b29tLWluLXRvcC1lbnRlciwuZWwtem9vbS1pbi10b3AtbGVhdmUtYWN0aXZle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGVZKDApfS5lbC16b29tLWluLWJvdHRvbS1lbnRlci1hY3RpdmUsLmVsLXpvb20taW4tYm90dG9tLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWSgxKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKSxvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGJvdHRvbX0uZWwtem9vbS1pbi1ib3R0b20tZW50ZXIsLmVsLXpvb20taW4tYm90dG9tLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWSgwKX0uZWwtem9vbS1pbi1sZWZ0LWVudGVyLWFjdGl2ZSwuZWwtem9vbS1pbi1sZWZ0LWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSksb3BhY2l0eSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTt0cmFuc2Zvcm0tb3JpZ2luOnRvcCBsZWZ0fS5lbC16b29tLWluLWxlZnQtZW50ZXIsLmVsLXpvb20taW4tbGVmdC1sZWF2ZS1hY3RpdmV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguNDUsLjQ1KX0uY29sbGFwc2UtdHJhbnNpdGlvbnt0cmFuc2l0aW9uOi4zcyBoZWlnaHQgZWFzZS1pbi1vdXQsLjNzIHBhZGRpbmctdG9wIGVhc2UtaW4tb3V0LC4zcyBwYWRkaW5nLWJvdHRvbSBlYXNlLWluLW91dH0uaG9yaXpvbnRhbC1jb2xsYXBzZS10cmFuc2l0aW9ue3RyYW5zaXRpb246LjNzIHdpZHRoIGVhc2UtaW4tb3V0LC4zcyBwYWRkaW5nLWxlZnQgZWFzZS1pbi1vdXQsLjNzIHBhZGRpbmctcmlnaHQgZWFzZS1pbi1vdXR9LmVsLWxpc3QtZW50ZXItYWN0aXZlLC5lbC1saXN0LWxlYXZlLWFjdGl2ZXt0cmFuc2l0aW9uOmFsbCAxc30uZWwtbGlzdC1lbnRlciwuZWwtbGlzdC1sZWF2ZS1hY3RpdmV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0zMHB4KX0uZWwtb3BhY2l0eS10cmFuc2l0aW9ue3RyYW5zaXRpb246b3BhY2l0eSAuM3MgY3ViaWMtYmV6aWVyKC41NSwwLC4xLDEpfS5lbC1jb2xsYXBzZXtib3JkZXItdG9wOjFweCBzb2xpZCAjRUJFRUY1O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFQkVFRjV9LmVsLWNvbGxhcHNlLWl0ZW0uaXMtZGlzYWJsZWQgLmVsLWNvbGxhcHNlLWl0ZW1fX2hlYWRlcntjb2xvcjojYmJiO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtY29sbGFwc2UtaXRlbV9faGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjQ4cHg7bGluZS1oZWlnaHQ6NDhweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Y29sb3I6IzMwMzEzMztjdXJzb3I6cG9pbnRlcjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRUJFRUY1O2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjUwMDt0cmFuc2l0aW9uOmJvcmRlci1ib3R0b20tY29sb3IgLjNzO291dGxpbmU6MH0uZWwtY29sbGFwc2UtaXRlbV9fYXJyb3d7bWFyZ2luOjAgOHB4IDAgYXV0bzt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7Zm9udC13ZWlnaHQ6MzAwfS5lbC1jb2xsYXBzZS1pdGVtX19hcnJvdy5pcy1hY3RpdmV7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LmVsLWNvbGxhcHNlLWl0ZW1fX2hlYWRlci5mb2N1c2luZzpmb2N1czpub3QoOmhvdmVyKXtjb2xvcjojNDA5RUZGfS5lbC1jb2xsYXBzZS1pdGVtX19oZWFkZXIuaXMtYWN0aXZle2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnR9LmVsLWNvbGxhcHNlLWl0ZW1fX3dyYXB7d2lsbC1jaGFuZ2U6aGVpZ2h0O2JhY2tncm91bmQtY29sb3I6I0ZGRjtvdmVyZmxvdzpoaWRkZW47Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFQkVFRjV9LmVsLWNhc2NhZGVyX19zZWFyY2gtaW5wdXQsLmVsLWNhc2NhZGVyX190YWdzLC5lbC10YWd7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWNvbGxhcHNlLWl0ZW1fX2NvbnRlbnR7cGFkZGluZy1ib3R0b206MjVweDtmb250LXNpemU6MTNweDtjb2xvcjojMzAzMTMzO2xpbmUtaGVpZ2h0OjEuNzY5MjMwNzY5MjMwNzY5fS5lbC1jb2xsYXBzZS1pdGVtOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTotMXB4fS5lbC1wb3BwZXIgLnBvcHBlcl9fYXJyb3csLmVsLXBvcHBlciAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jazt3aWR0aDowO2hlaWdodDowO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWR9LmVsLWNhc2NhZGVyLC5lbC10YWd7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXBvcHBlciAucG9wcGVyX19hcnJvd3tib3JkZXItd2lkdGg6NnB4O2ZpbHRlcjpkcm9wLXNoYWRvdygwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgLjAzKSl9LmVsLXBvcHBlciAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7Y29udGVudDpcXFwiIFxcXCI7Ym9yZGVyLXdpZHRoOjZweH0uZWwtcG9wcGVyW3gtcGxhY2VtZW50Xj10b3Bde21hcmdpbi1ib3R0b206MTJweH0uZWwtcG9wcGVyW3gtcGxhY2VtZW50Xj10b3BdIC5wb3BwZXJfX2Fycm93e2JvdHRvbTotNnB4O2xlZnQ6NTAlO21hcmdpbi1yaWdodDozcHg7Ym9yZGVyLXRvcC1jb2xvcjojRUJFRUY1O2JvcmRlci1ib3R0b20td2lkdGg6MH0uZWwtcG9wcGVyW3gtcGxhY2VtZW50Xj10b3BdIC5wb3BwZXJfX2Fycm93OjphZnRlcntib3R0b206MXB4O21hcmdpbi1sZWZ0Oi02cHg7Ym9yZGVyLXRvcC1jb2xvcjojRkZGO2JvcmRlci1ib3R0b20td2lkdGg6MH0uZWwtcG9wcGVyW3gtcGxhY2VtZW50Xj1ib3R0b21de21hcmdpbi10b3A6MTJweH0uZWwtcG9wcGVyW3gtcGxhY2VtZW50Xj1ib3R0b21dIC5wb3BwZXJfX2Fycm93e3RvcDotNnB4O2xlZnQ6NTAlO21hcmdpbi1yaWdodDozcHg7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20tY29sb3I6I0VCRUVGNX0uZWwtcG9wcGVyW3gtcGxhY2VtZW50Xj1ib3R0b21dIC5wb3BwZXJfX2Fycm93OjphZnRlcnt0b3A6MXB4O21hcmdpbi1sZWZ0Oi02cHg7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20tY29sb3I6I0ZGRn0uZWwtcG9wcGVyW3gtcGxhY2VtZW50Xj1yaWdodF17bWFyZ2luLWxlZnQ6MTJweH0uZWwtcG9wcGVyW3gtcGxhY2VtZW50Xj1yaWdodF0gLnBvcHBlcl9fYXJyb3d7dG9wOjUwJTtsZWZ0Oi02cHg7bWFyZ2luLWJvdHRvbTozcHg7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNFQkVFRjU7Ym9yZGVyLWxlZnQtd2lkdGg6MH0uZWwtcG9wcGVyW3gtcGxhY2VtZW50Xj1yaWdodF0gLnBvcHBlcl9fYXJyb3c6OmFmdGVye2JvdHRvbTotNnB4O2xlZnQ6MXB4O2JvcmRlci1yaWdodC1jb2xvcjojRkZGO2JvcmRlci1sZWZ0LXdpZHRoOjB9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49bGVmdF17bWFyZ2luLXJpZ2h0OjEycHh9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49bGVmdF0gLnBvcHBlcl9fYXJyb3d7dG9wOjUwJTtyaWdodDotNnB4O21hcmdpbi1ib3R0b206M3B4O2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOiNFQkVFRjV9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49bGVmdF0gLnBvcHBlcl9fYXJyb3c6OmFmdGVye3JpZ2h0OjFweDtib3R0b206LTZweDttYXJnaW4tbGVmdDotNnB4O2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOiNGRkZ9LmVsLXRhZ3tiYWNrZ3JvdW5kLWNvbG9yOiNlY2Y1ZmY7Ym9yZGVyLWNvbG9yOiNkOWVjZmY7aGVpZ2h0OjMycHg7cGFkZGluZzowIDEwcHg7bGluZS1oZWlnaHQ6MzBweDtmb250LXNpemU6MTJweDtjb2xvcjojNDA5RUZGO2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aGl0ZS1zcGFjZTpub3dyYXB9LmVsLXRhZy5pcy1oaXR7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLXRhZyAuZWwtdGFnX19jbG9zZXtjb2xvcjojNDA5ZWZmfS5lbC10YWcgLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM0MDllZmZ9LmVsLXRhZy5lbC10YWctLWluZm97YmFja2dyb3VuZC1jb2xvcjojZjRmNGY1O2JvcmRlci1jb2xvcjojZTllOWViO2NvbG9yOiM5MDkzOTl9LmVsLXRhZy5lbC10YWctLWluZm8uaXMtaGl0e2JvcmRlci1jb2xvcjojOTA5Mzk5fS5lbC10YWcuZWwtdGFnLS1pbmZvIC5lbC10YWdfX2Nsb3Nle2NvbG9yOiM5MDkzOTl9LmVsLXRhZy5lbC10YWctLWluZm8gLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM5MDkzOTl9LmVsLXRhZy5lbC10YWctLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojZjBmOWViO2JvcmRlci1jb2xvcjojZTFmM2Q4O2NvbG9yOiM2N2MyM2F9LmVsLXRhZy5lbC10YWctLXN1Y2Nlc3MuaXMtaGl0e2JvcmRlci1jb2xvcjojNjdDMjNBfS5lbC10YWcuZWwtdGFnLS1zdWNjZXNzIC5lbC10YWdfX2Nsb3Nle2NvbG9yOiM2N2MyM2F9LmVsLXRhZy5lbC10YWctLXN1Y2Nlc3MgLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM2N2MyM2F9LmVsLXRhZy5lbC10YWctLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZmRmNmVjO2JvcmRlci1jb2xvcjojZmFlY2Q4O2NvbG9yOiNlNmEyM2N9LmVsLXRhZy5lbC10YWctLXdhcm5pbmcuaXMtaGl0e2JvcmRlci1jb2xvcjojRTZBMjNDfS5lbC10YWcuZWwtdGFnLS13YXJuaW5nIC5lbC10YWdfX2Nsb3Nle2NvbG9yOiNlNmEyM2N9LmVsLXRhZy5lbC10YWctLXdhcm5pbmcgLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNlNmEyM2N9LmVsLXRhZy5lbC10YWctLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZWYwZjA7Ym9yZGVyLWNvbG9yOiNmZGUyZTI7Y29sb3I6I2Y1NmM2Y30uZWwtdGFnLmVsLXRhZy0tZGFuZ2VyLmlzLWhpdHtib3JkZXItY29sb3I6I0Y1NkM2Q30uZWwtdGFnLmVsLXRhZy0tZGFuZ2VyIC5lbC10YWdfX2Nsb3Nle2NvbG9yOiNmNTZjNmN9LmVsLXRhZy5lbC10YWctLWRhbmdlciAuZWwtdGFnX19jbG9zZTpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6I2Y1NmM2Y30uZWwtdGFnIC5lbC1pY29uLWNsb3Nle2JvcmRlci1yYWRpdXM6NTAlO3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O2hlaWdodDoxNnB4O3dpZHRoOjE2cHg7bGluZS1oZWlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dG9wOi0xcHg7cmlnaHQ6LTVweH0uZWwtdGFnIC5lbC1pY29uLWNsb3NlOjpiZWZvcmV7ZGlzcGxheTpibG9ja30uZWwtdGFnLS1kYXJre2JhY2tncm91bmQtY29sb3I6IzQwOWVmZjtib3JkZXItY29sb3I6IzQwOWVmZjtjb2xvcjojZmZmfS5lbC10YWctLWRhcmsuaXMtaGl0e2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC10YWctLWRhcmsgLmVsLXRhZ19fY2xvc2V7Y29sb3I6I2ZmZn0uZWwtdGFnLS1kYXJrIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojNjZiMWZmfS5lbC10YWctLWRhcmsuZWwtdGFnLS1pbmZve2JhY2tncm91bmQtY29sb3I6IzkwOTM5OTtib3JkZXItY29sb3I6IzkwOTM5OTtjb2xvcjojZmZmfS5lbC10YWctLWRhcmsuZWwtdGFnLS1pbmZvLmlzLWhpdHtib3JkZXItY29sb3I6IzkwOTM5OX0uZWwtdGFnLS1kYXJrLmVsLXRhZy0taW5mbyAuZWwtdGFnX19jbG9zZXtjb2xvcjojZmZmfS5lbC10YWctLWRhcmsuZWwtdGFnLS1pbmZvIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojYTZhOWFkfS5lbC10YWctLWRhcmsuZWwtdGFnLS1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6IzY3YzIzYTtib3JkZXItY29sb3I6IzY3YzIzYTtjb2xvcjojZmZmfS5lbC10YWctLWRhcmsuZWwtdGFnLS1zdWNjZXNzLmlzLWhpdHtib3JkZXItY29sb3I6IzY3QzIzQX0uZWwtdGFnLS1kYXJrLmVsLXRhZy0tc3VjY2VzcyAuZWwtdGFnX19jbG9zZXtjb2xvcjojZmZmfS5lbC10YWctLWRhcmsuZWwtdGFnLS1zdWNjZXNzIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojODVjZTYxfS5lbC10YWctLWRhcmsuZWwtdGFnLS13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2U2YTIzYztib3JkZXItY29sb3I6I2U2YTIzYztjb2xvcjojZmZmfS5lbC10YWctLWRhcmsuZWwtdGFnLS13YXJuaW5nLmlzLWhpdHtib3JkZXItY29sb3I6I0U2QTIzQ30uZWwtdGFnLS1kYXJrLmVsLXRhZy0td2FybmluZyAuZWwtdGFnX19jbG9zZXtjb2xvcjojZmZmfS5lbC10YWctLWRhcmsuZWwtdGFnLS13YXJuaW5nIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojZWJiNTYzfS5lbC10YWctLWRhcmsuZWwtdGFnLS1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU2YzZjO2JvcmRlci1jb2xvcjojZjU2YzZjO2NvbG9yOiNmZmZ9LmVsLXRhZy0tZGFyay5lbC10YWctLWRhbmdlci5pcy1oaXR7Ym9yZGVyLWNvbG9yOiNGNTZDNkN9LmVsLXRhZy0tZGFyay5lbC10YWctLWRhbmdlciAuZWwtdGFnX19jbG9zZXtjb2xvcjojZmZmfS5lbC10YWctLWRhcmsuZWwtdGFnLS1kYW5nZXIgLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNmNzg5ODl9LmVsLXRhZy0tcGxhaW57YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojYjNkOGZmO2NvbG9yOiM0MDllZmZ9LmVsLXRhZy0tcGxhaW4uaXMtaGl0e2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC10YWctLXBsYWluIC5lbC10YWdfX2Nsb3Nle2NvbG9yOiM0MDllZmZ9LmVsLXRhZy0tcGxhaW4gLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM0MDllZmZ9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS1pbmZve2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2QzZDRkNjtjb2xvcjojOTA5Mzk5fS5lbC10YWctLXBsYWluLmVsLXRhZy0taW5mby5pcy1oaXR7Ym9yZGVyLWNvbG9yOiM5MDkzOTl9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS1pbmZvIC5lbC10YWdfX2Nsb3Nle2NvbG9yOiM5MDkzOTl9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS1pbmZvIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojOTA5Mzk5fS5lbC10YWctLXBsYWluLmVsLXRhZy0tc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNjMmU3YjA7Y29sb3I6IzY3YzIzYX0uZWwtdGFnLS1wbGFpbi5lbC10YWctLXN1Y2Nlc3MuaXMtaGl0e2JvcmRlci1jb2xvcjojNjdDMjNBfS5lbC10YWctLXBsYWluLmVsLXRhZy0tc3VjY2VzcyAuZWwtdGFnX19jbG9zZXtjb2xvcjojNjdjMjNhfS5lbC10YWctLXBsYWluLmVsLXRhZy0tc3VjY2VzcyAuZWwtdGFnX19jbG9zZTpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6IzY3YzIzYX0uZWwtdGFnLS1wbGFpbi5lbC10YWctLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZjVkYWIxO2NvbG9yOiNlNmEyM2N9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS13YXJuaW5nLmlzLWhpdHtib3JkZXItY29sb3I6I0U2QTIzQ30uZWwtdGFnLS1wbGFpbi5lbC10YWctLXdhcm5pbmcgLmVsLXRhZ19fY2xvc2V7Y29sb3I6I2U2YTIzY30uZWwtdGFnLS1wbGFpbi5lbC10YWctLXdhcm5pbmcgLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNlNmEyM2N9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZmJjNGM0O2NvbG9yOiNmNTZjNmN9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS1kYW5nZXIuaXMtaGl0e2JvcmRlci1jb2xvcjojRjU2QzZDfS5lbC10YWctLXBsYWluLmVsLXRhZy0tZGFuZ2VyIC5lbC10YWdfX2Nsb3Nle2NvbG9yOiNmNTZjNmN9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS1kYW5nZXIgLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNmNTZjNmN9LmVsLXRhZy0tbWVkaXVte2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI2cHh9LmVsLXRhZy0tbWVkaXVtIC5lbC1pY29uLWNsb3Nle3RyYW5zZm9ybTpzY2FsZSguOCl9LmVsLXRhZy0tc21hbGx7aGVpZ2h0OjI0cHg7cGFkZGluZzowIDhweDtsaW5lLWhlaWdodDoyMnB4fS5lbC10YWctLXNtYWxsIC5lbC1pY29uLWNsb3Nle3RyYW5zZm9ybTpzY2FsZSguOCl9LmVsLXRhZy0tbWluaXtoZWlnaHQ6MjBweDtwYWRkaW5nOjAgNXB4O2xpbmUtaGVpZ2h0OjE5cHh9LmVsLXRhZy0tbWluaSAuZWwtaWNvbi1jbG9zZXttYXJnaW4tbGVmdDotM3B4O3RyYW5zZm9ybTpzY2FsZSguNyl9LmVsLWNhc2NhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjQwcHh9LmVsLWNhc2NhZGVyOm5vdCguaXMtZGlzYWJsZWQpOmhvdmVyIC5lbC1pbnB1dF9faW5uZXJ7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLWNvbG9yOiNDMEM0Q0N9LmVsLWNhc2NhZGVyIC5lbC1pbnB1dCAuZWwtaW5wdXRfX2lubmVyOmZvY3VzLC5lbC1jYXNjYWRlciAuZWwtaW5wdXQuaXMtZm9jdXMgLmVsLWlucHV0X19pbm5lcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtY2FzY2FkZXIgLmVsLWlucHV0e2N1cnNvcjpwb2ludGVyfS5lbC1jYXNjYWRlciAuZWwtaW5wdXQgLmVsLWlucHV0X19pbm5lcnt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5lbC1jYXNjYWRlciAuZWwtaW5wdXQgLmVsLWljb24tYXJyb3ctZG93bnt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7Zm9udC1zaXplOjE0cHh9LmVsLWNhc2NhZGVyIC5lbC1pbnB1dCAuZWwtaWNvbi1hcnJvdy1kb3duLmlzLXJldmVyc2V7dHJhbnNmb3JtOnJvdGF0ZVooMTgwZGVnKX0uZWwtY2FzY2FkZXIgLmVsLWlucHV0IC5lbC1pY29uLWNpcmNsZS1jbG9zZTpob3Zlcntjb2xvcjojOTA5Mzk5fS5lbC1jYXNjYWRlci0tbWVkaXVte2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjM2cHh9LmVsLWNhc2NhZGVyLS1zbWFsbHtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDozMnB4fS5lbC1jYXNjYWRlci0tbWluaXtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoyOHB4fS5lbC1jYXNjYWRlci5pcy1kaXNhYmxlZCAuZWwtY2FzY2FkZXJfX2xhYmVse3otaW5kZXg6Mjtjb2xvcjojQzBDNENDfS5lbC1jYXNjYWRlcl9fZHJvcGRvd257bWFyZ2luOjVweCAwO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQ6I0ZGRjtib3JkZXI6MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSl9LmVsLWNhc2NhZGVyX190YWdze3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDozMHB4O3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2xpbmUtaGVpZ2h0Om5vcm1hbDt0ZXh0LWFsaWduOmxlZnQ7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1jYXNjYWRlcl9fdGFncyAuZWwtdGFne2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO21heC13aWR0aDoxMDAlO21hcmdpbjoycHggMCAycHggNnB4O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7YmFja2dyb3VuZDojZjBmMmY1fS5lbC1jYXNjYWRlcl9fdGFncyAuZWwtdGFnOm5vdCguaXMtaGl0KXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LmVsLWNhc2NhZGVyX190YWdzIC5lbC10YWc+c3BhbntmbGV4OjE7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmVsLWNhc2NhZGVyX190YWdzIC5lbC10YWcgLmVsLWljb24tY2xvc2V7ZmxleDpub25lO2JhY2tncm91bmQtY29sb3I6I0MwQzRDQztjb2xvcjojRkZGfS5lbC1jYXNjYWRlcl9fdGFncyAuZWwtdGFnIC5lbC1pY29uLWNsb3NlOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzkwOTM5OX0uZWwtY2FzY2FkZXJfX3N1Z2dlc3Rpb24tcGFuZWx7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLWNhc2NhZGVyX19zdWdnZXN0aW9uLWxpc3R7bWF4LWhlaWdodDoyMDRweDttYXJnaW46MDtwYWRkaW5nOjZweCAwO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM2MDYyNjY7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLWNhc2NhZGVyX19zdWdnZXN0aW9uLWl0ZW17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MzRweDtwYWRkaW5nOjAgMTVweDt0ZXh0LWFsaWduOmxlZnQ7b3V0bGluZTowO2N1cnNvcjpwb2ludGVyfS5lbC1jYXNjYWRlcl9fc3VnZ2VzdGlvbi1pdGVtOmZvY3VzLC5lbC1jYXNjYWRlcl9fc3VnZ2VzdGlvbi1pdGVtOmhvdmVye2JhY2tncm91bmQ6I0Y1RjdGQX0uZWwtY2FzY2FkZXJfX3N1Z2dlc3Rpb24taXRlbS5pcy1jaGVja2Vke2NvbG9yOiM0MDlFRkY7Zm9udC13ZWlnaHQ6NzAwfS5lbC1jYXNjYWRlcl9fc3VnZ2VzdGlvbi1pdGVtPnNwYW57bWFyZ2luLXJpZ2h0OjEwcHh9LmVsLWNhc2NhZGVyX19lbXB0eS10ZXh0e21hcmdpbjoxMHB4IDA7Y29sb3I6I0MwQzRDQ30uZWwtY2FzY2FkZXJfX3NlYXJjaC1pbnB1dHtmbGV4OjE7aGVpZ2h0OjI0cHg7bWluLXdpZHRoOjYwcHg7bWFyZ2luOjJweCAwIDJweCAxNXB4O3BhZGRpbmc6MDtjb2xvcjojNjA2MjY2O2JvcmRlcjpub25lO291dGxpbmU6MDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWNhc2NhZGVyX19zZWFyY2gtaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtY2FzY2FkZXJfX3NlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtY29sb3ItcHJlZGVmaW5le2Rpc3BsYXk6ZmxleDtmb250LXNpemU6MTJweDttYXJnaW4tdG9wOjhweDt3aWR0aDoyODBweH0uZWwtY29sb3ItcHJlZGVmaW5lX19jb2xvcnN7ZGlzcGxheTpmbGV4O2ZsZXg6MTtmbGV4LXdyYXA6d3JhcH0uZWwtY29sb3ItcHJlZGVmaW5lX19jb2xvci1zZWxlY3RvcnttYXJnaW46MCAwIDhweCA4cHg7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjRweDtjdXJzb3I6cG9pbnRlcn0uZWwtY29sb3ItcHJlZGVmaW5lX19jb2xvci1zZWxlY3RvcjpudGgtY2hpbGQoMTBuKzEpe21hcmdpbi1sZWZ0OjB9LmVsLWNvbG9yLXByZWRlZmluZV9fY29sb3Itc2VsZWN0b3Iuc2VsZWN0ZWR7Ym94LXNoYWRvdzowIDAgM3B4IDJweCAjNDA5RUZGfS5lbC1jb2xvci1wcmVkZWZpbmVfX2NvbG9yLXNlbGVjdG9yPmRpdntkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czozcHh9LmVsLWNvbG9yLXByZWRlZmluZV9fY29sb3Itc2VsZWN0b3IuaXMtYWxwaGF7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBd0FBQUFNQ0FJQUFBRFpGOHV3QUFBQUdVbEVRVlFZVjJNNGd3SCtZd0NHSWFzSVV3aFQyNUJWQkFEdHpZTllySHZ2NGdBQUFBQkpSVTVFcmtKZ2dnPT0pfS5lbC1jb2xvci1odWUtc2xpZGVye3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoyODBweDtoZWlnaHQ6MTJweDtiYWNrZ3JvdW5kLWNvbG9yOnJlZDtwYWRkaW5nOjAgMnB4fS5lbC1jb2xvci1odWUtc2xpZGVyX19iYXJ7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQscmVkIDAsI2ZmMCAxNyUsIzBmMCAzMyUsIzBmZiA1MCUsIzAwZiA2NyUsI2YwZiA4MyUscmVkIDEwMCUpO2hlaWdodDoxMDAlfS5lbC1jb2xvci1odWUtc2xpZGVyX190aHVtYntwb3NpdGlvbjphYnNvbHV0ZTtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bGVmdDowO3RvcDowO3dpZHRoOjRweDtoZWlnaHQ6MTAwJTtib3JkZXItcmFkaXVzOjFweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZjBmMGYwO2JveC1zaGFkb3c6MCAwIDJweCByZ2JhKDAsMCwwLC42KTt6LWluZGV4OjF9LmVsLWNvbG9yLWh1ZS1zbGlkZXIuaXMtdmVydGljYWx7d2lkdGg6MTJweDtoZWlnaHQ6MTgwcHg7cGFkZGluZzoycHggMH0uZWwtY29sb3ItaHVlLXNsaWRlci5pcy12ZXJ0aWNhbCAuZWwtY29sb3ItaHVlLXNsaWRlcl9fYmFye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxyZWQgMCwjZmYwIDE3JSwjMGYwIDMzJSwjMGZmIDUwJSwjMDBmIDY3JSwjZjBmIDgzJSxyZWQgMTAwJSl9LmVsLWNvbG9yLWh1ZS1zbGlkZXIuaXMtdmVydGljYWwgLmVsLWNvbG9yLWh1ZS1zbGlkZXJfX3RodW1ie2xlZnQ6MDt0b3A6MDt3aWR0aDoxMDAlO2hlaWdodDo0cHh9LmVsLWNvbG9yLXN2cGFuZWx7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MjgwcHg7aGVpZ2h0OjE4MHB4fS5lbC1jb2xvci1zdnBhbmVsX19ibGFjaywuZWwtY29sb3Itc3ZwYW5lbF9fd2hpdGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjB9LmVsLWNvbG9yLXN2cGFuZWxfX3doaXRle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCNmZmYscmdiYSgyNTUsMjU1LDI1NSwwKSl9LmVsLWNvbG9yLXN2cGFuZWxfX2JsYWNre2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHRvcCwjMDAwLHJnYmEoMCwwLDAsMCkpfS5lbC1jb2xvci1zdnBhbmVsX19jdXJzb3J7cG9zaXRpb246YWJzb2x1dGV9LmVsLWNvbG9yLXN2cGFuZWxfX2N1cnNvcj5kaXZ7Y3Vyc29yOmhlYWQ7d2lkdGg6NHB4O2hlaWdodDo0cHg7Ym94LXNoYWRvdzowIDAgMCAxLjVweCAjZmZmLGluc2V0IDAgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjMpLDAgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjQpO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTJweCwtMnB4KX0uZWwtY29sb3ItYWxwaGEtc2xpZGVye3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoyODBweDtoZWlnaHQ6MTJweDtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUF3QUFBQU1DQUlBQUFEWkY4dXdBQUFBR1VsRVFWUVlWMk00Z3dIK1l3Q0dJYXNJVXdoVDI1QlZCQUR0ellOWXJIdnY0Z0FBQUFCSlJVNUVya0pnZ2c9PSl9LmVsLWNvbG9yLWFscGhhLXNsaWRlcl9fYmFye3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHJnYmEoMjU1LDI1NSwyNTUsMCkgMCwjZmZmIDEwMCUpO2hlaWdodDoxMDAlfS5lbC1jb2xvci1hbHBoYS1zbGlkZXJfX3RodW1ie3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtsZWZ0OjA7dG9wOjA7d2lkdGg6NHB4O2hlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6MXB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNmMGYwZjA7Ym94LXNoYWRvdzowIDAgMnB4IHJnYmEoMCwwLDAsLjYpO3otaW5kZXg6MX0uZWwtY29sb3ItYWxwaGEtc2xpZGVyLmlzLXZlcnRpY2Fse3dpZHRoOjIwcHg7aGVpZ2h0OjE4MHB4fS5lbC1jb2xvci1hbHBoYS1zbGlkZXIuaXMtdmVydGljYWwgLmVsLWNvbG9yLWFscGhhLXNsaWRlcl9fYmFye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxyZ2JhKDI1NSwyNTUsMjU1LDApIDAsI2ZmZiAxMDAlKX0uZWwtY29sb3ItYWxwaGEtc2xpZGVyLmlzLXZlcnRpY2FsIC5lbC1jb2xvci1hbHBoYS1zbGlkZXJfX3RodW1ie2xlZnQ6MDt0b3A6MDt3aWR0aDoxMDAlO2hlaWdodDo0cHh9LmVsLWNvbG9yLWRyb3Bkb3due3dpZHRoOjMwMHB4fS5lbC1jb2xvci1kcm9wZG93bl9fbWFpbi13cmFwcGVye21hcmdpbi1ib3R0b206NnB4fS5lbC1jb2xvci1kcm9wZG93bl9fbWFpbi13cmFwcGVyOjphZnRlcntkaXNwbGF5OnRhYmxlO2NsZWFyOmJvdGh9LmVsLWNvbG9yLWRyb3Bkb3duX19idG5ze21hcmdpbi10b3A6NnB4O3RleHQtYWxpZ246cmlnaHR9LmVsLWNvbG9yLWRyb3Bkb3duX192YWx1ZXtmbG9hdDpsZWZ0O2xpbmUtaGVpZ2h0OjI2cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6IzAwMDt3aWR0aDoxNjBweH0uZWwtY29sb3ItZHJvcGRvd25fX2J0bntib3JkZXI6MXB4IHNvbGlkICNkY2RjZGM7Y29sb3I6IzMzMztsaW5lLWhlaWdodDoyNHB4O2JvcmRlci1yYWRpdXM6MnB4O3BhZGRpbmc6MCAyMHB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7b3V0bGluZTowO2ZvbnQtc2l6ZToxMnB4fS5lbC1jb2xvci1kcm9wZG93bl9fYnRuW2Rpc2FibGVkXXtjb2xvcjojY2NjO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtY29sb3ItZHJvcGRvd25fX2J0bjpob3Zlcntjb2xvcjojNDA5RUZGO2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1jb2xvci1kcm9wZG93bl9fbGluay1idG57Y3Vyc29yOnBvaW50ZXI7Y29sb3I6IzQwOUVGRjt0ZXh0LWRlY29yYXRpb246bm9uZTtwYWRkaW5nOjE1cHg7Zm9udC1zaXplOjEycHh9LmVsLWNvbG9yLWRyb3Bkb3duX19saW5rLWJ0bjpob3Zlcntjb2xvcjp0aW50KCM0MDlFRkYsMjAlKX0uZWwtY29sb3ItcGlja2Vye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0Om5vcm1hbDtoZWlnaHQ6NDBweH0uZWwtY29sb3ItcGlja2VyLmlzLWRpc2FibGVkIC5lbC1jb2xvci1waWNrZXJfX3RyaWdnZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1jb2xvci1waWNrZXItLW1lZGl1bXtoZWlnaHQ6MzZweH0uZWwtY29sb3ItcGlja2VyLS1tZWRpdW0gLmVsLWNvbG9yLXBpY2tlcl9fdHJpZ2dlcntoZWlnaHQ6MzZweDt3aWR0aDozNnB4fS5lbC1jb2xvci1waWNrZXItLW1lZGl1bSAuZWwtY29sb3ItcGlja2VyX19tYXNre2hlaWdodDozNHB4O3dpZHRoOjM0cHh9LmVsLWNvbG9yLXBpY2tlci0tc21hbGx7aGVpZ2h0OjMycHh9LmVsLWNvbG9yLXBpY2tlci0tc21hbGwgLmVsLWNvbG9yLXBpY2tlcl9fdHJpZ2dlcntoZWlnaHQ6MzJweDt3aWR0aDozMnB4fS5lbC1jb2xvci1waWNrZXItLXNtYWxsIC5lbC1jb2xvci1waWNrZXJfX21hc2t7aGVpZ2h0OjMwcHg7d2lkdGg6MzBweH0uZWwtY29sb3ItcGlja2VyLS1zbWFsbCAuZWwtY29sb3ItcGlja2VyX19lbXB0eSwuZWwtY29sb3ItcGlja2VyLS1zbWFsbCAuZWwtY29sb3ItcGlja2VyX19pY29ue3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtNTAlLC01MCUsMCkgc2NhbGUoLjgpfS5lbC1jb2xvci1waWNrZXItLW1pbml7aGVpZ2h0OjI4cHh9LmVsLWNvbG9yLXBpY2tlci0tbWluaSAuZWwtY29sb3ItcGlja2VyX190cmlnZ2Vye2hlaWdodDoyOHB4O3dpZHRoOjI4cHh9LmVsLWNvbG9yLXBpY2tlci0tbWluaSAuZWwtY29sb3ItcGlja2VyX19tYXNre2hlaWdodDoyNnB4O3dpZHRoOjI2cHh9LmVsLWNvbG9yLXBpY2tlci0tbWluaSAuZWwtY29sb3ItcGlja2VyX19lbXB0eSwuZWwtY29sb3ItcGlja2VyLS1taW5pIC5lbC1jb2xvci1waWNrZXJfX2ljb257dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKSBzY2FsZSguOCl9LmVsLWNvbG9yLXBpY2tlcl9fbWFza3toZWlnaHQ6MzhweDt3aWR0aDozOHB4O2JvcmRlci1yYWRpdXM6NHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxcHg7bGVmdDoxcHg7ei1pbmRleDoxO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5lbC1jb2xvci1waWNrZXJfX3RyaWdnZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7cGFkZGluZzo0cHg7Ym9yZGVyOjFweCBzb2xpZCAjZTZlNmU2O2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZTowO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyfS5lbC1jb2xvci1waWNrZXJfX2NvbG9ye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3JkZXItcmFkaXVzOjJweDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RleHQtYWxpZ246Y2VudGVyfS5lbC1jb2xvci1waWNrZXJfX2ljb24sLmVsLWlucHV0LC5lbC10ZXh0YXJlYXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlfS5lbC1jb2xvci1waWNrZXJfX2NvbG9yLmlzLWFscGhhe2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQXdBQUFBTUNBSUFBQURaRjh1d0FBQUFHVWxFUVZRWVYyTTRnd0grWXdDR0lhc0lVd2hUMjVCVkJBRHR6WU5Zckh2djRnQUFBQUJKUlU1RXJrSmdnZz09KX0uZWwtY29sb3ItcGlja2VyX19jb2xvci1pbm5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7cmlnaHQ6MDtib3R0b206MH0uZWwtY29sb3ItcGlja2VyX19lbXB0eXtmb250LXNpemU6MTJweDtjb2xvcjojOTk5O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKX0uZWwtY29sb3ItcGlja2VyX19pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKTtjb2xvcjojRkZGO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMnB4fS5lbC1pbnB1dF9fcHJlZml4LC5lbC1pbnB1dF9fc3VmZml4e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3RleHQtYWxpZ246Y2VudGVyfS5lbC1jb2xvci1waWNrZXJfX3BhbmVse3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA7cGFkZGluZzo2cHg7Ym94LXNpemluZzpjb250ZW50LWJveDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjRUJFRUY1O2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpfS5lbC1pbnB1dF9faW5uZXIsLmVsLXRleHRhcmVhX19pbm5lciwuZWwtdHJhbnNmZXItcGFuZWx7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXRleHRhcmVhe3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtmb250LXNpemU6MTRweH0uZWwtdGV4dGFyZWFfX2lubmVye2Rpc3BsYXk6YmxvY2s7cmVzaXplOnZlcnRpY2FsO3BhZGRpbmc6NXB4IDE1cHg7bGluZS1oZWlnaHQ6MS41O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZTppbmhlcml0O2NvbG9yOiM2MDYyNjY7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXI6MXB4IHNvbGlkICNEQ0RGRTY7Ym9yZGVyLXJhZGl1czo0cHg7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKX0uZWwtdGV4dGFyZWFfX2lubmVyOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLXRleHRhcmVhX19pbm5lcjo6cGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtdGV4dGFyZWFfX2lubmVyOmhvdmVye2JvcmRlci1jb2xvcjojQzBDNENDfS5lbC10ZXh0YXJlYV9faW5uZXI6Zm9jdXN7b3V0bGluZTowO2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC10ZXh0YXJlYSAuZWwtaW5wdXRfX2NvdW50e2NvbG9yOiM5MDkzOTk7YmFja2dyb3VuZDojRkZGO3Bvc2l0aW9uOmFic29sdXRlO2ZvbnQtc2l6ZToxMnB4O2JvdHRvbTo1cHg7cmlnaHQ6MTBweH0uZWwtdGV4dGFyZWEuaXMtZGlzYWJsZWQgLmVsLXRleHRhcmVhX19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Ym9yZGVyLWNvbG9yOiNFNEU3RUQ7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXRleHRhcmVhLmlzLWRpc2FibGVkIC5lbC10ZXh0YXJlYV9faW5uZXI6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtdGV4dGFyZWEuaXMtZGlzYWJsZWQgLmVsLXRleHRhcmVhX19pbm5lcjo6cGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtdGV4dGFyZWEuaXMtZXhjZWVkIC5lbC10ZXh0YXJlYV9faW5uZXJ7Ym9yZGVyLWNvbG9yOiNGNTZDNkN9LmVsLXRleHRhcmVhLmlzLWV4Y2VlZCAuZWwtaW5wdXRfX2NvdW50e2NvbG9yOiNGNTZDNkN9LmVsLWlucHV0e3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToxNHB4fS5lbC1pbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXJ7ei1pbmRleDoxMTt3aWR0aDo2cHh9LmVsLWlucHV0Ojotd2Via2l0LXNjcm9sbGJhcjpob3Jpem9udGFse2hlaWdodDo2cHh9LmVsLWlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYntib3JkZXItcmFkaXVzOjVweDt3aWR0aDo2cHg7YmFja2dyb3VuZDojYjRiY2NjfS5lbC1pbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVye2JhY2tncm91bmQ6I2ZmZn0uZWwtaW5wdXQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JhY2tncm91bmQ6I2ZmZn0uZWwtaW5wdXQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNle2JhY2tncm91bmQ6I2ZmZjt3aWR0aDo2cHh9LmVsLWlucHV0IC5lbC1pbnB1dF9fY2xlYXJ7Y29sb3I6I0MwQzRDQztmb250LXNpemU6MTRweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmNvbG9yIC4ycyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSl9LmVsLWlucHV0IC5lbC1pbnB1dF9fY2xlYXI6aG92ZXJ7Y29sb3I6IzkwOTM5OX0uZWwtaW5wdXQgLmVsLWlucHV0X19jb3VudHtoZWlnaHQ6MTAwJTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojOTA5Mzk5O2ZvbnQtc2l6ZToxMnB4fS5lbC1pbnB1dC1ncm91cF9fYXBwZW5kIC5lbC1idXR0b24sLmVsLWlucHV0LWdyb3VwX19hcHBlbmQgLmVsLWlucHV0LC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCAuZWwtYnV0dG9uLC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCAuZWwtaW5wdXQsLmVsLWlucHV0X19pbm5lcntmb250LXNpemU6aW5oZXJpdH0uZWwtaW5wdXQgLmVsLWlucHV0X19jb3VudCAuZWwtaW5wdXRfX2NvdW50LWlubmVye2JhY2tncm91bmQ6I0ZGRjtsaW5lLWhlaWdodDppbml0aWFsO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MCA1cHh9LmVsLWlucHV0X19pbm5lcnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6IzYwNjI2NjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6NDBweDtsaW5lLWhlaWdodDo0MHB4O291dGxpbmU6MDtwYWRkaW5nOjAgMTVweDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMnMgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpO3dpZHRoOjEwMCV9LmVsLWlucHV0X19pbm5lcjo6LW1zLXJldmVhbHtkaXNwbGF5Om5vbmV9LmVsLWlucHV0X19pbm5lcjo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC1pbnB1dF9faW5uZXI6OnBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLWlucHV0X19pbm5lcjpob3Zlcntib3JkZXItY29sb3I6I0MwQzRDQ30uZWwtaW5wdXQuaXMtYWN0aXZlIC5lbC1pbnB1dF9faW5uZXIsLmVsLWlucHV0X19pbm5lcjpmb2N1c3tib3JkZXItY29sb3I6IzQwOUVGRjtvdXRsaW5lOjB9LmVsLWlucHV0X19zdWZmaXh7aGVpZ2h0OjEwMCU7cmlnaHQ6NXB4O3RyYW5zaXRpb246YWxsIC4zcztwb2ludGVyLWV2ZW50czpub25lfS5lbC1pbnB1dF9fc3VmZml4LWlubmVye3BvaW50ZXItZXZlbnRzOmFsbH0uZWwtaW5wdXRfX3ByZWZpeHtoZWlnaHQ6MTAwJTtsZWZ0OjVweDt0cmFuc2l0aW9uOmFsbCAuM3N9LmVsLWlucHV0X19pY29ue2hlaWdodDoxMDAlO3dpZHRoOjI1cHg7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjphbGwgLjNzO2xpbmUtaGVpZ2h0OjQwcHh9LmVsLWlucHV0X19pY29uOmFmdGVye2NvbnRlbnQ6Jyc7aGVpZ2h0OjEwMCU7d2lkdGg6MDtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLWlucHV0X192YWxpZGF0ZUljb257cG9pbnRlci1ldmVudHM6bm9uZX0uZWwtaW5wdXQuaXMtZGlzYWJsZWQgLmVsLWlucHV0X19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Ym9yZGVyLWNvbG9yOiNFNEU3RUQ7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLWlucHV0LmlzLWRpc2FibGVkIC5lbC1pbnB1dF9faW5uZXI6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtaW5wdXQuaXMtZGlzYWJsZWQgLmVsLWlucHV0X19pbm5lcjo6cGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtaW5wdXQuaXMtZGlzYWJsZWQgLmVsLWlucHV0X19pY29ue2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtaW1hZ2Utdmlld2VyX19idG4sLmVsLWltYWdlX19wcmV2aWV3LC5lbC1saW5rLC5lbC10cmFuc2Zlci1wYW5lbF9fZmlsdGVyIC5lbC1pY29uLWNpcmNsZS1jbG9zZXtjdXJzb3I6cG9pbnRlcn0uZWwtaW5wdXQuaXMtZXhjZWVkIC5lbC1pbnB1dF9faW5uZXJ7Ym9yZGVyLWNvbG9yOiNGNTZDNkN9LmVsLWlucHV0LmlzLWV4Y2VlZCAuZWwtaW5wdXRfX3N1ZmZpeCAuZWwtaW5wdXRfX2NvdW50e2NvbG9yOiNGNTZDNkN9LmVsLWlucHV0LS1zdWZmaXggLmVsLWlucHV0X19pbm5lcntwYWRkaW5nLXJpZ2h0OjMwcHh9LmVsLWlucHV0LS1wcmVmaXggLmVsLWlucHV0X19pbm5lcntwYWRkaW5nLWxlZnQ6MzBweH0uZWwtaW5wdXQtLW1lZGl1bXtmb250LXNpemU6MTRweH0uZWwtaW5wdXQtLW1lZGl1bSAuZWwtaW5wdXRfX2lubmVye2hlaWdodDozNnB4O2xpbmUtaGVpZ2h0OjM2cHh9LmVsLWlucHV0LS1tZWRpdW0gLmVsLWlucHV0X19pY29ue2xpbmUtaGVpZ2h0OjM2cHh9LmVsLWlucHV0LS1zbWFsbHtmb250LXNpemU6MTNweH0uZWwtaW5wdXQtLXNtYWxsIC5lbC1pbnB1dF9faW5uZXJ7aGVpZ2h0OjMycHg7bGluZS1oZWlnaHQ6MzJweH0uZWwtaW5wdXQtLXNtYWxsIC5lbC1pbnB1dF9faWNvbntsaW5lLWhlaWdodDozMnB4fS5lbC1pbnB1dC0tbWluaXtmb250LXNpemU6MTJweH0uZWwtaW5wdXQtLW1pbmkgLmVsLWlucHV0X19pbm5lcntoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5lbC1pbnB1dC0tbWluaSAuZWwtaW5wdXRfX2ljb257bGluZS1oZWlnaHQ6MjhweH0uZWwtaW5wdXQtZ3JvdXB7bGluZS1oZWlnaHQ6bm9ybWFsO2Rpc3BsYXk6aW5saW5lLXRhYmxlO3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlO2JvcmRlci1zcGFjaW5nOjB9LmVsLWlucHV0LWdyb3VwPi5lbC1pbnB1dF9faW5uZXJ7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6dGFibGUtY2VsbH0uZWwtaW5wdXQtZ3JvdXBfX2FwcGVuZCwuZWwtaW5wdXQtZ3JvdXBfX3ByZXBlbmR7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBO2NvbG9yOiM5MDkzOTk7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6dGFibGUtY2VsbDtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MXB4IHNvbGlkICNEQ0RGRTY7Ym9yZGVyLXJhZGl1czo0cHg7cGFkZGluZzowIDIwcHg7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcH0uZWwtaW5wdXQtZ3JvdXAtLWFwcGVuZCAuZWwtaW5wdXRfX2lubmVyLC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmVsLWlucHV0LWdyb3VwX19hcHBlbmQ6Zm9jdXMsLmVsLWlucHV0LWdyb3VwX19wcmVwZW5kOmZvY3Vze291dGxpbmU6MH0uZWwtaW5wdXQtZ3JvdXBfX2FwcGVuZCAuZWwtYnV0dG9uLC5lbC1pbnB1dC1ncm91cF9fYXBwZW5kIC5lbC1zZWxlY3QsLmVsLWlucHV0LWdyb3VwX19wcmVwZW5kIC5lbC1idXR0b24sLmVsLWlucHV0LWdyb3VwX19wcmVwZW5kIC5lbC1zZWxlY3R7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOi0xMHB4IC0yMHB4fS5lbC1pbnB1dC1ncm91cF9fYXBwZW5kIGJ1dHRvbi5lbC1idXR0b24sLmVsLWlucHV0LWdyb3VwX19hcHBlbmQgZGl2LmVsLXNlbGVjdCAuZWwtaW5wdXRfX2lubmVyLC5lbC1pbnB1dC1ncm91cF9fYXBwZW5kIGRpdi5lbC1zZWxlY3Q6aG92ZXIgLmVsLWlucHV0X19pbm5lciwuZWwtaW5wdXQtZ3JvdXBfX3ByZXBlbmQgYnV0dG9uLmVsLWJ1dHRvbiwuZWwtaW5wdXQtZ3JvdXBfX3ByZXBlbmQgZGl2LmVsLXNlbGVjdCAuZWwtaW5wdXRfX2lubmVyLC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCBkaXYuZWwtc2VsZWN0OmhvdmVyIC5lbC1pbnB1dF9faW5uZXJ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wOjA7Ym9yZGVyLWJvdHRvbTowfS5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZHtib3JkZXItcmlnaHQ6MH0uZWwtaW5wdXQtZ3JvdXBfX2FwcGVuZHtib3JkZXItbGVmdDowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmVsLWlucHV0LWdyb3VwLS1hcHBlbmQgLmVsLXNlbGVjdCAuZWwtaW5wdXQuaXMtZm9jdXMgLmVsLWlucHV0X19pbm5lciwuZWwtaW5wdXQtZ3JvdXAtLXByZXBlbmQgLmVsLXNlbGVjdCAuZWwtaW5wdXQuaXMtZm9jdXMgLmVsLWlucHV0X19pbm5lcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LmVsLWlucHV0LWdyb3VwLS1wcmVwZW5kIC5lbC1pbnB1dF9faW5uZXJ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uZWwtaW5wdXRfX2lubmVyOjotbXMtY2xlYXJ7ZGlzcGxheTpub25lO3dpZHRoOjA7aGVpZ2h0OjB9LmVsLXRyYW5zZmVye2ZvbnQtc2l6ZToxNHB4fS5lbC10cmFuc2Zlcl9fYnV0dG9uc3tkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZzowIDMwcHh9LmVsLXRyYW5zZmVyX19idXR0b257ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvO3BhZGRpbmc6MTBweDtib3JkZXItcmFkaXVzOjUwJTtjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjtmb250LXNpemU6MH0uZWwtYnV0dG9uLWdyb3VwPi5lbC1idXR0b24rLmVsLWJ1dHRvbiwuZWwtdHJhbnNmZXItcGFuZWxfX2l0ZW0rLmVsLXRyYW5zZmVyLXBhbmVsX19pdGVtLC5lbC10cmFuc2Zlcl9fYnV0dG9uIFtjbGFzcyo9ZWwtaWNvbi1dK3NwYW57bWFyZ2luLWxlZnQ6MH0uZWwtZGl2aWRlcl9fdGV4dCwuZWwtaW1hZ2VfX2Vycm9yLC5lbC1saW5rLC5lbC10aW1lbGluZSwuZWwtdHJhbnNmZXJfX2J1dHRvbiBpLC5lbC10cmFuc2Zlcl9fYnV0dG9uIHNwYW57Zm9udC1zaXplOjE0cHh9LmVsLXRyYW5zZmVyX19idXR0b24uaXMtd2l0aC10ZXh0c3tib3JkZXItcmFkaXVzOjRweH0uZWwtdHJhbnNmZXJfX2J1dHRvbi5pcy1kaXNhYmxlZCwuZWwtdHJhbnNmZXJfX2J1dHRvbi5pcy1kaXNhYmxlZDpob3Zlcntib3JkZXI6MXB4IHNvbGlkICNEQ0RGRTY7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBO2NvbG9yOiNDMEM0Q0N9LmVsLXRyYW5zZmVyX19idXR0b246Zmlyc3QtY2hpbGR7bWFyZ2luLWJvdHRvbToxMHB4fS5lbC10cmFuc2Zlcl9fYnV0dG9uOm50aC1jaGlsZCgyKXttYXJnaW46MH0uZWwtdHJhbnNmZXItcGFuZWx7Ym9yZGVyOjFweCBzb2xpZCAjRUJFRUY1O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiNGRkY7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjIwMHB4O21heC1oZWlnaHQ6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmV9LmVsLXRyYW5zZmVyLXBhbmVsX19ib2R5e2hlaWdodDoyNDZweH0uZWwtdHJhbnNmZXItcGFuZWxfX2JvZHkuaXMtd2l0aC1mb290ZXJ7cGFkZGluZy1ib3R0b206NDBweH0uZWwtdHJhbnNmZXItcGFuZWxfX2xpc3R7bWFyZ2luOjA7cGFkZGluZzo2cHggMDtsaXN0LXN0eWxlOm5vbmU7aGVpZ2h0OjI0NnB4O292ZXJmbG93OmF1dG87Ym94LXNpemluZzpib3JkZXItYm94fS5lbC10cmFuc2Zlci1wYW5lbF9fbGlzdC5pcy1maWx0ZXJhYmxle2hlaWdodDoxOTRweDtwYWRkaW5nLXRvcDowfS5lbC10cmFuc2Zlci1wYW5lbF9faXRlbXtoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDozMHB4O3BhZGRpbmctbGVmdDoxNXB4O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5lbC10cmFuc2Zlci1wYW5lbF9faXRlbS5lbC1jaGVja2JveHtjb2xvcjojNjA2MjY2fS5lbC10cmFuc2Zlci1wYW5lbF9faXRlbTpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC10cmFuc2Zlci1wYW5lbF9faXRlbS5lbC1jaGVja2JveCAuZWwtY2hlY2tib3hfX2xhYmVse3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctbGVmdDoyNHB4O2xpbmUtaGVpZ2h0OjMwcHh9LmVsLXRyYW5zZmVyLXBhbmVsX19pdGVtIC5lbC1jaGVja2JveF9faW5wdXR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjhweH0uZWwtdHJhbnNmZXItcGFuZWxfX2ZpbHRlcnt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MTVweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazt3aWR0aDphdXRvfS5lbC10cmFuc2Zlci1wYW5lbF9fZmlsdGVyIC5lbC1pbnB1dF9faW5uZXJ7aGVpZ2h0OjMycHg7d2lkdGg6MTAwJTtmb250LXNpemU6MTJweDtkaXNwbGF5OmlubGluZS1ibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmctcmlnaHQ6MTBweDtwYWRkaW5nLWxlZnQ6MzBweH0uZWwtdHJhbnNmZXItcGFuZWxfX2ZpbHRlciAuZWwtaW5wdXRfX2ljb257bWFyZ2luLWxlZnQ6NXB4fS5lbC10cmFuc2Zlci1wYW5lbCAuZWwtdHJhbnNmZXItcGFuZWxfX2hlYWRlcntoZWlnaHQ6NDBweDtsaW5lLWhlaWdodDo0MHB4O2JhY2tncm91bmQ6I0Y1RjdGQTttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MTVweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRUJFRUY1O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojMDAwfS5lbC1jb250YWluZXIsLmVsLWhlYWRlcnstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtdHJhbnNmZXItcGFuZWwgLmVsLXRyYW5zZmVyLXBhbmVsX19oZWFkZXIgLmVsLWNoZWNrYm94e2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDBweH0uZWwtdHJhbnNmZXItcGFuZWwgLmVsLXRyYW5zZmVyLXBhbmVsX19oZWFkZXIgLmVsLWNoZWNrYm94IC5lbC1jaGVja2JveF9fbGFiZWx7Zm9udC1zaXplOjE2cHg7Y29sb3I6IzMwMzEzMztmb250LXdlaWdodDo0MDB9LmVsLXRyYW5zZmVyLXBhbmVsIC5lbC10cmFuc2Zlci1wYW5lbF9faGVhZGVyIC5lbC1jaGVja2JveCAuZWwtY2hlY2tib3hfX2xhYmVsIHNwYW57cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTVweDtjb2xvcjojOTA5Mzk5O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjQwMH0uZWwtdHJhbnNmZXItcGFuZWwgLmVsLXRyYW5zZmVyLXBhbmVsX19mb290ZXJ7aGVpZ2h0OjQwcHg7YmFja2dyb3VuZDojRkZGO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjRUJFRUY1O3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO3otaW5kZXg6MX0uZWwtdHJhbnNmZXItcGFuZWwgLmVsLXRyYW5zZmVyLXBhbmVsX19mb290ZXI6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtY29udGFpbmVyLC5lbC10aW1lbGluZS1pdGVtX19ub2Rle2Rpc3BsYXk6LW1zLWZsZXhib3h9LmVsLXRyYW5zZmVyLXBhbmVsIC5lbC10cmFuc2Zlci1wYW5lbF9fZm9vdGVyIC5lbC1jaGVja2JveHtwYWRkaW5nLWxlZnQ6MjBweDtjb2xvcjojNjA2MjY2fS5lbC10cmFuc2Zlci1wYW5lbCAuZWwtdHJhbnNmZXItcGFuZWxfX2VtcHR5e21hcmdpbjowO2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjMwcHg7cGFkZGluZzo2cHggMTVweCAwO2NvbG9yOiM5MDkzOTk7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXRyYW5zZmVyLXBhbmVsIC5lbC1jaGVja2JveF9fbGFiZWx7cGFkZGluZy1sZWZ0OjhweH0uZWwtdHJhbnNmZXItcGFuZWwgLmVsLWNoZWNrYm94X19pbm5lcntoZWlnaHQ6MTRweDt3aWR0aDoxNHB4O2JvcmRlci1yYWRpdXM6M3B4fS5lbC10cmFuc2Zlci1wYW5lbCAuZWwtY2hlY2tib3hfX2lubmVyOjphZnRlcntoZWlnaHQ6NnB4O3dpZHRoOjNweDtsZWZ0OjRweH0uZWwtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleDoxO2ZsZXgtYmFzaXM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLXdpZHRoOjB9LmVsLWNvbnRhaW5lci5pcy12ZXJ0aWNhbCwuZWwtZHJhd2VyLC5lbC1lbXB0eSwuZWwtcmVzdWx0ey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbH0uZWwtY29udGFpbmVyLmlzLXZlcnRpY2Fse2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZWwtaGVhZGVye3BhZGRpbmc6MCAyMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtmbGV4LXNocmluazowfS5lbC1hc2lkZXtvdmVyZmxvdzphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmbGV4LXNocmluazowfS5lbC1tYWlue2Rpc3BsYXk6YmxvY2s7ZmxleDoxO2ZsZXgtYmFzaXM6YXV0bztvdmVyZmxvdzphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtZm9vdGVye3BhZGRpbmc6MCAyMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtmbGV4LXNocmluazowfS5lbC10aW1lbGluZXttYXJnaW46MDtsaXN0LXN0eWxlOm5vbmV9LmVsLXRpbWVsaW5lIC5lbC10aW1lbGluZS1pdGVtOmxhc3QtY2hpbGQgLmVsLXRpbWVsaW5lLWl0ZW1fX3RhaWx7ZGlzcGxheTpub25lfS5lbC10aW1lbGluZS1pdGVte3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctYm90dG9tOjIwcHh9LmVsLXRpbWVsaW5lLWl0ZW1fX3dyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OjI4cHg7dG9wOi0zcHh9LmVsLXRpbWVsaW5lLWl0ZW1fX3RhaWx7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo0cHg7aGVpZ2h0OjEwMCU7Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkICNFNEU3RUR9LmVsLXRpbWVsaW5lLWl0ZW1fX2ljb257Y29sb3I6I0ZGRjtmb250LXNpemU6MTNweH0uZWwtdGltZWxpbmUtaXRlbV9fbm9kZXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNFNEU3RUQ7Ym9yZGVyLXJhZGl1czo1MCU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5lbC1pbWFnZV9fZXJyb3IsLmVsLXRpbWVsaW5lLWl0ZW1fX2RvdHtkaXNwbGF5Oi1tcy1mbGV4Ym94fS5lbC10aW1lbGluZS1pdGVtX19ub2RlLS1ub3JtYWx7bGVmdDotMXB4O3dpZHRoOjEycHg7aGVpZ2h0OjEycHh9LmVsLXRpbWVsaW5lLWl0ZW1fX25vZGUtLWxhcmdle2xlZnQ6LTJweDt3aWR0aDoxNHB4O2hlaWdodDoxNHB4fS5lbC10aW1lbGluZS1pdGVtX19ub2RlLS1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6IzQwOUVGRn0uZWwtdGltZWxpbmUtaXRlbV9fbm9kZS0tc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM2N0MyM0F9LmVsLXRpbWVsaW5lLWl0ZW1fX25vZGUtLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojRTZBMjNDfS5lbC10aW1lbGluZS1pdGVtX19ub2RlLS1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojRjU2QzZDfS5lbC10aW1lbGluZS1pdGVtX19ub2RlLS1pbmZve2JhY2tncm91bmQtY29sb3I6IzkwOTM5OX0uZWwtdGltZWxpbmUtaXRlbV9fZG90e3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uZWwtdGltZWxpbmUtaXRlbV9fY29udGVudHtjb2xvcjojMzAzMTMzfS5lbC10aW1lbGluZS1pdGVtX190aW1lc3RhbXB7Y29sb3I6IzkwOTM5OTtsaW5lLWhlaWdodDoxO2ZvbnQtc2l6ZToxM3B4fS5lbC10aW1lbGluZS1pdGVtX190aW1lc3RhbXAuaXMtdG9we21hcmdpbi1ib3R0b206OHB4O3BhZGRpbmctdG9wOjRweH0uZWwtdGltZWxpbmUtaXRlbV9fdGltZXN0YW1wLmlzLWJvdHRvbXttYXJnaW4tdG9wOjhweH0uZWwtbGlua3tkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3V0bGluZTowO3BhZGRpbmc6MDtmb250LXdlaWdodDo1MDB9LmVsLWxpbmsuaXMtdW5kZXJsaW5lOmhvdmVyOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO2hlaWdodDowO2JvdHRvbTowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0MDlFRkZ9LmVsLWxpbmsuZWwtbGluay0tZGVmYXVsdDphZnRlciwuZWwtbGluay5lbC1saW5rLS1wcmltYXJ5LmlzLXVuZGVybGluZTpob3ZlcjphZnRlciwuZWwtbGluay5lbC1saW5rLS1wcmltYXJ5OmFmdGVye2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1saW5rLmlzLWRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtbGluayBbY2xhc3MqPWVsLWljb24tXStzcGFue21hcmdpbi1sZWZ0OjVweH0uZWwtbGluay5lbC1saW5rLS1kZWZhdWx0e2NvbG9yOiM2MDYyNjZ9LmVsLWxpbmsuZWwtbGluay0tZGVmYXVsdDpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1saW5rLmVsLWxpbmstLWRlZmF1bHQuaXMtZGlzYWJsZWR7Y29sb3I6I0MwQzRDQ30uZWwtbGluay5lbC1saW5rLS1wcmltYXJ5e2NvbG9yOiM0MDlFRkZ9LmVsLWxpbmsuZWwtbGluay0tcHJpbWFyeTpob3Zlcntjb2xvcjojNjZiMWZmfS5lbC1saW5rLmVsLWxpbmstLXByaW1hcnkuaXMtZGlzYWJsZWR7Y29sb3I6I2EwY2ZmZn0uZWwtbGluay5lbC1saW5rLS1kYW5nZXIuaXMtdW5kZXJsaW5lOmhvdmVyOmFmdGVyLC5lbC1saW5rLmVsLWxpbmstLWRhbmdlcjphZnRlcntib3JkZXItY29sb3I6I0Y1NkM2Q30uZWwtbGluay5lbC1saW5rLS1kYW5nZXJ7Y29sb3I6I0Y1NkM2Q30uZWwtbGluay5lbC1saW5rLS1kYW5nZXI6aG92ZXJ7Y29sb3I6I2Y3ODk4OX0uZWwtbGluay5lbC1saW5rLS1kYW5nZXIuaXMtZGlzYWJsZWR7Y29sb3I6I2ZhYjZiNn0uZWwtbGluay5lbC1saW5rLS1zdWNjZXNzLmlzLXVuZGVybGluZTpob3ZlcjphZnRlciwuZWwtbGluay5lbC1saW5rLS1zdWNjZXNzOmFmdGVye2JvcmRlci1jb2xvcjojNjdDMjNBfS5lbC1saW5rLmVsLWxpbmstLXN1Y2Nlc3N7Y29sb3I6IzY3QzIzQX0uZWwtbGluay5lbC1saW5rLS1zdWNjZXNzOmhvdmVye2NvbG9yOiM4NWNlNjF9LmVsLWxpbmsuZWwtbGluay0tc3VjY2Vzcy5pcy1kaXNhYmxlZHtjb2xvcjojYjNlMTlkfS5lbC1saW5rLmVsLWxpbmstLXdhcm5pbmcuaXMtdW5kZXJsaW5lOmhvdmVyOmFmdGVyLC5lbC1saW5rLmVsLWxpbmstLXdhcm5pbmc6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOiNFNkEyM0N9LmVsLWxpbmsuZWwtbGluay0td2FybmluZ3tjb2xvcjojRTZBMjNDfS5lbC1saW5rLmVsLWxpbmstLXdhcm5pbmc6aG92ZXJ7Y29sb3I6I2ViYjU2M30uZWwtbGluay5lbC1saW5rLS13YXJuaW5nLmlzLWRpc2FibGVke2NvbG9yOiNmM2QxOWV9LmVsLWxpbmsuZWwtbGluay0taW5mby5pcy11bmRlcmxpbmU6aG92ZXI6YWZ0ZXIsLmVsLWxpbmsuZWwtbGluay0taW5mbzphZnRlcntib3JkZXItY29sb3I6IzkwOTM5OX0uZWwtbGluay5lbC1saW5rLS1pbmZve2NvbG9yOiM5MDkzOTl9LmVsLWxpbmsuZWwtbGluay0taW5mbzpob3Zlcntjb2xvcjojYTZhOWFkfS5lbC1saW5rLmVsLWxpbmstLWluZm8uaXMtZGlzYWJsZWR7Y29sb3I6I2M4YzljY30uZWwtZGl2aWRlcntiYWNrZ3JvdW5kLWNvbG9yOiNEQ0RGRTY7cG9zaXRpb246cmVsYXRpdmV9LmVsLWRpdmlkZXItLWhvcml6b250YWx7ZGlzcGxheTpibG9jaztoZWlnaHQ6MXB4O3dpZHRoOjEwMCU7bWFyZ2luOjI0cHggMH0uZWwtZGl2aWRlci0tdmVydGljYWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MXB4O2hlaWdodDoxZW07bWFyZ2luOjAgOHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtZGl2aWRlcl9fdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7cGFkZGluZzowIDIwcHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOiMzMDMxMzN9LmVsLWltYWdlX19lcnJvciwuZWwtaW1hZ2VfX3BsYWNlaG9sZGVye2JhY2tncm91bmQ6I0Y1RjdGQX0uZWwtZGl2aWRlcl9fdGV4dC5pcy1sZWZ0e2xlZnQ6MjBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uZWwtZGl2aWRlcl9fdGV4dC5pcy1jZW50ZXJ7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKX0uZWwtZGl2aWRlcl9fdGV4dC5pcy1yaWdodHtyaWdodDoyMHB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5lbC1pbWFnZV9fZXJyb3IsLmVsLWltYWdlX19pbm5lciwuZWwtaW1hZ2VfX3BsYWNlaG9sZGVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LmVsLWltYWdle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmhpZGRlbn0uZWwtaW1hZ2VfX2lubmVye3ZlcnRpY2FsLWFsaWduOnRvcH0uZWwtaW1hZ2VfX2lubmVyLS1jZW50ZXJ7cG9zaXRpb246cmVsYXRpdmU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7ZGlzcGxheTpibG9ja30uZWwtaW1hZ2VfX2Vycm9ye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojQzBDNENDO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtaW1hZ2Utdmlld2VyX193cmFwcGVye3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowfS5lbC1pbWFnZS12aWV3ZXJfX2J0bntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci1yYWRpdXM6NTAlO29wYWNpdHk6Ljg7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZWwtYnV0dG9uLC5lbC1jaGVja2JveCwuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lciwuZWwtZW1wdHlfX2ltYWdlIGltZywuZWwtcmFkaW97LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZX0uZWwtaW1hZ2Utdmlld2VyX19jbG9zZXt0b3A6NDBweDtyaWdodDo0MHB4O3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Zm9udC1zaXplOjI0cHg7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM2MDYyNjZ9LmVsLWltYWdlLXZpZXdlcl9fY2FudmFze3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5lbC1pbWFnZS12aWV3ZXJfX2FjdGlvbnN7bGVmdDo1MCU7Ym90dG9tOjMwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7d2lkdGg6MjgycHg7aGVpZ2h0OjQ0cHg7cGFkZGluZzowIDIzcHg7YmFja2dyb3VuZC1jb2xvcjojNjA2MjY2O2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6MjJweH0uZWwtaW1hZ2Utdmlld2VyX19hY3Rpb25zX19pbm5lcnt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RleHQtYWxpZ246anVzdGlmeTtjdXJzb3I6ZGVmYXVsdDtmb250LXNpemU6MjNweDtjb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uZWwtaW1hZ2Utdmlld2VyX19uZXh0LC5lbC1pbWFnZS12aWV3ZXJfX3ByZXZ7d2lkdGg6NDRweDtoZWlnaHQ6NDRweDtmb250LXNpemU6MjRweDtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzYwNjI2Njtib3JkZXItY29sb3I6I2ZmZjt0b3A6NTAlfS5lbC1pbWFnZS12aWV3ZXJfX3ByZXZ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7bGVmdDo0MHB4fS5lbC1pbWFnZS12aWV3ZXJfX25leHR7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7cmlnaHQ6NDBweDt0ZXh0LWluZGVudDoycHh9LmVsLWltYWdlLXZpZXdlcl9fbWFza3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtvcGFjaXR5Oi41O2JhY2tncm91bmQ6IzAwMH0udmlld2VyLWZhZGUtZW50ZXItYWN0aXZle2FuaW1hdGlvbjp2aWV3ZXItZmFkZS1pbiAuM3N9LnZpZXdlci1mYWRlLWxlYXZlLWFjdGl2ZXthbmltYXRpb246dmlld2VyLWZhZGUtb3V0IC4zc31Aa2V5ZnJhbWVzIHZpZXdlci1mYWRlLWluezAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO29wYWNpdHk6MH0xMDAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIHZpZXdlci1mYWRlLW91dHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO29wYWNpdHk6MX0xMDAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO29wYWNpdHk6MH19LmVsLWJ1dHRvbntkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoxO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2O2NvbG9yOiM2MDYyNjY7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O291dGxpbmU6MDttYXJnaW46MDt0cmFuc2l0aW9uOi4xcztmb250LXdlaWdodDo1MDA7cGFkZGluZzoxMnB4IDIwcHg7Zm9udC1zaXplOjE0cHg7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLWJ1dHRvbisuZWwtYnV0dG9uLC5lbC1jaGVja2JveC5pcy1ib3JkZXJlZCsuZWwtY2hlY2tib3guaXMtYm9yZGVyZWR7bWFyZ2luLWxlZnQ6MTBweH0uZWwtYnV0dG9uOmZvY3VzLC5lbC1idXR0b246aG92ZXJ7Y29sb3I6IzQwOUVGRjtib3JkZXItY29sb3I6I2M2ZTJmZjtiYWNrZ3JvdW5kLWNvbG9yOiNlY2Y1ZmZ9LmVsLWJ1dHRvbjphY3RpdmV7Y29sb3I6IzNhOGVlNjtib3JkZXItY29sb3I6IzNhOGVlNjtvdXRsaW5lOjB9LmVsLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uZWwtYnV0dG9uIFtjbGFzcyo9ZWwtaWNvbi1dK3NwYW57bWFyZ2luLWxlZnQ6NXB4fS5lbC1idXR0b24uaXMtcGxhaW46Zm9jdXMsLmVsLWJ1dHRvbi5pcy1wbGFpbjpob3ZlcntiYWNrZ3JvdW5kOiNGRkY7Ym9yZGVyLWNvbG9yOiM0MDlFRkY7Y29sb3I6IzQwOUVGRn0uZWwtYnV0dG9uLmlzLWFjdGl2ZSwuZWwtYnV0dG9uLmlzLXBsYWluOmFjdGl2ZXtjb2xvcjojM2E4ZWU2O2JvcmRlci1jb2xvcjojM2E4ZWU2fS5lbC1idXR0b24uaXMtcGxhaW46YWN0aXZle2JhY2tncm91bmQ6I0ZGRjtvdXRsaW5lOjB9LmVsLWJ1dHRvbi5pcy1kaXNhYmxlZCwuZWwtYnV0dG9uLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24uaXMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JhY2tncm91bmQtY29sb3I6I0ZGRjtib3JkZXItY29sb3I6I0VCRUVGNX0uZWwtYnV0dG9uLmlzLWRpc2FibGVkLmVsLWJ1dHRvbi0tdGV4dHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5lbC1idXR0b24uaXMtZGlzYWJsZWQuaXMtcGxhaW4sLmVsLWJ1dHRvbi5pcy1kaXNhYmxlZC5pcy1wbGFpbjpmb2N1cywuZWwtYnV0dG9uLmlzLWRpc2FibGVkLmlzLXBsYWluOmhvdmVye2JhY2tncm91bmQtY29sb3I6I0ZGRjtib3JkZXItY29sb3I6I0VCRUVGNTtjb2xvcjojQzBDNENDfS5lbC1idXR0b24uaXMtbG9hZGluZ3twb3NpdGlvbjpyZWxhdGl2ZTtwb2ludGVyLWV2ZW50czpub25lfS5lbC1idXR0b24uaXMtbG9hZGluZzpiZWZvcmV7cG9pbnRlci1ldmVudHM6bm9uZTtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTFweDt0b3A6LTFweDtyaWdodDotMXB4O2JvdHRvbTotMXB4O2JvcmRlci1yYWRpdXM6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjM1KX0uZWwtYnV0dG9uLmlzLXJvdW5ke2JvcmRlci1yYWRpdXM6MjBweDtwYWRkaW5nOjEycHggMjNweH0uZWwtYnV0dG9uLmlzLWNpcmNsZXtib3JkZXItcmFkaXVzOjUwJTtwYWRkaW5nOjEycHh9LmVsLWJ1dHRvbi0tcHJpbWFyeXtjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjtib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtYnV0dG9uLS1wcmltYXJ5OmZvY3VzLC5lbC1idXR0b24tLXByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZDojNjZiMWZmO2JvcmRlci1jb2xvcjojNjZiMWZmO2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1hY3RpdmUsLmVsLWJ1dHRvbi0tcHJpbWFyeTphY3RpdmV7YmFja2dyb3VuZDojM2E4ZWU2O2JvcmRlci1jb2xvcjojM2E4ZWU2O2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0tcHJpbWFyeTphY3RpdmV7b3V0bGluZTowfS5lbC1idXR0b24tLXByaW1hcnkuaXMtZGlzYWJsZWQsLmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1kaXNhYmxlZDphY3RpdmUsLmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1kaXNhYmxlZDpmb2N1cywuZWwtYnV0dG9uLS1wcmltYXJ5LmlzLWRpc2FibGVkOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojYTBjZmZmO2JvcmRlci1jb2xvcjojYTBjZmZmfS5lbC1idXR0b24tLXByaW1hcnkuaXMtcGxhaW57Y29sb3I6IzQwOUVGRjtiYWNrZ3JvdW5kOiNlY2Y1ZmY7Ym9yZGVyLWNvbG9yOiNiM2Q4ZmZ9LmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1wbGFpbjpmb2N1cywuZWwtYnV0dG9uLS1wcmltYXJ5LmlzLXBsYWluOmhvdmVye2JhY2tncm91bmQ6IzQwOUVGRjtib3JkZXItY29sb3I6IzQwOUVGRjtjb2xvcjojRkZGfS5lbC1idXR0b24tLXByaW1hcnkuaXMtcGxhaW46YWN0aXZle2JhY2tncm91bmQ6IzNhOGVlNjtib3JkZXItY29sb3I6IzNhOGVlNjtjb2xvcjojRkZGO291dGxpbmU6MH0uZWwtYnV0dG9uLS1wcmltYXJ5LmlzLXBsYWluLmlzLWRpc2FibGVkLC5lbC1idXR0b24tLXByaW1hcnkuaXMtcGxhaW4uaXMtZGlzYWJsZWQ6YWN0aXZlLC5lbC1idXR0b24tLXByaW1hcnkuaXMtcGxhaW4uaXMtZGlzYWJsZWQ6Zm9jdXMsLmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1wbGFpbi5pcy1kaXNhYmxlZDpob3Zlcntjb2xvcjojOGNjNWZmO2JhY2tncm91bmQtY29sb3I6I2VjZjVmZjtib3JkZXItY29sb3I6I2Q5ZWNmZn0uZWwtYnV0dG9uLS1zdWNjZXNze2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojNjdDMjNBO2JvcmRlci1jb2xvcjojNjdDMjNBfS5lbC1idXR0b24tLXN1Y2Nlc3M6Zm9jdXMsLmVsLWJ1dHRvbi0tc3VjY2Vzczpob3ZlcntiYWNrZ3JvdW5kOiM4NWNlNjE7Ym9yZGVyLWNvbG9yOiM4NWNlNjE7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1zdWNjZXNzLmlzLWFjdGl2ZSwuZWwtYnV0dG9uLS1zdWNjZXNzOmFjdGl2ZXtiYWNrZ3JvdW5kOiM1ZGFmMzQ7Ym9yZGVyLWNvbG9yOiM1ZGFmMzQ7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1zdWNjZXNzOmFjdGl2ZXtvdXRsaW5lOjB9LmVsLWJ1dHRvbi0tc3VjY2Vzcy5pcy1kaXNhYmxlZCwuZWwtYnV0dG9uLS1zdWNjZXNzLmlzLWRpc2FibGVkOmFjdGl2ZSwuZWwtYnV0dG9uLS1zdWNjZXNzLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24tLXN1Y2Nlc3MuaXMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNiM2UxOWQ7Ym9yZGVyLWNvbG9yOiNiM2UxOWR9LmVsLWJ1dHRvbi0tc3VjY2Vzcy5pcy1wbGFpbntjb2xvcjojNjdDMjNBO2JhY2tncm91bmQ6I2YwZjllYjtib3JkZXItY29sb3I6I2MyZTdiMH0uZWwtYnV0dG9uLS1zdWNjZXNzLmlzLXBsYWluOmZvY3VzLC5lbC1idXR0b24tLXN1Y2Nlc3MuaXMtcGxhaW46aG92ZXJ7YmFja2dyb3VuZDojNjdDMjNBO2JvcmRlci1jb2xvcjojNjdDMjNBO2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0tc3VjY2Vzcy5pcy1wbGFpbjphY3RpdmV7YmFja2dyb3VuZDojNWRhZjM0O2JvcmRlci1jb2xvcjojNWRhZjM0O2NvbG9yOiNGRkY7b3V0bGluZTowfS5lbC1idXR0b24tLXN1Y2Nlc3MuaXMtcGxhaW4uaXMtZGlzYWJsZWQsLmVsLWJ1dHRvbi0tc3VjY2Vzcy5pcy1wbGFpbi5pcy1kaXNhYmxlZDphY3RpdmUsLmVsLWJ1dHRvbi0tc3VjY2Vzcy5pcy1wbGFpbi5pcy1kaXNhYmxlZDpmb2N1cywuZWwtYnV0dG9uLS1zdWNjZXNzLmlzLXBsYWluLmlzLWRpc2FibGVkOmhvdmVye2NvbG9yOiNhNGRhODk7YmFja2dyb3VuZC1jb2xvcjojZjBmOWViO2JvcmRlci1jb2xvcjojZTFmM2Q4fS5lbC1idXR0b24tLXdhcm5pbmd7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNFNkEyM0M7Ym9yZGVyLWNvbG9yOiNFNkEyM0N9LmVsLWJ1dHRvbi0td2FybmluZzpmb2N1cywuZWwtYnV0dG9uLS13YXJuaW5nOmhvdmVye2JhY2tncm91bmQ6I2ViYjU2Mztib3JkZXItY29sb3I6I2ViYjU2Mztjb2xvcjojRkZGfS5lbC1idXR0b24tLXdhcm5pbmcuaXMtYWN0aXZlLC5lbC1idXR0b24tLXdhcm5pbmc6YWN0aXZle2JhY2tncm91bmQ6I2NmOTIzNjtib3JkZXItY29sb3I6I2NmOTIzNjtjb2xvcjojRkZGfS5lbC1idXR0b24tLXdhcm5pbmc6YWN0aXZle291dGxpbmU6MH0uZWwtYnV0dG9uLS13YXJuaW5nLmlzLWRpc2FibGVkLC5lbC1idXR0b24tLXdhcm5pbmcuaXMtZGlzYWJsZWQ6YWN0aXZlLC5lbC1idXR0b24tLXdhcm5pbmcuaXMtZGlzYWJsZWQ6Zm9jdXMsLmVsLWJ1dHRvbi0td2FybmluZy5pcy1kaXNhYmxlZDpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6I2YzZDE5ZTtib3JkZXItY29sb3I6I2YzZDE5ZX0uZWwtYnV0dG9uLS13YXJuaW5nLmlzLXBsYWlue2NvbG9yOiNFNkEyM0M7YmFja2dyb3VuZDojZmRmNmVjO2JvcmRlci1jb2xvcjojZjVkYWIxfS5lbC1idXR0b24tLXdhcm5pbmcuaXMtcGxhaW46Zm9jdXMsLmVsLWJ1dHRvbi0td2FybmluZy5pcy1wbGFpbjpob3ZlcntiYWNrZ3JvdW5kOiNFNkEyM0M7Ym9yZGVyLWNvbG9yOiNFNkEyM0M7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS13YXJuaW5nLmlzLXBsYWluOmFjdGl2ZXtiYWNrZ3JvdW5kOiNjZjkyMzY7Ym9yZGVyLWNvbG9yOiNjZjkyMzY7Y29sb3I6I0ZGRjtvdXRsaW5lOjB9LmVsLWJ1dHRvbi0td2FybmluZy5pcy1wbGFpbi5pcy1kaXNhYmxlZCwuZWwtYnV0dG9uLS13YXJuaW5nLmlzLXBsYWluLmlzLWRpc2FibGVkOmFjdGl2ZSwuZWwtYnV0dG9uLS13YXJuaW5nLmlzLXBsYWluLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24tLXdhcm5pbmcuaXMtcGxhaW4uaXMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6I2YwYzc4YTtiYWNrZ3JvdW5kLWNvbG9yOiNmZGY2ZWM7Ym9yZGVyLWNvbG9yOiNmYWVjZDh9LmVsLWJ1dHRvbi0tZGFuZ2Vye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojRjU2QzZDO2JvcmRlci1jb2xvcjojRjU2QzZDfS5lbC1idXR0b24tLWRhbmdlcjpmb2N1cywuZWwtYnV0dG9uLS1kYW5nZXI6aG92ZXJ7YmFja2dyb3VuZDojZjc4OTg5O2JvcmRlci1jb2xvcjojZjc4OTg5O2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLWFjdGl2ZSwuZWwtYnV0dG9uLS1kYW5nZXI6YWN0aXZle2JhY2tncm91bmQ6I2RkNjE2MTtib3JkZXItY29sb3I6I2RkNjE2MTtjb2xvcjojRkZGfS5lbC1idXR0b24tLWRhbmdlcjphY3RpdmV7b3V0bGluZTowfS5lbC1idXR0b24tLWRhbmdlci5pcy1kaXNhYmxlZCwuZWwtYnV0dG9uLS1kYW5nZXIuaXMtZGlzYWJsZWQ6YWN0aXZlLC5lbC1idXR0b24tLWRhbmdlci5pcy1kaXNhYmxlZDpmb2N1cywuZWwtYnV0dG9uLS1kYW5nZXIuaXMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNmYWI2YjY7Ym9yZGVyLWNvbG9yOiNmYWI2YjZ9LmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLXBsYWlue2NvbG9yOiNGNTZDNkM7YmFja2dyb3VuZDojZmVmMGYwO2JvcmRlci1jb2xvcjojZmJjNGM0fS5lbC1idXR0b24tLWRhbmdlci5pcy1wbGFpbjpmb2N1cywuZWwtYnV0dG9uLS1kYW5nZXIuaXMtcGxhaW46aG92ZXJ7YmFja2dyb3VuZDojRjU2QzZDO2JvcmRlci1jb2xvcjojRjU2QzZDO2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLXBsYWluOmFjdGl2ZXtiYWNrZ3JvdW5kOiNkZDYxNjE7Ym9yZGVyLWNvbG9yOiNkZDYxNjE7Y29sb3I6I0ZGRjtvdXRsaW5lOjB9LmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLXBsYWluLmlzLWRpc2FibGVkLC5lbC1idXR0b24tLWRhbmdlci5pcy1wbGFpbi5pcy1kaXNhYmxlZDphY3RpdmUsLmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLXBsYWluLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24tLWRhbmdlci5pcy1wbGFpbi5pcy1kaXNhYmxlZDpob3Zlcntjb2xvcjojZjlhN2E3O2JhY2tncm91bmQtY29sb3I6I2ZlZjBmMDtib3JkZXItY29sb3I6I2ZkZTJlMn0uZWwtYnV0dG9uLS1pbmZve2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojOTA5Mzk5O2JvcmRlci1jb2xvcjojOTA5Mzk5fS5lbC1idXR0b24tLWluZm86Zm9jdXMsLmVsLWJ1dHRvbi0taW5mbzpob3ZlcntiYWNrZ3JvdW5kOiNhNmE5YWQ7Ym9yZGVyLWNvbG9yOiNhNmE5YWQ7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1pbmZvLmlzLWFjdGl2ZSwuZWwtYnV0dG9uLS1pbmZvOmFjdGl2ZXtiYWNrZ3JvdW5kOiM4Mjg0OGE7Ym9yZGVyLWNvbG9yOiM4Mjg0OGE7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1pbmZvOmFjdGl2ZXtvdXRsaW5lOjB9LmVsLWJ1dHRvbi0taW5mby5pcy1kaXNhYmxlZCwuZWwtYnV0dG9uLS1pbmZvLmlzLWRpc2FibGVkOmFjdGl2ZSwuZWwtYnV0dG9uLS1pbmZvLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24tLWluZm8uaXMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNjOGM5Y2M7Ym9yZGVyLWNvbG9yOiNjOGM5Y2N9LmVsLWJ1dHRvbi0taW5mby5pcy1wbGFpbntjb2xvcjojOTA5Mzk5O2JhY2tncm91bmQ6I2Y0ZjRmNTtib3JkZXItY29sb3I6I2QzZDRkNn0uZWwtYnV0dG9uLS1pbmZvLmlzLXBsYWluOmZvY3VzLC5lbC1idXR0b24tLWluZm8uaXMtcGxhaW46aG92ZXJ7YmFja2dyb3VuZDojOTA5Mzk5O2JvcmRlci1jb2xvcjojOTA5Mzk5O2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0taW5mby5pcy1wbGFpbjphY3RpdmV7YmFja2dyb3VuZDojODI4NDhhO2JvcmRlci1jb2xvcjojODI4NDhhO2NvbG9yOiNGRkY7b3V0bGluZTowfS5lbC1idXR0b24tLWluZm8uaXMtcGxhaW4uaXMtZGlzYWJsZWQsLmVsLWJ1dHRvbi0taW5mby5pcy1wbGFpbi5pcy1kaXNhYmxlZDphY3RpdmUsLmVsLWJ1dHRvbi0taW5mby5pcy1wbGFpbi5pcy1kaXNhYmxlZDpmb2N1cywuZWwtYnV0dG9uLS1pbmZvLmlzLXBsYWluLmlzLWRpc2FibGVkOmhvdmVye2NvbG9yOiNiY2JlYzI7YmFja2dyb3VuZC1jb2xvcjojZjRmNGY1O2JvcmRlci1jb2xvcjojZTllOWVifS5lbC1idXR0b24tLW1lZGl1bXtwYWRkaW5nOjEwcHggMjBweDtmb250LXNpemU6MTRweDtib3JkZXItcmFkaXVzOjRweH0uZWwtYnV0dG9uLS1tZWRpdW0uaXMtcm91bmR7cGFkZGluZzoxMHB4IDIwcHh9LmVsLWJ1dHRvbi0tbWVkaXVtLmlzLWNpcmNsZXtwYWRkaW5nOjEwcHh9LmVsLWJ1dHRvbi0tc21hbGx7cGFkZGluZzo5cHggMTVweDtmb250LXNpemU6MTJweDtib3JkZXItcmFkaXVzOjNweH0uZWwtYnV0dG9uLS1zbWFsbC5pcy1yb3VuZHtwYWRkaW5nOjlweCAxNXB4fS5lbC1idXR0b24tLXNtYWxsLmlzLWNpcmNsZXtwYWRkaW5nOjlweH0uZWwtYnV0dG9uLS1taW5pLC5lbC1idXR0b24tLW1pbmkuaXMtcm91bmR7cGFkZGluZzo3cHggMTVweH0uZWwtYnV0dG9uLS1taW5pe2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1yYWRpdXM6M3B4fS5lbC1idXR0b24tLW1pbmkuaXMtY2lyY2xle3BhZGRpbmc6N3B4fS5lbC1idXR0b24tLXRleHR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiM0MDlFRkY7YmFja2dyb3VuZDowIDA7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS5lbC1idXR0b24tLXRleHQ6Zm9jdXMsLmVsLWJ1dHRvbi0tdGV4dDpob3Zlcntjb2xvcjojNjZiMWZmO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5lbC1idXR0b24tLXRleHQ6YWN0aXZle2NvbG9yOiMzYThlZTY7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmVsLWJ1dHRvbi0tdGV4dC5pcy1kaXNhYmxlZCwuZWwtYnV0dG9uLS10ZXh0LmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24tLXRleHQuaXMtZGlzYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tZGFuZ2VyOmxhc3QtY2hpbGQsLmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS1kYW5nZXI6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLWluZm86bGFzdC1jaGlsZCwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLWluZm86bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXByaW1hcnk6bGFzdC1jaGlsZCwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXByaW1hcnk6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXN1Y2Nlc3M6bGFzdC1jaGlsZCwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXN1Y2Nlc3M6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXdhcm5pbmc6bGFzdC1jaGlsZCwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXdhcm5pbmc6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuZWwtYnV0dG9uLWdyb3VwPi5lbC1kcm9wZG93bj4uZWwtYnV0dG9ue2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tZGFuZ2VyOmZpcnN0LWNoaWxkLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tZGFuZ2VyOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksLmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS1pbmZvOmZpcnN0LWNoaWxkLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0taW5mbzpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tcHJpbWFyeTpmaXJzdC1jaGlsZCwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXByaW1hcnk6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXN1Y2Nlc3M6Zmlyc3QtY2hpbGQsLmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS1zdWNjZXNzOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksLmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS13YXJuaW5nOmZpcnN0LWNoaWxkLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0td2FybmluZzpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX0uZWwtYnV0dG9uLWdyb3Vwe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtYnV0dG9uLWdyb3VwOjphZnRlciwuZWwtYnV0dG9uLWdyb3VwOjpiZWZvcmV7ZGlzcGxheTp0YWJsZX0uZWwtYnV0dG9uLWdyb3VwOjphZnRlcntjbGVhcjpib3RofS5lbC1idXR0b24tZ3JvdXA+LmVsLWJ1dHRvbntmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC1idXR0b24tZ3JvdXA+LmVsLWJ1dHRvbi5pcy1kaXNhYmxlZHt6LWluZGV4OjF9LmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9uOmZpcnN0LWNoaWxke2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZWwtYnV0dG9uLWdyb3VwPi5lbC1idXR0b246bGFzdC1jaGlsZHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5lbC1idXR0b24tZ3JvdXA+LmVsLWJ1dHRvbjpmaXJzdC1jaGlsZDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6NHB4fS5lbC1idXR0b24tZ3JvdXA+LmVsLWJ1dHRvbjpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkLmlzLXJvdW5ke2JvcmRlci1yYWRpdXM6MjBweH0uZWwtYnV0dG9uLWdyb3VwPi5lbC1idXR0b246Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZC5pcy1jaXJjbGV7Ym9yZGVyLXJhZGl1czo1MCV9LmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9uOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXJhZGl1czowfS5lbC1idXR0b24tZ3JvdXA+LmVsLWJ1dHRvbi5pcy1hY3RpdmUsLmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9uOm5vdCguaXMtZGlzYWJsZWQpOmFjdGl2ZSwuZWwtYnV0dG9uLWdyb3VwPi5lbC1idXR0b246bm90KC5pcy1kaXNhYmxlZCk6Zm9jdXMsLmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9uOm5vdCguaXMtZGlzYWJsZWQpOmhvdmVye3otaW5kZXg6MX0uZWwtYnV0dG9uLWdyb3VwPi5lbC1kcm9wZG93bj4uZWwtYnV0dG9ue2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmVsLWNhbGVuZGFye2JhY2tncm91bmQtY29sb3I6I2ZmZn0uZWwtY2FsZW5kYXJfX2hlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzoxMnB4IDIwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0VCRUVGNX0uZWwtYmFja3RvcCwuZWwtcGFnZS1oZWFkZXJ7ZGlzcGxheTotbXMtZmxleGJveH0uZWwtY2FsZW5kYXJfX3RpdGxle2NvbG9yOiMwMDA7YWxpZ24tc2VsZjpjZW50ZXJ9LmVsLWNhbGVuZGFyX19ib2R5e3BhZGRpbmc6MTJweCAyMHB4IDM1cHh9LmVsLWNhbGVuZGFyLXRhYmxle3RhYmxlLWxheW91dDpmaXhlZDt3aWR0aDoxMDAlfS5lbC1jYWxlbmRhci10YWJsZSB0aGVhZCB0aHtwYWRkaW5nOjEycHggMDtjb2xvcjojNjA2MjY2O2ZvbnQtd2VpZ2h0OjQwMH0uZWwtY2FsZW5kYXItdGFibGU6bm90KC5pcy1yYW5nZSkgdGQubmV4dCwuZWwtY2FsZW5kYXItdGFibGU6bm90KC5pcy1yYW5nZSkgdGQucHJldntjb2xvcjojQzBDNENDfS5lbC1iYWNrdG9wLC5lbC1jYWxlbmRhci10YWJsZSB0ZC5pcy10b2RheXtjb2xvcjojNDA5RUZGfS5lbC1jYWxlbmRhci10YWJsZSB0ZHtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRUJFRUY1O2JvcmRlci1yaWdodDoxcHggc29saWQgI0VCRUVGNTt2ZXJ0aWNhbC1hbGlnbjp0b3A7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4ycyBlYXNlfS5lbC1jYWxlbmRhci10YWJsZSB0ZC5pcy1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNGMkY4RkV9LmVsLWNhbGVuZGFyLXRhYmxlIHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3A6MXB4IHNvbGlkICNFQkVFRjV9LmVsLWNhbGVuZGFyLXRhYmxlIHRyIHRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRUJFRUY1fS5lbC1jYWxlbmRhci10YWJsZSB0ci5lbC1jYWxlbmRhci10YWJsZV9fcm93LS1oaWRlLWJvcmRlciB0ZHtib3JkZXItdG9wOm5vbmV9LmVsLWNhbGVuZGFyLXRhYmxlIC5lbC1jYWxlbmRhci1kYXl7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6OHB4O2hlaWdodDo4NXB4fS5lbC1jYWxlbmRhci10YWJsZSAuZWwtY2FsZW5kYXItZGF5OmhvdmVye2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6I0YyRjhGRX0uZWwtYmFja3RvcHtwb3NpdGlvbjpmaXhlZDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjIwcHg7Ym94LXNoYWRvdzowIDAgNnB4IHJnYmEoMCwwLDAsLjEyKTtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjV9LmVsLWJhY2t0b3A6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojRjJGNkZDfS5lbC1wYWdlLWhlYWRlcntkaXNwbGF5OmZsZXg7bGluZS1oZWlnaHQ6MjRweH0uZWwtcGFnZS1oZWFkZXJfX2xlZnR7ZGlzcGxheTpmbGV4O2N1cnNvcjpwb2ludGVyO21hcmdpbi1yaWdodDo0MHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC1wYWdlLWhlYWRlcl9fbGVmdDo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxNnB4O3JpZ2h0Oi0yMHB4O3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7YmFja2dyb3VuZC1jb2xvcjojRENERkU2fS5lbC1jaGVja2JveCwuZWwtY2hlY2tib3hfX2lucHV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcH0uZWwtcGFnZS1oZWFkZXJfX2xlZnQgLmVsLWljb24tYmFja3tmb250LXNpemU6MThweDttYXJnaW4tcmlnaHQ6NnB4O2FsaWduLXNlbGY6Y2VudGVyfS5lbC1wYWdlLWhlYWRlcl9fdGl0bGV7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5lbC1wYWdlLWhlYWRlcl9fY29udGVudHtmb250LXNpemU6MThweDtjb2xvcjojMzAzMTMzfS5lbC1jaGVja2JveHtjb2xvcjojNjA2MjY2O2ZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6MTRweDtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7bWFyZ2luLXJpZ2h0OjMwcHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVke3BhZGRpbmc6OXB4IDIwcHggOXB4IDEwcHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2O2JveC1zaXppbmc6Ym9yZGVyLWJveDtsaW5lLWhlaWdodDpub3JtYWw7aGVpZ2h0OjQwcHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmlzLWNoZWNrZWR7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmlzLWRpc2FibGVke2JvcmRlci1jb2xvcjojRUJFRUY1O2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtY2hlY2tib3guaXMtYm9yZGVyZWQuZWwtY2hlY2tib3gtLW1lZGl1bXtwYWRkaW5nOjdweCAyMHB4IDdweCAxMHB4O2JvcmRlci1yYWRpdXM6NHB4O2hlaWdodDozNnB4fS5lbC1jaGVja2JveC5pcy1ib3JkZXJlZC5lbC1jaGVja2JveC0tbWVkaXVtIC5lbC1jaGVja2JveF9fbGFiZWx7bGluZS1oZWlnaHQ6MTdweDtmb250LXNpemU6MTRweH0uZWwtY2hlY2tib3guaXMtYm9yZGVyZWQuZWwtY2hlY2tib3gtLW1lZGl1bSAuZWwtY2hlY2tib3hfX2lubmVye2hlaWdodDoxNHB4O3dpZHRoOjE0cHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmVsLWNoZWNrYm94LS1zbWFsbHtwYWRkaW5nOjVweCAxNXB4IDVweCAxMHB4O2JvcmRlci1yYWRpdXM6M3B4O2hlaWdodDozMnB4fS5lbC1jaGVja2JveC5pcy1ib3JkZXJlZC5lbC1jaGVja2JveC0tc21hbGwgLmVsLWNoZWNrYm94X19sYWJlbHtsaW5lLWhlaWdodDoxNXB4O2ZvbnQtc2l6ZToxMnB4fS5lbC1jaGVja2JveC5pcy1ib3JkZXJlZC5lbC1jaGVja2JveC0tc21hbGwgLmVsLWNoZWNrYm94X19pbm5lcntoZWlnaHQ6MTJweDt3aWR0aDoxMnB4fS5lbC1jaGVja2JveC5pcy1ib3JkZXJlZC5lbC1jaGVja2JveC0tc21hbGwgLmVsLWNoZWNrYm94X19pbm5lcjo6YWZ0ZXJ7aGVpZ2h0OjZweDt3aWR0aDoycHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmVsLWNoZWNrYm94LS1taW5pe3BhZGRpbmc6M3B4IDE1cHggM3B4IDEwcHg7Ym9yZGVyLXJhZGl1czozcHg7aGVpZ2h0OjI4cHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmVsLWNoZWNrYm94LS1taW5pIC5lbC1jaGVja2JveF9fbGFiZWx7bGluZS1oZWlnaHQ6MTJweDtmb250LXNpemU6MTJweH0uZWwtY2hlY2tib3guaXMtYm9yZGVyZWQuZWwtY2hlY2tib3gtLW1pbmkgLmVsLWNoZWNrYm94X19pbm5lcntoZWlnaHQ6MTJweDt3aWR0aDoxMnB4fS5lbC1jaGVja2JveC5pcy1ib3JkZXJlZC5lbC1jaGVja2JveC0tbWluaSAuZWwtY2hlY2tib3hfX2lubmVyOjphZnRlcntoZWlnaHQ6NnB4O3dpZHRoOjJweH0uZWwtY2hlY2tib3hfX2lucHV0e2N1cnNvcjpwb2ludGVyO291dGxpbmU6MDtsaW5lLWhlaWdodDoxO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtY2hlY2tib3hfX2lucHV0LmlzLWRpc2FibGVkIC5lbC1jaGVja2JveF9faW5uZXJ7YmFja2dyb3VuZC1jb2xvcjojZWRmMmZjO2JvcmRlci1jb2xvcjojRENERkU2O2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtY2hlY2tib3hfX2lucHV0LmlzLWRpc2FibGVkIC5lbC1jaGVja2JveF9faW5uZXI6OmFmdGVye2N1cnNvcjpub3QtYWxsb3dlZDtib3JkZXItY29sb3I6I0MwQzRDQ30uZWwtY2hlY2tib3hfX2lucHV0LmlzLWRpc2FibGVkIC5lbC1jaGVja2JveF9faW5uZXIrLmVsLWNoZWNrYm94X19sYWJlbHtjdXJzb3I6bm90LWFsbG93ZWR9LmVsLWNoZWNrYm94X19pbnB1dC5pcy1kaXNhYmxlZC5pcy1jaGVja2VkIC5lbC1jaGVja2JveF9faW5uZXJ7YmFja2dyb3VuZC1jb2xvcjojRjJGNkZDO2JvcmRlci1jb2xvcjojRENERkU2fS5lbC1jaGVja2JveF9faW5wdXQuaXMtZGlzYWJsZWQuaXMtY2hlY2tlZCAuZWwtY2hlY2tib3hfX2lubmVyOjphZnRlcntib3JkZXItY29sb3I6I0MwQzRDQ30uZWwtY2hlY2tib3hfX2lucHV0LmlzLWRpc2FibGVkLmlzLWluZGV0ZXJtaW5hdGUgLmVsLWNoZWNrYm94X19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiNGMkY2RkM7Ym9yZGVyLWNvbG9yOiNEQ0RGRTZ9LmVsLWNoZWNrYm94X19pbnB1dC5pcy1kaXNhYmxlZC5pcy1pbmRldGVybWluYXRlIC5lbC1jaGVja2JveF9faW5uZXI6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNDMEM0Q0M7Ym9yZGVyLWNvbG9yOiNDMEM0Q0N9LmVsLWNoZWNrYm94X19pbnB1dC5pcy1jaGVja2VkIC5lbC1jaGVja2JveF9faW5uZXIsLmVsLWNoZWNrYm94X19pbnB1dC5pcy1pbmRldGVybWluYXRlIC5lbC1jaGVja2JveF9faW5uZXJ7YmFja2dyb3VuZC1jb2xvcjojNDA5RUZGO2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1jaGVja2JveF9faW5wdXQuaXMtZGlzYWJsZWQrc3Bhbi5lbC1jaGVja2JveF9fbGFiZWx7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLWNoZWNrYm94X19pbnB1dC5pcy1jaGVja2VkIC5lbC1jaGVja2JveF9faW5uZXI6OmFmdGVye3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHNjYWxlWSgxKX0uZWwtY2hlY2tib3hfX2lucHV0LmlzLWNoZWNrZWQrLmVsLWNoZWNrYm94X19sYWJlbHtjb2xvcjojNDA5RUZGfS5lbC1jaGVja2JveF9faW5wdXQuaXMtZm9jdXMgLmVsLWNoZWNrYm94X19pbm5lcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtY2hlY2tib3hfX2lucHV0LmlzLWluZGV0ZXJtaW5hdGUgLmVsLWNoZWNrYm94X19pbm5lcjo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7aGVpZ2h0OjJweDt0cmFuc2Zvcm06c2NhbGUoLjUpO2xlZnQ6MDtyaWdodDowO3RvcDo1cHh9LmVsLWNoZWNrYm94X19pbnB1dC5pcy1pbmRldGVybWluYXRlIC5lbC1jaGVja2JveF9faW5uZXI6OmFmdGVye2Rpc3BsYXk6bm9uZX0uZWwtY2hlY2tib3hfX2lubmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtib3JkZXItcmFkaXVzOjJweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7ei1pbmRleDoxO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4yNXMgY3ViaWMtYmV6aWVyKC43MSwtLjQ2LC4yOSwxLjQ2KSxiYWNrZ3JvdW5kLWNvbG9yIC4yNXMgY3ViaWMtYmV6aWVyKC43MSwtLjQ2LC4yOSwxLjQ2KX0uZWwtY2hlY2tib3hfX2lubmVyOmhvdmVye2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1jaGVja2JveF9faW5uZXI6OmFmdGVye2JveC1zaXppbmc6Y29udGVudC1ib3g7Y29udGVudDpcXFwiXFxcIjtib3JkZXI6MXB4IHNvbGlkICNGRkY7Ym9yZGVyLWxlZnQ6MDtib3JkZXItdG9wOjA7aGVpZ2h0OjdweDtsZWZ0OjRweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MXB4O3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHNjYWxlWSgwKTt3aWR0aDozcHg7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE1cyBlYXNlLWluIC4wNXM7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9LmVsLWNoZWNrYm94X19vcmlnaW5hbHtvcGFjaXR5OjA7b3V0bGluZTowO3Bvc2l0aW9uOmFic29sdXRlO21hcmdpbjowO3dpZHRoOjA7aGVpZ2h0OjA7ei1pbmRleDotMX0uZWwtY2hlY2tib3gtYnV0dG9uLC5lbC1jaGVja2JveC1idXR0b25fX2lubmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC1jaGVja2JveF9fbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1sZWZ0OjEwcHg7bGluZS1oZWlnaHQ6MTlweDtmb250LXNpemU6MTRweH0uZWwtY2hlY2tib3g6bGFzdC1vZi10eXBle21hcmdpbi1yaWdodDowfS5lbC1jaGVja2JveC1idXR0b25fX2lubmVye2xpbmUtaGVpZ2h0OjE7Zm9udC13ZWlnaHQ6NTAwO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDojRkZGO2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtib3JkZXItbGVmdDowO2NvbG9yOiM2MDYyNjY7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O291dGxpbmU6MDttYXJnaW46MDt0cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpO3BhZGRpbmc6MTJweCAyMHB4O2ZvbnQtc2l6ZToxNHB4O2JvcmRlci1yYWRpdXM6MH0uZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lci5pcy1yb3VuZHtwYWRkaW5nOjEycHggMjBweH0uZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lcjpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1jaGVja2JveC1idXR0b25fX2lubmVyIFtjbGFzcyo9ZWwtaWNvbi1de2xpbmUtaGVpZ2h0Oi45fS5lbC1jaGVja2JveC1idXR0b25fX2lubmVyIFtjbGFzcyo9ZWwtaWNvbi1dK3NwYW57bWFyZ2luLWxlZnQ6NXB4fS5lbC1jaGVja2JveC1idXR0b25fX29yaWdpbmFse29wYWNpdHk6MDtvdXRsaW5lOjA7cG9zaXRpb246YWJzb2x1dGU7bWFyZ2luOjA7ei1pbmRleDotMX0uZWwtcmFkaW8sLmVsLXJhZGlvX19pbm5lciwuZWwtcmFkaW9fX2lucHV0e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC1jaGVja2JveC1idXR0b24uaXMtY2hlY2tlZCAuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjtib3JkZXItY29sb3I6IzQwOUVGRjtib3gtc2hhZG93Oi0xcHggMCAwIDAgIzhjYzVmZn0uZWwtY2hlY2tib3gtYnV0dG9uLmlzLWNoZWNrZWQ6Zmlyc3QtY2hpbGQgLmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXJ7Ym9yZGVyLWxlZnQtY29sb3I6IzQwOUVGRn0uZWwtY2hlY2tib3gtYnV0dG9uLmlzLWRpc2FibGVkIC5lbC1jaGVja2JveC1idXR0b25fX2lubmVye2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWNvbG9yOiNFQkVFRjU7Ym94LXNoYWRvdzpub25lfS5lbC1jaGVja2JveC1idXR0b24uaXMtZGlzYWJsZWQ6Zmlyc3QtY2hpbGQgLmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXJ7Ym9yZGVyLWxlZnQtY29sb3I6I0VCRUVGNX0uZWwtY2hlY2tib3gtYnV0dG9uOmZpcnN0LWNoaWxkIC5lbC1jaGVja2JveC1idXR0b25fX2lubmVye2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRENERkU2O2JvcmRlci1yYWRpdXM6NHB4IDAgMCA0cHg7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH0uZWwtY2hlY2tib3gtYnV0dG9uLmlzLWZvY3VzIC5lbC1jaGVja2JveC1idXR0b25fX2lubmVye2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1jaGVja2JveC1idXR0b246bGFzdC1jaGlsZCAuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lcntib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwfS5lbC1jaGVja2JveC1idXR0b24tLW1lZGl1bSAuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lcntwYWRkaW5nOjEwcHggMjBweDtmb250LXNpemU6MTRweDtib3JkZXItcmFkaXVzOjB9LmVsLWNoZWNrYm94LWJ1dHRvbi0tbWVkaXVtIC5lbC1jaGVja2JveC1idXR0b25fX2lubmVyLmlzLXJvdW5ke3BhZGRpbmc6MTBweCAyMHB4fS5lbC1jaGVja2JveC1idXR0b24tLXNtYWxsIC5lbC1jaGVja2JveC1idXR0b25fX2lubmVye3BhZGRpbmc6OXB4IDE1cHg7Zm9udC1zaXplOjEycHg7Ym9yZGVyLXJhZGl1czowfS5lbC1jaGVja2JveC1idXR0b24tLXNtYWxsIC5lbC1jaGVja2JveC1idXR0b25fX2lubmVyLmlzLXJvdW5ke3BhZGRpbmc6OXB4IDE1cHh9LmVsLWNoZWNrYm94LWJ1dHRvbi0tbWluaSAuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lcntwYWRkaW5nOjdweCAxNXB4O2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1yYWRpdXM6MH0uZWwtY2hlY2tib3gtYnV0dG9uLS1taW5pIC5lbC1jaGVja2JveC1idXR0b25fX2lubmVyLmlzLXJvdW5ke3BhZGRpbmc6N3B4IDE1cHh9LmVsLWNoZWNrYm94LWdyb3Vwe2ZvbnQtc2l6ZTowfS5lbC1hdmF0YXIsLmVsLWNhc2NhZGVyLXBhbmVsLC5lbC1yYWRpbywuZWwtcmFkaW8tLW1lZGl1bS5pcy1ib3JkZXJlZCAuZWwtcmFkaW9fX2xhYmVsLC5lbC1yYWRpb19fbGFiZWx7Zm9udC1zaXplOjE0cHh9LmVsLXJhZGlve2NvbG9yOiM2MDYyNjY7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDttYXJnaW4tcmlnaHQ6MzBweH0uZWwtY2FzY2FkZXItbm9kZT4uZWwtcmFkaW8sLmVsLXJhZGlvOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmVsLXJhZGlvLmlzLWJvcmRlcmVke3BhZGRpbmc6MTJweCAyMHB4IDAgMTBweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MXB4IHNvbGlkICNEQ0RGRTY7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDo0MHB4fS5lbC1jYXNjYWRlci1tZW51LC5lbC1jYXNjYWRlci1tZW51X19saXN0LC5lbC1yYWRpb19faW5uZXJ7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXJhZGlvLmlzLWJvcmRlcmVkLmlzLWNoZWNrZWR7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLXJhZGlvLmlzLWJvcmRlcmVkLmlzLWRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZDtib3JkZXItY29sb3I6I0VCRUVGNX0uZWwtcmFkaW9fX2lucHV0LmlzLWRpc2FibGVkIC5lbC1yYWRpb19faW5uZXIsLmVsLXJhZGlvX19pbnB1dC5pcy1kaXNhYmxlZC5pcy1jaGVja2VkIC5lbC1yYWRpb19faW5uZXJ7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBO2JvcmRlci1jb2xvcjojRTRFN0VEfS5lbC1yYWRpby5pcy1ib3JkZXJlZCsuZWwtcmFkaW8uaXMtYm9yZGVyZWR7bWFyZ2luLWxlZnQ6MTBweH0uZWwtcmFkaW8tLW1lZGl1bS5pcy1ib3JkZXJlZHtwYWRkaW5nOjEwcHggMjBweCAwIDEwcHg7Ym9yZGVyLXJhZGl1czo0cHg7aGVpZ2h0OjM2cHh9LmVsLXJhZGlvLS1taW5pLmlzLWJvcmRlcmVkIC5lbC1yYWRpb19fbGFiZWwsLmVsLXJhZGlvLS1zbWFsbC5pcy1ib3JkZXJlZCAuZWwtcmFkaW9fX2xhYmVse2ZvbnQtc2l6ZToxMnB4fS5lbC1yYWRpby0tbWVkaXVtLmlzLWJvcmRlcmVkIC5lbC1yYWRpb19faW5uZXJ7aGVpZ2h0OjE0cHg7d2lkdGg6MTRweH0uZWwtcmFkaW8tLXNtYWxsLmlzLWJvcmRlcmVke3BhZGRpbmc6OHB4IDE1cHggMCAxMHB4O2JvcmRlci1yYWRpdXM6M3B4O2hlaWdodDozMnB4fS5lbC1yYWRpby0tc21hbGwuaXMtYm9yZGVyZWQgLmVsLXJhZGlvX19pbm5lcntoZWlnaHQ6MTJweDt3aWR0aDoxMnB4fS5lbC1yYWRpby0tbWluaS5pcy1ib3JkZXJlZHtwYWRkaW5nOjZweCAxNXB4IDAgMTBweDtib3JkZXItcmFkaXVzOjNweDtoZWlnaHQ6MjhweH0uZWwtcmFkaW8tLW1pbmkuaXMtYm9yZGVyZWQgLmVsLXJhZGlvX19pbm5lcntoZWlnaHQ6MTJweDt3aWR0aDoxMnB4fS5lbC1yYWRpb19faW5wdXR7d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyO291dGxpbmU6MDtsaW5lLWhlaWdodDoxO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtcmFkaW9fX2lucHV0LmlzLWRpc2FibGVkIC5lbC1yYWRpb19faW5uZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1yYWRpb19faW5wdXQuaXMtZGlzYWJsZWQgLmVsLXJhZGlvX19pbm5lcjo6YWZ0ZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQX0uZWwtcmFkaW9fX2lucHV0LmlzLWRpc2FibGVkIC5lbC1yYWRpb19faW5uZXIrLmVsLXJhZGlvX19sYWJlbHtjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXJhZGlvX19pbnB1dC5pcy1kaXNhYmxlZC5pcy1jaGVja2VkIC5lbC1yYWRpb19faW5uZXI6OmFmdGVye2JhY2tncm91bmQtY29sb3I6I0MwQzRDQ30uZWwtcmFkaW9fX2lucHV0LmlzLWRpc2FibGVkK3NwYW4uZWwtcmFkaW9fX2xhYmVse2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1yYWRpb19faW5wdXQuaXMtY2hlY2tlZCAuZWwtcmFkaW9fX2lubmVye2JvcmRlci1jb2xvcjojNDA5RUZGO2JhY2tncm91bmQ6IzQwOUVGRn0uZWwtcmFkaW9fX2lucHV0LmlzLWNoZWNrZWQgLmVsLXJhZGlvX19pbm5lcjo6YWZ0ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDEpfS5lbC1yYWRpb19faW5wdXQuaXMtY2hlY2tlZCsuZWwtcmFkaW9fX2xhYmVse2NvbG9yOiM0MDlFRkZ9LmVsLXJhZGlvX19pbnB1dC5pcy1mb2N1cyAuZWwtcmFkaW9fX2lubmVye2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1yYWRpb19faW5uZXJ7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2O2JvcmRlci1yYWRpdXM6MTAwJTt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2JhY2tncm91bmQtY29sb3I6I0ZGRjtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXJhZGlvX19pbm5lcjpob3Zlcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtcmFkaW9fX2lubmVyOjphZnRlcnt3aWR0aDo0cHg7aGVpZ2h0OjRweDtib3JkZXItcmFkaXVzOjEwMCU7YmFja2dyb3VuZC1jb2xvcjojRkZGO2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE1cyBlYXNlLWlufS5lbC1yYWRpb19fb3JpZ2luYWx7b3BhY2l0eTowO291dGxpbmU6MDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO21hcmdpbjowfS5lbC1yYWRpbzpmb2N1czpub3QoLmlzLWZvY3VzKTpub3QoOmFjdGl2ZSk6bm90KC5pcy1kaXNhYmxlZCkgLmVsLXJhZGlvX19pbm5lcntib3gtc2hhZG93OjAgMCAycHggMnB4ICM0MDlFRkZ9LmVsLXJhZGlvX19sYWJlbHtwYWRkaW5nLWxlZnQ6MTBweH0uZWwtc2Nyb2xsYmFye292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtc2Nyb2xsYmFyOmFjdGl2ZT4uZWwtc2Nyb2xsYmFyX19iYXIsLmVsLXNjcm9sbGJhcjpmb2N1cz4uZWwtc2Nyb2xsYmFyX19iYXIsLmVsLXNjcm9sbGJhcjpob3Zlcj4uZWwtc2Nyb2xsYmFyX19iYXJ7b3BhY2l0eToxO3RyYW5zaXRpb246b3BhY2l0eSAzNDBtcyBlYXNlLW91dH0uZWwtc2Nyb2xsYmFyX193cmFwe292ZXJmbG93OnNjcm9sbDtoZWlnaHQ6MTAwJX0uZWwtc2Nyb2xsYmFyX193cmFwLS1oaWRkZW4tZGVmYXVsdHtzY3JvbGxiYXItd2lkdGg6bm9uZX0uZWwtc2Nyb2xsYmFyX193cmFwLS1oaWRkZW4tZGVmYXVsdDo6LXdlYmtpdC1zY3JvbGxiYXJ7d2lkdGg6MDtoZWlnaHQ6MH0uZWwtc2Nyb2xsYmFyX190aHVtYntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czppbmhlcml0O2JhY2tncm91bmQtY29sb3I6cmdiYSgxNDQsMTQ3LDE1MywuMyk7dHJhbnNpdGlvbjouM3MgYmFja2dyb3VuZC1jb2xvcn0uZWwtc2Nyb2xsYmFyX190aHVtYjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTQ0LDE0NywxNTMsLjUpfS5lbC1zY3JvbGxiYXJfX2Jhcntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoycHg7Ym90dG9tOjJweDt6LWluZGV4OjE7Ym9yZGVyLXJhZGl1czo0cHg7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAxMjBtcyBlYXNlLW91dH0uZWwtc2Nyb2xsYmFyX19iYXIuaXMtdmVydGljYWx7d2lkdGg6NnB4O3RvcDoycHh9LmVsLXNjcm9sbGJhcl9fYmFyLmlzLXZlcnRpY2FsPmRpdnt3aWR0aDoxMDAlfS5lbC1zY3JvbGxiYXJfX2Jhci5pcy1ob3Jpem9udGFse2hlaWdodDo2cHg7bGVmdDoycHh9LmVsLXNjcm9sbGJhcl9fYmFyLmlzLWhvcml6b250YWw+ZGl2e2hlaWdodDoxMDAlfS5lbC1jYXNjYWRlci1wYW5lbHtkaXNwbGF5OmZsZXg7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLWNhc2NhZGVyLXBhbmVsLmlzLWJvcmRlcmVke2JvcmRlcjoxcHggc29saWQgI0U0RTdFRDtib3JkZXItcmFkaXVzOjRweH0uZWwtY2FzY2FkZXItbWVudXttaW4td2lkdGg6MTgwcHg7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOiM2MDYyNjY7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCAjRTRFN0VEfS5lbC1jYXNjYWRlci1tZW51Omxhc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0Om5vbmV9LmVsLWNhc2NhZGVyLW1lbnVfX3dyYXB7aGVpZ2h0OjIwNHB4fS5lbC1jYXNjYWRlci1tZW51X19saXN0e3Bvc2l0aW9uOnJlbGF0aXZlO21pbi1oZWlnaHQ6MTAwJTttYXJnaW46MDtwYWRkaW5nOjZweCAwO2xpc3Qtc3R5bGU6bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWNhc2NhZGVyLW1lbnVfX2hvdmVyLXpvbmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9pbnRlci1ldmVudHM6bm9uZX0uZWwtY2FzY2FkZXItbWVudV9fZW1wdHktdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojQzBDNENDfS5lbC1jYXNjYWRlci1ub2Rle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzowIDMwcHggMCAyMHB4O2hlaWdodDozNHB4O2xpbmUtaGVpZ2h0OjM0cHg7b3V0bGluZTowfS5lbC1jYXNjYWRlci1ub2RlLmlzLXNlbGVjdGFibGUuaW4tYWN0aXZlLXBhdGh7Y29sb3I6IzYwNjI2Nn0uZWwtY2FzY2FkZXItbm9kZS5pbi1hY3RpdmUtcGF0aCwuZWwtY2FzY2FkZXItbm9kZS5pcy1hY3RpdmUsLmVsLWNhc2NhZGVyLW5vZGUuaXMtc2VsZWN0YWJsZS5pbi1jaGVja2VkLXBhdGh7Y29sb3I6IzQwOUVGRjtmb250LXdlaWdodDo3MDB9LmVsLWNhc2NhZGVyLW5vZGU6bm90KC5pcy1kaXNhYmxlZCl7Y3Vyc29yOnBvaW50ZXJ9LmVsLWNhc2NhZGVyLW5vZGU6bm90KC5pcy1kaXNhYmxlZCk6Zm9jdXMsLmVsLWNhc2NhZGVyLW5vZGU6bm90KC5pcy1kaXNhYmxlZCk6aG92ZXJ7YmFja2dyb3VuZDojRjVGN0ZBfS5lbC1jYXNjYWRlci1ub2RlLmlzLWRpc2FibGVke2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1jYXNjYWRlci1ub2RlX19wcmVmaXh7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMHB4fS5lbC1jYXNjYWRlci1ub2RlX19wb3N0Zml4e3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwcHh9LmVsLWNhc2NhZGVyLW5vZGVfX2xhYmVse2ZsZXg6MTtwYWRkaW5nOjAgMTBweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmVsLWNhc2NhZGVyLW5vZGU+LmVsLXJhZGlvIC5lbC1yYWRpb19fbGFiZWx7cGFkZGluZy1sZWZ0OjB9LmVsLWF2YXRhcntkaXNwbGF5OmlubGluZS1ibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7dGV4dC1hbGlnbjpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOiNmZmY7YmFja2dyb3VuZDojQzBDNENDO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bGluZS1oZWlnaHQ6NDBweH0uZWwtZHJhd2VyLC5lbC1kcmF3ZXJfX2JvZHk+Knstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtYXZhdGFyPmltZ3tkaXNwbGF5OmJsb2NrO2hlaWdodDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtZW1wdHlfX2ltYWdlIGltZywuZWwtZW1wdHlfX2ltYWdlIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3A7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uZWwtYXZhdGFyLS1jaXJjbGV7Ym9yZGVyLXJhZGl1czo1MCV9LmVsLWF2YXRhci0tc3F1YXJle2JvcmRlci1yYWRpdXM6NHB4fS5lbC1hdmF0YXItLWljb257Zm9udC1zaXplOjE4cHh9LmVsLWF2YXRhci0tbGFyZ2V7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtsaW5lLWhlaWdodDo0MHB4fS5lbC1hdmF0YXItLW1lZGl1bXt3aWR0aDozNnB4O2hlaWdodDozNnB4O2xpbmUtaGVpZ2h0OjM2cHh9LmVsLWF2YXRhci0tc21hbGx7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fUBrZXlmcmFtZXMgZWwtZHJhd2VyLWZhZGUtaW57MCV7b3BhY2l0eTowfTEwMCV7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIHJ0bC1kcmF3ZXItaW57MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlLDApfTEwMCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfX1Aa2V5ZnJhbWVzIHJ0bC1kcmF3ZXItb3V0ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0xMDAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSwwKX19QGtleWZyYW1lcyBsdHItZHJhd2VyLWluezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUsMCl9MTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCl9fUBrZXlmcmFtZXMgbHRyLWRyYXdlci1vdXR7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfTEwMCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSwwKX19QGtleWZyYW1lcyB0dGItZHJhd2VyLWluezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMTAwJSl9MTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCl9fUBrZXlmcmFtZXMgdHRiLWRyYXdlci1vdXR7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfTEwMCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0xMDAlKX19QGtleWZyYW1lcyBidHQtZHJhd2VyLWluezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwxMDAlKX0xMDAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX19QGtleWZyYW1lcyBidHQtZHJhd2VyLW91dHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCl9MTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMTAwJSl9fS5lbC1kcmF3ZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQtY29sb3I6I0ZGRjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaGFkb3c6MCA4cHggMTBweCAtNXB4IHJnYmEoMCwwLDAsLjIpLDAgMTZweCAyNHB4IDJweCByZ2JhKDAsMCwwLC4xNCksMCA2cHggMzBweCA1cHggcmdiYSgwLDAsMCwuMTIpO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lOjB9LmVsLWRyYXdlci5ydGx7YW5pbWF0aW9uOnJ0bC1kcmF3ZXItb3V0IC4zcztyaWdodDowfS5lbC1kcmF3ZXJfX29wZW4gLmVsLWRyYXdlci5ydGx7YW5pbWF0aW9uOnJ0bC1kcmF3ZXItaW4gLjNzIDFtc30uZWwtZHJhd2VyLmx0cnthbmltYXRpb246bHRyLWRyYXdlci1vdXQgLjNzO2xlZnQ6MH0uZWwtZHJhd2VyX19vcGVuIC5lbC1kcmF3ZXIubHRye2FuaW1hdGlvbjpsdHItZHJhd2VyLWluIC4zcyAxbXN9LmVsLWRyYXdlci50dGJ7YW5pbWF0aW9uOnR0Yi1kcmF3ZXItb3V0IC4zczt0b3A6MH0uZWwtZHJhd2VyX19vcGVuIC5lbC1kcmF3ZXIudHRie2FuaW1hdGlvbjp0dGItZHJhd2VyLWluIC4zcyAxbXN9LmVsLWRyYXdlci5idHR7YW5pbWF0aW9uOmJ0dC1kcmF3ZXItb3V0IC4zcztib3R0b206MH0uZWwtZHJhd2VyX19vcGVuIC5lbC1kcmF3ZXIuYnR0e2FuaW1hdGlvbjpidHQtZHJhd2VyLWluIC4zcyAxbXN9LmVsLWRyYXdlcl9fd3JhcHBlcntwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luOjB9LmVsLWRyYXdlcl9faGVhZGVye2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojNzI3NjdiO2Rpc3BsYXk6ZmxleDttYXJnaW4tYm90dG9tOjMycHg7cGFkZGluZzoyMHB4IDIwcHggMH0uZWwtZHJhd2VyX19oZWFkZXI+OmZpcnN0LWNoaWxke2ZsZXg6MX0uZWwtZHJhd2VyX190aXRsZXttYXJnaW46MDtmbGV4OjE7bGluZS1oZWlnaHQ6aW5oZXJpdDtmb250LXNpemU6MXJlbX0uZWwtZHJhd2VyX19jbG9zZS1idG57Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjIwcHg7Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5lbC1kcmF3ZXJfX2JvZHl7ZmxleDoxO292ZXJmbG93OmF1dG99LmVsLWRyYXdlcl9fYm9keT4qe2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtZHJhd2VyLmx0ciwuZWwtZHJhd2VyLnJ0bHtoZWlnaHQ6MTAwJTt0b3A6MDtib3R0b206MH0uZWwtZHJhd2VyLmJ0dCwuZWwtZHJhd2VyLnR0Ynt3aWR0aDoxMDAlO2xlZnQ6MDtyaWdodDowfS5lbC1kcmF3ZXJfX2NvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjA7cmlnaHQ6MDt0b3A6MDtib3R0b206MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5lbC1kcmF3ZXItZmFkZS1lbnRlci1hY3RpdmV7YW5pbWF0aW9uOmVsLWRyYXdlci1mYWRlLWluIC4zc30uZWwtZHJhd2VyLWZhZGUtbGVhdmUtYWN0aXZle2FuaW1hdGlvbjplbC1kcmF3ZXItZmFkZS1pbiAuM3MgcmV2ZXJzZX0uZWwtc3RhdGlzdGlje3dpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MDtjb2xvcjojMDAwO2ZvbnQtdmFyaWFudDp0YWJ1bGFyLW51bXM7bGlzdC1zdHlsZTpub25lO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpcXFwidG51bVxcXCI7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXN0YXRpc3RpYyAuaGVhZHttYXJnaW4tYm90dG9tOjRweDtjb2xvcjojNjA2MjY2O2ZvbnQtc2l6ZToxM3B4fS5lbC1zdGF0aXN0aWMgLmNvbntmb250LWZhbWlseTpTYW5zLXNlcmlmO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojMzAzMTMzfS5lbC1zdGF0aXN0aWMgLmNvbiAubnVtYmVye2ZvbnQtc2l6ZToyMHB4O3BhZGRpbmc6MCA0cHh9LmVsLXN0YXRpc3RpYyAuY29uIHNwYW57ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjA7bGluZS1oZWlnaHQ6MTAwJX0uZWwtcG9wY29uZmlybV9fbWFpbiwuZWwtc2tlbGV0b25fX2ltYWdle2Rpc3BsYXk6LW1zLWZsZXhib3g7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO2Rpc3BsYXk6LXdlYmtpdC1ib3h9LmVsLXBvcGNvbmZpcm1fX21haW57ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uZWwtcG9wY29uZmlybV9faWNvbnttYXJnaW4tcmlnaHQ6NXB4fS5lbC1wb3Bjb25maXJtX19hY3Rpb257dGV4dC1hbGlnbjpyaWdodDttYXJnaW46MH1Aa2V5ZnJhbWVzIGVsLXNrZWxldG9uLWxvYWRpbmd7MCV7YmFja2dyb3VuZC1wb3NpdGlvbjoxMDAlIDUwJX0xMDAle2JhY2tncm91bmQtcG9zaXRpb246MCA1MCV9fS5lbC1za2VsZXRvbnt3aWR0aDoxMDAlfS5lbC1za2VsZXRvbl9fZmlyc3QtbGluZSwuZWwtc2tlbGV0b25fX3BhcmFncmFwaHtoZWlnaHQ6MTZweDttYXJnaW4tdG9wOjE2cHg7YmFja2dyb3VuZDojZjJmMmYyfS5lbC1za2VsZXRvbi5pcy1hbmltYXRlZCAuZWwtc2tlbGV0b25fX2l0ZW17YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsI2YyZjJmMiAyNSUsI2U2ZTZlNiAzNyUsI2YyZjJmMiA2MyUpO2JhY2tncm91bmQtc2l6ZTo0MDAlIDEwMCU7YW5pbWF0aW9uOmVsLXNrZWxldG9uLWxvYWRpbmcgMS40cyBlYXNlIGluZmluaXRlfS5lbC1za2VsZXRvbl9faXRlbXtiYWNrZ3JvdW5kOiNmMmYyZjI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7d2lkdGg6MTAwJX0uZWwtc2tlbGV0b25fX2NpcmNsZXtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDozNnB4O2hlaWdodDozNnB4O2xpbmUtaGVpZ2h0OjM2cHh9LmVsLXNrZWxldG9uX19jaXJjbGUtLWxne3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bGluZS1oZWlnaHQ6NDBweH0uZWwtc2tlbGV0b25fX2NpcmNsZS0tbWR7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5lbC1za2VsZXRvbl9fYnV0dG9ue2hlaWdodDo0MHB4O3dpZHRoOjY0cHg7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLXNrZWxldG9uX19we3dpZHRoOjEwMCV9LmVsLXNrZWxldG9uX19wLmlzLWxhc3R7d2lkdGg6NjElfS5lbC1za2VsZXRvbl9fcC5pcy1maXJzdHt3aWR0aDozMyV9LmVsLXNrZWxldG9uX190ZXh0e3dpZHRoOjEwMCU7aGVpZ2h0OjEzcHh9LmVsLXNrZWxldG9uX19jYXB0aW9ue2hlaWdodDoxMnB4fS5lbC1za2VsZXRvbl9faDF7aGVpZ2h0OjIwcHh9LmVsLXNrZWxldG9uX19oM3toZWlnaHQ6MThweH0uZWwtc2tlbGV0b25fX2g1e2hlaWdodDoxNnB4fS5lbC1za2VsZXRvbl9faW1hZ2V7d2lkdGg6dW5zZXQ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci1yYWRpdXM6MH0uZWwtc2tlbGV0b25fX2ltYWdlIHN2Z3tmaWxsOiNEQ0RERTA7d2lkdGg6MjIlO2hlaWdodDoyMiV9LmVsLWVtcHR5e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6NDBweCAwfS5lbC1lbXB0eV9faW1hZ2V7d2lkdGg6MTYwcHh9LmVsLWVtcHR5X19pbWFnZSBpbWd7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lOy1vLW9iamVjdC1maXQ6Y29udGFpbjtvYmplY3QtZml0OmNvbnRhaW59LmVsLWVtcHR5X19pbWFnZSBzdmd7ZmlsbDojRENEREUwfS5lbC1lbXB0eV9fZGVzY3JpcHRpb257bWFyZ2luLXRvcDoyMHB4fS5lbC1lbXB0eV9fZGVzY3JpcHRpb24gcHttYXJnaW46MDtmb250LXNpemU6MTRweDtjb2xvcjojOTA5Mzk5fS5lbC1lbXB0eV9fYm90dG9tLC5lbC1yZXN1bHRfX3RpdGxle21hcmdpbi10b3A6MjBweH0uZWwtZGVzY3JpcHRpb25ze2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LXNpemU6MTRweDtjb2xvcjojMzAzMTMzfS5lbC1kZXNjcmlwdGlvbnNfX2hlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweH0uZWwtZGVzY3JpcHRpb25zX190aXRsZXtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDB9LmVsLWRlc2NyaXB0aW9ucy0tbWluaSwuZWwtZGVzY3JpcHRpb25zLS1zbWFsbHtmb250LXNpemU6MTJweH0uZWwtZGVzY3JpcHRpb25zX19ib2R5e2NvbG9yOiM2MDYyNjY7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC1kZXNjcmlwdGlvbnNfX2JvZHkgLmVsLWRlc2NyaXB0aW9uc19fdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7dGFibGUtbGF5b3V0OmZpeGVkfS5lbC1kZXNjcmlwdGlvbnNfX2JvZHkgLmVsLWRlc2NyaXB0aW9uc19fdGFibGUgLmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jZWxse2JveC1zaXppbmc6Ym9yZGVyLWJveDt0ZXh0LWFsaWduOmxlZnQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNX0uZWwtZGVzY3JpcHRpb25zX19ib2R5IC5lbC1kZXNjcmlwdGlvbnNfX3RhYmxlIC5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY2VsbC5pcy1sZWZ0e3RleHQtYWxpZ246bGVmdH0uZWwtZGVzY3JpcHRpb25zX19ib2R5IC5lbC1kZXNjcmlwdGlvbnNfX3RhYmxlIC5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY2VsbC5pcy1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLWRlc2NyaXB0aW9uc19fYm9keSAuZWwtZGVzY3JpcHRpb25zX190YWJsZSAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGwuaXMtcmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uZWwtZGVzY3JpcHRpb25zIC5pcy1ib3JkZXJlZHt0YWJsZS1sYXlvdXQ6YXV0b30uZWwtZGVzY3JpcHRpb25zIC5pcy1ib3JkZXJlZCAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7Ym9yZGVyOjFweCBzb2xpZCAjRUJFRUY1O3BhZGRpbmc6MTJweCAxMHB4fS5lbC1kZXNjcmlwdGlvbnMgOm5vdCguaXMtYm9yZGVyZWQpIC5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY2VsbHtwYWRkaW5nLWJvdHRvbToxMnB4fS5lbC1kZXNjcmlwdGlvbnMtLW1lZGl1bS5pcy1ib3JkZXJlZCAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZzoxMHB4fS5lbC1kZXNjcmlwdGlvbnMtLW1lZGl1bTpub3QoLmlzLWJvcmRlcmVkKSAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZy1ib3R0b206MTBweH0uZWwtZGVzY3JpcHRpb25zLS1zbWFsbC5pcy1ib3JkZXJlZCAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZzo4cHggMTBweH0uZWwtZGVzY3JpcHRpb25zLS1zbWFsbDpub3QoLmlzLWJvcmRlcmVkKSAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZy1ib3R0b206OHB4fS5lbC1kZXNjcmlwdGlvbnMtLW1pbmkuaXMtYm9yZGVyZWQgLmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jZWxse3BhZGRpbmc6NnB4IDEwcHh9LmVsLWRlc2NyaXB0aW9ucy0tbWluaTpub3QoLmlzLWJvcmRlcmVkKSAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZy1ib3R0b206NnB4fS5lbC1kZXNjcmlwdGlvbnMtaXRlbXt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jb250YWluZXJ7ZGlzcGxheTpmbGV4fS5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY29udGFpbmVyIC5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY29udGVudCwuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NvbnRhaW5lciAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2xhYmVse2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmV9LmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jb250YWluZXIgLmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jb250ZW50e2ZsZXg6MX0uZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2xhYmVsLmhhcy1jb2xvbjo6YWZ0ZXJ7Y29udGVudDonOic7cG9zaXRpb246cmVsYXRpdmU7dG9wOi0uNXB4fS5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fbGFiZWwuaXMtYm9yZGVyZWQtbGFiZWx7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiM5MDkzOTk7YmFja2dyb3VuZDojZmFmYWZhfS5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fbGFiZWw6bm90KC5pcy1ib3JkZXJlZC1sYWJlbCl7bWFyZ2luLXJpZ2h0OjEwcHh9LmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jb250ZW50e3dvcmQtYnJlYWs6YnJlYWstd29yZDtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LmVsLXJlc3VsdHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3RleHQtYWxpZ246Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjQwcHggMzBweH0uZWwtcmVzdWx0X19pY29uIHN2Z3t3aWR0aDo2NHB4O2hlaWdodDo2NHB4fS5lbC1yZXN1bHRfX3RpdGxlIHB7bWFyZ2luOjA7Zm9udC1zaXplOjIwcHg7Y29sb3I6IzMwMzEzMztsaW5lLWhlaWdodDoxLjN9LmVsLXJlc3VsdF9fc3VidGl0bGV7bWFyZ2luLXRvcDoxMHB4fS5lbC1yZXN1bHRfX3N1YnRpdGxlIHB7bWFyZ2luOjA7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzYwNjI2NjtsaW5lLWhlaWdodDoxLjN9LmVsLXJlc3VsdF9fZXh0cmF7bWFyZ2luLXRvcDozMHB4fS5lbC1yZXN1bHQgLmljb24tc3VjY2Vzc3tmaWxsOiM2N0MyM0F9LmVsLXJlc3VsdCAuaWNvbi1lcnJvcntmaWxsOiNGNTZDNkN9LmVsLXJlc3VsdCAuaWNvbi1pbmZve2ZpbGw6IzkwOTM5OX0uZWwtcmVzdWx0IC5pY29uLXdhcm5pbmd7ZmlsbDojRTZBMjNDfVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9pbmRleC5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCLENBQUMsV0FBVyx5QkFBeUIsQ0FBQyxxSEFBZ0csQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsdUNBQXVDLG1DQUFtQyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDLGtDQUFrQyxDQUFDLGlDQUFpQyxDQUFDLGdDQUFnQyxlQUFlLENBQUMsaUNBQWlDLGVBQWUsQ0FBQyx5QkFBeUIsZUFBZSxDQUFDLDhCQUE4QixlQUFlLENBQUMseUJBQXlCLGVBQWUs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QUFDLGNBQWMsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsU0FBUyxDQUFDLHFCQUFxQixlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGNBQWMsZUFBZSxDQUFDLHFCQUFxQixxQkFBcUIsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsZUFBZSxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsY0FBYyxlQUFlLENBQUMscUJBQXFCLHFCQUFxQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxjQUFjLFdBQVcsQ0FBQyxxQkFBcUIsaUJBQWlCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsVUFBVSxDQUFDLGNBQWMsZUFBZSxDQUFDLHFCQUFxQixxQkFBcUIsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsZUFBZSxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsY0FBYyxlQUFlLENBQUMscUJBQXFCLHFCQUFxQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxjQUFjLFNBQVMsQ0FBQyxxQkFBcUIsZUFBZSxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsZUFBZSxDQUFDLHFCQUFxQixxQkFBcUIsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsZUFBZSxDQUFD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QUFXLENBQUMscUJBQXFCLGlCQUFpQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsZUFBZSxDQUFDLHFCQUFxQixxQkFBcUIsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsZUFBZSxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsY0FBYyxTQUFTLENBQUMscUJBQXFCLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsY0FBYyxlQUFlLENBQUMscUJBQXFCLHFCQUFxQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsV0FBVyxDQUFDLHFCQUFxQixpQkFBaUIsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsV0FBVyxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxVQUFVLENBQUMsY0FBYyxlQUFlLENBQUMscUJBQXFCLHFCQUFxQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsVUFBVSxDQUFDLHFCQUFxQixnQkFBZ0IsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsVUFBVSxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyx5Q0FBeUMsYUFBYSxZQUFZLENBQUMsUUFBUSxDQUFDLG9CQUFvQixhQUFhLENBQUMsa0JBQWtCLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGFBQWEsY0FBYyxDQUFDLG9CQUFvQixvQkFBb0IsQ0FBQyxrQkFBa0IsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGtCQUFrQixpQkFBaUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxjQUFjLENBQUMsb0JBQW9CLG9CQUFvQixDQUFDLGtCQUFrQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxhQUFhLFdBQVcsQ0FBQyxvQkFBb0IsaUJBQWlCLENBQUMsa0JBQWtCLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsaUJBQWlCLENBQUMsVUFBVSxDQUFDLGFBQWEsZUFBZSxDQUFDLG9CQUFvQixxQkFBcUIsQ0FBQyxrQkFBa0IsaUJBQWlCLENBQUMsZUFBZSxDQUFDLGtCQUFrQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsYUFBYSxlQUFlLENBQUMsb0JBQW9CLHFCQUFxQixDQUFDLGtCQUFrQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxhQUFhLFNBQVMsQ0FBQyxvQkFBb0IsZUFBZSxDQUFDLGtCQUFrQixpQkFBaUIsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLGVBQWUsQ0FBQyxvQkFBb0IscUJBQXFCLENBQUMsa0JBQWtCLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGFBQWEsZUFBZSxDQUFDLG9CQUFvQixxQkFBcUIsQ0FBQyxrQkFBa0IsaUJBQWlCLENBQUMsZUFBZSxDQUFDLGtCQUFrQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsYUFBYSxXQUFXLENBQUMsb0JBQW9CLGlCQUFpQixDQUFDLGtCQUFrQixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsZUFBZSxDQUFDLHFCQUFxQixxQkFBcUIsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsZUFBZSxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsY0FBYyxTQUFTLENBQUMscUJBQXFCLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsY0FBYyxlQUFlLENBQUMscUJBQXFCLHFCQUFxQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsV0FBVyxDQUFDLHFCQUFxQixpQkFBaUIsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsV0FBVyxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxVQUFVLENBQUMsY0FBYyxlQUFlLENBQUMscUJBQXFCLHFCQUFxQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsU0FBUyxDQUFDLHFCQUFxQixlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGNBQWMsZUFBZSxDQUFDLHFCQUFxQixxQkFB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LG1CQUFtQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsY0FBYyxlQUFlLENBQUMscUJBQXFCLHFCQUFxQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxjQUFjLFdBQVcsQ0FBQyxxQkFBcUIsaUJBQWlCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsVUFBVSxDQUFDLGNBQWMsZUFBZSxDQUFDLHFCQUFxQixxQkFBcUIsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsZUFBZSxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsY0FBYyxlQUFlLENBQUMscUJBQXFCLHFCQUFxQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxjQUFjLFNBQVMsQ0FBQyxxQkFBcUIsZUFBZSxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsZUFBZSxDQUFDLHFCQUFxQixxQkFBcUIsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsZUFBZSxDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsY0FBYyxXQUFXLENBQUMscUJBQXFCLGlCQUFpQixDQUFDLG1CQUFtQixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxxQkFBcUIscUJBQXFCLENBQUMsbUJBQW1CLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsZUFBZSxDQUFDLHFCQUFxQixxQkFBcUIsQ0FBQyxtQkFBbUIsaUJB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aUJBQWlCLENBQUMsU0FBUyxDQUFDLCtDQUErQyxlQUFlLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLHFEQUFxRCxpQkFBaUIsQ0FBQywrQkFBK0IscUJBQXFCLENBQUMsd0JBQXdCLENBQUMsV0FBbUQsWUFBWSxDQUE4QyxzQkFBc0IsQ0FBZ0Qsa0JBQWtCLENBQTJCLHFCQUFxQixDQUFDLGlCQUFpQixDQUErQixxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLHFCQUFxQixlQUFlLENBQUMsdUJBQXVCLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsZUFBZSxDQUFDLHlCQUF5QixZQUFZLENBQUMsdUJBQXVCLFlBQVksQ0FBQyxzQkFBc0IsWUFBWSxDQUFDLHlCQUF5QixZQUFZXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7QGZvbnQtZmFjZXtmb250LWZhbWlseTplbGVtZW50LWljb25zO3NyYzp1cmwoZm9udHMvZWxlbWVudC1pY29ucy53b2ZmKSBmb3JtYXQoXFxcIndvZmZcXFwiKSx1cmwoZm9udHMvZWxlbWVudC1pY29ucy50dGYpIGZvcm1hdChcXFwidHJ1ZXR5cGVcXFwiKTtmb250LXdlaWdodDo0MDA7Zm9udC1kaXNwbGF5OlxcXCJhdXRvXFxcIjtmb250LXN0eWxlOm5vcm1hbH1bY2xhc3MqPVxcXCIgZWwtaWNvbi1cXFwiXSxbY2xhc3NePWVsLWljb24tXXtmb250LWZhbWlseTplbGVtZW50LWljb25zIWltcG9ydGFudDtzcGVhazpub25lO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXZhcmlhbnQ6bm9ybWFsO3RleHQtdHJhbnNmb3JtOm5vbmU7bGluZS1oZWlnaHQ6MTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX0uZWwtaWNvbi1pY2UtY3JlYW0tcm91bmQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmEwXFxcIn0uZWwtaWNvbi1pY2UtY3JlYW0tc3F1YXJlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZhM1xcXCJ9LmVsLWljb24tbG9sbGlwb3A6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmE0XFxcIn0uZWwtaWNvbi1wb3RhdG8tc3RyaXBzOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZhNVxcXCJ9LmVsLWljb24tbWlsay10ZWE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmE2XFxcIn0uZWwtaWNvbi1pY2UtZHJpbms6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmE3XFxcIn0uZWwtaWNvbi1pY2UtdGVhOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZhOVxcXCJ9LmVsLWljb24tY29mZmVlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZhYVxcXCJ9LmVsLWljb24tb3JhbmdlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZhYlxcXCJ9LmVsLWljb24tcGVhcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YWNcXFwifS5lbC1pY29uLWFwcGxlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZhZFxcXCJ9LmVsLWljb24tY2hlcnJ5OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZhZVxcXCJ9LmVsLWljb24td2F0ZXJtZWxvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YWZcXFwifS5lbC1pY29uLWdyYXBlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZiMFxcXCJ9LmVsLWljb24tcmVmcmlnZXJhdG9yOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZiMVxcXCJ9LmVsLWljb24tZ29ibGV0LXNxdWFyZS1mdWxsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZiMlxcXCJ9LmVsLWljb24tZ29ibGV0LXNxdWFyZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YjNcXFwifS5lbC1pY29uLWdvYmxldC1mdWxsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZiNFxcXCJ9LmVsLWljb24tZ29ibGV0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZiNVxcXCJ9LmVsLWljb24tY29sZC1kcmluazpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YjZcXFwifS5lbC1pY29uLWNvZmZlZS1jdXA6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmI4XFxcIn0uZWwtaWNvbi13YXRlci1jdXA6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmI5XFxcIn0uZWwtaWNvbi1ob3Qtd2F0ZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmJhXFxcIn0uZWwtaWNvbi1pY2UtY3JlYW06YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmJiXFxcIn0uZWwtaWNvbi1kZXNzZXJ0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZiY1xcXCJ9LmVsLWljb24tc3VnYXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmJkXFxcIn0uZWwtaWNvbi10YWJsZXdhcmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmJlXFxcIn0uZWwtaWNvbi1idXJnZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmJmXFxcIn0uZWwtaWNvbi1rbmlmZS1mb3JrOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjMVxcXCJ9LmVsLWljb24tZm9yay1zcG9vbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YzJcXFwifS5lbC1pY29uLWNoaWNrZW46YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmMzXFxcIn0uZWwtaWNvbi1mb29kOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjNFxcXCJ9LmVsLWljb24tZGlzaC0xOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjNVxcXCJ9LmVsLWljb24tZGlzaDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YzZcXFwifS5lbC1pY29uLW1vb24tbmlnaHQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmVlXFxcIn0uZWwtaWNvbi1tb29uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmMFxcXCJ9LmVsLWljb24tY2xvdWR5LWFuZC1zdW5ueTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZjFcXFwifS5lbC1pY29uLXBhcnRseS1jbG91ZHk6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmYyXFxcIn0uZWwtaWNvbi1jbG91ZHk6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmYzXFxcIn0uZWwtaWNvbi1zdW5ueTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZjZcXFwifS5lbC1pY29uLXN1bnNldDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZjdcXFwifS5lbC1pY29uLXN1bnJpc2UtMTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZjhcXFwifS5lbC1pY29uLXN1bnJpc2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmY5XFxcIn0uZWwtaWNvbi1oZWF2eS1yYWluOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmYVxcXCJ9LmVsLWljb24tbGlnaHRuaW5nOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmYlxcXCJ9LmVsLWljb24tbGlnaHQtcmFpbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZmNcXFwifS5lbC1pY29uLXdpbmQtcG93ZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmZkXFxcIn0uZWwtaWNvbi1iYXNlYmFsbDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MTJcXFwifS5lbC1pY29uLXNvY2NlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MTNcXFwifS5lbC1pY29uLWZvb3RiYWxsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxNVxcXCJ9LmVsLWljb24tYmFza2V0YmFsbDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MTZcXFwifS5lbC1pY29uLXNoaXA6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzNmXFxcIn0uZWwtaWNvbi10cnVjazpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NDBcXFwifS5lbC1pY29uLWJpY3ljbGU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzQxXFxcIn0uZWwtaWNvbi1tb2JpbGUtcGhvbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmQzXFxcIn0uZWwtaWNvbi1zZXJ2aWNlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkNFxcXCJ9LmVsLWljb24ta2V5OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlMlxcXCJ9LmVsLWljb24tdW5sb2NrOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlNFxcXCJ9LmVsLWljb24tbG9jazpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZTVcXFwifS5lbC1pY29uLXdhdGNoOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZmZVxcXCJ9LmVsLWljb24td2F0Y2gtMTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZmZcXFwifS5lbC1pY29uLXRpbWVyOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcwMlxcXCJ9LmVsLWljb24tYWxhcm0tY2xvY2s6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzAzXFxcIn0uZWwtaWNvbi1tYXAtbG9jYXRpb246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzA0XFxcIn0uZWwtaWNvbi1kZWxldGUtbG9jYXRpb246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzA1XFxcIn0uZWwtaWNvbi1hZGQtbG9jYXRpb246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzA2XFxcIn0uZWwtaWNvbi1sb2NhdGlvbi1pbmZvcm1hdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MDdcXFwifS5lbC1pY29uLWxvY2F0aW9uLW91dGxpbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzA4XFxcIn0uZWwtaWNvbi1sb2NhdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OWVcXFwifS5lbC1pY29uLXBsYWNlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcwOVxcXCJ9LmVsLWljb24tZGlzY292ZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzBhXFxcIn0uZWwtaWNvbi1maXJzdC1haWQta2l0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcwYlxcXCJ9LmVsLWljb24tdHJvcGh5LTE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzBjXFxcIn0uZWwtaWNvbi10cm9waHk6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzBkXFxcIn0uZWwtaWNvbi1tZWRhbDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MGVcXFwifS5lbC1pY29uLW1lZGFsLTE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzBmXFxcIn0uZWwtaWNvbi1zdG9wd2F0Y2g6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzEwXFxcIn0uZWwtaWNvbi1taWM6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzExXFxcIn0uZWwtaWNvbi1jb3B5LWRvY3VtZW50OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxOFxcXCJ9LmVsLWljb24tZnVsbC1zY3JlZW46YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzE5XFxcIn0uZWwtaWNvbi1zd2l0Y2gtYnV0dG9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxYlxcXCJ9LmVsLWljb24tYWltOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxY1xcXCJ9LmVsLWljb24tY3JvcDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MWRcXFwifS5lbC1pY29uLW9kb21ldGVyOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcxZVxcXCJ9LmVsLWljb24tdGltZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MWZcXFwifS5lbC1pY29uLWJhbmd6aHU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzI0XFxcIn0uZWwtaWNvbi1jbG9zZS1ub3RpZmljYXRpb246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzI2XFxcIn0uZWwtaWNvbi1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcyN1xcXCJ9LmVsLWljb24tdHVybi1vZmYtbWljcm9waG9uZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MjhcXFwifS5lbC1pY29uLXBvc2l0aW9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcyOVxcXCJ9LmVsLWljb24tcG9zdGNhcmQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzJhXFxcIn0uZWwtaWNvbi1tZXNzYWdlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcyYlxcXCJ9LmVsLWljb24tY2hhdC1saW5lLXNxdWFyZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MmRcXFwifS5lbC1pY29uLWNoYXQtZG90LXNxdWFyZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MmVcXFwifS5lbC1pY29uLWNoYXQtZG90LXJvdW5kOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcyZlxcXCJ9LmVsLWljb24tY2hhdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzMwXFxcIn0uZWwtaWNvbi1jaGF0LWxpbmUtcm91bmQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzMxXFxcIn0uZWwtaWNvbi1jaGF0LXJvdW5kOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTczMlxcXCJ9LmVsLWljb24tc2V0LXVwOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTczM1xcXCJ9LmVsLWljb24tdHVybi1vZmY6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzM0XFxcIn0uZWwtaWNvbi1vcGVuOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTczNVxcXCJ9LmVsLWljb24tY29ubmVjdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MzZcXFwifS5lbC1pY29uLWxpbms6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzM3XFxcIn0uZWwtaWNvbi1jcHU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzM4XFxcIn0uZWwtaWNvbi10aHVtYjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MzlcXFwifS5lbC1pY29uLWZlbWFsZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3M2FcXFwifS5lbC1pY29uLW1hbGU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzNiXFxcIn0uZWwtaWNvbi1ndWlkZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3M2NcXFwifS5lbC1pY29uLW5ld3M6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzNlXFxcIn0uZWwtaWNvbi1wcmljZS10YWc6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzQ0XFxcIn0uZWwtaWNvbi1kaXNjb3VudDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NDVcXFwifS5lbC1pY29uLXdhbGxldDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NDdcXFwifS5lbC1pY29uLWNvaW46YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzQ4XFxcIn0uZWwtaWNvbi1tb25leTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NDlcXFwifS5lbC1pY29uLWJhbmstY2FyZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NGFcXFwifS5lbC1pY29uLWJveDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NGJcXFwifS5lbC1pY29uLXByZXNlbnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzRjXFxcIn0uZWwtaWNvbi1zZWxsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkNVxcXCJ9LmVsLWljb24tc29sZC1vdXQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmQ2XFxcIn0uZWwtaWNvbi1zaG9wcGluZy1iYWctMjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NGRcXFwifS5lbC1pY29uLXNob3BwaW5nLWJhZy0xOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc0ZVxcXCJ9LmVsLWljb24tc2hvcHBpbmctY2FydC0yOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc0ZlxcXCJ9LmVsLWljb24tc2hvcHBpbmctY2FydC0xOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc1MFxcXCJ9LmVsLWljb24tc2hvcHBpbmctY2FydC1mdWxsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc1MVxcXCJ9LmVsLWljb24tc21va2luZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NTJcXFwifS5lbC1pY29uLW5vLXNtb2tpbmc6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzUzXFxcIn0uZWwtaWNvbi1ob3VzZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NTRcXFwifS5lbC1pY29uLXRhYmxlLWxhbXA6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzU1XFxcIn0uZWwtaWNvbi1zY2hvb2w6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzU2XFxcIn0uZWwtaWNvbi1vZmZpY2UtYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzU3XFxcIn0uZWwtaWNvbi10b2lsZXQtcGFwZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzU4XFxcIn0uZWwtaWNvbi1ub3RlYm9vay0yOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc1OVxcXCJ9LmVsLWljb24tbm90ZWJvb2stMTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NWFcXFwifS5lbC1pY29uLWZpbGVzOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc1YlxcXCJ9LmVsLWljb24tY29sbGVjdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NWNcXFwifS5lbC1pY29uLXJlY2VpdmluZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NWRcXFwifS5lbC1pY29uLXN1aXRjYXNlLTE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzYwXFxcIn0uZWwtaWNvbi1zdWl0Y2FzZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NjFcXFwifS5lbC1pY29uLWZpbG06YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzYzXFxcIn0uZWwtaWNvbi1jb2xsZWN0aW9uLXRhZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NjVcXFwifS5lbC1pY29uLWRhdGEtYW5hbHlzaXM6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzY2XFxcIn0uZWwtaWNvbi1waWUtY2hhcnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzY3XFxcIn0uZWwtaWNvbi1kYXRhLWJvYXJkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2OFxcXCJ9LmVsLWljb24tZGF0YS1saW5lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2ZFxcXCJ9LmVsLWljb24tcmVhZGluZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NjlcXFwifS5lbC1pY29uLW1hZ2ljLXN0aWNrOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2YVxcXCJ9LmVsLWljb24tY29vcmRpbmF0ZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NmJcXFwifS5lbC1pY29uLW1vdXNlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2Y1xcXCJ9LmVsLWljb24tYnJ1c2g6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzZlXFxcIn0uZWwtaWNvbi1oZWFkc2V0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2ZlxcXCJ9LmVsLWljb24tdW1icmVsbGE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzcwXFxcIn0uZWwtaWNvbi1zY2lzc29yczpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NzFcXFwifS5lbC1pY29uLW1vYmlsZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NzNcXFwifS5lbC1pY29uLWF0dHJhY3Q6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzc0XFxcIn0uZWwtaWNvbi1tb25pdG9yOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc3NVxcXCJ9LmVsLWljb24tc2VhcmNoOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc3OFxcXCJ9LmVsLWljb24tdGFrZWF3YXktYm94OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc3YVxcXCJ9LmVsLWljb24tcGFwZXJjbGlwOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc3ZFxcXCJ9LmVsLWljb24tcHJpbnRlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3N2VcXFwifS5lbC1pY29uLWRvY3VtZW50LWFkZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3ODJcXFwifS5lbC1pY29uLWRvY3VtZW50OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc4NVxcXCJ9LmVsLWljb24tZG9jdW1lbnQtY2hlY2tlZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3ODZcXFwifS5lbC1pY29uLWRvY3VtZW50LWNvcHk6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzg3XFxcIn0uZWwtaWNvbi1kb2N1bWVudC1kZWxldGU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzg4XFxcIn0uZWwtaWNvbi1kb2N1bWVudC1yZW1vdmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzg5XFxcIn0uZWwtaWNvbi10aWNrZXRzOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc4YlxcXCJ9LmVsLWljb24tZm9sZGVyLWNoZWNrZWQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzdmXFxcIn0uZWwtaWNvbi1mb2xkZXItZGVsZXRlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc4MFxcXCJ9LmVsLWljb24tZm9sZGVyLXJlbW92ZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3ODFcXFwifS5lbC1pY29uLWZvbGRlci1hZGQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzgzXFxcIn0uZWwtaWNvbi1mb2xkZXItb3BlbmVkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc4NFxcXCJ9LmVsLWljb24tZm9sZGVyOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc4YVxcXCJ9LmVsLWljb24tZWRpdC1vdXRsaW5lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc2NFxcXCJ9LmVsLWljb24tZWRpdDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OGNcXFwifS5lbC1pY29uLWRhdGU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzhlXFxcIn0uZWwtaWNvbi1jLXNjYWxlLXRvLW9yaWdpbmFsOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdjNlxcXCJ9LmVsLWljb24tdmlldzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2Y2VcXFwifS5lbC1pY29uLWxvYWRpbmc6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmNmXFxcIn0uZWwtaWNvbi1yYW5rOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkMVxcXCJ9LmVsLWljb24tc29ydC1kb3duOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdjNFxcXCJ9LmVsLWljb24tc29ydC11cDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YzVcXFwifS5lbC1pY29uLXNvcnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmQyXFxcIn0uZWwtaWNvbi1maW5pc2hlZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2Y2RcXFwifS5lbC1pY29uLXJlZnJlc2gtbGVmdDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YzdcXFwifS5lbC1pY29uLXJlZnJlc2gtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmM4XFxcIn0uZWwtaWNvbi1yZWZyZXNoOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZkMFxcXCJ9LmVsLWljb24tdmlkZW8tcGxheTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YzBcXFwifS5lbC1pY29uLXZpZGVvLXBhdXNlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdjMVxcXCJ9LmVsLWljb24tZC1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZGNcXFwifS5lbC1pY29uLWQtYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZGRcXFwifS5lbC1pY29uLWFycm93LXVwOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlMVxcXCJ9LmVsLWljb24tYXJyb3ctZG93bjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZGZcXFwifS5lbC1pY29uLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlMFxcXCJ9LmVsLWljb24tYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZGVcXFwifS5lbC1pY29uLXRvcC1yaWdodDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZTdcXFwifS5lbC1pY29uLXRvcC1sZWZ0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlOFxcXCJ9LmVsLWljb24tdG9wOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlNlxcXCJ9LmVsLWljb24tYm90dG9tOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlYlxcXCJ9LmVsLWljb24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmU5XFxcIn0uZWwtaWNvbi1iYWNrOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlYVxcXCJ9LmVsLWljb24tYm90dG9tLXJpZ2h0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZlY1xcXCJ9LmVsLWljb24tYm90dG9tLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmVkXFxcIn0uZWwtaWNvbi1jYXJldC10b3A6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzhmXFxcIn0uZWwtaWNvbi1jYXJldC1ib3R0b206YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzkwXFxcIn0uZWwtaWNvbi1jYXJldC1yaWdodDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OTFcXFwifS5lbC1pY29uLWNhcmV0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzkyXFxcIn0uZWwtaWNvbi1kLWNhcmV0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc5YVxcXCJ9LmVsLWljb24tc2hhcmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzkzXFxcIn0uZWwtaWNvbi1tZW51OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc5OFxcXCJ9LmVsLWljb24tcy1ncmlkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdhNlxcXCJ9LmVsLWljb24tcy1jaGVjazpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YTdcXFwifS5lbC1pY29uLXMtZGF0YTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YThcXFwifS5lbC1pY29uLXMtb3Bwb3J0dW5pdHk6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2FhXFxcIn0uZWwtaWNvbi1zLWN1c3RvbTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YWJcXFwifS5lbC1pY29uLXMtY2xhaW06YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2FkXFxcIn0uZWwtaWNvbi1zLWZpbmFuY2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2FlXFxcIn0uZWwtaWNvbi1zLWNvbW1lbnQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2FmXFxcIn0uZWwtaWNvbi1zLWZsYWc6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2IwXFxcIn0uZWwtaWNvbi1zLW1hcmtldGluZzpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YjFcXFwifS5lbC1pY29uLXMtc2hvcDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YjRcXFwifS5lbC1pY29uLXMtb3BlbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YjVcXFwifS5lbC1pY29uLXMtbWFuYWdlbWVudDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YjZcXFwifS5lbC1pY29uLXMtdGlja2V0OmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiN1xcXCJ9LmVsLWljb24tcy1yZWxlYXNlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiOFxcXCJ9LmVsLWljb24tcy1ob21lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiOVxcXCJ9LmVsLWljb24tcy1wcm9tb3Rpb246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2JhXFxcIn0uZWwtaWNvbi1zLW9wZXJhdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YmJcXFwifS5lbC1pY29uLXMtdW5mb2xkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiY1xcXCJ9LmVsLWljb24tcy1mb2xkOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdhOVxcXCJ9LmVsLWljb24tcy1wbGF0Zm9ybTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YmRcXFwifS5lbC1pY29uLXMtb3JkZXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2JlXFxcIn0uZWwtaWNvbi1zLWNvb3BlcmF0aW9uOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdiZlxcXCJ9LmVsLWljb24tYmVsbDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MjVcXFwifS5lbC1pY29uLW1lc3NhZ2Utc29saWQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzk5XFxcIn0uZWwtaWNvbi12aWRlby1jYW1lcmE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzcyXFxcIn0uZWwtaWNvbi12aWRlby1jYW1lcmEtc29saWQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzk2XFxcIn0uZWwtaWNvbi1jYW1lcmE6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzc5XFxcIn0uZWwtaWNvbi1jYW1lcmEtc29saWQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzliXFxcIn0uZWwtaWNvbi1kb3dubG9hZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3N2NcXFwifS5lbC1pY29uLXVwbG9hZDI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzdiXFxcIn0uZWwtaWNvbi11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2MzXFxcIn0uZWwtaWNvbi1waWN0dXJlLW91dGxpbmUtcm91bmQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzVmXFxcIn0uZWwtaWNvbi1waWN0dXJlLW91dGxpbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzVlXFxcIn0uZWwtaWNvbi1waWN0dXJlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc5ZlxcXCJ9LmVsLWljb24tY2xvc2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmRiXFxcIn0uZWwtaWNvbi1jaGVjazpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZGFcXFwifS5lbC1pY29uLXBsdXM6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmQ5XFxcIn0uZWwtaWNvbi1taW51czpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZDhcXFwifS5lbC1pY29uLWhlbHA6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzNkXFxcIn0uZWwtaWNvbi1zLWhlbHA6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2IzXFxcIn0uZWwtaWNvbi1jaXJjbGUtY2xvc2U6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzhkXFxcIn0uZWwtaWNvbi1jaXJjbGUtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzIwXFxcIn0uZWwtaWNvbi1jaXJjbGUtcGx1cy1vdXRsaW5lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTcyM1xcXCJ9LmVsLWljb24tcmVtb3ZlLW91dGxpbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzIyXFxcIn0uZWwtaWNvbi16b29tLW91dDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3NzZcXFwifS5lbC1pY29uLXpvb20taW46YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzc3XFxcIn0uZWwtaWNvbi1lcnJvcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3OWRcXFwifS5lbC1pY29uLXN1Y2Nlc3M6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzljXFxcIn0uZWwtaWNvbi1jaXJjbGUtcGx1czpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YTBcXFwifS5lbC1pY29uLXJlbW92ZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YTJcXFwifS5lbC1pY29uLWluZm86YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2ExXFxcIn0uZWwtaWNvbi1xdWVzdGlvbjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YTRcXFwifS5lbC1pY29uLXdhcm5pbmctb3V0bGluZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2YzlcXFwifS5lbC1pY29uLXdhcm5pbmc6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2EzXFxcIn0uZWwtaWNvbi1nb29kczpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YzJcXFwifS5lbC1pY29uLXMtZ29vZHM6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2IyXFxcIn0uZWwtaWNvbi1zdGFyLW9mZjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3MTdcXFwifS5lbC1pY29uLXN0YXItb246YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNzk3XFxcIn0uZWwtaWNvbi1tb3JlLW91dGxpbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlNmNjXFxcIn0uZWwtaWNvbi1tb3JlOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc5NFxcXCJ9LmVsLWljb24tcGhvbmUtb3V0bGluZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2Y2JcXFwifS5lbC1pY29uLXBob25lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTc5NVxcXCJ9LmVsLWljb24tdXNlcjpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZTNcXFwifS5lbC1pY29uLXVzZXItc29saWQ6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2E1XFxcIn0uZWwtaWNvbi1zZXR0aW5nOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTZjYVxcXCJ9LmVsLWljb24tcy10b29sczpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YWNcXFwifS5lbC1pY29uLWRlbGV0ZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU2ZDdcXFwifS5lbC1pY29uLWRlbGV0ZS1zb2xpZDpiZWZvcmV7Y29udGVudDpcXFwiXFxcXGU3YzlcXFwifS5lbC1pY29uLWVsZW1lOmJlZm9yZXtjb250ZW50OlxcXCJcXFxcZTdjN1xcXCJ9LmVsLWljb24tcGxhdGZvcm0tZWxlbWU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXFxlN2NhXFxcIn0uZWwtaWNvbi1sb2FkaW5ney13ZWJraXQtYW5pbWF0aW9uOnJvdGF0aW5nIDJzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246cm90YXRpbmcgMnMgbGluZWFyIGluZmluaXRlfS5lbC1pY29uLS1yaWdodHttYXJnaW4tbGVmdDo1cHh9LmVsLWljb24tLWxlZnR7bWFyZ2luLXJpZ2h0OjVweH1ALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRpbmd7MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWigwKTt0cmFuc2Zvcm06cm90YXRlWigwKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZVooMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlWigzNjBkZWcpfX1Aa2V5ZnJhbWVzIHJvdGF0aW5nezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZVooMCk7dHJhbnNmb3JtOnJvdGF0ZVooMCl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVaKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZVooMzYwZGVnKX19LmVsLXBhZ2luYXRpb257d2hpdGUtc3BhY2U6bm93cmFwO3BhZGRpbmc6MnB4IDVweDtjb2xvcjojMzAzMTMzO2ZvbnQtd2VpZ2h0OjcwMH0uZWwtcGFnaW5hdGlvbjo6YWZ0ZXIsLmVsLXBhZ2luYXRpb246OmJlZm9yZXtkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6XFxcIlxcXCJ9LmVsLXBhZ2luYXRpb246OmFmdGVye2NsZWFyOmJvdGh9LmVsLXBhZ2luYXRpb24gYnV0dG9uLC5lbC1wYWdpbmF0aW9uIHNwYW46bm90KFtjbGFzcyo9c3VmZml4XSl7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjEzcHg7bWluLXdpZHRoOjM1LjVweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4O3ZlcnRpY2FsLWFsaWduOnRvcDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXBhZ2luYXRpb24gLmVsLWlucHV0X19pbm5lcnt0ZXh0LWFsaWduOmNlbnRlcjstbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkO2xpbmUtaGVpZ2h0Om5vcm1hbH0uZWwtcGFnaW5hdGlvbiAuZWwtaW5wdXRfX3N1ZmZpeHtyaWdodDowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC44KTt0cmFuc2Zvcm06c2NhbGUoLjgpfS5lbC1wYWdpbmF0aW9uIC5lbC1zZWxlY3QgLmVsLWlucHV0e3dpZHRoOjEwMHB4O21hcmdpbjowIDVweH0uZWwtcGFnaW5hdGlvbiAuZWwtc2VsZWN0IC5lbC1pbnB1dCAuZWwtaW5wdXRfX2lubmVye3BhZGRpbmctcmlnaHQ6MjVweDtib3JkZXItcmFkaXVzOjNweH0uZWwtcGFnaW5hdGlvbiBidXR0b257Ym9yZGVyOm5vbmU7cGFkZGluZzowIDZweDtiYWNrZ3JvdW5kOjAgMH0uZWwtcGFnaW5hdGlvbiBidXR0b246Zm9jdXN7b3V0bGluZTowfS5lbC1wYWdpbmF0aW9uIGJ1dHRvbjpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1wYWdpbmF0aW9uIGJ1dHRvbjpkaXNhYmxlZHtjb2xvcjojQzBDNENDO2JhY2tncm91bmQtY29sb3I6I0ZGRjtjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXBhZ2luYXRpb24gLmJ0bi1uZXh0LC5lbC1wYWdpbmF0aW9uIC5idG4tcHJldntiYWNrZ3JvdW5kOmNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICNGRkY7YmFja2dyb3VuZC1zaXplOjE2cHg7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOjA7Y29sb3I6IzMwMzEzM30uZWwtcGFnaW5hdGlvbiAuYnRuLW5leHQgLmVsLWljb24sLmVsLXBhZ2luYXRpb24gLmJ0bi1wcmV2IC5lbC1pY29ue2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwfS5lbC1wYWdpbmF0aW9uIC5idG4tcHJldntwYWRkaW5nLXJpZ2h0OjEycHh9LmVsLXBhZ2luYXRpb24gLmJ0bi1uZXh0e3BhZGRpbmctbGVmdDoxMnB4fS5lbC1wYWdpbmF0aW9uIC5lbC1wYWdlciBsaS5kaXNhYmxlZHtjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtcGFnZXIgbGksLmVsLXBhZ2VyIGxpLmJ0bi1xdWlja25leHQ6aG92ZXIsLmVsLXBhZ2VyIGxpLmJ0bi1xdWlja3ByZXY6aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmVsLXBhZ2luYXRpb24tLXNtYWxsIC5idG4tbmV4dCwuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmJ0bi1wcmV2LC5lbC1wYWdpbmF0aW9uLS1zbWFsbCAuZWwtcGFnZXIgbGksLmVsLXBhZ2luYXRpb24tLXNtYWxsIC5lbC1wYWdlciBsaS5idG4tcXVpY2tuZXh0LC5lbC1wYWdpbmF0aW9uLS1zbWFsbCAuZWwtcGFnZXIgbGkuYnRuLXF1aWNrcHJldiwuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmVsLXBhZ2VyIGxpOmxhc3QtY2hpbGR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjIycHg7aGVpZ2h0OjIycHg7bWluLXdpZHRoOjIycHh9LmVsLXBhZ2luYXRpb24tLXNtYWxsIC5hcnJvdy5kaXNhYmxlZHt2aXNpYmlsaXR5OmhpZGRlbn0uZWwtcGFnaW5hdGlvbi0tc21hbGwgLm1vcmU6OmJlZm9yZSwuZWwtcGFnaW5hdGlvbi0tc21hbGwgbGkubW9yZTo6YmVmb3Jle2xpbmUtaGVpZ2h0OjI0cHh9LmVsLXBhZ2luYXRpb24tLXNtYWxsIGJ1dHRvbiwuZWwtcGFnaW5hdGlvbi0tc21hbGwgc3Bhbjpub3QoW2NsYXNzKj1zdWZmaXhdKXtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5lbC1wYWdpbmF0aW9uLS1zbWFsbCAuZWwtcGFnaW5hdGlvbl9fZWRpdG9yLC5lbC1wYWdpbmF0aW9uLS1zbWFsbCAuZWwtcGFnaW5hdGlvbl9fZWRpdG9yLmVsLWlucHV0IC5lbC1pbnB1dF9faW5uZXJ7aGVpZ2h0OjIycHh9LmVsLXBhZ2luYXRpb25fX3NpemVze21hcmdpbjowIDEwcHggMCAwO2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojNjA2MjY2fS5lbC1wYWdpbmF0aW9uX19zaXplcyAuZWwtaW5wdXQgLmVsLWlucHV0X19pbm5lcntmb250LXNpemU6MTNweDtwYWRkaW5nLWxlZnQ6OHB4fS5lbC1wYWdpbmF0aW9uX19zaXplcyAuZWwtaW5wdXQgLmVsLWlucHV0X19pbm5lcjpob3Zlcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtcGFnaW5hdGlvbl9fdG90YWx7bWFyZ2luLXJpZ2h0OjEwcHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MDYyNjZ9LmVsLXBhZ2luYXRpb25fX2p1bXB7bWFyZ2luLWxlZnQ6MjRweDtmb250LXdlaWdodDo0MDA7Y29sb3I6IzYwNjI2Nn0uZWwtcGFnaW5hdGlvbl9fanVtcCAuZWwtaW5wdXRfX2lubmVye3BhZGRpbmc6MCAzcHh9LmVsLXBhZ2luYXRpb25fX3JpZ2h0d3JhcHBlcntmbG9hdDpyaWdodH0uZWwtcGFnaW5hdGlvbl9fZWRpdG9ye2xpbmUtaGVpZ2h0OjE4cHg7cGFkZGluZzowIDJweDtoZWlnaHQ6MjhweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MCAycHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlci1yYWRpdXM6M3B4fS5lbC1wYWdlciwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tbmV4dCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tcHJldntwYWRkaW5nOjB9LmVsLWRpYWxvZywuZWwtcGFnZXIgbGl7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXBhZ2luYXRpb25fX2VkaXRvci5lbC1pbnB1dHt3aWR0aDo1MHB4fS5lbC1wYWdpbmF0aW9uX19lZGl0b3IuZWwtaW5wdXQgLmVsLWlucHV0X19pbm5lcntoZWlnaHQ6MjhweH0uZWwtcGFnaW5hdGlvbl9fZWRpdG9yIC5lbC1pbnB1dF9faW5uZXI6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLmVsLXBhZ2luYXRpb25fX2VkaXRvciAuZWwtaW5wdXRfX2lubmVyOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbjowfS5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQgLmJ0bi1uZXh0LC5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQgLmJ0bi1wcmV2LC5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQgLmVsLXBhZ2VyIGxpe21hcmdpbjowIDVweDtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjU7Y29sb3I6IzYwNjI2NjttaW4td2lkdGg6MzBweDtib3JkZXItcmFkaXVzOjJweH0uZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tbmV4dC5kaXNhYmxlZCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tbmV4dDpkaXNhYmxlZCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tcHJldi5kaXNhYmxlZCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5idG4tcHJldjpkaXNhYmxlZCwuZWwtcGFnaW5hdGlvbi5pcy1iYWNrZ3JvdW5kIC5lbC1wYWdlciBsaS5kaXNhYmxlZHtjb2xvcjojQzBDNENDfS5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQgLmVsLXBhZ2VyIGxpOm5vdCguZGlzYWJsZWQpOmhvdmVye2NvbG9yOiM0MDlFRkZ9LmVsLXBhZ2luYXRpb24uaXMtYmFja2dyb3VuZCAuZWwtcGFnZXIgbGk6bm90KC5kaXNhYmxlZCkuYWN0aXZle2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjtjb2xvcjojRkZGfS5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmJ0bi1uZXh0LC5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmJ0bi1wcmV2LC5lbC1wYWdpbmF0aW9uLmlzLWJhY2tncm91bmQuZWwtcGFnaW5hdGlvbi0tc21hbGwgLmVsLXBhZ2VyIGxpe21hcmdpbjowIDNweDttaW4td2lkdGg6MjJweH0uZWwtcGFnZXIsLmVsLXBhZ2VyIGxpe3ZlcnRpY2FsLWFsaWduOnRvcDttYXJnaW46MDtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtcGFnZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2xpc3Qtc3R5bGU6bm9uZTtmb250LXNpemU6MH0uZWwtcGFnZXIgLm1vcmU6OmJlZm9yZXtsaW5lLWhlaWdodDozMHB4fS5lbC1wYWdlciBsaXtwYWRkaW5nOjAgNHB4O2JhY2tncm91bmQ6I0ZGRjtmb250LXNpemU6MTNweDttaW4td2lkdGg6MzUuNXB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHg7Ym94LXNpemluZzpib3JkZXItYm94O3RleHQtYWxpZ246Y2VudGVyfS5lbC1wYWdlciBsaS5idG4tcXVpY2tuZXh0LC5lbC1wYWdlciBsaS5idG4tcXVpY2twcmV2e2xpbmUtaGVpZ2h0OjI4cHg7Y29sb3I6IzMwMzEzM30uZWwtcGFnZXIgbGkuYnRuLXF1aWNrbmV4dC5kaXNhYmxlZCwuZWwtcGFnZXIgbGkuYnRuLXF1aWNrcHJldi5kaXNhYmxlZHtjb2xvcjojQzBDNENDfS5lbC1wYWdlciBsaS5hY3RpdmUrbGl7Ym9yZGVyLWxlZnQ6MH0uZWwtcGFnZXIgbGk6aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtcGFnZXIgbGkuYWN0aXZle2NvbG9yOiM0MDlFRkY7Y3Vyc29yOmRlZmF1bHR9QC13ZWJraXQta2V5ZnJhbWVzIHYtbW9kYWwtaW57MCV7b3BhY2l0eTowfX1ALXdlYmtpdC1rZXlmcmFtZXMgdi1tb2RhbC1vdXR7MTAwJXtvcGFjaXR5OjB9fS5lbC1kaWFsb2d7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjAgYXV0byA1MHB4O2JhY2tncm91bmQ6I0ZGRjtib3JkZXItcmFkaXVzOjJweDstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwwLDAsLjMpO2JveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwwLDAsLjMpO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDo1MCV9LmVsLWRpYWxvZy5pcy1mdWxsc2NyZWVue3dpZHRoOjEwMCU7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvfS5lbC1kaWFsb2dfX3dyYXBwZXJ7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7b3ZlcmZsb3c6YXV0bzttYXJnaW46MH0uZWwtZGlhbG9nX19oZWFkZXJ7cGFkZGluZzoyMHB4IDIwcHggMTBweH0uZWwtZGlhbG9nX19oZWFkZXJidG57cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7cmlnaHQ6MjBweDtwYWRkaW5nOjA7YmFja2dyb3VuZDowIDA7Ym9yZGVyOm5vbmU7b3V0bGluZTowO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxNnB4fS5lbC1kaWFsb2dfX2hlYWRlcmJ0biAuZWwtZGlhbG9nX19jbG9zZXtjb2xvcjojOTA5Mzk5fS5lbC1kaWFsb2dfX2hlYWRlcmJ0bjpmb2N1cyAuZWwtZGlhbG9nX19jbG9zZSwuZWwtZGlhbG9nX19oZWFkZXJidG46aG92ZXIgLmVsLWRpYWxvZ19fY2xvc2V7Y29sb3I6IzQwOUVGRn0uZWwtZGlhbG9nX190aXRsZXtsaW5lLWhlaWdodDoyNHB4O2ZvbnQtc2l6ZToxOHB4O2NvbG9yOiMzMDMxMzN9LmVsLWRpYWxvZ19fYm9keXtwYWRkaW5nOjMwcHggMjBweDtjb2xvcjojNjA2MjY2O2ZvbnQtc2l6ZToxNHB4O3dvcmQtYnJlYWs6YnJlYWstYWxsfS5lbC1kaWFsb2dfX2Zvb3RlcntwYWRkaW5nOjEwcHggMjBweCAyMHB4O3RleHQtYWxpZ246cmlnaHQ7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1kaWFsb2ctLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtZGlhbG9nLS1jZW50ZXIgLmVsLWRpYWxvZ19fYm9keXt0ZXh0LWFsaWduOmluaXRpYWw7cGFkZGluZzoyNXB4IDI1cHggMzBweH0uZWwtZGlhbG9nLS1jZW50ZXIgLmVsLWRpYWxvZ19fZm9vdGVye3RleHQtYWxpZ246aW5oZXJpdH0uZGlhbG9nLWZhZGUtZW50ZXItYWN0aXZley13ZWJraXQtYW5pbWF0aW9uOmRpYWxvZy1mYWRlLWluIC4zczthbmltYXRpb246ZGlhbG9nLWZhZGUtaW4gLjNzfS5kaWFsb2ctZmFkZS1sZWF2ZS1hY3RpdmV7LXdlYmtpdC1hbmltYXRpb246ZGlhbG9nLWZhZGUtb3V0IC4zczthbmltYXRpb246ZGlhbG9nLWZhZGUtb3V0IC4zc31ALXdlYmtpdC1rZXlmcmFtZXMgZGlhbG9nLWZhZGUtaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTtvcGFjaXR5OjB9MTAwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgZGlhbG9nLWZhZGUtaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTtvcGFjaXR5OjB9MTAwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTtvcGFjaXR5OjF9fUAtd2Via2l0LWtleWZyYW1lcyBkaWFsb2ctZmFkZS1vdXR7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7b3BhY2l0eToxfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgZGlhbG9nLWZhZGUtb3V0ezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO29wYWNpdHk6MX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7b3BhY2l0eTowfX0uZWwtYXV0b2NvbXBsZXRle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbnttYXJnaW46NXB4IDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKTtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MXB4IHNvbGlkICNFNEU3RUQ7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb25fX3dyYXB7bWF4LWhlaWdodDoyODBweDtwYWRkaW5nOjEwcHggMDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWF1dG9jb21wbGV0ZS1zdWdnZXN0aW9uX19saXN0e21hcmdpbjowO3BhZGRpbmc6MH0uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb24gbGl7cGFkZGluZzowIDIwcHg7bWFyZ2luOjA7bGluZS1oZWlnaHQ6MzRweDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNjA2MjY2O2ZvbnQtc2l6ZToxNHB4O2xpc3Qtc3R5bGU6bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmVsLWF1dG9jb21wbGV0ZS1zdWdnZXN0aW9uIGxpLmhpZ2hsaWdodGVkLC5lbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbiBsaTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkF9LmVsLWF1dG9jb21wbGV0ZS1zdWdnZXN0aW9uIGxpLmRpdmlkZXJ7bWFyZ2luLXRvcDo2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgIzAwMH0uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb24gbGkuZGl2aWRlcjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206LTZweH0uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb24uaXMtbG9hZGluZyBsaXt0ZXh0LWFsaWduOmNlbnRlcjtoZWlnaHQ6MTAwcHg7bGluZS1oZWlnaHQ6MTAwcHg7Zm9udC1zaXplOjIwcHg7Y29sb3I6Izk5OX0uZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb24uaXMtbG9hZGluZyBsaTo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDpcXFwiXFxcIjtoZWlnaHQ6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLWF1dG9jb21wbGV0ZS1zdWdnZXN0aW9uLmlzLWxvYWRpbmcgbGk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbi5pcy1sb2FkaW5nIC5lbC1pY29uLWxvYWRpbmd7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1kcm9wZG93bntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtjb2xvcjojNjA2MjY2O2ZvbnQtc2l6ZToxNHB4fS5lbC1kcm9wZG93biAuZWwtYnV0dG9uLWdyb3Vwe2Rpc3BsYXk6YmxvY2t9LmVsLWRyb3Bkb3duIC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbntmbG9hdDpub25lfS5lbC1kcm9wZG93biAuZWwtZHJvcGRvd25fX2NhcmV0LWJ1dHRvbntwYWRkaW5nLWxlZnQ6NXB4O3BhZGRpbmctcmlnaHQ6NXB4O3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci1sZWZ0Om5vbmV9LmVsLWRyb3Bkb3duIC5lbC1kcm9wZG93bl9fY2FyZXQtYnV0dG9uOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjFweDt0b3A6NXB4O2JvdHRvbTo1cHg7bGVmdDowO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LmVsLWRyb3Bkb3duIC5lbC1kcm9wZG93bl9fY2FyZXQtYnV0dG9uLmVsLWJ1dHRvbi0tZGVmYXVsdDo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyMjAsMjIzLDIzMCwuNSl9LmVsLWRyb3Bkb3duIC5lbC1kcm9wZG93bl9fY2FyZXQtYnV0dG9uOmhvdmVyOm5vdCguaXMtZGlzYWJsZWQpOjpiZWZvcmV7dG9wOjA7Ym90dG9tOjB9LmVsLWRyb3Bkb3duIC5lbC1kcm9wZG93bl9fY2FyZXQtYnV0dG9uIC5lbC1kcm9wZG93bl9faWNvbntwYWRkaW5nLWxlZnQ6MH0uZWwtZHJvcGRvd25fX2ljb257Zm9udC1zaXplOjEycHg7bWFyZ2luOjAgM3B4fS5lbC1kcm9wZG93biAuZWwtZHJvcGRvd24tc2VsZmRlZmluZTpmb2N1czphY3RpdmUsLmVsLWRyb3Bkb3duIC5lbC1kcm9wZG93bi1zZWxmZGVmaW5lOmZvY3VzOm5vdCguZm9jdXNpbmcpe291dGxpbmUtd2lkdGg6MH0uZWwtZHJvcGRvd24gW2Rpc2FibGVkXXtjdXJzb3I6bm90LWFsbG93ZWQ7Y29sb3I6I2JiYn0uZWwtZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ei1pbmRleDoxMDtwYWRkaW5nOjEwcHggMDttYXJnaW46NXB4IDA7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JvcmRlcjoxcHggc29saWQgI0VCRUVGNTtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpO2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpfS5lbC1kcm9wZG93bi1tZW51X19pdGVtLC5lbC1tZW51LWl0ZW17Zm9udC1zaXplOjE0cHg7cGFkZGluZzowIDIwcHg7Y3Vyc29yOnBvaW50ZXJ9LmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW17bGlzdC1zdHlsZTpub25lO2xpbmUtaGVpZ2h0OjM2cHg7bWFyZ2luOjA7Y29sb3I6IzYwNjI2NjtvdXRsaW5lOjB9LmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW06Zm9jdXMsLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW06bm90KC5pcy1kaXNhYmxlZCk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWNmNWZmO2NvbG9yOiM2NmIxZmZ9LmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW0gaXttYXJnaW4tcmlnaHQ6NXB4fS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVke3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6NnB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNFQkVFRjV9LmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW0tLWRpdmlkZWQ6YmVmb3Jle2NvbnRlbnQ6Jyc7aGVpZ2h0OjZweDtkaXNwbGF5OmJsb2NrO21hcmdpbjowIC0yMHB4O2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtZHJvcGRvd24tbWVudV9faXRlbS5pcy1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtjb2xvcjojYmJiO3BvaW50ZXItZXZlbnRzOm5vbmV9LmVsLWRyb3Bkb3duLW1lbnUtLW1lZGl1bXtwYWRkaW5nOjZweCAwfS5lbC1kcm9wZG93bi1tZW51LS1tZWRpdW0gLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW17bGluZS1oZWlnaHQ6MzBweDtwYWRkaW5nOjAgMTdweDtmb250LXNpemU6MTRweH0uZWwtZHJvcGRvd24tbWVudS0tbWVkaXVtIC5lbC1kcm9wZG93bi1tZW51X19pdGVtLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW0tLWRpdmlkZWR7bWFyZ2luLXRvcDo2cHh9LmVsLWRyb3Bkb3duLW1lbnUtLW1lZGl1bSAuZWwtZHJvcGRvd24tbWVudV9faXRlbS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVkOmJlZm9yZXtoZWlnaHQ6NnB4O21hcmdpbjowIC0xN3B4fS5lbC1kcm9wZG93bi1tZW51LS1zbWFsbHtwYWRkaW5nOjZweCAwfS5lbC1kcm9wZG93bi1tZW51LS1zbWFsbCAuZWwtZHJvcGRvd24tbWVudV9faXRlbXtsaW5lLWhlaWdodDoyN3B4O3BhZGRpbmc6MCAxNXB4O2ZvbnQtc2l6ZToxM3B4fS5lbC1kcm9wZG93bi1tZW51LS1zbWFsbCAuZWwtZHJvcGRvd24tbWVudV9faXRlbS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVke21hcmdpbi10b3A6NHB4fS5lbC1kcm9wZG93bi1tZW51LS1zbWFsbCAuZWwtZHJvcGRvd24tbWVudV9faXRlbS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVkOmJlZm9yZXtoZWlnaHQ6NHB4O21hcmdpbjowIC0xNXB4fS5lbC1kcm9wZG93bi1tZW51LS1taW5pe3BhZGRpbmc6M3B4IDB9LmVsLWRyb3Bkb3duLW1lbnUtLW1pbmkgLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW17bGluZS1oZWlnaHQ6MjRweDtwYWRkaW5nOjAgMTBweDtmb250LXNpemU6MTJweH0uZWwtZHJvcGRvd24tbWVudS0tbWluaSAuZWwtZHJvcGRvd24tbWVudV9faXRlbS5lbC1kcm9wZG93bi1tZW51X19pdGVtLS1kaXZpZGVke21hcmdpbi10b3A6M3B4fS5lbC1kcm9wZG93bi1tZW51LS1taW5pIC5lbC1kcm9wZG93bi1tZW51X19pdGVtLmVsLWRyb3Bkb3duLW1lbnVfX2l0ZW0tLWRpdmlkZWQ6YmVmb3Jle2hlaWdodDozcHg7bWFyZ2luOjAgLTEwcHh9LmVsLW1lbnV7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCAjZTZlNmU2O2xpc3Qtc3R5bGU6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkZ9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLW1lbnUtaXRlbTpub3QoLmlzLWRpc2FibGVkKTpmb2N1cywuZWwtbWVudS0taG9yaXpvbnRhbD4uZWwtbWVudS1pdGVtOm5vdCguaXMtZGlzYWJsZWQpOmhvdmVyLC5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1zdWJtZW51IC5lbC1zdWJtZW51X190aXRsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmVsLW1lbnU6OmFmdGVyLC5lbC1tZW51OjpiZWZvcmV7ZGlzcGxheTp0YWJsZTtjb250ZW50OlxcXCJcXFwifS5lbC1icmVhZGNydW1iX19pdGVtOmxhc3QtY2hpbGQgLmVsLWJyZWFkY3J1bWJfX3NlcGFyYXRvciwuZWwtbWVudS0tY29sbGFwc2U+LmVsLW1lbnUtaXRlbSAuZWwtc3VibWVudV9faWNvbi1hcnJvdywuZWwtbWVudS0tY29sbGFwc2U+LmVsLXN1Ym1lbnU+LmVsLXN1Ym1lbnVfX3RpdGxlIC5lbC1zdWJtZW51X19pY29uLWFycm93e2Rpc3BsYXk6bm9uZX0uZWwtbWVudTo6YWZ0ZXJ7Y2xlYXI6Ym90aH0uZWwtbWVudS5lbC1tZW51LS1ob3Jpem9udGFse2JvcmRlci1ib3R0b206c29saWQgMXB4ICNlNmU2ZTZ9LmVsLW1lbnUtLWhvcml6b250YWx7Ym9yZGVyLXJpZ2h0Om5vbmV9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLW1lbnUtaXRlbXtmbG9hdDpsZWZ0O2hlaWdodDo2MHB4O2xpbmUtaGVpZ2h0OjYwcHg7bWFyZ2luOjA7Ym9yZGVyLWJvdHRvbToycHggc29saWQgdHJhbnNwYXJlbnQ7Y29sb3I6IzkwOTM5OX0uZWwtbWVudS0taG9yaXpvbnRhbD4uZWwtbWVudS1pdGVtIGEsLmVsLW1lbnUtLWhvcml6b250YWw+LmVsLW1lbnUtaXRlbSBhOmhvdmVye2NvbG9yOmluaGVyaXR9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLXN1Ym1lbnV7ZmxvYXQ6bGVmdH0uZWwtbWVudS0taG9yaXpvbnRhbD4uZWwtc3VibWVudTpmb2N1cywuZWwtbWVudS0taG9yaXpvbnRhbD4uZWwtc3VibWVudTpob3ZlcntvdXRsaW5lOjB9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLXN1Ym1lbnU6Zm9jdXMgLmVsLXN1Ym1lbnVfX3RpdGxlLC5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1zdWJtZW51OmhvdmVyIC5lbC1zdWJtZW51X190aXRsZXtjb2xvcjojMzAzMTMzfS5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1zdWJtZW51LmlzLWFjdGl2ZSAuZWwtc3VibWVudV9fdGl0bGV7Ym9yZGVyLWJvdHRvbToycHggc29saWQgIzQwOUVGRjtjb2xvcjojMzAzMTMzfS5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1zdWJtZW51IC5lbC1zdWJtZW51X190aXRsZXtoZWlnaHQ6NjBweDtsaW5lLWhlaWdodDo2MHB4O2JvcmRlci1ib3R0b206MnB4IHNvbGlkIHRyYW5zcGFyZW50O2NvbG9yOiM5MDkzOTl9LmVsLW1lbnUtLWhvcml6b250YWw+LmVsLXN1Ym1lbnUgLmVsLXN1Ym1lbnVfX2ljb24tYXJyb3d7cG9zaXRpb246c3RhdGljO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXRvcDotM3B4fS5lbC1tZW51LS1jb2xsYXBzZSAuZWwtc3VibWVudSwuZWwtbWVudS1pdGVte3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC1tZW51LS1ob3Jpem9udGFsIC5lbC1tZW51IC5lbC1tZW51LWl0ZW0sLmVsLW1lbnUtLWhvcml6b250YWwgLmVsLW1lbnUgLmVsLXN1Ym1lbnVfX3RpdGxle2JhY2tncm91bmQtY29sb3I6I0ZGRjtmbG9hdDpub25lO2hlaWdodDozNnB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDEwcHg7Y29sb3I6IzkwOTM5OX0uZWwtbWVudS0taG9yaXpvbnRhbCAuZWwtbWVudSAuZWwtbWVudS1pdGVtLmlzLWFjdGl2ZSwuZWwtbWVudS0taG9yaXpvbnRhbCAuZWwtbWVudSAuZWwtc3VibWVudS5pcy1hY3RpdmU+LmVsLXN1Ym1lbnVfX3RpdGxle2NvbG9yOiMzMDMxMzN9LmVsLW1lbnUtLWhvcml6b250YWwgLmVsLW1lbnUtaXRlbTpub3QoLmlzLWRpc2FibGVkKTpmb2N1cywuZWwtbWVudS0taG9yaXpvbnRhbCAuZWwtbWVudS1pdGVtOm5vdCguaXMtZGlzYWJsZWQpOmhvdmVye291dGxpbmU6MDtjb2xvcjojMzAzMTMzfS5lbC1tZW51LS1ob3Jpem9udGFsPi5lbC1tZW51LWl0ZW0uaXMtYWN0aXZle2JvcmRlci1ib3R0b206MnB4IHNvbGlkICM0MDlFRkY7Y29sb3I6IzMwMzEzM30uZWwtbWVudS0tY29sbGFwc2V7d2lkdGg6NjRweH0uZWwtbWVudS0tY29sbGFwc2U+LmVsLW1lbnUtaXRlbSBbY2xhc3NePWVsLWljb24tXSwuZWwtbWVudS0tY29sbGFwc2U+LmVsLXN1Ym1lbnU+LmVsLXN1Ym1lbnVfX3RpdGxlIFtjbGFzc149ZWwtaWNvbi1de21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoyNHB4O3RleHQtYWxpZ246Y2VudGVyfS5lbC1tZW51LS1jb2xsYXBzZT4uZWwtbWVudS1pdGVtIHNwYW4sLmVsLW1lbnUtLWNvbGxhcHNlPi5lbC1zdWJtZW51Pi5lbC1zdWJtZW51X190aXRsZSBzcGFue2hlaWdodDowO3dpZHRoOjA7b3ZlcmZsb3c6aGlkZGVuO3Zpc2liaWxpdHk6aGlkZGVuO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC1tZW51LWl0ZW0sLmVsLXN1Ym1lbnVfX3RpdGxle2hlaWdodDo1NnB4O2xpbmUtaGVpZ2h0OjU2cHg7bGlzdC1zdHlsZTpub25lfS5lbC1tZW51LS1jb2xsYXBzZT4uZWwtbWVudS1pdGVtLmlzLWFjdGl2ZSBpe2NvbG9yOmluaGVyaXR9LmVsLW1lbnUtLWNvbGxhcHNlIC5lbC1tZW51IC5lbC1zdWJtZW51e21pbi13aWR0aDoyMDBweH0uZWwtbWVudS0tY29sbGFwc2UgLmVsLXN1Ym1lbnUgLmVsLW1lbnV7cG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLWxlZnQ6NXB4O3RvcDowO2xlZnQ6MTAwJTt6LWluZGV4OjEwO2JvcmRlcjoxcHggc29saWQgI0U0RTdFRDtib3JkZXItcmFkaXVzOjJweDstd2Via2l0LWJveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpO2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpfS5lbC1tZW51LS1jb2xsYXBzZSAuZWwtc3VibWVudS5pcy1vcGVuZWQ+LmVsLXN1Ym1lbnVfX3RpdGxlIC5lbC1zdWJtZW51X19pY29uLWFycm93ey13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9LmVsLW1lbnUtLXBvcHVwe3otaW5kZXg6MTAwO21pbi13aWR0aDoyMDBweDtib3JkZXI6bm9uZTtwYWRkaW5nOjVweCAwO2JvcmRlci1yYWRpdXM6MnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSk7Ym94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSl9LmVsLW1lbnUtLXBvcHVwLWJvdHRvbS1zdGFydHttYXJnaW4tdG9wOjVweH0uZWwtbWVudS0tcG9wdXAtcmlnaHQtc3RhcnR7bWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1yaWdodDo1cHh9LmVsLW1lbnUtaXRlbXtjb2xvcjojMzAzMTMzOy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjNzLGJhY2tncm91bmQtY29sb3IgLjNzLGNvbG9yIC4zczt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuM3MsYmFja2dyb3VuZC1jb2xvciAuM3MsY29sb3IgLjNzOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aGl0ZS1zcGFjZTpub3dyYXB9LmVsLXJhZGlvLWJ1dHRvbl9faW5uZXIsLmVsLXN1Ym1lbnVfX3RpdGxley13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcH0uZWwtbWVudS1pdGVtICp7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1tZW51LWl0ZW0gaXtjb2xvcjojOTA5Mzk5fS5lbC1tZW51LWl0ZW06Zm9jdXMsLmVsLW1lbnUtaXRlbTpob3ZlcntvdXRsaW5lOjA7YmFja2dyb3VuZC1jb2xvcjojZWNmNWZmfS5lbC1tZW51LWl0ZW0uaXMtZGlzYWJsZWR7b3BhY2l0eTouMjU7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQ6MCAwIWltcG9ydGFudH0uZWwtbWVudS1pdGVtIFtjbGFzc149ZWwtaWNvbi1de21hcmdpbi1yaWdodDo1cHg7d2lkdGg6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MThweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLW1lbnUtaXRlbS5pcy1hY3RpdmV7Y29sb3I6IzQwOUVGRn0uZWwtbWVudS1pdGVtLmlzLWFjdGl2ZSBpe2NvbG9yOmluaGVyaXR9LmVsLXN1Ym1lbnV7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmctbGVmdDowfS5lbC1zdWJtZW51X190aXRsZXtmb250LXNpemU6MTRweDtjb2xvcjojMzAzMTMzO3BhZGRpbmc6MCAyMHB4O2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjNzLGJhY2tncm91bmQtY29sb3IgLjNzLGNvbG9yIC4zczt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuM3MsYmFja2dyb3VuZC1jb2xvciAuM3MsY29sb3IgLjNzO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtc3VibWVudV9fdGl0bGUgKnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXN1Ym1lbnVfX3RpdGxlIGl7Y29sb3I6IzkwOTM5OX0uZWwtc3VibWVudV9fdGl0bGU6Zm9jdXMsLmVsLXN1Ym1lbnVfX3RpdGxlOmhvdmVye291dGxpbmU6MDtiYWNrZ3JvdW5kLWNvbG9yOiNlY2Y1ZmZ9LmVsLXN1Ym1lbnVfX3RpdGxlLmlzLWRpc2FibGVke29wYWNpdHk6LjI1O2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kOjAgMCFpbXBvcnRhbnR9LmVsLXN1Ym1lbnVfX3RpdGxlOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VjZjVmZn0uZWwtc3VibWVudSAuZWwtbWVudXtib3JkZXI6bm9uZX0uZWwtc3VibWVudSAuZWwtbWVudS1pdGVte2hlaWdodDo1MHB4O2xpbmUtaGVpZ2h0OjUwcHg7cGFkZGluZzowIDQ1cHg7bWluLXdpZHRoOjIwMHB4fS5lbC1zdWJtZW51X19pY29uLWFycm93e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MjBweDttYXJnaW4tdG9wOi03cHg7LXdlYmtpdC10cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4zczt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4zczt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzLC13ZWJraXQtdHJhbnNmb3JtIC4zcztmb250LXNpemU6MTJweH0uZWwtc3VibWVudS5pcy1hY3RpdmUgLmVsLXN1Ym1lbnVfX3RpdGxle2JvcmRlci1ib3R0b20tY29sb3I6IzQwOUVGRn0uZWwtc3VibWVudS5pcy1vcGVuZWQ+LmVsLXN1Ym1lbnVfX3RpdGxlIC5lbC1zdWJtZW51X19pY29uLWFycm93ey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZVooMTgwZGVnKTt0cmFuc2Zvcm06cm90YXRlWigxODBkZWcpfS5lbC1zdWJtZW51LmlzLWRpc2FibGVkIC5lbC1tZW51LWl0ZW0sLmVsLXN1Ym1lbnUuaXMtZGlzYWJsZWQgLmVsLXN1Ym1lbnVfX3RpdGxle29wYWNpdHk6LjI1O2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kOjAgMCFpbXBvcnRhbnR9LmVsLXN1Ym1lbnUgW2NsYXNzXj1lbC1pY29uLV17dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo1cHg7d2lkdGg6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MThweH0uZWwtbWVudS1pdGVtLWdyb3VwPnVse3BhZGRpbmc6MH0uZWwtbWVudS1pdGVtLWdyb3VwX190aXRsZXtwYWRkaW5nOjdweCAwIDdweCAyMHB4O2xpbmUtaGVpZ2h0Om5vcm1hbDtmb250LXNpemU6MTJweDtjb2xvcjojOTA5Mzk5fS5lbC1yYWRpby1idXR0b25fX2lubmVyLC5lbC1yYWRpby1ncm91cHtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoxO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uaG9yaXpvbnRhbC1jb2xsYXBzZS10cmFuc2l0aW9uIC5lbC1zdWJtZW51X190aXRsZSAuZWwtc3VibWVudV9faWNvbi1hcnJvd3std2Via2l0LXRyYW5zaXRpb246LjJzO3RyYW5zaXRpb246LjJzO29wYWNpdHk6MH0uZWwtcmFkaW8tZ3JvdXB7Zm9udC1zaXplOjB9LmVsLXJhZGlvLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztvdXRsaW5lOjB9LmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7YmFja2dyb3VuZDojRkZGO2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtmb250LXdlaWdodDo1MDA7Ym9yZGVyLWxlZnQ6MDtjb2xvcjojNjA2MjY2Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lO3RleHQtYWxpZ246Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdXRsaW5lOjA7bWFyZ2luOjA7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7cGFkZGluZzoxMnB4IDIwcHg7Zm9udC1zaXplOjE0cHg7Ym9yZGVyLXJhZGl1czowfS5lbC1yYWRpby1idXR0b25fX2lubmVyLmlzLXJvdW5ke3BhZGRpbmc6MTJweCAyMHB4fS5lbC1yYWRpby1idXR0b25fX2lubmVyOmhvdmVye2NvbG9yOiM0MDlFRkZ9LmVsLXJhZGlvLWJ1dHRvbl9faW5uZXIgW2NsYXNzKj1lbC1pY29uLV17bGluZS1oZWlnaHQ6Ljl9LmVsLXJhZGlvLWJ1dHRvbl9faW5uZXIgW2NsYXNzKj1lbC1pY29uLV0rc3BhbnttYXJnaW4tbGVmdDo1cHh9LmVsLXJhZGlvLWJ1dHRvbjpmaXJzdC1jaGlsZCAuZWwtcmFkaW8tYnV0dG9uX19pbm5lcntib3JkZXItbGVmdDoxcHggc29saWQgI0RDREZFNjtib3JkZXItcmFkaXVzOjRweCAwIDAgNHB4Oy13ZWJraXQtYm94LXNoYWRvdzpub25lIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50fS5lbC1yYWRpby1idXR0b25fX29yaWctcmFkaW97b3BhY2l0eTowO291dGxpbmU6MDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xfS5lbC1yYWRpby1idXR0b25fX29yaWctcmFkaW86Y2hlY2tlZCsuZWwtcmFkaW8tYnV0dG9uX19pbm5lcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjtib3JkZXItY29sb3I6IzQwOUVGRjstd2Via2l0LWJveC1zaGFkb3c6LTFweCAwIDAgMCAjNDA5RUZGO2JveC1zaGFkb3c6LTFweCAwIDAgMCAjNDA5RUZGfS5lbC1yYWRpby1idXR0b25fX29yaWctcmFkaW86ZGlzYWJsZWQrLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JhY2tncm91bmQtY29sb3I6I0ZGRjtib3JkZXItY29sb3I6I0VCRUVGNTstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9LmVsLXJhZGlvLWJ1dHRvbl9fb3JpZy1yYWRpbzpkaXNhYmxlZDpjaGVja2VkKy5lbC1yYWRpby1idXR0b25fX2lubmVye2JhY2tncm91bmQtY29sb3I6I0YyRjZGQ30uZWwtcmFkaW8tYnV0dG9uOmxhc3QtY2hpbGQgLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7Ym9yZGVyLXJhZGl1czowIDRweCA0cHggMH0uZWwtcmFkaW8tYnV0dG9uOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQgLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLXJhZGlvLWJ1dHRvbi0tbWVkaXVtIC5lbC1yYWRpby1idXR0b25fX2lubmVye3BhZGRpbmc6MTBweCAyMHB4O2ZvbnQtc2l6ZToxNHB4O2JvcmRlci1yYWRpdXM6MH0uZWwtcmFkaW8tYnV0dG9uLS1tZWRpdW0gLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXIuaXMtcm91bmR7cGFkZGluZzoxMHB4IDIwcHh9LmVsLXJhZGlvLWJ1dHRvbi0tc21hbGwgLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXJ7cGFkZGluZzo5cHggMTVweDtmb250LXNpemU6MTJweDtib3JkZXItcmFkaXVzOjB9LmVsLXJhZGlvLWJ1dHRvbi0tc21hbGwgLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXIuaXMtcm91bmR7cGFkZGluZzo5cHggMTVweH0uZWwtcmFkaW8tYnV0dG9uLS1taW5pIC5lbC1yYWRpby1idXR0b25fX2lubmVye3BhZGRpbmc6N3B4IDE1cHg7Zm9udC1zaXplOjEycHg7Ym9yZGVyLXJhZGl1czowfS5lbC1yYWRpby1idXR0b24tLW1pbmkgLmVsLXJhZGlvLWJ1dHRvbl9faW5uZXIuaXMtcm91bmR7cGFkZGluZzo3cHggMTVweH0uZWwtcmFkaW8tYnV0dG9uOmZvY3VzOm5vdCguaXMtZm9jdXMpOm5vdCg6YWN0aXZlKTpub3QoLmlzLWRpc2FibGVkKXstd2Via2l0LWJveC1zaGFkb3c6MCAwIDJweCAycHggIzQwOUVGRjtib3gtc2hhZG93OjAgMCAycHggMnB4ICM0MDlFRkZ9LmVsLXBpY2tlci1wYW5lbCwuZWwtcG9wb3ZlciwuZWwtc2VsZWN0LWRyb3Bkb3duLC5lbC10YWJsZS1maWx0ZXIsLmVsLXRpbWUtcGFuZWx7LXdlYmtpdC1ib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKX0uZWwtc3dpdGNoe2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94O2Rpc3BsYXk6LW1zLWlubGluZS1mbGV4Ym94O2Rpc3BsYXk6aW5saW5lLWZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDtoZWlnaHQ6MjBweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXN3aXRjaF9fY29yZSwuZWwtc3dpdGNoX19sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztjdXJzb3I6cG9pbnRlcn0uZWwtc3dpdGNoLmlzLWRpc2FibGVkIC5lbC1zd2l0Y2hfX2NvcmUsLmVsLXN3aXRjaC5pcy1kaXNhYmxlZCAuZWwtc3dpdGNoX19sYWJlbHtjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXN3aXRjaF9fbGFiZWx7LXdlYmtpdC10cmFuc2l0aW9uOi4yczt0cmFuc2l0aW9uOi4ycztoZWlnaHQ6MjBweDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7dmVydGljYWwtYWxpZ246bWlkZGxlO2NvbG9yOiMzMDMxMzN9LmVsLXN3aXRjaF9fbGFiZWwuaXMtYWN0aXZle2NvbG9yOiM0MDlFRkZ9LmVsLXN3aXRjaF9fbGFiZWwtLWxlZnR7bWFyZ2luLXJpZ2h0OjEwcHh9LmVsLXN3aXRjaF9fbGFiZWwtLXJpZ2h0e21hcmdpbi1sZWZ0OjEwcHh9LmVsLXN3aXRjaF9fbGFiZWwgKntsaW5lLWhlaWdodDoxO2ZvbnQtc2l6ZToxNHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC1zd2l0Y2hfX2lucHV0e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7b3BhY2l0eTowO21hcmdpbjowfS5lbC1zd2l0Y2hfX2NvcmV7bWFyZ2luOjA7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NDBweDtoZWlnaHQ6MjBweDtib3JkZXI6MXB4IHNvbGlkICNEQ0RGRTY7b3V0bGluZTowO2JvcmRlci1yYWRpdXM6MTBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7YmFja2dyb3VuZDojRENERkU2Oy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjNzLGJhY2tncm91bmQtY29sb3IgLjNzO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4zcyxiYWNrZ3JvdW5kLWNvbG9yIC4zczt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLWlucHV0X19wcmVmaXgsLmVsLWlucHV0X19zdWZmaXh7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3M7Y29sb3I6I0MwQzRDQ30uZWwtc3dpdGNoX19jb3JlOmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjFweDtsZWZ0OjFweDtib3JkZXItcmFkaXVzOjEwMCU7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3M7dHJhbnNpdGlvbjphbGwgLjNzO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC1zd2l0Y2guaXMtY2hlY2tlZCAuZWwtc3dpdGNoX19jb3Jle2JvcmRlci1jb2xvcjojNDA5RUZGO2JhY2tncm91bmQtY29sb3I6IzQwOUVGRn0uZWwtc3dpdGNoLmlzLWNoZWNrZWQgLmVsLXN3aXRjaF9fY29yZTo6YWZ0ZXJ7bGVmdDoxMDAlO21hcmdpbi1sZWZ0Oi0xN3B4fS5lbC1zd2l0Y2guaXMtZGlzYWJsZWR7b3BhY2l0eTouNn0uZWwtc3dpdGNoLS13aWRlIC5lbC1zd2l0Y2hfX2xhYmVsLmVsLXN3aXRjaF9fbGFiZWwtLWxlZnQgc3BhbntsZWZ0OjEwcHh9LmVsLXN3aXRjaC0td2lkZSAuZWwtc3dpdGNoX19sYWJlbC5lbC1zd2l0Y2hfX2xhYmVsLS1yaWdodCBzcGFue3JpZ2h0OjEwcHh9LmVsLXN3aXRjaCAubGFiZWwtZmFkZS1lbnRlciwuZWwtc3dpdGNoIC5sYWJlbC1mYWRlLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjB9LmVsLXNlbGVjdC1kcm9wZG93bntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDE7Ym9yZGVyOjFweCBzb2xpZCAjRTRFN0VEO2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQtY29sb3I6I0ZGRjtib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjVweCAwfS5lbC1zZWxlY3QtZHJvcGRvd24uaXMtbXVsdGlwbGUgLmVsLXNlbGVjdC1kcm9wZG93bl9faXRlbXtwYWRkaW5nLXJpZ2h0OjQwcHh9LmVsLXNlbGVjdC1kcm9wZG93bi5pcy1tdWx0aXBsZSAuZWwtc2VsZWN0LWRyb3Bkb3duX19pdGVtLnNlbGVjdGVke2NvbG9yOiM0MDlFRkY7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC1zZWxlY3QtZHJvcGRvd24uaXMtbXVsdGlwbGUgLmVsLXNlbGVjdC1kcm9wZG93bl9faXRlbS5zZWxlY3RlZC5ob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkF9LmVsLXNlbGVjdC1kcm9wZG93bi5pcy1tdWx0aXBsZSAuZWwtc2VsZWN0LWRyb3Bkb3duX19pdGVtLnNlbGVjdGVkOjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoyMHB4O2ZvbnQtZmFtaWx5OmVsZW1lbnQtaWNvbnM7Y29udGVudDpcXFwiXFxcXGU2ZGFcXFwiO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX0uZWwtc2VsZWN0LWRyb3Bkb3duIC5lbC1zY3JvbGxiYXIuaXMtZW1wdHkgLmVsLXNlbGVjdC1kcm9wZG93bl9fbGlzdHtwYWRkaW5nOjB9LmVsLXNlbGVjdC1kcm9wZG93bl9fZW1wdHl7cGFkZGluZzoxMHB4IDA7bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6Izk5OTtmb250LXNpemU6MTRweH0uZWwtc2VsZWN0LWRyb3Bkb3duX193cmFwe21heC1oZWlnaHQ6Mjc0cHh9LmVsLXNlbGVjdC1kcm9wZG93bl9fbGlzdHtsaXN0LXN0eWxlOm5vbmU7cGFkZGluZzo2cHggMDttYXJnaW46MDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXNlbGVjdC1kcm9wZG93bl9faXRlbXtmb250LXNpemU6MTRweDtwYWRkaW5nOjAgMjBweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7Y29sb3I6IzYwNjI2NjtoZWlnaHQ6MzRweDtsaW5lLWhlaWdodDozNHB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcn0uZWwtc2VsZWN0LWRyb3Bkb3duX19pdGVtLmlzLWRpc2FibGVke2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1zZWxlY3QtZHJvcGRvd25fX2l0ZW0uaXMtZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC1zZWxlY3QtZHJvcGRvd25fX2l0ZW0uaG92ZXIsLmVsLXNlbGVjdC1kcm9wZG93bl9faXRlbTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkF9LmVsLXNlbGVjdC1kcm9wZG93bl9faXRlbS5zZWxlY3RlZHtjb2xvcjojNDA5RUZGO2ZvbnQtd2VpZ2h0OjcwMH0uZWwtc2VsZWN0LWdyb3Vwe21hcmdpbjowO3BhZGRpbmc6MH0uZWwtc2VsZWN0LWdyb3VwX193cmFwe3Bvc2l0aW9uOnJlbGF0aXZlO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9LmVsLXNlbGVjdC1ncm91cF9fd3JhcDpub3QoOmxhc3Qtb2YtdHlwZSl7cGFkZGluZy1ib3R0b206MjRweH0uZWwtc2VsZWN0LWdyb3VwX193cmFwOm5vdCg6bGFzdC1vZi10eXBlKTo6YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2xlZnQ6MjBweDtyaWdodDoyMHB4O2JvdHRvbToxMnB4O2hlaWdodDoxcHg7YmFja2dyb3VuZDojRTRFN0VEfS5lbC1zZWxlY3QtZ3JvdXBfX3RpdGxle3BhZGRpbmctbGVmdDoyMHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM5MDkzOTk7bGluZS1oZWlnaHQ6MzBweH0uZWwtc2VsZWN0LWdyb3VwIC5lbC1zZWxlY3QtZHJvcGRvd25fX2l0ZW17cGFkZGluZy1sZWZ0OjIwcHh9LmVsLXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtc2VsZWN0IC5lbC1zZWxlY3RfX3RhZ3M+c3BhbntkaXNwbGF5OmNvbnRlbnRzfS5lbC1zZWxlY3Q6aG92ZXIgLmVsLWlucHV0X19pbm5lcntib3JkZXItY29sb3I6I0MwQzRDQ30uZWwtc2VsZWN0IC5lbC1pbnB1dF9faW5uZXJ7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZy1yaWdodDozNXB4fS5lbC1zZWxlY3QgLmVsLWlucHV0X19pbm5lcjpmb2N1c3tib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtc2VsZWN0IC5lbC1pbnB1dCAuZWwtc2VsZWN0X19jYXJldHtjb2xvcjojQzBDNENDO2ZvbnQtc2l6ZToxNHB4Oy13ZWJraXQtdHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3M7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3M7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcywtd2Via2l0LXRyYW5zZm9ybSAuM3M7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWigxODBkZWcpO3RyYW5zZm9ybTpyb3RhdGVaKDE4MGRlZyk7Y3Vyc29yOnBvaW50ZXJ9LmVsLXNlbGVjdCAuZWwtaW5wdXQgLmVsLXNlbGVjdF9fY2FyZXQuaXMtcmV2ZXJzZXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVaKDApO3RyYW5zZm9ybTpyb3RhdGVaKDApfS5lbC1zZWxlY3QgLmVsLWlucHV0IC5lbC1zZWxlY3RfX2NhcmV0LmlzLXNob3ctY2xvc2V7Zm9udC1zaXplOjE0cHg7dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWigxODBkZWcpO3RyYW5zZm9ybTpyb3RhdGVaKDE4MGRlZyk7Ym9yZGVyLXJhZGl1czoxMDAlO2NvbG9yOiNDMEM0Q0M7LXdlYmtpdC10cmFuc2l0aW9uOmNvbG9yIC4ycyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7dHJhbnNpdGlvbjpjb2xvciAuMnMgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpfS5lbC1zZWxlY3QgLmVsLWlucHV0IC5lbC1zZWxlY3RfX2NhcmV0LmlzLXNob3ctY2xvc2U6aG92ZXJ7Y29sb3I6IzkwOTM5OX0uZWwtc2VsZWN0IC5lbC1pbnB1dC5pcy1kaXNhYmxlZCAuZWwtaW5wdXRfX2lubmVye2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtc2VsZWN0IC5lbC1pbnB1dC5pcy1kaXNhYmxlZCAuZWwtaW5wdXRfX2lubmVyOmhvdmVye2JvcmRlci1jb2xvcjojRTRFN0VEfS5lbC1yYW5nZS1lZGl0b3IuaXMtYWN0aXZlLC5lbC1yYW5nZS1lZGl0b3IuaXMtYWN0aXZlOmhvdmVyLC5lbC1zZWxlY3QgLmVsLWlucHV0LmlzLWZvY3VzIC5lbC1pbnB1dF9faW5uZXJ7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLXNlbGVjdD4uZWwtaW5wdXR7ZGlzcGxheTpibG9ja30uZWwtc2VsZWN0X19pbnB1dHtib3JkZXI6bm9uZTtvdXRsaW5lOjA7cGFkZGluZzowO21hcmdpbi1sZWZ0OjE1cHg7Y29sb3I6IzY2Njtmb250LXNpemU6MTRweDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7aGVpZ2h0OjI4cHg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uZWwtc2VsZWN0X19pbnB1dC5pcy1taW5pe2hlaWdodDoxNHB4fS5lbC1zZWxlY3RfX2Nsb3Nle2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo4cHg7ei1pbmRleDoxMDAwO3JpZ2h0OjI1cHg7Y29sb3I6I0MwQzRDQztsaW5lLWhlaWdodDoxOHB4O2ZvbnQtc2l6ZToxNHB4fS5lbC1zZWxlY3RfX2Nsb3NlOmhvdmVye2NvbG9yOiM5MDkzOTl9LmVsLXNlbGVjdF9fdGFnc3twb3NpdGlvbjphYnNvbHV0ZTtsaW5lLWhlaWdodDpub3JtYWw7d2hpdGUtc3BhY2U6bm9ybWFsO3otaW5kZXg6MTt0b3A6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXB9LmVsLXNlbGVjdF9fdGFncy10ZXh0e292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5lbC1zZWxlY3QgLmVsLXRhZ3std2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O21hcmdpbjoycHggMCAycHggNnB4O2JhY2tncm91bmQtY29sb3I6I2YwZjJmNTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5lbC1zZWxlY3QgLmVsLXRhZ19fY2xvc2UuZWwtaWNvbi1jbG9zZXtiYWNrZ3JvdW5kLWNvbG9yOiNDMEM0Q0M7dG9wOjA7Y29sb3I6I0ZGRjstbXMtZmxleC1uZWdhdGl2ZTowO2ZsZXgtc2hyaW5rOjB9LmVsLXNlbGVjdCAuZWwtdGFnX19jbG9zZS5lbC1pY29uLWNsb3NlOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzkwOTM5OX0uZWwtdGFibGUsLmVsLXRhYmxlX19leHBhbmRlZC1jZWxse2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtc2VsZWN0IC5lbC10YWdfX2Nsb3NlLmVsLWljb24tY2xvc2U6OmJlZm9yZXtkaXNwbGF5OmJsb2NrOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC41cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwuNXB4KX0uZWwtdGFibGV7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjE7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTtmb250LXNpemU6MTRweDtjb2xvcjojNjA2MjY2fS5lbC10YWJsZV9fZW1wdHktYmxvY2t7bWluLWhlaWdodDo2MHB4O3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCU7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5lbC10YWJsZV9fZW1wdHktdGV4dHtsaW5lLWhlaWdodDo2MHB4O3dpZHRoOjUwJTtjb2xvcjojOTA5Mzk5fS5lbC10YWJsZV9fZXhwYW5kLWNvbHVtbiAuY2VsbHtwYWRkaW5nOjA7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXRhYmxlX19leHBhbmQtaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNjY2O2ZvbnQtc2l6ZToxMnB4Oy13ZWJraXQtdHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuMnMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuMnMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLWluLW91dCwtd2Via2l0LXRyYW5zZm9ybSAuMnMgZWFzZS1pbi1vdXQ7aGVpZ2h0OjIwcHh9LmVsLXRhYmxlX19leHBhbmQtaWNvbi0tZXhwYW5kZWR7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0uZWwtdGFibGVfX2V4cGFuZC1pY29uPi5lbC1pY29ue3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO3RvcDo1MCU7bWFyZ2luLWxlZnQ6LTVweDttYXJnaW4tdG9wOi01cHh9LmVsLXRhYmxlX19leHBhbmRlZC1jZWxsW2NsYXNzKj1jZWxsXXtwYWRkaW5nOjIwcHggNTBweH0uZWwtdGFibGVfX2V4cGFuZGVkLWNlbGw6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnR9LmVsLXRhYmxlX19wbGFjZWhvbGRlcntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyMHB4fS5lbC10YWJsZV9fYXBwZW5kLXdyYXBwZXJ7b3ZlcmZsb3c6aGlkZGVufS5lbC10YWJsZS0tZml0e2JvcmRlci1yaWdodDowO2JvcmRlci1ib3R0b206MH0uZWwtdGFibGUtLWZpdCAuZWwtdGFibGVfX2NlbGwuZ3V0dGVye2JvcmRlci1yaWdodC13aWR0aDoxcHh9LmVsLXRhYmxlLS1zY3JvbGxhYmxlLXggLmVsLXRhYmxlX19ib2R5LXdyYXBwZXJ7b3ZlcmZsb3cteDphdXRvfS5lbC10YWJsZS0tc2Nyb2xsYWJsZS15IC5lbC10YWJsZV9fYm9keS13cmFwcGVye292ZXJmbG93LXk6YXV0b30uZWwtdGFibGUgdGhlYWR7Y29sb3I6IzkwOTM5OTtmb250LXdlaWdodDo1MDB9LmVsLXRhYmxlIHRoZWFkLmlzLWdyb3VwIHRoLmVsLXRhYmxlX19jZWxse2JhY2tncm91bmQ6I0Y1RjdGQX0uZWwtdGFibGUgLmVsLXRhYmxlX19jZWxse3BhZGRpbmc6MTJweCAwO21pbi13aWR0aDowOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmxlZnR9LmVsLXRhYmxlIC5lbC10YWJsZV9fY2VsbC5pcy1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXRhYmxlIC5lbC10YWJsZV9fY2VsbC5pcy1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0fS5lbC10YWJsZSAuZWwtdGFibGVfX2NlbGwuZ3V0dGVye3dpZHRoOjE1cHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDowO3BhZGRpbmc6MH0uZWwtdGFibGUgLmVsLXRhYmxlX19jZWxsLmlzLWhpZGRlbj4qe3Zpc2liaWxpdHk6aGlkZGVufS5lbC10YWJsZS0tbWVkaXVtIC5lbC10YWJsZV9fY2VsbHtwYWRkaW5nOjEwcHggMH0uZWwtdGFibGUtLXNtYWxse2ZvbnQtc2l6ZToxMnB4fS5lbC10YWJsZS0tc21hbGwgLmVsLXRhYmxlX19jZWxse3BhZGRpbmc6OHB4IDB9LmVsLXRhYmxlLS1taW5pe2ZvbnQtc2l6ZToxMnB4fS5lbC10YWJsZS0tbWluaSAuZWwtdGFibGVfX2NlbGx7cGFkZGluZzo2cHggMH0uZWwtdGFibGUgdHJ7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC10YWJsZSB0ciBpbnB1dFt0eXBlPWNoZWNrYm94XXttYXJnaW46MH0uZWwtdGFibGUgdGQuZWwtdGFibGVfX2NlbGwsLmVsLXRhYmxlIHRoLmVsLXRhYmxlX19jZWxsLmlzLWxlYWZ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGUgdGguZWwtdGFibGVfX2NlbGwuaXMtc29ydGFibGV7Y3Vyc29yOnBvaW50ZXJ9LmVsLXRhYmxlIHRoLmVsLXRhYmxlX19jZWxse292ZXJmbG93OmhpZGRlbjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC10YWJsZSB0aC5lbC10YWJsZV9fY2VsbD4uY2VsbHtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctcmlnaHQ6MTBweDt3aWR0aDoxMDAlfS5lbC10YWJsZSB0aC5lbC10YWJsZV9fY2VsbD4uY2VsbC5oaWdobGlnaHR7Y29sb3I6IzQwOUVGRn0uZWwtdGFibGUgdGguZWwtdGFibGVfX2NlbGwucmVxdWlyZWQ+ZGl2OjpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDpcXFwiXFxcIjt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiNmZjRkNTE7bWFyZ2luLXJpZ2h0OjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXRhYmxlIHRkLmVsLXRhYmxlX19jZWxsIGRpdnstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWRhdGUtdGFibGUgdGQsLmVsLXRhYmxlIC5jZWxsLC5lbC10YWJsZS1maWx0ZXJ7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXRhYmxlIHRkLmVsLXRhYmxlX19jZWxsLmd1dHRlcnt3aWR0aDowfS5lbC10YWJsZSAuY2VsbHtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm9ybWFsO3dvcmQtYnJlYWs6YnJlYWstYWxsO2xpbmUtaGVpZ2h0OjIzcHg7cGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy1yaWdodDoxMHB4fS5lbC10YWJsZSAuY2VsbC5lbC10b29sdGlwe3doaXRlLXNwYWNlOm5vd3JhcDttaW4td2lkdGg6NTBweH0uZWwtdGFibGUtLWJvcmRlciwuZWwtdGFibGUtLWdyb3Vwe2JvcmRlcjoxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGUtLWJvcmRlcjo6YWZ0ZXIsLmVsLXRhYmxlLS1ncm91cDo6YWZ0ZXIsLmVsLXRhYmxlOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNFQkVFRjU7ei1pbmRleDoxfS5lbC10YWJsZS0tYm9yZGVyOjphZnRlciwuZWwtdGFibGUtLWdyb3VwOjphZnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjFweDtoZWlnaHQ6MTAwJX0uZWwtdGFibGU6OmJlZm9yZXtsZWZ0OjA7Ym90dG9tOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4fS5lbC10YWJsZS0tYm9yZGVye2JvcmRlci1yaWdodDpub25lO2JvcmRlci1ib3R0b206bm9uZX0uZWwtdGFibGUtLWJvcmRlci5lbC1sb2FkaW5nLXBhcmVudC0tcmVsYXRpdmV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5lbC10YWJsZS0tYm9yZGVyIC5lbC10YWJsZV9fY2VsbCwuZWwtdGFibGVfX2JvZHktd3JhcHBlciAuZWwtdGFibGUtLWJvcmRlci5pcy1zY3JvbGxpbmctbGVmdH4uZWwtdGFibGVfX2ZpeGVke2JvcmRlci1yaWdodDoxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGUtLWJvcmRlciAuZWwtdGFibGVfX2NlbGw6Zmlyc3QtY2hpbGQgLmNlbGx7cGFkZGluZy1sZWZ0OjEwcHh9LmVsLXRhYmxlLS1ib3JkZXIgdGguZWwtdGFibGVfX2NlbGwuZ3V0dGVyOmxhc3Qtb2YtdHlwZXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRUJFRUY1O2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5lbC10YWJsZS0tYm9yZGVyIHRoLmVsLXRhYmxlX19jZWxsLC5lbC10YWJsZV9fZml4ZWQtcmlnaHQtcGF0Y2h7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGUtLWhpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbn0uZWwtdGFibGVfX2ZpeGVkLC5lbC10YWJsZV9fZml4ZWQtcmlnaHR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6aGlkZGVuOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsMCwwLC4xMik7Ym94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsMCwwLC4xMil9LmVsLXRhYmxlX19maXhlZC1yaWdodDo6YmVmb3JlLC5lbC10YWJsZV9fZml4ZWQ6OmJlZm9yZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206MDt3aWR0aDoxMDAlO2hlaWdodDoxcHg7YmFja2dyb3VuZC1jb2xvcjojRUJFRUY1O3otaW5kZXg6NH0uZWwtdGFibGVfX2ZpeGVkLXJpZ2h0LXBhdGNoe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMXB4O3JpZ2h0OjA7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC10YWJsZV9fZml4ZWQtcmlnaHR7dG9wOjA7bGVmdDphdXRvO3JpZ2h0OjB9LmVsLXRhYmxlX19maXhlZC1yaWdodCAuZWwtdGFibGVfX2ZpeGVkLWJvZHktd3JhcHBlciwuZWwtdGFibGVfX2ZpeGVkLXJpZ2h0IC5lbC10YWJsZV9fZml4ZWQtZm9vdGVyLXdyYXBwZXIsLmVsLXRhYmxlX19maXhlZC1yaWdodCAuZWwtdGFibGVfX2ZpeGVkLWhlYWRlci13cmFwcGVye2xlZnQ6YXV0bztyaWdodDowfS5lbC10YWJsZV9fZml4ZWQtaGVhZGVyLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3otaW5kZXg6M30uZWwtdGFibGVfX2ZpeGVkLWZvb3Rlci13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206MDt6LWluZGV4OjN9LmVsLXRhYmxlX19maXhlZC1mb290ZXItd3JhcHBlciB0Ym9keSB0ZC5lbC10YWJsZV9fY2VsbHtib3JkZXItdG9wOjFweCBzb2xpZCAjRUJFRUY1O2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQTtjb2xvcjojNjA2MjY2fS5lbC10YWJsZV9fZml4ZWQtYm9keS13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MzdweDtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDozfS5lbC10YWJsZV9fYm9keS13cmFwcGVyLC5lbC10YWJsZV9fZm9vdGVyLXdyYXBwZXIsLmVsLXRhYmxlX19oZWFkZXItd3JhcHBlcnt3aWR0aDoxMDAlfS5lbC10YWJsZV9fZm9vdGVyLXdyYXBwZXJ7bWFyZ2luLXRvcDotMXB4fS5lbC10YWJsZV9fZm9vdGVyLXdyYXBwZXIgdGQuZWwtdGFibGVfX2NlbGx7Ym9yZGVyLXRvcDoxcHggc29saWQgI0VCRUVGNX0uZWwtdGFibGVfX2JvZHksLmVsLXRhYmxlX19mb290ZXIsLmVsLXRhYmxlX19oZWFkZXJ7dGFibGUtbGF5b3V0OmZpeGVkO2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZX0uZWwtdGFibGVfX2Zvb3Rlci13cmFwcGVyLC5lbC10YWJsZV9faGVhZGVyLXdyYXBwZXJ7b3ZlcmZsb3c6aGlkZGVufS5lbC10YWJsZV9fZm9vdGVyLXdyYXBwZXIgdGJvZHkgdGQuZWwtdGFibGVfX2NlbGwsLmVsLXRhYmxlX19oZWFkZXItd3JhcHBlciB0Ym9keSB0ZC5lbC10YWJsZV9fY2VsbHtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Y29sb3I6IzYwNjI2Nn0uZWwtdGFibGVfX2JvZHktd3JhcHBlcntvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9LmVsLXRhYmxlX19ib2R5LXdyYXBwZXIuaXMtc2Nyb2xsaW5nLWxlZnR+LmVsLXRhYmxlX19maXhlZCwuZWwtdGFibGVfX2JvZHktd3JhcHBlci5pcy1zY3JvbGxpbmctbm9uZX4uZWwtdGFibGVfX2ZpeGVkLC5lbC10YWJsZV9fYm9keS13cmFwcGVyLmlzLXNjcm9sbGluZy1ub25lfi5lbC10YWJsZV9fZml4ZWQtcmlnaHQsLmVsLXRhYmxlX19ib2R5LXdyYXBwZXIuaXMtc2Nyb2xsaW5nLXJpZ2h0fi5lbC10YWJsZV9fZml4ZWQtcmlnaHR7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS5lbC10YWJsZV9fYm9keS13cmFwcGVyIC5lbC10YWJsZS0tYm9yZGVyLmlzLXNjcm9sbGluZy1yaWdodH4uZWwtdGFibGVfX2ZpeGVkLXJpZ2h0e2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRUJFRUY1fS5lbC10YWJsZSAuY2FyZXQtd3JhcHBlcntkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDozNHB4O3dpZHRoOjI0cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmluaXRpYWw7cG9zaXRpb246cmVsYXRpdmV9LmVsLXRhYmxlIC5zb3J0LWNhcmV0e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyOjVweCBzb2xpZCB0cmFuc3BhcmVudDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjdweH0uZWwtdGFibGUgLnNvcnQtY2FyZXQuYXNjZW5kaW5ne2JvcmRlci1ib3R0b20tY29sb3I6I0MwQzRDQzt0b3A6NXB4fS5lbC10YWJsZSAuc29ydC1jYXJldC5kZXNjZW5kaW5ne2JvcmRlci10b3AtY29sb3I6I0MwQzRDQztib3R0b206N3B4fS5lbC10YWJsZSAuYXNjZW5kaW5nIC5zb3J0LWNhcmV0LmFzY2VuZGluZ3tib3JkZXItYm90dG9tLWNvbG9yOiM0MDlFRkZ9LmVsLXRhYmxlIC5kZXNjZW5kaW5nIC5zb3J0LWNhcmV0LmRlc2NlbmRpbmd7Ym9yZGVyLXRvcC1jb2xvcjojNDA5RUZGfS5lbC10YWJsZSAuaGlkZGVuLWNvbHVtbnN7dmlzaWJpbGl0eTpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDotMX0uZWwtdGFibGUtLXN0cmlwZWQgLmVsLXRhYmxlX19ib2R5IHRyLmVsLXRhYmxlX19yb3ctLXN0cmlwZWQgdGQuZWwtdGFibGVfX2NlbGx7YmFja2dyb3VuZDojRkFGQUZBfS5lbC10YWJsZS0tc3RyaXBlZCAuZWwtdGFibGVfX2JvZHkgdHIuZWwtdGFibGVfX3Jvdy0tc3RyaXBlZC5jdXJyZW50LXJvdyB0ZC5lbC10YWJsZV9fY2VsbCwuZWwtdGFibGUtLXN0cmlwZWQgLmVsLXRhYmxlX19ib2R5IHRyLmVsLXRhYmxlX19yb3ctLXN0cmlwZWQuc2VsZWN0aW9uLXJvdyB0ZC5lbC10YWJsZV9fY2VsbHtiYWNrZ3JvdW5kLWNvbG9yOiNlY2Y1ZmZ9LmVsLXRhYmxlX19ib2R5IHRyLmhvdmVyLXJvdy5jdXJyZW50LXJvdz50ZC5lbC10YWJsZV9fY2VsbCwuZWwtdGFibGVfX2JvZHkgdHIuaG92ZXItcm93LmVsLXRhYmxlX19yb3ctLXN0cmlwZWQuY3VycmVudC1yb3c+dGQuZWwtdGFibGVfX2NlbGwsLmVsLXRhYmxlX19ib2R5IHRyLmhvdmVyLXJvdy5lbC10YWJsZV9fcm93LS1zdHJpcGVkLnNlbGVjdGlvbi1yb3c+dGQuZWwtdGFibGVfX2NlbGwsLmVsLXRhYmxlX19ib2R5IHRyLmhvdmVyLXJvdy5lbC10YWJsZV9fcm93LS1zdHJpcGVkPnRkLmVsLXRhYmxlX19jZWxsLC5lbC10YWJsZV9fYm9keSB0ci5ob3Zlci1yb3cuc2VsZWN0aW9uLXJvdz50ZC5lbC10YWJsZV9fY2VsbCwuZWwtdGFibGVfX2JvZHkgdHIuaG92ZXItcm93PnRkLmVsLXRhYmxlX19jZWxse2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQX0uZWwtdGFibGVfX2JvZHkgdHIuY3VycmVudC1yb3c+dGQuZWwtdGFibGVfX2NlbGwsLmVsLXRhYmxlX19ib2R5IHRyLnNlbGVjdGlvbi1yb3c+dGQuZWwtdGFibGVfX2NlbGx7YmFja2dyb3VuZC1jb2xvcjojZWNmNWZmfS5lbC10YWJsZV9fY29sdW1uLXJlc2l6ZS1wcm94eXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjIwMHB4O3RvcDowO2JvdHRvbTowO3dpZHRoOjA7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNFQkVFRjU7ei1pbmRleDoxMH0uZWwtdGFibGVfX2NvbHVtbi1maWx0ZXItdHJpZ2dlcntkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDozNHB4O2N1cnNvcjpwb2ludGVyfS5lbC10YWJsZV9fY29sdW1uLWZpbHRlci10cmlnZ2VyIGl7Y29sb3I6IzkwOTM5OTtmb250LXNpemU6MTJweDstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguNzUpO3RyYW5zZm9ybTpzY2FsZSguNzUpfS5lbC10YWJsZS0tZW5hYmxlLXJvdy10cmFuc2l0aW9uIC5lbC10YWJsZV9fYm9keSB0ZC5lbC10YWJsZV9fY2VsbHstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMjVzIGVhc2U7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4yNXMgZWFzZX0uZWwtdGFibGUtLWVuYWJsZS1yb3ctaG92ZXIgLmVsLXRhYmxlX19ib2R5IHRyOmhvdmVyPnRkLmVsLXRhYmxlX19jZWxse2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQX0uZWwtdGFibGUtLWZsdWlkLWhlaWdodCAuZWwtdGFibGVfX2ZpeGVkLC5lbC10YWJsZS0tZmx1aWQtaGVpZ2h0IC5lbC10YWJsZV9fZml4ZWQtcmlnaHR7Ym90dG9tOjA7b3ZlcmZsb3c6aGlkZGVufS5lbC10YWJsZSBbY2xhc3MqPWVsLXRhYmxlX19yb3ctLWxldmVsXSAuZWwtdGFibGVfX2V4cGFuZC1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjIwcHg7bGluZS1oZWlnaHQ6MjBweDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tcmlnaHQ6M3B4fS5lbC10YWJsZS1jb2x1bW4tLXNlbGVjdGlvbiAuY2VsbHtwYWRkaW5nLWxlZnQ6MTRweDtwYWRkaW5nLXJpZ2h0OjE0cHh9LmVsLXRhYmxlLWZpbHRlcntib3JkZXI6MXB4IHNvbGlkICNFQkVFRjU7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW46MnB4IDB9LmVsLXRhYmxlLWZpbHRlcl9fbGlzdHtwYWRkaW5nOjVweCAwO21hcmdpbjowO2xpc3Qtc3R5bGU6bm9uZTttaW4td2lkdGg6MTAwcHh9LmVsLXRhYmxlLWZpbHRlcl9fbGlzdC1pdGVte2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDEwcHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE0cHh9LmVsLXRhYmxlLWZpbHRlcl9fbGlzdC1pdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VjZjVmZjtjb2xvcjojNjZiMWZmfS5lbC10YWJsZS1maWx0ZXJfX2xpc3QtaXRlbS5pcy1hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNDA5RUZGO2NvbG9yOiNGRkZ9LmVsLXRhYmxlLWZpbHRlcl9fY29udGVudHttaW4td2lkdGg6MTAwcHh9LmVsLXRhYmxlLWZpbHRlcl9fYm90dG9te2JvcmRlci10b3A6MXB4IHNvbGlkICNFQkVFRjU7cGFkZGluZzo4cHh9LmVsLXRhYmxlLWZpbHRlcl9fYm90dG9tIGJ1dHRvbntiYWNrZ3JvdW5kOjAgMDtib3JkZXI6bm9uZTtjb2xvcjojNjA2MjY2O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6MCAzcHh9LmVsLWRhdGUtdGFibGUgdGQuaW4tcmFuZ2UgZGl2LC5lbC1kYXRlLXRhYmxlIHRkLmluLXJhbmdlIGRpdjpob3ZlciwuZWwtZGF0ZS10YWJsZS5pcy13ZWVrLW1vZGUgLmVsLWRhdGUtdGFibGVfX3Jvdy5jdXJyZW50IGRpdiwuZWwtZGF0ZS10YWJsZS5pcy13ZWVrLW1vZGUgLmVsLWRhdGUtdGFibGVfX3Jvdzpob3ZlciBkaXZ7YmFja2dyb3VuZC1jb2xvcjojRjJGNkZDfS5lbC10YWJsZS1maWx0ZXJfX2JvdHRvbSBidXR0b246aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtdGFibGUtZmlsdGVyX19ib3R0b20gYnV0dG9uOmZvY3Vze291dGxpbmU6MH0uZWwtdGFibGUtZmlsdGVyX19ib3R0b20gYnV0dG9uLmlzLWRpc2FibGVke2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC10YWJsZS1maWx0ZXJfX3dyYXB7bWF4LWhlaWdodDoyODBweH0uZWwtdGFibGUtZmlsdGVyX19jaGVja2JveC1ncm91cHtwYWRkaW5nOjEwcHh9LmVsLXRhYmxlLWZpbHRlcl9fY2hlY2tib3gtZ3JvdXAgbGFiZWwuZWwtY2hlY2tib3h7ZGlzcGxheTpibG9jazttYXJnaW4tcmlnaHQ6NXB4O21hcmdpbi1ib3R0b206OHB4O21hcmdpbi1sZWZ0OjVweH0uZWwtdGFibGUtZmlsdGVyX19jaGVja2JveC1ncm91cCAuZWwtY2hlY2tib3g6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmVsLWRhdGUtdGFibGV7Zm9udC1zaXplOjEycHg7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5lbC1kYXRlLXRhYmxlLmlzLXdlZWstbW9kZSAuZWwtZGF0ZS10YWJsZV9fcm93OmhvdmVyIHRkLmF2YWlsYWJsZTpob3Zlcntjb2xvcjojNjA2MjY2fS5lbC1kYXRlLXRhYmxlLmlzLXdlZWstbW9kZSAuZWwtZGF0ZS10YWJsZV9fcm93OmhvdmVyIHRkOmZpcnN0LWNoaWxkIGRpdnttYXJnaW4tbGVmdDo1cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxNXB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MTVweH0uZWwtZGF0ZS10YWJsZS5pcy13ZWVrLW1vZGUgLmVsLWRhdGUtdGFibGVfX3Jvdzpob3ZlciB0ZDpsYXN0LWNoaWxkIGRpdnttYXJnaW4tcmlnaHQ6NXB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjE1cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MTVweH0uZWwtZGF0ZS10YWJsZSB0ZHt3aWR0aDozMnB4O2hlaWdodDozMHB4O3BhZGRpbmc6NHB4IDA7Ym94LXNpemluZzpib3JkZXItYm94O3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC1kYXRlLXRhYmxlIHRkIGRpdntoZWlnaHQ6MzBweDtwYWRkaW5nOjNweCAwOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtZGF0ZS10YWJsZSB0ZCBzcGFue3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvO2xpbmUtaGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTtib3JkZXItcmFkaXVzOjUwJX0uZWwtZGF0ZS10YWJsZSB0ZC5uZXh0LW1vbnRoLC5lbC1kYXRlLXRhYmxlIHRkLnByZXYtbW9udGh7Y29sb3I6I0MwQzRDQ30uZWwtZGF0ZS10YWJsZSB0ZC50b2RheXtwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtZGF0ZS10YWJsZSB0ZC50b2RheSBzcGFue2NvbG9yOiM0MDlFRkY7Zm9udC13ZWlnaHQ6NzAwfS5lbC1kYXRlLXRhYmxlIHRkLnRvZGF5LmVuZC1kYXRlIHNwYW4sLmVsLWRhdGUtdGFibGUgdGQudG9kYXkuc3RhcnQtZGF0ZSBzcGFue2NvbG9yOiNGRkZ9LmVsLWRhdGUtdGFibGUgdGQuYXZhaWxhYmxlOmhvdmVye2NvbG9yOiM0MDlFRkZ9LmVsLWRhdGUtdGFibGUgdGQuY3VycmVudDpub3QoLmRpc2FibGVkKSBzcGFue2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojNDA5RUZGfS5lbC1kYXRlLXRhYmxlIHRkLmVuZC1kYXRlIGRpdiwuZWwtZGF0ZS10YWJsZSB0ZC5zdGFydC1kYXRlIGRpdntjb2xvcjojRkZGfS5lbC1kYXRlLXRhYmxlIHRkLmVuZC1kYXRlIHNwYW4sLmVsLWRhdGUtdGFibGUgdGQuc3RhcnQtZGF0ZSBzcGFue2JhY2tncm91bmQtY29sb3I6IzQwOUVGRn0uZWwtZGF0ZS10YWJsZSB0ZC5zdGFydC1kYXRlIGRpdnttYXJnaW4tbGVmdDo1cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxNXB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MTVweH0uZWwtZGF0ZS10YWJsZSB0ZC5lbmQtZGF0ZSBkaXZ7bWFyZ2luLXJpZ2h0OjVweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czoxNXB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjE1cHh9LmVsLWRhdGUtdGFibGUgdGQuZGlzYWJsZWQgZGl2e2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQTtvcGFjaXR5OjE7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOiNDMEM0Q0N9LmVsLWRhdGUtdGFibGUgdGQuc2VsZWN0ZWQgZGl2e21hcmdpbi1sZWZ0OjVweDttYXJnaW4tcmlnaHQ6NXB4O2JhY2tncm91bmQtY29sb3I6I0YyRjZGQztib3JkZXItcmFkaXVzOjE1cHh9LmVsLWRhdGUtdGFibGUgdGQuc2VsZWN0ZWQgZGl2OmhvdmVye2JhY2tncm91bmQtY29sb3I6I0YyRjZGQ30uZWwtZGF0ZS10YWJsZSB0ZC5zZWxlY3RlZCBzcGFue2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjtjb2xvcjojRkZGO2JvcmRlci1yYWRpdXM6MTVweH0uZWwtZGF0ZS10YWJsZSB0ZC53ZWVre2ZvbnQtc2l6ZTo4MCU7Y29sb3I6IzYwNjI2Nn0uZWwtbW9udGgtdGFibGUsLmVsLXllYXItdGFibGV7Zm9udC1zaXplOjEycHg7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS5lbC1kYXRlLXRhYmxlIHRoe3BhZGRpbmc6NXB4O2NvbG9yOiM2MDYyNjY7Zm9udC13ZWlnaHQ6NDAwO2JvcmRlci1ib3R0b206c29saWQgMXB4ICNFQkVFRjV9LmVsLW1vbnRoLXRhYmxle21hcmdpbjotMXB4fS5lbC1tb250aC10YWJsZSB0ZHt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjhweCAwO2N1cnNvcjpwb2ludGVyfS5lbC1tb250aC10YWJsZSB0ZCBkaXZ7aGVpZ2h0OjQ4cHg7cGFkZGluZzo2cHggMDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLW1vbnRoLXRhYmxlIHRkLnRvZGF5IC5jZWxse2NvbG9yOiM0MDlFRkY7Zm9udC13ZWlnaHQ6NzAwfS5lbC1tb250aC10YWJsZSB0ZC50b2RheS5lbmQtZGF0ZSAuY2VsbCwuZWwtbW9udGgtdGFibGUgdGQudG9kYXkuc3RhcnQtZGF0ZSAuY2VsbHtjb2xvcjojRkZGfS5lbC1tb250aC10YWJsZSB0ZC5kaXNhYmxlZCAuY2VsbHtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOiNDMEM0Q0N9LmVsLW1vbnRoLXRhYmxlIHRkLmRpc2FibGVkIC5jZWxsOmhvdmVye2NvbG9yOiNDMEM0Q0N9LmVsLW1vbnRoLXRhYmxlIHRkIC5jZWxse3dpZHRoOjYwcHg7aGVpZ2h0OjM2cHg7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDozNnB4O2NvbG9yOiM2MDYyNjY7bWFyZ2luOjAgYXV0bztib3JkZXItcmFkaXVzOjE4cHh9LmVsLW1vbnRoLXRhYmxlIHRkIC5jZWxsOmhvdmVye2NvbG9yOiM0MDlFRkZ9LmVsLW1vbnRoLXRhYmxlIHRkLmluLXJhbmdlIGRpdiwuZWwtbW9udGgtdGFibGUgdGQuaW4tcmFuZ2UgZGl2OmhvdmVye2JhY2tncm91bmQtY29sb3I6I0YyRjZGQ30uZWwtbW9udGgtdGFibGUgdGQuZW5kLWRhdGUgZGl2LC5lbC1tb250aC10YWJsZSB0ZC5zdGFydC1kYXRlIGRpdntjb2xvcjojRkZGfS5lbC1tb250aC10YWJsZSB0ZC5lbmQtZGF0ZSAuY2VsbCwuZWwtbW9udGgtdGFibGUgdGQuc3RhcnQtZGF0ZSAuY2VsbHtjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6IzQwOUVGRn0uZWwtbW9udGgtdGFibGUgdGQuc3RhcnQtZGF0ZSBkaXZ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoyNHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MjRweH0uZWwtbW9udGgtdGFibGUgdGQuZW5kLWRhdGUgZGl2e2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjI0cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MjRweH0uZWwtbW9udGgtdGFibGUgdGQuY3VycmVudDpub3QoLmRpc2FibGVkKSAuY2VsbHtjb2xvcjojNDA5RUZGfS5lbC15ZWFyLXRhYmxle21hcmdpbjotMXB4fS5lbC15ZWFyLXRhYmxlIC5lbC1pY29ue2NvbG9yOiMzMDMxMzN9LmVsLXllYXItdGFibGUgdGR7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoyMHB4IDNweDtjdXJzb3I6cG9pbnRlcn0uZWwteWVhci10YWJsZSB0ZC50b2RheSAuY2VsbHtjb2xvcjojNDA5RUZGO2ZvbnQtd2VpZ2h0OjcwMH0uZWwteWVhci10YWJsZSB0ZC5kaXNhYmxlZCAuY2VsbHtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOiNDMEM0Q0N9LmVsLXllYXItdGFibGUgdGQuZGlzYWJsZWQgLmNlbGw6aG92ZXJ7Y29sb3I6I0MwQzRDQ30uZWwteWVhci10YWJsZSB0ZCAuY2VsbHt3aWR0aDo0OHB4O2hlaWdodDozMnB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MzJweDtjb2xvcjojNjA2MjY2O21hcmdpbjowIGF1dG99LmVsLXllYXItdGFibGUgdGQgLmNlbGw6aG92ZXIsLmVsLXllYXItdGFibGUgdGQuY3VycmVudDpub3QoLmRpc2FibGVkKSAuY2VsbHtjb2xvcjojNDA5RUZGfS5lbC1kYXRlLXJhbmdlLXBpY2tlcnt3aWR0aDo2NDZweH0uZWwtZGF0ZS1yYW5nZS1waWNrZXIuaGFzLXNpZGViYXJ7d2lkdGg6NzU2cHh9LmVsLWRhdGUtcmFuZ2UtcGlja2VyIHRhYmxle3RhYmxlLWxheW91dDpmaXhlZDt3aWR0aDoxMDAlfS5lbC1kYXRlLXJhbmdlLXBpY2tlciAuZWwtcGlja2VyLXBhbmVsX19ib2R5e21pbi13aWR0aDo1MTNweH0uZWwtZGF0ZS1yYW5nZS1waWNrZXIgLmVsLXBpY2tlci1wYW5lbF9fY29udGVudHttYXJnaW46MH0uZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2hlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcjtoZWlnaHQ6MjhweH0uZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2hlYWRlciBbY2xhc3MqPWFycm93LWxlZnRde2Zsb2F0OmxlZnR9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX19oZWFkZXIgW2NsYXNzKj1hcnJvdy1yaWdodF17ZmxvYXQ6cmlnaHR9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX19oZWFkZXIgZGl2e2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjUwMDttYXJnaW4tcmlnaHQ6NTBweH0uZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2NvbnRlbnR7ZmxvYXQ6bGVmdDt3aWR0aDo1MCU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MTZweH0uZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2NvbnRlbnQuaXMtbGVmdHtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNlNGU0ZTR9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX19jb250ZW50IC5lbC1kYXRlLXJhbmdlLXBpY2tlcl9faGVhZGVyIGRpdnttYXJnaW4tbGVmdDo1MHB4O21hcmdpbi1yaWdodDo1MHB4fS5lbC1kYXRlLXJhbmdlLXBpY2tlcl9fZWRpdG9ycy13cmFwey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OnRhYmxlLWNlbGx9LmVsLWRhdGUtcmFuZ2UtcGlja2VyX19lZGl0b3JzLXdyYXAuaXMtcmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uZWwtZGF0ZS1yYW5nZS1waWNrZXJfX3RpbWUtaGVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNGU0ZTQ7Zm9udC1zaXplOjEycHg7cGFkZGluZzo4cHggNXB4IDVweDtkaXNwbGF5OnRhYmxlO3dpZHRoOjEwMCU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1kYXRlLXJhbmdlLXBpY2tlcl9fdGltZS1oZWFkZXI+LmVsLWljb24tYXJyb3ctcmlnaHR7Zm9udC1zaXplOjIwcHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6dGFibGUtY2VsbDtjb2xvcjojMzAzMTMzfS5lbC1kYXRlLXJhbmdlLXBpY2tlcl9fdGltZS1waWNrZXItd3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OnRhYmxlLWNlbGw7cGFkZGluZzowIDVweH0uZWwtZGF0ZS1yYW5nZS1waWNrZXJfX3RpbWUtcGlja2VyLXdyYXAgLmVsLXBpY2tlci1wYW5lbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTNweDtyaWdodDowO3otaW5kZXg6MTtiYWNrZ3JvdW5kOiNGRkZ9LmVsLWRhdGUtcGlja2Vye3dpZHRoOjMyMnB4fS5lbC1kYXRlLXBpY2tlci5oYXMtc2lkZWJhci5oYXMtdGltZXt3aWR0aDo0MzRweH0uZWwtZGF0ZS1waWNrZXIuaGFzLXNpZGViYXJ7d2lkdGg6NDM4cHh9LmVsLWRhdGUtcGlja2VyLmhhcy10aW1lIC5lbC1waWNrZXItcGFuZWxfX2JvZHktd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtZGF0ZS1waWNrZXIgLmVsLXBpY2tlci1wYW5lbF9fY29udGVudHt3aWR0aDoyOTJweH0uZWwtZGF0ZS1waWNrZXIgdGFibGV7dGFibGUtbGF5b3V0OmZpeGVkO3dpZHRoOjEwMCV9LmVsLWRhdGUtcGlja2VyX19lZGl0b3Itd3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OnRhYmxlLWNlbGw7cGFkZGluZzowIDVweH0uZWwtZGF0ZS1waWNrZXJfX3RpbWUtaGVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNGU0ZTQ7Zm9udC1zaXplOjEycHg7cGFkZGluZzo4cHggNXB4IDVweDtkaXNwbGF5OnRhYmxlO3dpZHRoOjEwMCU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1kYXRlLXBpY2tlcl9faGVhZGVye21hcmdpbjoxMnB4O3RleHQtYWxpZ246Y2VudGVyfS5lbC1kYXRlLXBpY2tlcl9faGVhZGVyLS1ib3JkZXJlZHttYXJnaW4tYm90dG9tOjA7cGFkZGluZy1ib3R0b206MTJweDtib3JkZXItYm90dG9tOnNvbGlkIDFweCAjRUJFRUY1fS5lbC1kYXRlLXBpY2tlcl9faGVhZGVyLS1ib3JkZXJlZCsuZWwtcGlja2VyLXBhbmVsX19jb250ZW50e21hcmdpbi10b3A6MH0uZWwtZGF0ZS1waWNrZXJfX2hlYWRlci1sYWJlbHtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo1MDA7cGFkZGluZzowIDVweDtsaW5lLWhlaWdodDoyMnB4O3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO2NvbG9yOiM2MDYyNjZ9LmVsLWRhdGUtcGlja2VyX19oZWFkZXItbGFiZWwuYWN0aXZlLC5lbC1kYXRlLXBpY2tlcl9faGVhZGVyLWxhYmVsOmhvdmVye2NvbG9yOiM0MDlFRkZ9LmVsLWRhdGUtcGlja2VyX19wcmV2LWJ0bntmbG9hdDpsZWZ0fS5lbC1kYXRlLXBpY2tlcl9fbmV4dC1idG57ZmxvYXQ6cmlnaHR9LmVsLWRhdGUtcGlja2VyX190aW1lLXdyYXB7cGFkZGluZzoxMHB4O3RleHQtYWxpZ246Y2VudGVyfS5lbC1kYXRlLXBpY2tlcl9fdGltZS1sYWJlbHtmbG9hdDpsZWZ0O2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjMwcHg7bWFyZ2luLWxlZnQ6MTBweH0udGltZS1zZWxlY3R7bWFyZ2luOjVweCAwO21pbi13aWR0aDowfS50aW1lLXNlbGVjdCAuZWwtcGlja2VyLXBhbmVsX19jb250ZW50e21heC1oZWlnaHQ6MjAwcHg7bWFyZ2luOjB9LnRpbWUtc2VsZWN0LWl0ZW17cGFkZGluZzo4cHggMTBweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoyMHB4fS50aW1lLXNlbGVjdC1pdGVtLnNlbGVjdGVkOm5vdCguZGlzYWJsZWQpe2NvbG9yOiM0MDlFRkY7Zm9udC13ZWlnaHQ6NzAwfS50aW1lLXNlbGVjdC1pdGVtLmRpc2FibGVke2NvbG9yOiNFNEU3RUQ7Y3Vyc29yOm5vdC1hbGxvd2VkfS50aW1lLXNlbGVjdC1pdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQTtmb250LXdlaWdodDo3MDA7Y3Vyc29yOnBvaW50ZXJ9LmVsLWRhdGUtZWRpdG9ye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtYWxpZ246bGVmdH0uZWwtZGF0ZS1lZGl0b3IuZWwtaW5wdXQsLmVsLWRhdGUtZWRpdG9yLmVsLWlucHV0X19pbm5lcnt3aWR0aDoyMjBweH0uZWwtZGF0ZS1lZGl0b3ItLW1vbnRocmFuZ2UuZWwtaW5wdXQsLmVsLWRhdGUtZWRpdG9yLS1tb250aHJhbmdlLmVsLWlucHV0X19pbm5lcnt3aWR0aDozMDBweH0uZWwtZGF0ZS1lZGl0b3ItLWRhdGVyYW5nZS5lbC1pbnB1dCwuZWwtZGF0ZS1lZGl0b3ItLWRhdGVyYW5nZS5lbC1pbnB1dF9faW5uZXIsLmVsLWRhdGUtZWRpdG9yLS10aW1lcmFuZ2UuZWwtaW5wdXQsLmVsLWRhdGUtZWRpdG9yLS10aW1lcmFuZ2UuZWwtaW5wdXRfX2lubmVye3dpZHRoOjM1MHB4fS5lbC1kYXRlLWVkaXRvci0tZGF0ZXRpbWVyYW5nZS5lbC1pbnB1dCwuZWwtZGF0ZS1lZGl0b3ItLWRhdGV0aW1lcmFuZ2UuZWwtaW5wdXRfX2lubmVye3dpZHRoOjQwMHB4fS5lbC1kYXRlLWVkaXRvci0tZGF0ZXMgLmVsLWlucHV0X19pbm5lcnt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uZWwtZGF0ZS1lZGl0b3IgLmVsLWljb24tY2lyY2xlLWNsb3Nle2N1cnNvcjpwb2ludGVyfS5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2VfX2ljb257Zm9udC1zaXplOjE0cHg7bWFyZ2luLWxlZnQ6LTVweDtjb2xvcjojQzBDNENDO2Zsb2F0OmxlZnQ7bGluZS1oZWlnaHQ6MzJweH0uZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlLWlucHV0ey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtib3JkZXI6bm9uZTtvdXRsaW5lOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwMCU7bWFyZ2luOjA7cGFkZGluZzowO3dpZHRoOjM5JTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTRweDtjb2xvcjojNjA2MjY2fS5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2UtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2UtaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2UtaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZS1zZXBhcmF0b3J7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwMCU7cGFkZGluZzowIDVweDttYXJnaW46MDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDozMnB4O2ZvbnQtc2l6ZToxNHB4O3dpZHRoOjUlO2NvbG9yOiMzMDMxMzN9LmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9fY2xvc2UtaWNvbntmb250LXNpemU6MTRweDtjb2xvcjojQzBDNENDO3dpZHRoOjI1cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxvYXQ6cmlnaHQ7bGluZS1oZWlnaHQ6MzJweH0uZWwtcmFuZ2UtZWRpdG9yLmVsLWlucHV0X19pbm5lcntkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6M3B4IDEwcHh9LmVsLXJhbmdlLWVkaXRvciAuZWwtcmFuZ2UtaW5wdXR7bGluZS1oZWlnaHQ6MX0uZWwtcmFuZ2UtZWRpdG9yLS1tZWRpdW0uZWwtaW5wdXRfX2lubmVye2hlaWdodDozNnB4fS5lbC1yYW5nZS1lZGl0b3ItLW1lZGl1bSAuZWwtcmFuZ2Utc2VwYXJhdG9ye2xpbmUtaGVpZ2h0OjI4cHg7Zm9udC1zaXplOjE0cHh9LmVsLXJhbmdlLWVkaXRvci0tbWVkaXVtIC5lbC1yYW5nZS1pbnB1dHtmb250LXNpemU6MTRweH0uZWwtcmFuZ2UtZWRpdG9yLS1tZWRpdW0gLmVsLXJhbmdlX19jbG9zZS1pY29uLC5lbC1yYW5nZS1lZGl0b3ItLW1lZGl1bSAuZWwtcmFuZ2VfX2ljb257bGluZS1oZWlnaHQ6MjhweH0uZWwtcmFuZ2UtZWRpdG9yLS1zbWFsbC5lbC1pbnB1dF9faW5uZXJ7aGVpZ2h0OjMycHh9LmVsLXJhbmdlLWVkaXRvci0tc21hbGwgLmVsLXJhbmdlLXNlcGFyYXRvcntsaW5lLWhlaWdodDoyNHB4O2ZvbnQtc2l6ZToxM3B4fS5lbC1yYW5nZS1lZGl0b3ItLXNtYWxsIC5lbC1yYW5nZS1pbnB1dHtmb250LXNpemU6MTNweH0uZWwtcmFuZ2UtZWRpdG9yLS1zbWFsbCAuZWwtcmFuZ2VfX2Nsb3NlLWljb24sLmVsLXJhbmdlLWVkaXRvci0tc21hbGwgLmVsLXJhbmdlX19pY29ue2xpbmUtaGVpZ2h0OjI0cHh9LmVsLXJhbmdlLWVkaXRvci0tbWluaS5lbC1pbnB1dF9faW5uZXJ7aGVpZ2h0OjI4cHh9LmVsLXJhbmdlLWVkaXRvci0tbWluaSAuZWwtcmFuZ2Utc2VwYXJhdG9ye2xpbmUtaGVpZ2h0OjIwcHg7Zm9udC1zaXplOjEycHh9LmVsLXJhbmdlLWVkaXRvci0tbWluaSAuZWwtcmFuZ2UtaW5wdXR7Zm9udC1zaXplOjEycHh9LmVsLXJhbmdlLWVkaXRvci0tbWluaSAuZWwtcmFuZ2VfX2Nsb3NlLWljb24sLmVsLXJhbmdlLWVkaXRvci0tbWluaSAuZWwtcmFuZ2VfX2ljb257bGluZS1oZWlnaHQ6MjBweH0uZWwtcmFuZ2UtZWRpdG9yLmlzLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQTtib3JkZXItY29sb3I6I0U0RTdFRDtjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtcmFuZ2UtZWRpdG9yLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1yYW5nZS1lZGl0b3IuaXMtZGlzYWJsZWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNFNEU3RUR9LmVsLXJhbmdlLWVkaXRvci5pcy1kaXNhYmxlZCBpbnB1dHtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXJhbmdlLWVkaXRvci5pcy1kaXNhYmxlZCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC1yYW5nZS1lZGl0b3IuaXMtZGlzYWJsZWQgaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLXJhbmdlLWVkaXRvci5pcy1kaXNhYmxlZCBpbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLXJhbmdlLWVkaXRvci5pcy1kaXNhYmxlZCBpbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtcmFuZ2UtZWRpdG9yLmlzLWRpc2FibGVkIC5lbC1yYW5nZS1zZXBhcmF0b3J7Y29sb3I6I0MwQzRDQ30uZWwtcGlja2VyLXBhbmVse2NvbG9yOiM2MDYyNjY7Ym9yZGVyOjFweCBzb2xpZCAjRTRFN0VEO2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpO2JhY2tncm91bmQ6I0ZGRjtib3JkZXItcmFkaXVzOjRweDtsaW5lLWhlaWdodDozMHB4O21hcmdpbjo1cHggMH0uZWwtcGlja2VyLXBhbmVsX19ib2R5LXdyYXBwZXI6OmFmdGVyLC5lbC1waWNrZXItcGFuZWxfX2JvZHk6OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7ZGlzcGxheTp0YWJsZTtjbGVhcjpib3RofS5lbC1waWNrZXItcGFuZWxfX2NvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjE1cHh9LmVsLXBpY2tlci1wYW5lbF9fZm9vdGVye2JvcmRlci10b3A6MXB4IHNvbGlkICNlNGU0ZTQ7cGFkZGluZzo0cHg7dGV4dC1hbGlnbjpyaWdodDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjB9LmVsLXBpY2tlci1wYW5lbF9fc2hvcnRjdXR7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2JvcmRlcjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7bGluZS1oZWlnaHQ6MjhweDtmb250LXNpemU6MTRweDtjb2xvcjojNjA2MjY2O3BhZGRpbmctbGVmdDoxMnB4O3RleHQtYWxpZ246bGVmdDtvdXRsaW5lOjA7Y3Vyc29yOnBvaW50ZXJ9LmVsLXBpY2tlci1wYW5lbF9fc2hvcnRjdXQ6aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtcGlja2VyLXBhbmVsX19zaG9ydGN1dC5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZTZmMWZlO2NvbG9yOiM0MDlFRkZ9LmVsLXBpY2tlci1wYW5lbF9fYnRue2JvcmRlcjoxcHggc29saWQgI2RjZGNkYztjb2xvcjojMzMzO2xpbmUtaGVpZ2h0OjI0cHg7Ym9yZGVyLXJhZGl1czoycHg7cGFkZGluZzowIDIwcHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtvdXRsaW5lOjA7Zm9udC1zaXplOjEycHh9LmVsLXBpY2tlci1wYW5lbF9fYnRuW2Rpc2FibGVkXXtjb2xvcjojY2NjO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0bntmb250LXNpemU6MTJweDtjb2xvcjojMzAzMTMzO2JvcmRlcjowO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO291dGxpbmU6MDttYXJnaW4tdG9wOjhweH0uZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0bjpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1waWNrZXItcGFuZWxfX2ljb24tYnRuLmlzLWRpc2FibGVke2NvbG9yOiNiYmJ9LmVsLXBpY2tlci1wYW5lbF9faWNvbi1idG4uaXMtZGlzYWJsZWQ6aG92ZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1waWNrZXItcGFuZWxfX2xpbmstYnRue3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtcGlja2VyLXBhbmVsIFtzbG90PXNpZGViYXJdLC5lbC1waWNrZXItcGFuZWxfX3NpZGViYXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7d2lkdGg6MTEwcHg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZTRlNGU0Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLXRvcDo2cHg7YmFja2dyb3VuZC1jb2xvcjojRkZGO292ZXJmbG93OmF1dG99LmVsLXBpY2tlci1wYW5lbCBbc2xvdD1zaWRlYmFyXSsuZWwtcGlja2VyLXBhbmVsX19ib2R5LC5lbC1waWNrZXItcGFuZWxfX3NpZGViYXIrLmVsLXBpY2tlci1wYW5lbF9fYm9keXttYXJnaW4tbGVmdDoxMTBweH0uZWwtdGltZS1zcGlubmVyLmhhcy1zZWNvbmRzIC5lbC10aW1lLXNwaW5uZXJfX3dyYXBwZXJ7d2lkdGg6MzMuMyV9LmVsLXRpbWUtc3Bpbm5lcl9fd3JhcHBlcnttYXgtaGVpZ2h0OjE5MHB4O292ZXJmbG93OmF1dG87ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6NTAlO3ZlcnRpY2FsLWFsaWduOnRvcDtwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtdGltZS1zcGlubmVyX193cmFwcGVyIC5lbC1zY3JvbGxiYXJfX3dyYXA6bm90KC5lbC1zY3JvbGxiYXJfX3dyYXAtLWhpZGRlbi1kZWZhdWx0KXtwYWRkaW5nLWJvdHRvbToxNXB4fS5lbC10aW1lLXNwaW5uZXJfX2lucHV0LmVsLWlucHV0IC5lbC1pbnB1dF9faW5uZXIsLmVsLXRpbWUtc3Bpbm5lcl9fbGlzdHtwYWRkaW5nOjA7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXRpbWUtc3Bpbm5lcl9fd3JhcHBlci5pcy1hcnJvd3std2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7dGV4dC1hbGlnbjpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVufS5lbC10aW1lLXNwaW5uZXJfX3dyYXBwZXIuaXMtYXJyb3cgLmVsLXRpbWUtc3Bpbm5lcl9fbGlzdHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0zMnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMzJweCl9LmVsLXRpbWUtc3Bpbm5lcl9fd3JhcHBlci5pcy1hcnJvdyAuZWwtdGltZS1zcGlubmVyX19pdGVtOmhvdmVyOm5vdCguZGlzYWJsZWQpOm5vdCguYWN0aXZlKXtiYWNrZ3JvdW5kOiNGRkY7Y3Vyc29yOmRlZmF1bHR9LmVsLXRpbWUtc3Bpbm5lcl9fYXJyb3d7Zm9udC1zaXplOjEycHg7Y29sb3I6IzkwOTM5OTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTt6LWluZGV4OjE7dGV4dC1hbGlnbjpjZW50ZXI7aGVpZ2h0OjMwcHg7bGluZS1oZWlnaHQ6MzBweDtjdXJzb3I6cG9pbnRlcn0uZWwtdGltZS1zcGlubmVyX19hcnJvdzpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC10aW1lLXNwaW5uZXJfX2Fycm93LmVsLWljb24tYXJyb3ctdXB7dG9wOjEwcHh9LmVsLXRpbWUtc3Bpbm5lcl9fYXJyb3cuZWwtaWNvbi1hcnJvdy1kb3due2JvdHRvbToxMHB4fS5lbC10aW1lLXNwaW5uZXJfX2lucHV0LmVsLWlucHV0e3dpZHRoOjcwJX0uZWwtdGltZS1zcGlubmVyX19saXN0e21hcmdpbjowO2xpc3Qtc3R5bGU6bm9uZX0uZWwtdGltZS1zcGlubmVyX19saXN0OjphZnRlciwuZWwtdGltZS1zcGlubmVyX19saXN0OjpiZWZvcmV7Y29udGVudDonJztkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjgwcHh9LmVsLXRpbWUtc3Bpbm5lcl9faXRlbXtoZWlnaHQ6MzJweDtsaW5lLWhlaWdodDozMnB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM2MDYyNjZ9LmVsLXRpbWUtc3Bpbm5lcl9faXRlbTpob3Zlcjpub3QoLmRpc2FibGVkKTpub3QoLmFjdGl2ZSl7YmFja2dyb3VuZDojRjVGN0ZBO2N1cnNvcjpwb2ludGVyfS5lbC10aW1lLXNwaW5uZXJfX2l0ZW0uYWN0aXZlOm5vdCguZGlzYWJsZWQpe2NvbG9yOiMzMDMxMzM7Zm9udC13ZWlnaHQ6NzAwfS5lbC10aW1lLXNwaW5uZXJfX2l0ZW0uZGlzYWJsZWR7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXRpbWUtcGFuZWx7bWFyZ2luOjVweCAwO2JvcmRlcjoxcHggc29saWQgI0U0RTdFRDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czoycHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTgwcHg7bGVmdDowO3otaW5kZXg6MTAwMDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3h9LmVsLXRpbWUtcGFuZWxfX2NvbnRlbnR7Zm9udC1zaXplOjA7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5lbC10aW1lLXBhbmVsX19jb250ZW50OjphZnRlciwuZWwtdGltZS1wYW5lbF9fY29udGVudDo6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7dG9wOjUwJTtwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW4tdG9wOi0xNXB4O2hlaWdodDozMnB4O3otaW5kZXg6LTE7bGVmdDowO3JpZ2h0OjA7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctdG9wOjZweDt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLXRvcDoxcHggc29saWQgI0U0RTdFRDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRTRFN0VEfS5lbC10aW1lLXBhbmVsX19jb250ZW50OjphZnRlcntsZWZ0OjUwJTttYXJnaW4tbGVmdDoxMiU7bWFyZ2luLXJpZ2h0OjEyJX0uZWwtdGltZS1wYW5lbF9fY29udGVudDo6YmVmb3Jle3BhZGRpbmctbGVmdDo1MCU7bWFyZ2luLXJpZ2h0OjEyJTttYXJnaW4tbGVmdDoxMiV9LmVsLXRpbWUtcGFuZWxfX2NvbnRlbnQuaGFzLXNlY29uZHM6OmFmdGVye2xlZnQ6Y2FsYygxMDAlIC8gMyAqIDIpfS5lbC10aW1lLXBhbmVsX19jb250ZW50Lmhhcy1zZWNvbmRzOjpiZWZvcmV7cGFkZGluZy1sZWZ0OmNhbGMoMTAwJSAvIDMpfS5lbC10aW1lLXBhbmVsX19mb290ZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U0ZTRlNDtwYWRkaW5nOjRweDtoZWlnaHQ6MzZweDtsaW5lLWhlaWdodDoyNXB4O3RleHQtYWxpZ246cmlnaHQ7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC10aW1lLXBhbmVsX19idG57Ym9yZGVyOm5vbmU7bGluZS1oZWlnaHQ6MjhweDtwYWRkaW5nOjAgNXB4O21hcmdpbjowIDVweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O291dGxpbmU6MDtmb250LXNpemU6MTJweDtjb2xvcjojMzAzMTMzfS5lbC10aW1lLXBhbmVsX19idG4uY29uZmlybXtmb250LXdlaWdodDo4MDA7Y29sb3I6IzQwOUVGRn0uZWwtdGltZS1yYW5nZS1waWNrZXJ7d2lkdGg6MzU0cHg7b3ZlcmZsb3c6dmlzaWJsZX0uZWwtdGltZS1yYW5nZS1waWNrZXJfX2NvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxMHB4fS5lbC10aW1lLXJhbmdlLXBpY2tlcl9fY2VsbHstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzo0cHggN3B4IDdweDt3aWR0aDo1MCU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXRpbWUtcmFuZ2UtcGlja2VyX19oZWFkZXJ7bWFyZ2luLWJvdHRvbTo1cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE0cHh9LmVsLXRpbWUtcmFuZ2UtcGlja2VyX19ib2R5e2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgI0U0RTdFRH0uZWwtcG9wb3Zlcntwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiNGRkY7bWluLXdpZHRoOjE1MHB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI0VCRUVGNTtwYWRkaW5nOjEycHg7ei1pbmRleDoyMDAwO2NvbG9yOiM2MDYyNjY7bGluZS1oZWlnaHQ6MS40O3RleHQtYWxpZ246anVzdGlmeTtmb250LXNpemU6MTRweDtib3gtc2hhZG93OjAgMnB4IDEycHggMCByZ2JhKDAsMCwwLC4xKTt3b3JkLWJyZWFrOmJyZWFrLWFsbH0uZWwtY2FyZC5pcy1hbHdheXMtc2hhZG93LC5lbC1jYXJkLmlzLWhvdmVyLXNoYWRvdzpmb2N1cywuZWwtY2FyZC5pcy1ob3Zlci1zaGFkb3c6aG92ZXIsLmVsLWNhc2NhZGVyX19kcm9wZG93biwuZWwtY29sb3ItcGlja2VyX19wYW5lbCwuZWwtbWVzc2FnZS1ib3gsLmVsLW5vdGlmaWNhdGlvbnstd2Via2l0LWJveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpfS5lbC1wb3BvdmVyLS1wbGFpbntwYWRkaW5nOjE4cHggMjBweH0uZWwtcG9wb3Zlcl9fdGl0bGV7Y29sb3I6IzMwMzEzMztmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxO21hcmdpbi1ib3R0b206MTJweH0uZWwtcG9wb3Zlcjpmb2N1cywuZWwtcG9wb3Zlcjpmb2N1czphY3RpdmUsLmVsLXBvcG92ZXJfX3JlZmVyZW5jZTpmb2N1czpob3ZlciwuZWwtcG9wb3Zlcl9fcmVmZXJlbmNlOmZvY3VzOm5vdCguZm9jdXNpbmcpe291dGxpbmUtd2lkdGg6MH0udi1tb2RhbC1lbnRlcnstd2Via2l0LWFuaW1hdGlvbjp2LW1vZGFsLWluIC4ycyBlYXNlO2FuaW1hdGlvbjp2LW1vZGFsLWluIC4ycyBlYXNlfS52LW1vZGFsLWxlYXZley13ZWJraXQtYW5pbWF0aW9uOnYtbW9kYWwtb3V0IC4ycyBlYXNlIGZvcndhcmRzO2FuaW1hdGlvbjp2LW1vZGFsLW91dCAuMnMgZWFzZSBmb3J3YXJkc31Aa2V5ZnJhbWVzIHYtbW9kYWwtaW57MCV7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHYtbW9kYWwtb3V0ezEwMCV7b3BhY2l0eTowfX0udi1tb2RhbHtwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvcGFjaXR5Oi41O2JhY2tncm91bmQ6IzAwMH0uZWwtcG9wdXAtcGFyZW50LS1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5lbC1tZXNzYWdlLWJveHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo0MjBweDtwYWRkaW5nLWJvdHRvbToxMHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCAjRUJFRUY1O2ZvbnQtc2l6ZToxOHB4O2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpO3RleHQtYWxpZ246bGVmdDtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbn0uZWwtbWVzc2FnZS1ib3hfX3dyYXBwZXJ7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLW1lc3NhZ2UtYm94X193cmFwcGVyOjphZnRlcntjb250ZW50OlxcXCJcXFwiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3dpZHRoOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1tZXNzYWdlLWJveF9faGVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MTVweCAxNXB4IDEwcHh9LmVsLW1lc3NhZ2UtYm94X190aXRsZXtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MTtjb2xvcjojMzAzMTMzfS5lbC1tZXNzYWdlLWJveF9faGVhZGVyYnRue3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNXB4O3JpZ2h0OjE1cHg7cGFkZGluZzowO2JvcmRlcjpub25lO291dGxpbmU6MDtiYWNrZ3JvdW5kOjAgMDtmb250LXNpemU6MTZweDtjdXJzb3I6cG9pbnRlcn0uZWwtZm9ybS1pdGVtLmlzLWVycm9yIC5lbC1pbnB1dF9faW5uZXIsLmVsLWZvcm0taXRlbS5pcy1lcnJvciAuZWwtaW5wdXRfX2lubmVyOmZvY3VzLC5lbC1mb3JtLWl0ZW0uaXMtZXJyb3IgLmVsLXRleHRhcmVhX19pbm5lciwuZWwtZm9ybS1pdGVtLmlzLWVycm9yIC5lbC10ZXh0YXJlYV9faW5uZXI6Zm9jdXMsLmVsLW1lc3NhZ2UtYm94X19pbnB1dCBpbnB1dC5pbnZhbGlkLC5lbC1tZXNzYWdlLWJveF9faW5wdXQgaW5wdXQuaW52YWxpZDpmb2N1c3tib3JkZXItY29sb3I6I0Y1NkM2Q30uZWwtbWVzc2FnZS1ib3hfX2hlYWRlcmJ0biAuZWwtbWVzc2FnZS1ib3hfX2Nsb3Nle2NvbG9yOiM5MDkzOTl9LmVsLW1lc3NhZ2UtYm94X19oZWFkZXJidG46Zm9jdXMgLmVsLW1lc3NhZ2UtYm94X19jbG9zZSwuZWwtbWVzc2FnZS1ib3hfX2hlYWRlcmJ0bjpob3ZlciAuZWwtbWVzc2FnZS1ib3hfX2Nsb3Nle2NvbG9yOiM0MDlFRkZ9LmVsLW1lc3NhZ2UtYm94X19jb250ZW50e3BhZGRpbmc6MTBweCAxNXB4O2NvbG9yOiM2MDYyNjY7Zm9udC1zaXplOjE0cHh9LmVsLW1lc3NhZ2UtYm94X19jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmV9LmVsLW1lc3NhZ2UtYm94X19pbnB1dHtwYWRkaW5nLXRvcDoxNXB4fS5lbC1tZXNzYWdlLWJveF9fc3RhdHVze3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtmb250LXNpemU6MjRweCFpbXBvcnRhbnR9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXM6OmJlZm9yZXtwYWRkaW5nLWxlZnQ6MXB4fS5lbC1tZXNzYWdlLWJveF9fc3RhdHVzKy5lbC1tZXNzYWdlLWJveF9fbWVzc2FnZXtwYWRkaW5nLWxlZnQ6MzZweDtwYWRkaW5nLXJpZ2h0OjEycHh9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXMuZWwtaWNvbi1zdWNjZXNze2NvbG9yOiM2N0MyM0F9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXMuZWwtaWNvbi1pbmZve2NvbG9yOiM5MDkzOTl9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXMuZWwtaWNvbi13YXJuaW5ne2NvbG9yOiNFNkEyM0N9LmVsLW1lc3NhZ2UtYm94X19zdGF0dXMuZWwtaWNvbi1lcnJvcntjb2xvcjojRjU2QzZDfS5lbC1tZXNzYWdlLWJveF9fbWVzc2FnZXttYXJnaW46MH0uZWwtbWVzc2FnZS1ib3hfX21lc3NhZ2UgcHttYXJnaW46MDtsaW5lLWhlaWdodDoyNHB4fS5lbC1tZXNzYWdlLWJveF9fZXJyb3Jtc2d7Y29sb3I6I0Y1NkM2Qztmb250LXNpemU6MTJweDttaW4taGVpZ2h0OjE4cHg7bWFyZ2luLXRvcDoycHh9LmVsLW1lc3NhZ2UtYm94X19idG5ze3BhZGRpbmc6NXB4IDE1cHggMDt0ZXh0LWFsaWduOnJpZ2h0fS5lbC1tZXNzYWdlLWJveF9fYnRucyBidXR0b246bnRoLWNoaWxkKDIpe21hcmdpbi1sZWZ0OjEwcHh9LmVsLW1lc3NhZ2UtYm94X19idG5zLXJldmVyc2V7LXdlYmtpdC1ib3gtb3JpZW50Omhvcml6b250YWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2U7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlO2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5lbC1tZXNzYWdlLWJveC0tY2VudGVye3BhZGRpbmctYm90dG9tOjMwcHh9LmVsLW1lc3NhZ2UtYm94LS1jZW50ZXIgLmVsLW1lc3NhZ2UtYm94X19oZWFkZXJ7cGFkZGluZy10b3A6MzBweH0uZWwtbWVzc2FnZS1ib3gtLWNlbnRlciAuZWwtbWVzc2FnZS1ib3hfX3RpdGxle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uZWwtbWVzc2FnZS1ib3gtLWNlbnRlciAuZWwtbWVzc2FnZS1ib3hfX3N0YXR1c3twb3NpdGlvbjpyZWxhdGl2ZTt0b3A6YXV0bztwYWRkaW5nLXJpZ2h0OjVweDt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpfS5lbC1tZXNzYWdlLWJveC0tY2VudGVyIC5lbC1tZXNzYWdlLWJveF9fbWVzc2FnZXttYXJnaW4tbGVmdDowfS5lbC1tZXNzYWdlLWJveC0tY2VudGVyIC5lbC1tZXNzYWdlLWJveF9fYnRucywuZWwtbWVzc2FnZS1ib3gtLWNlbnRlciAuZWwtbWVzc2FnZS1ib3hfX2NvbnRlbnR7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLW1lc3NhZ2UtYm94LS1jZW50ZXIgLmVsLW1lc3NhZ2UtYm94X19jb250ZW50e3BhZGRpbmctbGVmdDoyN3B4O3BhZGRpbmctcmlnaHQ6MjdweH0ubXNnYm94LWZhZGUtZW50ZXItYWN0aXZley13ZWJraXQtYW5pbWF0aW9uOm1zZ2JveC1mYWRlLWluIC4zczthbmltYXRpb246bXNnYm94LWZhZGUtaW4gLjNzfS5tc2dib3gtZmFkZS1sZWF2ZS1hY3RpdmV7LXdlYmtpdC1hbmltYXRpb246bXNnYm94LWZhZGUtb3V0IC4zczthbmltYXRpb246bXNnYm94LWZhZGUtb3V0IC4zc31ALXdlYmtpdC1rZXlmcmFtZXMgbXNnYm94LWZhZGUtaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTtvcGFjaXR5OjB9MTAwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgbXNnYm94LWZhZGUtaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTtvcGFjaXR5OjB9MTAwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTtvcGFjaXR5OjF9fUAtd2Via2l0LWtleWZyYW1lcyBtc2dib3gtZmFkZS1vdXR7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7b3BhY2l0eToxfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgbXNnYm94LWZhZGUtb3V0ezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO29wYWNpdHk6MX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7b3BhY2l0eTowfX0uZWwtYnJlYWRjcnVtYntmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxfS5lbC1icmVhZGNydW1iOjphZnRlciwuZWwtYnJlYWRjcnVtYjo6YmVmb3Jle2Rpc3BsYXk6dGFibGU7Y29udGVudDpcXFwiXFxcIn0uZWwtYnJlYWRjcnVtYjo6YWZ0ZXJ7Y2xlYXI6Ym90aH0uZWwtYnJlYWRjcnVtYl9fc2VwYXJhdG9ye21hcmdpbjowIDlweDtmb250LXdlaWdodDo3MDA7Y29sb3I6I0MwQzRDQ30uZWwtYnJlYWRjcnVtYl9fc2VwYXJhdG9yW2NsYXNzKj1pY29uXXttYXJnaW46MCA2cHg7Zm9udC13ZWlnaHQ6NDAwfS5lbC1icmVhZGNydW1iX19pdGVte2Zsb2F0OmxlZnR9LmVsLWJyZWFkY3J1bWJfX2lubmVye2NvbG9yOiM2MDYyNjZ9LmVsLWJyZWFkY3J1bWJfX2lubmVyIGEsLmVsLWJyZWFkY3J1bWJfX2lubmVyLmlzLWxpbmt7Zm9udC13ZWlnaHQ6NzAwO3RleHQtZGVjb3JhdGlvbjpub25lOy13ZWJraXQtdHJhbnNpdGlvbjpjb2xvciAuMnMgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpO3RyYW5zaXRpb246Y29sb3IgLjJzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTtjb2xvcjojMzAzMTMzfS5lbC1icmVhZGNydW1iX19pbm5lciBhOmhvdmVyLC5lbC1icmVhZGNydW1iX19pbm5lci5pcy1saW5rOmhvdmVye2NvbG9yOiM0MDlFRkY7Y3Vyc29yOnBvaW50ZXJ9LmVsLWJyZWFkY3J1bWJfX2l0ZW06bGFzdC1jaGlsZCAuZWwtYnJlYWRjcnVtYl9faW5uZXIsLmVsLWJyZWFkY3J1bWJfX2l0ZW06bGFzdC1jaGlsZCAuZWwtYnJlYWRjcnVtYl9faW5uZXIgYSwuZWwtYnJlYWRjcnVtYl9faXRlbTpsYXN0LWNoaWxkIC5lbC1icmVhZGNydW1iX19pbm5lciBhOmhvdmVyLC5lbC1icmVhZGNydW1iX19pdGVtOmxhc3QtY2hpbGQgLmVsLWJyZWFkY3J1bWJfX2lubmVyOmhvdmVye2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojNjA2MjY2O2N1cnNvcjp0ZXh0fS5lbC1mb3JtLS1sYWJlbC1sZWZ0IC5lbC1mb3JtLWl0ZW1fX2xhYmVse3RleHQtYWxpZ246bGVmdH0uZWwtZm9ybS0tbGFiZWwtdG9wIC5lbC1mb3JtLWl0ZW1fX2xhYmVse2Zsb2F0Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6MCAwIDEwcHh9LmVsLWZvcm0tLWlubGluZSAuZWwtZm9ybS1pdGVte2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDoxMHB4O3ZlcnRpY2FsLWFsaWduOnRvcH0uZWwtZm9ybS0taW5saW5lIC5lbC1mb3JtLWl0ZW1fX2xhYmVse2Zsb2F0Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLWZvcm0tLWlubGluZSAuZWwtZm9ybS1pdGVtX19jb250ZW50e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcH0uZWwtZm9ybS0taW5saW5lLmVsLWZvcm0tLWxhYmVsLXRvcCAuZWwtZm9ybS1pdGVtX19jb250ZW50e2Rpc3BsYXk6YmxvY2t9LmVsLWZvcm0taXRlbXttYXJnaW4tYm90dG9tOjIycHh9LmVsLWZvcm0taXRlbTo6YWZ0ZXIsLmVsLWZvcm0taXRlbTo6YmVmb3Jle2Rpc3BsYXk6dGFibGU7Y29udGVudDpcXFwiXFxcIn0uZWwtZm9ybS1pdGVtOjphZnRlcntjbGVhcjpib3RofS5lbC1mb3JtLWl0ZW0gLmVsLWZvcm0taXRlbXttYXJnaW4tYm90dG9tOjB9LmVsLWZvcm0taXRlbS0tbWluaS5lbC1mb3JtLWl0ZW0sLmVsLWZvcm0taXRlbS0tc21hbGwuZWwtZm9ybS1pdGVte21hcmdpbi1ib3R0b206MThweH0uZWwtZm9ybS1pdGVtIC5lbC1pbnB1dF9fdmFsaWRhdGVJY29ue2Rpc3BsYXk6bm9uZX0uZWwtZm9ybS1pdGVtLS1tZWRpdW0gLmVsLWZvcm0taXRlbV9fY29udGVudCwuZWwtZm9ybS1pdGVtLS1tZWRpdW0gLmVsLWZvcm0taXRlbV9fbGFiZWx7bGluZS1oZWlnaHQ6MzZweH0uZWwtZm9ybS1pdGVtLS1zbWFsbCAuZWwtZm9ybS1pdGVtX19jb250ZW50LC5lbC1mb3JtLWl0ZW0tLXNtYWxsIC5lbC1mb3JtLWl0ZW1fX2xhYmVse2xpbmUtaGVpZ2h0OjMycHh9LmVsLWZvcm0taXRlbS0tc21hbGwgLmVsLWZvcm0taXRlbV9fZXJyb3J7cGFkZGluZy10b3A6MnB4fS5lbC1mb3JtLWl0ZW0tLW1pbmkgLmVsLWZvcm0taXRlbV9fY29udGVudCwuZWwtZm9ybS1pdGVtLS1taW5pIC5lbC1mb3JtLWl0ZW1fX2xhYmVse2xpbmUtaGVpZ2h0OjI4cHh9LmVsLWZvcm0taXRlbS0tbWluaSAuZWwtZm9ybS1pdGVtX19lcnJvcntwYWRkaW5nLXRvcDoxcHh9LmVsLWZvcm0taXRlbV9fbGFiZWwtd3JhcHtmbG9hdDpsZWZ0fS5lbC1mb3JtLWl0ZW1fX2xhYmVsLXdyYXAgLmVsLWZvcm0taXRlbV9fbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxvYXQ6bm9uZX0uZWwtZm9ybS1pdGVtX19sYWJlbHt0ZXh0LWFsaWduOnJpZ2h0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmbG9hdDpsZWZ0O2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM2MDYyNjY7bGluZS1oZWlnaHQ6NDBweDtwYWRkaW5nOjAgMTJweCAwIDA7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1mb3JtLWl0ZW1fX2NvbnRlbnR7bGluZS1oZWlnaHQ6NDBweDtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MTRweH0uZWwtZm9ybS1pdGVtX19jb250ZW50OjphZnRlciwuZWwtZm9ybS1pdGVtX19jb250ZW50OjpiZWZvcmV7ZGlzcGxheTp0YWJsZTtjb250ZW50OlxcXCJcXFwifS5lbC1mb3JtLWl0ZW1fX2NvbnRlbnQ6OmFmdGVye2NsZWFyOmJvdGh9LmVsLWZvcm0taXRlbV9fY29udGVudCAuZWwtaW5wdXQtZ3JvdXB7dmVydGljYWwtYWxpZ246dG9wfS5lbC1mb3JtLWl0ZW1fX2Vycm9ye2NvbG9yOiNGNTZDNkM7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MTtwYWRkaW5nLXRvcDo0cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwMCU7bGVmdDowfS5lbC1mb3JtLWl0ZW1fX2Vycm9yLS1pbmxpbmV7cG9zaXRpb246cmVsYXRpdmU7dG9wOmF1dG87bGVmdDphdXRvO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0OjEwcHh9LmVsLWZvcm0taXRlbS5pcy1yZXF1aXJlZDpub3QoLmlzLW5vLWFzdGVyaXNrKSAuZWwtZm9ybS1pdGVtX19sYWJlbC13cmFwPi5lbC1mb3JtLWl0ZW1fX2xhYmVsOmJlZm9yZSwuZWwtZm9ybS1pdGVtLmlzLXJlcXVpcmVkOm5vdCguaXMtbm8tYXN0ZXJpc2spPi5lbC1mb3JtLWl0ZW1fX2xhYmVsOmJlZm9yZXtjb250ZW50OicqJztjb2xvcjojRjU2QzZDO21hcmdpbi1yaWdodDo0cHh9LmVsLWZvcm0taXRlbS5pcy1lcnJvciAuZWwtaW5wdXQtZ3JvdXBfX2FwcGVuZCAuZWwtaW5wdXRfX2lubmVyLC5lbC1mb3JtLWl0ZW0uaXMtZXJyb3IgLmVsLWlucHV0LWdyb3VwX19wcmVwZW5kIC5lbC1pbnB1dF9faW5uZXJ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5lbC1mb3JtLWl0ZW0uaXMtZXJyb3IgLmVsLWlucHV0X192YWxpZGF0ZUljb257Y29sb3I6I0Y1NkM2Q30uZWwtZm9ybS1pdGVtLS1mZWVkYmFjayAuZWwtaW5wdXRfX3ZhbGlkYXRlSWNvbntkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtdGFic19faGVhZGVye3BhZGRpbmc6MDtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MCAwIDE1cHh9LmVsLXRhYnNfX2FjdGl2ZS1iYXJ7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO2hlaWdodDoycHg7YmFja2dyb3VuZC1jb2xvcjojNDA5RUZGO3otaW5kZXg6MTstd2Via2l0LXRyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpLC13ZWJraXQtdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7bGlzdC1zdHlsZTpub25lfS5lbC10YWJzX19uZXctdGFie2Zsb2F0OnJpZ2h0O2JvcmRlcjoxcHggc29saWQgI2QzZGNlNjtoZWlnaHQ6MThweDt3aWR0aDoxOHB4O2xpbmUtaGVpZ2h0OjE4cHg7bWFyZ2luOjEycHggMCA5cHggMTBweDtib3JkZXItcmFkaXVzOjNweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTJweDtjb2xvcjojZDNkY2U2O2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjE1czt0cmFuc2l0aW9uOmFsbCAuMTVzfS5lbC10YWJzX19uZXctdGFiIC5lbC1pY29uLXBsdXN7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjgsLjgpO3RyYW5zZm9ybTpzY2FsZSguOCwuOCl9LmVsLXRhYnNfX25ldy10YWI6aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtdGFic19fbmF2LXdyYXB7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbi1ib3R0b206LTFweDtwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtdGFic19fbmF2LXdyYXA6OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO3dpZHRoOjEwMCU7aGVpZ2h0OjJweDtiYWNrZ3JvdW5kLWNvbG9yOiNFNEU3RUQ7ei1pbmRleDoxfS5lbC10YWJzX19uYXYtd3JhcC5pcy1zY3JvbGxhYmxle3BhZGRpbmc6MCAyMHB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtdGFic19fbmF2LXNjcm9sbHtvdmVyZmxvdzpoaWRkZW59LmVsLXRhYnNfX25hdi1uZXh0LC5lbC10YWJzX19uYXYtcHJldntwb3NpdGlvbjphYnNvbHV0ZTtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDo0NHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM5MDkzOTl9LmVsLXRhYnNfX25hdi1uZXh0e3JpZ2h0OjB9LmVsLXRhYnNfX25hdi1wcmV2e2xlZnQ6MH0uZWwtdGFic19fbmF2e3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXRyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zczt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MsLXdlYmtpdC10cmFuc2Zvcm0gLjNzO2Zsb2F0OmxlZnQ7ei1pbmRleDoyfS5lbC10YWJzX19uYXYuaXMtc3RyZXRjaHttaW4td2lkdGg6MTAwJTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS5lbC10YWJzX19uYXYuaXMtc3RyZXRjaD4qey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MTt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtdGFic19faXRlbXtwYWRkaW5nOjAgMjBweDtoZWlnaHQ6NDBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bGluZS1oZWlnaHQ6NDBweDtkaXNwbGF5OmlubGluZS1ibG9jaztsaXN0LXN0eWxlOm5vbmU7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOiMzMDMxMzM7cG9zaXRpb246cmVsYXRpdmV9LmVsLXRhYnNfX2l0ZW06Zm9jdXMsLmVsLXRhYnNfX2l0ZW06Zm9jdXM6YWN0aXZle291dGxpbmU6MH0uZWwtdGFic19faXRlbTpmb2N1cy5pcy1hY3RpdmUuaXMtZm9jdXM6bm90KDphY3RpdmUpey13ZWJraXQtYm94LXNoYWRvdzowIDAgMnB4IDJweCAjNDA5RUZGIGluc2V0O2JveC1zaGFkb3c6MCAwIDJweCAycHggIzQwOUVGRiBpbnNldDtib3JkZXItcmFkaXVzOjNweH0uZWwtdGFic19faXRlbSAuZWwtaWNvbi1jbG9zZXtib3JkZXItcmFkaXVzOjUwJTt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTttYXJnaW4tbGVmdDo1cHh9LmVsLXRhYnNfX2l0ZW0gLmVsLWljb24tY2xvc2U6YmVmb3Jley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC45KTt0cmFuc2Zvcm06c2NhbGUoLjkpO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2FjdGl2ZS1iYXIsLmVsLXRhYnMtLWxlZnQuZWwtdGFicy0tY2FyZCAuZWwtdGFic19fYWN0aXZlLWJhci5pcy1sZWZ0LC5lbC10YWJzLS1yaWdodC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19hY3RpdmUtYmFyLmlzLXJpZ2h0e2Rpc3BsYXk6bm9uZX0uZWwtdGFic19faXRlbSAuZWwtaWNvbi1jbG9zZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNDMEM0Q0M7Y29sb3I6I0ZGRn0uZWwtdGFic19faXRlbS5pcy1hY3RpdmV7Y29sb3I6IzQwOUVGRn0uZWwtdGFic19faXRlbTpob3Zlcntjb2xvcjojNDA5RUZGO2N1cnNvcjpwb2ludGVyfS5lbC10YWJzX19pdGVtLmlzLWRpc2FibGVke2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOmRlZmF1bHR9LmVsLXRhYnNfX2NvbnRlbnR7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0U0RTdFRH0uZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19uYXYtd3JhcDo6YWZ0ZXJ7Y29udGVudDpub25lfS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX25hdntib3JkZXI6MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW0gLmVsLWljb24tY2xvc2V7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjEycHg7d2lkdGg6MDtoZWlnaHQ6MTRweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bGluZS1oZWlnaHQ6MTVweDtvdmVyZmxvdzpoaWRkZW47dG9wOi0xcHg7cmlnaHQ6LTJweDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MTAwJSA1MCU7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDUwJX0uZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVte2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRTRFN0VEOy13ZWJraXQtdHJhbnNpdGlvbjpjb2xvciAuM3MgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpLHBhZGRpbmcgLjNzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTt0cmFuc2l0aW9uOmNvbG9yIC4zcyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSkscGFkZGluZyAuM3MgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpfS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6bm9uZX0uZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtLmlzLWNsb3NhYmxlOmhvdmVye3BhZGRpbmctbGVmdDoxM3B4O3BhZGRpbmctcmlnaHQ6MTNweH0uZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtLmlzLWNsb3NhYmxlOmhvdmVyIC5lbC1pY29uLWNsb3Nle3dpZHRoOjE0cHh9LmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbS5pcy1hY3RpdmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjojRkZGfS5lbC10YWJzLS1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW0uaXMtYWN0aXZlLmlzLWNsb3NhYmxle3BhZGRpbmctbGVmdDoyMHB4O3BhZGRpbmctcmlnaHQ6MjBweH0uZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtLmlzLWFjdGl2ZS5pcy1jbG9zYWJsZSAuZWwtaWNvbi1jbG9zZXt3aWR0aDoxNHB4fS5lbC10YWJzLS1ib3JkZXItY2FyZHtiYWNrZ3JvdW5kOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2Oy13ZWJraXQtYm94LXNoYWRvdzowIDJweCA0cHggMCByZ2JhKDAsMCwwLC4xMiksMCAwIDZweCAwIHJnYmEoMCwwLDAsLjA0KTtib3gtc2hhZG93OjAgMnB4IDRweCAwIHJnYmEoMCwwLDAsLjEyKSwwIDAgNnB4IDAgcmdiYSgwLDAsMCwuMDQpfS5lbC10YWJzLS1ib3JkZXItY2FyZD4uZWwtdGFic19fY29udGVudHtwYWRkaW5nOjE1cHh9LmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXJ7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFNEU3RUQ7bWFyZ2luOjB9LmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX25hdi13cmFwOjphZnRlcntjb250ZW50Om5vbmV9LmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW17LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDttYXJnaW4tdG9wOi0xcHg7Y29sb3I6IzkwOTM5OX0uZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbSsuZWwtdGFic19faXRlbSwuZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDotMXB4fS5lbC1jb2wtb2Zmc2V0LTAsLmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmlzLXNjcm9sbGFibGUgLmVsLXRhYnNfX2l0ZW06Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MH0uZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbS5pcy1hY3RpdmV7Y29sb3I6IzQwOUVGRjtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNEQ0RGRTY7Ym9yZGVyLWxlZnQtY29sb3I6I0RDREZFNn0uZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpub3QoLmlzLWRpc2FibGVkKTpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC10YWJzLS1ib3JkZXItY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtLmlzLWRpc2FibGVke2NvbG9yOiNDMEM0Q0N9LmVsLXRhYnMtLWJvdHRvbSAuZWwtdGFic19faXRlbS5pcy1ib3R0b206bnRoLWNoaWxkKDIpLC5lbC10YWJzLS1ib3R0b20gLmVsLXRhYnNfX2l0ZW0uaXMtdG9wOm50aC1jaGlsZCgyKSwuZWwtdGFicy0tdG9wIC5lbC10YWJzX19pdGVtLmlzLWJvdHRvbTpudGgtY2hpbGQoMiksLmVsLXRhYnMtLXRvcCAuZWwtdGFic19faXRlbS5pcy10b3A6bnRoLWNoaWxkKDIpe3BhZGRpbmctbGVmdDowfS5lbC10YWJzLS1ib3R0b20gLmVsLXRhYnNfX2l0ZW0uaXMtYm90dG9tOmxhc3QtY2hpbGQsLmVsLXRhYnMtLWJvdHRvbSAuZWwtdGFic19faXRlbS5pcy10b3A6bGFzdC1jaGlsZCwuZWwtdGFicy0tdG9wIC5lbC10YWJzX19pdGVtLmlzLWJvdHRvbTpsYXN0LWNoaWxkLC5lbC10YWJzLS10b3AgLmVsLXRhYnNfX2l0ZW0uaXMtdG9wOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDowfS5lbC1jYXNjYWRlci1tZW51Omxhc3QtY2hpbGQgLmVsLWNhc2NhZGVyLW5vZGUsLmVsLXRhYnMtLWJvdHRvbSAuZWwtdGFicy0tbGVmdD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtOmxhc3QtY2hpbGQsLmVsLXRhYnMtLWJvdHRvbSAuZWwtdGFicy0tcmlnaHQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpsYXN0LWNoaWxkLC5lbC10YWJzLS1ib3R0b20uZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpsYXN0LWNoaWxkLC5lbC10YWJzLS1ib3R0b20uZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtOmxhc3QtY2hpbGQsLmVsLXRhYnMtLXRvcCAuZWwtdGFicy0tbGVmdD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtOmxhc3QtY2hpbGQsLmVsLXRhYnMtLXRvcCAuZWwtdGFicy0tcmlnaHQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpsYXN0LWNoaWxkLC5lbC10YWJzLS10b3AuZWwtdGFicy0tYm9yZGVyLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpsYXN0LWNoaWxkLC5lbC10YWJzLS10b3AuZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDoyMHB4fS5lbC10YWJzLS1ib3R0b20gLmVsLXRhYnMtLWxlZnQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpudGgtY2hpbGQoMiksLmVsLXRhYnMtLWJvdHRvbSAuZWwtdGFicy0tcmlnaHQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpudGgtY2hpbGQoMiksLmVsLXRhYnMtLWJvdHRvbS5lbC10YWJzLS1ib3JkZXItY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtOm50aC1jaGlsZCgyKSwuZWwtdGFicy0tYm90dG9tLmVsLXRhYnMtLWNhcmQ+LmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbTpudGgtY2hpbGQoMiksLmVsLXRhYnMtLXRvcCAuZWwtdGFicy0tbGVmdD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtOm50aC1jaGlsZCgyKSwuZWwtdGFicy0tdG9wIC5lbC10YWJzLS1yaWdodD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtOm50aC1jaGlsZCgyKSwuZWwtdGFicy0tdG9wLmVsLXRhYnMtLWJvcmRlci1jYXJkPi5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDIpLC5lbC10YWJzLS10b3AuZWwtdGFicy0tY2FyZD4uZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtOm50aC1jaGlsZCgyKXtwYWRkaW5nLWxlZnQ6MjBweH0uZWwtdGFicy0tYm90dG9tIC5lbC10YWJzX19oZWFkZXIuaXMtYm90dG9te21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjEwcHh9LmVsLXRhYnMtLWJvdHRvbS5lbC10YWJzLS1ib3JkZXItY2FyZCAuZWwtdGFic19faGVhZGVyLmlzLWJvdHRvbXtib3JkZXItYm90dG9tOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgI0RDREZFNn0uZWwtdGFicy0tYm90dG9tLmVsLXRhYnMtLWJvcmRlci1jYXJkIC5lbC10YWJzX19uYXYtd3JhcC5pcy1ib3R0b217bWFyZ2luLXRvcDotMXB4O21hcmdpbi1ib3R0b206MH0uZWwtdGFicy0tYm90dG9tLmVsLXRhYnMtLWJvcmRlci1jYXJkIC5lbC10YWJzX19pdGVtLmlzLWJvdHRvbTpub3QoLmlzLWFjdGl2ZSl7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudH0uZWwtdGFicy0tYm90dG9tLmVsLXRhYnMtLWJvcmRlci1jYXJkIC5lbC10YWJzX19pdGVtLmlzLWJvdHRvbXttYXJnaW46MCAtMXB4IC0xcHh9LmVsLXRhYnMtLWxlZnQsLmVsLXRhYnMtLXJpZ2h0e292ZXJmbG93OmhpZGRlbn0uZWwtdGFicy0tbGVmdCAuZWwtdGFic19faGVhZGVyLmlzLWxlZnQsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX2hlYWRlci5pcy1yaWdodCwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXNjcm9sbCwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdCwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19oZWFkZXIuaXMtbGVmdCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX2hlYWRlci5pcy1yaWdodCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi1zY3JvbGwsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHR7aGVpZ2h0OjEwMCV9LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX2FjdGl2ZS1iYXIuaXMtbGVmdCwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fYWN0aXZlLWJhci5pcy1yaWdodCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX2FjdGl2ZS1iYXIuaXMtbGVmdCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX2FjdGl2ZS1iYXIuaXMtcmlnaHR7dG9wOjA7Ym90dG9tOmF1dG87d2lkdGg6MnB4O2hlaWdodDphdXRvfS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0LC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodHttYXJnaW4tYm90dG9tOjB9LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1uZXh0LC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0Pi5lbC10YWJzX19uYXYtcHJldiwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ+LmVsLXRhYnNfX25hdi1uZXh0LC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodD4uZWwtdGFic19fbmF2LXByZXYsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0Pi5lbC10YWJzX19uYXYtbmV4dCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1wcmV2LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ+LmVsLXRhYnNfX25hdi1uZXh0LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ+LmVsLXRhYnNfX25hdi1wcmV2e2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjMwcHg7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcn0uZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdD4uZWwtdGFic19fbmF2LW5leHQgaSwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdD4uZWwtdGFic19fbmF2LXByZXYgaSwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ+LmVsLXRhYnNfX25hdi1uZXh0IGksLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtcHJldiBpLC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdD4uZWwtdGFic19fbmF2LW5leHQgaSwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1wcmV2IGksLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodD4uZWwtdGFic19fbmF2LW5leHQgaSwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtcHJldiBpey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZVooOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGVaKDkwZGVnKX0uZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdD4uZWwtdGFic19fbmF2LXByZXYsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtcHJldiwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1wcmV2LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ+LmVsLXRhYnNfX25hdi1wcmV2e2xlZnQ6YXV0bzt0b3A6MH0uZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdD4uZWwtdGFic19fbmF2LW5leHQsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0Pi5lbC10YWJzX19uYXYtbmV4dCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ+LmVsLXRhYnNfX25hdi1uZXh0LC5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ+LmVsLXRhYnNfX25hdi1uZXh0e3JpZ2h0OmF1dG87Ym90dG9tOjB9LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX2FjdGl2ZS1iYXIuaXMtbGVmdCwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtbGVmdDo6YWZ0ZXJ7cmlnaHQ6MDtsZWZ0OmF1dG99LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQuaXMtc2Nyb2xsYWJsZSwuZWwtdGFicy0tbGVmdCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQuaXMtc2Nyb2xsYWJsZSwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQuaXMtc2Nyb2xsYWJsZSwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0LmlzLXNjcm9sbGFibGV7cGFkZGluZzozMHB4IDB9LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi13cmFwLmlzLWxlZnQ6OmFmdGVyLC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodDo6YWZ0ZXIsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0OjphZnRlciwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi13cmFwLmlzLXJpZ2h0OjphZnRlcntoZWlnaHQ6MTAwJTt3aWR0aDoycHg7Ym90dG9tOmF1dG87dG9wOjB9LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX25hdi5pcy1sZWZ0LC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYuaXMtcmlnaHQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYuaXMtbGVmdCwuZWwtdGFicy0tcmlnaHQgLmVsLXRhYnNfX25hdi5pcy1yaWdodHtmbG9hdDpub25lfS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19pdGVtLmlzLWxlZnQsLmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX2l0ZW0uaXMtcmlnaHQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19pdGVtLmlzLWxlZnQsLmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19pdGVtLmlzLXJpZ2h0e2Rpc3BsYXk6YmxvY2t9LmVsLXRhYnMtLWxlZnQgLmVsLXRhYnNfX2hlYWRlci5pcy1sZWZ0e2Zsb2F0OmxlZnQ7bWFyZ2luLWJvdHRvbTowO21hcmdpbi1yaWdodDoxMHB4fS5lbC1idXR0b24tZ3JvdXA+LmVsLWJ1dHRvbjpub3QoOmxhc3QtY2hpbGQpLC5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1sZWZ0e21hcmdpbi1yaWdodDotMXB4fS5lbC10YWJzLS1sZWZ0IC5lbC10YWJzX19pdGVtLmlzLWxlZnR7dGV4dC1hbGlnbjpyaWdodH0uZWwtdGFicy0tbGVmdC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19pdGVtLmlzLWxlZnR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6MXB4IHNvbGlkICNFNEU3RUQ7dGV4dC1hbGlnbjpsZWZ0fS5lbC10YWJzLS1sZWZ0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtbGVmdDpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLXRvcDpub25lfS5lbC10YWJzLS1sZWZ0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtbGVmdC5pcy1hY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjRTRFN0VEO2JvcmRlci1yaWdodC1jb2xvcjojZmZmO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpub25lfS5lbC10YWJzLS1sZWZ0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtbGVmdC5pcy1hY3RpdmU6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcDpub25lfS5lbC10YWJzLS1sZWZ0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtbGVmdC5pcy1hY3RpdmU6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LmVsLXRhYnMtLWxlZnQuZWwtdGFicy0tY2FyZCAuZWwtdGFic19fbmF2e2JvcmRlci1yYWRpdXM6NHB4IDAgMCA0cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0U0RTdFRDtib3JkZXItcmlnaHQ6bm9uZX0uZWwtdGFicy0tbGVmdC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19uZXctdGFie2Zsb2F0Om5vbmV9LmVsLXRhYnMtLWxlZnQuZWwtdGFicy0tYm9yZGVyLWNhcmQgLmVsLXRhYnNfX2hlYWRlci5pcy1sZWZ0e2JvcmRlci1yaWdodDoxcHggc29saWQgI2RmZTRlZH0uZWwtdGFicy0tbGVmdC5lbC10YWJzLS1ib3JkZXItY2FyZCAuZWwtdGFic19faXRlbS5pcy1sZWZ0e2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7bWFyZ2luOi0xcHggMCAtMXB4IC0xcHh9LmVsLXRhYnMtLWxlZnQuZWwtdGFicy0tYm9yZGVyLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtbGVmdC5pcy1hY3RpdmV7Ym9yZGVyLWNvbG9yOiNkMWRiZTUgdHJhbnNwYXJlbnR9LmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19oZWFkZXIuaXMtcmlnaHR7ZmxvYXQ6cmlnaHQ7bWFyZ2luLWJvdHRvbTowO21hcmdpbi1sZWZ0OjEwcHh9LmVsLXRhYnMtLXJpZ2h0IC5lbC10YWJzX19uYXYtd3JhcC5pcy1yaWdodHttYXJnaW4tbGVmdDotMXB4fS5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fbmF2LXdyYXAuaXMtcmlnaHQ6OmFmdGVye2xlZnQ6MDtyaWdodDphdXRvfS5lbC10YWJzLS1yaWdodCAuZWwtdGFic19fYWN0aXZlLWJhci5pcy1yaWdodHtsZWZ0OjB9LmVsLXRhYnMtLXJpZ2h0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtcmlnaHR7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6MXB4IHNvbGlkICNFNEU3RUR9LmVsLXRhYnMtLXJpZ2h0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtcmlnaHQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLXRvcDpub25lfS5lbC10YWJzLS1yaWdodC5lbC10YWJzLS1jYXJkIC5lbC10YWJzX19pdGVtLmlzLXJpZ2h0LmlzLWFjdGl2ZXtib3JkZXI6MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLWxlZnQtY29sb3I6I2ZmZjtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItYm90dG9tOm5vbmV9LmVsLXRhYnMtLXJpZ2h0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtcmlnaHQuaXMtYWN0aXZlOmZpcnN0LWNoaWxke2JvcmRlci10b3A6bm9uZX0uZWwtdGFicy0tcmlnaHQuZWwtdGFicy0tY2FyZCAuZWwtdGFic19faXRlbS5pcy1yaWdodC5pcy1hY3RpdmU6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LmVsLXRhYnMtLXJpZ2h0LmVsLXRhYnMtLWNhcmQgLmVsLXRhYnNfX25hdntib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLWxlZnQ6bm9uZX0uZWwtdGFicy0tcmlnaHQuZWwtdGFicy0tYm9yZGVyLWNhcmQgLmVsLXRhYnNfX2hlYWRlci5pcy1yaWdodHtib3JkZXItbGVmdDoxcHggc29saWQgI2RmZTRlZH0uZWwtdGFicy0tcmlnaHQuZWwtdGFicy0tYm9yZGVyLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtcmlnaHR7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDttYXJnaW46LTFweCAtMXB4IC0xcHggMH0uZWwtdGFicy0tcmlnaHQuZWwtdGFicy0tYm9yZGVyLWNhcmQgLmVsLXRhYnNfX2l0ZW0uaXMtcmlnaHQuaXMtYWN0aXZle2JvcmRlci1jb2xvcjojZDFkYmU1IHRyYW5zcGFyZW50fS5zbGlkZUluTGVmdC10cmFuc2l0aW9uLC5zbGlkZUluUmlnaHQtdHJhbnNpdGlvbntkaXNwbGF5OmlubGluZS1ibG9ja30uc2xpZGVJblJpZ2h0LWVudGVyey13ZWJraXQtYW5pbWF0aW9uOnNsaWRlSW5SaWdodC1lbnRlciAuM3M7YW5pbWF0aW9uOnNsaWRlSW5SaWdodC1lbnRlciAuM3N9LnNsaWRlSW5SaWdodC1sZWF2ZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDstd2Via2l0LWFuaW1hdGlvbjpzbGlkZUluUmlnaHQtbGVhdmUgLjNzO2FuaW1hdGlvbjpzbGlkZUluUmlnaHQtbGVhdmUgLjNzfS5zbGlkZUluTGVmdC1lbnRlcnstd2Via2l0LWFuaW1hdGlvbjpzbGlkZUluTGVmdC1lbnRlciAuM3M7YW5pbWF0aW9uOnNsaWRlSW5MZWZ0LWVudGVyIC4zc30uc2xpZGVJbkxlZnQtbGVhdmV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7LXdlYmtpdC1hbmltYXRpb246c2xpZGVJbkxlZnQtbGVhdmUgLjNzO2FuaW1hdGlvbjpzbGlkZUluTGVmdC1sZWF2ZSAuM3N9QC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5SaWdodC1lbnRlcnswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9fUBrZXlmcmFtZXMgc2xpZGVJblJpZ2h0LWVudGVyezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5SaWdodC1sZWF2ZXswJXstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7b3BhY2l0eToxfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpO29wYWNpdHk6MH19QGtleWZyYW1lcyBzbGlkZUluUmlnaHQtbGVhdmV7MCV7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApO29wYWNpdHk6MX0xMDAley13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTtvcGFjaXR5OjB9fUAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluTGVmdC1lbnRlcnswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QGtleWZyYW1lcyBzbGlkZUluTGVmdC1lbnRlcnswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5MZWZ0LWxlYXZlezAley13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTtvcGFjaXR5OjF9MTAwJXstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgc2xpZGVJbkxlZnQtbGVhdmV7MCV7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApO29wYWNpdHk6MX0xMDAley13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpO29wYWNpdHk6MH19LmVsLXRyZWV7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZDojRkZGO2NvbG9yOiM2MDYyNjZ9LmVsLXRyZWVfX2VtcHR5LWJsb2Nre3Bvc2l0aW9uOnJlbGF0aXZlO21pbi1oZWlnaHQ6NjBweDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS5lbC10cmVlX19lbXB0eS10ZXh0e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO2NvbG9yOiM5MDkzOTk7Zm9udC1zaXplOjE0cHh9LmVsLXRyZWVfX2Ryb3AtaW5kaWNhdG9ye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO2hlaWdodDoxcHg7YmFja2dyb3VuZC1jb2xvcjojNDA5RUZGfS5lbC10cmVlLW5vZGV7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MH0uZWwtdHJlZS1ub2RlOmZvY3VzPi5lbC10cmVlLW5vZGVfX2NvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjojRjVGN0ZBfS5lbC10cmVlLW5vZGUuaXMtZHJvcC1pbm5lcj4uZWwtdHJlZS1ub2RlX19jb250ZW50IC5lbC10cmVlLW5vZGVfX2xhYmVse2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjtjb2xvcjojZmZmfS5lbC10cmVlLW5vZGVfX2NvbnRlbnQ6aG92ZXIsLmVsLXVwbG9hZC1saXN0X19pdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQX0uZWwtdHJlZS1ub2RlX19jb250ZW50e2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI2cHg7Y3Vyc29yOnBvaW50ZXJ9LmVsLXRyZWUtbm9kZV9fY29udGVudD4uZWwtdHJlZS1ub2RlX19leHBhbmQtaWNvbntwYWRkaW5nOjZweH0uZWwtdHJlZS1ub2RlX19jb250ZW50PmxhYmVsLmVsLWNoZWNrYm94e21hcmdpbi1yaWdodDo4cHh9LmVsLXRyZWUuaXMtZHJhZ2dpbmcgLmVsLXRyZWUtbm9kZV9fY29udGVudHtjdXJzb3I6bW92ZX0uZWwtdHJlZS5pcy1kcmFnZ2luZyAuZWwtdHJlZS1ub2RlX19jb250ZW50ICp7cG9pbnRlci1ldmVudHM6bm9uZX0uZWwtdHJlZS5pcy1kcmFnZ2luZy5pcy1kcm9wLW5vdC1hbGxvdyAuZWwtdHJlZS1ub2RlX19jb250ZW50e2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtdHJlZS1ub2RlX19leHBhbmQtaWNvbntjdXJzb3I6cG9pbnRlcjtjb2xvcjojQzBDNENDO2ZvbnQtc2l6ZToxMnB4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwKTt0cmFuc2Zvcm06cm90YXRlKDApOy13ZWJraXQtdHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlLWluLW91dCwtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1pbi1vdXR9LmVsLXRyZWUtbm9kZV9fZXhwYW5kLWljb24uZXhwYW5kZWR7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0uZWwtdHJlZS1ub2RlX19leHBhbmQtaWNvbi5pcy1sZWFme2NvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpkZWZhdWx0fS5lbC10cmVlLW5vZGVfX2xhYmVse2ZvbnQtc2l6ZToxNHB4fS5lbC10cmVlLW5vZGVfX2xvYWRpbmctaWNvbnttYXJnaW4tcmlnaHQ6OHB4O2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiNDMEM0Q0N9LmVsLXRyZWUtbm9kZT4uZWwtdHJlZS1ub2RlX19jaGlsZHJlbntvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uZWwtdHJlZS1ub2RlLmlzLWV4cGFuZGVkPi5lbC10cmVlLW5vZGVfX2NoaWxkcmVue2Rpc3BsYXk6YmxvY2t9LmVsLXRyZWUtLWhpZ2hsaWdodC1jdXJyZW50IC5lbC10cmVlLW5vZGUuaXMtY3VycmVudD4uZWwtdHJlZS1ub2RlX19jb250ZW50e2JhY2tncm91bmQtY29sb3I6I2YwZjdmZn0uZWwtYWxlcnR7d2lkdGg6MTAwJTtwYWRkaW5nOjhweCAxNnB4O21hcmdpbjowOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItcmFkaXVzOjRweDtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7b3ZlcmZsb3c6aGlkZGVuO29wYWNpdHk6MTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IC4yczt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzfS5lbC1hbGVydC5pcy1saWdodCAuZWwtYWxlcnRfX2Nsb3NlYnRue2NvbG9yOiNDMEM0Q0N9LmVsLWFsZXJ0LmlzLWRhcmsgLmVsLWFsZXJ0X19jbG9zZWJ0biwuZWwtYWxlcnQuaXMtZGFyayAuZWwtYWxlcnRfX2Rlc2NyaXB0aW9ue2NvbG9yOiNGRkZ9LmVsLWFsZXJ0LmlzLWNlbnRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5lbC1hbGVydC0tc3VjY2Vzcy5pcy1saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmMGY5ZWI7Y29sb3I6IzY3QzIzQX0uZWwtYWxlcnQtLXN1Y2Nlc3MuaXMtbGlnaHQgLmVsLWFsZXJ0X19kZXNjcmlwdGlvbntjb2xvcjojNjdDMjNBfS5lbC1hbGVydC0tc3VjY2Vzcy5pcy1kYXJre2JhY2tncm91bmQtY29sb3I6IzY3QzIzQTtjb2xvcjojRkZGfS5lbC1hbGVydC0taW5mby5pcy1saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjU7Y29sb3I6IzkwOTM5OX0uZWwtYWxlcnQtLWluZm8uaXMtZGFya3tiYWNrZ3JvdW5kLWNvbG9yOiM5MDkzOTk7Y29sb3I6I0ZGRn0uZWwtYWxlcnQtLWluZm8gLmVsLWFsZXJ0X19kZXNjcmlwdGlvbntjb2xvcjojOTA5Mzk5fS5lbC1hbGVydC0td2FybmluZy5pcy1saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmZGY2ZWM7Y29sb3I6I0U2QTIzQ30uZWwtYWxlcnQtLXdhcm5pbmcuaXMtbGlnaHQgLmVsLWFsZXJ0X19kZXNjcmlwdGlvbntjb2xvcjojRTZBMjNDfS5lbC1hbGVydC0td2FybmluZy5pcy1kYXJre2JhY2tncm91bmQtY29sb3I6I0U2QTIzQztjb2xvcjojRkZGfS5lbC1hbGVydC0tZXJyb3IuaXMtbGlnaHR7YmFja2dyb3VuZC1jb2xvcjojZmVmMGYwO2NvbG9yOiNGNTZDNkN9LmVsLWFsZXJ0LS1lcnJvci5pcy1saWdodCAuZWwtYWxlcnRfX2Rlc2NyaXB0aW9ue2NvbG9yOiNGNTZDNkN9LmVsLWFsZXJ0LS1lcnJvci5pcy1kYXJre2JhY2tncm91bmQtY29sb3I6I0Y1NkM2Qztjb2xvcjojRkZGfS5lbC1hbGVydF9fY29udGVudHtkaXNwbGF5OnRhYmxlLWNlbGw7cGFkZGluZzowIDhweH0uZWwtYWxlcnRfX2ljb257Zm9udC1zaXplOjE2cHg7d2lkdGg6MTZweH0uZWwtYWxlcnRfX2ljb24uaXMtYmlne2ZvbnQtc2l6ZToyOHB4O3dpZHRoOjI4cHh9LmVsLWFsZXJ0X190aXRsZXtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxOHB4fS5lbC1hbGVydF9fdGl0bGUuaXMtYm9sZHtmb250LXdlaWdodDo3MDB9LmVsLWFsZXJ0IC5lbC1hbGVydF9fZGVzY3JpcHRpb257Zm9udC1zaXplOjEycHg7bWFyZ2luOjVweCAwIDB9LmVsLWFsZXJ0X19jbG9zZWJ0bntmb250LXNpemU6MTJweDtvcGFjaXR5OjE7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEycHg7cmlnaHQ6MTVweDtjdXJzb3I6cG9pbnRlcn0uZWwtYWxlcnQtZmFkZS1lbnRlciwuZWwtYWxlcnQtZmFkZS1sZWF2ZS1hY3RpdmUsLmVsLWxvYWRpbmctZmFkZS1lbnRlciwuZWwtbG9hZGluZy1mYWRlLWxlYXZlLWFjdGl2ZSwuZWwtbm90aWZpY2F0aW9uLWZhZGUtbGVhdmUtYWN0aXZlLC5lbC11cGxvYWQgaWZyYW1le29wYWNpdHk6MH0uZWwtY2Fyb3VzZWxfX2Fycm93LS1yaWdodCwuZWwtbm90aWZpY2F0aW9uLnJpZ2h0e3JpZ2h0OjE2cHh9LmVsLWFsZXJ0X19jbG9zZWJ0bi5pcy1jdXN0b21lZHtmb250LXN0eWxlOm5vcm1hbDtmb250LXNpemU6MTNweDt0b3A6OXB4fS5lbC1ub3RpZmljYXRpb257ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDt3aWR0aDozMzBweDtwYWRkaW5nOjE0cHggMjZweCAxNHB4IDEzcHg7Ym9yZGVyLXJhZGl1czo4cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjoxcHggc29saWQgI0VCRUVGNTtwb3NpdGlvbjpmaXhlZDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSk7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjNzLGxlZnQgLjNzLHJpZ2h0IC4zcyx0b3AgLjRzLGJvdHRvbSAuM3MsLXdlYmtpdC10cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246b3BhY2l0eSAuM3MsbGVmdCAuM3MscmlnaHQgLjNzLHRvcCAuNHMsYm90dG9tIC4zcywtd2Via2l0LXRyYW5zZm9ybSAuM3M7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyx0cmFuc2Zvcm0gLjNzLGxlZnQgLjNzLHJpZ2h0IC4zcyx0b3AgLjRzLGJvdHRvbSAuM3M7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyx0cmFuc2Zvcm0gLjNzLGxlZnQgLjNzLHJpZ2h0IC4zcyx0b3AgLjRzLGJvdHRvbSAuM3MsLXdlYmtpdC10cmFuc2Zvcm0gLjNzO292ZXJmbG93OmhpZGRlbn0uZWwtbm90aWZpY2F0aW9uLmxlZnR7bGVmdDoxNnB4fS5lbC1ub3RpZmljYXRpb25fX2dyb3Vwe21hcmdpbi1sZWZ0OjEzcHg7bWFyZ2luLXJpZ2h0OjhweH0uZWwtbm90aWZpY2F0aW9uX190aXRsZXtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE2cHg7Y29sb3I6IzMwMzEzMzttYXJnaW46MH0uZWwtbm90aWZpY2F0aW9uX19jb250ZW50e2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIxcHg7bWFyZ2luOjZweCAwIDA7Y29sb3I6IzYwNjI2Njt0ZXh0LWFsaWduOmp1c3RpZnl9LmVsLW5vdGlmaWNhdGlvbl9fY29udGVudCBwe21hcmdpbjowfS5lbC1ub3RpZmljYXRpb25fX2ljb257aGVpZ2h0OjI0cHg7d2lkdGg6MjRweDtmb250LXNpemU6MjRweH0uZWwtbm90aWZpY2F0aW9uX19jbG9zZUJ0bntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MThweDtyaWdodDoxNXB4O2N1cnNvcjpwb2ludGVyO2NvbG9yOiM5MDkzOTk7Zm9udC1zaXplOjE2cHh9LmVsLW5vdGlmaWNhdGlvbl9fY2xvc2VCdG46aG92ZXJ7Y29sb3I6IzYwNjI2Nn0uZWwtbm90aWZpY2F0aW9uIC5lbC1pY29uLXN1Y2Nlc3N7Y29sb3I6IzY3QzIzQX0uZWwtbm90aWZpY2F0aW9uIC5lbC1pY29uLWVycm9ye2NvbG9yOiNGNTZDNkN9LmVsLW5vdGlmaWNhdGlvbiAuZWwtaWNvbi1pbmZve2NvbG9yOiM5MDkzOTl9LmVsLW5vdGlmaWNhdGlvbiAuZWwtaWNvbi13YXJuaW5ne2NvbG9yOiNFNkEyM0N9LmVsLW5vdGlmaWNhdGlvbi1mYWRlLWVudGVyLnJpZ2h0e3JpZ2h0OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX0uZWwtbm90aWZpY2F0aW9uLWZhZGUtZW50ZXIubGVmdHtsZWZ0OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfS5lbC1pbnB1dC1udW1iZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTgwcHg7bGluZS1oZWlnaHQ6MzhweH0uZWwtaW5wdXQtbnVtYmVyIC5lbC1pbnB1dHtkaXNwbGF5OmJsb2NrfS5lbC1pbnB1dC1udW1iZXIgLmVsLWlucHV0X19pbm5lcnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtwYWRkaW5nLWxlZnQ6NTBweDtwYWRkaW5nLXJpZ2h0OjUwcHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UsLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3RvcDoxcHg7d2lkdGg6NDBweDtoZWlnaHQ6YXV0bzt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kOiNGNUY3RkE7Y29sb3I6IzYwNjI2NjtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTNweH0uZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZTpob3ZlciwuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZTpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlOmhvdmVyOm5vdCguaXMtZGlzYWJsZWQpfi5lbC1pbnB1dCAuZWwtaW5wdXRfX2lubmVyOm5vdCguaXMtZGlzYWJsZWQpLC5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNlOmhvdmVyOm5vdCguaXMtZGlzYWJsZWQpfi5lbC1pbnB1dCAuZWwtaW5wdXRfX2lubmVyOm5vdCguaXMtZGlzYWJsZWQpe2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlLmlzLWRpc2FibGVkLC5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNlLmlzLWRpc2FibGVke2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNle3JpZ2h0OjFweDtib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRENERkU2fS5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNle2xlZnQ6MXB4O2JvcmRlci1yYWRpdXM6NHB4IDAgMCA0cHg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjRENERkU2fS5lbC1pbnB1dC1udW1iZXIuaXMtZGlzYWJsZWQgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UsLmVsLWlucHV0LW51bWJlci5pcy1kaXNhYmxlZCAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZXtib3JkZXItY29sb3I6I0U0RTdFRDtjb2xvcjojRTRFN0VEfS5lbC1pbnB1dC1udW1iZXIuaXMtZGlzYWJsZWQgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2U6aG92ZXIsLmVsLWlucHV0LW51bWJlci5pcy1kaXNhYmxlZCAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZTpob3Zlcntjb2xvcjojRTRFN0VEO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtaW5wdXQtbnVtYmVyLS1tZWRpdW17d2lkdGg6MjAwcHg7bGluZS1oZWlnaHQ6MzRweH0uZWwtaW5wdXQtbnVtYmVyLS1tZWRpdW0gLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UsLmVsLWlucHV0LW51bWJlci0tbWVkaXVtIC5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNle3dpZHRoOjM2cHg7Zm9udC1zaXplOjE0cHh9LmVsLWlucHV0LW51bWJlci0tbWVkaXVtIC5lbC1pbnB1dF9faW5uZXJ7cGFkZGluZy1sZWZ0OjQzcHg7cGFkZGluZy1yaWdodDo0M3B4fS5lbC1pbnB1dC1udW1iZXItLXNtYWxse3dpZHRoOjEzMHB4O2xpbmUtaGVpZ2h0OjMwcHh9LmVsLWlucHV0LW51bWJlci0tc21hbGwgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UsLmVsLWlucHV0LW51bWJlci0tc21hbGwgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7d2lkdGg6MzJweDtmb250LXNpemU6MTNweH0uZWwtaW5wdXQtbnVtYmVyLS1zbWFsbCAuZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZSBbY2xhc3MqPWVsLWljb25dLC5lbC1pbnB1dC1udW1iZXItLXNtYWxsIC5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNlIFtjbGFzcyo9ZWwtaWNvbl17LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjkpO3RyYW5zZm9ybTpzY2FsZSguOSl9LmVsLWlucHV0LW51bWJlci0tc21hbGwgLmVsLWlucHV0X19pbm5lcntwYWRkaW5nLWxlZnQ6MzlweDtwYWRkaW5nLXJpZ2h0OjM5cHh9LmVsLWlucHV0LW51bWJlci0tbWluaXt3aWR0aDoxMzBweDtsaW5lLWhlaWdodDoyNnB4fS5lbC1pbnB1dC1udW1iZXItLW1pbmkgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UsLmVsLWlucHV0LW51bWJlci0tbWluaSAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZXt3aWR0aDoyOHB4O2ZvbnQtc2l6ZToxMnB4fS5lbC1pbnB1dC1udW1iZXItLW1pbmkgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UgW2NsYXNzKj1lbC1pY29uXSwuZWwtaW5wdXQtbnVtYmVyLS1taW5pIC5lbC1pbnB1dC1udW1iZXJfX2luY3JlYXNlIFtjbGFzcyo9ZWwtaWNvbl17LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjgpO3RyYW5zZm9ybTpzY2FsZSguOCl9LmVsLWlucHV0LW51bWJlci0tbWluaSAuZWwtaW5wdXRfX2lubmVye3BhZGRpbmctbGVmdDozNXB4O3BhZGRpbmctcmlnaHQ6MzVweH0uZWwtaW5wdXQtbnVtYmVyLmlzLXdpdGhvdXQtY29udHJvbHMgLmVsLWlucHV0X19pbm5lcntwYWRkaW5nLWxlZnQ6MTVweDtwYWRkaW5nLXJpZ2h0OjE1cHh9LmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodCAuZWwtaW5wdXRfX2lubmVye3BhZGRpbmctbGVmdDoxNXB4O3BhZGRpbmctcmlnaHQ6NTBweH0uZWwtaW5wdXQtbnVtYmVyLmlzLWNvbnRyb2xzLXJpZ2h0IC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlLC5lbC1pbnB1dC1udW1iZXIuaXMtY29udHJvbHMtcmlnaHQgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7aGVpZ2h0OmF1dG87bGluZS1oZWlnaHQ6MTlweH0uZWwtaW5wdXQtbnVtYmVyLmlzLWNvbnRyb2xzLXJpZ2h0IC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlIFtjbGFzcyo9ZWwtaWNvbl0sLmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodCAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZSBbY2xhc3MqPWVsLWljb25dey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC44KTt0cmFuc2Zvcm06c2NhbGUoLjgpfS5lbC1pbnB1dC1udW1iZXIuaXMtY29udHJvbHMtcmlnaHQgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7Ym9yZGVyLXJhZGl1czowIDRweCAwIDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0RDREZFNn0uZWwtaW5wdXQtbnVtYmVyLmlzLWNvbnRyb2xzLXJpZ2h0IC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNle3JpZ2h0OjFweDtib3R0b206MXB4O3RvcDphdXRvO2xlZnQ6YXV0bztib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItbGVmdDoxcHggc29saWQgI0RDREZFNjtib3JkZXItcmFkaXVzOjAgMCA0cHh9LmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodFtjbGFzcyo9bWVkaXVtXSBbY2xhc3MqPWRlY3JlYXNlXSwuZWwtaW5wdXQtbnVtYmVyLmlzLWNvbnRyb2xzLXJpZ2h0W2NsYXNzKj1tZWRpdW1dIFtjbGFzcyo9aW5jcmVhc2Vde2xpbmUtaGVpZ2h0OjE3cHh9LmVsLWlucHV0LW51bWJlci5pcy1jb250cm9scy1yaWdodFtjbGFzcyo9c21hbGxdIFtjbGFzcyo9ZGVjcmVhc2VdLC5lbC1pbnB1dC1udW1iZXIuaXMtY29udHJvbHMtcmlnaHRbY2xhc3MqPXNtYWxsXSBbY2xhc3MqPWluY3JlYXNlXXtsaW5lLWhlaWdodDoxNXB4fS5lbC1pbnB1dC1udW1iZXIuaXMtY29udHJvbHMtcmlnaHRbY2xhc3MqPW1pbmldIFtjbGFzcyo9ZGVjcmVhc2VdLC5lbC1pbnB1dC1udW1iZXIuaXMtY29udHJvbHMtcmlnaHRbY2xhc3MqPW1pbmldIFtjbGFzcyo9aW5jcmVhc2Vde2xpbmUtaGVpZ2h0OjEzcHh9LmVsLXRvb2x0aXA6Zm9jdXM6aG92ZXIsLmVsLXRvb2x0aXA6Zm9jdXM6bm90KC5mb2N1c2luZyl7b3V0bGluZS13aWR0aDowfS5lbC10b29sdGlwX19wb3BwZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo0cHg7cGFkZGluZzoxMHB4O3otaW5kZXg6MjAwMDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjI7bWluLXdpZHRoOjEwcHg7d29yZC13cmFwOmJyZWFrLXdvcmR9LmVsLXRvb2x0aXBfX3BvcHBlciAucG9wcGVyX19hcnJvdywuZWwtdG9vbHRpcF9fcG9wcGVyIC5wb3BwZXJfX2Fycm93OjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZH0uZWwtdG9vbHRpcF9fcG9wcGVyIC5wb3BwZXJfX2Fycm93e2JvcmRlci13aWR0aDo2cHh9LmVsLXRvb2x0aXBfX3BvcHBlciAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7Y29udGVudDpcXFwiIFxcXCI7Ym9yZGVyLXdpZHRoOjVweH0uZWwtYnV0dG9uLWdyb3VwOjphZnRlciwuZWwtYnV0dG9uLWdyb3VwOjpiZWZvcmUsLmVsLWNvbG9yLWRyb3Bkb3duX19tYWluLXdyYXBwZXI6OmFmdGVyLC5lbC1saW5rLmlzLXVuZGVybGluZTpob3ZlcjphZnRlciwuZWwtcGFnZS1oZWFkZXJfX2xlZnQ6OmFmdGVyLC5lbC1wcm9ncmVzcy1iYXJfX2lubmVyOjphZnRlciwuZWwtcm93OjphZnRlciwuZWwtcm93OjpiZWZvcmUsLmVsLXNsaWRlcjo6YWZ0ZXIsLmVsLXNsaWRlcjo6YmVmb3JlLC5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyOjphZnRlciwuZWwtdHJhbnNmZXItcGFuZWwgLmVsLXRyYW5zZmVyLXBhbmVsX19mb290ZXI6OmFmdGVyLC5lbC11cGxvYWQtY292ZXI6OmFmdGVyLC5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbS1hY3Rpb25zOjphZnRlcntjb250ZW50OlxcXCJcXFwifS5lbC10b29sdGlwX19wb3BwZXJbeC1wbGFjZW1lbnRePXRvcF17bWFyZ2luLWJvdHRvbToxMnB4fS5lbC10b29sdGlwX19wb3BwZXJbeC1wbGFjZW1lbnRePXRvcF0gLnBvcHBlcl9fYXJyb3d7Ym90dG9tOi02cHg7Ym9yZGVyLXRvcC1jb2xvcjojMzAzMTMzO2JvcmRlci1ib3R0b20td2lkdGg6MH0uZWwtdG9vbHRpcF9fcG9wcGVyW3gtcGxhY2VtZW50Xj10b3BdIC5wb3BwZXJfX2Fycm93OjphZnRlcntib3R0b206MXB4O21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXRvcC1jb2xvcjojMzAzMTMzO2JvcmRlci1ib3R0b20td2lkdGg6MH0uZWwtdG9vbHRpcF9fcG9wcGVyW3gtcGxhY2VtZW50Xj1ib3R0b21de21hcmdpbi10b3A6MTJweH0uZWwtdG9vbHRpcF9fcG9wcGVyW3gtcGxhY2VtZW50Xj1ib3R0b21dIC5wb3BwZXJfX2Fycm93e3RvcDotNnB4O2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiMzMDMxMzN9LmVsLXRvb2x0aXBfX3BvcHBlclt4LXBsYWNlbWVudF49Ym90dG9tXSAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7dG9wOjFweDttYXJnaW4tbGVmdDotNXB4O2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiMzMDMxMzN9LmVsLXRvb2x0aXBfX3BvcHBlclt4LXBsYWNlbWVudF49cmlnaHRde21hcmdpbi1sZWZ0OjEycHh9LmVsLXRvb2x0aXBfX3BvcHBlclt4LXBsYWNlbWVudF49cmlnaHRdIC5wb3BwZXJfX2Fycm93e2xlZnQ6LTZweDtib3JkZXItcmlnaHQtY29sb3I6IzMwMzEzMztib3JkZXItbGVmdC13aWR0aDowfS5lbC10b29sdGlwX19wb3BwZXJbeC1wbGFjZW1lbnRePXJpZ2h0XSAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7Ym90dG9tOi01cHg7bGVmdDoxcHg7Ym9yZGVyLXJpZ2h0LWNvbG9yOiMzMDMxMzM7Ym9yZGVyLWxlZnQtd2lkdGg6MH0uZWwtdG9vbHRpcF9fcG9wcGVyW3gtcGxhY2VtZW50Xj1sZWZ0XXttYXJnaW4tcmlnaHQ6MTJweH0uZWwtdG9vbHRpcF9fcG9wcGVyW3gtcGxhY2VtZW50Xj1sZWZ0XSAucG9wcGVyX19hcnJvd3tyaWdodDotNnB4O2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOiMzMDMxMzN9LmVsLXRvb2x0aXBfX3BvcHBlclt4LXBsYWNlbWVudF49bGVmdF0gLnBvcHBlcl9fYXJyb3c6OmFmdGVye3JpZ2h0OjFweDtib3R0b206LTVweDttYXJnaW4tbGVmdDotNXB4O2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOiMzMDMxMzN9LmVsLXRvb2x0aXBfX3BvcHBlci5pcy1kYXJre2JhY2tncm91bmQ6IzMwMzEzMztjb2xvcjojRkZGfS5lbC10b29sdGlwX19wb3BwZXIuaXMtbGlnaHR7YmFja2dyb3VuZDojRkZGO2JvcmRlcjoxcHggc29saWQgIzMwMzEzM30uZWwtdG9vbHRpcF9fcG9wcGVyLmlzLWxpZ2h0W3gtcGxhY2VtZW50Xj10b3BdIC5wb3BwZXJfX2Fycm93e2JvcmRlci10b3AtY29sb3I6IzMwMzEzM30uZWwtdG9vbHRpcF9fcG9wcGVyLmlzLWxpZ2h0W3gtcGxhY2VtZW50Xj10b3BdIC5wb3BwZXJfX2Fycm93OjphZnRlcntib3JkZXItdG9wLWNvbG9yOiNGRkZ9LmVsLXRvb2x0aXBfX3BvcHBlci5pcy1saWdodFt4LXBsYWNlbWVudF49Ym90dG9tXSAucG9wcGVyX19hcnJvd3tib3JkZXItYm90dG9tLWNvbG9yOiMzMDMxMzN9LmVsLXRvb2x0aXBfX3BvcHBlci5pcy1saWdodFt4LXBsYWNlbWVudF49Ym90dG9tXSAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojRkZGfS5lbC10b29sdGlwX19wb3BwZXIuaXMtbGlnaHRbeC1wbGFjZW1lbnRePWxlZnRdIC5wb3BwZXJfX2Fycm93e2JvcmRlci1sZWZ0LWNvbG9yOiMzMDMxMzN9LmVsLXRvb2x0aXBfX3BvcHBlci5pcy1saWdodFt4LXBsYWNlbWVudF49bGVmdF0gLnBvcHBlcl9fYXJyb3c6OmFmdGVye2JvcmRlci1sZWZ0LWNvbG9yOiNGRkZ9LmVsLXRvb2x0aXBfX3BvcHBlci5pcy1saWdodFt4LXBsYWNlbWVudF49cmlnaHRdIC5wb3BwZXJfX2Fycm93e2JvcmRlci1yaWdodC1jb2xvcjojMzAzMTMzfS5lbC10b29sdGlwX19wb3BwZXIuaXMtbGlnaHRbeC1wbGFjZW1lbnRePXJpZ2h0XSAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNGRkZ9LmVsLXNsaWRlcjo6YWZ0ZXIsLmVsLXNsaWRlcjo6YmVmb3Jle2Rpc3BsYXk6dGFibGV9LmVsLXNsaWRlcl9fYnV0dG9uLXdyYXBwZXIgLmVsLXRvb2x0aXAsLmVsLXNsaWRlcl9fYnV0dG9uLXdyYXBwZXI6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtc2xpZGVyOjphZnRlcntjbGVhcjpib3RofS5lbC1zbGlkZXJfX3J1bndheXt3aWR0aDoxMDAlO2hlaWdodDo2cHg7bWFyZ2luOjE2cHggMDtiYWNrZ3JvdW5kLWNvbG9yOiNFNEU3RUQ7Ym9yZGVyLXJhZGl1czozcHg7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOnBvaW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1zbGlkZXJfX3J1bndheS5zaG93LWlucHV0e21hcmdpbi1yaWdodDoxNjBweDt3aWR0aDphdXRvfS5lbC1zbGlkZXJfX3J1bndheS5kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uZWwtc2xpZGVyX19ydW53YXkuZGlzYWJsZWQgLmVsLXNsaWRlcl9fYmFye2JhY2tncm91bmQtY29sb3I6I0MwQzRDQ30uZWwtc2xpZGVyX19ydW53YXkuZGlzYWJsZWQgLmVsLXNsaWRlcl9fYnV0dG9ue2JvcmRlci1jb2xvcjojQzBDNENDfS5lbC1zbGlkZXJfX3J1bndheS5kaXNhYmxlZCAuZWwtc2xpZGVyX19idXR0b24td3JhcHBlci5kcmFnZ2luZywuZWwtc2xpZGVyX19ydW53YXkuZGlzYWJsZWQgLmVsLXNsaWRlcl9fYnV0dG9uLXdyYXBwZXIuaG92ZXIsLmVsLXNsaWRlcl9fcnVud2F5LmRpc2FibGVkIC5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyOmhvdmVye2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtc2xpZGVyX19ydW53YXkuZGlzYWJsZWQgLmVsLXNsaWRlcl9fYnV0dG9uLmRyYWdnaW5nLC5lbC1zbGlkZXJfX3J1bndheS5kaXNhYmxlZCAuZWwtc2xpZGVyX19idXR0b24uaG92ZXIsLmVsLXNsaWRlcl9fcnVud2F5LmRpc2FibGVkIC5lbC1zbGlkZXJfX2J1dHRvbjpob3Zlcnstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyLC5lbC1zbGlkZXJfX3N0b3B7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTtwb3NpdGlvbjphYnNvbHV0ZX0uZWwtc2xpZGVyX19pbnB1dHtmbG9hdDpyaWdodDttYXJnaW4tdG9wOjNweDt3aWR0aDoxMzBweH0uZWwtc2xpZGVyX19pbnB1dC5lbC1pbnB1dC1udW1iZXItLW1pbml7bWFyZ2luLXRvcDo1cHh9LmVsLXNsaWRlcl9faW5wdXQuZWwtaW5wdXQtbnVtYmVyLS1tZWRpdW17bWFyZ2luLXRvcDowfS5lbC1zbGlkZXJfX2lucHV0LmVsLWlucHV0LW51bWJlci0tbGFyZ2V7bWFyZ2luLXRvcDotMnB4fS5lbC1zbGlkZXJfX2JhcntoZWlnaHQ6NnB4O2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweDtwb3NpdGlvbjphYnNvbHV0ZX0uZWwtc2xpZGVyX19idXR0b24td3JhcHBlcntoZWlnaHQ6MzZweDt3aWR0aDozNnB4O3otaW5kZXg6MTAwMTt0b3A6LTE1cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7bGluZS1oZWlnaHQ6bm9ybWFsfS5lbC1pbWFnZS12aWV3ZXJfX2J0biwuZWwtc2xpZGVyX19idXR0b24sLmVsLXN0ZXBfX2ljb24taW5uZXJ7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lfS5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyOjphZnRlcntoZWlnaHQ6MTAwJX0uZWwtc2xpZGVyX19idXR0b24td3JhcHBlci5ob3ZlciwuZWwtc2xpZGVyX19idXR0b24td3JhcHBlcjpob3ZlcntjdXJzb3I6LXdlYmtpdC1ncmFiO2N1cnNvcjpncmFifS5lbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyLmRyYWdnaW5ne2N1cnNvcjotd2Via2l0LWdyYWJiaW5nO2N1cnNvcjpncmFiYmluZ30uZWwtc2xpZGVyX19idXR0b257d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtib3JkZXI6MnB4IHNvbGlkICM0MDlFRkY7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JvcmRlci1yYWRpdXM6NTAlOy13ZWJraXQtdHJhbnNpdGlvbjouMnM7dHJhbnNpdGlvbjouMnM7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmVsLXNsaWRlcl9fYnV0dG9uLmRyYWdnaW5nLC5lbC1zbGlkZXJfX2J1dHRvbi5ob3ZlciwuZWwtc2xpZGVyX19idXR0b246aG92ZXJ7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4yKTt0cmFuc2Zvcm06c2NhbGUoMS4yKX0uZWwtc2xpZGVyX19idXR0b24uaG92ZXIsLmVsLXNsaWRlcl9fYnV0dG9uOmhvdmVye2N1cnNvcjotd2Via2l0LWdyYWI7Y3Vyc29yOmdyYWJ9LmVsLXNsaWRlcl9fYnV0dG9uLmRyYWdnaW5ne2N1cnNvcjotd2Via2l0LWdyYWJiaW5nO2N1cnNvcjpncmFiYmluZ30uZWwtc2xpZGVyX19zdG9we2hlaWdodDo2cHg7d2lkdGg6NnB4O2JvcmRlci1yYWRpdXM6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSl9LmVsLXNsaWRlcl9fbWFya3N7dG9wOjA7bGVmdDoxMnB4O3dpZHRoOjE4cHg7aGVpZ2h0OjEwMCV9LmVsLXNsaWRlcl9fbWFya3MtdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM5MDkzOTk7bWFyZ2luLXRvcDoxNXB4fS5lbC1zbGlkZXIuaXMtdmVydGljYWx7cG9zaXRpb246cmVsYXRpdmV9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbCAuZWwtc2xpZGVyX19ydW53YXl7d2lkdGg6NnB4O2hlaWdodDoxMDAlO21hcmdpbjowIDE2cHh9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbCAuZWwtc2xpZGVyX19iYXJ7d2lkdGg6NnB4O2hlaWdodDphdXRvO2JvcmRlci1yYWRpdXM6MCAwIDNweCAzcHh9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbCAuZWwtc2xpZGVyX19idXR0b24td3JhcHBlcnt0b3A6YXV0bztsZWZ0Oi0xNXB4Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSg1MCUpfS5lbC1zbGlkZXIuaXMtdmVydGljYWwgLmVsLXNsaWRlcl9fc3RvcHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNTAlKX0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dHtwYWRkaW5nLWJvdHRvbTo1OHB4fS5lbC1zbGlkZXIuaXMtdmVydGljYWwuZWwtc2xpZGVyLS13aXRoLWlucHV0IC5lbC1zbGlkZXJfX2lucHV0e292ZXJmbG93OnZpc2libGU7ZmxvYXQ6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MjJweDt3aWR0aDozNnB4O21hcmdpbi10b3A6MTVweH0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dCAuZWwtc2xpZGVyX19pbnB1dCAuZWwtaW5wdXRfX2lubmVye3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDo1cHh9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UsLmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7dG9wOjMycHg7bWFyZ2luLXRvcDotMXB4O2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtsaW5lLWhlaWdodDoyMHB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKX0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsLmVsLXNsaWRlci0td2l0aC1pbnB1dCAuZWwtc2xpZGVyX19pbnB1dCAuZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZXt3aWR0aDoxOHB4O3JpZ2h0OjE4cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHh9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7d2lkdGg6MTlweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHh9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V+LmVsLWlucHV0IC5lbC1pbnB1dF9faW5uZXJ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQ6aG92ZXIgLmVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UsLmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQ6aG92ZXIgLmVsLWlucHV0LW51bWJlcl9faW5jcmVhc2V7Ym9yZGVyLWNvbG9yOiNDMEM0Q0N9LmVsLXNsaWRlci5pcy12ZXJ0aWNhbC5lbC1zbGlkZXItLXdpdGgtaW5wdXQgLmVsLXNsaWRlcl9faW5wdXQ6YWN0aXZlIC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlLC5lbC1zbGlkZXIuaXMtdmVydGljYWwuZWwtc2xpZGVyLS13aXRoLWlucHV0IC5lbC1zbGlkZXJfX2lucHV0OmFjdGl2ZSAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZXtib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtc2xpZGVyLmlzLXZlcnRpY2FsIC5lbC1zbGlkZXJfX21hcmtzLXRleHR7bWFyZ2luLXRvcDowO2xlZnQ6MTVweDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNTAlKX0uZWwtbG9hZGluZy1wYXJlbnQtLXJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudH0uZWwtbG9hZGluZy1wYXJlbnQtLWhpZGRlbntvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50fS5lbC1sb2FkaW5nLW1hc2t7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuOSk7bWFyZ2luOjA7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjNzO3RyYW5zaXRpb246b3BhY2l0eSAuM3N9LmVsLWxvYWRpbmctbWFzay5pcy1mdWxsc2NyZWVue3Bvc2l0aW9uOmZpeGVkfS5lbC1sb2FkaW5nLW1hc2suaXMtZnVsbHNjcmVlbiAuZWwtbG9hZGluZy1zcGlubmVye21hcmdpbi10b3A6LTI1cHh9LmVsLWxvYWRpbmctbWFzay5pcy1mdWxsc2NyZWVuIC5lbC1sb2FkaW5nLXNwaW5uZXIgLmNpcmN1bGFye2hlaWdodDo1MHB4O3dpZHRoOjUwcHh9LmVsLWxvYWRpbmctc3Bpbm5lcnt0b3A6NTAlO21hcmdpbi10b3A6LTIxcHg7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZX0uZWwtY29sLXB1bGwtMCwuZWwtY29sLXB1bGwtMSwuZWwtY29sLXB1bGwtMTAsLmVsLWNvbC1wdWxsLTExLC5lbC1jb2wtcHVsbC0xMiwuZWwtY29sLXB1bGwtMTMsLmVsLWNvbC1wdWxsLTE0LC5lbC1jb2wtcHVsbC0xNSwuZWwtY29sLXB1bGwtMTYsLmVsLWNvbC1wdWxsLTE3LC5lbC1jb2wtcHVsbC0xOCwuZWwtY29sLXB1bGwtMTksLmVsLWNvbC1wdWxsLTIsLmVsLWNvbC1wdWxsLTIwLC5lbC1jb2wtcHVsbC0yMSwuZWwtY29sLXB1bGwtMjIsLmVsLWNvbC1wdWxsLTIzLC5lbC1jb2wtcHVsbC0yNCwuZWwtY29sLXB1bGwtMywuZWwtY29sLXB1bGwtNCwuZWwtY29sLXB1bGwtNSwuZWwtY29sLXB1bGwtNiwuZWwtY29sLXB1bGwtNywuZWwtY29sLXB1bGwtOCwuZWwtY29sLXB1bGwtOSwuZWwtY29sLXB1c2gtMCwuZWwtY29sLXB1c2gtMSwuZWwtY29sLXB1c2gtMTAsLmVsLWNvbC1wdXNoLTExLC5lbC1jb2wtcHVzaC0xMiwuZWwtY29sLXB1c2gtMTMsLmVsLWNvbC1wdXNoLTE0LC5lbC1jb2wtcHVzaC0xNSwuZWwtY29sLXB1c2gtMTYsLmVsLWNvbC1wdXNoLTE3LC5lbC1jb2wtcHVzaC0xOCwuZWwtY29sLXB1c2gtMTksLmVsLWNvbC1wdXNoLTIsLmVsLWNvbC1wdXNoLTIwLC5lbC1jb2wtcHVzaC0yMSwuZWwtY29sLXB1c2gtMjIsLmVsLWNvbC1wdXNoLTIzLC5lbC1jb2wtcHVzaC0yNCwuZWwtY29sLXB1c2gtMywuZWwtY29sLXB1c2gtNCwuZWwtY29sLXB1c2gtNSwuZWwtY29sLXB1c2gtNiwuZWwtY29sLXB1c2gtNywuZWwtY29sLXB1c2gtOCwuZWwtY29sLXB1c2gtOSwuZWwtcm93LC5lbC11cGxvYWQtZHJhZ2dlciwuZWwtdXBsb2FkLWxpc3RfX2l0ZW17cG9zaXRpb246cmVsYXRpdmV9LmVsLWxvYWRpbmctc3Bpbm5lciAuZWwtbG9hZGluZy10ZXh0e2NvbG9yOiM0MDlFRkY7bWFyZ2luOjNweCAwO2ZvbnQtc2l6ZToxNHB4fS5lbC1sb2FkaW5nLXNwaW5uZXIgLmNpcmN1bGFye2hlaWdodDo0MnB4O3dpZHRoOjQycHg7LXdlYmtpdC1hbmltYXRpb246bG9hZGluZy1yb3RhdGUgMnMgbGluZWFyIGluZmluaXRlO2FuaW1hdGlvbjpsb2FkaW5nLXJvdGF0ZSAycyBsaW5lYXIgaW5maW5pdGV9LmVsLWxvYWRpbmctc3Bpbm5lciAucGF0aHstd2Via2l0LWFuaW1hdGlvbjpsb2FkaW5nLWRhc2ggMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTthbmltYXRpb246bG9hZGluZy1kYXNoIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7c3Ryb2tlLWRhc2hhcnJheTo5MCwxNTA7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utd2lkdGg6MjtzdHJva2U6IzQwOUVGRjtzdHJva2UtbGluZWNhcDpyb3VuZH0uZWwtbG9hZGluZy1zcGlubmVyIGl7Y29sb3I6IzQwOUVGRn1ALXdlYmtpdC1rZXlmcmFtZXMgbG9hZGluZy1yb3RhdGV7MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgbG9hZGluZy1yb3RhdGV7MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUAtd2Via2l0LWtleWZyYW1lcyBsb2FkaW5nLWRhc2h7MCV7c3Ryb2tlLWRhc2hhcnJheToxLDIwMDtzdHJva2UtZGFzaG9mZnNldDowfTUwJXtzdHJva2UtZGFzaGFycmF5OjkwLDE1MDtzdHJva2UtZGFzaG9mZnNldDotNDBweH0xMDAle3N0cm9rZS1kYXNoYXJyYXk6OTAsMTUwO3N0cm9rZS1kYXNob2Zmc2V0Oi0xMjBweH19QGtleWZyYW1lcyBsb2FkaW5nLWRhc2h7MCV7c3Ryb2tlLWRhc2hhcnJheToxLDIwMDtzdHJva2UtZGFzaG9mZnNldDowfTUwJXtzdHJva2UtZGFzaGFycmF5OjkwLDE1MDtzdHJva2UtZGFzaG9mZnNldDotNDBweH0xMDAle3N0cm9rZS1kYXNoYXJyYXk6OTAsMTUwO3N0cm9rZS1kYXNob2Zmc2V0Oi0xMjBweH19LmVsLXJvd3std2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXJvdzo6YWZ0ZXIsLmVsLXJvdzo6YmVmb3Jle2Rpc3BsYXk6dGFibGV9LmVsLXJvdzo6YWZ0ZXJ7Y2xlYXI6Ym90aH0uZWwtcm93LS1mbGV4e2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9LmVsLWNvbC0wLC5lbC1yb3ctLWZsZXg6YWZ0ZXIsLmVsLXJvdy0tZmxleDpiZWZvcmV7ZGlzcGxheTpub25lfS5lbC1yb3ctLWZsZXguaXMtanVzdGlmeS1jZW50ZXJ7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uZWwtcm93LS1mbGV4LmlzLWp1c3RpZnktZW5key13ZWJraXQtYm94LXBhY2s6ZW5kOy1tcy1mbGV4LXBhY2s6ZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZWwtcm93LS1mbGV4LmlzLWp1c3RpZnktc3BhY2UtYmV0d2Vlbnstd2Via2l0LWJveC1wYWNrOmp1c3RpZnk7LW1zLWZsZXgtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5lbC1yb3ctLWZsZXguaXMtanVzdGlmeS1zcGFjZS1hcm91bmR7LW1zLWZsZXgtcGFjazpkaXN0cmlidXRlO2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmVsLXJvdy0tZmxleC5pcy1hbGlnbi10b3B7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uZWwtcm93LS1mbGV4LmlzLWFsaWduLW1pZGRsZXstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uZWwtcm93LS1mbGV4LmlzLWFsaWduLWJvdHRvbXstd2Via2l0LWJveC1hbGlnbjplbmQ7LW1zLWZsZXgtYWxpZ246ZW5kO2FsaWduLWl0ZW1zOmZsZXgtZW5kfVtjbGFzcyo9ZWwtY29sLV17ZmxvYXQ6bGVmdDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWNvbC0we3dpZHRoOjAlfS5lbC1jb2wtcHVsbC0we3JpZ2h0OjB9LmVsLWNvbC1wdXNoLTB7bGVmdDowfS5lbC1jb2wtMXt3aWR0aDo0LjE2NjY3JX0uZWwtY29sLW9mZnNldC0xe21hcmdpbi1sZWZ0OjQuMTY2NjclfS5lbC1jb2wtcHVsbC0xe3JpZ2h0OjQuMTY2NjclfS5lbC1jb2wtcHVzaC0xe2xlZnQ6NC4xNjY2NyV9LmVsLWNvbC0ye3dpZHRoOjguMzMzMzMlfS5lbC1jb2wtb2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6OC4zMzMzMyV9LmVsLWNvbC1wdWxsLTJ7cmlnaHQ6OC4zMzMzMyV9LmVsLWNvbC1wdXNoLTJ7bGVmdDo4LjMzMzMzJX0uZWwtY29sLTN7d2lkdGg6MTIuNSV9LmVsLWNvbC1vZmZzZXQtM3ttYXJnaW4tbGVmdDoxMi41JX0uZWwtY29sLXB1bGwtM3tyaWdodDoxMi41JX0uZWwtY29sLXB1c2gtM3tsZWZ0OjEyLjUlfS5lbC1jb2wtNHt3aWR0aDoxNi42NjY2NyV9LmVsLWNvbC1vZmZzZXQtNHttYXJnaW4tbGVmdDoxNi42NjY2NyV9LmVsLWNvbC1wdWxsLTR7cmlnaHQ6MTYuNjY2NjclfS5lbC1jb2wtcHVzaC00e2xlZnQ6MTYuNjY2NjclfS5lbC1jb2wtNXt3aWR0aDoyMC44MzMzMyV9LmVsLWNvbC1vZmZzZXQtNXttYXJnaW4tbGVmdDoyMC44MzMzMyV9LmVsLWNvbC1wdWxsLTV7cmlnaHQ6MjAuODMzMzMlfS5lbC1jb2wtcHVzaC01e2xlZnQ6MjAuODMzMzMlfS5lbC1jb2wtNnt3aWR0aDoyNSV9LmVsLWNvbC1vZmZzZXQtNnttYXJnaW4tbGVmdDoyNSV9LmVsLWNvbC1wdWxsLTZ7cmlnaHQ6MjUlfS5lbC1jb2wtcHVzaC02e2xlZnQ6MjUlfS5lbC1jb2wtN3t3aWR0aDoyOS4xNjY2NyV9LmVsLWNvbC1vZmZzZXQtN3ttYXJnaW4tbGVmdDoyOS4xNjY2NyV9LmVsLWNvbC1wdWxsLTd7cmlnaHQ6MjkuMTY2NjclfS5lbC1jb2wtcHVzaC03e2xlZnQ6MjkuMTY2NjclfS5lbC1jb2wtOHt3aWR0aDozMy4zMzMzMyV9LmVsLWNvbC1vZmZzZXQtOHttYXJnaW4tbGVmdDozMy4zMzMzMyV9LmVsLWNvbC1wdWxsLTh7cmlnaHQ6MzMuMzMzMzMlfS5lbC1jb2wtcHVzaC04e2xlZnQ6MzMuMzMzMzMlfS5lbC1jb2wtOXt3aWR0aDozNy41JX0uZWwtY29sLW9mZnNldC05e21hcmdpbi1sZWZ0OjM3LjUlfS5lbC1jb2wtcHVsbC05e3JpZ2h0OjM3LjUlfS5lbC1jb2wtcHVzaC05e2xlZnQ6MzcuNSV9LmVsLWNvbC0xMHt3aWR0aDo0MS42NjY2NyV9LmVsLWNvbC1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6NDEuNjY2NjclfS5lbC1jb2wtcHVsbC0xMHtyaWdodDo0MS42NjY2NyV9LmVsLWNvbC1wdXNoLTEwe2xlZnQ6NDEuNjY2NjclfS5lbC1jb2wtMTF7d2lkdGg6NDUuODMzMzMlfS5lbC1jb2wtb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLXB1bGwtMTF7cmlnaHQ6NDUuODMzMzMlfS5lbC1jb2wtcHVzaC0xMXtsZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLTEye3dpZHRoOjUwJX0uZWwtY29sLW9mZnNldC0xMnttYXJnaW4tbGVmdDo1MCV9LmVsLWNvbC1wdWxsLTEye3JpZ2h0OjUwJX0uZWwtY29sLXB1c2gtMTJ7bGVmdDo1MCV9LmVsLWNvbC0xM3t3aWR0aDo1NC4xNjY2NyV9LmVsLWNvbC1vZmZzZXQtMTN7bWFyZ2luLWxlZnQ6NTQuMTY2NjclfS5lbC1jb2wtcHVsbC0xM3tyaWdodDo1NC4xNjY2NyV9LmVsLWNvbC1wdXNoLTEze2xlZnQ6NTQuMTY2NjclfS5lbC1jb2wtMTR7d2lkdGg6NTguMzMzMzMlfS5lbC1jb2wtb2Zmc2V0LTE0e21hcmdpbi1sZWZ0OjU4LjMzMzMzJX0uZWwtY29sLXB1bGwtMTR7cmlnaHQ6NTguMzMzMzMlfS5lbC1jb2wtcHVzaC0xNHtsZWZ0OjU4LjMzMzMzJX0uZWwtY29sLTE1e3dpZHRoOjYyLjUlfS5lbC1jb2wtb2Zmc2V0LTE1e21hcmdpbi1sZWZ0OjYyLjUlfS5lbC1jb2wtcHVsbC0xNXtyaWdodDo2Mi41JX0uZWwtY29sLXB1c2gtMTV7bGVmdDo2Mi41JX0uZWwtY29sLTE2e3dpZHRoOjY2LjY2NjY3JX0uZWwtY29sLW9mZnNldC0xNnttYXJnaW4tbGVmdDo2Ni42NjY2NyV9LmVsLWNvbC1wdWxsLTE2e3JpZ2h0OjY2LjY2NjY3JX0uZWwtY29sLXB1c2gtMTZ7bGVmdDo2Ni42NjY2NyV9LmVsLWNvbC0xN3t3aWR0aDo3MC44MzMzMyV9LmVsLWNvbC1vZmZzZXQtMTd7bWFyZ2luLWxlZnQ6NzAuODMzMzMlfS5lbC1jb2wtcHVsbC0xN3tyaWdodDo3MC44MzMzMyV9LmVsLWNvbC1wdXNoLTE3e2xlZnQ6NzAuODMzMzMlfS5lbC1jb2wtMTh7d2lkdGg6NzUlfS5lbC1jb2wtb2Zmc2V0LTE4e21hcmdpbi1sZWZ0Ojc1JX0uZWwtY29sLXB1bGwtMTh7cmlnaHQ6NzUlfS5lbC1jb2wtcHVzaC0xOHtsZWZ0Ojc1JX0uZWwtY29sLTE5e3dpZHRoOjc5LjE2NjY3JX0uZWwtY29sLW9mZnNldC0xOXttYXJnaW4tbGVmdDo3OS4xNjY2NyV9LmVsLWNvbC1wdWxsLTE5e3JpZ2h0Ojc5LjE2NjY3JX0uZWwtY29sLXB1c2gtMTl7bGVmdDo3OS4xNjY2NyV9LmVsLWNvbC0yMHt3aWR0aDo4My4zMzMzMyV9LmVsLWNvbC1vZmZzZXQtMjB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMlfS5lbC1jb2wtcHVsbC0yMHtyaWdodDo4My4zMzMzMyV9LmVsLWNvbC1wdXNoLTIwe2xlZnQ6ODMuMzMzMzMlfS5lbC1jb2wtMjF7d2lkdGg6ODcuNSV9LmVsLWNvbC1vZmZzZXQtMjF7bWFyZ2luLWxlZnQ6ODcuNSV9LmVsLWNvbC1wdWxsLTIxe3JpZ2h0Ojg3LjUlfS5lbC1jb2wtcHVzaC0yMXtsZWZ0Ojg3LjUlfS5lbC1jb2wtMjJ7d2lkdGg6OTEuNjY2NjclfS5lbC1jb2wtb2Zmc2V0LTIye21hcmdpbi1sZWZ0OjkxLjY2NjY3JX0uZWwtY29sLXB1bGwtMjJ7cmlnaHQ6OTEuNjY2NjclfS5lbC1jb2wtcHVzaC0yMntsZWZ0OjkxLjY2NjY3JX0uZWwtY29sLTIze3dpZHRoOjk1LjgzMzMzJX0uZWwtY29sLW9mZnNldC0yM3ttYXJnaW4tbGVmdDo5NS44MzMzMyV9LmVsLWNvbC1wdWxsLTIze3JpZ2h0Ojk1LjgzMzMzJX0uZWwtY29sLXB1c2gtMjN7bGVmdDo5NS44MzMzMyV9LmVsLWNvbC0yNHt3aWR0aDoxMDAlfS5lbC1jb2wtb2Zmc2V0LTI0e21hcmdpbi1sZWZ0OjEwMCV9LmVsLWNvbC1wdWxsLTI0e3JpZ2h0OjEwMCV9LmVsLWNvbC1wdXNoLTI0e2xlZnQ6MTAwJX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpey5lbC1jb2wteHMtMHtkaXNwbGF5Om5vbmU7d2lkdGg6MCV9LmVsLWNvbC14cy1vZmZzZXQtMHttYXJnaW4tbGVmdDowfS5lbC1jb2wteHMtcHVsbC0we3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjB9LmVsLWNvbC14cy1wdXNoLTB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDowfS5lbC1jb2wteHMtMXt3aWR0aDo0LjE2NjY3JX0uZWwtY29sLXhzLW9mZnNldC0xe21hcmdpbi1sZWZ0OjQuMTY2NjclfS5lbC1jb2wteHMtcHVsbC0xe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQuMTY2NjclfS5lbC1jb2wteHMtcHVzaC0xe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NC4xNjY2NyV9LmVsLWNvbC14cy0ye3dpZHRoOjguMzMzMzMlfS5lbC1jb2wteHMtb2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6OC4zMzMzMyV9LmVsLWNvbC14cy1wdWxsLTJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OC4zMzMzMyV9LmVsLWNvbC14cy1wdXNoLTJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4LjMzMzMzJX0uZWwtY29sLXhzLTN7d2lkdGg6MTIuNSV9LmVsLWNvbC14cy1vZmZzZXQtM3ttYXJnaW4tbGVmdDoxMi41JX0uZWwtY29sLXhzLXB1bGwtM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxMi41JX0uZWwtY29sLXhzLXB1c2gtM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjEyLjUlfS5lbC1jb2wteHMtNHt3aWR0aDoxNi42NjY2NyV9LmVsLWNvbC14cy1vZmZzZXQtNHttYXJnaW4tbGVmdDoxNi42NjY2NyV9LmVsLWNvbC14cy1wdWxsLTR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTYuNjY2NjclfS5lbC1jb2wteHMtcHVzaC00e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTYuNjY2NjclfS5lbC1jb2wteHMtNXt3aWR0aDoyMC44MzMzMyV9LmVsLWNvbC14cy1vZmZzZXQtNXttYXJnaW4tbGVmdDoyMC44MzMzMyV9LmVsLWNvbC14cy1wdWxsLTV7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjAuODMzMzMlfS5lbC1jb2wteHMtcHVzaC01e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjAuODMzMzMlfS5lbC1jb2wteHMtNnt3aWR0aDoyNSV9LmVsLWNvbC14cy1vZmZzZXQtNnttYXJnaW4tbGVmdDoyNSV9LmVsLWNvbC14cy1wdWxsLTZ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjUlfS5lbC1jb2wteHMtcHVzaC02e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjUlfS5lbC1jb2wteHMtN3t3aWR0aDoyOS4xNjY2NyV9LmVsLWNvbC14cy1vZmZzZXQtN3ttYXJnaW4tbGVmdDoyOS4xNjY2NyV9LmVsLWNvbC14cy1wdWxsLTd7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjkuMTY2NjclfS5lbC1jb2wteHMtcHVzaC03e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjkuMTY2NjclfS5lbC1jb2wteHMtOHt3aWR0aDozMy4zMzMzMyV9LmVsLWNvbC14cy1vZmZzZXQtOHttYXJnaW4tbGVmdDozMy4zMzMzMyV9LmVsLWNvbC14cy1wdWxsLTh7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MzMuMzMzMzMlfS5lbC1jb2wteHMtcHVzaC04e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MzMuMzMzMzMlfS5lbC1jb2wteHMtOXt3aWR0aDozNy41JX0uZWwtY29sLXhzLW9mZnNldC05e21hcmdpbi1sZWZ0OjM3LjUlfS5lbC1jb2wteHMtcHVsbC05e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjM3LjUlfS5lbC1jb2wteHMtcHVzaC05e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MzcuNSV9LmVsLWNvbC14cy0xMHt3aWR0aDo0MS42NjY2NyV9LmVsLWNvbC14cy1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6NDEuNjY2NjclfS5lbC1jb2wteHMtcHVsbC0xMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0MS42NjY2NyV9LmVsLWNvbC14cy1wdXNoLTEwe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NDEuNjY2NjclfS5lbC1jb2wteHMtMTF7d2lkdGg6NDUuODMzMzMlfS5lbC1jb2wteHMtb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLXhzLXB1bGwtMTF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NDUuODMzMzMlfS5lbC1jb2wteHMtcHVzaC0xMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLXhzLTEye3dpZHRoOjUwJX0uZWwtY29sLXhzLW9mZnNldC0xMnttYXJnaW4tbGVmdDo1MCV9LmVsLWNvbC14cy1wdWxsLTEye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjUwJX0uZWwtY29sLXhzLXB1c2gtMTJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1MCV9LmVsLWNvbC14cy0xM3t3aWR0aDo1NC4xNjY2NyV9LmVsLWNvbC14cy1vZmZzZXQtMTN7bWFyZ2luLWxlZnQ6NTQuMTY2NjclfS5lbC1jb2wteHMtcHVsbC0xM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1NC4xNjY2NyV9LmVsLWNvbC14cy1wdXNoLTEze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTQuMTY2NjclfS5lbC1jb2wteHMtMTR7d2lkdGg6NTguMzMzMzMlfS5lbC1jb2wteHMtb2Zmc2V0LTE0e21hcmdpbi1sZWZ0OjU4LjMzMzMzJX0uZWwtY29sLXhzLXB1bGwtMTR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTguMzMzMzMlfS5lbC1jb2wteHMtcHVzaC0xNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjU4LjMzMzMzJX0uZWwtY29sLXhzLTE1e3dpZHRoOjYyLjUlfS5lbC1jb2wteHMtb2Zmc2V0LTE1e21hcmdpbi1sZWZ0OjYyLjUlfS5lbC1jb2wteHMtcHVsbC0xNXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo2Mi41JX0uZWwtY29sLXhzLXB1c2gtMTV7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo2Mi41JX0uZWwtY29sLXhzLTE2e3dpZHRoOjY2LjY2NjY3JX0uZWwtY29sLXhzLW9mZnNldC0xNnttYXJnaW4tbGVmdDo2Ni42NjY2NyV9LmVsLWNvbC14cy1wdWxsLTE2e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjY2LjY2NjY3JX0uZWwtY29sLXhzLXB1c2gtMTZ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo2Ni42NjY2NyV9LmVsLWNvbC14cy0xN3t3aWR0aDo3MC44MzMzMyV9LmVsLWNvbC14cy1vZmZzZXQtMTd7bWFyZ2luLWxlZnQ6NzAuODMzMzMlfS5lbC1jb2wteHMtcHVsbC0xN3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3MC44MzMzMyV9LmVsLWNvbC14cy1wdXNoLTE3e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzAuODMzMzMlfS5lbC1jb2wteHMtMTh7d2lkdGg6NzUlfS5lbC1jb2wteHMtb2Zmc2V0LTE4e21hcmdpbi1sZWZ0Ojc1JX0uZWwtY29sLXhzLXB1bGwtMTh7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzUlfS5lbC1jb2wteHMtcHVzaC0xOHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojc1JX0uZWwtY29sLXhzLTE5e3dpZHRoOjc5LjE2NjY3JX0uZWwtY29sLXhzLW9mZnNldC0xOXttYXJnaW4tbGVmdDo3OS4xNjY2NyV9LmVsLWNvbC14cy1wdWxsLTE5e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojc5LjE2NjY3JX0uZWwtY29sLXhzLXB1c2gtMTl7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3OS4xNjY2NyV9LmVsLWNvbC14cy0yMHt3aWR0aDo4My4zMzMzMyV9LmVsLWNvbC14cy1vZmZzZXQtMjB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMlfS5lbC1jb2wteHMtcHVsbC0yMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4My4zMzMzMyV9LmVsLWNvbC14cy1wdXNoLTIwe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6ODMuMzMzMzMlfS5lbC1jb2wteHMtMjF7d2lkdGg6ODcuNSV9LmVsLWNvbC14cy1vZmZzZXQtMjF7bWFyZ2luLWxlZnQ6ODcuNSV9LmVsLWNvbC14cy1wdWxsLTIxe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojg3LjUlfS5lbC1jb2wteHMtcHVzaC0yMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojg3LjUlfS5lbC1jb2wteHMtMjJ7d2lkdGg6OTEuNjY2NjclfS5lbC1jb2wteHMtb2Zmc2V0LTIye21hcmdpbi1sZWZ0OjkxLjY2NjY3JX0uZWwtY29sLXhzLXB1bGwtMjJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OTEuNjY2NjclfS5lbC1jb2wteHMtcHVzaC0yMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjkxLjY2NjY3JX0uZWwtY29sLXhzLTIze3dpZHRoOjk1LjgzMzMzJX0uZWwtY29sLXhzLW9mZnNldC0yM3ttYXJnaW4tbGVmdDo5NS44MzMzMyV9LmVsLWNvbC14cy1wdWxsLTIze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojk1LjgzMzMzJX0uZWwtY29sLXhzLXB1c2gtMjN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo5NS44MzMzMyV9LmVsLWNvbC14cy0yNHt3aWR0aDoxMDAlfS5lbC1jb2wteHMtb2Zmc2V0LTI0e21hcmdpbi1sZWZ0OjEwMCV9LmVsLWNvbC14cy1wdWxsLTI0e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjEwMCV9LmVsLWNvbC14cy1wdXNoLTI0e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTAwJX19QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KXsuZWwtY29sLXNtLTB7ZGlzcGxheTpub25lO3dpZHRoOjAlfS5lbC1jb2wtc20tb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH0uZWwtY29sLXNtLXB1bGwtMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDowfS5lbC1jb2wtc20tcHVzaC0we3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MH0uZWwtY29sLXNtLTF7d2lkdGg6NC4xNjY2NyV9LmVsLWNvbC1zbS1vZmZzZXQtMXttYXJnaW4tbGVmdDo0LjE2NjY3JX0uZWwtY29sLXNtLXB1bGwtMXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0LjE2NjY3JX0uZWwtY29sLXNtLXB1c2gtMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQuMTY2NjclfS5lbC1jb2wtc20tMnt3aWR0aDo4LjMzMzMzJX0uZWwtY29sLXNtLW9mZnNldC0ye21hcmdpbi1sZWZ0OjguMzMzMzMlfS5lbC1jb2wtc20tcHVsbC0ye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjguMzMzMzMlfS5lbC1jb2wtc20tcHVzaC0ye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6OC4zMzMzMyV9LmVsLWNvbC1zbS0ze3dpZHRoOjEyLjUlfS5lbC1jb2wtc20tb2Zmc2V0LTN7bWFyZ2luLWxlZnQ6MTIuNSV9LmVsLWNvbC1zbS1wdWxsLTN7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTIuNSV9LmVsLWNvbC1zbS1wdXNoLTN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoxMi41JX0uZWwtY29sLXNtLTR7d2lkdGg6MTYuNjY2NjclfS5lbC1jb2wtc20tb2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MTYuNjY2NjclfS5lbC1jb2wtc20tcHVsbC00e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjE2LjY2NjY3JX0uZWwtY29sLXNtLXB1c2gtNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjE2LjY2NjY3JX0uZWwtY29sLXNtLTV7d2lkdGg6MjAuODMzMzMlfS5lbC1jb2wtc20tb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6MjAuODMzMzMlfS5lbC1jb2wtc20tcHVsbC01e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjIwLjgzMzMzJX0uZWwtY29sLXNtLXB1c2gtNXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjIwLjgzMzMzJX0uZWwtY29sLXNtLTZ7d2lkdGg6MjUlfS5lbC1jb2wtc20tb2Zmc2V0LTZ7bWFyZ2luLWxlZnQ6MjUlfS5lbC1jb2wtc20tcHVsbC02e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjI1JX0uZWwtY29sLXNtLXB1c2gtNntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjI1JX0uZWwtY29sLXNtLTd7d2lkdGg6MjkuMTY2NjclfS5lbC1jb2wtc20tb2Zmc2V0LTd7bWFyZ2luLWxlZnQ6MjkuMTY2NjclfS5lbC1jb2wtc20tcHVsbC03e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjI5LjE2NjY3JX0uZWwtY29sLXNtLXB1c2gtN3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjI5LjE2NjY3JX0uZWwtY29sLXNtLTh7d2lkdGg6MzMuMzMzMzMlfS5lbC1jb2wtc20tb2Zmc2V0LTh7bWFyZ2luLWxlZnQ6MzMuMzMzMzMlfS5lbC1jb2wtc20tcHVsbC04e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjMzLjMzMzMzJX0uZWwtY29sLXNtLXB1c2gtOHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjMzLjMzMzMzJX0uZWwtY29sLXNtLTl7d2lkdGg6MzcuNSV9LmVsLWNvbC1zbS1vZmZzZXQtOXttYXJnaW4tbGVmdDozNy41JX0uZWwtY29sLXNtLXB1bGwtOXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDozNy41JX0uZWwtY29sLXNtLXB1c2gtOXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjM3LjUlfS5lbC1jb2wtc20tMTB7d2lkdGg6NDEuNjY2NjclfS5lbC1jb2wtc20tb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjQxLjY2NjY3JX0uZWwtY29sLXNtLXB1bGwtMTB7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NDEuNjY2NjclfS5lbC1jb2wtc20tcHVzaC0xMHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQxLjY2NjY3JX0uZWwtY29sLXNtLTExe3dpZHRoOjQ1LjgzMzMzJX0uZWwtY29sLXNtLW9mZnNldC0xMXttYXJnaW4tbGVmdDo0NS44MzMzMyV9LmVsLWNvbC1zbS1wdWxsLTExe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQ1LjgzMzMzJX0uZWwtY29sLXNtLXB1c2gtMTF7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo0NS44MzMzMyV9LmVsLWNvbC1zbS0xMnt3aWR0aDo1MCV9LmVsLWNvbC1zbS1vZmZzZXQtMTJ7bWFyZ2luLWxlZnQ6NTAlfS5lbC1jb2wtc20tcHVsbC0xMntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1MCV9LmVsLWNvbC1zbS1wdXNoLTEye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTAlfS5lbC1jb2wtc20tMTN7d2lkdGg6NTQuMTY2NjclfS5lbC1jb2wtc20tb2Zmc2V0LTEze21hcmdpbi1sZWZ0OjU0LjE2NjY3JX0uZWwtY29sLXNtLXB1bGwtMTN7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTQuMTY2NjclfS5lbC1jb2wtc20tcHVzaC0xM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjU0LjE2NjY3JX0uZWwtY29sLXNtLTE0e3dpZHRoOjU4LjMzMzMzJX0uZWwtY29sLXNtLW9mZnNldC0xNHttYXJnaW4tbGVmdDo1OC4zMzMzMyV9LmVsLWNvbC1zbS1wdWxsLTE0e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjU4LjMzMzMzJX0uZWwtY29sLXNtLXB1c2gtMTR7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1OC4zMzMzMyV9LmVsLWNvbC1zbS0xNXt3aWR0aDo2Mi41JX0uZWwtY29sLXNtLW9mZnNldC0xNXttYXJnaW4tbGVmdDo2Mi41JX0uZWwtY29sLXNtLXB1bGwtMTV7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NjIuNSV9LmVsLWNvbC1zbS1wdXNoLTE1e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NjIuNSV9LmVsLWNvbC1zbS0xNnt3aWR0aDo2Ni42NjY2NyV9LmVsLWNvbC1zbS1vZmZzZXQtMTZ7bWFyZ2luLWxlZnQ6NjYuNjY2NjclfS5lbC1jb2wtc20tcHVsbC0xNntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo2Ni42NjY2NyV9LmVsLWNvbC1zbS1wdXNoLTE2e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NjYuNjY2NjclfS5lbC1jb2wtc20tMTd7d2lkdGg6NzAuODMzMzMlfS5lbC1jb2wtc20tb2Zmc2V0LTE3e21hcmdpbi1sZWZ0OjcwLjgzMzMzJX0uZWwtY29sLXNtLXB1bGwtMTd7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzAuODMzMzMlfS5lbC1jb2wtc20tcHVzaC0xN3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjcwLjgzMzMzJX0uZWwtY29sLXNtLTE4e3dpZHRoOjc1JX0uZWwtY29sLXNtLW9mZnNldC0xOHttYXJnaW4tbGVmdDo3NSV9LmVsLWNvbC1zbS1wdWxsLTE4e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojc1JX0uZWwtY29sLXNtLXB1c2gtMTh7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3NSV9LmVsLWNvbC1zbS0xOXt3aWR0aDo3OS4xNjY2NyV9LmVsLWNvbC1zbS1vZmZzZXQtMTl7bWFyZ2luLWxlZnQ6NzkuMTY2NjclfS5lbC1jb2wtc20tcHVsbC0xOXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3OS4xNjY2NyV9LmVsLWNvbC1zbS1wdXNoLTE5e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzkuMTY2NjclfS5lbC1jb2wtc20tMjB7d2lkdGg6ODMuMzMzMzMlfS5lbC1jb2wtc20tb2Zmc2V0LTIwe21hcmdpbi1sZWZ0OjgzLjMzMzMzJX0uZWwtY29sLXNtLXB1bGwtMjB7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6ODMuMzMzMzMlfS5lbC1jb2wtc20tcHVzaC0yMHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjgzLjMzMzMzJX0uZWwtY29sLXNtLTIxe3dpZHRoOjg3LjUlfS5lbC1jb2wtc20tb2Zmc2V0LTIxe21hcmdpbi1sZWZ0Ojg3LjUlfS5lbC1jb2wtc20tcHVsbC0yMXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4Ny41JX0uZWwtY29sLXNtLXB1c2gtMjF7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4Ny41JX0uZWwtY29sLXNtLTIye3dpZHRoOjkxLjY2NjY3JX0uZWwtY29sLXNtLW9mZnNldC0yMnttYXJnaW4tbGVmdDo5MS42NjY2NyV9LmVsLWNvbC1zbS1wdWxsLTIye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjkxLjY2NjY3JX0uZWwtY29sLXNtLXB1c2gtMjJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo5MS42NjY2NyV9LmVsLWNvbC1zbS0yM3t3aWR0aDo5NS44MzMzMyV9LmVsLWNvbC1zbS1vZmZzZXQtMjN7bWFyZ2luLWxlZnQ6OTUuODMzMzMlfS5lbC1jb2wtc20tcHVsbC0yM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo5NS44MzMzMyV9LmVsLWNvbC1zbS1wdXNoLTIze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6OTUuODMzMzMlfS5lbC1jb2wtc20tMjR7d2lkdGg6MTAwJX0uZWwtY29sLXNtLW9mZnNldC0yNHttYXJnaW4tbGVmdDoxMDAlfS5lbC1jb2wtc20tcHVsbC0yNHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxMDAlfS5lbC1jb2wtc20tcHVzaC0yNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjEwMCV9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo5OTJweCl7LmVsLWNvbC1tZC0we2Rpc3BsYXk6bm9uZTt3aWR0aDowJX0uZWwtY29sLW1kLW9mZnNldC0we21hcmdpbi1sZWZ0OjB9LmVsLWNvbC1tZC1wdWxsLTB7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MH0uZWwtY29sLW1kLXB1c2gtMHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjB9LmVsLWNvbC1tZC0xe3dpZHRoOjQuMTY2NjclfS5lbC1jb2wtbWQtb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6NC4xNjY2NyV9LmVsLWNvbC1tZC1wdWxsLTF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NC4xNjY2NyV9LmVsLWNvbC1tZC1wdXNoLTF7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo0LjE2NjY3JX0uZWwtY29sLW1kLTJ7d2lkdGg6OC4zMzMzMyV9LmVsLWNvbC1tZC1vZmZzZXQtMnttYXJnaW4tbGVmdDo4LjMzMzMzJX0uZWwtY29sLW1kLXB1bGwtMntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4LjMzMzMzJX0uZWwtY29sLW1kLXB1c2gtMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjguMzMzMzMlfS5lbC1jb2wtbWQtM3t3aWR0aDoxMi41JX0uZWwtY29sLW1kLW9mZnNldC0ze21hcmdpbi1sZWZ0OjEyLjUlfS5lbC1jb2wtbWQtcHVsbC0ze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjEyLjUlfS5lbC1jb2wtbWQtcHVzaC0ze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTIuNSV9LmVsLWNvbC1tZC00e3dpZHRoOjE2LjY2NjY3JX0uZWwtY29sLW1kLW9mZnNldC00e21hcmdpbi1sZWZ0OjE2LjY2NjY3JX0uZWwtY29sLW1kLXB1bGwtNHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxNi42NjY2NyV9LmVsLWNvbC1tZC1wdXNoLTR7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoxNi42NjY2NyV9LmVsLWNvbC1tZC01e3dpZHRoOjIwLjgzMzMzJX0uZWwtY29sLW1kLW9mZnNldC01e21hcmdpbi1sZWZ0OjIwLjgzMzMzJX0uZWwtY29sLW1kLXB1bGwtNXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoyMC44MzMzMyV9LmVsLWNvbC1tZC1wdXNoLTV7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoyMC44MzMzMyV9LmVsLWNvbC1tZC02e3dpZHRoOjI1JX0uZWwtY29sLW1kLW9mZnNldC02e21hcmdpbi1sZWZ0OjI1JX0uZWwtY29sLW1kLXB1bGwtNntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoyNSV9LmVsLWNvbC1tZC1wdXNoLTZ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoyNSV9LmVsLWNvbC1tZC03e3dpZHRoOjI5LjE2NjY3JX0uZWwtY29sLW1kLW9mZnNldC03e21hcmdpbi1sZWZ0OjI5LjE2NjY3JX0uZWwtY29sLW1kLXB1bGwtN3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoyOS4xNjY2NyV9LmVsLWNvbC1tZC1wdXNoLTd7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoyOS4xNjY2NyV9LmVsLWNvbC1tZC04e3dpZHRoOjMzLjMzMzMzJX0uZWwtY29sLW1kLW9mZnNldC04e21hcmdpbi1sZWZ0OjMzLjMzMzMzJX0uZWwtY29sLW1kLXB1bGwtOHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDozMy4zMzMzMyV9LmVsLWNvbC1tZC1wdXNoLTh7cG9zaXRpb246cmVsYXRpdmU7bGVmdDozMy4zMzMzMyV9LmVsLWNvbC1tZC05e3dpZHRoOjM3LjUlfS5lbC1jb2wtbWQtb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6MzcuNSV9LmVsLWNvbC1tZC1wdWxsLTl7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MzcuNSV9LmVsLWNvbC1tZC1wdXNoLTl7cG9zaXRpb246cmVsYXRpdmU7bGVmdDozNy41JX0uZWwtY29sLW1kLTEwe3dpZHRoOjQxLjY2NjY3JX0uZWwtY29sLW1kLW9mZnNldC0xMHttYXJnaW4tbGVmdDo0MS42NjY2NyV9LmVsLWNvbC1tZC1wdWxsLTEwe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQxLjY2NjY3JX0uZWwtY29sLW1kLXB1c2gtMTB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo0MS42NjY2NyV9LmVsLWNvbC1tZC0xMXt3aWR0aDo0NS44MzMzMyV9LmVsLWNvbC1tZC1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6NDUuODMzMzMlfS5lbC1jb2wtbWQtcHVsbC0xMXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0NS44MzMzMyV9LmVsLWNvbC1tZC1wdXNoLTExe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NDUuODMzMzMlfS5lbC1jb2wtbWQtMTJ7d2lkdGg6NTAlfS5lbC1jb2wtbWQtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjUwJX0uZWwtY29sLW1kLXB1bGwtMTJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTAlfS5lbC1jb2wtbWQtcHVzaC0xMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjUwJX0uZWwtY29sLW1kLTEze3dpZHRoOjU0LjE2NjY3JX0uZWwtY29sLW1kLW9mZnNldC0xM3ttYXJnaW4tbGVmdDo1NC4xNjY2NyV9LmVsLWNvbC1tZC1wdWxsLTEze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjU0LjE2NjY3JX0uZWwtY29sLW1kLXB1c2gtMTN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1NC4xNjY2NyV9LmVsLWNvbC1tZC0xNHt3aWR0aDo1OC4zMzMzMyV9LmVsLWNvbC1tZC1vZmZzZXQtMTR7bWFyZ2luLWxlZnQ6NTguMzMzMzMlfS5lbC1jb2wtbWQtcHVsbC0xNHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1OC4zMzMzMyV9LmVsLWNvbC1tZC1wdXNoLTE0e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTguMzMzMzMlfS5lbC1jb2wtbWQtMTV7d2lkdGg6NjIuNSV9LmVsLWNvbC1tZC1vZmZzZXQtMTV7bWFyZ2luLWxlZnQ6NjIuNSV9LmVsLWNvbC1tZC1wdWxsLTE1e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjYyLjUlfS5lbC1jb2wtbWQtcHVzaC0xNXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjYyLjUlfS5lbC1jb2wtbWQtMTZ7d2lkdGg6NjYuNjY2NjclfS5lbC1jb2wtbWQtb2Zmc2V0LTE2e21hcmdpbi1sZWZ0OjY2LjY2NjY3JX0uZWwtY29sLW1kLXB1bGwtMTZ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NjYuNjY2NjclfS5lbC1jb2wtbWQtcHVzaC0xNntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjY2LjY2NjY3JX0uZWwtY29sLW1kLTE3e3dpZHRoOjcwLjgzMzMzJX0uZWwtY29sLW1kLW9mZnNldC0xN3ttYXJnaW4tbGVmdDo3MC44MzMzMyV9LmVsLWNvbC1tZC1wdWxsLTE3e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjcwLjgzMzMzJX0uZWwtY29sLW1kLXB1c2gtMTd7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3MC44MzMzMyV9LmVsLWNvbC1tZC0xOHt3aWR0aDo3NSV9LmVsLWNvbC1tZC1vZmZzZXQtMTh7bWFyZ2luLWxlZnQ6NzUlfS5lbC1jb2wtbWQtcHVsbC0xOHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3NSV9LmVsLWNvbC1tZC1wdXNoLTE4e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzUlfS5lbC1jb2wtbWQtMTl7d2lkdGg6NzkuMTY2NjclfS5lbC1jb2wtbWQtb2Zmc2V0LTE5e21hcmdpbi1sZWZ0Ojc5LjE2NjY3JX0uZWwtY29sLW1kLXB1bGwtMTl7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzkuMTY2NjclfS5lbC1jb2wtbWQtcHVzaC0xOXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojc5LjE2NjY3JX0uZWwtY29sLW1kLTIwe3dpZHRoOjgzLjMzMzMzJX0uZWwtY29sLW1kLW9mZnNldC0yMHttYXJnaW4tbGVmdDo4My4zMzMzMyV9LmVsLWNvbC1tZC1wdWxsLTIwe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjgzLjMzMzMzJX0uZWwtY29sLW1kLXB1c2gtMjB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4My4zMzMzMyV9LmVsLWNvbC1tZC0yMXt3aWR0aDo4Ny41JX0uZWwtY29sLW1kLW9mZnNldC0yMXttYXJnaW4tbGVmdDo4Ny41JX0uZWwtY29sLW1kLXB1bGwtMjF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6ODcuNSV9LmVsLWNvbC1tZC1wdXNoLTIxe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6ODcuNSV9LmVsLWNvbC1tZC0yMnt3aWR0aDo5MS42NjY2NyV9LmVsLWNvbC1tZC1vZmZzZXQtMjJ7bWFyZ2luLWxlZnQ6OTEuNjY2NjclfS5lbC1jb2wtbWQtcHVsbC0yMntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo5MS42NjY2NyV9LmVsLWNvbC1tZC1wdXNoLTIye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6OTEuNjY2NjclfS5lbC1jb2wtbWQtMjN7d2lkdGg6OTUuODMzMzMlfS5lbC1jb2wtbWQtb2Zmc2V0LTIze21hcmdpbi1sZWZ0Ojk1LjgzMzMzJX0uZWwtY29sLW1kLXB1bGwtMjN7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OTUuODMzMzMlfS5lbC1jb2wtbWQtcHVzaC0yM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojk1LjgzMzMzJX0uZWwtY29sLW1kLTI0e3dpZHRoOjEwMCV9LmVsLWNvbC1tZC1vZmZzZXQtMjR7bWFyZ2luLWxlZnQ6MTAwJX0uZWwtY29sLW1kLXB1bGwtMjR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTAwJX0uZWwtY29sLW1kLXB1c2gtMjR7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoxMDAlfX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTIwMHB4KXsuZWwtY29sLWxnLTB7ZGlzcGxheTpub25lO3dpZHRoOjAlfS5lbC1jb2wtbGctb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH0uZWwtY29sLWxnLXB1bGwtMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDowfS5lbC1jb2wtbGctcHVzaC0we3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MH0uZWwtY29sLWxnLTF7d2lkdGg6NC4xNjY2NyV9LmVsLWNvbC1sZy1vZmZzZXQtMXttYXJnaW4tbGVmdDo0LjE2NjY3JX0uZWwtY29sLWxnLXB1bGwtMXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0LjE2NjY3JX0uZWwtY29sLWxnLXB1c2gtMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQuMTY2NjclfS5lbC1jb2wtbGctMnt3aWR0aDo4LjMzMzMzJX0uZWwtY29sLWxnLW9mZnNldC0ye21hcmdpbi1sZWZ0OjguMzMzMzMlfS5lbC1jb2wtbGctcHVsbC0ye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjguMzMzMzMlfS5lbC1jb2wtbGctcHVzaC0ye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6OC4zMzMzMyV9LmVsLWNvbC1sZy0ze3dpZHRoOjEyLjUlfS5lbC1jb2wtbGctb2Zmc2V0LTN7bWFyZ2luLWxlZnQ6MTIuNSV9LmVsLWNvbC1sZy1wdWxsLTN7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTIuNSV9LmVsLWNvbC1sZy1wdXNoLTN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDoxMi41JX0uZWwtY29sLWxnLTR7d2lkdGg6MTYuNjY2NjclfS5lbC1jb2wtbGctb2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MTYuNjY2NjclfS5lbC1jb2wtbGctcHVsbC00e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjE2LjY2NjY3JX0uZWwtY29sLWxnLXB1c2gtNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjE2LjY2NjY3JX0uZWwtY29sLWxnLTV7d2lkdGg6MjAuODMzMzMlfS5lbC1jb2wtbGctb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6MjAuODMzMzMlfS5lbC1jb2wtbGctcHVsbC01e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjIwLjgzMzMzJX0uZWwtY29sLWxnLXB1c2gtNXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjIwLjgzMzMzJX0uZWwtY29sLWxnLTZ7d2lkdGg6MjUlfS5lbC1jb2wtbGctb2Zmc2V0LTZ7bWFyZ2luLWxlZnQ6MjUlfS5lbC1jb2wtbGctcHVsbC02e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjI1JX0uZWwtY29sLWxnLXB1c2gtNntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjI1JX0uZWwtY29sLWxnLTd7d2lkdGg6MjkuMTY2NjclfS5lbC1jb2wtbGctb2Zmc2V0LTd7bWFyZ2luLWxlZnQ6MjkuMTY2NjclfS5lbC1jb2wtbGctcHVsbC03e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjI5LjE2NjY3JX0uZWwtY29sLWxnLXB1c2gtN3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjI5LjE2NjY3JX0uZWwtY29sLWxnLTh7d2lkdGg6MzMuMzMzMzMlfS5lbC1jb2wtbGctb2Zmc2V0LTh7bWFyZ2luLWxlZnQ6MzMuMzMzMzMlfS5lbC1jb2wtbGctcHVsbC04e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjMzLjMzMzMzJX0uZWwtY29sLWxnLXB1c2gtOHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjMzLjMzMzMzJX0uZWwtY29sLWxnLTl7d2lkdGg6MzcuNSV9LmVsLWNvbC1sZy1vZmZzZXQtOXttYXJnaW4tbGVmdDozNy41JX0uZWwtY29sLWxnLXB1bGwtOXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDozNy41JX0uZWwtY29sLWxnLXB1c2gtOXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjM3LjUlfS5lbC1jb2wtbGctMTB7d2lkdGg6NDEuNjY2NjclfS5lbC1jb2wtbGctb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjQxLjY2NjY3JX0uZWwtY29sLWxnLXB1bGwtMTB7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NDEuNjY2NjclfS5lbC1jb2wtbGctcHVzaC0xMHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQxLjY2NjY3JX0uZWwtY29sLWxnLTExe3dpZHRoOjQ1LjgzMzMzJX0uZWwtY29sLWxnLW9mZnNldC0xMXttYXJnaW4tbGVmdDo0NS44MzMzMyV9LmVsLWNvbC1sZy1wdWxsLTExe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQ1LjgzMzMzJX0uZWwtY29sLWxnLXB1c2gtMTF7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo0NS44MzMzMyV9LmVsLWNvbC1sZy0xMnt3aWR0aDo1MCV9LmVsLWNvbC1sZy1vZmZzZXQtMTJ7bWFyZ2luLWxlZnQ6NTAlfS5lbC1jb2wtbGctcHVsbC0xMntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1MCV9LmVsLWNvbC1sZy1wdXNoLTEye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTAlfS5lbC1jb2wtbGctMTN7d2lkdGg6NTQuMTY2NjclfS5lbC1jb2wtbGctb2Zmc2V0LTEze21hcmdpbi1sZWZ0OjU0LjE2NjY3JX0uZWwtY29sLWxnLXB1bGwtMTN7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTQuMTY2NjclfS5lbC1jb2wtbGctcHVzaC0xM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjU0LjE2NjY3JX0uZWwtY29sLWxnLTE0e3dpZHRoOjU4LjMzMzMzJX0uZWwtY29sLWxnLW9mZnNldC0xNHttYXJnaW4tbGVmdDo1OC4zMzMzMyV9LmVsLWNvbC1sZy1wdWxsLTE0e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjU4LjMzMzMzJX0uZWwtY29sLWxnLXB1c2gtMTR7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1OC4zMzMzMyV9LmVsLWNvbC1sZy0xNXt3aWR0aDo2Mi41JX0uZWwtY29sLWxnLW9mZnNldC0xNXttYXJnaW4tbGVmdDo2Mi41JX0uZWwtY29sLWxnLXB1bGwtMTV7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NjIuNSV9LmVsLWNvbC1sZy1wdXNoLTE1e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NjIuNSV9LmVsLWNvbC1sZy0xNnt3aWR0aDo2Ni42NjY2NyV9LmVsLWNvbC1sZy1vZmZzZXQtMTZ7bWFyZ2luLWxlZnQ6NjYuNjY2NjclfS5lbC1jb2wtbGctcHVsbC0xNntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo2Ni42NjY2NyV9LmVsLWNvbC1sZy1wdXNoLTE2e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NjYuNjY2NjclfS5lbC1jb2wtbGctMTd7d2lkdGg6NzAuODMzMzMlfS5lbC1jb2wtbGctb2Zmc2V0LTE3e21hcmdpbi1sZWZ0OjcwLjgzMzMzJX0uZWwtY29sLWxnLXB1bGwtMTd7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzAuODMzMzMlfS5lbC1jb2wtbGctcHVzaC0xN3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjcwLjgzMzMzJX0uZWwtY29sLWxnLTE4e3dpZHRoOjc1JX0uZWwtY29sLWxnLW9mZnNldC0xOHttYXJnaW4tbGVmdDo3NSV9LmVsLWNvbC1sZy1wdWxsLTE4e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojc1JX0uZWwtY29sLWxnLXB1c2gtMTh7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3NSV9LmVsLWNvbC1sZy0xOXt3aWR0aDo3OS4xNjY2NyV9LmVsLWNvbC1sZy1vZmZzZXQtMTl7bWFyZ2luLWxlZnQ6NzkuMTY2NjclfS5lbC1jb2wtbGctcHVsbC0xOXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3OS4xNjY2NyV9LmVsLWNvbC1sZy1wdXNoLTE5e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzkuMTY2NjclfS5lbC1jb2wtbGctMjB7d2lkdGg6ODMuMzMzMzMlfS5lbC1jb2wtbGctb2Zmc2V0LTIwe21hcmdpbi1sZWZ0OjgzLjMzMzMzJX0uZWwtY29sLWxnLXB1bGwtMjB7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6ODMuMzMzMzMlfS5lbC1jb2wtbGctcHVzaC0yMHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjgzLjMzMzMzJX0uZWwtY29sLWxnLTIxe3dpZHRoOjg3LjUlfS5lbC1jb2wtbGctb2Zmc2V0LTIxe21hcmdpbi1sZWZ0Ojg3LjUlfS5lbC1jb2wtbGctcHVsbC0yMXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4Ny41JX0uZWwtY29sLWxnLXB1c2gtMjF7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4Ny41JX0uZWwtY29sLWxnLTIye3dpZHRoOjkxLjY2NjY3JX0uZWwtY29sLWxnLW9mZnNldC0yMnttYXJnaW4tbGVmdDo5MS42NjY2NyV9LmVsLWNvbC1sZy1wdWxsLTIye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjkxLjY2NjY3JX0uZWwtY29sLWxnLXB1c2gtMjJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo5MS42NjY2NyV9LmVsLWNvbC1sZy0yM3t3aWR0aDo5NS44MzMzMyV9LmVsLWNvbC1sZy1vZmZzZXQtMjN7bWFyZ2luLWxlZnQ6OTUuODMzMzMlfS5lbC1jb2wtbGctcHVsbC0yM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo5NS44MzMzMyV9LmVsLWNvbC1sZy1wdXNoLTIze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6OTUuODMzMzMlfS5lbC1jb2wtbGctMjR7d2lkdGg6MTAwJX0uZWwtY29sLWxnLW9mZnNldC0yNHttYXJnaW4tbGVmdDoxMDAlfS5lbC1jb2wtbGctcHVsbC0yNHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxMDAlfS5lbC1jb2wtbGctcHVzaC0yNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjEwMCV9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxOTIwcHgpey5lbC1jb2wteGwtMHtkaXNwbGF5Om5vbmU7d2lkdGg6MCV9LmVsLWNvbC14bC1vZmZzZXQtMHttYXJnaW4tbGVmdDowfS5lbC1jb2wteGwtcHVsbC0we3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjB9LmVsLWNvbC14bC1wdXNoLTB7cG9zaXRpb246cmVsYXRpdmU7bGVmdDowfS5lbC1jb2wteGwtMXt3aWR0aDo0LjE2NjY3JX0uZWwtY29sLXhsLW9mZnNldC0xe21hcmdpbi1sZWZ0OjQuMTY2NjclfS5lbC1jb2wteGwtcHVsbC0xe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjQuMTY2NjclfS5lbC1jb2wteGwtcHVzaC0xe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NC4xNjY2NyV9LmVsLWNvbC14bC0ye3dpZHRoOjguMzMzMzMlfS5lbC1jb2wteGwtb2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6OC4zMzMzMyV9LmVsLWNvbC14bC1wdWxsLTJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OC4zMzMzMyV9LmVsLWNvbC14bC1wdXNoLTJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo4LjMzMzMzJX0uZWwtY29sLXhsLTN7d2lkdGg6MTIuNSV9LmVsLWNvbC14bC1vZmZzZXQtM3ttYXJnaW4tbGVmdDoxMi41JX0uZWwtY29sLXhsLXB1bGwtM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDoxMi41JX0uZWwtY29sLXhsLXB1c2gtM3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjEyLjUlfS5lbC1jb2wteGwtNHt3aWR0aDoxNi42NjY2NyV9LmVsLWNvbC14bC1vZmZzZXQtNHttYXJnaW4tbGVmdDoxNi42NjY2NyV9LmVsLWNvbC14bC1wdWxsLTR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MTYuNjY2NjclfS5lbC1jb2wteGwtcHVzaC00e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTYuNjY2NjclfS5lbC1jb2wteGwtNXt3aWR0aDoyMC44MzMzMyV9LmVsLWNvbC14bC1vZmZzZXQtNXttYXJnaW4tbGVmdDoyMC44MzMzMyV9LmVsLWNvbC14bC1wdWxsLTV7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjAuODMzMzMlfS5lbC1jb2wteGwtcHVzaC01e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjAuODMzMzMlfS5lbC1jb2wteGwtNnt3aWR0aDoyNSV9LmVsLWNvbC14bC1vZmZzZXQtNnttYXJnaW4tbGVmdDoyNSV9LmVsLWNvbC14bC1wdWxsLTZ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjUlfS5lbC1jb2wteGwtcHVzaC02e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjUlfS5lbC1jb2wteGwtN3t3aWR0aDoyOS4xNjY2NyV9LmVsLWNvbC14bC1vZmZzZXQtN3ttYXJnaW4tbGVmdDoyOS4xNjY2NyV9LmVsLWNvbC14bC1wdWxsLTd7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MjkuMTY2NjclfS5lbC1jb2wteGwtcHVzaC03e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MjkuMTY2NjclfS5lbC1jb2wteGwtOHt3aWR0aDozMy4zMzMzMyV9LmVsLWNvbC14bC1vZmZzZXQtOHttYXJnaW4tbGVmdDozMy4zMzMzMyV9LmVsLWNvbC14bC1wdWxsLTh7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MzMuMzMzMzMlfS5lbC1jb2wteGwtcHVzaC04e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MzMuMzMzMzMlfS5lbC1jb2wteGwtOXt3aWR0aDozNy41JX0uZWwtY29sLXhsLW9mZnNldC05e21hcmdpbi1sZWZ0OjM3LjUlfS5lbC1jb2wteGwtcHVsbC05e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjM3LjUlfS5lbC1jb2wteGwtcHVzaC05e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MzcuNSV9LmVsLWNvbC14bC0xMHt3aWR0aDo0MS42NjY2NyV9LmVsLWNvbC14bC1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6NDEuNjY2NjclfS5lbC1jb2wteGwtcHVsbC0xMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo0MS42NjY2NyV9LmVsLWNvbC14bC1wdXNoLTEwe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NDEuNjY2NjclfS5lbC1jb2wteGwtMTF7d2lkdGg6NDUuODMzMzMlfS5lbC1jb2wteGwtb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLXhsLXB1bGwtMTF7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NDUuODMzMzMlfS5lbC1jb2wteGwtcHVzaC0xMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjQ1LjgzMzMzJX0uZWwtY29sLXhsLTEye3dpZHRoOjUwJX0uZWwtY29sLXhsLW9mZnNldC0xMnttYXJnaW4tbGVmdDo1MCV9LmVsLWNvbC14bC1wdWxsLTEye3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjUwJX0uZWwtY29sLXhsLXB1c2gtMTJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo1MCV9LmVsLWNvbC14bC0xM3t3aWR0aDo1NC4xNjY2NyV9LmVsLWNvbC14bC1vZmZzZXQtMTN7bWFyZ2luLWxlZnQ6NTQuMTY2NjclfS5lbC1jb2wteGwtcHVsbC0xM3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo1NC4xNjY2NyV9LmVsLWNvbC14bC1wdXNoLTEze3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NTQuMTY2NjclfS5lbC1jb2wteGwtMTR7d2lkdGg6NTguMzMzMzMlfS5lbC1jb2wteGwtb2Zmc2V0LTE0e21hcmdpbi1sZWZ0OjU4LjMzMzMzJX0uZWwtY29sLXhsLXB1bGwtMTR7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NTguMzMzMzMlfS5lbC1jb2wteGwtcHVzaC0xNHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjU4LjMzMzMzJX0uZWwtY29sLXhsLTE1e3dpZHRoOjYyLjUlfS5lbC1jb2wteGwtb2Zmc2V0LTE1e21hcmdpbi1sZWZ0OjYyLjUlfS5lbC1jb2wteGwtcHVsbC0xNXtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo2Mi41JX0uZWwtY29sLXhsLXB1c2gtMTV7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo2Mi41JX0uZWwtY29sLXhsLTE2e3dpZHRoOjY2LjY2NjY3JX0uZWwtY29sLXhsLW9mZnNldC0xNnttYXJnaW4tbGVmdDo2Ni42NjY2NyV9LmVsLWNvbC14bC1wdWxsLTE2e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjY2LjY2NjY3JX0uZWwtY29sLXhsLXB1c2gtMTZ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo2Ni42NjY2NyV9LmVsLWNvbC14bC0xN3t3aWR0aDo3MC44MzMzMyV9LmVsLWNvbC14bC1vZmZzZXQtMTd7bWFyZ2luLWxlZnQ6NzAuODMzMzMlfS5lbC1jb2wteGwtcHVsbC0xN3twb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo3MC44MzMzMyV9LmVsLWNvbC14bC1wdXNoLTE3e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6NzAuODMzMzMlfS5lbC1jb2wteGwtMTh7d2lkdGg6NzUlfS5lbC1jb2wteGwtb2Zmc2V0LTE4e21hcmdpbi1sZWZ0Ojc1JX0uZWwtY29sLXhsLXB1bGwtMTh7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6NzUlfS5lbC1jb2wteGwtcHVzaC0xOHtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojc1JX0uZWwtY29sLXhsLTE5e3dpZHRoOjc5LjE2NjY3JX0uZWwtY29sLXhsLW9mZnNldC0xOXttYXJnaW4tbGVmdDo3OS4xNjY2NyV9LmVsLWNvbC14bC1wdWxsLTE5e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojc5LjE2NjY3JX0uZWwtY29sLXhsLXB1c2gtMTl7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo3OS4xNjY2NyV9LmVsLWNvbC14bC0yMHt3aWR0aDo4My4zMzMzMyV9LmVsLWNvbC14bC1vZmZzZXQtMjB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMlfS5lbC1jb2wteGwtcHVsbC0yMHtwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDo4My4zMzMzMyV9LmVsLWNvbC14bC1wdXNoLTIwe3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6ODMuMzMzMzMlfS5lbC1jb2wteGwtMjF7d2lkdGg6ODcuNSV9LmVsLWNvbC14bC1vZmZzZXQtMjF7bWFyZ2luLWxlZnQ6ODcuNSV9LmVsLWNvbC14bC1wdWxsLTIxe3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojg3LjUlfS5lbC1jb2wteGwtcHVzaC0yMXtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Ojg3LjUlfS5lbC1jb2wteGwtMjJ7d2lkdGg6OTEuNjY2NjclfS5lbC1jb2wteGwtb2Zmc2V0LTIye21hcmdpbi1sZWZ0OjkxLjY2NjY3JX0uZWwtY29sLXhsLXB1bGwtMjJ7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6OTEuNjY2NjclfS5lbC1jb2wteGwtcHVzaC0yMntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjkxLjY2NjY3JX0uZWwtY29sLXhsLTIze3dpZHRoOjk1LjgzMzMzJX0uZWwtY29sLXhsLW9mZnNldC0yM3ttYXJnaW4tbGVmdDo5NS44MzMzMyV9LmVsLWNvbC14bC1wdWxsLTIze3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Ojk1LjgzMzMzJX0uZWwtY29sLXhsLXB1c2gtMjN7cG9zaXRpb246cmVsYXRpdmU7bGVmdDo5NS44MzMzMyV9LmVsLWNvbC14bC0yNHt3aWR0aDoxMDAlfS5lbC1jb2wteGwtb2Zmc2V0LTI0e21hcmdpbi1sZWZ0OjEwMCV9LmVsLWNvbC14bC1wdWxsLTI0e3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0OjEwMCV9LmVsLWNvbC14bC1wdXNoLTI0e3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MTAwJX19QC13ZWJraXQta2V5ZnJhbWVzIHByb2dyZXNzezAle2JhY2tncm91bmQtcG9zaXRpb246MCAwfTEwMCV7YmFja2dyb3VuZC1wb3NpdGlvbjozMnB4IDB9fS5lbC11cGxvYWR7ZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTowfS5lbC11cGxvYWRfX2lucHV0e2Rpc3BsYXk6bm9uZX0uZWwtdXBsb2FkX190aXB7Zm9udC1zaXplOjEycHg7Y29sb3I6IzYwNjI2NjttYXJnaW4tdG9wOjdweH0uZWwtdXBsb2FkIGlmcmFtZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xO3RvcDowO2xlZnQ6MDtmaWx0ZXI6YWxwaGEob3BhY2l0eT0wKX0uZWwtdXBsb2FkLS1waWN0dXJlLWNhcmR7YmFja2dyb3VuZC1jb2xvcjojZmJmZGZmO2JvcmRlcjoxcHggZGFzaGVkICNjMGNjZGE7Ym9yZGVyLXJhZGl1czo2cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjE0OHB4O2hlaWdodDoxNDhweDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDoxNDZweDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmVsLXVwbG9hZC0tcGljdHVyZS1jYXJkIGl7Zm9udC1zaXplOjI4cHg7Y29sb3I6IzhjOTM5ZH0uZWwtdXBsb2FkLS1waWN0dXJlLWNhcmQ6aG92ZXIsLmVsLXVwbG9hZDpmb2N1c3tib3JkZXItY29sb3I6IzQwOUVGRjtjb2xvcjojNDA5RUZGfS5lbC11cGxvYWQ6Zm9jdXMgLmVsLXVwbG9hZC1kcmFnZ2Vye2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC11cGxvYWQtZHJhZ2dlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBkYXNoZWQgI2Q5ZDlkOTtib3JkZXItcmFkaXVzOjZweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MzYwcHg7aGVpZ2h0OjE4MHB4O3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmhpZGRlbn0uZWwtdXBsb2FkLWRyYWdnZXIgLmVsLWljb24tdXBsb2Fke2ZvbnQtc2l6ZTo2N3B4O2NvbG9yOiNDMEM0Q0M7bWFyZ2luOjQwcHggMCAxNnB4O2xpbmUtaGVpZ2h0OjUwcHh9LmVsLXVwbG9hZC1kcmFnZ2VyKy5lbC11cGxvYWRfX3RpcHt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtdXBsb2FkLWRyYWdnZXJ+LmVsLXVwbG9hZF9fZmlsZXN7Ym9yZGVyLXRvcDoxcHggc29saWQgI0RDREZFNjttYXJnaW4tdG9wOjdweDtwYWRkaW5nLXRvcDo1cHh9LmVsLXVwbG9hZC1kcmFnZ2VyIC5lbC11cGxvYWRfX3RleHR7Y29sb3I6IzYwNjI2Njtmb250LXNpemU6MTRweDt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtdXBsb2FkLWRyYWdnZXIgLmVsLXVwbG9hZF9fdGV4dCBlbXtjb2xvcjojNDA5RUZGO2ZvbnQtc3R5bGU6bm9ybWFsfS5lbC11cGxvYWQtZHJhZ2dlcjpob3Zlcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtdXBsb2FkLWRyYWdnZXIuaXMtZHJhZ292ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDMyLDE1OSwyNTUsLjA2KTtib3JkZXI6MnB4IGRhc2hlZCAjNDA5RUZGfS5lbC11cGxvYWQtbGlzdHttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS5lbC11cGxvYWQtbGlzdF9faXRlbXstd2Via2l0LXRyYW5zaXRpb246YWxsIC41cyBjdWJpYy1iZXppZXIoLjU1LDAsLjEsMSk7dHJhbnNpdGlvbjphbGwgLjVzIGN1YmljLWJlemllciguNTUsMCwuMSwxKTtmb250LXNpemU6MTRweDtjb2xvcjojNjA2MjY2O2xpbmUtaGVpZ2h0OjEuODttYXJnaW4tdG9wOjVweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo0cHg7d2lkdGg6MTAwJX0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLXByb2dyZXNze3Bvc2l0aW9uOmFic29sdXRlO3RvcDoyMHB4O3dpZHRoOjEwMCV9LmVsLXVwbG9hZC1saXN0X19pdGVtIC5lbC1wcm9ncmVzc19fdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDotMTNweH0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLXByb2dyZXNzLWJhcnttYXJnaW4tcmlnaHQ6MDtwYWRkaW5nLXJpZ2h0OjB9LmVsLXVwbG9hZC1saXN0X19pdGVtOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MTBweH0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLWljb24tdXBsb2FkLXN1Y2Nlc3N7Y29sb3I6IzY3QzIzQX0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLWljb24tY2xvc2V7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1cHg7cmlnaHQ6NXB4O2N1cnNvcjpwb2ludGVyO29wYWNpdHk6Ljc1O2NvbG9yOiM2MDYyNjZ9LmVsLXVwbG9hZC1saXN0X19pdGVtIC5lbC1pY29uLWNsb3NlOmhvdmVye29wYWNpdHk6MX0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLWljb24tY2xvc2UtdGlwe2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NXB4O3JpZ2h0OjVweDtmb250LXNpemU6MTJweDtjdXJzb3I6cG9pbnRlcjtvcGFjaXR5OjE7Y29sb3I6IzQwOUVGRn0uZWwtdXBsb2FkLWxpc3RfX2l0ZW06aG92ZXIgLmVsLWljb24tY2xvc2V7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXVwbG9hZC1saXN0X19pdGVtOmhvdmVyIC5lbC1wcm9ncmVzc19fdGV4dHtkaXNwbGF5Om5vbmV9LmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3MgLmVsLXVwbG9hZC1saXN0X19pdGVtLXN0YXR1cy1sYWJlbHtkaXNwbGF5OmJsb2NrfS5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzIC5lbC11cGxvYWQtbGlzdF9faXRlbS1uYW1lOmZvY3VzLC5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzIC5lbC11cGxvYWQtbGlzdF9faXRlbS1uYW1lOmhvdmVye2NvbG9yOiM0MDlFRkY7Y3Vyc29yOnBvaW50ZXJ9LmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3M6Zm9jdXM6bm90KDpob3ZlcikgLmVsLWljb24tY2xvc2UtdGlwe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzOmFjdGl2ZSwuZWwtdXBsb2FkLWxpc3RfX2l0ZW0uaXMtc3VjY2Vzczpub3QoLmZvY3VzaW5nKTpmb2N1c3tvdXRsaW5lLXdpZHRoOjB9LmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3M6YWN0aXZlIC5lbC1pY29uLWNsb3NlLXRpcCwuZWwtdXBsb2FkLWxpc3RfX2l0ZW0uaXMtc3VjY2Vzczpmb2N1cyAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tc3RhdHVzLWxhYmVsLC5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzOmhvdmVyIC5lbC11cGxvYWQtbGlzdF9faXRlbS1zdGF0dXMtbGFiZWwsLmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3M6bm90KC5mb2N1c2luZyk6Zm9jdXMgLmVsLWljb24tY2xvc2UtdGlwe2Rpc3BsYXk6bm9uZX0uZWwtdXBsb2FkLWxpc3QuaXMtZGlzYWJsZWQgLmVsLXVwbG9hZC1saXN0X19pdGVtOmhvdmVyIC5lbC11cGxvYWQtbGlzdF9faXRlbS1zdGF0dXMtbGFiZWx7ZGlzcGxheTpibG9ja30uZWwtdXBsb2FkLWxpc3RfX2l0ZW0tbmFtZXtjb2xvcjojNjA2MjY2O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXJpZ2h0OjQwcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctbGVmdDo0cHg7dGV4dC1vdmVyZmxvdzplbGxpcHNpczstd2Via2l0LXRyYW5zaXRpb246Y29sb3IgLjNzO3RyYW5zaXRpb246Y29sb3IgLjNzO3doaXRlLXNwYWNlOm5vd3JhcH0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0tbmFtZSBbY2xhc3NePWVsLWljb25de2hlaWdodDoxMDAlO21hcmdpbi1yaWdodDo3cHg7Y29sb3I6IzkwOTM5OTtsaW5lLWhlaWdodDppbmhlcml0fS5lbC11cGxvYWQtbGlzdF9faXRlbS1zdGF0dXMtbGFiZWx7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6NXB4O3RvcDowO2xpbmUtaGVpZ2h0OmluaGVyaXQ7ZGlzcGxheTpub25lfS5lbC11cGxvYWQtbGlzdF9faXRlbS1kZWxldGV7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTBweDt0b3A6MDtmb250LXNpemU6MTJweDtjb2xvcjojNjA2MjY2O2Rpc3BsYXk6bm9uZX0uZWwtdXBsb2FkLWxpc3RfX2l0ZW0tZGVsZXRlOmhvdmVye2NvbG9yOiM0MDlFRkZ9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmR7bWFyZ2luOjA7ZGlzcGxheTppbmxpbmU7dmVydGljYWwtYWxpZ246dG9wfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbXtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2MwY2NkYTtib3JkZXItcmFkaXVzOjZweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTQ4cHg7aGVpZ2h0OjE0OHB4O21hcmdpbjowIDhweCA4cHggMDtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0gLmVsLWljb24tY2hlY2ssLmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmQgLmVsLXVwbG9hZC1saXN0X19pdGVtIC5lbC1pY29uLWNpcmNsZS1jaGVja3tjb2xvcjojRkZGfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbSAuZWwtaWNvbi1jbG9zZSwuZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW06aG92ZXIgLmVsLXVwbG9hZC1saXN0X19pdGVtLXN0YXR1cy1sYWJlbHtkaXNwbGF5Om5vbmV9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmQgLmVsLXVwbG9hZC1saXN0X19pdGVtOmhvdmVyIC5lbC1wcm9ncmVzc19fdGV4dHtkaXNwbGF5OmJsb2NrfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbS1uYW1le2Rpc3BsYXk6bm9uZX0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tdGh1bWJuYWlse3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmQgLmVsLXVwbG9hZC1saXN0X19pdGVtLXN0YXR1cy1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTVweDt0b3A6LTZweDt3aWR0aDo0MHB4O2hlaWdodDoyNHB4O2JhY2tncm91bmQ6IzEzY2U2Njt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMXBjIDFweCByZ2JhKDAsMCwwLC4yKTtib3gtc2hhZG93OjAgMCAxcGMgMXB4IHJnYmEoMCwwLDAsLjIpfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbS1zdGF0dXMtbGFiZWwgaXtmb250LXNpemU6MTJweDttYXJnaW4tdG9wOjExcHg7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbS1hY3Rpb25ze3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bGVmdDowO3RvcDowO2N1cnNvcjpkZWZhdWx0O3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiNmZmY7b3BhY2l0eTowO2ZvbnQtc2l6ZToyMHB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSk7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjNzO3RyYW5zaXRpb246b3BhY2l0eSAuM3N9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlLWNhcmQgLmVsLXVwbG9hZC1saXN0X19pdGVtLWFjdGlvbnM6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tYWN0aW9ucyBzcGFue2Rpc3BsYXk6bm9uZTtjdXJzb3I6cG9pbnRlcn0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tYWN0aW9ucyBzcGFuK3NwYW57bWFyZ2luLWxlZnQ6MTVweH0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tYWN0aW9ucyAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tZGVsZXRle3Bvc2l0aW9uOnN0YXRpYztmb250LXNpemU6aW5oZXJpdDtjb2xvcjppbmhlcml0fS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC11cGxvYWQtbGlzdF9faXRlbS1hY3Rpb25zOmhvdmVye29wYWNpdHk6MX0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tYWN0aW9uczpob3ZlciBzcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZS1jYXJkIC5lbC1wcm9ncmVzc3t0b3A6NTAlO2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTtib3R0b206YXV0bzt3aWR0aDoxMjZweH0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUtY2FyZCAuZWwtcHJvZ3Jlc3MgLmVsLXByb2dyZXNzX190ZXh0e3RvcDo1MCV9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbXtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDowO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjMGNjZGE7Ym9yZGVyLXJhZGl1czo2cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbi10b3A6MTBweDtwYWRkaW5nOjEwcHggMTBweCAxMHB4IDkwcHg7aGVpZ2h0OjkycHh9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbSAuZWwtaWNvbi1jaGVjaywuZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXVwbG9hZC1saXN0X19pdGVtIC5lbC1pY29uLWNpcmNsZS1jaGVja3tjb2xvcjojRkZGfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZSAuZWwtdXBsb2FkLWxpc3RfX2l0ZW06aG92ZXIgLmVsLXVwbG9hZC1saXN0X19pdGVtLXN0YXR1cy1sYWJlbHtiYWNrZ3JvdW5kOjAgMDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7dG9wOi0ycHg7cmlnaHQ6LTEycHh9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbTpob3ZlciAuZWwtcHJvZ3Jlc3NfX3RleHR7ZGlzcGxheTpibG9ja30uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXVwbG9hZC1saXN0X19pdGVtLmlzLXN1Y2Nlc3MgLmVsLXVwbG9hZC1saXN0X19pdGVtLW5hbWV7bGluZS1oZWlnaHQ6NzBweDttYXJnaW4tdG9wOjB9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbS5pcy1zdWNjZXNzIC5lbC11cGxvYWQtbGlzdF9faXRlbS1uYW1lIGl7ZGlzcGxheTpub25lfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZSAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tdGh1bWJuYWlse3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo3MHB4O2hlaWdodDo3MHB4O2Zsb2F0OmxlZnQ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxO21hcmdpbi1sZWZ0Oi04MHB4O2JhY2tncm91bmQtY29sb3I6I0ZGRn0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXVwbG9hZC1saXN0X19pdGVtLW5hbWV7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjIwcHh9LmVsLXVwbG9hZC1saXN0LS1waWN0dXJlIC5lbC11cGxvYWQtbGlzdF9faXRlbS1uYW1lIGl7Zm9udC1zaXplOjcwcHg7bGluZS1oZWlnaHQ6MTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjlweDt0b3A6MTBweH0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXVwbG9hZC1saXN0X19pdGVtLXN0YXR1cy1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTdweDt0b3A6LTdweDt3aWR0aDo0NnB4O2hlaWdodDoyNnB4O2JhY2tncm91bmQ6IzEzY2U2Njt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy13ZWJraXQtYm94LXNoYWRvdzowIDFweCAxcHggI2NjYztib3gtc2hhZG93OjAgMXB4IDFweCAjY2NjfS5lbC11cGxvYWQtbGlzdC0tcGljdHVyZSAuZWwtdXBsb2FkLWxpc3RfX2l0ZW0tc3RhdHVzLWxhYmVsIGl7Zm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDoxMnB4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0uZWwtdXBsb2FkLWxpc3QtLXBpY3R1cmUgLmVsLXByb2dyZXNze3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotN3B4fS5lbC11cGxvYWQtY292ZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MTA7Y3Vyc29yOmRlZmF1bHR9LmVsLXVwbG9hZC1jb3Zlcjo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwMCU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC11cGxvYWQtY292ZXIgaW1ne2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uZWwtdXBsb2FkLWNvdmVyX19sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTVweDt0b3A6LTZweDt3aWR0aDo0MHB4O2hlaWdodDoyNHB4O2JhY2tncm91bmQ6IzEzY2U2Njt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMXBjIDFweCByZ2JhKDAsMCwwLC4yKTtib3gtc2hhZG93OjAgMCAxcGMgMXB4IHJnYmEoMCwwLDAsLjIpfS5lbC11cGxvYWQtY292ZXJfX2xhYmVsIGl7Zm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDoxMXB4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTtjb2xvcjojZmZmfS5lbC11cGxvYWQtY292ZXJfX3Byb2dyZXNze2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtwb3NpdGlvbjpzdGF0aWM7d2lkdGg6MjQzcHh9LmVsLXVwbG9hZC1jb3Zlcl9fcHJvZ3Jlc3MrLmVsLXVwbG9hZF9faW5uZXJ7b3BhY2l0eTowfS5lbC11cGxvYWQtY292ZXJfX2NvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LmVsLXVwbG9hZC1jb3Zlcl9faW50ZXJhY3R7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC43Mik7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXVwbG9hZC1jb3Zlcl9faW50ZXJhY3QgLmJ0bntkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojRkZGO2ZvbnQtc2l6ZToxNHB4O2N1cnNvcjpwb2ludGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKSwtd2Via2l0LXRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSksLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSksb3BhY2l0eSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKSxvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpLC13ZWJraXQtdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO21hcmdpbi10b3A6NjBweH0uZWwtdXBsb2FkLWNvdmVyX19pbnRlcmFjdCAuYnRuIHNwYW57b3BhY2l0eTowOy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgbGluZWFyO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGxpbmVhcn0uZWwtdXBsb2FkLWNvdmVyX19pbnRlcmFjdCAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1sZWZ0OjM1cHh9LmVsLXVwbG9hZC1jb3Zlcl9faW50ZXJhY3QgLmJ0bjpob3Zlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xM3B4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTNweCl9LmVsLXVwbG9hZC1jb3Zlcl9faW50ZXJhY3QgLmJ0bjpob3ZlciBzcGFue29wYWNpdHk6MX0uZWwtdXBsb2FkLWNvdmVyX19pbnRlcmFjdCAuYnRuIGl7Y29sb3I6I0ZGRjtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToyNHB4O2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjAgYXV0byA1cHh9LmVsLXVwbG9hZC1jb3Zlcl9fdGl0bGV7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO2JhY2tncm91bmQtY29sb3I6I0ZGRjtoZWlnaHQ6MzZweDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXdlaWdodDo0MDA7dGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6MCAxMHB4O21hcmdpbjowO2xpbmUtaGVpZ2h0OjM2cHg7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzMwMzEzM30uZWwtdXBsb2FkLWNvdmVyKy5lbC11cGxvYWRfX2lubmVye29wYWNpdHk6MDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LmVsLXByb2dyZXNze3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjF9LmVsLXByb2dyZXNzX190ZXh0e2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM2MDYyNjY7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1sZWZ0OjEwcHg7bGluZS1oZWlnaHQ6MX0uZWwtcHJvZ3Jlc3NfX3RleHQgaXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTpibG9ja30uZWwtcHJvZ3Jlc3MtLWNpcmNsZSwuZWwtcHJvZ3Jlc3MtLWRhc2hib2FyZHtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtcHJvZ3Jlc3MtLWNpcmNsZSAuZWwtcHJvZ3Jlc3NfX3RleHQsLmVsLXByb2dyZXNzLS1kYXNoYm9hcmQgLmVsLXByb2dyZXNzX190ZXh0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDowO3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC01MCUpfS5lbC1wcm9ncmVzcy0tY2lyY2xlIC5lbC1wcm9ncmVzc19fdGV4dCBpLC5lbC1wcm9ncmVzcy0tZGFzaGJvYXJkIC5lbC1wcm9ncmVzc19fdGV4dCBpe3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtcHJvZ3Jlc3MtLXdpdGhvdXQtdGV4dCAuZWwtcHJvZ3Jlc3NfX3RleHR7ZGlzcGxheTpub25lfS5lbC1wcm9ncmVzcy0td2l0aG91dC10ZXh0IC5lbC1wcm9ncmVzcy1iYXJ7cGFkZGluZy1yaWdodDowO21hcmdpbi1yaWdodDowO2Rpc3BsYXk6YmxvY2t9LmVsLXByb2dyZXNzLS10ZXh0LWluc2lkZSAuZWwtcHJvZ3Jlc3MtYmFye3BhZGRpbmctcmlnaHQ6MDttYXJnaW4tcmlnaHQ6MH0uZWwtcHJvZ3Jlc3MuaXMtc3VjY2VzcyAuZWwtcHJvZ3Jlc3MtYmFyX19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiM2N0MyM0F9LmVsLXByb2dyZXNzLmlzLXN1Y2Nlc3MgLmVsLXByb2dyZXNzX190ZXh0e2NvbG9yOiM2N0MyM0F9LmVsLXByb2dyZXNzLmlzLXdhcm5pbmcgLmVsLXByb2dyZXNzLWJhcl9faW5uZXJ7YmFja2dyb3VuZC1jb2xvcjojRTZBMjNDfS5lbC1iYWRnZV9fY29udGVudCwuZWwtcHJvZ3Jlc3MuaXMtZXhjZXB0aW9uIC5lbC1wcm9ncmVzcy1iYXJfX2lubmVye2JhY2tncm91bmQtY29sb3I6I0Y1NkM2Q30uZWwtcHJvZ3Jlc3MuaXMtd2FybmluZyAuZWwtcHJvZ3Jlc3NfX3RleHR7Y29sb3I6I0U2QTIzQ30uZWwtcHJvZ3Jlc3MuaXMtZXhjZXB0aW9uIC5lbC1wcm9ncmVzc19fdGV4dHtjb2xvcjojRjU2QzZDfS5lbC1wcm9ncmVzcy1iYXJ7cGFkZGluZy1yaWdodDo1MHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoxMDAlO21hcmdpbi1yaWdodDotNTVweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWNhcmRfX2hlYWRlciwuZWwtbWVzc2FnZSwuZWwtc3RlcF9faWNvbnstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtcHJvZ3Jlc3MtYmFyX19vdXRlcntoZWlnaHQ6NnB4O2JvcmRlci1yYWRpdXM6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjojRUJFRUY1O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXByb2dyZXNzLWJhcl9faW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO2hlaWdodDoxMDAlO2JhY2tncm91bmQtY29sb3I6IzQwOUVGRjt0ZXh0LWFsaWduOnJpZ2h0O2JvcmRlci1yYWRpdXM6MTAwcHg7bGluZS1oZWlnaHQ6MTt3aGl0ZS1zcGFjZTpub3dyYXA7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIC42cyBlYXNlO3RyYW5zaXRpb246d2lkdGggLjZzIGVhc2V9LmVsLXByb2dyZXNzLWJhcl9faW5uZXI6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtcHJvZ3Jlc3MtYmFyX19pbm5lclRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO2NvbG9yOiNGRkY7Zm9udC1zaXplOjEycHg7bWFyZ2luOjAgNXB4fUBrZXlmcmFtZXMgcHJvZ3Jlc3N7MCV7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9MTAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjMycHggMH19LmVsLXRpbWUtc3Bpbm5lcnt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcH0uZWwtc3Bpbm5lcntkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXNwaW5uZXItaW5uZXJ7LXdlYmtpdC1hbmltYXRpb246cm90YXRlIDJzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246cm90YXRlIDJzIGxpbmVhciBpbmZpbml0ZTt3aWR0aDo1MHB4O2hlaWdodDo1MHB4fS5lbC1zcGlubmVyLWlubmVyIC5wYXRoe3N0cm9rZTojZWNlY2VjO3N0cm9rZS1saW5lY2FwOnJvdW5kOy13ZWJraXQtYW5pbWF0aW9uOmRhc2ggMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTthbmltYXRpb246ZGFzaCAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlfUAtd2Via2l0LWtleWZyYW1lcyByb3RhdGV7MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgcm90YXRlezEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1ALXdlYmtpdC1rZXlmcmFtZXMgZGFzaHswJXtzdHJva2UtZGFzaGFycmF5OjEsMTUwO3N0cm9rZS1kYXNob2Zmc2V0OjB9NTAle3N0cm9rZS1kYXNoYXJyYXk6OTAsMTUwO3N0cm9rZS1kYXNob2Zmc2V0Oi0zNX0xMDAle3N0cm9rZS1kYXNoYXJyYXk6OTAsMTUwO3N0cm9rZS1kYXNob2Zmc2V0Oi0xMjR9fUBrZXlmcmFtZXMgZGFzaHswJXtzdHJva2UtZGFzaGFycmF5OjEsMTUwO3N0cm9rZS1kYXNob2Zmc2V0OjB9NTAle3N0cm9rZS1kYXNoYXJyYXk6OTAsMTUwO3N0cm9rZS1kYXNob2Zmc2V0Oi0zNX0xMDAle3N0cm9rZS1kYXNoYXJyYXk6OTAsMTUwO3N0cm9rZS1kYXNob2Zmc2V0Oi0xMjR9fS5lbC1tZXNzYWdle21pbi13aWR0aDozODBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNFQkVFRjU7cG9zaXRpb246Zml4ZWQ7bGVmdDo1MCU7dG9wOjIwcHg7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTtiYWNrZ3JvdW5kLWNvbG9yOiNlZGYyZmM7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjNzLHRvcCAuNHMsLXdlYmtpdC10cmFuc2Zvcm0gLjRzO3RyYW5zaXRpb246b3BhY2l0eSAuM3MsdG9wIC40cywtd2Via2l0LXRyYW5zZm9ybSAuNHM7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyx0cmFuc2Zvcm0gLjRzLHRvcCAuNHM7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyx0cmFuc2Zvcm0gLjRzLHRvcCAuNHMsLXdlYmtpdC10cmFuc2Zvcm0gLjRzO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDIwcHg7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uZWwtbWVzc2FnZS5pcy1jZW50ZXJ7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uZWwtbWVzc2FnZS5pcy1jbG9zYWJsZSAuZWwtbWVzc2FnZV9fY29udGVudHtwYWRkaW5nLXJpZ2h0OjE2cHh9LmVsLW1lc3NhZ2UgcHttYXJnaW46MH0uZWwtbWVzc2FnZS0taW5mbyAuZWwtbWVzc2FnZV9fY29udGVudHtjb2xvcjojOTA5Mzk5fS5lbC1tZXNzYWdlLS1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6I2YwZjllYjtib3JkZXItY29sb3I6I2UxZjNkOH0uZWwtbWVzc2FnZS0tc3VjY2VzcyAuZWwtbWVzc2FnZV9fY29udGVudHtjb2xvcjojNjdDMjNBfS5lbC1tZXNzYWdlLS13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZkZjZlYztib3JkZXItY29sb3I6I2ZhZWNkOH0uZWwtbWVzc2FnZS0td2FybmluZyAuZWwtbWVzc2FnZV9fY29udGVudHtjb2xvcjojRTZBMjNDfS5lbC1tZXNzYWdlLS1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNmZWYwZjA7Ym9yZGVyLWNvbG9yOiNmZGUyZTJ9LmVsLW1lc3NhZ2UtLWVycm9yIC5lbC1tZXNzYWdlX19jb250ZW50e2NvbG9yOiNGNTZDNkN9LmVsLW1lc3NhZ2VfX2ljb257bWFyZ2luLXJpZ2h0OjEwcHh9LmVsLW1lc3NhZ2VfX2NvbnRlbnR7cGFkZGluZzowO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjF9LmVsLW1lc3NhZ2VfX2NvbnRlbnQ6Zm9jdXN7b3V0bGluZS13aWR0aDowfS5lbC1tZXNzYWdlX19jbG9zZUJ0bntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjE1cHg7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtjdXJzb3I6cG9pbnRlcjtjb2xvcjojQzBDNENDO2ZvbnQtc2l6ZToxNnB4fS5lbC1tZXNzYWdlX19jbG9zZUJ0bjpmb2N1c3tvdXRsaW5lLXdpZHRoOjB9LmVsLW1lc3NhZ2VfX2Nsb3NlQnRuOmhvdmVye2NvbG9yOiM5MDkzOTl9LmVsLW1lc3NhZ2UgLmVsLWljb24tc3VjY2Vzc3tjb2xvcjojNjdDMjNBfS5lbC1tZXNzYWdlIC5lbC1pY29uLWVycm9ye2NvbG9yOiNGNTZDNkN9LmVsLW1lc3NhZ2UgLmVsLWljb24taW5mb3tjb2xvcjojOTA5Mzk5fS5lbC1tZXNzYWdlIC5lbC1pY29uLXdhcm5pbmd7Y29sb3I6I0U2QTIzQ30uZWwtbWVzc2FnZS1mYWRlLWVudGVyLC5lbC1tZXNzYWdlLWZhZGUtbGVhdmUtYWN0aXZle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC0xMDAlKX0uZWwtYmFkZ2V7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbC1iYWRnZV9fY29udGVudHtib3JkZXItcmFkaXVzOjEwcHg7Y29sb3I6I0ZGRjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTJweDtoZWlnaHQ6MThweDtsaW5lLWhlaWdodDoxOHB4O3BhZGRpbmc6MCA2cHg7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlcjoxcHggc29saWQgI0ZGRn0uZWwtYmFkZ2VfX2NvbnRlbnQuaXMtZml4ZWR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MTBweDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgxMDAlKX0uZWwtcmF0ZV9faWNvbiwuZWwtcmF0ZV9faXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtYmFkZ2VfX2NvbnRlbnQuaXMtZml4ZWQuaXMtZG90e3JpZ2h0OjVweH0uZWwtYmFkZ2VfX2NvbnRlbnQuaXMtZG90e2hlaWdodDo4cHg7d2lkdGg6OHB4O3BhZGRpbmc6MDtyaWdodDowO2JvcmRlci1yYWRpdXM6NTAlfS5lbC1iYWRnZV9fY29udGVudC0tcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkZ9LmVsLWJhZGdlX19jb250ZW50LS1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6IzY3QzIzQX0uZWwtYmFkZ2VfX2NvbnRlbnQtLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojRTZBMjNDfS5lbC1iYWRnZV9fY29udGVudC0taW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiM5MDkzOTl9LmVsLWJhZGdlX19jb250ZW50LS1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojRjU2QzZDfS5lbC1jYXJke2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI0VCRUVGNTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOiMzMDMxMzM7LXdlYmtpdC10cmFuc2l0aW9uOi4zczt0cmFuc2l0aW9uOi4zc30uZWwtY2FyZC5pcy1hbHdheXMtc2hhZG93LC5lbC1jYXJkLmlzLWhvdmVyLXNoYWRvdzpmb2N1cywuZWwtY2FyZC5pcy1ob3Zlci1zaGFkb3c6aG92ZXJ7Ym94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSl9LmVsLWNhcmRfX2hlYWRlcntwYWRkaW5nOjE4cHggMjBweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRUJFRUY1O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtY2FyZF9fYm9keSwuZWwtbWFpbntwYWRkaW5nOjIwcHh9LmVsLXJhdGV7aGVpZ2h0OjIwcHg7bGluZS1oZWlnaHQ6MX0uZWwtcmF0ZTphY3RpdmUsLmVsLXJhdGU6Zm9jdXN7b3V0bGluZS13aWR0aDowfS5lbC1yYXRlX19pdGVte2ZvbnQtc2l6ZTowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZWwtcmF0ZV9faWNvbntmb250LXNpemU6MThweDttYXJnaW4tcmlnaHQ6NnB4O2NvbG9yOiNDMEM0Q0M7LXdlYmtpdC10cmFuc2l0aW9uOi4zczt0cmFuc2l0aW9uOi4zc30uZWwtcmF0ZV9fZGVjaW1hbCwuZWwtcmF0ZV9faWNvbiAucGF0aDJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5lbC1yYXRlX19pY29uLmhvdmVyey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMTUpO3RyYW5zZm9ybTpzY2FsZSgxLjE1KX0uZWwtcmF0ZV9fZGVjaW1hbHtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzpoaWRkZW59LmVsLXN0ZXAuaXMtdmVydGljYWwsLmVsLXN0ZXBze2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveH0uZWwtcmF0ZV9fdGV4dHtmb250LXNpemU6MTRweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXN0ZXBze2Rpc3BsYXk6ZmxleH0uZWwtc3RlcHMtLXNpbXBsZXtwYWRkaW5nOjEzcHggOCU7Ym9yZGVyLXJhZGl1czo0cHg7YmFja2dyb3VuZDojRjVGN0ZBfS5lbC1zdGVwcy0taG9yaXpvbnRhbHt3aGl0ZS1zcGFjZTpub3dyYXB9LmVsLXN0ZXBzLS12ZXJ0aWNhbHtoZWlnaHQ6MTAwJTstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOm5vcm1hbDstbXMtZmxleC1mbG93OmNvbHVtbjtmbGV4LWZsb3c6Y29sdW1ufS5lbC1zdGVwe3Bvc2l0aW9uOnJlbGF0aXZlOy1tcy1mbGV4LW5lZ2F0aXZlOjE7ZmxleC1zaHJpbms6MX0uZWwtc3RlcDpsYXN0LW9mLXR5cGUgLmVsLXN0ZXBfX2xpbmV7ZGlzcGxheTpub25lfS5lbC1zdGVwOmxhc3Qtb2YtdHlwZS5pcy1mbGV4ey1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG8haW1wb3J0YW50O2ZsZXgtYmFzaXM6YXV0byFpbXBvcnRhbnQ7LW1zLWZsZXgtbmVnYXRpdmU6MDtmbGV4LXNocmluazowOy13ZWJraXQtYm94LWZsZXg6MDstbXMtZmxleC1wb3NpdGl2ZTowO2ZsZXgtZ3JvdzowfS5lbC1zdGVwOmxhc3Qtb2YtdHlwZSAuZWwtc3RlcF9fZGVzY3JpcHRpb24sLmVsLXN0ZXA6bGFzdC1vZi10eXBlIC5lbC1zdGVwX19tYWlue3BhZGRpbmctcmlnaHQ6MH0uZWwtc3RlcF9faGVhZHtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5lbC1zdGVwX19oZWFkLmlzLXByb2Nlc3N7Y29sb3I6IzMwMzEzMztib3JkZXItY29sb3I6IzMwMzEzM30uZWwtc3RlcF9faGVhZC5pcy13YWl0e2NvbG9yOiNDMEM0Q0M7Ym9yZGVyLWNvbG9yOiNDMEM0Q0N9LmVsLXN0ZXBfX2hlYWQuaXMtc3VjY2Vzc3tjb2xvcjojNjdDMjNBO2JvcmRlci1jb2xvcjojNjdDMjNBfS5lbC1zdGVwX19oZWFkLmlzLWVycm9ye2NvbG9yOiNGNTZDNkM7Ym9yZGVyLWNvbG9yOiNGNTZDNkN9LmVsLXN0ZXBfX2hlYWQuaXMtZmluaXNoe2NvbG9yOiM0MDlFRkY7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLXN0ZXBfX2ljb257cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxO2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94O2Rpc3BsYXk6LW1zLWlubGluZS1mbGV4Ym94O2Rpc3BsYXk6aW5saW5lLWZsZXg7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O2ZvbnQtc2l6ZToxNHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOiNGRkY7LXdlYmtpdC10cmFuc2l0aW9uOi4xNXMgZWFzZS1vdXQ7dHJhbnNpdGlvbjouMTVzIGVhc2Utb3V0fS5lbC1zdGVwLmlzLWhvcml6b250YWwsLmVsLXN0ZXBfX2ljb24taW5uZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXN0ZXBfX2ljb24uaXMtdGV4dHtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MnB4IHNvbGlkO2JvcmRlci1jb2xvcjppbmhlcml0fS5lbC1zdGVwX19pY29uLmlzLWljb257d2lkdGg6NDBweH0uZWwtc3RlcF9faWNvbi1pbm5lcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MTtjb2xvcjppbmhlcml0fS5lbC1zdGVwX19pY29uLWlubmVyW2NsYXNzKj1lbC1pY29uXTpub3QoLmlzLXN0YXR1cyl7Zm9udC1zaXplOjI1cHg7Zm9udC13ZWlnaHQ6NDAwfS5lbC1zdGVwX19pY29uLWlubmVyLmlzLXN0YXR1c3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDFweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMXB4KX0uZWwtc3RlcF9fbGluZXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItY29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOiNDMEM0Q0N9LmVsLXN0ZXBfX2xpbmUtaW5uZXJ7ZGlzcGxheTpibG9jaztib3JkZXItd2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6aW5oZXJpdDstd2Via2l0LXRyYW5zaXRpb246LjE1cyBlYXNlLW91dDt0cmFuc2l0aW9uOi4xNXMgZWFzZS1vdXQ7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjA7aGVpZ2h0OjB9LmVsLXN0ZXBfX21haW57d2hpdGUtc3BhY2U6bm9ybWFsO3RleHQtYWxpZ246bGVmdH0uZWwtc3RlcF9fdGl0bGV7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MzhweH0uZWwtc3RlcF9fdGl0bGUuaXMtcHJvY2Vzc3tmb250LXdlaWdodDo3MDA7Y29sb3I6IzMwMzEzM30uZWwtc3RlcF9fdGl0bGUuaXMtd2FpdHtjb2xvcjojQzBDNENDfS5lbC1zdGVwX190aXRsZS5pcy1zdWNjZXNze2NvbG9yOiM2N0MyM0F9LmVsLXN0ZXBfX3RpdGxlLmlzLWVycm9ye2NvbG9yOiNGNTZDNkN9LmVsLXN0ZXBfX3RpdGxlLmlzLWZpbmlzaHtjb2xvcjojNDA5RUZGfS5lbC1zdGVwX19kZXNjcmlwdGlvbntwYWRkaW5nLXJpZ2h0OjEwJTttYXJnaW4tdG9wOi01cHg7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MjBweDtmb250LXdlaWdodDo0MDB9LmVsLXN0ZXBfX2Rlc2NyaXB0aW9uLmlzLXByb2Nlc3N7Y29sb3I6IzMwMzEzM30uZWwtc3RlcF9fZGVzY3JpcHRpb24uaXMtd2FpdHtjb2xvcjojQzBDNENDfS5lbC1zdGVwX19kZXNjcmlwdGlvbi5pcy1zdWNjZXNze2NvbG9yOiM2N0MyM0F9LmVsLXN0ZXBfX2Rlc2NyaXB0aW9uLmlzLWVycm9ye2NvbG9yOiNGNTZDNkN9LmVsLXN0ZXBfX2Rlc2NyaXB0aW9uLmlzLWZpbmlzaHtjb2xvcjojNDA5RUZGfS5lbC1zdGVwLmlzLWhvcml6b250YWwgLmVsLXN0ZXBfX2xpbmV7aGVpZ2h0OjJweDt0b3A6MTFweDtsZWZ0OjA7cmlnaHQ6MH0uZWwtc3RlcC5pcy12ZXJ0aWNhbHtkaXNwbGF5OmZsZXh9LmVsLXN0ZXAuaXMtdmVydGljYWwgLmVsLXN0ZXBfX2hlYWR7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4LXBvc2l0aXZlOjA7ZmxleC1ncm93OjA7d2lkdGg6MjRweH0uZWwtc3RlcC5pcy12ZXJ0aWNhbCAuZWwtc3RlcF9fbWFpbntwYWRkaW5nLWxlZnQ6MTBweDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXgtcG9zaXRpdmU6MTtmbGV4LWdyb3c6MX0uZWwtc3RlcC5pcy12ZXJ0aWNhbCAuZWwtc3RlcF9fdGl0bGV7bGluZS1oZWlnaHQ6MjRweDtwYWRkaW5nLWJvdHRvbTo4cHh9LmVsLXN0ZXAuaXMtdmVydGljYWwgLmVsLXN0ZXBfX2xpbmV7d2lkdGg6MnB4O3RvcDowO2JvdHRvbTowO2xlZnQ6MTFweH0uZWwtc3RlcC5pcy12ZXJ0aWNhbCAuZWwtc3RlcF9faWNvbi5pcy1pY29ue3dpZHRoOjI0cHh9LmVsLXN0ZXAuaXMtY2VudGVyIC5lbC1zdGVwX19oZWFkLC5lbC1zdGVwLmlzLWNlbnRlciAuZWwtc3RlcF9fbWFpbnt0ZXh0LWFsaWduOmNlbnRlcn0uZWwtc3RlcC5pcy1jZW50ZXIgLmVsLXN0ZXBfX2Rlc2NyaXB0aW9ue3BhZGRpbmctbGVmdDoyMCU7cGFkZGluZy1yaWdodDoyMCV9LmVsLXN0ZXAuaXMtY2VudGVyIC5lbC1zdGVwX19saW5le2xlZnQ6NTAlO3JpZ2h0Oi01MCV9LmVsLXN0ZXAuaXMtc2ltcGxle2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX19oZWFke3dpZHRoOmF1dG87Zm9udC1zaXplOjA7cGFkZGluZy1yaWdodDoxMHB4fS5lbC1zdGVwLmlzLXNpbXBsZSAuZWwtc3RlcF9faWNvbntiYWNrZ3JvdW5kOjAgMDt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2ZvbnQtc2l6ZToxMnB4fS5lbC1zdGVwLmlzLXNpbXBsZSAuZWwtc3RlcF9faWNvbi1pbm5lcltjbGFzcyo9ZWwtaWNvbl06bm90KC5pcy1zdGF0dXMpe2ZvbnQtc2l6ZToxOHB4fS5lbC1zdGVwLmlzLXNpbXBsZSAuZWwtc3RlcF9faWNvbi1pbm5lci5pcy1zdGF0dXN7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjgpIHRyYW5zbGF0ZVkoMXB4KTt0cmFuc2Zvcm06c2NhbGUoLjgpIHRyYW5zbGF0ZVkoMXB4KX0uZWwtc3RlcC5pcy1zaW1wbGUgLmVsLXN0ZXBfX21haW57cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpzdHJldGNoOy1tcy1mbGV4LWFsaWduOnN0cmV0Y2g7YWxpZ24taXRlbXM6c3RyZXRjaDstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXgtcG9zaXRpdmU6MTtmbGV4LWdyb3c6MX0uZWwtc3RlcC5pcy1zaW1wbGUgLmVsLXN0ZXBfX3RpdGxle2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjIwcHh9LmVsLXN0ZXAuaXMtc2ltcGxlOm5vdCg6bGFzdC1vZi10eXBlKSAuZWwtc3RlcF9fdGl0bGV7bWF4LXdpZHRoOjUwJTt3b3JkLWJyZWFrOmJyZWFrLWFsbH0uZWwtc3RlcC5pcy1zaW1wbGUgLmVsLXN0ZXBfX2Fycm93ey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleC1wb3NpdGl2ZToxO2ZsZXgtZ3JvdzoxO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uZWwtc3RlcC5pcy1zaW1wbGUgLmVsLXN0ZXBfX2Fycm93OjphZnRlciwuZWwtc3RlcC5pcy1zaW1wbGUgLmVsLXN0ZXBfX2Fycm93OjpiZWZvcmV7Y29udGVudDonJztkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6MTVweDt3aWR0aDoxcHg7YmFja2dyb3VuZDojQzBDNENDfS5lbC1zdGVwLmlzLXNpbXBsZSAuZWwtc3RlcF9fYXJyb3c6OmJlZm9yZXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGVZKC00cHgpO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGVZKC00cHgpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDB9LmVsLXN0ZXAuaXMtc2ltcGxlIC5lbC1zdGVwX19hcnJvdzo6YWZ0ZXJ7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKDRweCk7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSg0cHgpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCU7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9LmVsLXN0ZXAuaXMtc2ltcGxlOmxhc3Qtb2YtdHlwZSAuZWwtc3RlcF9fYXJyb3d7ZGlzcGxheTpub25lfS5lbC1jYXJvdXNlbHtwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtY2Fyb3VzZWwtLWhvcml6b250YWx7b3ZlcmZsb3cteDpoaWRkZW59LmVsLWNhcm91c2VsLS12ZXJ0aWNhbHtvdmVyZmxvdy15OmhpZGRlbn0uZWwtY2Fyb3VzZWxfX2NvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MzAwcHh9LmVsLWNhcm91c2VsX19hcnJvd3tib3JkZXI6bm9uZTtvdXRsaW5lOjA7cGFkZGluZzowO21hcmdpbjowO2hlaWdodDozNnB4O3dpZHRoOjM2cHg7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOi4zczt0cmFuc2l0aW9uOi4zcztib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMzEsNDUsNjEsLjExKTtjb2xvcjojRkZGO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7ei1pbmRleDoxMDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMnB4fS5lbC1jYXJvdXNlbF9fYXJyb3ctLWxlZnR7bGVmdDoxNnB4fS5lbC1jYXJvdXNlbF9fYXJyb3c6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDMxLDQ1LDYxLC4yMyl9LmVsLWNhcm91c2VsX19hcnJvdyBpe2N1cnNvcjpwb2ludGVyfS5lbC1jYXJvdXNlbF9faW5kaWNhdG9yc3twb3NpdGlvbjphYnNvbHV0ZTtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO3otaW5kZXg6Mn0uZWwtY2Fyb3VzZWxfX2luZGljYXRvcnMtLWhvcml6b250YWx7Ym90dG9tOjA7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0uZWwtY2Fyb3VzZWxfX2luZGljYXRvcnMtLXZlcnRpY2Fse3JpZ2h0OjA7dG9wOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5lbC1jYXJvdXNlbF9faW5kaWNhdG9ycy0tb3V0c2lkZXtib3R0b206MjZweDt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjpzdGF0aWM7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX0uZWwtY2Fyb3VzZWxfX2luZGljYXRvcnMtLW91dHNpZGUgLmVsLWNhcm91c2VsX19pbmRpY2F0b3I6aG92ZXIgYnV0dG9ue29wYWNpdHk6LjY0fS5lbC1jYXJvdXNlbF9faW5kaWNhdG9ycy0tb3V0c2lkZSBidXR0b257YmFja2dyb3VuZC1jb2xvcjojQzBDNENDO29wYWNpdHk6LjI0fS5lbC1jYXJvdXNlbF9faW5kaWNhdG9ycy0tbGFiZWxze2xlZnQ6MDtyaWdodDowOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLWNhcm91c2VsX19pbmRpY2F0b3JzLS1sYWJlbHMgLmVsLWNhcm91c2VsX19idXR0b257aGVpZ2h0OmF1dG87d2lkdGg6YXV0bztwYWRkaW5nOjJweCAxOHB4O2ZvbnQtc2l6ZToxMnB4fS5lbC1jYXJvdXNlbF9faW5kaWNhdG9ycy0tbGFiZWxzIC5lbC1jYXJvdXNlbF9faW5kaWNhdG9ye3BhZGRpbmc6NnB4IDRweH0uZWwtY2Fyb3VzZWxfX2luZGljYXRvcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpwb2ludGVyfS5lbC1jYXJvdXNlbF9faW5kaWNhdG9yOmhvdmVyIGJ1dHRvbntvcGFjaXR5Oi43Mn0uZWwtY2Fyb3VzZWxfX2luZGljYXRvci0taG9yaXpvbnRhbHtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjEycHggNHB4fS5lbC1jYXJvdXNlbF9faW5kaWNhdG9yLS12ZXJ0aWNhbHtwYWRkaW5nOjRweCAxMnB4fS5lbC1jYXJvdXNlbF9faW5kaWNhdG9yLS12ZXJ0aWNhbCAuZWwtY2Fyb3VzZWxfX2J1dHRvbnt3aWR0aDoycHg7aGVpZ2h0OjE1cHh9LmVsLWNhcm91c2VsX19pbmRpY2F0b3IuaXMtYWN0aXZlIGJ1dHRvbntvcGFjaXR5OjF9LmVsLWNhcm91c2VsX19idXR0b257ZGlzcGxheTpibG9jaztvcGFjaXR5Oi40ODt3aWR0aDozMHB4O2hlaWdodDoycHg7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JvcmRlcjpub25lO291dGxpbmU6MDtwYWRkaW5nOjA7bWFyZ2luOjA7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOi4zczt0cmFuc2l0aW9uOi4zc30uZWwtY2Fyb3VzZWxfX2l0ZW0sLmVsLWNhcm91c2VsX19tYXNre2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uY2Fyb3VzZWwtYXJyb3ctbGVmdC1lbnRlciwuY2Fyb3VzZWwtYXJyb3ctbGVmdC1sZWF2ZS1hY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC0xMHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC0xMHB4KTtvcGFjaXR5OjB9LmNhcm91c2VsLWFycm93LXJpZ2h0LWVudGVyLC5jYXJvdXNlbC1hcnJvdy1yaWdodC1sZWF2ZS1hY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKDEwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoMTBweCk7b3BhY2l0eTowfS5lbC1jYXJvdXNlbF9faXRlbXt3aWR0aDoxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmhpZGRlbjt6LWluZGV4OjB9LmVsLWNhcm91c2VsX19pdGVtLmlzLWFjdGl2ZXt6LWluZGV4OjJ9LmVsLWNhcm91c2VsX19pdGVtLmlzLWFuaW1hdGluZ3std2Via2l0LXRyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjRzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjRzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246dHJhbnNmb3JtIC40cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNHMgZWFzZS1pbi1vdXQsLXdlYmtpdC10cmFuc2Zvcm0gLjRzIGVhc2UtaW4tb3V0fS5lbC1jYXJvdXNlbF9faXRlbS0tY2FyZHt3aWR0aDo1MCU7LXdlYmtpdC10cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC40cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC40cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNHMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjRzIGVhc2UtaW4tb3V0LC13ZWJraXQtdHJhbnNmb3JtIC40cyBlYXNlLWluLW91dH0uZWwtY2Fyb3VzZWxfX2l0ZW0tLWNhcmQuaXMtaW4tc3RhZ2V7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoxfS5lbC1jYXJvdXNlbF9faXRlbS0tY2FyZC5pcy1pbi1zdGFnZS5pcy1ob3ZlciAuZWwtY2Fyb3VzZWxfX21hc2ssLmVsLWNhcm91c2VsX19pdGVtLS1jYXJkLmlzLWluLXN0YWdlOmhvdmVyIC5lbC1jYXJvdXNlbF9fbWFza3tvcGFjaXR5Oi4xMn0uZWwtY2Fyb3VzZWxfX2l0ZW0tLWNhcmQuaXMtYWN0aXZle3otaW5kZXg6Mn0uZWwtY2Fyb3VzZWxfX21hc2t7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7b3BhY2l0eTouMjQ7LXdlYmtpdC10cmFuc2l0aW9uOi4yczt0cmFuc2l0aW9uOi4yc30uZmFkZS1pbi1saW5lYXItZW50ZXItYWN0aXZlLC5mYWRlLWluLWxpbmVhci1sZWF2ZS1hY3RpdmV7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGxpbmVhcjt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGxpbmVhcn0uZmFkZS1pbi1saW5lYXItZW50ZXIsLmZhZGUtaW4tbGluZWFyLWxlYXZlLC5mYWRlLWluLWxpbmVhci1sZWF2ZS1hY3RpdmV7b3BhY2l0eTowfS5lbC1mYWRlLWluLWxpbmVhci1lbnRlci1hY3RpdmUsLmVsLWZhZGUtaW4tbGluZWFyLWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuMnMgbGluZWFyO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgbGluZWFyfS5lbC1mYWRlLWluLWxpbmVhci1lbnRlciwuZWwtZmFkZS1pbi1saW5lYXItbGVhdmUsLmVsLWZhZGUtaW4tbGluZWFyLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjB9LmVsLWZhZGUtaW4tZW50ZXItYWN0aXZlLC5lbC1mYWRlLWluLWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjU1LDAsLjEsMSk7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguNTUsMCwuMSwxKX0uZWwtZmFkZS1pbi1lbnRlciwuZWwtZmFkZS1pbi1sZWF2ZS1hY3RpdmV7b3BhY2l0eTowfS5lbC16b29tLWluLWNlbnRlci1lbnRlci1hY3RpdmUsLmVsLXpvb20taW4tY2VudGVyLWxlYXZlLWFjdGl2ZXstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjU1LDAsLjEsMSk7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguNTUsMCwuMSwxKX0uZWwtem9vbS1pbi1jZW50ZXItZW50ZXIsLmVsLXpvb20taW4tY2VudGVyLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVYKDApO3RyYW5zZm9ybTpzY2FsZVgoMCl9LmVsLXpvb20taW4tdG9wLWVudGVyLWFjdGl2ZSwuZWwtem9vbS1pbi10b3AtbGVhdmUtYWN0aXZle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZVkoMSk7dHJhbnNmb3JtOnNjYWxlWSgxKTstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKSwtd2Via2l0LXRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSksLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSksb3BhY2l0eSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKSxvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpLC13ZWJraXQtdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgdG9wO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIHRvcH0uZWwtem9vbS1pbi10b3AtZW50ZXIsLmVsLXpvb20taW4tdG9wLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKDApO3RyYW5zZm9ybTpzY2FsZVkoMCl9LmVsLXpvb20taW4tYm90dG9tLWVudGVyLWFjdGl2ZSwuZWwtem9vbS1pbi1ib3R0b20tbGVhdmUtYWN0aXZle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZVkoMSk7dHJhbnNmb3JtOnNjYWxlWSgxKTstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKSwtd2Via2l0LXRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSksLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSksb3BhY2l0eSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKSxvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpLC13ZWJraXQtdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgYm90dG9tO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGJvdHRvbX0uZWwtem9vbS1pbi1ib3R0b20tZW50ZXIsLmVsLXpvb20taW4tYm90dG9tLWxlYXZlLWFjdGl2ZXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKDApO3RyYW5zZm9ybTpzY2FsZVkoMCl9LmVsLXpvb20taW4tbGVmdC1lbnRlci1hY3RpdmUsLmVsLXpvb20taW4tbGVmdC1sZWF2ZS1hY3RpdmV7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEsMSk7dHJhbnNmb3JtOnNjYWxlKDEsMSk7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSksLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpLC13ZWJraXQtdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpLG9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllciguMjMsMSwuMzIsMSksb3BhY2l0eSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKSwtd2Via2l0LXRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46dG9wIGxlZnQ7dHJhbnNmb3JtLW9yaWdpbjp0b3AgbGVmdH0uZWwtem9vbS1pbi1sZWZ0LWVudGVyLC5lbC16b29tLWluLWxlZnQtbGVhdmUtYWN0aXZle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguNDUsLjQ1KTt0cmFuc2Zvcm06c2NhbGUoLjQ1LC40NSl9LmNvbGxhcHNlLXRyYW5zaXRpb257LXdlYmtpdC10cmFuc2l0aW9uOi4zcyBoZWlnaHQgZWFzZS1pbi1vdXQsLjNzIHBhZGRpbmctdG9wIGVhc2UtaW4tb3V0LC4zcyBwYWRkaW5nLWJvdHRvbSBlYXNlLWluLW91dDt0cmFuc2l0aW9uOi4zcyBoZWlnaHQgZWFzZS1pbi1vdXQsLjNzIHBhZGRpbmctdG9wIGVhc2UtaW4tb3V0LC4zcyBwYWRkaW5nLWJvdHRvbSBlYXNlLWluLW91dH0uaG9yaXpvbnRhbC1jb2xsYXBzZS10cmFuc2l0aW9uey13ZWJraXQtdHJhbnNpdGlvbjouM3Mgd2lkdGggZWFzZS1pbi1vdXQsLjNzIHBhZGRpbmctbGVmdCBlYXNlLWluLW91dCwuM3MgcGFkZGluZy1yaWdodCBlYXNlLWluLW91dDt0cmFuc2l0aW9uOi4zcyB3aWR0aCBlYXNlLWluLW91dCwuM3MgcGFkZGluZy1sZWZ0IGVhc2UtaW4tb3V0LC4zcyBwYWRkaW5nLXJpZ2h0IGVhc2UtaW4tb3V0fS5lbC1saXN0LWVudGVyLWFjdGl2ZSwuZWwtbGlzdC1sZWF2ZS1hY3RpdmV7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAxczt0cmFuc2l0aW9uOmFsbCAxc30uZWwtbGlzdC1lbnRlciwuZWwtbGlzdC1sZWF2ZS1hY3RpdmV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTMwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0zMHB4KX0uZWwtb3BhY2l0eS10cmFuc2l0aW9uey13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjU1LDAsLjEsMSk7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBjdWJpYy1iZXppZXIoLjU1LDAsLjEsMSl9LmVsLWNvbGxhcHNle2JvcmRlci10b3A6MXB4IHNvbGlkICNFQkVFRjU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0VCRUVGNX0uZWwtY29sbGFwc2UtaXRlbS5pcy1kaXNhYmxlZCAuZWwtY29sbGFwc2UtaXRlbV9faGVhZGVye2NvbG9yOiNiYmI7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1jb2xsYXBzZS1pdGVtX19oZWFkZXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6NDhweDtsaW5lLWhlaWdodDo0OHB4O2JhY2tncm91bmQtY29sb3I6I0ZGRjtjb2xvcjojMzAzMTMzO2N1cnNvcjpwb2ludGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFQkVFRjU7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTAwOy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItYm90dG9tLWNvbG9yIC4zczt0cmFuc2l0aW9uOmJvcmRlci1ib3R0b20tY29sb3IgLjNzO291dGxpbmU6MH0uZWwtY29sbGFwc2UtaXRlbV9fYXJyb3d7bWFyZ2luOjAgOHB4IDAgYXV0bzstd2Via2l0LXRyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zczt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MsLXdlYmtpdC10cmFuc2Zvcm0gLjNzO2ZvbnQtd2VpZ2h0OjMwMH0uZWwtY29sbGFwc2UtaXRlbV9fYXJyb3cuaXMtYWN0aXZley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LmVsLWNvbGxhcHNlLWl0ZW1fX2hlYWRlci5mb2N1c2luZzpmb2N1czpub3QoOmhvdmVyKXtjb2xvcjojNDA5RUZGfS5lbC1jb2xsYXBzZS1pdGVtX19oZWFkZXIuaXMtYWN0aXZle2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnR9LmVsLWNvbGxhcHNlLWl0ZW1fX3dyYXB7d2lsbC1jaGFuZ2U6aGVpZ2h0O2JhY2tncm91bmQtY29sb3I6I0ZGRjtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFQkVFRjV9LmVsLWNhc2NhZGVyX19zZWFyY2gtaW5wdXQsLmVsLWNhc2NhZGVyX190YWdzLC5lbC10YWd7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWNvbGxhcHNlLWl0ZW1fX2NvbnRlbnR7cGFkZGluZy1ib3R0b206MjVweDtmb250LXNpemU6MTNweDtjb2xvcjojMzAzMTMzO2xpbmUtaGVpZ2h0OjEuNzY5MjMwNzY5MjMwNzY5fS5lbC1jb2xsYXBzZS1pdGVtOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTotMXB4fS5lbC1wb3BwZXIgLnBvcHBlcl9fYXJyb3csLmVsLXBvcHBlciAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jazt3aWR0aDowO2hlaWdodDowO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWR9LmVsLWNhc2NhZGVyLC5lbC10YWd7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsLXBvcHBlciAucG9wcGVyX19hcnJvd3tib3JkZXItd2lkdGg6NnB4Oy13ZWJraXQtZmlsdGVyOmRyb3Atc2hhZG93KDAgMnB4IDEycHggcmdiYSgwLCAwLCAwLCAuMDMpKTtmaWx0ZXI6ZHJvcC1zaGFkb3coMCAycHggMTJweCByZ2JhKDAsIDAsIDAsIC4wMykpfS5lbC1wb3BwZXIgLnBvcHBlcl9fYXJyb3c6OmFmdGVye2NvbnRlbnQ6XFxcIiBcXFwiO2JvcmRlci13aWR0aDo2cHh9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49dG9wXXttYXJnaW4tYm90dG9tOjEycHh9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49dG9wXSAucG9wcGVyX19hcnJvd3tib3R0b206LTZweDtsZWZ0OjUwJTttYXJnaW4tcmlnaHQ6M3B4O2JvcmRlci10b3AtY29sb3I6I0VCRUVGNTtib3JkZXItYm90dG9tLXdpZHRoOjB9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49dG9wXSAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7Ym90dG9tOjFweDttYXJnaW4tbGVmdDotNnB4O2JvcmRlci10b3AtY29sb3I6I0ZGRjtib3JkZXItYm90dG9tLXdpZHRoOjB9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49Ym90dG9tXXttYXJnaW4tdG9wOjEycHh9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49Ym90dG9tXSAucG9wcGVyX19hcnJvd3t0b3A6LTZweDtsZWZ0OjUwJTttYXJnaW4tcmlnaHQ6M3B4O2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiNFQkVFRjV9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49Ym90dG9tXSAucG9wcGVyX19hcnJvdzo6YWZ0ZXJ7dG9wOjFweDttYXJnaW4tbGVmdDotNnB4O2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiNGRkZ9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49cmlnaHRde21hcmdpbi1sZWZ0OjEycHh9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49cmlnaHRdIC5wb3BwZXJfX2Fycm93e3RvcDo1MCU7bGVmdDotNnB4O21hcmdpbi1ib3R0b206M3B4O2JvcmRlci1yaWdodC1jb2xvcjojRUJFRUY1O2JvcmRlci1sZWZ0LXdpZHRoOjB9LmVsLXBvcHBlclt4LXBsYWNlbWVudF49cmlnaHRdIC5wb3BwZXJfX2Fycm93OjphZnRlcntib3R0b206LTZweDtsZWZ0OjFweDtib3JkZXItcmlnaHQtY29sb3I6I0ZGRjtib3JkZXItbGVmdC13aWR0aDowfS5lbC1wb3BwZXJbeC1wbGFjZW1lbnRePWxlZnRde21hcmdpbi1yaWdodDoxMnB4fS5lbC1wb3BwZXJbeC1wbGFjZW1lbnRePWxlZnRdIC5wb3BwZXJfX2Fycm93e3RvcDo1MCU7cmlnaHQ6LTZweDttYXJnaW4tYm90dG9tOjNweDtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdC1jb2xvcjojRUJFRUY1fS5lbC1wb3BwZXJbeC1wbGFjZW1lbnRePWxlZnRdIC5wb3BwZXJfX2Fycm93OjphZnRlcntyaWdodDoxcHg7Ym90dG9tOi02cHg7bWFyZ2luLWxlZnQ6LTZweDtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdC1jb2xvcjojRkZGfS5lbC10YWd7YmFja2dyb3VuZC1jb2xvcjojZWNmNWZmO2JvcmRlci1jb2xvcjojZDllY2ZmO2hlaWdodDozMnB4O3BhZGRpbmc6MCAxMHB4O2xpbmUtaGVpZ2h0OjMwcHg7Zm9udC1zaXplOjEycHg7Y29sb3I6IzQwOUVGRjtib3JkZXItd2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2hpdGUtc3BhY2U6bm93cmFwfS5lbC10YWcuaXMtaGl0e2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC10YWcgLmVsLXRhZ19fY2xvc2V7Y29sb3I6IzQwOWVmZn0uZWwtdGFnIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojNDA5ZWZmfS5lbC10YWcuZWwtdGFnLS1pbmZve2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNTtib3JkZXItY29sb3I6I2U5ZTllYjtjb2xvcjojOTA5Mzk5fS5lbC10YWcuZWwtdGFnLS1pbmZvLmlzLWhpdHtib3JkZXItY29sb3I6IzkwOTM5OX0uZWwtdGFnLmVsLXRhZy0taW5mbyAuZWwtdGFnX19jbG9zZXtjb2xvcjojOTA5Mzk5fS5lbC10YWcuZWwtdGFnLS1pbmZvIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojOTA5Mzk5fS5lbC10YWcuZWwtdGFnLS1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6I2YwZjllYjtib3JkZXItY29sb3I6I2UxZjNkODtjb2xvcjojNjdjMjNhfS5lbC10YWcuZWwtdGFnLS1zdWNjZXNzLmlzLWhpdHtib3JkZXItY29sb3I6IzY3QzIzQX0uZWwtdGFnLmVsLXRhZy0tc3VjY2VzcyAuZWwtdGFnX19jbG9zZXtjb2xvcjojNjdjMjNhfS5lbC10YWcuZWwtdGFnLS1zdWNjZXNzIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojNjdjMjNhfS5lbC10YWcuZWwtdGFnLS13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZkZjZlYztib3JkZXItY29sb3I6I2ZhZWNkODtjb2xvcjojZTZhMjNjfS5lbC10YWcuZWwtdGFnLS13YXJuaW5nLmlzLWhpdHtib3JkZXItY29sb3I6I0U2QTIzQ30uZWwtdGFnLmVsLXRhZy0td2FybmluZyAuZWwtdGFnX19jbG9zZXtjb2xvcjojZTZhMjNjfS5lbC10YWcuZWwtdGFnLS13YXJuaW5nIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojZTZhMjNjfS5lbC10YWcuZWwtdGFnLS1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojZmVmMGYwO2JvcmRlci1jb2xvcjojZmRlMmUyO2NvbG9yOiNmNTZjNmN9LmVsLXRhZy5lbC10YWctLWRhbmdlci5pcy1oaXR7Ym9yZGVyLWNvbG9yOiNGNTZDNkN9LmVsLXRhZy5lbC10YWctLWRhbmdlciAuZWwtdGFnX19jbG9zZXtjb2xvcjojZjU2YzZjfS5lbC10YWcuZWwtdGFnLS1kYW5nZXIgLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNmNTZjNmN9LmVsLXRhZyAuZWwtaWNvbi1jbG9zZXtib3JkZXItcmFkaXVzOjUwJTt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTJweDtoZWlnaHQ6MTZweDt3aWR0aDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3RvcDotMXB4O3JpZ2h0Oi01cHh9LmVsLXRhZyAuZWwtaWNvbi1jbG9zZTo6YmVmb3Jle2Rpc3BsYXk6YmxvY2t9LmVsLXRhZy0tZGFya3tiYWNrZ3JvdW5kLWNvbG9yOiM0MDllZmY7Ym9yZGVyLWNvbG9yOiM0MDllZmY7Y29sb3I6I2ZmZn0uZWwtdGFnLS1kYXJrLmlzLWhpdHtib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtdGFnLS1kYXJrIC5lbC10YWdfX2Nsb3Nle2NvbG9yOiNmZmZ9LmVsLXRhZy0tZGFyayAuZWwtdGFnX19jbG9zZTpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6IzY2YjFmZn0uZWwtdGFnLS1kYXJrLmVsLXRhZy0taW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiM5MDkzOTk7Ym9yZGVyLWNvbG9yOiM5MDkzOTk7Y29sb3I6I2ZmZn0uZWwtdGFnLS1kYXJrLmVsLXRhZy0taW5mby5pcy1oaXR7Ym9yZGVyLWNvbG9yOiM5MDkzOTl9LmVsLXRhZy0tZGFyay5lbC10YWctLWluZm8gLmVsLXRhZ19fY2xvc2V7Y29sb3I6I2ZmZn0uZWwtdGFnLS1kYXJrLmVsLXRhZy0taW5mbyAuZWwtdGFnX19jbG9zZTpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6I2E2YTlhZH0uZWwtdGFnLS1kYXJrLmVsLXRhZy0tc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM2N2MyM2E7Ym9yZGVyLWNvbG9yOiM2N2MyM2E7Y29sb3I6I2ZmZn0uZWwtdGFnLS1kYXJrLmVsLXRhZy0tc3VjY2Vzcy5pcy1oaXR7Ym9yZGVyLWNvbG9yOiM2N0MyM0F9LmVsLXRhZy0tZGFyay5lbC10YWctLXN1Y2Nlc3MgLmVsLXRhZ19fY2xvc2V7Y29sb3I6I2ZmZn0uZWwtdGFnLS1kYXJrLmVsLXRhZy0tc3VjY2VzcyAuZWwtdGFnX19jbG9zZTpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6Izg1Y2U2MX0uZWwtdGFnLS1kYXJrLmVsLXRhZy0td2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNlNmEyM2M7Ym9yZGVyLWNvbG9yOiNlNmEyM2M7Y29sb3I6I2ZmZn0uZWwtdGFnLS1kYXJrLmVsLXRhZy0td2FybmluZy5pcy1oaXR7Ym9yZGVyLWNvbG9yOiNFNkEyM0N9LmVsLXRhZy0tZGFyay5lbC10YWctLXdhcm5pbmcgLmVsLXRhZ19fY2xvc2V7Y29sb3I6I2ZmZn0uZWwtdGFnLS1kYXJrLmVsLXRhZy0td2FybmluZyAuZWwtdGFnX19jbG9zZTpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6I2ViYjU2M30uZWwtdGFnLS1kYXJrLmVsLXRhZy0tZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2Y1NmM2Yztib3JkZXItY29sb3I6I2Y1NmM2Yztjb2xvcjojZmZmfS5lbC10YWctLWRhcmsuZWwtdGFnLS1kYW5nZXIuaXMtaGl0e2JvcmRlci1jb2xvcjojRjU2QzZDfS5lbC10YWctLWRhcmsuZWwtdGFnLS1kYW5nZXIgLmVsLXRhZ19fY2xvc2V7Y29sb3I6I2ZmZn0uZWwtdGFnLS1kYXJrLmVsLXRhZy0tZGFuZ2VyIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojZjc4OTg5fS5lbC10YWctLXBsYWlue2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2IzZDhmZjtjb2xvcjojNDA5ZWZmfS5lbC10YWctLXBsYWluLmlzLWhpdHtib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtdGFnLS1wbGFpbiAuZWwtdGFnX19jbG9zZXtjb2xvcjojNDA5ZWZmfS5lbC10YWctLXBsYWluIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojNDA5ZWZmfS5lbC10YWctLXBsYWluLmVsLXRhZy0taW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNkM2Q0ZDY7Y29sb3I6IzkwOTM5OX0uZWwtdGFnLS1wbGFpbi5lbC10YWctLWluZm8uaXMtaGl0e2JvcmRlci1jb2xvcjojOTA5Mzk5fS5lbC10YWctLXBsYWluLmVsLXRhZy0taW5mbyAuZWwtdGFnX19jbG9zZXtjb2xvcjojOTA5Mzk5fS5lbC10YWctLXBsYWluLmVsLXRhZy0taW5mbyAuZWwtdGFnX19jbG9zZTpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6IzkwOTM5OX0uZWwtdGFnLS1wbGFpbi5lbC10YWctLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojYzJlN2IwO2NvbG9yOiM2N2MyM2F9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS1zdWNjZXNzLmlzLWhpdHtib3JkZXItY29sb3I6IzY3QzIzQX0uZWwtdGFnLS1wbGFpbi5lbC10YWctLXN1Y2Nlc3MgLmVsLXRhZ19fY2xvc2V7Y29sb3I6IzY3YzIzYX0uZWwtdGFnLS1wbGFpbi5lbC10YWctLXN1Y2Nlc3MgLmVsLXRhZ19fY2xvc2U6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM2N2MyM2F9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2Y1ZGFiMTtjb2xvcjojZTZhMjNjfS5lbC10YWctLXBsYWluLmVsLXRhZy0td2FybmluZy5pcy1oaXR7Ym9yZGVyLWNvbG9yOiNFNkEyM0N9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS13YXJuaW5nIC5lbC10YWdfX2Nsb3Nle2NvbG9yOiNlNmEyM2N9LmVsLXRhZy0tcGxhaW4uZWwtdGFnLS13YXJuaW5nIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojZTZhMjNjfS5lbC10YWctLXBsYWluLmVsLXRhZy0tZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2ZiYzRjNDtjb2xvcjojZjU2YzZjfS5lbC10YWctLXBsYWluLmVsLXRhZy0tZGFuZ2VyLmlzLWhpdHtib3JkZXItY29sb3I6I0Y1NkM2Q30uZWwtdGFnLS1wbGFpbi5lbC10YWctLWRhbmdlciAuZWwtdGFnX19jbG9zZXtjb2xvcjojZjU2YzZjfS5lbC10YWctLXBsYWluLmVsLXRhZy0tZGFuZ2VyIC5lbC10YWdfX2Nsb3NlOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojZjU2YzZjfS5lbC10YWctLW1lZGl1bXtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyNnB4fS5lbC10YWctLW1lZGl1bSAuZWwtaWNvbi1jbG9zZXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguOCk7dHJhbnNmb3JtOnNjYWxlKC44KX0uZWwtdGFnLS1zbWFsbHtoZWlnaHQ6MjRweDtwYWRkaW5nOjAgOHB4O2xpbmUtaGVpZ2h0OjIycHh9LmVsLXRhZy0tc21hbGwgLmVsLWljb24tY2xvc2V7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjgpO3RyYW5zZm9ybTpzY2FsZSguOCl9LmVsLXRhZy0tbWluaXtoZWlnaHQ6MjBweDtwYWRkaW5nOjAgNXB4O2xpbmUtaGVpZ2h0OjE5cHh9LmVsLXRhZy0tbWluaSAuZWwtaWNvbi1jbG9zZXttYXJnaW4tbGVmdDotM3B4Oy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC43KTt0cmFuc2Zvcm06c2NhbGUoLjcpfS5lbC1jYXNjYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDo0MHB4fS5lbC1jYXNjYWRlcjpub3QoLmlzLWRpc2FibGVkKTpob3ZlciAuZWwtaW5wdXRfX2lubmVye2N1cnNvcjpwb2ludGVyO2JvcmRlci1jb2xvcjojQzBDNENDfS5lbC1jYXNjYWRlciAuZWwtaW5wdXQgLmVsLWlucHV0X19pbm5lcjpmb2N1cywuZWwtY2FzY2FkZXIgLmVsLWlucHV0LmlzLWZvY3VzIC5lbC1pbnB1dF9faW5uZXJ7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLWNhc2NhZGVyIC5lbC1pbnB1dHtjdXJzb3I6cG9pbnRlcn0uZWwtY2FzY2FkZXIgLmVsLWlucHV0IC5lbC1pbnB1dF9faW5uZXJ7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uZWwtY2FzY2FkZXIgLmVsLWlucHV0IC5lbC1pY29uLWFycm93LWRvd257LXdlYmtpdC10cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4zczt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4zczt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzLC13ZWJraXQtdHJhbnNmb3JtIC4zcztmb250LXNpemU6MTRweH0uZWwtY2FzY2FkZXIgLmVsLWlucHV0IC5lbC1pY29uLWFycm93LWRvd24uaXMtcmV2ZXJzZXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVaKDE4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZVooMTgwZGVnKX0uZWwtY2FzY2FkZXIgLmVsLWlucHV0IC5lbC1pY29uLWNpcmNsZS1jbG9zZTpob3Zlcntjb2xvcjojOTA5Mzk5fS5lbC1jYXNjYWRlci0tbWVkaXVte2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjM2cHh9LmVsLWNhc2NhZGVyLS1zbWFsbHtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDozMnB4fS5lbC1jYXNjYWRlci0tbWluaXtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoyOHB4fS5lbC1jYXNjYWRlci5pcy1kaXNhYmxlZCAuZWwtY2FzY2FkZXJfX2xhYmVse3otaW5kZXg6Mjtjb2xvcjojQzBDNENDfS5lbC1jYXNjYWRlcl9fZHJvcGRvd257bWFyZ2luOjVweCAwO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQ6I0ZGRjtib3JkZXI6MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNoYWRvdzowIDJweCAxMnB4IDAgcmdiYSgwLDAsMCwuMSl9LmVsLWNhc2NhZGVyX190YWdze3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDozMHB4O3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDtsaW5lLWhlaWdodDpub3JtYWw7dGV4dC1hbGlnbjpsZWZ0O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtY2FzY2FkZXJfX3RhZ3MgLmVsLXRhZ3tkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21heC13aWR0aDoxMDAlO21hcmdpbjoycHggMCAycHggNnB4O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7YmFja2dyb3VuZDojZjBmMmY1fS5lbC1jYXNjYWRlcl9fdGFncyAuZWwtdGFnOm5vdCguaXMtaGl0KXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LmVsLWNhc2NhZGVyX190YWdzIC5lbC10YWc+c3Bhbnstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjE7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmVsLWNhc2NhZGVyX190YWdzIC5lbC10YWcgLmVsLWljb24tY2xvc2V7LXdlYmtpdC1ib3gtZmxleDowOy1tcy1mbGV4Om5vbmU7ZmxleDpub25lO2JhY2tncm91bmQtY29sb3I6I0MwQzRDQztjb2xvcjojRkZGfS5lbC1jYXNjYWRlcl9fdGFncyAuZWwtdGFnIC5lbC1pY29uLWNsb3NlOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzkwOTM5OX0uZWwtY2FzY2FkZXJfX3N1Z2dlc3Rpb24tcGFuZWx7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLWNhc2NhZGVyX19zdWdnZXN0aW9uLWxpc3R7bWF4LWhlaWdodDoyMDRweDttYXJnaW46MDtwYWRkaW5nOjZweCAwO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM2MDYyNjY7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLWNhc2NhZGVyX19zdWdnZXN0aW9uLWl0ZW17ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1wYWNrOmp1c3RpZnk7LW1zLWZsZXgtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDozNHB4O3BhZGRpbmc6MCAxNXB4O3RleHQtYWxpZ246bGVmdDtvdXRsaW5lOjA7Y3Vyc29yOnBvaW50ZXJ9LmVsLWNhc2NhZGVyX19zdWdnZXN0aW9uLWl0ZW06Zm9jdXMsLmVsLWNhc2NhZGVyX19zdWdnZXN0aW9uLWl0ZW06aG92ZXJ7YmFja2dyb3VuZDojRjVGN0ZBfS5lbC1jYXNjYWRlcl9fc3VnZ2VzdGlvbi1pdGVtLmlzLWNoZWNrZWR7Y29sb3I6IzQwOUVGRjtmb250LXdlaWdodDo3MDB9LmVsLWNhc2NhZGVyX19zdWdnZXN0aW9uLWl0ZW0+c3BhbnttYXJnaW4tcmlnaHQ6MTBweH0uZWwtY2FzY2FkZXJfX2VtcHR5LXRleHR7bWFyZ2luOjEwcHggMDtjb2xvcjojQzBDNENDfS5lbC1jYXNjYWRlcl9fc2VhcmNoLWlucHV0ey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MTtoZWlnaHQ6MjRweDttaW4td2lkdGg6NjBweDttYXJnaW46MnB4IDAgMnB4IDE1cHg7cGFkZGluZzowO2NvbG9yOiM2MDYyNjY7Ym9yZGVyOm5vbmU7b3V0bGluZTowO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtY2FzY2FkZXJfX3NlYXJjaC1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC1jYXNjYWRlcl9fc2VhcmNoLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC1jYXNjYWRlcl9fc2VhcmNoLWlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtY2FzY2FkZXJfX3NlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtY29sb3ItcHJlZGVmaW5le2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDo4cHg7d2lkdGg6MjgwcHh9LmVsLWNvbG9yLXByZWRlZmluZV9fY29sb3Jze2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxOy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcH0uZWwtY29sb3ItcHJlZGVmaW5lX19jb2xvci1zZWxlY3RvcnttYXJnaW46MCAwIDhweCA4cHg7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjRweDtjdXJzb3I6cG9pbnRlcn0uZWwtY29sb3ItcHJlZGVmaW5lX19jb2xvci1zZWxlY3RvcjpudGgtY2hpbGQoMTBuKzEpe21hcmdpbi1sZWZ0OjB9LmVsLWNvbG9yLXByZWRlZmluZV9fY29sb3Itc2VsZWN0b3Iuc2VsZWN0ZWR7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAzcHggMnB4ICM0MDlFRkY7Ym94LXNoYWRvdzowIDAgM3B4IDJweCAjNDA5RUZGfS5lbC1jb2xvci1wcmVkZWZpbmVfX2NvbG9yLXNlbGVjdG9yPmRpdntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6M3B4fS5lbC1jb2xvci1wcmVkZWZpbmVfX2NvbG9yLXNlbGVjdG9yLmlzLWFscGhhe2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQXdBQUFBTUNBSUFBQURaRjh1d0FBQUFHVWxFUVZRWVYyTTRnd0grWXdDR0lhc0lVd2hUMjVCVkJBRHR6WU5Zckh2djRnQUFBQUJKUlU1RXJrSmdnZz09KX0uZWwtY29sb3ItaHVlLXNsaWRlcntwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjgwcHg7aGVpZ2h0OjEycHg7YmFja2dyb3VuZC1jb2xvcjpyZWQ7cGFkZGluZzowIDJweH0uZWwtY29sb3ItaHVlLXNsaWRlcl9fYmFye3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AscmlnaHQgdG9wLGZyb20ocmVkKSxjb2xvci1zdG9wKDE3JSwjZmYwKSxjb2xvci1zdG9wKDMzJSwjMGYwKSxjb2xvci1zdG9wKDUwJSwjMGZmKSxjb2xvci1zdG9wKDY3JSwjMDBmKSxjb2xvci1zdG9wKDgzJSwjZjBmKSx0byhyZWQpKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZWQgMCwjZmYwIDE3JSwjMGYwIDMzJSwjMGZmIDUwJSwjMDBmIDY3JSwjZjBmIDgzJSxyZWQgMTAwJSk7aGVpZ2h0OjEwMCV9LmVsLWNvbG9yLWh1ZS1zbGlkZXJfX3RodW1ie3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpwb2ludGVyOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtsZWZ0OjA7dG9wOjA7d2lkdGg6NHB4O2hlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6MXB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNmMGYwZjA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAycHggcmdiYSgwLDAsMCwuNik7Ym94LXNoYWRvdzowIDAgMnB4IHJnYmEoMCwwLDAsLjYpO3otaW5kZXg6MX0uZWwtY29sb3ItaHVlLXNsaWRlci5pcy12ZXJ0aWNhbHt3aWR0aDoxMnB4O2hlaWdodDoxODBweDtwYWRkaW5nOjJweCAwfS5lbC1jb2xvci1odWUtc2xpZGVyLmlzLXZlcnRpY2FsIC5lbC1jb2xvci1odWUtc2xpZGVyX19iYXJ7YmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxmcm9tKHJlZCksY29sb3Itc3RvcCgxNyUsI2ZmMCksY29sb3Itc3RvcCgzMyUsIzBmMCksY29sb3Itc3RvcCg1MCUsIzBmZiksY29sb3Itc3RvcCg2NyUsIzAwZiksY29sb3Itc3RvcCg4MyUsI2YwZiksdG8ocmVkKSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHJlZCAwLCNmZjAgMTclLCMwZjAgMzMlLCMwZmYgNTAlLCMwMGYgNjclLCNmMGYgODMlLHJlZCAxMDAlKX0uZWwtY29sb3ItaHVlLXNsaWRlci5pcy12ZXJ0aWNhbCAuZWwtY29sb3ItaHVlLXNsaWRlcl9fdGh1bWJ7bGVmdDowO3RvcDowO3dpZHRoOjEwMCU7aGVpZ2h0OjRweH0uZWwtY29sb3Itc3ZwYW5lbHtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoyODBweDtoZWlnaHQ6MTgwcHh9LmVsLWNvbG9yLXN2cGFuZWxfX2JsYWNrLC5lbC1jb2xvci1zdnBhbmVsX193aGl0ZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MH0uZWwtY29sb3Itc3ZwYW5lbF9fd2hpdGV7YmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxyaWdodCB0b3AsZnJvbSgjZmZmKSx0byhyZ2JhKDI1NSwyNTUsMjU1LDApKSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsI2ZmZixyZ2JhKDI1NSwyNTUsMjU1LDApKX0uZWwtY29sb3Itc3ZwYW5lbF9fYmxhY2t7YmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IGJvdHRvbSxsZWZ0IHRvcCxmcm9tKCMwMDApLHRvKHJnYmEoMCwwLDAsMCkpKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byB0b3AsIzAwMCxyZ2JhKDAsMCwwLDApKX0uZWwtY29sb3Itc3ZwYW5lbF9fY3Vyc29ye3Bvc2l0aW9uOmFic29sdXRlfS5lbC1jb2xvci1zdnBhbmVsX19jdXJzb3I+ZGl2e2N1cnNvcjpoZWFkO3dpZHRoOjRweDtoZWlnaHQ6NHB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMCAxLjVweCAjZmZmLGluc2V0IDAgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjMpLDAgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjQpO2JveC1zaGFkb3c6MCAwIDAgMS41cHggI2ZmZixpbnNldCAwIDAgMXB4IDFweCByZ2JhKDAsMCwwLC4zKSwwIDAgMXB4IDJweCByZ2JhKDAsMCwwLC40KTtib3JkZXItcmFkaXVzOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTJweCwtMnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0ycHgsLTJweCl9LmVsLWNvbG9yLWFscGhhLXNsaWRlcntwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjgwcHg7aGVpZ2h0OjEycHg7YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBd0FBQUFNQ0FJQUFBRFpGOHV3QUFBQUdVbEVRVlFZVjJNNGd3SCtZd0NHSWFzSVV3aFQyNUJWQkFEdHpZTllySHZ2NGdBQUFBQkpSVTVFcmtKZ2dnPT0pfS5lbC1jb2xvci1hbHBoYS1zbGlkZXJfX2Jhcntwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLHJpZ2h0IHRvcCxmcm9tKHJnYmEoMjU1LDI1NSwyNTUsMCkpLHRvKHdoaXRlKSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQscmdiYSgyNTUsMjU1LDI1NSwwKSAwLCNmZmYgMTAwJSk7aGVpZ2h0OjEwMCV9LmVsLWNvbG9yLWFscGhhLXNsaWRlcl9fdGh1bWJ7cG9zaXRpb246YWJzb2x1dGU7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2xlZnQ6MDt0b3A6MDt3aWR0aDo0cHg7aGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czoxcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2YwZjBmMDstd2Via2l0LWJveC1zaGFkb3c6MCAwIDJweCByZ2JhKDAsMCwwLC42KTtib3gtc2hhZG93OjAgMCAycHggcmdiYSgwLDAsMCwuNik7ei1pbmRleDoxfS5lbC1jb2xvci1hbHBoYS1zbGlkZXIuaXMtdmVydGljYWx7d2lkdGg6MjBweDtoZWlnaHQ6MTgwcHh9LmVsLWNvbG9yLWFscGhhLXNsaWRlci5pcy12ZXJ0aWNhbCAuZWwtY29sb3ItYWxwaGEtc2xpZGVyX19iYXJ7YmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxmcm9tKHJnYmEoMjU1LDI1NSwyNTUsMCkpLHRvKHdoaXRlKSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHJnYmEoMjU1LDI1NSwyNTUsMCkgMCwjZmZmIDEwMCUpfS5lbC1jb2xvci1hbHBoYS1zbGlkZXIuaXMtdmVydGljYWwgLmVsLWNvbG9yLWFscGhhLXNsaWRlcl9fdGh1bWJ7bGVmdDowO3RvcDowO3dpZHRoOjEwMCU7aGVpZ2h0OjRweH0uZWwtY29sb3ItZHJvcGRvd257d2lkdGg6MzAwcHh9LmVsLWNvbG9yLWRyb3Bkb3duX19tYWluLXdyYXBwZXJ7bWFyZ2luLWJvdHRvbTo2cHh9LmVsLWNvbG9yLWRyb3Bkb3duX19tYWluLXdyYXBwZXI6OmFmdGVye2Rpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH0uZWwtY29sb3ItZHJvcGRvd25fX2J0bnN7bWFyZ2luLXRvcDo2cHg7dGV4dC1hbGlnbjpyaWdodH0uZWwtY29sb3ItZHJvcGRvd25fX3ZhbHVle2Zsb2F0OmxlZnQ7bGluZS1oZWlnaHQ6MjZweDtmb250LXNpemU6MTJweDtjb2xvcjojMDAwO3dpZHRoOjE2MHB4fS5lbC1jb2xvci1kcm9wZG93bl9fYnRue2JvcmRlcjoxcHggc29saWQgI2RjZGNkYztjb2xvcjojMzMzO2xpbmUtaGVpZ2h0OjI0cHg7Ym9yZGVyLXJhZGl1czoycHg7cGFkZGluZzowIDIwcHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtvdXRsaW5lOjA7Zm9udC1zaXplOjEycHh9LmVsLWNvbG9yLWRyb3Bkb3duX19idG5bZGlzYWJsZWRde2NvbG9yOiNjY2M7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1jb2xvci1kcm9wZG93bl9fYnRuOmhvdmVye2NvbG9yOiM0MDlFRkY7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLWNvbG9yLWRyb3Bkb3duX19saW5rLWJ0bntjdXJzb3I6cG9pbnRlcjtjb2xvcjojNDA5RUZGO3RleHQtZGVjb3JhdGlvbjpub25lO3BhZGRpbmc6MTVweDtmb250LXNpemU6MTJweH0uZWwtY29sb3ItZHJvcGRvd25fX2xpbmstYnRuOmhvdmVye2NvbG9yOnRpbnQoIzQwOUVGRiwyMCUpfS5lbC1jb2xvci1waWNrZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7bGluZS1oZWlnaHQ6bm9ybWFsO2hlaWdodDo0MHB4fS5lbC1jb2xvci1waWNrZXIuaXMtZGlzYWJsZWQgLmVsLWNvbG9yLXBpY2tlcl9fdHJpZ2dlcntjdXJzb3I6bm90LWFsbG93ZWR9LmVsLWNvbG9yLXBpY2tlci0tbWVkaXVte2hlaWdodDozNnB4fS5lbC1jb2xvci1waWNrZXItLW1lZGl1bSAuZWwtY29sb3ItcGlja2VyX190cmlnZ2Vye2hlaWdodDozNnB4O3dpZHRoOjM2cHh9LmVsLWNvbG9yLXBpY2tlci0tbWVkaXVtIC5lbC1jb2xvci1waWNrZXJfX21hc2t7aGVpZ2h0OjM0cHg7d2lkdGg6MzRweH0uZWwtY29sb3ItcGlja2VyLS1zbWFsbHtoZWlnaHQ6MzJweH0uZWwtY29sb3ItcGlja2VyLS1zbWFsbCAuZWwtY29sb3ItcGlja2VyX190cmlnZ2Vye2hlaWdodDozMnB4O3dpZHRoOjMycHh9LmVsLWNvbG9yLXBpY2tlci0tc21hbGwgLmVsLWNvbG9yLXBpY2tlcl9fbWFza3toZWlnaHQ6MzBweDt3aWR0aDozMHB4fS5lbC1jb2xvci1waWNrZXItLXNtYWxsIC5lbC1jb2xvci1waWNrZXJfX2VtcHR5LC5lbC1jb2xvci1waWNrZXItLXNtYWxsIC5lbC1jb2xvci1waWNrZXJfX2ljb257LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTUwJSwtNTAlLDApIHNjYWxlKC44KTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTUwJSwtNTAlLDApIHNjYWxlKC44KX0uZWwtY29sb3ItcGlja2VyLS1taW5pe2hlaWdodDoyOHB4fS5lbC1jb2xvci1waWNrZXItLW1pbmkgLmVsLWNvbG9yLXBpY2tlcl9fdHJpZ2dlcntoZWlnaHQ6MjhweDt3aWR0aDoyOHB4fS5lbC1jb2xvci1waWNrZXItLW1pbmkgLmVsLWNvbG9yLXBpY2tlcl9fbWFza3toZWlnaHQ6MjZweDt3aWR0aDoyNnB4fS5lbC1jb2xvci1waWNrZXItLW1pbmkgLmVsLWNvbG9yLXBpY2tlcl9fZW1wdHksLmVsLWNvbG9yLXBpY2tlci0tbWluaSAuZWwtY29sb3ItcGlja2VyX19pY29uey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKSBzY2FsZSguOCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKSBzY2FsZSguOCl9LmVsLWNvbG9yLXBpY2tlcl9fbWFza3toZWlnaHQ6MzhweDt3aWR0aDozOHB4O2JvcmRlci1yYWRpdXM6NHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxcHg7bGVmdDoxcHg7ei1pbmRleDoxO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5lbC1jb2xvci1waWNrZXJfX3RyaWdnZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7cGFkZGluZzo0cHg7Ym9yZGVyOjFweCBzb2xpZCAjZTZlNmU2O2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZTowO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyfS5lbC1jb2xvci1waWNrZXJfX2NvbG9ye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3JkZXItcmFkaXVzOjJweDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RleHQtYWxpZ246Y2VudGVyfS5lbC1jb2xvci1waWNrZXJfX2ljb24sLmVsLWlucHV0LC5lbC10ZXh0YXJlYXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlfS5lbC1jb2xvci1waWNrZXJfX2NvbG9yLmlzLWFscGhhe2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQXdBQUFBTUNBSUFBQURaRjh1d0FBQUFHVWxFUVZRWVYyTTRnd0grWXdDR0lhc0lVd2hUMjVCVkJBRHR6WU5Zckh2djRnQUFBQUJKUlU1RXJrSmdnZz09KX0uZWwtY29sb3ItcGlja2VyX19jb2xvci1pbm5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7cmlnaHQ6MDtib3R0b206MH0uZWwtY29sb3ItcGlja2VyX19lbXB0eXtmb250LXNpemU6MTJweDtjb2xvcjojOTk5O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTUwJSwtNTAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtNTAlLC01MCUsMCl9LmVsLWNvbG9yLXBpY2tlcl9faWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTUwJSwtNTAlLDApO2NvbG9yOiNGRkY7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEycHh9LmVsLWlucHV0X19wcmVmaXgsLmVsLWlucHV0X19zdWZmaXh7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLWNvbG9yLXBpY2tlcl9fcGFuZWx7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDtwYWRkaW5nOjZweDstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjRUJFRUY1O2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6MCAycHggMTJweCAwIHJnYmEoMCwwLDAsLjEpfS5lbC1pbnB1dF9faW5uZXIsLmVsLXRleHRhcmVhX19pbm5lciwuZWwtdHJhbnNmZXItcGFuZWx7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXRleHRhcmVhe3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtmb250LXNpemU6MTRweH0uZWwtdGV4dGFyZWFfX2lubmVye2Rpc3BsYXk6YmxvY2s7cmVzaXplOnZlcnRpY2FsO3BhZGRpbmc6NXB4IDE1cHg7bGluZS1oZWlnaHQ6MS41O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZTppbmhlcml0O2NvbG9yOiM2MDYyNjY7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXI6MXB4IHNvbGlkICNEQ0RGRTY7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC10cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMnMgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSl9LmVsLXRleHRhcmVhX19pbm5lcjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC10ZXh0YXJlYV9faW5uZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLXRleHRhcmVhX19pbm5lcjo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLXRleHRhcmVhX19pbm5lcjo6cGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtdGV4dGFyZWFfX2lubmVyOmhvdmVye2JvcmRlci1jb2xvcjojQzBDNENDfS5lbC10ZXh0YXJlYV9faW5uZXI6Zm9jdXN7b3V0bGluZTowO2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC10ZXh0YXJlYSAuZWwtaW5wdXRfX2NvdW50e2NvbG9yOiM5MDkzOTk7YmFja2dyb3VuZDojRkZGO3Bvc2l0aW9uOmFic29sdXRlO2ZvbnQtc2l6ZToxMnB4O2JvdHRvbTo1cHg7cmlnaHQ6MTBweH0uZWwtdGV4dGFyZWEuaXMtZGlzYWJsZWQgLmVsLXRleHRhcmVhX19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Ym9yZGVyLWNvbG9yOiNFNEU3RUQ7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLXRleHRhcmVhLmlzLWRpc2FibGVkIC5lbC10ZXh0YXJlYV9faW5uZXI6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtdGV4dGFyZWEuaXMtZGlzYWJsZWQgLmVsLXRleHRhcmVhX19pbm5lcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtdGV4dGFyZWEuaXMtZGlzYWJsZWQgLmVsLXRleHRhcmVhX19pbm5lcjo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLXRleHRhcmVhLmlzLWRpc2FibGVkIC5lbC10ZXh0YXJlYV9faW5uZXI6OnBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLXRleHRhcmVhLmlzLWV4Y2VlZCAuZWwtdGV4dGFyZWFfX2lubmVye2JvcmRlci1jb2xvcjojRjU2QzZDfS5lbC10ZXh0YXJlYS5pcy1leGNlZWQgLmVsLWlucHV0X19jb3VudHtjb2xvcjojRjU2QzZDfS5lbC1pbnB1dHtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MTRweH0uZWwtaW5wdXQ6Oi13ZWJraXQtc2Nyb2xsYmFye3otaW5kZXg6MTE7d2lkdGg6NnB4fS5lbC1pbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXI6aG9yaXpvbnRhbHtoZWlnaHQ6NnB4fS5lbC1pbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7Ym9yZGVyLXJhZGl1czo1cHg7d2lkdGg6NnB4O2JhY2tncm91bmQ6I2I0YmNjY30uZWwtaW5wdXQ6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lcntiYWNrZ3JvdW5kOiNmZmZ9LmVsLWlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10cmFja3tiYWNrZ3JvdW5kOiNmZmZ9LmVsLWlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZXtiYWNrZ3JvdW5kOiNmZmY7d2lkdGg6NnB4fS5lbC1pbnB1dCAuZWwtaW5wdXRfX2NsZWFye2NvbG9yOiNDMEM0Q0M7Zm9udC1zaXplOjE0cHg7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOmNvbG9yIC4ycyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7dHJhbnNpdGlvbjpjb2xvciAuMnMgY3ViaWMtYmV6aWVyKC42NDUsLjA0NSwuMzU1LDEpfS5lbC1pbnB1dCAuZWwtaW5wdXRfX2NsZWFyOmhvdmVye2NvbG9yOiM5MDkzOTl9LmVsLWlucHV0IC5lbC1pbnB1dF9fY291bnR7aGVpZ2h0OjEwMCU7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTotbXMtaW5saW5lLWZsZXhib3g7ZGlzcGxheTppbmxpbmUtZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojOTA5Mzk5O2ZvbnQtc2l6ZToxMnB4fS5lbC1pbnB1dC1ncm91cF9fYXBwZW5kIC5lbC1idXR0b24sLmVsLWlucHV0LWdyb3VwX19hcHBlbmQgLmVsLWlucHV0LC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCAuZWwtYnV0dG9uLC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCAuZWwtaW5wdXQsLmVsLWlucHV0X19pbm5lcntmb250LXNpemU6aW5oZXJpdH0uZWwtaW5wdXQgLmVsLWlucHV0X19jb3VudCAuZWwtaW5wdXRfX2NvdW50LWlubmVye2JhY2tncm91bmQ6I0ZGRjtsaW5lLWhlaWdodDppbml0aWFsO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MCA1cHh9LmVsLWlucHV0X19pbm5lcnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6IzYwNjI2NjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6NDBweDtsaW5lLWhlaWdodDo0MHB4O291dGxpbmU6MDtwYWRkaW5nOjAgMTVweDstd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTt3aWR0aDoxMDAlfS5lbC1pbnB1dF9faW5uZXI6Oi1tcy1yZXZlYWx7ZGlzcGxheTpub25lfS5lbC1pbnB1dF9faW5uZXI6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtaW5wdXRfX2lubmVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC1pbnB1dF9faW5uZXI6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojQzBDNENDfS5lbC1pbnB1dF9faW5uZXI6OnBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLWlucHV0X19pbm5lcjpob3Zlcntib3JkZXItY29sb3I6I0MwQzRDQ30uZWwtaW5wdXQuaXMtYWN0aXZlIC5lbC1pbnB1dF9faW5uZXIsLmVsLWlucHV0X19pbm5lcjpmb2N1c3tib3JkZXItY29sb3I6IzQwOUVGRjtvdXRsaW5lOjB9LmVsLWlucHV0X19zdWZmaXh7aGVpZ2h0OjEwMCU7cmlnaHQ6NXB4O3RyYW5zaXRpb246YWxsIC4zcztwb2ludGVyLWV2ZW50czpub25lfS5lbC1pbnB1dF9fc3VmZml4LWlubmVye3BvaW50ZXItZXZlbnRzOmFsbH0uZWwtaW5wdXRfX3ByZWZpeHtoZWlnaHQ6MTAwJTtsZWZ0OjVweDt0cmFuc2l0aW9uOmFsbCAuM3N9LmVsLWlucHV0X19pY29ue2hlaWdodDoxMDAlO3dpZHRoOjI1cHg7dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3M7dHJhbnNpdGlvbjphbGwgLjNzO2xpbmUtaGVpZ2h0OjQwcHh9LmVsLWlucHV0X19pY29uOmFmdGVye2NvbnRlbnQ6Jyc7aGVpZ2h0OjEwMCU7d2lkdGg6MDtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLWlucHV0X192YWxpZGF0ZUljb257cG9pbnRlci1ldmVudHM6bm9uZX0uZWwtaW5wdXQuaXMtZGlzYWJsZWQgLmVsLWlucHV0X19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkE7Ym9yZGVyLWNvbG9yOiNFNEU3RUQ7Y29sb3I6I0MwQzRDQztjdXJzb3I6bm90LWFsbG93ZWR9LmVsLWlucHV0LmlzLWRpc2FibGVkIC5lbC1pbnB1dF9faW5uZXI6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtaW5wdXQuaXMtZGlzYWJsZWQgLmVsLWlucHV0X19pbm5lcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I0MwQzRDQ30uZWwtaW5wdXQuaXMtZGlzYWJsZWQgLmVsLWlucHV0X19pbm5lcjo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLWlucHV0LmlzLWRpc2FibGVkIC5lbC1pbnB1dF9faW5uZXI6OnBsYWNlaG9sZGVye2NvbG9yOiNDMEM0Q0N9LmVsLWlucHV0LmlzLWRpc2FibGVkIC5lbC1pbnB1dF9faWNvbntjdXJzb3I6bm90LWFsbG93ZWR9LmVsLWltYWdlLXZpZXdlcl9fYnRuLC5lbC1pbWFnZV9fcHJldmlldywuZWwtbGluaywuZWwtdHJhbnNmZXItcGFuZWxfX2ZpbHRlciAuZWwtaWNvbi1jaXJjbGUtY2xvc2V7Y3Vyc29yOnBvaW50ZXJ9LmVsLWlucHV0LmlzLWV4Y2VlZCAuZWwtaW5wdXRfX2lubmVye2JvcmRlci1jb2xvcjojRjU2QzZDfS5lbC1pbnB1dC5pcy1leGNlZWQgLmVsLWlucHV0X19zdWZmaXggLmVsLWlucHV0X19jb3VudHtjb2xvcjojRjU2QzZDfS5lbC1pbnB1dC0tc3VmZml4IC5lbC1pbnB1dF9faW5uZXJ7cGFkZGluZy1yaWdodDozMHB4fS5lbC1pbnB1dC0tcHJlZml4IC5lbC1pbnB1dF9faW5uZXJ7cGFkZGluZy1sZWZ0OjMwcHh9LmVsLWlucHV0LS1tZWRpdW17Zm9udC1zaXplOjE0cHh9LmVsLWlucHV0LS1tZWRpdW0gLmVsLWlucHV0X19pbm5lcntoZWlnaHQ6MzZweDtsaW5lLWhlaWdodDozNnB4fS5lbC1pbnB1dC0tbWVkaXVtIC5lbC1pbnB1dF9faWNvbntsaW5lLWhlaWdodDozNnB4fS5lbC1pbnB1dC0tc21hbGx7Zm9udC1zaXplOjEzcHh9LmVsLWlucHV0LS1zbWFsbCAuZWwtaW5wdXRfX2lubmVye2hlaWdodDozMnB4O2xpbmUtaGVpZ2h0OjMycHh9LmVsLWlucHV0LS1zbWFsbCAuZWwtaW5wdXRfX2ljb257bGluZS1oZWlnaHQ6MzJweH0uZWwtaW5wdXQtLW1pbml7Zm9udC1zaXplOjEycHh9LmVsLWlucHV0LS1taW5pIC5lbC1pbnB1dF9faW5uZXJ7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0uZWwtaW5wdXQtLW1pbmkgLmVsLWlucHV0X19pY29ue2xpbmUtaGVpZ2h0OjI4cHh9LmVsLWlucHV0LWdyb3Vwe2xpbmUtaGVpZ2h0Om5vcm1hbDtkaXNwbGF5OmlubGluZS10YWJsZTt3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtib3JkZXItc3BhY2luZzowfS5lbC1pbnB1dC1ncm91cD4uZWwtaW5wdXRfX2lubmVye3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OnRhYmxlLWNlbGx9LmVsLWlucHV0LWdyb3VwX19hcHBlbmQsLmVsLWlucHV0LWdyb3VwX19wcmVwZW5ke2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQTtjb2xvcjojOTA5Mzk5O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OnRhYmxlLWNlbGw7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2O2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6MCAyMHB4O3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXB9LmVsLWlucHV0LWdyb3VwLS1hcHBlbmQgLmVsLWlucHV0X19pbm5lciwuZWwtaW5wdXQtZ3JvdXBfX3ByZXBlbmR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5lbC1pbnB1dC1ncm91cF9fYXBwZW5kOmZvY3VzLC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZDpmb2N1c3tvdXRsaW5lOjB9LmVsLWlucHV0LWdyb3VwX19hcHBlbmQgLmVsLWJ1dHRvbiwuZWwtaW5wdXQtZ3JvdXBfX2FwcGVuZCAuZWwtc2VsZWN0LC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCAuZWwtYnV0dG9uLC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCAuZWwtc2VsZWN0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjotMTBweCAtMjBweH0uZWwtaW5wdXQtZ3JvdXBfX2FwcGVuZCBidXR0b24uZWwtYnV0dG9uLC5lbC1pbnB1dC1ncm91cF9fYXBwZW5kIGRpdi5lbC1zZWxlY3QgLmVsLWlucHV0X19pbm5lciwuZWwtaW5wdXQtZ3JvdXBfX2FwcGVuZCBkaXYuZWwtc2VsZWN0OmhvdmVyIC5lbC1pbnB1dF9faW5uZXIsLmVsLWlucHV0LWdyb3VwX19wcmVwZW5kIGJ1dHRvbi5lbC1idXR0b24sLmVsLWlucHV0LWdyb3VwX19wcmVwZW5kIGRpdi5lbC1zZWxlY3QgLmVsLWlucHV0X19pbm5lciwuZWwtaW5wdXQtZ3JvdXBfX3ByZXBlbmQgZGl2LmVsLXNlbGVjdDpob3ZlciAuZWwtaW5wdXRfX2lubmVye2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXQ7Ym9yZGVyLXRvcDowO2JvcmRlci1ib3R0b206MH0uZWwtaW5wdXQtZ3JvdXBfX3ByZXBlbmR7Ym9yZGVyLXJpZ2h0OjB9LmVsLWlucHV0LWdyb3VwX19hcHBlbmR7Ym9yZGVyLWxlZnQ6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5lbC1pbnB1dC1ncm91cC0tYXBwZW5kIC5lbC1zZWxlY3QgLmVsLWlucHV0LmlzLWZvY3VzIC5lbC1pbnB1dF9faW5uZXIsLmVsLWlucHV0LWdyb3VwLS1wcmVwZW5kIC5lbC1zZWxlY3QgLmVsLWlucHV0LmlzLWZvY3VzIC5lbC1pbnB1dF9faW5uZXJ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5lbC1pbnB1dC1ncm91cC0tcHJlcGVuZCAuZWwtaW5wdXRfX2lubmVye2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmVsLWlucHV0X19pbm5lcjo6LW1zLWNsZWFye2Rpc3BsYXk6bm9uZTt3aWR0aDowO2hlaWdodDowfS5lbC10cmFuc2Zlcntmb250LXNpemU6MTRweH0uZWwtdHJhbnNmZXJfX2J1dHRvbnN7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO3BhZGRpbmc6MCAzMHB4fS5lbC10cmFuc2Zlcl9fYnV0dG9ue2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjEwcHg7Ym9yZGVyLXJhZGl1czo1MCU7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkY7Zm9udC1zaXplOjB9LmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9uKy5lbC1idXR0b24sLmVsLXRyYW5zZmVyLXBhbmVsX19pdGVtKy5lbC10cmFuc2Zlci1wYW5lbF9faXRlbSwuZWwtdHJhbnNmZXJfX2J1dHRvbiBbY2xhc3MqPWVsLWljb24tXStzcGFue21hcmdpbi1sZWZ0OjB9LmVsLWRpdmlkZXJfX3RleHQsLmVsLWltYWdlX19lcnJvciwuZWwtbGluaywuZWwtdGltZWxpbmUsLmVsLXRyYW5zZmVyX19idXR0b24gaSwuZWwtdHJhbnNmZXJfX2J1dHRvbiBzcGFue2ZvbnQtc2l6ZToxNHB4fS5lbC10cmFuc2Zlcl9fYnV0dG9uLmlzLXdpdGgtdGV4dHN7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLXRyYW5zZmVyX19idXR0b24uaXMtZGlzYWJsZWQsLmVsLXRyYW5zZmVyX19idXR0b24uaXMtZGlzYWJsZWQ6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2O2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQTtjb2xvcjojQzBDNENDfS5lbC10cmFuc2Zlcl9fYnV0dG9uOmZpcnN0LWNoaWxke21hcmdpbi1ib3R0b206MTBweH0uZWwtdHJhbnNmZXJfX2J1dHRvbjpudGgtY2hpbGQoMil7bWFyZ2luOjB9LmVsLXRyYW5zZmVyLXBhbmVse2JvcmRlcjoxcHggc29saWQgI0VCRUVGNTtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojRkZGO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoyMDBweDttYXgtaGVpZ2h0OjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC10cmFuc2Zlci1wYW5lbF9fYm9keXtoZWlnaHQ6MjQ2cHh9LmVsLXRyYW5zZmVyLXBhbmVsX19ib2R5LmlzLXdpdGgtZm9vdGVye3BhZGRpbmctYm90dG9tOjQwcHh9LmVsLXRyYW5zZmVyLXBhbmVsX19saXN0e21hcmdpbjowO3BhZGRpbmc6NnB4IDA7bGlzdC1zdHlsZTpub25lO2hlaWdodDoyNDZweDtvdmVyZmxvdzphdXRvOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWwtdHJhbnNmZXItcGFuZWxfX2xpc3QuaXMtZmlsdGVyYWJsZXtoZWlnaHQ6MTk0cHg7cGFkZGluZy10b3A6MH0uZWwtdHJhbnNmZXItcGFuZWxfX2l0ZW17aGVpZ2h0OjMwcHg7bGluZS1oZWlnaHQ6MzBweDtwYWRkaW5nLWxlZnQ6MTVweDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uZWwtdHJhbnNmZXItcGFuZWxfX2l0ZW0uZWwtY2hlY2tib3h7Y29sb3I6IzYwNjI2Nn0uZWwtdHJhbnNmZXItcGFuZWxfX2l0ZW06aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtdHJhbnNmZXItcGFuZWxfX2l0ZW0uZWwtY2hlY2tib3ggLmVsLWNoZWNrYm94X19sYWJlbHt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtkaXNwbGF5OmJsb2NrOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLWxlZnQ6MjRweDtsaW5lLWhlaWdodDozMHB4fS5lbC10cmFuc2Zlci1wYW5lbF9faXRlbSAuZWwtY2hlY2tib3hfX2lucHV0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo4cHh9LmVsLXRyYW5zZmVyLXBhbmVsX19maWx0ZXJ7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjE1cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7d2lkdGg6YXV0b30uZWwtdHJhbnNmZXItcGFuZWxfX2ZpbHRlciAuZWwtaW5wdXRfX2lubmVye2hlaWdodDozMnB4O3dpZHRoOjEwMCU7Zm9udC1zaXplOjEycHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjMwcHh9LmVsLXRyYW5zZmVyLXBhbmVsX19maWx0ZXIgLmVsLWlucHV0X19pY29ue21hcmdpbi1sZWZ0OjVweH0uZWwtdHJhbnNmZXItcGFuZWwgLmVsLXRyYW5zZmVyLXBhbmVsX19oZWFkZXJ7aGVpZ2h0OjQwcHg7bGluZS1oZWlnaHQ6NDBweDtiYWNrZ3JvdW5kOiNGNUY3RkE7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OjE1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0VCRUVGNTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6IzAwMH0uZWwtY29udGFpbmVyLC5lbC1oZWFkZXJ7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLXRyYW5zZmVyLXBhbmVsIC5lbC10cmFuc2Zlci1wYW5lbF9faGVhZGVyIC5lbC1jaGVja2JveHtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQwcHh9LmVsLXRyYW5zZmVyLXBhbmVsIC5lbC10cmFuc2Zlci1wYW5lbF9faGVhZGVyIC5lbC1jaGVja2JveCAuZWwtY2hlY2tib3hfX2xhYmVse2ZvbnQtc2l6ZToxNnB4O2NvbG9yOiMzMDMxMzM7Zm9udC13ZWlnaHQ6NDAwfS5lbC10cmFuc2Zlci1wYW5lbCAuZWwtdHJhbnNmZXItcGFuZWxfX2hlYWRlciAuZWwtY2hlY2tib3ggLmVsLWNoZWNrYm94X19sYWJlbCBzcGFue3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE1cHg7Y29sb3I6IzkwOTM5OTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo0MDB9LmVsLXRyYW5zZmVyLXBhbmVsIC5lbC10cmFuc2Zlci1wYW5lbF9fZm9vdGVye2hlaWdodDo0MHB4O2JhY2tncm91bmQ6I0ZGRjttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgI0VCRUVGNTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtsZWZ0OjA7d2lkdGg6MTAwJTt6LWluZGV4OjF9LmVsLXRyYW5zZmVyLXBhbmVsIC5lbC10cmFuc2Zlci1wYW5lbF9fZm9vdGVyOjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLWNvbnRhaW5lciwuZWwtdGltZWxpbmUtaXRlbV9fbm9kZXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3h9LmVsLXRyYW5zZmVyLXBhbmVsIC5lbC10cmFuc2Zlci1wYW5lbF9fZm9vdGVyIC5lbC1jaGVja2JveHtwYWRkaW5nLWxlZnQ6MjBweDtjb2xvcjojNjA2MjY2fS5lbC10cmFuc2Zlci1wYW5lbCAuZWwtdHJhbnNmZXItcGFuZWxfX2VtcHR5e21hcmdpbjowO2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjMwcHg7cGFkZGluZzo2cHggMTVweCAwO2NvbG9yOiM5MDkzOTk7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXRyYW5zZmVyLXBhbmVsIC5lbC1jaGVja2JveF9fbGFiZWx7cGFkZGluZy1sZWZ0OjhweH0uZWwtdHJhbnNmZXItcGFuZWwgLmVsLWNoZWNrYm94X19pbm5lcntoZWlnaHQ6MTRweDt3aWR0aDoxNHB4O2JvcmRlci1yYWRpdXM6M3B4fS5lbC10cmFuc2Zlci1wYW5lbCAuZWwtY2hlY2tib3hfX2lubmVyOjphZnRlcntoZWlnaHQ6NnB4O3dpZHRoOjNweDtsZWZ0OjRweH0uZWwtY29udGFpbmVye2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC1kaXJlY3Rpb246cm93Oy13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2ZsZXgtYmFzaXM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLXdpZHRoOjB9LmVsLWNvbnRhaW5lci5pcy12ZXJ0aWNhbCwuZWwtZHJhd2VyLC5lbC1lbXB0eSwuZWwtcmVzdWx0ey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsfS5lbC1jb250YWluZXIuaXMtdmVydGljYWx7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmVsLWhlYWRlcntwYWRkaW5nOjAgMjBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1zLWZsZXgtbmVnYXRpdmU6MDtmbGV4LXNocmluazowfS5lbC1hc2lkZXtvdmVyZmxvdzphdXRvOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtZmxleC1uZWdhdGl2ZTowO2ZsZXgtc2hyaW5rOjB9LmVsLW1haW57ZGlzcGxheTpibG9jazstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0bztmbGV4LWJhc2lzOmF1dG87b3ZlcmZsb3c6YXV0bzstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWZvb3RlcntwYWRkaW5nOjAgMjBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1zLWZsZXgtbmVnYXRpdmU6MDtmbGV4LXNocmluazowfS5lbC10aW1lbGluZXttYXJnaW46MDtsaXN0LXN0eWxlOm5vbmV9LmVsLXRpbWVsaW5lIC5lbC10aW1lbGluZS1pdGVtOmxhc3QtY2hpbGQgLmVsLXRpbWVsaW5lLWl0ZW1fX3RhaWx7ZGlzcGxheTpub25lfS5lbC10aW1lbGluZS1pdGVte3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctYm90dG9tOjIwcHh9LmVsLXRpbWVsaW5lLWl0ZW1fX3dyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OjI4cHg7dG9wOi0zcHh9LmVsLXRpbWVsaW5lLWl0ZW1fX3RhaWx7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo0cHg7aGVpZ2h0OjEwMCU7Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkICNFNEU3RUR9LmVsLXRpbWVsaW5lLWl0ZW1fX2ljb257Y29sb3I6I0ZGRjtmb250LXNpemU6MTNweH0uZWwtdGltZWxpbmUtaXRlbV9fbm9kZXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNFNEU3RUQ7Ym9yZGVyLXJhZGl1czo1MCU7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LmVsLWltYWdlX19lcnJvciwuZWwtdGltZWxpbmUtaXRlbV9fZG90e2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveH0uZWwtdGltZWxpbmUtaXRlbV9fbm9kZS0tbm9ybWFse2xlZnQ6LTFweDt3aWR0aDoxMnB4O2hlaWdodDoxMnB4fS5lbC10aW1lbGluZS1pdGVtX19ub2RlLS1sYXJnZXtsZWZ0Oi0ycHg7d2lkdGg6MTRweDtoZWlnaHQ6MTRweH0uZWwtdGltZWxpbmUtaXRlbV9fbm9kZS0tcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkZ9LmVsLXRpbWVsaW5lLWl0ZW1fX25vZGUtLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNjdDMjNBfS5lbC10aW1lbGluZS1pdGVtX19ub2RlLS13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I0U2QTIzQ30uZWwtdGltZWxpbmUtaXRlbV9fbm9kZS0tZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I0Y1NkM2Q30uZWwtdGltZWxpbmUtaXRlbV9fbm9kZS0taW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiM5MDkzOTl9LmVsLXRpbWVsaW5lLWl0ZW1fX2RvdHtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uZWwtdGltZWxpbmUtaXRlbV9fY29udGVudHtjb2xvcjojMzAzMTMzfS5lbC10aW1lbGluZS1pdGVtX190aW1lc3RhbXB7Y29sb3I6IzkwOTM5OTtsaW5lLWhlaWdodDoxO2ZvbnQtc2l6ZToxM3B4fS5lbC10aW1lbGluZS1pdGVtX190aW1lc3RhbXAuaXMtdG9we21hcmdpbi1ib3R0b206OHB4O3BhZGRpbmctdG9wOjRweH0uZWwtdGltZWxpbmUtaXRlbV9fdGltZXN0YW1wLmlzLWJvdHRvbXttYXJnaW4tdG9wOjhweH0uZWwtbGlua3tkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4Oy13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LWRpcmVjdGlvbjpyb3c7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3V0bGluZTowO3BhZGRpbmc6MDtmb250LXdlaWdodDo1MDB9LmVsLWxpbmsuaXMtdW5kZXJsaW5lOmhvdmVyOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO2hlaWdodDowO2JvdHRvbTowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0MDlFRkZ9LmVsLWxpbmsuZWwtbGluay0tZGVmYXVsdDphZnRlciwuZWwtbGluay5lbC1saW5rLS1wcmltYXJ5LmlzLXVuZGVybGluZTpob3ZlcjphZnRlciwuZWwtbGluay5lbC1saW5rLS1wcmltYXJ5OmFmdGVye2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1saW5rLmlzLWRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtbGluayBbY2xhc3MqPWVsLWljb24tXStzcGFue21hcmdpbi1sZWZ0OjVweH0uZWwtbGluay5lbC1saW5rLS1kZWZhdWx0e2NvbG9yOiM2MDYyNjZ9LmVsLWxpbmsuZWwtbGluay0tZGVmYXVsdDpob3Zlcntjb2xvcjojNDA5RUZGfS5lbC1saW5rLmVsLWxpbmstLWRlZmF1bHQuaXMtZGlzYWJsZWR7Y29sb3I6I0MwQzRDQ30uZWwtbGluay5lbC1saW5rLS1wcmltYXJ5e2NvbG9yOiM0MDlFRkZ9LmVsLWxpbmsuZWwtbGluay0tcHJpbWFyeTpob3Zlcntjb2xvcjojNjZiMWZmfS5lbC1saW5rLmVsLWxpbmstLXByaW1hcnkuaXMtZGlzYWJsZWR7Y29sb3I6I2EwY2ZmZn0uZWwtbGluay5lbC1saW5rLS1kYW5nZXIuaXMtdW5kZXJsaW5lOmhvdmVyOmFmdGVyLC5lbC1saW5rLmVsLWxpbmstLWRhbmdlcjphZnRlcntib3JkZXItY29sb3I6I0Y1NkM2Q30uZWwtbGluay5lbC1saW5rLS1kYW5nZXJ7Y29sb3I6I0Y1NkM2Q30uZWwtbGluay5lbC1saW5rLS1kYW5nZXI6aG92ZXJ7Y29sb3I6I2Y3ODk4OX0uZWwtbGluay5lbC1saW5rLS1kYW5nZXIuaXMtZGlzYWJsZWR7Y29sb3I6I2ZhYjZiNn0uZWwtbGluay5lbC1saW5rLS1zdWNjZXNzLmlzLXVuZGVybGluZTpob3ZlcjphZnRlciwuZWwtbGluay5lbC1saW5rLS1zdWNjZXNzOmFmdGVye2JvcmRlci1jb2xvcjojNjdDMjNBfS5lbC1saW5rLmVsLWxpbmstLXN1Y2Nlc3N7Y29sb3I6IzY3QzIzQX0uZWwtbGluay5lbC1saW5rLS1zdWNjZXNzOmhvdmVye2NvbG9yOiM4NWNlNjF9LmVsLWxpbmsuZWwtbGluay0tc3VjY2Vzcy5pcy1kaXNhYmxlZHtjb2xvcjojYjNlMTlkfS5lbC1saW5rLmVsLWxpbmstLXdhcm5pbmcuaXMtdW5kZXJsaW5lOmhvdmVyOmFmdGVyLC5lbC1saW5rLmVsLWxpbmstLXdhcm5pbmc6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOiNFNkEyM0N9LmVsLWxpbmsuZWwtbGluay0td2FybmluZ3tjb2xvcjojRTZBMjNDfS5lbC1saW5rLmVsLWxpbmstLXdhcm5pbmc6aG92ZXJ7Y29sb3I6I2ViYjU2M30uZWwtbGluay5lbC1saW5rLS13YXJuaW5nLmlzLWRpc2FibGVke2NvbG9yOiNmM2QxOWV9LmVsLWxpbmsuZWwtbGluay0taW5mby5pcy11bmRlcmxpbmU6aG92ZXI6YWZ0ZXIsLmVsLWxpbmsuZWwtbGluay0taW5mbzphZnRlcntib3JkZXItY29sb3I6IzkwOTM5OX0uZWwtbGluay5lbC1saW5rLS1pbmZve2NvbG9yOiM5MDkzOTl9LmVsLWxpbmsuZWwtbGluay0taW5mbzpob3Zlcntjb2xvcjojYTZhOWFkfS5lbC1saW5rLmVsLWxpbmstLWluZm8uaXMtZGlzYWJsZWR7Y29sb3I6I2M4YzljY30uZWwtZGl2aWRlcntiYWNrZ3JvdW5kLWNvbG9yOiNEQ0RGRTY7cG9zaXRpb246cmVsYXRpdmV9LmVsLWRpdmlkZXItLWhvcml6b250YWx7ZGlzcGxheTpibG9jaztoZWlnaHQ6MXB4O3dpZHRoOjEwMCU7bWFyZ2luOjI0cHggMH0uZWwtZGl2aWRlci0tdmVydGljYWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MXB4O2hlaWdodDoxZW07bWFyZ2luOjAgOHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtwb3NpdGlvbjpyZWxhdGl2ZX0uZWwtZGl2aWRlcl9fdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7cGFkZGluZzowIDIwcHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOiMzMDMxMzN9LmVsLWltYWdlX19lcnJvciwuZWwtaW1hZ2VfX3BsYWNlaG9sZGVye2JhY2tncm91bmQ6I0Y1RjdGQX0uZWwtZGl2aWRlcl9fdGV4dC5pcy1sZWZ0e2xlZnQ6MjBweDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5lbC1kaXZpZGVyX190ZXh0LmlzLWNlbnRlcntsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKX0uZWwtZGl2aWRlcl9fdGV4dC5pcy1yaWdodHtyaWdodDoyMHB4Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmVsLWltYWdlX19lcnJvciwuZWwtaW1hZ2VfX2lubmVyLC5lbC1pbWFnZV9fcGxhY2Vob2xkZXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uZWwtaW1hZ2V7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVufS5lbC1pbWFnZV9faW5uZXJ7dmVydGljYWwtYWxpZ246dG9wfS5lbC1pbWFnZV9faW5uZXItLWNlbnRlcntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6NTAlO2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTtkaXNwbGF5OmJsb2NrfS5lbC1pbWFnZV9fZXJyb3J7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6I0MwQzRDQzt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLWltYWdlLXZpZXdlcl9fd3JhcHBlcntwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MH0uZWwtaW1hZ2Utdmlld2VyX19idG57cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOjUwJTtvcGFjaXR5Oi44Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZWwtYnV0dG9uLC5lbC1jaGVja2JveCwuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lciwuZWwtZW1wdHlfX2ltYWdlIGltZywuZWwtcmFkaW97LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZX0uZWwtaW1hZ2Utdmlld2VyX19jbG9zZXt0b3A6NDBweDtyaWdodDo0MHB4O3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Zm9udC1zaXplOjI0cHg7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM2MDYyNjZ9LmVsLWltYWdlLXZpZXdlcl9fY2FudmFze3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5lbC1pbWFnZS12aWV3ZXJfX2FjdGlvbnN7bGVmdDo1MCU7Ym90dG9tOjMwcHg7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt3aWR0aDoyODJweDtoZWlnaHQ6NDRweDtwYWRkaW5nOjAgMjNweDtiYWNrZ3JvdW5kLWNvbG9yOiM2MDYyNjY7Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czoyMnB4fS5lbC1pbWFnZS12aWV3ZXJfX2FjdGlvbnNfX2lubmVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dGV4dC1hbGlnbjpqdXN0aWZ5O2N1cnNvcjpkZWZhdWx0O2ZvbnQtc2l6ZToyM3B4O2NvbG9yOiNmZmY7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstbXMtZmxleC1wYWNrOmRpc3RyaWJ1dGU7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uZWwtaW1hZ2Utdmlld2VyX19uZXh0LC5lbC1pbWFnZS12aWV3ZXJfX3ByZXZ7d2lkdGg6NDRweDtoZWlnaHQ6NDRweDtmb250LXNpemU6MjRweDtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzYwNjI2Njtib3JkZXItY29sb3I6I2ZmZjt0b3A6NTAlfS5lbC1pbWFnZS12aWV3ZXJfX3ByZXZ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtsZWZ0OjQwcHh9LmVsLWltYWdlLXZpZXdlcl9fbmV4dHstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3JpZ2h0OjQwcHg7dGV4dC1pbmRlbnQ6MnB4fS5lbC1pbWFnZS12aWV3ZXJfX21hc2t7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0b3A6MDtsZWZ0OjA7b3BhY2l0eTouNTtiYWNrZ3JvdW5kOiMwMDB9LnZpZXdlci1mYWRlLWVudGVyLWFjdGl2ZXstd2Via2l0LWFuaW1hdGlvbjp2aWV3ZXItZmFkZS1pbiAuM3M7YW5pbWF0aW9uOnZpZXdlci1mYWRlLWluIC4zc30udmlld2VyLWZhZGUtbGVhdmUtYWN0aXZley13ZWJraXQtYW5pbWF0aW9uOnZpZXdlci1mYWRlLW91dCAuM3M7YW5pbWF0aW9uOnZpZXdlci1mYWRlLW91dCAuM3N9QC13ZWJraXQta2V5ZnJhbWVzIHZpZXdlci1mYWRlLWluezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7b3BhY2l0eTowfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIHZpZXdlci1mYWRlLWluezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7b3BhY2l0eTowfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7b3BhY2l0eToxfX1ALXdlYmtpdC1rZXlmcmFtZXMgdmlld2VyLWZhZGUtb3V0ezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO29wYWNpdHk6MX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHZpZXdlci1mYWRlLW91dHswJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTtvcGFjaXR5OjF9MTAwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO29wYWNpdHk6MH19LmVsLWJ1dHRvbntkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoxO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2O2NvbG9yOiM2MDYyNjY7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O291dGxpbmU6MDttYXJnaW46MDstd2Via2l0LXRyYW5zaXRpb246LjFzO3RyYW5zaXRpb246LjFzO2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nOjEycHggMjBweDtmb250LXNpemU6MTRweDtib3JkZXItcmFkaXVzOjRweH0uZWwtYnV0dG9uKy5lbC1idXR0b24sLmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkKy5lbC1jaGVja2JveC5pcy1ib3JkZXJlZHttYXJnaW4tbGVmdDoxMHB4fS5lbC1idXR0b246Zm9jdXMsLmVsLWJ1dHRvbjpob3Zlcntjb2xvcjojNDA5RUZGO2JvcmRlci1jb2xvcjojYzZlMmZmO2JhY2tncm91bmQtY29sb3I6I2VjZjVmZn0uZWwtYnV0dG9uOmFjdGl2ZXtjb2xvcjojM2E4ZWU2O2JvcmRlci1jb2xvcjojM2E4ZWU2O291dGxpbmU6MH0uZWwtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5lbC1idXR0b24gW2NsYXNzKj1lbC1pY29uLV0rc3BhbnttYXJnaW4tbGVmdDo1cHh9LmVsLWJ1dHRvbi5pcy1wbGFpbjpmb2N1cywuZWwtYnV0dG9uLmlzLXBsYWluOmhvdmVye2JhY2tncm91bmQ6I0ZGRjtib3JkZXItY29sb3I6IzQwOUVGRjtjb2xvcjojNDA5RUZGfS5lbC1idXR0b24uaXMtYWN0aXZlLC5lbC1idXR0b24uaXMtcGxhaW46YWN0aXZle2NvbG9yOiMzYThlZTY7Ym9yZGVyLWNvbG9yOiMzYThlZTZ9LmVsLWJ1dHRvbi5pcy1wbGFpbjphY3RpdmV7YmFja2dyb3VuZDojRkZGO291dGxpbmU6MH0uZWwtYnV0dG9uLmlzLWRpc2FibGVkLC5lbC1idXR0b24uaXMtZGlzYWJsZWQ6Zm9jdXMsLmVsLWJ1dHRvbi5pcy1kaXNhYmxlZDpob3Zlcntjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JvcmRlci1jb2xvcjojRUJFRUY1fS5lbC1idXR0b24uaXMtZGlzYWJsZWQuZWwtYnV0dG9uLS10ZXh0e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmVsLWJ1dHRvbi5pcy1kaXNhYmxlZC5pcy1wbGFpbiwuZWwtYnV0dG9uLmlzLWRpc2FibGVkLmlzLXBsYWluOmZvY3VzLC5lbC1idXR0b24uaXMtZGlzYWJsZWQuaXMtcGxhaW46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojRkZGO2JvcmRlci1jb2xvcjojRUJFRUY1O2NvbG9yOiNDMEM0Q0N9LmVsLWJ1dHRvbi5pcy1sb2FkaW5ne3Bvc2l0aW9uOnJlbGF0aXZlO3BvaW50ZXItZXZlbnRzOm5vbmV9LmVsLWJ1dHRvbi5pcy1sb2FkaW5nOmJlZm9yZXtwb2ludGVyLWV2ZW50czpub25lO2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDotMXB4O3RvcDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHg7Ym9yZGVyLXJhZGl1czppbmhlcml0O2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMzUpfS5lbC1idXR0b24uaXMtcm91bmR7Ym9yZGVyLXJhZGl1czoyMHB4O3BhZGRpbmc6MTJweCAyM3B4fS5lbC1idXR0b24uaXMtY2lyY2xle2JvcmRlci1yYWRpdXM6NTAlO3BhZGRpbmc6MTJweH0uZWwtYnV0dG9uLS1wcmltYXJ5e2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojNDA5RUZGO2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1idXR0b24tLXByaW1hcnk6Zm9jdXMsLmVsLWJ1dHRvbi0tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiM2NmIxZmY7Ym9yZGVyLWNvbG9yOiM2NmIxZmY7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1wcmltYXJ5LmlzLWFjdGl2ZSwuZWwtYnV0dG9uLS1wcmltYXJ5OmFjdGl2ZXtiYWNrZ3JvdW5kOiMzYThlZTY7Ym9yZGVyLWNvbG9yOiMzYThlZTY7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1wcmltYXJ5OmFjdGl2ZXtvdXRsaW5lOjB9LmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1kaXNhYmxlZCwuZWwtYnV0dG9uLS1wcmltYXJ5LmlzLWRpc2FibGVkOmFjdGl2ZSwuZWwtYnV0dG9uLS1wcmltYXJ5LmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24tLXByaW1hcnkuaXMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNhMGNmZmY7Ym9yZGVyLWNvbG9yOiNhMGNmZmZ9LmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1wbGFpbntjb2xvcjojNDA5RUZGO2JhY2tncm91bmQ6I2VjZjVmZjtib3JkZXItY29sb3I6I2IzZDhmZn0uZWwtYnV0dG9uLS1wcmltYXJ5LmlzLXBsYWluOmZvY3VzLC5lbC1idXR0b24tLXByaW1hcnkuaXMtcGxhaW46aG92ZXJ7YmFja2dyb3VuZDojNDA5RUZGO2JvcmRlci1jb2xvcjojNDA5RUZGO2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1wbGFpbjphY3RpdmV7YmFja2dyb3VuZDojM2E4ZWU2O2JvcmRlci1jb2xvcjojM2E4ZWU2O2NvbG9yOiNGRkY7b3V0bGluZTowfS5lbC1idXR0b24tLXByaW1hcnkuaXMtcGxhaW4uaXMtZGlzYWJsZWQsLmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1wbGFpbi5pcy1kaXNhYmxlZDphY3RpdmUsLmVsLWJ1dHRvbi0tcHJpbWFyeS5pcy1wbGFpbi5pcy1kaXNhYmxlZDpmb2N1cywuZWwtYnV0dG9uLS1wcmltYXJ5LmlzLXBsYWluLmlzLWRpc2FibGVkOmhvdmVye2NvbG9yOiM4Y2M1ZmY7YmFja2dyb3VuZC1jb2xvcjojZWNmNWZmO2JvcmRlci1jb2xvcjojZDllY2ZmfS5lbC1idXR0b24tLXN1Y2Nlc3N7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM2N0MyM0E7Ym9yZGVyLWNvbG9yOiM2N0MyM0F9LmVsLWJ1dHRvbi0tc3VjY2Vzczpmb2N1cywuZWwtYnV0dG9uLS1zdWNjZXNzOmhvdmVye2JhY2tncm91bmQ6Izg1Y2U2MTtib3JkZXItY29sb3I6Izg1Y2U2MTtjb2xvcjojRkZGfS5lbC1idXR0b24tLXN1Y2Nlc3MuaXMtYWN0aXZlLC5lbC1idXR0b24tLXN1Y2Nlc3M6YWN0aXZle2JhY2tncm91bmQ6IzVkYWYzNDtib3JkZXItY29sb3I6IzVkYWYzNDtjb2xvcjojRkZGfS5lbC1idXR0b24tLXN1Y2Nlc3M6YWN0aXZle291dGxpbmU6MH0uZWwtYnV0dG9uLS1zdWNjZXNzLmlzLWRpc2FibGVkLC5lbC1idXR0b24tLXN1Y2Nlc3MuaXMtZGlzYWJsZWQ6YWN0aXZlLC5lbC1idXR0b24tLXN1Y2Nlc3MuaXMtZGlzYWJsZWQ6Zm9jdXMsLmVsLWJ1dHRvbi0tc3VjY2Vzcy5pcy1kaXNhYmxlZDpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6I2IzZTE5ZDtib3JkZXItY29sb3I6I2IzZTE5ZH0uZWwtYnV0dG9uLS1zdWNjZXNzLmlzLXBsYWlue2NvbG9yOiM2N0MyM0E7YmFja2dyb3VuZDojZjBmOWViO2JvcmRlci1jb2xvcjojYzJlN2IwfS5lbC1idXR0b24tLXN1Y2Nlc3MuaXMtcGxhaW46Zm9jdXMsLmVsLWJ1dHRvbi0tc3VjY2Vzcy5pcy1wbGFpbjpob3ZlcntiYWNrZ3JvdW5kOiM2N0MyM0E7Ym9yZGVyLWNvbG9yOiM2N0MyM0E7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1zdWNjZXNzLmlzLXBsYWluOmFjdGl2ZXtiYWNrZ3JvdW5kOiM1ZGFmMzQ7Ym9yZGVyLWNvbG9yOiM1ZGFmMzQ7Y29sb3I6I0ZGRjtvdXRsaW5lOjB9LmVsLWJ1dHRvbi0tc3VjY2Vzcy5pcy1wbGFpbi5pcy1kaXNhYmxlZCwuZWwtYnV0dG9uLS1zdWNjZXNzLmlzLXBsYWluLmlzLWRpc2FibGVkOmFjdGl2ZSwuZWwtYnV0dG9uLS1zdWNjZXNzLmlzLXBsYWluLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24tLXN1Y2Nlc3MuaXMtcGxhaW4uaXMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6I2E0ZGE4OTtiYWNrZ3JvdW5kLWNvbG9yOiNmMGY5ZWI7Ym9yZGVyLWNvbG9yOiNlMWYzZDh9LmVsLWJ1dHRvbi0td2FybmluZ3tjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6I0U2QTIzQztib3JkZXItY29sb3I6I0U2QTIzQ30uZWwtYnV0dG9uLS13YXJuaW5nOmZvY3VzLC5lbC1idXR0b24tLXdhcm5pbmc6aG92ZXJ7YmFja2dyb3VuZDojZWJiNTYzO2JvcmRlci1jb2xvcjojZWJiNTYzO2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0td2FybmluZy5pcy1hY3RpdmUsLmVsLWJ1dHRvbi0td2FybmluZzphY3RpdmV7YmFja2dyb3VuZDojY2Y5MjM2O2JvcmRlci1jb2xvcjojY2Y5MjM2O2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0td2FybmluZzphY3RpdmV7b3V0bGluZTowfS5lbC1idXR0b24tLXdhcm5pbmcuaXMtZGlzYWJsZWQsLmVsLWJ1dHRvbi0td2FybmluZy5pcy1kaXNhYmxlZDphY3RpdmUsLmVsLWJ1dHRvbi0td2FybmluZy5pcy1kaXNhYmxlZDpmb2N1cywuZWwtYnV0dG9uLS13YXJuaW5nLmlzLWRpc2FibGVkOmhvdmVye2NvbG9yOiNGRkY7YmFja2dyb3VuZC1jb2xvcjojZjNkMTllO2JvcmRlci1jb2xvcjojZjNkMTllfS5lbC1idXR0b24tLXdhcm5pbmcuaXMtcGxhaW57Y29sb3I6I0U2QTIzQztiYWNrZ3JvdW5kOiNmZGY2ZWM7Ym9yZGVyLWNvbG9yOiNmNWRhYjF9LmVsLWJ1dHRvbi0td2FybmluZy5pcy1wbGFpbjpmb2N1cywuZWwtYnV0dG9uLS13YXJuaW5nLmlzLXBsYWluOmhvdmVye2JhY2tncm91bmQ6I0U2QTIzQztib3JkZXItY29sb3I6I0U2QTIzQztjb2xvcjojRkZGfS5lbC1idXR0b24tLXdhcm5pbmcuaXMtcGxhaW46YWN0aXZle2JhY2tncm91bmQ6I2NmOTIzNjtib3JkZXItY29sb3I6I2NmOTIzNjtjb2xvcjojRkZGO291dGxpbmU6MH0uZWwtYnV0dG9uLS13YXJuaW5nLmlzLXBsYWluLmlzLWRpc2FibGVkLC5lbC1idXR0b24tLXdhcm5pbmcuaXMtcGxhaW4uaXMtZGlzYWJsZWQ6YWN0aXZlLC5lbC1idXR0b24tLXdhcm5pbmcuaXMtcGxhaW4uaXMtZGlzYWJsZWQ6Zm9jdXMsLmVsLWJ1dHRvbi0td2FybmluZy5pcy1wbGFpbi5pcy1kaXNhYmxlZDpob3Zlcntjb2xvcjojZjBjNzhhO2JhY2tncm91bmQtY29sb3I6I2ZkZjZlYztib3JkZXItY29sb3I6I2ZhZWNkOH0uZWwtYnV0dG9uLS1kYW5nZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNGNTZDNkM7Ym9yZGVyLWNvbG9yOiNGNTZDNkN9LmVsLWJ1dHRvbi0tZGFuZ2VyOmZvY3VzLC5lbC1idXR0b24tLWRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kOiNmNzg5ODk7Ym9yZGVyLWNvbG9yOiNmNzg5ODk7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1kYW5nZXIuaXMtYWN0aXZlLC5lbC1idXR0b24tLWRhbmdlcjphY3RpdmV7YmFja2dyb3VuZDojZGQ2MTYxO2JvcmRlci1jb2xvcjojZGQ2MTYxO2NvbG9yOiNGRkZ9LmVsLWJ1dHRvbi0tZGFuZ2VyOmFjdGl2ZXtvdXRsaW5lOjB9LmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLWRpc2FibGVkLC5lbC1idXR0b24tLWRhbmdlci5pcy1kaXNhYmxlZDphY3RpdmUsLmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24tLWRhbmdlci5pcy1kaXNhYmxlZDpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6I2ZhYjZiNjtib3JkZXItY29sb3I6I2ZhYjZiNn0uZWwtYnV0dG9uLS1kYW5nZXIuaXMtcGxhaW57Y29sb3I6I0Y1NkM2QztiYWNrZ3JvdW5kOiNmZWYwZjA7Ym9yZGVyLWNvbG9yOiNmYmM0YzR9LmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLXBsYWluOmZvY3VzLC5lbC1idXR0b24tLWRhbmdlci5pcy1wbGFpbjpob3ZlcntiYWNrZ3JvdW5kOiNGNTZDNkM7Ym9yZGVyLWNvbG9yOiNGNTZDNkM7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1kYW5nZXIuaXMtcGxhaW46YWN0aXZle2JhY2tncm91bmQ6I2RkNjE2MTtib3JkZXItY29sb3I6I2RkNjE2MTtjb2xvcjojRkZGO291dGxpbmU6MH0uZWwtYnV0dG9uLS1kYW5nZXIuaXMtcGxhaW4uaXMtZGlzYWJsZWQsLmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLXBsYWluLmlzLWRpc2FibGVkOmFjdGl2ZSwuZWwtYnV0dG9uLS1kYW5nZXIuaXMtcGxhaW4uaXMtZGlzYWJsZWQ6Zm9jdXMsLmVsLWJ1dHRvbi0tZGFuZ2VyLmlzLXBsYWluLmlzLWRpc2FibGVkOmhvdmVye2NvbG9yOiNmOWE3YTc7YmFja2dyb3VuZC1jb2xvcjojZmVmMGYwO2JvcmRlci1jb2xvcjojZmRlMmUyfS5lbC1idXR0b24tLWluZm97Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM5MDkzOTk7Ym9yZGVyLWNvbG9yOiM5MDkzOTl9LmVsLWJ1dHRvbi0taW5mbzpmb2N1cywuZWwtYnV0dG9uLS1pbmZvOmhvdmVye2JhY2tncm91bmQ6I2E2YTlhZDtib3JkZXItY29sb3I6I2E2YTlhZDtjb2xvcjojRkZGfS5lbC1idXR0b24tLWluZm8uaXMtYWN0aXZlLC5lbC1idXR0b24tLWluZm86YWN0aXZle2JhY2tncm91bmQ6IzgyODQ4YTtib3JkZXItY29sb3I6IzgyODQ4YTtjb2xvcjojRkZGfS5lbC1idXR0b24tLWluZm86YWN0aXZle291dGxpbmU6MH0uZWwtYnV0dG9uLS1pbmZvLmlzLWRpc2FibGVkLC5lbC1idXR0b24tLWluZm8uaXMtZGlzYWJsZWQ6YWN0aXZlLC5lbC1idXR0b24tLWluZm8uaXMtZGlzYWJsZWQ6Zm9jdXMsLmVsLWJ1dHRvbi0taW5mby5pcy1kaXNhYmxlZDpob3Zlcntjb2xvcjojRkZGO2JhY2tncm91bmQtY29sb3I6I2M4YzljYztib3JkZXItY29sb3I6I2M4YzljY30uZWwtYnV0dG9uLS1pbmZvLmlzLXBsYWlue2NvbG9yOiM5MDkzOTk7YmFja2dyb3VuZDojZjRmNGY1O2JvcmRlci1jb2xvcjojZDNkNGQ2fS5lbC1idXR0b24tLWluZm8uaXMtcGxhaW46Zm9jdXMsLmVsLWJ1dHRvbi0taW5mby5pcy1wbGFpbjpob3ZlcntiYWNrZ3JvdW5kOiM5MDkzOTk7Ym9yZGVyLWNvbG9yOiM5MDkzOTk7Y29sb3I6I0ZGRn0uZWwtYnV0dG9uLS1pbmZvLmlzLXBsYWluOmFjdGl2ZXtiYWNrZ3JvdW5kOiM4Mjg0OGE7Ym9yZGVyLWNvbG9yOiM4Mjg0OGE7Y29sb3I6I0ZGRjtvdXRsaW5lOjB9LmVsLWJ1dHRvbi0taW5mby5pcy1wbGFpbi5pcy1kaXNhYmxlZCwuZWwtYnV0dG9uLS1pbmZvLmlzLXBsYWluLmlzLWRpc2FibGVkOmFjdGl2ZSwuZWwtYnV0dG9uLS1pbmZvLmlzLXBsYWluLmlzLWRpc2FibGVkOmZvY3VzLC5lbC1idXR0b24tLWluZm8uaXMtcGxhaW4uaXMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6I2JjYmVjMjtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjU7Ym9yZGVyLWNvbG9yOiNlOWU5ZWJ9LmVsLWJ1dHRvbi0tbWVkaXVte3BhZGRpbmc6MTBweCAyMHB4O2ZvbnQtc2l6ZToxNHB4O2JvcmRlci1yYWRpdXM6NHB4fS5lbC1idXR0b24tLW1lZGl1bS5pcy1yb3VuZHtwYWRkaW5nOjEwcHggMjBweH0uZWwtYnV0dG9uLS1tZWRpdW0uaXMtY2lyY2xle3BhZGRpbmc6MTBweH0uZWwtYnV0dG9uLS1zbWFsbHtwYWRkaW5nOjlweCAxNXB4O2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1yYWRpdXM6M3B4fS5lbC1idXR0b24tLXNtYWxsLmlzLXJvdW5ke3BhZGRpbmc6OXB4IDE1cHh9LmVsLWJ1dHRvbi0tc21hbGwuaXMtY2lyY2xle3BhZGRpbmc6OXB4fS5lbC1idXR0b24tLW1pbmksLmVsLWJ1dHRvbi0tbWluaS5pcy1yb3VuZHtwYWRkaW5nOjdweCAxNXB4fS5lbC1idXR0b24tLW1pbml7Zm9udC1zaXplOjEycHg7Ym9yZGVyLXJhZGl1czozcHh9LmVsLWJ1dHRvbi0tbWluaS5pcy1jaXJjbGV7cGFkZGluZzo3cHh9LmVsLWJ1dHRvbi0tdGV4dHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzQwOUVGRjtiYWNrZ3JvdW5kOjAgMDtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9LmVsLWJ1dHRvbi0tdGV4dDpmb2N1cywuZWwtYnV0dG9uLS10ZXh0OmhvdmVye2NvbG9yOiM2NmIxZmY7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmVsLWJ1dHRvbi0tdGV4dDphY3RpdmV7Y29sb3I6IzNhOGVlNjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uZWwtYnV0dG9uLS10ZXh0LmlzLWRpc2FibGVkLC5lbC1idXR0b24tLXRleHQuaXMtZGlzYWJsZWQ6Zm9jdXMsLmVsLWJ1dHRvbi0tdGV4dC5pcy1kaXNhYmxlZDpob3Zlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS1kYW5nZXI6bGFzdC1jaGlsZCwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLWRhbmdlcjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0taW5mbzpsYXN0LWNoaWxkLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0taW5mbzpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tcHJpbWFyeTpsYXN0LWNoaWxkLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tcHJpbWFyeTpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tc3VjY2VzczpsYXN0LWNoaWxkLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tc3VjY2Vzczpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0td2FybmluZzpsYXN0LWNoaWxkLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0td2FybmluZzpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLC5lbC1idXR0b24tZ3JvdXA+LmVsLWRyb3Bkb3duPi5lbC1idXR0b257Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS1kYW5nZXI6Zmlyc3QtY2hpbGQsLmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS1kYW5nZXI6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLWluZm86Zmlyc3QtY2hpbGQsLmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS1pbmZvOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksLmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS1wcmltYXJ5OmZpcnN0LWNoaWxkLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tcHJpbWFyeTpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLC5lbC1idXR0b24tZ3JvdXAgLmVsLWJ1dHRvbi0tc3VjY2VzczpmaXJzdC1jaGlsZCwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXN1Y2Nlc3M6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuZWwtYnV0dG9uLWdyb3VwIC5lbC1idXR0b24tLXdhcm5pbmc6Zmlyc3QtY2hpbGQsLmVsLWJ1dHRvbi1ncm91cCAuZWwtYnV0dG9uLS13YXJuaW5nOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS5lbC1idXR0b24tZ3JvdXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1idXR0b24tZ3JvdXA6OmFmdGVyLC5lbC1idXR0b24tZ3JvdXA6OmJlZm9yZXtkaXNwbGF5OnRhYmxlfS5lbC1idXR0b24tZ3JvdXA6OmFmdGVye2NsZWFyOmJvdGh9LmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9ue2Zsb2F0OmxlZnQ7cG9zaXRpb246cmVsYXRpdmV9LmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9uLmlzLWRpc2FibGVke3otaW5kZXg6MX0uZWwtYnV0dG9uLWdyb3VwPi5lbC1idXR0b246Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5lbC1idXR0b24tZ3JvdXA+LmVsLWJ1dHRvbjpsYXN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9uOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9uOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQuaXMtcm91bmR7Ym9yZGVyLXJhZGl1czoyMHB4fS5lbC1idXR0b24tZ3JvdXA+LmVsLWJ1dHRvbjpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkLmlzLWNpcmNsZXtib3JkZXItcmFkaXVzOjUwJX0uZWwtYnV0dG9uLWdyb3VwPi5lbC1idXR0b246bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItcmFkaXVzOjB9LmVsLWJ1dHRvbi1ncm91cD4uZWwtYnV0dG9uLmlzLWFjdGl2ZSwuZWwtYnV0dG9uLWdyb3VwPi5lbC1idXR0b246bm90KC5pcy1kaXNhYmxlZCk6YWN0aXZlLC5lbC1idXR0b24tZ3JvdXA+LmVsLWJ1dHRvbjpub3QoLmlzLWRpc2FibGVkKTpmb2N1cywuZWwtYnV0dG9uLWdyb3VwPi5lbC1idXR0b246bm90KC5pcy1kaXNhYmxlZCk6aG92ZXJ7ei1pbmRleDoxfS5lbC1idXR0b24tZ3JvdXA+LmVsLWRyb3Bkb3duPi5lbC1idXR0b257Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uZWwtY2FsZW5kYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5lbC1jYWxlbmRhcl9faGVhZGVye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjEycHggMjBweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRUJFRUY1fS5lbC1iYWNrdG9wLC5lbC1wYWdlLWhlYWRlcntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3h9LmVsLWNhbGVuZGFyX190aXRsZXtjb2xvcjojMDAwOy1tcy1mbGV4LWl0ZW0tYWxpZ246Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyfS5lbC1jYWxlbmRhcl9fYm9keXtwYWRkaW5nOjEycHggMjBweCAzNXB4fS5lbC1jYWxlbmRhci10YWJsZXt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MTAwJX0uZWwtY2FsZW5kYXItdGFibGUgdGhlYWQgdGh7cGFkZGluZzoxMnB4IDA7Y29sb3I6IzYwNjI2Njtmb250LXdlaWdodDo0MDB9LmVsLWNhbGVuZGFyLXRhYmxlOm5vdCguaXMtcmFuZ2UpIHRkLm5leHQsLmVsLWNhbGVuZGFyLXRhYmxlOm5vdCguaXMtcmFuZ2UpIHRkLnByZXZ7Y29sb3I6I0MwQzRDQ30uZWwtYmFja3RvcCwuZWwtY2FsZW5kYXItdGFibGUgdGQuaXMtdG9kYXl7Y29sb3I6IzQwOUVGRn0uZWwtY2FsZW5kYXItdGFibGUgdGR7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0VCRUVGNTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNFQkVFRjU7dmVydGljYWwtYWxpZ246dG9wOy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4ycyBlYXNlO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZX0uZWwtY2FsZW5kYXItdGFibGUgdGQuaXMtc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojRjJGOEZFfS5lbC1jYWxlbmRhci10YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCAjRUJFRUY1fS5lbC1jYWxlbmRhci10YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdDoxcHggc29saWQgI0VCRUVGNX0uZWwtY2FsZW5kYXItdGFibGUgdHIuZWwtY2FsZW5kYXItdGFibGVfX3Jvdy0taGlkZS1ib3JkZXIgdGR7Ym9yZGVyLXRvcDpub25lfS5lbC1jYWxlbmRhci10YWJsZSAuZWwtY2FsZW5kYXItZGF5ey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjhweDtoZWlnaHQ6ODVweH0uZWwtY2FsZW5kYXItdGFibGUgLmVsLWNhbGVuZGFyLWRheTpob3ZlcntjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNGMkY4RkV9LmVsLWJhY2t0b3B7cG9zaXRpb246Zml4ZWQ7YmFja2dyb3VuZC1jb2xvcjojRkZGO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo1MCU7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjIwcHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCA2cHggcmdiYSgwLDAsMCwuMTIpO2JveC1zaGFkb3c6MCAwIDZweCByZ2JhKDAsMCwwLC4xMik7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDo1fS5lbC1iYWNrdG9wOmhvdmVye2JhY2tncm91bmQtY29sb3I6I0YyRjZGQ30uZWwtcGFnZS1oZWFkZXJ7ZGlzcGxheTpmbGV4O2xpbmUtaGVpZ2h0OjI0cHh9LmVsLXBhZ2UtaGVhZGVyX19sZWZ0e2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLXJpZ2h0OjQwcHg7cG9zaXRpb246cmVsYXRpdmV9LmVsLXBhZ2UtaGVhZGVyX19sZWZ0OjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjE2cHg7cmlnaHQ6LTIwcHg7dG9wOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO2JhY2tncm91bmQtY29sb3I6I0RDREZFNn0uZWwtY2hlY2tib3gsLmVsLWNoZWNrYm94X19pbnB1dHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt3aGl0ZS1zcGFjZTpub3dyYXB9LmVsLXBhZ2UtaGVhZGVyX19sZWZ0IC5lbC1pY29uLWJhY2t7Zm9udC1zaXplOjE4cHg7bWFyZ2luLXJpZ2h0OjZweDstbXMtZmxleC1pdGVtLWFsaWduOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRlcn0uZWwtcGFnZS1oZWFkZXJfX3RpdGxle2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZWwtcGFnZS1oZWFkZXJfX2NvbnRlbnR7Zm9udC1zaXplOjE4cHg7Y29sb3I6IzMwMzEzM30uZWwtY2hlY2tib3h7Y29sb3I6IzYwNjI2Njtmb250LXdlaWdodDo1MDA7Zm9udC1zaXplOjE0cHg7Y3Vyc29yOnBvaW50ZXI7dXNlci1zZWxlY3Q6bm9uZTttYXJnaW4tcmlnaHQ6MzBweH0uZWwtY2hlY2tib3guaXMtYm9yZGVyZWR7cGFkZGluZzo5cHggMjBweCA5cHggMTBweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MXB4IHNvbGlkICNEQ0RGRTY7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2xpbmUtaGVpZ2h0Om5vcm1hbDtoZWlnaHQ6NDBweH0uZWwtY2hlY2tib3guaXMtYm9yZGVyZWQuaXMtY2hlY2tlZHtib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtY2hlY2tib3guaXMtYm9yZGVyZWQuaXMtZGlzYWJsZWR7Ym9yZGVyLWNvbG9yOiNFQkVFRjU7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1jaGVja2JveC5pcy1ib3JkZXJlZC5lbC1jaGVja2JveC0tbWVkaXVte3BhZGRpbmc6N3B4IDIwcHggN3B4IDEwcHg7Ym9yZGVyLXJhZGl1czo0cHg7aGVpZ2h0OjM2cHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmVsLWNoZWNrYm94LS1tZWRpdW0gLmVsLWNoZWNrYm94X19sYWJlbHtsaW5lLWhlaWdodDoxN3B4O2ZvbnQtc2l6ZToxNHB4fS5lbC1jaGVja2JveC5pcy1ib3JkZXJlZC5lbC1jaGVja2JveC0tbWVkaXVtIC5lbC1jaGVja2JveF9faW5uZXJ7aGVpZ2h0OjE0cHg7d2lkdGg6MTRweH0uZWwtY2hlY2tib3guaXMtYm9yZGVyZWQuZWwtY2hlY2tib3gtLXNtYWxse3BhZGRpbmc6NXB4IDE1cHggNXB4IDEwcHg7Ym9yZGVyLXJhZGl1czozcHg7aGVpZ2h0OjMycHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmVsLWNoZWNrYm94LS1zbWFsbCAuZWwtY2hlY2tib3hfX2xhYmVse2xpbmUtaGVpZ2h0OjE1cHg7Zm9udC1zaXplOjEycHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmVsLWNoZWNrYm94LS1zbWFsbCAuZWwtY2hlY2tib3hfX2lubmVye2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmVsLWNoZWNrYm94LS1zbWFsbCAuZWwtY2hlY2tib3hfX2lubmVyOjphZnRlcntoZWlnaHQ6NnB4O3dpZHRoOjJweH0uZWwtY2hlY2tib3guaXMtYm9yZGVyZWQuZWwtY2hlY2tib3gtLW1pbml7cGFkZGluZzozcHggMTVweCAzcHggMTBweDtib3JkZXItcmFkaXVzOjNweDtoZWlnaHQ6MjhweH0uZWwtY2hlY2tib3guaXMtYm9yZGVyZWQuZWwtY2hlY2tib3gtLW1pbmkgLmVsLWNoZWNrYm94X19sYWJlbHtsaW5lLWhlaWdodDoxMnB4O2ZvbnQtc2l6ZToxMnB4fS5lbC1jaGVja2JveC5pcy1ib3JkZXJlZC5lbC1jaGVja2JveC0tbWluaSAuZWwtY2hlY2tib3hfX2lubmVye2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LmVsLWNoZWNrYm94LmlzLWJvcmRlcmVkLmVsLWNoZWNrYm94LS1taW5pIC5lbC1jaGVja2JveF9faW5uZXI6OmFmdGVye2hlaWdodDo2cHg7d2lkdGg6MnB4fS5lbC1jaGVja2JveF9faW5wdXR7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTowO2xpbmUtaGVpZ2h0OjE7dmVydGljYWwtYWxpZ246bWlkZGxlfS5lbC1jaGVja2JveF9faW5wdXQuaXMtZGlzYWJsZWQgLmVsLWNoZWNrYm94X19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiNlZGYyZmM7Ym9yZGVyLWNvbG9yOiNEQ0RGRTY7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1jaGVja2JveF9faW5wdXQuaXMtZGlzYWJsZWQgLmVsLWNoZWNrYm94X19pbm5lcjo6YWZ0ZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkO2JvcmRlci1jb2xvcjojQzBDNENDfS5lbC1jaGVja2JveF9faW5wdXQuaXMtZGlzYWJsZWQgLmVsLWNoZWNrYm94X19pbm5lcisuZWwtY2hlY2tib3hfX2xhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtY2hlY2tib3hfX2lucHV0LmlzLWRpc2FibGVkLmlzLWNoZWNrZWQgLmVsLWNoZWNrYm94X19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiNGMkY2RkM7Ym9yZGVyLWNvbG9yOiNEQ0RGRTZ9LmVsLWNoZWNrYm94X19pbnB1dC5pcy1kaXNhYmxlZC5pcy1jaGVja2VkIC5lbC1jaGVja2JveF9faW5uZXI6OmFmdGVye2JvcmRlci1jb2xvcjojQzBDNENDfS5lbC1jaGVja2JveF9faW5wdXQuaXMtZGlzYWJsZWQuaXMtaW5kZXRlcm1pbmF0ZSAuZWwtY2hlY2tib3hfX2lubmVye2JhY2tncm91bmQtY29sb3I6I0YyRjZGQztib3JkZXItY29sb3I6I0RDREZFNn0uZWwtY2hlY2tib3hfX2lucHV0LmlzLWRpc2FibGVkLmlzLWluZGV0ZXJtaW5hdGUgLmVsLWNoZWNrYm94X19pbm5lcjo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I0MwQzRDQztib3JkZXItY29sb3I6I0MwQzRDQ30uZWwtY2hlY2tib3hfX2lucHV0LmlzLWNoZWNrZWQgLmVsLWNoZWNrYm94X19pbm5lciwuZWwtY2hlY2tib3hfX2lucHV0LmlzLWluZGV0ZXJtaW5hdGUgLmVsLWNoZWNrYm94X19pbm5lcntiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkY7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLWNoZWNrYm94X19pbnB1dC5pcy1kaXNhYmxlZCtzcGFuLmVsLWNoZWNrYm94X19sYWJlbHtjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtY2hlY2tib3hfX2lucHV0LmlzLWNoZWNrZWQgLmVsLWNoZWNrYm94X19pbm5lcjo6YWZ0ZXJ7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKSBzY2FsZVkoMSk7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZykgc2NhbGVZKDEpfS5lbC1jaGVja2JveF9faW5wdXQuaXMtY2hlY2tlZCsuZWwtY2hlY2tib3hfX2xhYmVse2NvbG9yOiM0MDlFRkZ9LmVsLWNoZWNrYm94X19pbnB1dC5pcy1mb2N1cyAuZWwtY2hlY2tib3hfX2lubmVye2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1jaGVja2JveF9faW5wdXQuaXMtaW5kZXRlcm1pbmF0ZSAuZWwtY2hlY2tib3hfX2lubmVyOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2JhY2tncm91bmQtY29sb3I6I0ZGRjtoZWlnaHQ6MnB4Oy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC41KTt0cmFuc2Zvcm06c2NhbGUoLjUpO2xlZnQ6MDtyaWdodDowO3RvcDo1cHh9LmVsLWNoZWNrYm94X19pbnB1dC5pcy1pbmRldGVybWluYXRlIC5lbC1jaGVja2JveF9faW5uZXI6OmFmdGVye2Rpc3BsYXk6bm9uZX0uZWwtY2hlY2tib3hfX2lubmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtib3JkZXItcmFkaXVzOjJweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7ei1pbmRleDoxOy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjI1cyBjdWJpYy1iZXppZXIoLjcxLC0uNDYsLjI5LDEuNDYpLGJhY2tncm91bmQtY29sb3IgLjI1cyBjdWJpYy1iZXppZXIoLjcxLC0uNDYsLjI5LDEuNDYpO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4yNXMgY3ViaWMtYmV6aWVyKC43MSwtLjQ2LC4yOSwxLjQ2KSxiYWNrZ3JvdW5kLWNvbG9yIC4yNXMgY3ViaWMtYmV6aWVyKC43MSwtLjQ2LC4yOSwxLjQ2KX0uZWwtY2hlY2tib3hfX2lubmVyOmhvdmVye2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1jaGVja2JveF9faW5uZXI6OmFmdGVyey13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2NvbnRlbnQ6XFxcIlxcXCI7Ym9yZGVyOjFweCBzb2xpZCAjRkZGO2JvcmRlci1sZWZ0OjA7Ym9yZGVyLXRvcDowO2hlaWdodDo3cHg7bGVmdDo0cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjFweDstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHNjYWxlWSgwKTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKSBzY2FsZVkoMCk7d2lkdGg6M3B4Oy13ZWJraXQtdHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuMTVzIGVhc2UtaW4gLjA1czt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4xNXMgZWFzZS1pbiAuMDVzO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMgZWFzZS1pbiAuMDVzO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMgZWFzZS1pbiAuMDVzLC13ZWJraXQtdHJhbnNmb3JtIC4xNXMgZWFzZS1pbiAuMDVzOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9LmVsLWNoZWNrYm94X19vcmlnaW5hbHtvcGFjaXR5OjA7b3V0bGluZTowO3Bvc2l0aW9uOmFic29sdXRlO21hcmdpbjowO3dpZHRoOjA7aGVpZ2h0OjA7ei1pbmRleDotMX0uZWwtY2hlY2tib3gtYnV0dG9uLC5lbC1jaGVja2JveC1idXR0b25fX2lubmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC1jaGVja2JveF9fbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1sZWZ0OjEwcHg7bGluZS1oZWlnaHQ6MTlweDtmb250LXNpemU6MTRweH0uZWwtY2hlY2tib3g6bGFzdC1vZi10eXBle21hcmdpbi1yaWdodDowfS5lbC1jaGVja2JveC1idXR0b25fX2lubmVye2xpbmUtaGVpZ2h0OjE7Zm9udC13ZWlnaHQ6NTAwO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDojRkZGO2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtib3JkZXItbGVmdDowO2NvbG9yOiM2MDYyNjY7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O291dGxpbmU6MDttYXJnaW46MDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjY0NSwuMDQ1LC4zNTUsMSk7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguNjQ1LC4wNDUsLjM1NSwxKTtwYWRkaW5nOjEycHggMjBweDtmb250LXNpemU6MTRweDtib3JkZXItcmFkaXVzOjB9LmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXIuaXMtcm91bmR7cGFkZGluZzoxMnB4IDIwcHh9LmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXI6aG92ZXJ7Y29sb3I6IzQwOUVGRn0uZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lciBbY2xhc3MqPWVsLWljb24tXXtsaW5lLWhlaWdodDouOX0uZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lciBbY2xhc3MqPWVsLWljb24tXStzcGFue21hcmdpbi1sZWZ0OjVweH0uZWwtY2hlY2tib3gtYnV0dG9uX19vcmlnaW5hbHtvcGFjaXR5OjA7b3V0bGluZTowO3Bvc2l0aW9uOmFic29sdXRlO21hcmdpbjowO3otaW5kZXg6LTF9LmVsLXJhZGlvLC5lbC1yYWRpb19faW5uZXIsLmVsLXJhZGlvX19pbnB1dHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30uZWwtY2hlY2tib3gtYnV0dG9uLmlzLWNoZWNrZWQgLmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXJ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM0MDlFRkY7Ym9yZGVyLWNvbG9yOiM0MDlFRkY7LXdlYmtpdC1ib3gtc2hhZG93Oi0xcHggMCAwIDAgIzhjYzVmZjtib3gtc2hhZG93Oi0xcHggMCAwIDAgIzhjYzVmZn0uZWwtY2hlY2tib3gtYnV0dG9uLmlzLWNoZWNrZWQ6Zmlyc3QtY2hpbGQgLmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXJ7Ym9yZGVyLWxlZnQtY29sb3I6IzQwOUVGRn0uZWwtY2hlY2tib3gtYnV0dG9uLmlzLWRpc2FibGVkIC5lbC1jaGVja2JveC1idXR0b25fX2lubmVye2NvbG9yOiNDMEM0Q0M7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWNvbG9yOiNFQkVFRjU7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS5lbC1jaGVja2JveC1idXR0b24uaXMtZGlzYWJsZWQ6Zmlyc3QtY2hpbGQgLmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXJ7Ym9yZGVyLWxlZnQtY29sb3I6I0VCRUVGNX0uZWwtY2hlY2tib3gtYnV0dG9uOmZpcnN0LWNoaWxkIC5lbC1jaGVja2JveC1idXR0b25fX2lubmVye2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRENERkU2O2JvcmRlci1yYWRpdXM6NHB4IDAgMCA0cHg7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnR9LmVsLWNoZWNrYm94LWJ1dHRvbi5pcy1mb2N1cyAuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtY2hlY2tib3gtYnV0dG9uOmxhc3QtY2hpbGQgLmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXJ7Ym9yZGVyLXJhZGl1czowIDRweCA0cHggMH0uZWwtY2hlY2tib3gtYnV0dG9uLS1tZWRpdW0gLmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXJ7cGFkZGluZzoxMHB4IDIwcHg7Zm9udC1zaXplOjE0cHg7Ym9yZGVyLXJhZGl1czowfS5lbC1jaGVja2JveC1idXR0b24tLW1lZGl1bSAuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lci5pcy1yb3VuZHtwYWRkaW5nOjEwcHggMjBweH0uZWwtY2hlY2tib3gtYnV0dG9uLS1zbWFsbCAuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lcntwYWRkaW5nOjlweCAxNXB4O2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1yYWRpdXM6MH0uZWwtY2hlY2tib3gtYnV0dG9uLS1zbWFsbCAuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lci5pcy1yb3VuZHtwYWRkaW5nOjlweCAxNXB4fS5lbC1jaGVja2JveC1idXR0b24tLW1pbmkgLmVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXJ7cGFkZGluZzo3cHggMTVweDtmb250LXNpemU6MTJweDtib3JkZXItcmFkaXVzOjB9LmVsLWNoZWNrYm94LWJ1dHRvbi0tbWluaSAuZWwtY2hlY2tib3gtYnV0dG9uX19pbm5lci5pcy1yb3VuZHtwYWRkaW5nOjdweCAxNXB4fS5lbC1jaGVja2JveC1ncm91cHtmb250LXNpemU6MH0uZWwtYXZhdGFyLC5lbC1jYXNjYWRlci1wYW5lbCwuZWwtcmFkaW8sLmVsLXJhZGlvLS1tZWRpdW0uaXMtYm9yZGVyZWQgLmVsLXJhZGlvX19sYWJlbCwuZWwtcmFkaW9fX2xhYmVse2ZvbnQtc2l6ZToxNHB4fS5lbC1yYWRpb3tjb2xvcjojNjA2MjY2O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxO2N1cnNvcjpwb2ludGVyO3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7bWFyZ2luLXJpZ2h0OjMwcHh9LmVsLWNhc2NhZGVyLW5vZGU+LmVsLXJhZGlvLC5lbC1yYWRpbzpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5lbC1yYWRpby5pcy1ib3JkZXJlZHtwYWRkaW5nOjEycHggMjBweCAwIDEwcHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCAjRENERkU2Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6NDBweH0uZWwtY2FzY2FkZXItbWVudSwuZWwtY2FzY2FkZXItbWVudV9fbGlzdCwuZWwtcmFkaW9fX2lubmVyey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94fS5lbC1yYWRpby5pcy1ib3JkZXJlZC5pcy1jaGVja2Vke2JvcmRlci1jb2xvcjojNDA5RUZGfS5lbC1yYWRpby5pcy1ib3JkZXJlZC5pcy1kaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7Ym9yZGVyLWNvbG9yOiNFQkVFRjV9LmVsLXJhZGlvX19pbnB1dC5pcy1kaXNhYmxlZCAuZWwtcmFkaW9fX2lubmVyLC5lbC1yYWRpb19faW5wdXQuaXMtZGlzYWJsZWQuaXMtY2hlY2tlZCAuZWwtcmFkaW9fX2lubmVye2JhY2tncm91bmQtY29sb3I6I0Y1RjdGQTtib3JkZXItY29sb3I6I0U0RTdFRH0uZWwtcmFkaW8uaXMtYm9yZGVyZWQrLmVsLXJhZGlvLmlzLWJvcmRlcmVke21hcmdpbi1sZWZ0OjEwcHh9LmVsLXJhZGlvLS1tZWRpdW0uaXMtYm9yZGVyZWR7cGFkZGluZzoxMHB4IDIwcHggMCAxMHB4O2JvcmRlci1yYWRpdXM6NHB4O2hlaWdodDozNnB4fS5lbC1yYWRpby0tbWluaS5pcy1ib3JkZXJlZCAuZWwtcmFkaW9fX2xhYmVsLC5lbC1yYWRpby0tc21hbGwuaXMtYm9yZGVyZWQgLmVsLXJhZGlvX19sYWJlbHtmb250LXNpemU6MTJweH0uZWwtcmFkaW8tLW1lZGl1bS5pcy1ib3JkZXJlZCAuZWwtcmFkaW9fX2lubmVye2hlaWdodDoxNHB4O3dpZHRoOjE0cHh9LmVsLXJhZGlvLS1zbWFsbC5pcy1ib3JkZXJlZHtwYWRkaW5nOjhweCAxNXB4IDAgMTBweDtib3JkZXItcmFkaXVzOjNweDtoZWlnaHQ6MzJweH0uZWwtcmFkaW8tLXNtYWxsLmlzLWJvcmRlcmVkIC5lbC1yYWRpb19faW5uZXJ7aGVpZ2h0OjEycHg7d2lkdGg6MTJweH0uZWwtcmFkaW8tLW1pbmkuaXMtYm9yZGVyZWR7cGFkZGluZzo2cHggMTVweCAwIDEwcHg7Ym9yZGVyLXJhZGl1czozcHg7aGVpZ2h0OjI4cHh9LmVsLXJhZGlvLS1taW5pLmlzLWJvcmRlcmVkIC5lbC1yYWRpb19faW5uZXJ7aGVpZ2h0OjEycHg7d2lkdGg6MTJweH0uZWwtcmFkaW9fX2lucHV0e3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOjA7bGluZS1oZWlnaHQ6MTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLXJhZGlvX19pbnB1dC5pcy1kaXNhYmxlZCAuZWwtcmFkaW9fX2lubmVye2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtcmFkaW9fX2lucHV0LmlzLWRpc2FibGVkIC5lbC1yYWRpb19faW5uZXI6OmFmdGVye2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3RkF9LmVsLXJhZGlvX19pbnB1dC5pcy1kaXNhYmxlZCAuZWwtcmFkaW9fX2lubmVyKy5lbC1yYWRpb19fbGFiZWx7Y3Vyc29yOm5vdC1hbGxvd2VkfS5lbC1yYWRpb19faW5wdXQuaXMtZGlzYWJsZWQuaXMtY2hlY2tlZCAuZWwtcmFkaW9fX2lubmVyOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNDMEM0Q0N9LmVsLXJhZGlvX19pbnB1dC5pcy1kaXNhYmxlZCtzcGFuLmVsLXJhZGlvX19sYWJlbHtjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtcmFkaW9fX2lucHV0LmlzLWNoZWNrZWQgLmVsLXJhZGlvX19pbm5lcntib3JkZXItY29sb3I6IzQwOUVGRjtiYWNrZ3JvdW5kOiM0MDlFRkZ9LmVsLXJhZGlvX19pbnB1dC5pcy1jaGVja2VkIC5lbC1yYWRpb19faW5uZXI6OmFmdGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDEpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgxKX0uZWwtcmFkaW9fX2lucHV0LmlzLWNoZWNrZWQrLmVsLXJhZGlvX19sYWJlbHtjb2xvcjojNDA5RUZGfS5lbC1yYWRpb19faW5wdXQuaXMtZm9jdXMgLmVsLXJhZGlvX19pbm5lcntib3JkZXItY29sb3I6IzQwOUVGRn0uZWwtcmFkaW9fX2lubmVye2JvcmRlcjoxcHggc29saWQgI0RDREZFNjtib3JkZXItcmFkaXVzOjEwMCU7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1yYWRpb19faW5uZXI6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM0MDlFRkZ9LmVsLXJhZGlvX19pbm5lcjo6YWZ0ZXJ7d2lkdGg6NHB4O2hlaWdodDo0cHg7Ym9yZGVyLXJhZGl1czoxMDAlO2JhY2tncm91bmQtY29sb3I6I0ZGRjtjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO3RvcDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDApOy13ZWJraXQtdHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuMTVzIGVhc2UtaW47dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuMTVzIGVhc2UtaW47dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE1cyBlYXNlLWluO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMgZWFzZS1pbiwtd2Via2l0LXRyYW5zZm9ybSAuMTVzIGVhc2UtaW59LmVsLXJhZGlvX19vcmlnaW5hbHtvcGFjaXR5OjA7b3V0bGluZTowO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6LTE7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7bWFyZ2luOjB9LmVsLXJhZGlvOmZvY3VzOm5vdCguaXMtZm9jdXMpOm5vdCg6YWN0aXZlKTpub3QoLmlzLWRpc2FibGVkKSAuZWwtcmFkaW9fX2lubmVyey13ZWJraXQtYm94LXNoYWRvdzowIDAgMnB4IDJweCAjNDA5RUZGO2JveC1zaGFkb3c6MCAwIDJweCAycHggIzQwOUVGRn0uZWwtcmFkaW9fX2xhYmVse3BhZGRpbmctbGVmdDoxMHB4fS5lbC1zY3JvbGxiYXJ7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5lbC1zY3JvbGxiYXI6YWN0aXZlPi5lbC1zY3JvbGxiYXJfX2JhciwuZWwtc2Nyb2xsYmFyOmZvY3VzPi5lbC1zY3JvbGxiYXJfX2JhciwuZWwtc2Nyb2xsYmFyOmhvdmVyPi5lbC1zY3JvbGxiYXJfX2JhcntvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgMzQwbXMgZWFzZS1vdXQ7dHJhbnNpdGlvbjpvcGFjaXR5IDM0MG1zIGVhc2Utb3V0fS5lbC1zY3JvbGxiYXJfX3dyYXB7b3ZlcmZsb3c6c2Nyb2xsO2hlaWdodDoxMDAlfS5lbC1zY3JvbGxiYXJfX3dyYXAtLWhpZGRlbi1kZWZhdWx0e3Njcm9sbGJhci13aWR0aDpub25lfS5lbC1zY3JvbGxiYXJfX3dyYXAtLWhpZGRlbi1kZWZhdWx0Ojotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDowO2hlaWdodDowfS5lbC1zY3JvbGxiYXJfX3RodW1ie3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MDtoZWlnaHQ6MDtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE0NCwxNDcsMTUzLC4zKTstd2Via2l0LXRyYW5zaXRpb246LjNzIGJhY2tncm91bmQtY29sb3I7dHJhbnNpdGlvbjouM3MgYmFja2dyb3VuZC1jb2xvcn0uZWwtc2Nyb2xsYmFyX190aHVtYjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTQ0LDE0NywxNTMsLjUpfS5lbC1zY3JvbGxiYXJfX2Jhcntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoycHg7Ym90dG9tOjJweDt6LWluZGV4OjE7Ym9yZGVyLXJhZGl1czo0cHg7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IDEyMG1zIGVhc2Utb3V0O3RyYW5zaXRpb246b3BhY2l0eSAxMjBtcyBlYXNlLW91dH0uZWwtc2Nyb2xsYmFyX19iYXIuaXMtdmVydGljYWx7d2lkdGg6NnB4O3RvcDoycHh9LmVsLXNjcm9sbGJhcl9fYmFyLmlzLXZlcnRpY2FsPmRpdnt3aWR0aDoxMDAlfS5lbC1zY3JvbGxiYXJfX2Jhci5pcy1ob3Jpem9udGFse2hlaWdodDo2cHg7bGVmdDoycHh9LmVsLXNjcm9sbGJhcl9fYmFyLmlzLWhvcml6b250YWw+ZGl2e2hlaWdodDoxMDAlfS5lbC1jYXNjYWRlci1wYW5lbHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4O2JvcmRlci1yYWRpdXM6NHB4fS5lbC1jYXNjYWRlci1wYW5lbC5pcy1ib3JkZXJlZHtib3JkZXI6MXB4IHNvbGlkICNFNEU3RUQ7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLWNhc2NhZGVyLW1lbnV7bWluLXdpZHRoOjE4MHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojNjA2MjY2O2JvcmRlci1yaWdodDpzb2xpZCAxcHggI0U0RTdFRH0uZWwtY2FzY2FkZXItbWVudTpsYXN0LWNoaWxke2JvcmRlci1yaWdodDpub25lfS5lbC1jYXNjYWRlci1tZW51X193cmFwe2hlaWdodDoyMDRweH0uZWwtY2FzY2FkZXItbWVudV9fbGlzdHtwb3NpdGlvbjpyZWxhdGl2ZTttaW4taGVpZ2h0OjEwMCU7bWFyZ2luOjA7cGFkZGluZzo2cHggMDtsaXN0LXN0eWxlOm5vbmU7Ym94LXNpemluZzpib3JkZXItYm94fS5lbC1jYXNjYWRlci1tZW51X19ob3Zlci16b25le3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3BvaW50ZXItZXZlbnRzOm5vbmV9LmVsLWNhc2NhZGVyLW1lbnVfX2VtcHR5LXRleHR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6I0MwQzRDQ30uZWwtY2FzY2FkZXItbm9kZXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MCAzMHB4IDAgMjBweDtoZWlnaHQ6MzRweDtsaW5lLWhlaWdodDozNHB4O291dGxpbmU6MH0uZWwtY2FzY2FkZXItbm9kZS5pcy1zZWxlY3RhYmxlLmluLWFjdGl2ZS1wYXRoe2NvbG9yOiM2MDYyNjZ9LmVsLWNhc2NhZGVyLW5vZGUuaW4tYWN0aXZlLXBhdGgsLmVsLWNhc2NhZGVyLW5vZGUuaXMtYWN0aXZlLC5lbC1jYXNjYWRlci1ub2RlLmlzLXNlbGVjdGFibGUuaW4tY2hlY2tlZC1wYXRoe2NvbG9yOiM0MDlFRkY7Zm9udC13ZWlnaHQ6NzAwfS5lbC1jYXNjYWRlci1ub2RlOm5vdCguaXMtZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfS5lbC1jYXNjYWRlci1ub2RlOm5vdCguaXMtZGlzYWJsZWQpOmZvY3VzLC5lbC1jYXNjYWRlci1ub2RlOm5vdCguaXMtZGlzYWJsZWQpOmhvdmVye2JhY2tncm91bmQ6I0Y1RjdGQX0uZWwtY2FzY2FkZXItbm9kZS5pcy1kaXNhYmxlZHtjb2xvcjojQzBDNENDO2N1cnNvcjpub3QtYWxsb3dlZH0uZWwtY2FzY2FkZXItbm9kZV9fcHJlZml4e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTBweH0uZWwtY2FzY2FkZXItbm9kZV9fcG9zdGZpeHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxMHB4fS5lbC1jYXNjYWRlci1ub2RlX19sYWJlbHstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjE7cGFkZGluZzowIDEwcHg7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5lbC1jYXNjYWRlci1ub2RlPi5lbC1yYWRpbyAuZWwtcmFkaW9fX2xhYmVse3BhZGRpbmctbGVmdDowfS5lbC1hdmF0YXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3RleHQtYWxpZ246Y2VudGVyO292ZXJmbG93OmhpZGRlbjtjb2xvcjojZmZmO2JhY2tncm91bmQ6I0MwQzRDQzt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2xpbmUtaGVpZ2h0OjQwcHh9LmVsLWRyYXdlciwuZWwtZHJhd2VyX19ib2R5Pip7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWF2YXRhcj5pbWd7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmVsLWVtcHR5X19pbWFnZSBpbWcsLmVsLWVtcHR5X19pbWFnZSBzdmd7dmVydGljYWwtYWxpZ246dG9wO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmVsLWF2YXRhci0tY2lyY2xle2JvcmRlci1yYWRpdXM6NTAlfS5lbC1hdmF0YXItLXNxdWFyZXtib3JkZXItcmFkaXVzOjRweH0uZWwtYXZhdGFyLS1pY29ue2ZvbnQtc2l6ZToxOHB4fS5lbC1hdmF0YXItLWxhcmdle3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bGluZS1oZWlnaHQ6NDBweH0uZWwtYXZhdGFyLS1tZWRpdW17d2lkdGg6MzZweDtoZWlnaHQ6MzZweDtsaW5lLWhlaWdodDozNnB4fS5lbC1hdmF0YXItLXNtYWxse3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH1ALXdlYmtpdC1rZXlmcmFtZXMgZWwtZHJhd2VyLWZhZGUtaW57MCV7b3BhY2l0eTowfTEwMCV7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGVsLWRyYXdlci1mYWRlLWluezAle29wYWNpdHk6MH0xMDAle29wYWNpdHk6MX19QC13ZWJraXQta2V5ZnJhbWVzIHJ0bC1kcmF3ZXItaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlLDApfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfX1Aa2V5ZnJhbWVzIHJ0bC1kcmF3ZXItaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlLDApfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgcnRsLWRyYXdlci1vdXR7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlLDApfX1Aa2V5ZnJhbWVzIHJ0bC1kcmF3ZXItb3V0ezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSwwKX19QC13ZWJraXQta2V5ZnJhbWVzIGx0ci1kcmF3ZXItaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUsMCl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCl9fUBrZXlmcmFtZXMgbHRyLWRyYXdlci1pbnswJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSwwKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX19QC13ZWJraXQta2V5ZnJhbWVzIGx0ci1kcmF3ZXItb3V0ezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlLDApfX1Aa2V5ZnJhbWVzIGx0ci1kcmF3ZXItb3V0ezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlLDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgdHRiLWRyYXdlci1pbnswJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0xMDAlKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX19QGtleWZyYW1lcyB0dGItZHJhd2VyLWluezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0xMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTEwMCUpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgdHRiLWRyYXdlci1vdXR7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMTAwJSl9fUBrZXlmcmFtZXMgdHRiLWRyYXdlci1vdXR7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMTAwJSl9fUAtd2Via2l0LWtleWZyYW1lcyBidHQtZHJhd2VyLWluezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwxMDAlKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX19QGtleWZyYW1lcyBidHQtZHJhd2VyLWluezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwxMDAlKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX19QC13ZWJraXQta2V5ZnJhbWVzIGJ0dC1kcmF3ZXItb3V0ezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwxMDAlKX19QGtleWZyYW1lcyBidHQtZHJhd2VyLW91dHswJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwxMDAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMTAwJSl9fS5lbC1kcmF3ZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQtY29sb3I6I0ZGRjtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LXNoYWRvdzowIDhweCAxMHB4IC01cHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDI0cHggMnB4IHJnYmEoMCwwLDAsLjE0KSwwIDZweCAzMHB4IDVweCByZ2JhKDAsMCwwLC4xMik7Ym94LXNoYWRvdzowIDhweCAxMHB4IC01cHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDI0cHggMnB4IHJnYmEoMCwwLDAsLjE0KSwwIDZweCAzMHB4IDVweCByZ2JhKDAsMCwwLC4xMik7b3ZlcmZsb3c6aGlkZGVuO291dGxpbmU6MH0uZWwtZHJhd2VyLnJ0bHstd2Via2l0LWFuaW1hdGlvbjpydGwtZHJhd2VyLW91dCAuM3M7YW5pbWF0aW9uOnJ0bC1kcmF3ZXItb3V0IC4zcztyaWdodDowfS5lbC1kcmF3ZXJfX29wZW4gLmVsLWRyYXdlci5ydGx7LXdlYmtpdC1hbmltYXRpb246cnRsLWRyYXdlci1pbiAuM3MgMW1zO2FuaW1hdGlvbjpydGwtZHJhd2VyLWluIC4zcyAxbXN9LmVsLWRyYXdlci5sdHJ7LXdlYmtpdC1hbmltYXRpb246bHRyLWRyYXdlci1vdXQgLjNzO2FuaW1hdGlvbjpsdHItZHJhd2VyLW91dCAuM3M7bGVmdDowfS5lbC1kcmF3ZXJfX29wZW4gLmVsLWRyYXdlci5sdHJ7LXdlYmtpdC1hbmltYXRpb246bHRyLWRyYXdlci1pbiAuM3MgMW1zO2FuaW1hdGlvbjpsdHItZHJhd2VyLWluIC4zcyAxbXN9LmVsLWRyYXdlci50dGJ7LXdlYmtpdC1hbmltYXRpb246dHRiLWRyYXdlci1vdXQgLjNzO2FuaW1hdGlvbjp0dGItZHJhd2VyLW91dCAuM3M7dG9wOjB9LmVsLWRyYXdlcl9fb3BlbiAuZWwtZHJhd2VyLnR0Ynstd2Via2l0LWFuaW1hdGlvbjp0dGItZHJhd2VyLWluIC4zcyAxbXM7YW5pbWF0aW9uOnR0Yi1kcmF3ZXItaW4gLjNzIDFtc30uZWwtZHJhd2VyLmJ0dHstd2Via2l0LWFuaW1hdGlvbjpidHQtZHJhd2VyLW91dCAuM3M7YW5pbWF0aW9uOmJ0dC1kcmF3ZXItb3V0IC4zcztib3R0b206MH0uZWwtZHJhd2VyX19vcGVuIC5lbC1kcmF3ZXIuYnR0ey13ZWJraXQtYW5pbWF0aW9uOmJ0dC1kcmF3ZXItaW4gLjNzIDFtczthbmltYXRpb246YnR0LWRyYXdlci1pbiAuM3MgMW1zfS5lbC1kcmF3ZXJfX3dyYXBwZXJ7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowfS5lbC1kcmF3ZXJfX2hlYWRlcnstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojNzI3NjdiO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7bWFyZ2luLWJvdHRvbTozMnB4O3BhZGRpbmc6MjBweCAyMHB4IDB9LmVsLWRyYXdlcl9faGVhZGVyPjpmaXJzdC1jaGlsZHstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjF9LmVsLWRyYXdlcl9fdGl0bGV7bWFyZ2luOjA7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxO2xpbmUtaGVpZ2h0OmluaGVyaXQ7Zm9udC1zaXplOjFyZW19LmVsLWRyYXdlcl9fY2xvc2UtYnRue2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToyMHB4O2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uZWwtZHJhd2VyX19ib2R5ey13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MTtvdmVyZmxvdzphdXRvfS5lbC1kcmF3ZXJfX2JvZHk+Kntib3gtc2l6aW5nOmJvcmRlci1ib3h9LmVsLWRyYXdlci5sdHIsLmVsLWRyYXdlci5ydGx7aGVpZ2h0OjEwMCU7dG9wOjA7Ym90dG9tOjB9LmVsLWRyYXdlci5idHQsLmVsLWRyYXdlci50dGJ7d2lkdGg6MTAwJTtsZWZ0OjA7cmlnaHQ6MH0uZWwtZHJhd2VyX19jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmU7bGVmdDowO3JpZ2h0OjA7dG9wOjA7Ym90dG9tOjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uZWwtZHJhd2VyLWZhZGUtZW50ZXItYWN0aXZley13ZWJraXQtYW5pbWF0aW9uOmVsLWRyYXdlci1mYWRlLWluIC4zczthbmltYXRpb246ZWwtZHJhd2VyLWZhZGUtaW4gLjNzfS5lbC1kcmF3ZXItZmFkZS1sZWF2ZS1hY3RpdmV7YW5pbWF0aW9uOmVsLWRyYXdlci1mYWRlLWluIC4zcyByZXZlcnNlfS5lbC1zdGF0aXN0aWN7d2lkdGg6MTAwJTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowO2NvbG9yOiMwMDA7Zm9udC12YXJpYW50OnRhYnVsYXItbnVtcztsaXN0LXN0eWxlOm5vbmU7LXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6XFxcInRudW1cXFwiO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpcXFwidG51bVxcXCI7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLXN0YXRpc3RpYyAuaGVhZHttYXJnaW4tYm90dG9tOjRweDtjb2xvcjojNjA2MjY2O2ZvbnQtc2l6ZToxM3B4fS5lbC1zdGF0aXN0aWMgLmNvbntmb250LWZhbWlseTpTYW5zLXNlcmlmO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojMzAzMTMzfS5lbC1zdGF0aXN0aWMgLmNvbiAubnVtYmVye2ZvbnQtc2l6ZToyMHB4O3BhZGRpbmc6MCA0cHh9LmVsLXN0YXRpc3RpYyAuY29uIHNwYW57ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjA7bGluZS1oZWlnaHQ6MTAwJX0uZWwtcG9wY29uZmlybV9fbWFpbiwuZWwtc2tlbGV0b25fX2ltYWdle2Rpc3BsYXk6LW1zLWZsZXhib3g7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO2Rpc3BsYXk6LXdlYmtpdC1ib3h9LmVsLXBvcGNvbmZpcm1fX21haW57ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LmVsLXBvcGNvbmZpcm1fX2ljb257bWFyZ2luLXJpZ2h0OjVweH0uZWwtcG9wY29uZmlybV9fYWN0aW9ue3RleHQtYWxpZ246cmlnaHQ7bWFyZ2luOjB9QC13ZWJraXQta2V5ZnJhbWVzIGVsLXNrZWxldG9uLWxvYWRpbmd7MCV7YmFja2dyb3VuZC1wb3NpdGlvbjoxMDAlIDUwJX0xMDAle2JhY2tncm91bmQtcG9zaXRpb246MCA1MCV9fUBrZXlmcmFtZXMgZWwtc2tlbGV0b24tbG9hZGluZ3swJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwMCUgNTAlfTEwMCV7YmFja2dyb3VuZC1wb3NpdGlvbjowIDUwJX19LmVsLXNrZWxldG9ue3dpZHRoOjEwMCV9LmVsLXNrZWxldG9uX19maXJzdC1saW5lLC5lbC1za2VsZXRvbl9fcGFyYWdyYXBoe2hlaWdodDoxNnB4O21hcmdpbi10b3A6MTZweDtiYWNrZ3JvdW5kOiNmMmYyZjJ9LmVsLXNrZWxldG9uLmlzLWFuaW1hdGVkIC5lbC1za2VsZXRvbl9faXRlbXtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLHJpZ2h0IHRvcCxjb2xvci1zdG9wKDI1JSwjZjJmMmYyKSxjb2xvci1zdG9wKDM3JSwjZTZlNmU2KSxjb2xvci1zdG9wKDYzJSwjZjJmMmYyKSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsI2YyZjJmMiAyNSUsI2U2ZTZlNiAzNyUsI2YyZjJmMiA2MyUpO2JhY2tncm91bmQtc2l6ZTo0MDAlIDEwMCU7LXdlYmtpdC1hbmltYXRpb246ZWwtc2tlbGV0b24tbG9hZGluZyAxLjRzIGVhc2UgaW5maW5pdGU7YW5pbWF0aW9uOmVsLXNrZWxldG9uLWxvYWRpbmcgMS40cyBlYXNlIGluZmluaXRlfS5lbC1za2VsZXRvbl9faXRlbXtiYWNrZ3JvdW5kOiNmMmYyZjI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7d2lkdGg6MTAwJX0uZWwtc2tlbGV0b25fX2NpcmNsZXtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDozNnB4O2hlaWdodDozNnB4O2xpbmUtaGVpZ2h0OjM2cHh9LmVsLXNrZWxldG9uX19jaXJjbGUtLWxne3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bGluZS1oZWlnaHQ6NDBweH0uZWwtc2tlbGV0b25fX2NpcmNsZS0tbWR7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5lbC1za2VsZXRvbl9fYnV0dG9ue2hlaWdodDo0MHB4O3dpZHRoOjY0cHg7Ym9yZGVyLXJhZGl1czo0cHh9LmVsLXNrZWxldG9uX19we3dpZHRoOjEwMCV9LmVsLXNrZWxldG9uX19wLmlzLWxhc3R7d2lkdGg6NjElfS5lbC1za2VsZXRvbl9fcC5pcy1maXJzdHt3aWR0aDozMyV9LmVsLXNrZWxldG9uX190ZXh0e3dpZHRoOjEwMCU7aGVpZ2h0OjEzcHh9LmVsLXNrZWxldG9uX19jYXB0aW9ue2hlaWdodDoxMnB4fS5lbC1za2VsZXRvbl9faDF7aGVpZ2h0OjIwcHh9LmVsLXNrZWxldG9uX19oM3toZWlnaHQ6MThweH0uZWwtc2tlbGV0b25fX2g1e2hlaWdodDoxNnB4fS5lbC1za2VsZXRvbl9faW1hZ2V7d2lkdGg6dW5zZXQ7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOjB9LmVsLXNrZWxldG9uX19pbWFnZSBzdmd7ZmlsbDojRENEREUwO3dpZHRoOjIyJTtoZWlnaHQ6MjIlfS5lbC1lbXB0eXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6NDBweCAwfS5lbC1lbXB0eV9faW1hZ2V7d2lkdGg6MTYwcHh9LmVsLWVtcHR5X19pbWFnZSBpbWd7dXNlci1zZWxlY3Q6bm9uZTstby1vYmplY3QtZml0OmNvbnRhaW47b2JqZWN0LWZpdDpjb250YWlufS5lbC1lbXB0eV9faW1hZ2Ugc3Zne2ZpbGw6I0RDRERFMH0uZWwtZW1wdHlfX2Rlc2NyaXB0aW9ue21hcmdpbi10b3A6MjBweH0uZWwtZW1wdHlfX2Rlc2NyaXB0aW9uIHB7bWFyZ2luOjA7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzkwOTM5OX0uZWwtZW1wdHlfX2JvdHRvbSwuZWwtcmVzdWx0X190aXRsZXttYXJnaW4tdG9wOjIwcHh9LmVsLWRlc2NyaXB0aW9uc3std2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzMwMzEzM30uZWwtZGVzY3JpcHRpb25zX19oZWFkZXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1wYWNrOmp1c3RpZnk7LW1zLWZsZXgtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweH0uZWwtZGVzY3JpcHRpb25zX190aXRsZXtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDB9LmVsLWRlc2NyaXB0aW9ucy0tbWluaSwuZWwtZGVzY3JpcHRpb25zLS1zbWFsbHtmb250LXNpemU6MTJweH0uZWwtZGVzY3JpcHRpb25zX19ib2R5e2NvbG9yOiM2MDYyNjY7YmFja2dyb3VuZC1jb2xvcjojRkZGfS5lbC1kZXNjcmlwdGlvbnNfX2JvZHkgLmVsLWRlc2NyaXB0aW9uc19fdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7dGFibGUtbGF5b3V0OmZpeGVkfS5lbC1kZXNjcmlwdGlvbnNfX2JvZHkgLmVsLWRlc2NyaXB0aW9uc19fdGFibGUgLmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jZWxsey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt0ZXh0LWFsaWduOmxlZnQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNX0uZWwtZGVzY3JpcHRpb25zX19ib2R5IC5lbC1kZXNjcmlwdGlvbnNfX3RhYmxlIC5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY2VsbC5pcy1sZWZ0e3RleHQtYWxpZ246bGVmdH0uZWwtZGVzY3JpcHRpb25zX19ib2R5IC5lbC1kZXNjcmlwdGlvbnNfX3RhYmxlIC5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY2VsbC5pcy1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsLWRlc2NyaXB0aW9uc19fYm9keSAuZWwtZGVzY3JpcHRpb25zX190YWJsZSAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGwuaXMtcmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uZWwtZGVzY3JpcHRpb25zIC5pcy1ib3JkZXJlZHt0YWJsZS1sYXlvdXQ6YXV0b30uZWwtZGVzY3JpcHRpb25zIC5pcy1ib3JkZXJlZCAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7Ym9yZGVyOjFweCBzb2xpZCAjRUJFRUY1O3BhZGRpbmc6MTJweCAxMHB4fS5lbC1kZXNjcmlwdGlvbnMgOm5vdCguaXMtYm9yZGVyZWQpIC5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY2VsbHtwYWRkaW5nLWJvdHRvbToxMnB4fS5lbC1kZXNjcmlwdGlvbnMtLW1lZGl1bS5pcy1ib3JkZXJlZCAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZzoxMHB4fS5lbC1kZXNjcmlwdGlvbnMtLW1lZGl1bTpub3QoLmlzLWJvcmRlcmVkKSAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZy1ib3R0b206MTBweH0uZWwtZGVzY3JpcHRpb25zLS1zbWFsbC5pcy1ib3JkZXJlZCAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZzo4cHggMTBweH0uZWwtZGVzY3JpcHRpb25zLS1zbWFsbDpub3QoLmlzLWJvcmRlcmVkKSAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZy1ib3R0b206OHB4fS5lbC1kZXNjcmlwdGlvbnMtLW1pbmkuaXMtYm9yZGVyZWQgLmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jZWxse3BhZGRpbmc6NnB4IDEwcHh9LmVsLWRlc2NyaXB0aW9ucy0tbWluaTpub3QoLmlzLWJvcmRlcmVkKSAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGx7cGFkZGluZy1ib3R0b206NnB4fS5lbC1kZXNjcmlwdGlvbnMtaXRlbXt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jb250YWluZXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0uZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NvbnRhaW5lciAuZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NvbnRlbnQsLmVsLWRlc2NyaXB0aW9ucy1pdGVtX19jb250YWluZXIgLmVsLWRlc2NyaXB0aW9ucy1pdGVtX19sYWJlbHtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4Oy13ZWJraXQtYm94LWFsaWduOmJhc2VsaW5lOy1tcy1mbGV4LWFsaWduOmJhc2VsaW5lO2FsaWduLWl0ZW1zOmJhc2VsaW5lfS5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY29udGFpbmVyIC5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY29udGVudHstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjF9LmVsLWRlc2NyaXB0aW9ucy1pdGVtX19sYWJlbC5oYXMtY29sb246OmFmdGVye2NvbnRlbnQ6JzonO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotLjVweH0uZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2xhYmVsLmlzLWJvcmRlcmVkLWxhYmVse2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojOTA5Mzk5O2JhY2tncm91bmQ6I2ZhZmFmYX0uZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2xhYmVsOm5vdCguaXMtYm9yZGVyZWQtbGFiZWwpe21hcmdpbi1yaWdodDoxMHB4fS5lbC1kZXNjcmlwdGlvbnMtaXRlbV9fY29udGVudHt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkfS5lbC1yZXN1bHR7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uO3RleHQtYWxpZ246Y2VudGVyOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjQwcHggMzBweH0uZWwtcmVzdWx0X19pY29uIHN2Z3t3aWR0aDo2NHB4O2hlaWdodDo2NHB4fS5lbC1yZXN1bHRfX3RpdGxlIHB7bWFyZ2luOjA7Zm9udC1zaXplOjIwcHg7Y29sb3I6IzMwMzEzMztsaW5lLWhlaWdodDoxLjN9LmVsLXJlc3VsdF9fc3VidGl0bGV7bWFyZ2luLXRvcDoxMHB4fS5lbC1yZXN1bHRfX3N1YnRpdGxlIHB7bWFyZ2luOjA7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzYwNjI2NjtsaW5lLWhlaWdodDoxLjN9LmVsLXJlc3VsdF9fZXh0cmF7bWFyZ2luLXRvcDozMHB4fS5lbC1yZXN1bHQgLmljb24tc3VjY2Vzc3tmaWxsOiM2N0MyM0F9LmVsLXJlc3VsdCAuaWNvbi1lcnJvcntmaWxsOiNGNTZDNkN9LmVsLXJlc3VsdCAuaWNvbi1pbmZve2ZpbGw6IzkwOTM5OX0uZWwtcmVzdWx0IC5pY29uLXdhcm5pbmd7ZmlsbDojRTZBMjNDfVwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/element-ui/lib/theme-chalk/index.css\n");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/SidebarWidget.vue?vue&type=style&index=0&id=5c937b85&lang=css&":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/SidebarWidget.vue?vue&type=style&index=0&id=5c937b85&lang=css& ***!
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.brand-link {\\n padding: 2px;\\n text-align: center;\\n}\\n.user-panel .info .d-block {\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./resources/js/components/admin/widgets/SidebarWidget.vue\"],\"names\":[],\"mappings\":\";AAgHA;IACA,YAAA;IACA,kBAAA;AACA;AACA;IACA,uBAAA;IACA,mBAAA;IACA,gBAAA;AACA\",\"sourcesContent\":[\"<template>\\n <aside class=\\\"main-sidebar sidebar-dark-red elevation-4\\\">\\n <div class=\\\"text-center\\\" id=\\\"logo-ppal\\\">\\n <img src=\\\"svg/logos/logo-plataforma.svg\\\" class=\\\"img-resposive pointer\\\" @click=\\\"goToPlatform()\\\" />\\n </div>\\n\\n <div class=\\\"sidebar\\\">\\n <div class=\\\"user-panel mt-3 pb-3 mb-3 d-flex\\\">\\n <!-- <div class=\\\"image\\\">\\n <img src=\\\"svg/avatars/avatar-default.svg\\\" class=\\\"img-circle elevation-2\\\" alt=\\\"User Image\\\" />\\n </div>\\n <div class=\\\"info\\\">\\n {{ UserData.name }}\\n </div> -->\\n </div>\\n\\n <nav class=\\\"options\\\">\\n <ul class=\\\"nav nav-pills nav-sidebar flex-column\\\" data-widget=\\\"treeview\\\" role=\\\"menu\\\" data-accordion=\\\"true\\\">\\n\\n <li v-bind:class=\\\"(item.is_separator == 1 ? 'nav-header' : 'nav-item') + ' ' + (item.childs.length > 0 ? 'with-child' : '')\\\" v-for=\\\"item of menu\\\" v-if=\\\"UserData != null\\\">\\n <router-link class=\\\"nav-link\\\" :tag=\\\"(item.childs.length > 0 ? 'span' : 'a')\\\" :to=\\\"(item.childs.length > 0 ? '#' : item.link)\\\" v-if=\\\"item.is_separator != 1\\\">\\n <i class=\\\"fas\\\" :class=\\\"item.icon\\\"></i>\\n {{ item.name }}\\n </router-link>\\n <span v-if=\\\"item.is_separator == 1\\\">\\n <i class=\\\"fas\\\" :class=\\\"item.icon\\\"></i>\\n <p>\\n {{ item.name }}\\n </p>\\n </span>\\n <ul class=\\\"nav nav-treeview\\\" v-if=\\\"item.is_separator != 1 && item.childs.length > 0\\\">\\n <li class=\\\"nav-item\\\" v-for=\\\"child of item.childs\\\">\\n <router-link tag=\\\"a\\\" class=\\\"nav-link\\\" :to=\\\"child.link\\\">\\n <span>\\n <i class=\\\"fa fa-dot-circle\\\"></i>\\n {{ child.name }}\\n </span>\\n </router-link>\\n </li>\\n </ul>\\n </li>\\n </ul>\\n </nav>\\n <br />\\n <br />\\n </div>\\n <div class=\\\"login-footer-menu\\\"></div>\\n </aside>\\n</template>\\n\\n<script>\\nexport default {\\n data() {\\n return {\\n menu: [],\\n organizationTypeList: [],\\n organizationType: 0\\n };\\n },\\n mounted() {\\n if(window.AT == \\\"\\\") {\\n this.UserData = null;\\n window.localStorage.removeItem('userDataIF');\\n }\\n\\n if(this.UserData != null) {\\n axios\\n .post(\\n \\\"/api/menu\\\",\\n {},\\n {\\n headers: {\\n Authorization: AT,\\n },\\n }\\n )\\n .then((resp) => {\\n this.menu = resp.data;\\n });\\n }\\n this.loadOrganizationType();\\n },\\n methods: {\\n loadOrganizationType() {\\n axios.get($urlPlatform + \\\"/api/organizationsTypeGrouped\\\", {}, {}).then((response) => {\\n let items = response.data;\\n let _arr = [];\\n for (let item of items) {\\n _arr.push(item);\\n }\\n this.organizationTypeList = _arr;\\n });\\n },\\n goToHome(id) {\\n if(this.$route.path != \\\"/\\\") {\\n this.$router.push('/');\\n }\\n setTimeout(_ => {\\n this.organizationType = id;\\n this.$root.$emit('updateOrganizationType', id);\\n jQuery('html, body').animate({\\n scrollTop: jQuery('.organizations-title').offset().top\\n }, 500);\\n }, 1000);\\n },\\n goToPlatform() {\\n window.location.href = window.$urlPlatform;\\n }\\n },\\n};\\n</script>\\n<style>\\n.brand-link {\\n padding: 2px;\\n text-align: center;\\n}\\n.user-panel .info .d-block {\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC05LnVzZVsxXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC05LnVzZVsyXSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvYWRtaW4vd2lkZ2V0cy9TaWRlYmFyV2lkZ2V0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjOTM3Yjg1Jmxhbmc9Y3NzJiIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ2tJO0FBQzdCO0FBQ3JHLDhCQUE4QixtRkFBMkIsQ0FBQyx3R0FBcUM7QUFDL0Y7QUFDQSx5REFBeUQsbUJBQW1CLHlCQUF5QixHQUFHLDhCQUE4Qiw4QkFBOEIsMEJBQTBCLHVCQUF1QixHQUFHLFNBQVMsc0hBQXNILE1BQU0sVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFdBQVcsV0FBVywybkJBQTJuQixnQkFBZ0IsMnNCQUEyc0IsWUFBWSxzUEFBc1AsWUFBWSw4Z0JBQThnQixhQUFhLHVZQUF1WSxjQUFjLGtCQUFrQiwyR0FBMkcsT0FBTyxrQkFBa0IsaUNBQWlDLGtDQUFrQywwREFBMEQsV0FBVyx1Q0FBdUMsdUdBQXVHLHdCQUF3QixvQ0FBb0MsMkVBQTJFLHdCQUF3QixzREFBc0QsNENBQTRDLG1CQUFtQixFQUFFLFdBQVcsc0NBQXNDLE9BQU8saUJBQWlCLGtDQUFrQyw0RUFBNEUsSUFBSSxzQkFBc0IsNENBQTRDLGdDQUFnQywyQ0FBMkMsc0NBQXNDLG1CQUFtQixtREFBbUQsZUFBZSxFQUFFLFdBQVcseUJBQXlCLDZDQUE2Qyx5Q0FBeUMsZUFBZSwrQkFBK0IsNkNBQTZDLGlFQUFpRSxnREFBZ0QsK0ZBQStGLE9BQU8sZUFBZSxRQUFRLFdBQVcsMkJBQTJCLHlEQUF5RCxXQUFXLE9BQU8sS0FBSyxtQ0FBbUMsbUJBQW1CLHlCQUF5QixHQUFHLDhCQUE4Qiw4QkFBOEIsMEJBQTBCLHVCQUF1QixHQUFHLCtCQUErQjtBQUNsMUo7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3dpZGdldHMvU2lkZWJhcldpZGdldC52dWU/N2VjNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5icmFuZC1saW5rIHtcXG4gICAgcGFkZGluZzogMnB4O1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi51c2VyLXBhbmVsIC5pbmZvIC5kLWJsb2NrIHtcXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL2FkbWluL3dpZGdldHMvU2lkZWJhcldpZGdldC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQWdIQTtJQUNBLFlBQUE7SUFDQSxrQkFBQTtBQUNBO0FBQ0E7SUFDQSx1QkFBQTtJQUNBLG1CQUFBO0lBQ0EsZ0JBQUE7QUFDQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICAgIDxhc2lkZSBjbGFzcz1cXFwibWFpbi1zaWRlYmFyIHNpZGViYXItZGFyay1yZWQgZWxldmF0aW9uLTRcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiIGlkPVxcXCJsb2dvLXBwYWxcXFwiPlxcbiAgICAgICAgICAgIDxpbWcgc3JjPVxcXCJzdmcvbG9nb3MvbG9nby1wbGF0YWZvcm1hLnN2Z1xcXCIgY2xhc3M9XFxcImltZy1yZXNwb3NpdmUgcG9pbnRlclxcXCIgQGNsaWNrPVxcXCJnb1RvUGxhdGZvcm0oKVxcXCIgLz5cXG4gICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwic2lkZWJhclxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidXNlci1wYW5lbCBtdC0zIHBiLTMgbWItMyBkLWZsZXhcXFwiPlxcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XFxcImltYWdlXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVxcXCJzdmcvYXZhdGFycy9hdmF0YXItZGVmYXVsdC5zdmdcXFwiIGNsYXNzPVxcXCJpbWctY2lyY2xlIGVsZXZhdGlvbi0yXFxcIiBhbHQ9XFxcIlVzZXIgSW1hZ2VcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJpbmZvXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHt7IFVzZXJEYXRhLm5hbWUgfX1cXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxuYXYgY2xhc3M9XFxcIm9wdGlvbnNcXFwiPlxcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XFxcIm5hdiBuYXYtcGlsbHMgbmF2LXNpZGViYXIgZmxleC1jb2x1bW5cXFwiIGRhdGEtd2lkZ2V0PVxcXCJ0cmVldmlld1xcXCIgcm9sZT1cXFwibWVudVxcXCIgZGF0YS1hY2NvcmRpb249XFxcInRydWVcXFwiPlxcblxcbiAgICAgICAgICAgICAgICAgICAgPGxpIHYtYmluZDpjbGFzcz1cXFwiKGl0ZW0uaXNfc2VwYXJhdG9yID09IDEgPyAnbmF2LWhlYWRlcicgOiAnbmF2LWl0ZW0nKSArICcgJyArIChpdGVtLmNoaWxkcy5sZW5ndGggPiAwID8gJ3dpdGgtY2hpbGQnIDogJycpXFxcIiB2LWZvcj1cXFwiaXRlbSBvZiBtZW51XFxcIiB2LWlmPVxcXCJVc2VyRGF0YSAhPSBudWxsXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8cm91dGVyLWxpbmsgY2xhc3M9XFxcIm5hdi1saW5rXFxcIiA6dGFnPVxcXCIoaXRlbS5jaGlsZHMubGVuZ3RoID4gMCA/ICdzcGFuJyA6ICdhJylcXFwiIDp0bz1cXFwiKGl0ZW0uY2hpbGRzLmxlbmd0aCA+IDAgPyAnIycgOiBpdGVtLmxpbmspXFxcIiB2LWlmPVxcXCJpdGVtLmlzX3NlcGFyYXRvciAhPSAxXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhc1xcXCIgOmNsYXNzPVxcXCJpdGVtLmljb25cXFwiPjwvaT5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9yb3V0ZXItbGluaz5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJpdGVtLmlzX3NlcGFyYXRvciA9PSAxXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhc1xcXCIgOmNsYXNzPVxcXCJpdGVtLmljb25cXFwiPjwvaT5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XFxcIm5hdiBuYXYtdHJlZXZpZXdcXFwiIHYtaWY9XFxcIml0ZW0uaXNfc2VwYXJhdG9yICE9IDEgJiYgaXRlbS5jaGlsZHMubGVuZ3RoID4gMFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cXFwibmF2LWl0ZW1cXFwiIHYtZm9yPVxcXCJjaGlsZCBvZiBpdGVtLmNoaWxkc1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm91dGVyLWxpbmsgdGFnPVxcXCJhXFxcIiBjbGFzcz1cXFwibmF2LWxpbmtcXFwiIDp0bz1cXFwiY2hpbGQubGlua1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1kb3QtY2lyY2xlXFxcIj48L2k+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLm5hbWUgfX1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JvdXRlci1saW5rPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XFxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgICAgICA8L3VsPlxcbiAgICAgICAgICAgIDwvbmF2PlxcbiAgICAgICAgICAgIDxiciAvPlxcbiAgICAgICAgICAgIDxiciAvPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJsb2dpbi1mb290ZXItbWVudVxcXCI+PC9kaXY+XFxuICAgIDwvYXNpZGU+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0PlxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gICAgZGF0YSgpIHtcXG4gICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgbWVudTogW10sXFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uVHlwZUxpc3Q6IFtdLFxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvblR5cGU6IDBcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIG1vdW50ZWQoKSB7XFxuICAgICAgICBpZih3aW5kb3cuQVQgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgIHRoaXMuVXNlckRhdGEgPSBudWxsO1xcbiAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c2VyRGF0YUlGJyk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICBpZih0aGlzLlVzZXJEYXRhICE9IG51bGwpIHtcXG4gICAgICAgICAgICBheGlvc1xcbiAgICAgICAgICAgICAgICAucG9zdChcXG4gICAgICAgICAgICAgICAgICAgIFxcXCIvYXBpL21lbnVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAge30sXFxuICAgICAgICAgICAgICAgICAgICB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBBVCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICApXFxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnUgPSByZXNwLmRhdGE7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgdGhpcy5sb2FkT3JnYW5pemF0aW9uVHlwZSgpO1xcbiAgICB9LFxcbiAgICBtZXRob2RzOiB7XFxuICAgICAgICBsb2FkT3JnYW5pemF0aW9uVHlwZSgpIHtcXG4gICAgICAgICAgICBheGlvcy5nZXQoJHVybFBsYXRmb3JtICsgXFxcIi9hcGkvb3JnYW5pemF0aW9uc1R5cGVHcm91cGVkXFxcIiwge30sIHt9KS50aGVuKChyZXNwb25zZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgaXRlbXMgPSByZXNwb25zZS5kYXRhO1xcbiAgICAgICAgICAgICAgICBsZXQgX2FyciA9IFtdO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7XFxuICAgICAgICAgICAgICAgICAgICBfYXJyLnB1c2goaXRlbSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25UeXBlTGlzdCA9IF9hcnI7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9LFxcbiAgICAgICAgZ29Ub0hvbWUoaWQpIHtcXG4gICAgICAgICAgICBpZih0aGlzLiRyb3V0ZS5wYXRoICE9IFxcXCIvXFxcIikge1xcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCgnLycpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBzZXRUaW1lb3V0KF8gPT4ge1xcbiAgICAgICAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblR5cGUgPSBpZDtcXG4gICAgICAgICAgICAgICAgdGhpcy4kcm9vdC4kZW1pdCgndXBkYXRlT3JnYW5pemF0aW9uVHlwZScsIGlkKTtcXG4gICAgICAgICAgICAgICAgalF1ZXJ5KCdodG1sLCBib2R5JykuYW5pbWF0ZSh7XFxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IGpRdWVyeSgnLm9yZ2FuaXphdGlvbnMtdGl0bGUnKS5vZmZzZXQoKS50b3BcXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcXG4gICAgICAgICAgICB9LCAxMDAwKTtcXG4gICAgICAgIH0sXFxuICAgICAgICBnb1RvUGxhdGZvcm0oKSB7XFxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cuJHVybFBsYXRmb3JtO1xcbiAgICAgICAgfVxcbiAgICB9LFxcbn07XFxuPC9zY3JpcHQ+XFxuPHN0eWxlPlxcbi5icmFuZC1saW5rIHtcXG4gICAgcGFkZGluZzogMnB4O1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi51c2VyLXBhbmVsIC5pbmZvIC5kLWJsb2NrIHtcXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/admin/widgets/SidebarWidget.vue?vue&type=style&index=0&id=5c937b85&lang=css&\n");
/***/ }),
/***/ "./node_modules/css-loader/dist/runtime/api.js":
/*!*****************************************************!*\
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
\*****************************************************/
/***/ ((module) => {
"use strict";
eval("\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 (cssWithMappingToString) {\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);\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, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\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\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMscUJBQXFCO0FBQ2pFOztBQUVBO0FBQ0EsS0FBSztBQUNMLEtBQUs7QUFDTDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixxQkFBcUI7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanM/YWU5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICByZXR1cm4gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGNvbnRlbnQsIFwifVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbW9kdWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250aW51ZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/api.js\n");
/***/ }),
/***/ "./node_modules/css-loader/dist/runtime/cssWithMappingToString.js":
/*!************************************************************************!*\
!*** ./node_modules/css-loader/dist/runtime/cssWithMappingToString.js ***!
\************************************************************************/
/***/ ((module) => {
"use strict";
eval("\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\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};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQ0FBa0M7O0FBRWxDLDhCQUE4Qjs7QUFFOUIsa0RBQWtELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Q7O0FBRTdTLHVDQUF1Qyx1REFBdUQsdUNBQXVDLFNBQVMsT0FBTyxvQkFBb0I7O0FBRXpLLHlDQUF5Qyw4RkFBOEYsd0JBQXdCLGVBQWUsZUFBZSxnQkFBZ0IsWUFBWSxNQUFNLHdCQUF3QiwrQkFBK0IsYUFBYSxxQkFBcUIsdUNBQXVDLGNBQWMsV0FBVyxZQUFZLFVBQVUsTUFBTSxtREFBbUQsVUFBVSxzQkFBc0I7O0FBRXZlLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxjQUFjO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qcz9mNjVlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyB2YXIgX2kgPSBhcnIgJiYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXSk7IGlmIChfaSA9PSBudWxsKSByZXR1cm47IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX3MsIF9lOyB0cnkgeyBmb3IgKF9pID0gX2kuY2FsbChhcnIpOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKSB7XG4gIHZhciBfaXRlbSA9IF9zbGljZWRUb0FycmF5KGl0ZW0sIDQpLFxuICAgICAgY29udGVudCA9IF9pdGVtWzFdLFxuICAgICAgY3NzTWFwcGluZyA9IF9pdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\n");
/***/ }),
/***/ "./node_modules/css-loader/dist/runtime/getUrl.js":
/*!********************************************************!*\
!*** ./node_modules/css-loader/dist/runtime/getUrl.js ***!
\********************************************************/
/***/ ((module) => {
"use strict";
eval("\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzPzU0YzAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICBvcHRpb25zID0ge307XG4gIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlLCBuby1wYXJhbS1yZWFzc2lnblxuXG5cbiAgdXJsID0gdXJsICYmIHVybC5fX2VzTW9kdWxlID8gdXJsLmRlZmF1bHQgOiB1cmw7XG5cbiAgaWYgKHR5cGVvZiB1cmwgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9IC8vIElmIHVybCBpcyBhbHJlYWR5IHdyYXBwZWQgaW4gcXVvdGVzLCByZW1vdmUgdGhlbVxuXG5cbiAgaWYgKC9eWydcIl0uKlsnXCJdJC8udGVzdCh1cmwpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgdXJsID0gdXJsLnNsaWNlKDEsIC0xKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICB1cmwgKz0gb3B0aW9ucy5oYXNoO1xuICB9IC8vIFNob3VsZCB1cmwgYmUgd3JhcHBlZD9cbiAgLy8gU2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTMvI3VybHNcblxuXG4gIGlmICgvW1wiJygpIFxcdFxcbl0vLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/getUrl.js\n");
/***/ }),
/***/ "./node_modules/dayjs/dayjs.min.js":
/*!*****************************************!*\
!*** ./node_modules/dayjs/dayjs.min.js ***!
\*****************************************/
/***/ (function(module) {
eval("!function(t,n){ true?module.exports=n():0}(this,function(){\"use strict\";var t=\"millisecond\",n=\"second\",e=\"minute\",r=\"hour\",i=\"day\",s=\"week\",u=\"month\",o=\"quarter\",a=\"year\",h=/^(\\d{4})-?(\\d{1,2})-?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?.?(\\d{1,3})?$/,f=/\\[([^\\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,n,e){var r=String(t);return!r||r.length>=n?t:\"\"+Array(n+1-r.length).join(e)+t},d={s:c,z:function(t){var n=-t.utcOffset(),e=Math.abs(n),r=Math.floor(e/60),i=e%60;return(n<=0?\"+\":\"-\")+c(r,2,\"0\")+\":\"+c(i,2,\"0\")},m:function(t,n){var e=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(e,u),i=n-r<0,s=t.clone().add(e+(i?-1:1),u);return Number(-(e+(n-r)/(i?r-s:s-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:a,w:s,d:i,D:\"date\",h:r,m:e,s:n,ms:t,Q:o}[h]||String(h||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},$={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},l=\"en\",m={};m[l]=$;var y=function(t){return t instanceof v},M=function(t,n,e){var r;if(!t)return l;if(\"string\"==typeof t)m[t]&&(r=t),n&&(m[t]=n,r=t);else{var i=t.name;m[i]=t,r=i}return!e&&r&&(l=r),r||!e&&l},g=function(t,n,e){if(y(t))return t.clone();var r=n?\"string\"==typeof n?{format:n,pl:e}:n:{};return r.date=t,new v(r)},D=d;D.l=M,D.i=y,D.w=function(t,n){return g(t,{locale:n.$L,utc:n.$u,$offset:n.$offset})};var v=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0),this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var n=t.date,e=t.utc;if(null===n)return new Date(NaN);if(D.u(n))return new Date;if(n instanceof Date)return new Date(n);if(\"string\"==typeof n&&!/Z$/i.test(n)){var r=n.match(h);if(r)return e?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(n)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!(\"Invalid Date\"===this.$d.toString())},d.isSame=function(t,n){var e=g(t);return this.startOf(n)<=e&&e<=this.endOf(n)},d.isAfter=function(t,n){return g(t)<this.startOf(n)},d.isBefore=function(t,n){return this.endOf(n)<g(t)},d.$g=function(t,n,e){return D.u(t)?this[n]:this.set(e,t)},d.year=function(t){return this.$g(t,\"$y\",a)},d.month=function(t){return this.$g(t,\"$M\",u)},d.day=function(t){return this.$g(t,\"$W\",i)},d.date=function(t){return this.$g(t,\"$D\",\"date\")},d.hour=function(t){return this.$g(t,\"$H\",r)},d.minute=function(t){return this.$g(t,\"$m\",e)},d.second=function(t){return this.$g(t,\"$s\",n)},d.millisecond=function(n){return this.$g(n,\"$ms\",t)},d.unix=function(){return Math.floor(this.valueOf()/1e3)},d.valueOf=function(){return this.$d.getTime()},d.startOf=function(t,o){var h=this,f=!!D.u(o)||o,c=D.p(t),d=function(t,n){var e=D.w(h.$u?Date.UTC(h.$y,n,t):new Date(h.$y,n,t),h);return f?e:e.endOf(i)},$=function(t,n){return D.w(h.toDate()[t].apply(h.toDate(),(f?[0,0,0,0]:[23,59,59,999]).slice(n)),h)},l=this.$W,m=this.$M,y=this.$D,M=\"set\"+(this.$u?\"UTC\":\"\");switch(c){case a:return f?d(1,0):d(31,11);case u:return f?d(1,m):d(0,m+1);case s:var g=this.$locale().weekStart||0,v=(l<g?l+7:l)-g;return d(f?y-v:y+(6-v),m);case i:case\"date\":return $(M+\"Hours\",0);case r:return $(M+\"Minutes\",1);case e:return $(M+\"Seconds\",2);case n:return $(M+\"Milliseconds\",3);default:return this.clone()}},d.endOf=function(t){return this.startOf(t,!1)},d.$set=function(s,o){var h,f=D.p(s),c=\"set\"+(this.$u?\"UTC\":\"\"),d=(h={},h[i]=c+\"Date\",h.date=c+\"Date\",h[u]=c+\"Month\",h[a]=c+\"FullYear\",h[r]=c+\"Hours\",h[e]=c+\"Minutes\",h[n]=c+\"Seconds\",h[t]=c+\"Milliseconds\",h)[f],$=f===i?this.$D+(o-this.$W):o;if(f===u||f===a){var l=this.clone().set(\"date\",1);l.$d[d]($),l.init(),this.$d=l.set(\"date\",Math.min(this.$D,l.daysInMonth())).toDate()}else d&&this.$d[d]($);return this.init(),this},d.set=function(t,n){return this.clone().$set(t,n)},d.get=function(t){return this[D.p(t)]()},d.add=function(t,o){var h,f=this;t=Number(t);var c=D.p(o),d=function(n){var e=g(f);return D.w(e.date(e.date()+Math.round(n*t)),f)};if(c===u)return this.set(u,this.$M+t);if(c===a)return this.set(a,this.$y+t);if(c===i)return d(1);if(c===s)return d(7);var $=(h={},h[e]=6e4,h[r]=36e5,h[n]=1e3,h)[c]||1,l=this.$d.getTime()+t*$;return D.w(l,this)},d.subtract=function(t,n){return this.add(-1*t,n)},d.format=function(t){var n=this;if(!this.isValid())return\"Invalid Date\";var e=t||\"YYYY-MM-DDTHH:mm:ssZ\",r=D.z(this),i=this.$locale(),s=this.$H,u=this.$m,o=this.$M,a=i.weekdays,h=i.months,c=function(t,r,i,s){return t&&(t[r]||t(n,e))||i[r].substr(0,s)},d=function(t){return D.s(s%12||12,t,\"0\")},$=i.meridiem||function(t,n,e){var r=t<12?\"AM\":\"PM\";return e?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:D.s(o+1,2,\"0\"),MMM:c(i.monthsShort,o,h,3),MMMM:h[o]||h(this,e),D:this.$D,DD:D.s(this.$D,2,\"0\"),d:String(this.$W),dd:c(i.weekdaysMin,this.$W,a,2),ddd:c(i.weekdaysShort,this.$W,a,3),dddd:a[this.$W],H:String(s),HH:D.s(s,2,\"0\"),h:d(1),hh:d(2),a:$(s,u,!0),A:$(s,u,!1),m:String(u),mm:D.s(u,2,\"0\"),s:String(this.$s),ss:D.s(this.$s,2,\"0\"),SSS:D.s(this.$ms,3,\"0\"),Z:r};return e.replace(f,function(t,n){return n||l[t]||r.replace(\":\",\"\")})},d.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},d.diff=function(t,h,f){var c,d=D.p(h),$=g(t),l=6e4*($.utcOffset()-this.utcOffset()),m=this-$,y=D.m(this,$);return y=(c={},c[a]=y/12,c[u]=y,c[o]=y/3,c[s]=(m-l)/6048e5,c[i]=(m-l)/864e5,c[r]=m/36e5,c[e]=m/6e4,c[n]=m/1e3,c)[d]||m,f?y:D.a(y)},d.daysInMonth=function(){return this.endOf(u).$D},d.$locale=function(){return m[this.$L]},d.locale=function(t,n){if(!t)return this.$L;var e=this.clone(),r=M(t,n,!0);return r&&(e.$L=r),e},d.clone=function(){return D.w(this.$d,this)},d.toDate=function(){return new Date(this.valueOf())},d.toJSON=function(){return this.isValid()?this.toISOString():null},d.toISOString=function(){return this.$d.toISOString()},d.toString=function(){return this.$d.toUTCString()},c}();return g.prototype=v.prototype,g.extend=function(t,n){return t(n,v,g),g},g.locale=M,g.isDayjs=y,g.unix=function(t){return g(1e3*t)},g.en=m[l],g.Ls=m,g});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZGF5anMvZGF5anMubWluLmpzIiwibWFwcGluZ3MiOiJBQUFBLGVBQWUsS0FBb0Qsb0JBQW9CLENBQTJELENBQUMsaUJBQWlCLGFBQWEsMkdBQTJHLEVBQUUsT0FBTyxJQUFJLE9BQU8sSUFBSSxZQUFZLElBQUksUUFBUSxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksc0JBQXNCLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxPQUFPLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSx5QkFBeUIsZ0JBQWdCLHlEQUF5RCxJQUFJLGtCQUFrQiw2REFBNkQsK0NBQStDLGlCQUFpQiw4R0FBOEcseUNBQXlDLGVBQWUseUNBQXlDLGVBQWUsT0FBTyw4Q0FBOEMsa0RBQWtELGVBQWUsbUJBQW1CLElBQUksbU1BQW1NLGFBQWEsT0FBTyxrQkFBa0Isc0JBQXNCLG1CQUFtQixNQUFNLGVBQWUsa0RBQWtELEtBQUssYUFBYSxXQUFXLDRCQUE0QixtQkFBbUIseUJBQXlCLDRCQUE0QixjQUFjLE1BQU0seUJBQXlCLEtBQUssOEJBQThCLFlBQVksdUNBQXVDLEdBQUcsaUJBQWlCLGNBQWMsbURBQW1ELGtCQUFrQiwyQkFBMkIsb0JBQW9CLHFCQUFxQixpQ0FBaUMsMEJBQTBCLHdDQUF3Qyx1Q0FBdUMsaUJBQWlCLG9KQUFvSixtQkFBbUIsZ0JBQWdCLG1CQUFtQixjQUFjLG9MQUFvTCxxQkFBcUIsU0FBUyxzQkFBc0IsNkNBQTZDLHdCQUF3QixXQUFXLDRDQUE0Qyx5QkFBeUIsNEJBQTRCLDBCQUEwQiwwQkFBMEIsc0JBQXNCLG9DQUFvQyxvQkFBb0IseUJBQXlCLHFCQUFxQix5QkFBeUIsbUJBQW1CLHlCQUF5QixvQkFBb0IsOEJBQThCLG9CQUFvQix5QkFBeUIsc0JBQXNCLHlCQUF5QixzQkFBc0IseUJBQXlCLDJCQUEyQiwwQkFBMEIsbUJBQW1CLHNDQUFzQyxzQkFBc0IseUJBQXlCLHlCQUF5QixrREFBa0Qsd0RBQXdELHNCQUFzQixpQkFBaUIsb0ZBQW9GLDBEQUEwRCxVQUFVLGdDQUFnQyxnQ0FBZ0MseURBQXlELDBCQUEwQix3Q0FBd0MsK0JBQStCLCtCQUErQixvQ0FBb0MsNkJBQTZCLHFCQUFxQiwwQkFBMEIsc0JBQXNCLGlEQUFpRCwyS0FBMkssaUJBQWlCLGlDQUFpQyxxRkFBcUYsc0JBQXNCLHdCQUF3QixxQkFBcUIsOEJBQThCLG1CQUFtQixzQkFBc0IscUJBQXFCLGFBQWEsWUFBWSwyQkFBMkIsV0FBVyxnREFBZ0Qsc0NBQXNDLHNDQUFzQyxxQkFBcUIscUJBQXFCLFdBQVcsOERBQThELG1CQUFtQiwwQkFBMEIsd0JBQXdCLHNCQUFzQixXQUFXLHdDQUF3Qyx1SUFBdUksMkNBQTJDLGVBQWUsMkJBQTJCLCtCQUErQixxQkFBcUIsMkJBQTJCLElBQUksMlpBQTJaLGlDQUFpQyxrQ0FBa0MsRUFBRSx3QkFBd0Isc0RBQXNELHdCQUF3QixvRkFBb0YsY0FBYyxvSEFBb0gsMEJBQTBCLHdCQUF3QixzQkFBc0Isa0JBQWtCLHdCQUF3QixxQkFBcUIsK0JBQStCLHFCQUFxQixvQkFBb0IseUJBQXlCLHFCQUFxQixnQ0FBZ0MscUJBQXFCLDhDQUE4QywwQkFBMEIsNkJBQTZCLHVCQUF1Qiw2QkFBNkIsR0FBRyxHQUFHLHNEQUFzRCxrQkFBa0IsMkNBQTJDLGdCQUFnQixvQkFBb0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF5anMvZGF5anMubWluLmpzPzAxZjEiXSwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKHQsbil7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9bigpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUobik6dC5kYXlqcz1uKCl9KHRoaXMsZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgdD1cIm1pbGxpc2Vjb25kXCIsbj1cInNlY29uZFwiLGU9XCJtaW51dGVcIixyPVwiaG91clwiLGk9XCJkYXlcIixzPVwid2Vla1wiLHU9XCJtb250aFwiLG89XCJxdWFydGVyXCIsYT1cInllYXJcIixoPS9eKFxcZHs0fSktPyhcXGR7MSwyfSktPyhcXGR7MCwyfSlbXjAtOV0qKFxcZHsxLDJ9KT86PyhcXGR7MSwyfSk/Oj8oXFxkezEsMn0pPy4/KFxcZHsxLDN9KT8kLyxmPS9cXFsoW15cXF1dKyldfFl7Miw0fXxNezEsNH18RHsxLDJ9fGR7MSw0fXxIezEsMn18aHsxLDJ9fGF8QXxtezEsMn18c3sxLDJ9fFp7MSwyfXxTU1MvZyxjPWZ1bmN0aW9uKHQsbixlKXt2YXIgcj1TdHJpbmcodCk7cmV0dXJuIXJ8fHIubGVuZ3RoPj1uP3Q6XCJcIitBcnJheShuKzEtci5sZW5ndGgpLmpvaW4oZSkrdH0sZD17czpjLHo6ZnVuY3Rpb24odCl7dmFyIG49LXQudXRjT2Zmc2V0KCksZT1NYXRoLmFicyhuKSxyPU1hdGguZmxvb3IoZS82MCksaT1lJTYwO3JldHVybihuPD0wP1wiK1wiOlwiLVwiKStjKHIsMixcIjBcIikrXCI6XCIrYyhpLDIsXCIwXCIpfSxtOmZ1bmN0aW9uKHQsbil7dmFyIGU9MTIqKG4ueWVhcigpLXQueWVhcigpKSsobi5tb250aCgpLXQubW9udGgoKSkscj10LmNsb25lKCkuYWRkKGUsdSksaT1uLXI8MCxzPXQuY2xvbmUoKS5hZGQoZSsoaT8tMToxKSx1KTtyZXR1cm4gTnVtYmVyKC0oZSsobi1yKS8oaT9yLXM6cy1yKSl8fDApfSxhOmZ1bmN0aW9uKHQpe3JldHVybiB0PDA/TWF0aC5jZWlsKHQpfHwwOk1hdGguZmxvb3IodCl9LHA6ZnVuY3Rpb24oaCl7cmV0dXJue006dSx5OmEsdzpzLGQ6aSxEOlwiZGF0ZVwiLGg6cixtOmUsczpuLG1zOnQsUTpvfVtoXXx8U3RyaW5nKGh8fFwiXCIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvcyQvLFwiXCIpfSx1OmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10fX0sJD17bmFtZTpcImVuXCIsd2Vla2RheXM6XCJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheVwiLnNwbGl0KFwiX1wiKSxtb250aHM6XCJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyXCIuc3BsaXQoXCJfXCIpfSxsPVwiZW5cIixtPXt9O21bbF09JDt2YXIgeT1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHZ9LE09ZnVuY3Rpb24odCxuLGUpe3ZhciByO2lmKCF0KXJldHVybiBsO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KW1bdF0mJihyPXQpLG4mJihtW3RdPW4scj10KTtlbHNle3ZhciBpPXQubmFtZTttW2ldPXQscj1pfXJldHVybiFlJiZyJiYobD1yKSxyfHwhZSYmbH0sZz1mdW5jdGlvbih0LG4sZSl7aWYoeSh0KSlyZXR1cm4gdC5jbG9uZSgpO3ZhciByPW4/XCJzdHJpbmdcIj09dHlwZW9mIG4/e2Zvcm1hdDpuLHBsOmV9Om46e307cmV0dXJuIHIuZGF0ZT10LG5ldyB2KHIpfSxEPWQ7RC5sPU0sRC5pPXksRC53PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGcodCx7bG9jYWxlOm4uJEwsdXRjOm4uJHUsJG9mZnNldDpuLiRvZmZzZXR9KX07dmFyIHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKHQpe3RoaXMuJEw9dGhpcy4kTHx8TSh0LmxvY2FsZSxudWxsLCEwKSx0aGlzLnBhcnNlKHQpfXZhciBkPWMucHJvdG90eXBlO3JldHVybiBkLnBhcnNlPWZ1bmN0aW9uKHQpe3RoaXMuJGQ9ZnVuY3Rpb24odCl7dmFyIG49dC5kYXRlLGU9dC51dGM7aWYobnVsbD09PW4pcmV0dXJuIG5ldyBEYXRlKE5hTik7aWYoRC51KG4pKXJldHVybiBuZXcgRGF0ZTtpZihuIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUobik7aWYoXCJzdHJpbmdcIj09dHlwZW9mIG4mJiEvWiQvaS50ZXN0KG4pKXt2YXIgcj1uLm1hdGNoKGgpO2lmKHIpcmV0dXJuIGU/bmV3IERhdGUoRGF0ZS5VVEMoclsxXSxyWzJdLTEsclszXXx8MSxyWzRdfHwwLHJbNV18fDAscls2XXx8MCxyWzddfHwwKSk6bmV3IERhdGUoclsxXSxyWzJdLTEsclszXXx8MSxyWzRdfHwwLHJbNV18fDAscls2XXx8MCxyWzddfHwwKX1yZXR1cm4gbmV3IERhdGUobil9KHQpLHRoaXMuaW5pdCgpfSxkLmluaXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRkO3RoaXMuJHk9dC5nZXRGdWxsWWVhcigpLHRoaXMuJE09dC5nZXRNb250aCgpLHRoaXMuJEQ9dC5nZXREYXRlKCksdGhpcy4kVz10LmdldERheSgpLHRoaXMuJEg9dC5nZXRIb3VycygpLHRoaXMuJG09dC5nZXRNaW51dGVzKCksdGhpcy4kcz10LmdldFNlY29uZHMoKSx0aGlzLiRtcz10LmdldE1pbGxpc2Vjb25kcygpfSxkLiR1dGlscz1mdW5jdGlvbigpe3JldHVybiBEfSxkLmlzVmFsaWQ9ZnVuY3Rpb24oKXtyZXR1cm4hKFwiSW52YWxpZCBEYXRlXCI9PT10aGlzLiRkLnRvU3RyaW5nKCkpfSxkLmlzU2FtZT1mdW5jdGlvbih0LG4pe3ZhciBlPWcodCk7cmV0dXJuIHRoaXMuc3RhcnRPZihuKTw9ZSYmZTw9dGhpcy5lbmRPZihuKX0sZC5pc0FmdGVyPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGcodCk8dGhpcy5zdGFydE9mKG4pfSxkLmlzQmVmb3JlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMuZW5kT2Yobik8Zyh0KX0sZC4kZz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIEQudSh0KT90aGlzW25dOnRoaXMuc2V0KGUsdCl9LGQueWVhcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kZyh0LFwiJHlcIixhKX0sZC5tb250aD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kZyh0LFwiJE1cIix1KX0sZC5kYXk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuJGcodCxcIiRXXCIsaSl9LGQuZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kZyh0LFwiJERcIixcImRhdGVcIil9LGQuaG91cj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kZyh0LFwiJEhcIixyKX0sZC5taW51dGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuJGcodCxcIiRtXCIsZSl9LGQuc2Vjb25kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLiRnKHQsXCIkc1wiLG4pfSxkLm1pbGxpc2Vjb25kPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLiRnKG4sXCIkbXNcIix0KX0sZC51bml4PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkvMWUzKX0sZC52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQuZ2V0VGltZSgpfSxkLnN0YXJ0T2Y9ZnVuY3Rpb24odCxvKXt2YXIgaD10aGlzLGY9ISFELnUobyl8fG8sYz1ELnAodCksZD1mdW5jdGlvbih0LG4pe3ZhciBlPUQudyhoLiR1P0RhdGUuVVRDKGguJHksbix0KTpuZXcgRGF0ZShoLiR5LG4sdCksaCk7cmV0dXJuIGY/ZTplLmVuZE9mKGkpfSwkPWZ1bmN0aW9uKHQsbil7cmV0dXJuIEQudyhoLnRvRGF0ZSgpW3RdLmFwcGx5KGgudG9EYXRlKCksKGY/WzAsMCwwLDBdOlsyMyw1OSw1OSw5OTldKS5zbGljZShuKSksaCl9LGw9dGhpcy4kVyxtPXRoaXMuJE0seT10aGlzLiRELE09XCJzZXRcIisodGhpcy4kdT9cIlVUQ1wiOlwiXCIpO3N3aXRjaChjKXtjYXNlIGE6cmV0dXJuIGY/ZCgxLDApOmQoMzEsMTEpO2Nhc2UgdTpyZXR1cm4gZj9kKDEsbSk6ZCgwLG0rMSk7Y2FzZSBzOnZhciBnPXRoaXMuJGxvY2FsZSgpLndlZWtTdGFydHx8MCx2PShsPGc/bCs3OmwpLWc7cmV0dXJuIGQoZj95LXY6eSsoNi12KSxtKTtjYXNlIGk6Y2FzZVwiZGF0ZVwiOnJldHVybiAkKE0rXCJIb3Vyc1wiLDApO2Nhc2UgcjpyZXR1cm4gJChNK1wiTWludXRlc1wiLDEpO2Nhc2UgZTpyZXR1cm4gJChNK1wiU2Vjb25kc1wiLDIpO2Nhc2UgbjpyZXR1cm4gJChNK1wiTWlsbGlzZWNvbmRzXCIsMyk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5jbG9uZSgpfX0sZC5lbmRPZj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdGFydE9mKHQsITEpfSxkLiRzZXQ9ZnVuY3Rpb24ocyxvKXt2YXIgaCxmPUQucChzKSxjPVwic2V0XCIrKHRoaXMuJHU/XCJVVENcIjpcIlwiKSxkPShoPXt9LGhbaV09YytcIkRhdGVcIixoLmRhdGU9YytcIkRhdGVcIixoW3VdPWMrXCJNb250aFwiLGhbYV09YytcIkZ1bGxZZWFyXCIsaFtyXT1jK1wiSG91cnNcIixoW2VdPWMrXCJNaW51dGVzXCIsaFtuXT1jK1wiU2Vjb25kc1wiLGhbdF09YytcIk1pbGxpc2Vjb25kc1wiLGgpW2ZdLCQ9Zj09PWk/dGhpcy4kRCsoby10aGlzLiRXKTpvO2lmKGY9PT11fHxmPT09YSl7dmFyIGw9dGhpcy5jbG9uZSgpLnNldChcImRhdGVcIiwxKTtsLiRkW2RdKCQpLGwuaW5pdCgpLHRoaXMuJGQ9bC5zZXQoXCJkYXRlXCIsTWF0aC5taW4odGhpcy4kRCxsLmRheXNJbk1vbnRoKCkpKS50b0RhdGUoKX1lbHNlIGQmJnRoaXMuJGRbZF0oJCk7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXN9LGQuc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMuY2xvbmUoKS4kc2V0KHQsbil9LGQuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW0QucCh0KV0oKX0sZC5hZGQ9ZnVuY3Rpb24odCxvKXt2YXIgaCxmPXRoaXM7dD1OdW1iZXIodCk7dmFyIGM9RC5wKG8pLGQ9ZnVuY3Rpb24obil7dmFyIGU9ZyhmKTtyZXR1cm4gRC53KGUuZGF0ZShlLmRhdGUoKStNYXRoLnJvdW5kKG4qdCkpLGYpfTtpZihjPT09dSlyZXR1cm4gdGhpcy5zZXQodSx0aGlzLiRNK3QpO2lmKGM9PT1hKXJldHVybiB0aGlzLnNldChhLHRoaXMuJHkrdCk7aWYoYz09PWkpcmV0dXJuIGQoMSk7aWYoYz09PXMpcmV0dXJuIGQoNyk7dmFyICQ9KGg9e30saFtlXT02ZTQsaFtyXT0zNmU1LGhbbl09MWUzLGgpW2NdfHwxLGw9dGhpcy4kZC5nZXRUaW1lKCkrdCokO3JldHVybiBELncobCx0aGlzKX0sZC5zdWJ0cmFjdD1mdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLmFkZCgtMSp0LG4pfSxkLmZvcm1hdD1mdW5jdGlvbih0KXt2YXIgbj10aGlzO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm5cIkludmFsaWQgRGF0ZVwiO3ZhciBlPXR8fFwiWVlZWS1NTS1ERFRISDptbTpzc1pcIixyPUQueih0aGlzKSxpPXRoaXMuJGxvY2FsZSgpLHM9dGhpcy4kSCx1PXRoaXMuJG0sbz10aGlzLiRNLGE9aS53ZWVrZGF5cyxoPWkubW9udGhzLGM9ZnVuY3Rpb24odCxyLGkscyl7cmV0dXJuIHQmJih0W3JdfHx0KG4sZSkpfHxpW3JdLnN1YnN0cigwLHMpfSxkPWZ1bmN0aW9uKHQpe3JldHVybiBELnMocyUxMnx8MTIsdCxcIjBcIil9LCQ9aS5tZXJpZGllbXx8ZnVuY3Rpb24odCxuLGUpe3ZhciByPXQ8MTI/XCJBTVwiOlwiUE1cIjtyZXR1cm4gZT9yLnRvTG93ZXJDYXNlKCk6cn0sbD17WVk6U3RyaW5nKHRoaXMuJHkpLnNsaWNlKC0yKSxZWVlZOnRoaXMuJHksTTpvKzEsTU06RC5zKG8rMSwyLFwiMFwiKSxNTU06YyhpLm1vbnRoc1Nob3J0LG8saCwzKSxNTU1NOmhbb118fGgodGhpcyxlKSxEOnRoaXMuJEQsREQ6RC5zKHRoaXMuJEQsMixcIjBcIiksZDpTdHJpbmcodGhpcy4kVyksZGQ6YyhpLndlZWtkYXlzTWluLHRoaXMuJFcsYSwyKSxkZGQ6YyhpLndlZWtkYXlzU2hvcnQsdGhpcy4kVyxhLDMpLGRkZGQ6YVt0aGlzLiRXXSxIOlN0cmluZyhzKSxISDpELnMocywyLFwiMFwiKSxoOmQoMSksaGg6ZCgyKSxhOiQocyx1LCEwKSxBOiQocyx1LCExKSxtOlN0cmluZyh1KSxtbTpELnModSwyLFwiMFwiKSxzOlN0cmluZyh0aGlzLiRzKSxzczpELnModGhpcy4kcywyLFwiMFwiKSxTU1M6RC5zKHRoaXMuJG1zLDMsXCIwXCIpLFo6cn07cmV0dXJuIGUucmVwbGFjZShmLGZ1bmN0aW9uKHQsbil7cmV0dXJuIG58fGxbdF18fHIucmVwbGFjZShcIjpcIixcIlwiKX0pfSxkLnV0Y09mZnNldD1mdW5jdGlvbigpe3JldHVybiAxNSotTWF0aC5yb3VuZCh0aGlzLiRkLmdldFRpbWV6b25lT2Zmc2V0KCkvMTUpfSxkLmRpZmY9ZnVuY3Rpb24odCxoLGYpe3ZhciBjLGQ9RC5wKGgpLCQ9Zyh0KSxsPTZlNCooJC51dGNPZmZzZXQoKS10aGlzLnV0Y09mZnNldCgpKSxtPXRoaXMtJCx5PUQubSh0aGlzLCQpO3JldHVybiB5PShjPXt9LGNbYV09eS8xMixjW3VdPXksY1tvXT15LzMsY1tzXT0obS1sKS82MDQ4ZTUsY1tpXT0obS1sKS84NjRlNSxjW3JdPW0vMzZlNSxjW2VdPW0vNmU0LGNbbl09bS8xZTMsYylbZF18fG0sZj95OkQuYSh5KX0sZC5kYXlzSW5Nb250aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZE9mKHUpLiREfSxkLiRsb2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gbVt0aGlzLiRMXX0sZC5sb2NhbGU9ZnVuY3Rpb24odCxuKXtpZighdClyZXR1cm4gdGhpcy4kTDt2YXIgZT10aGlzLmNsb25lKCkscj1NKHQsbiwhMCk7cmV0dXJuIHImJihlLiRMPXIpLGV9LGQuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gRC53KHRoaXMuJGQsdGhpcyl9LGQudG9EYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKX0sZC50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy50b0lTT1N0cmluZygpOm51bGx9LGQudG9JU09TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC50b0lTT1N0cmluZygpfSxkLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQudG9VVENTdHJpbmcoKX0sY30oKTtyZXR1cm4gZy5wcm90b3R5cGU9di5wcm90b3R5cGUsZy5leHRlbmQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdChuLHYsZyksZ30sZy5sb2NhbGU9TSxnLmlzRGF5anM9eSxnLnVuaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGcoMWUzKnQpfSxnLmVuPW1bbF0sZy5Mcz1tLGd9KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/dayjs/dayjs.min.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/button-group.js":
/*!*****************************************************!*\
!*** ./node_modules/element-ui/lib/button-group.js ***!
\*****************************************************/
/***/ ((module) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 97);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 97:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_6575__) {\n\n\"use strict\";\n__nested_webpack_require_6575__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button-group.vue?vue&type=template&id=3d8661d0&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-button-group\" }, [_vm._t(\"default\")], 2)\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/button/src/button-group.vue?vue&type=template&id=3d8661d0&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button-group.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n\n/* harmony default export */ var button_groupvue_type_script_lang_js_ = ({\n name: 'ElButtonGroup'\n});\n// CONCATENATED MODULE: ./packages/button/src/button-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_button_groupvue_type_script_lang_js_ = (button_groupvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_6575__(0);\n\n// CONCATENATED MODULE: ./packages/button/src/button-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_button_groupvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/button/src/button-group.vue\"\n/* harmony default export */ var button_group = (component.exports);\n// CONCATENATED MODULE: ./packages/button-group/index.js\n\n\n/* istanbul ignore next */\nbutton_group.install = function (Vue) {\n Vue.component(button_group.name, button_group);\n};\n\n/* harmony default export */ var packages_button_group = __nested_webpack_exports__[\"default\"] = (button_group);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvYnV0dG9uLWdyb3VwLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDhCQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSw4QkFBbUI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGVBQWUsOEJBQW1CO0FBQ2xDLG1EQUFtRCwrQkFBK0I7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLGlFQUFpRSxpQkFBaUI7QUFDbEY7QUFDQSwwREFBMEQsYUFBYTtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGdDQUFnQyw4QkFBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4QkFBbUI7QUFDOUIsa0RBQWtELGdDQUFnQztBQUNsRiwwRUFBMEUsOEJBQW1CLDRCQUE0QixvQkFBb0I7QUFDN0k7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLG9DQUFvQyw0QkFBNEI7QUFDaEUsMENBQTBDO0FBQzFDLFdBQVcsOEJBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUIsa0NBQWtDO0FBQy9EO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOEJBQW1CLENBQUMsOEJBQW1CO0FBQ3hELFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLDBCQUFtQixFQUFFLCtCQUFtQjs7QUFFaEU7QUFDQSwrQkFBK0IsK0JBQW1CLEdBQUcsMEJBQW1CLG9CQUFvQiw0QkFBNEI7QUFDeEg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxPQUFPOztBQUVQO0FBQ0Esd0JBQXdCLDBCQUFtQixFQUFFLCtCQUFtQjs7QUFFaEU7QUFDQSwrQkFBbUIsR0FBRywwQkFBbUI7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZ0NBQWdDO0FBQ3JEO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLCtCQUFtQjs7QUFFN0M7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsWUFBWTtBQUN2QjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlEQUF5RCwwQkFBbUI7O0FBRTVFLE9BQU87O0FBRVAsVUFBVSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi9idXR0b24tZ3JvdXAuanM/OWM0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9XG4vKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2Rpc3QvXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDk3KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKHtcblxuLyoqKi8gMDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIG5vcm1hbGl6ZUNvbXBvbmVudDsgfSk7XG4vKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7IGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCkgfVxuICAgICAgOiBpbmplY3RTdHlsZXNcbiAgfVxuXG4gIGlmIChob29rKSB7XG4gICAgaWYgKG9wdGlvbnMuZnVuY3Rpb25hbCkge1xuICAgICAgLy8gZm9yIHRlbXBsYXRlLW9ubHkgaG90LXJlbG9hZCBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcmVuZGVyIGZuIGRvZXNuJ3RcbiAgICAgIC8vIGdvIHRocm91Z2ggdGhlIG5vcm1hbGl6ZXJcbiAgICAgIG9wdGlvbnMuX2luamVjdFN0eWxlcyA9IGhvb2tcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyA5Nzpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24tZ3JvdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNkODY2MWQwJlxudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWJ1dHRvbi1ncm91cFwiIH0sIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwgMilcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9idXR0b24vc3JjL2J1dHRvbi1ncm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2Q4NjYxZDAmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2J1dHRvbi9zcmMvYnV0dG9uLWdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBidXR0b25fZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxCdXR0b25Hcm91cCdcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9idXR0b24vc3JjL2J1dHRvbi1ncm91cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2J1dHRvbl9ncm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChidXR0b25fZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXG52YXIgY29tcG9uZW50Tm9ybWFsaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24tZ3JvdXAudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY29tcG9uZW50ID0gT2JqZWN0KGNvbXBvbmVudE5vcm1hbGl6ZXJbXCJhXCIgLyogZGVmYXVsdCAqL10pKFxuICBzcmNfYnV0dG9uX2dyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgYXBpOyB9XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2J1dHRvbi9zcmMvYnV0dG9uLWdyb3VwLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBidXR0b25fZ3JvdXAgPSAoY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9idXR0b24tZ3JvdXAvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuYnV0dG9uX2dyb3VwLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoYnV0dG9uX2dyb3VwLm5hbWUsIGJ1dHRvbl9ncm91cCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19idXR0b25fZ3JvdXAgPSBfX3dlYnBhY2tfZXhwb3J0c19fW1wiZGVmYXVsdFwiXSA9IChidXR0b25fZ3JvdXApO1xuXG4vKioqLyB9KVxuXG4vKioqKioqLyB9KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/button-group.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/button.js":
/*!***********************************************!*\
!*** ./node_modules/element-ui/lib/button.js ***!
\***********************************************/
/***/ ((module) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 96);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 96:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_6575__) {\n\n\"use strict\";\n__nested_webpack_require_6575__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"button\",\n {\n staticClass: \"el-button\",\n class: [\n _vm.type ? \"el-button--\" + _vm.type : \"\",\n _vm.buttonSize ? \"el-button--\" + _vm.buttonSize : \"\",\n {\n \"is-disabled\": _vm.buttonDisabled,\n \"is-loading\": _vm.loading,\n \"is-plain\": _vm.plain,\n \"is-round\": _vm.round,\n \"is-circle\": _vm.circle\n }\n ],\n attrs: {\n disabled: _vm.buttonDisabled || _vm.loading,\n autofocus: _vm.autofocus,\n type: _vm.nativeType\n },\n on: { click: _vm.handleClick }\n },\n [\n _vm.loading ? _c(\"i\", { staticClass: \"el-icon-loading\" }) : _vm._e(),\n _vm.icon && !_vm.loading ? _c(\"i\", { class: _vm.icon }) : _vm._e(),\n _vm.$slots.default ? _c(\"span\", [_vm._t(\"default\")], 2) : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var buttonvue_type_script_lang_js_ = ({\n name: 'ElButton',\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n type: {\n type: String,\n default: 'default'\n },\n size: String,\n icon: {\n type: String,\n default: ''\n },\n nativeType: {\n type: String,\n default: 'button'\n },\n loading: Boolean,\n disabled: Boolean,\n plain: Boolean,\n autofocus: Boolean,\n round: Boolean,\n circle: Boolean\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n buttonSize: function buttonSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n buttonDisabled: function buttonDisabled() {\n return this.$options.propsData.hasOwnProperty('disabled') ? this.disabled : (this.elForm || {}).disabled;\n }\n },\n\n methods: {\n handleClick: function handleClick(evt) {\n this.$emit('click', evt);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_buttonvue_type_script_lang_js_ = (buttonvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_6575__(0);\n\n// CONCATENATED MODULE: ./packages/button/src/button.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_buttonvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/button/src/button.vue\"\n/* harmony default export */ var src_button = (component.exports);\n// CONCATENATED MODULE: ./packages/button/index.js\n\n\n/* istanbul ignore next */\nsrc_button.install = function (Vue) {\n Vue.component(src_button.name, src_button);\n};\n\n/* harmony default export */ var packages_button = __nested_webpack_exports__[\"default\"] = (src_button);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvYnV0dG9uLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDhCQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSw4QkFBbUI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGVBQWUsOEJBQW1CO0FBQ2xDLG1EQUFtRCwrQkFBK0I7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLGlFQUFpRSxpQkFBaUI7QUFDbEY7QUFDQSwwREFBMEQsYUFBYTtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGdDQUFnQyw4QkFBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4QkFBbUI7QUFDOUIsa0RBQWtELGdDQUFnQztBQUNsRiwwRUFBMEUsOEJBQW1CLDRCQUE0QixvQkFBb0I7QUFDN0k7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLG9DQUFvQyw0QkFBNEI7QUFDaEUsMENBQTBDO0FBQzFDLFdBQVcsOEJBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUIsa0NBQWtDO0FBQy9EO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOEJBQW1CLENBQUMsOEJBQW1CO0FBQ3hELFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLDBCQUFtQixFQUFFLCtCQUFtQjs7QUFFaEU7QUFDQSwrQkFBK0IsK0JBQW1CLEdBQUcsMEJBQW1CLG9CQUFvQiw0QkFBNEI7QUFDeEg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxPQUFPOztBQUVQO0FBQ0Esd0JBQXdCLDBCQUFtQixFQUFFLCtCQUFtQjs7QUFFaEU7QUFDQSwrQkFBbUIsR0FBRywwQkFBbUI7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxZQUFZO0FBQ1osS0FBSztBQUNMO0FBQ0EsOEJBQThCLGdDQUFnQztBQUM5RCwyQ0FBMkMsaUJBQWlCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DLEtBQUs7QUFDTDtBQUNBLHNFQUFzRTtBQUN0RSxLQUFLO0FBQ0w7QUFDQSxvR0FBb0c7QUFDcEc7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLCtCQUFtQjs7QUFFN0M7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsWUFBWTtBQUN2QjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1EQUFtRCwwQkFBbUI7O0FBRXRFLE9BQU87O0FBRVAsVUFBVSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi9idXR0b24uanM/ZGEzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9XG4vKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2Rpc3QvXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDk2KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKHtcblxuLyoqKi8gMDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIG5vcm1hbGl6ZUNvbXBvbmVudDsgfSk7XG4vKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7IGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCkgfVxuICAgICAgOiBpbmplY3RTdHlsZXNcbiAgfVxuXG4gIGlmIChob29rKSB7XG4gICAgaWYgKG9wdGlvbnMuZnVuY3Rpb25hbCkge1xuICAgICAgLy8gZm9yIHRlbXBsYXRlLW9ubHkgaG90LXJlbG9hZCBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcmVuZGVyIGZuIGRvZXNuJ3RcbiAgICAgIC8vIGdvIHRocm91Z2ggdGhlIG5vcm1hbGl6ZXJcbiAgICAgIG9wdGlvbnMuX2luamVjdFN0eWxlcyA9IGhvb2tcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyA5Njpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNhODU5ZmI0JlxudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWJ1dHRvblwiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgX3ZtLnR5cGUgPyBcImVsLWJ1dHRvbi0tXCIgKyBfdm0udHlwZSA6IFwiXCIsXG4gICAgICAgIF92bS5idXR0b25TaXplID8gXCJlbC1idXR0b24tLVwiICsgX3ZtLmJ1dHRvblNpemUgOiBcIlwiLFxuICAgICAgICB7XG4gICAgICAgICAgXCJpcy1kaXNhYmxlZFwiOiBfdm0uYnV0dG9uRGlzYWJsZWQsXG4gICAgICAgICAgXCJpcy1sb2FkaW5nXCI6IF92bS5sb2FkaW5nLFxuICAgICAgICAgIFwiaXMtcGxhaW5cIjogX3ZtLnBsYWluLFxuICAgICAgICAgIFwiaXMtcm91bmRcIjogX3ZtLnJvdW5kLFxuICAgICAgICAgIFwiaXMtY2lyY2xlXCI6IF92bS5jaXJjbGVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGRpc2FibGVkOiBfdm0uYnV0dG9uRGlzYWJsZWQgfHwgX3ZtLmxvYWRpbmcsXG4gICAgICAgIGF1dG9mb2N1czogX3ZtLmF1dG9mb2N1cyxcbiAgICAgICAgdHlwZTogX3ZtLm5hdGl2ZVR5cGVcbiAgICAgIH0sXG4gICAgICBvbjogeyBjbGljazogX3ZtLmhhbmRsZUNsaWNrIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF92bS5sb2FkaW5nID8gX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbi1sb2FkaW5nXCIgfSkgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5pY29uICYmICFfdm0ubG9hZGluZyA/IF9jKFwiaVwiLCB7IGNsYXNzOiBfdm0uaWNvbiB9KSA6IF92bS5fZSgpLFxuICAgICAgX3ZtLiRzbG90cy5kZWZhdWx0ID8gX2MoXCJzcGFuXCIsIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwgMikgOiBfdm0uX2UoKVxuICAgIF1cbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2J1dHRvbi9zcmMvYnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYTg1OWZiNCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBidXR0b252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxCdXR0b24nLFxuXG4gIGluamVjdDoge1xuICAgIGVsRm9ybToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGVsRm9ybUl0ZW06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgdHlwZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RlZmF1bHQnXG4gICAgfSxcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIG5hdGl2ZVR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdidXR0b24nXG4gICAgfSxcbiAgICBsb2FkaW5nOiBCb29sZWFuLFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIHBsYWluOiBCb29sZWFuLFxuICAgIGF1dG9mb2N1czogQm9vbGVhbixcbiAgICByb3VuZDogQm9vbGVhbixcbiAgICBjaXJjbGU6IEJvb2xlYW5cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIF9lbEZvcm1JdGVtU2l6ZTogZnVuY3Rpb24gX2VsRm9ybUl0ZW1TaXplKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmVsRm9ybUl0ZW0gfHwge30pLmVsRm9ybUl0ZW1TaXplO1xuICAgIH0sXG4gICAgYnV0dG9uU2l6ZTogZnVuY3Rpb24gYnV0dG9uU2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpemUgfHwgdGhpcy5fZWxGb3JtSXRlbVNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7XG4gICAgfSxcbiAgICBidXR0b25EaXNhYmxlZDogZnVuY3Rpb24gYnV0dG9uRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kb3B0aW9ucy5wcm9wc0RhdGEuaGFzT3duUHJvcGVydHkoJ2Rpc2FibGVkJykgPyB0aGlzLmRpc2FibGVkIDogKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZDtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NsaWNrJywgZXZ0KTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9idXR0b24vc3JjL2J1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2J1dHRvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChidXR0b252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXG52YXIgY29tcG9uZW50Tm9ybWFsaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY29tcG9uZW50ID0gT2JqZWN0KGNvbXBvbmVudE5vcm1hbGl6ZXJbXCJhXCIgLyogZGVmYXVsdCAqL10pKFxuICBzcmNfYnV0dG9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgYXBpOyB9XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2J1dHRvbi9zcmMvYnV0dG9uLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfYnV0dG9uID0gKGNvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYnV0dG9uL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnNyY19idXR0b24uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzcmNfYnV0dG9uLm5hbWUsIHNyY19idXR0b24pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfYnV0dG9uID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoc3JjX2J1dHRvbik7XG5cbi8qKiovIH0pXG5cbi8qKioqKiovIH0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/button.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/cascader-panel.js":
/*!*******************************************************!*\
!*** ./node_modules/element-ui/lib/cascader-panel.js ***!
\*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 61);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 15:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/scrollbar */ \"./node_modules/element-ui/lib/scrollbar.js\");\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/checkbox */ \"./node_modules/element-ui/lib/checkbox.js\");\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/shared */ \"./node_modules/element-ui/lib/utils/shared.js\");\n\n/***/ }),\n\n/***/ 26:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! babel-helper-vue-jsx-merge-props */ \"./node_modules/babel-helper-vue-jsx-merge-props/index.js\");\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\n/***/ }),\n\n/***/ 31:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/scroll-into-view */ \"./node_modules/element-ui/lib/utils/scroll-into-view.js\");\n\n/***/ }),\n\n/***/ 41:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/aria-utils */ \"./node_modules/element-ui/lib/utils/aria-utils.js\");\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/radio */ \"./node_modules/element-ui/lib/radio.js\");\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/locale */ \"./node_modules/element-ui/lib/mixins/locale.js\");\n\n/***/ }),\n\n/***/ 61:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_7612__) {\n\n\"use strict\";\n__nested_webpack_require_7612__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-panel.vue?vue&type=template&id=34932346&\nvar cascader_panelvue_type_template_id_34932346_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\"el-cascader-panel\", _vm.border && \"is-bordered\"],\n on: { keydown: _vm.handleKeyDown }\n },\n _vm._l(_vm.menus, function(menu, index) {\n return _c(\"cascader-menu\", {\n key: index,\n ref: \"menu\",\n refInFor: true,\n attrs: { index: index, nodes: menu }\n })\n }),\n 1\n )\n}\nvar staticRenderFns = []\ncascader_panelvue_type_template_id_34932346_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue?vue&type=template&id=34932346&\n\n// EXTERNAL MODULE: external \"babel-helper-vue-jsx-merge-props\"\nvar external_babel_helper_vue_jsx_merge_props_ = __nested_webpack_require_7612__(26);\nvar external_babel_helper_vue_jsx_merge_props_default = /*#__PURE__*/__nested_webpack_require_7612__.n(external_babel_helper_vue_jsx_merge_props_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/scrollbar\"\nvar scrollbar_ = __nested_webpack_require_7612__(15);\nvar scrollbar_default = /*#__PURE__*/__nested_webpack_require_7612__.n(scrollbar_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/checkbox\"\nvar checkbox_ = __nested_webpack_require_7612__(18);\nvar checkbox_default = /*#__PURE__*/__nested_webpack_require_7612__.n(checkbox_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/radio\"\nvar radio_ = __nested_webpack_require_7612__(52);\nvar radio_default = /*#__PURE__*/__nested_webpack_require_7612__.n(radio_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __nested_webpack_require_7612__(3);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-node.vue?vue&type=script&lang=js&\n\n\n\n\n\n\nvar stopPropagation = function stopPropagation(e) {\n return e.stopPropagation();\n};\n\n/* harmony default export */ var cascader_nodevue_type_script_lang_js_ = ({\n inject: ['panel'],\n\n components: {\n ElCheckbox: checkbox_default.a,\n ElRadio: radio_default.a\n },\n\n props: {\n node: {\n required: true\n },\n nodeId: String\n },\n\n computed: {\n config: function config() {\n return this.panel.config;\n },\n isLeaf: function isLeaf() {\n return this.node.isLeaf;\n },\n isDisabled: function isDisabled() {\n return this.node.isDisabled;\n },\n checkedValue: function checkedValue() {\n return this.panel.checkedValue;\n },\n isChecked: function isChecked() {\n return this.node.isSameNode(this.checkedValue);\n },\n inActivePath: function inActivePath() {\n return this.isInPath(this.panel.activePath);\n },\n inCheckedPath: function inCheckedPath() {\n var _this = this;\n\n if (!this.config.checkStrictly) return false;\n\n return this.panel.checkedNodePaths.some(function (checkedPath) {\n return _this.isInPath(checkedPath);\n });\n },\n value: function value() {\n return this.node.getValueByOption();\n }\n },\n\n methods: {\n handleExpand: function handleExpand() {\n var _this2 = this;\n\n var panel = this.panel,\n node = this.node,\n isDisabled = this.isDisabled,\n config = this.config;\n var multiple = config.multiple,\n checkStrictly = config.checkStrictly;\n\n\n if (!checkStrictly && isDisabled || node.loading) return;\n\n if (config.lazy && !node.loaded) {\n panel.lazyLoad(node, function () {\n // do not use cached leaf value here, invoke this.isLeaf to get new value.\n var isLeaf = _this2.isLeaf;\n\n\n if (!isLeaf) _this2.handleExpand();\n if (multiple) {\n // if leaf sync checked state, else clear checked state\n var checked = isLeaf ? node.checked : false;\n _this2.handleMultiCheckChange(checked);\n }\n });\n } else {\n panel.handleExpand(node);\n }\n },\n handleCheckChange: function handleCheckChange() {\n var panel = this.panel,\n value = this.value,\n node = this.node;\n\n panel.handleCheckChange(value);\n panel.handleExpand(node);\n },\n handleMultiCheckChange: function handleMultiCheckChange(checked) {\n this.node.doCheck(checked);\n this.panel.calculateMultiCheckedValue();\n },\n isInPath: function isInPath(pathNodes) {\n var node = this.node;\n\n var selectedPathNode = pathNodes[node.level - 1] || {};\n return selectedPathNode.uid === node.uid;\n },\n renderPrefix: function renderPrefix(h) {\n var isLeaf = this.isLeaf,\n isChecked = this.isChecked,\n config = this.config;\n var checkStrictly = config.checkStrictly,\n multiple = config.multiple;\n\n\n if (multiple) {\n return this.renderCheckbox(h);\n } else if (checkStrictly) {\n return this.renderRadio(h);\n } else if (isLeaf && isChecked) {\n return this.renderCheckIcon(h);\n }\n\n return null;\n },\n renderPostfix: function renderPostfix(h) {\n var node = this.node,\n isLeaf = this.isLeaf;\n\n\n if (node.loading) {\n return this.renderLoadingIcon(h);\n } else if (!isLeaf) {\n return this.renderExpandIcon(h);\n }\n\n return null;\n },\n renderCheckbox: function renderCheckbox(h) {\n var node = this.node,\n config = this.config,\n isDisabled = this.isDisabled;\n\n var events = {\n on: { change: this.handleMultiCheckChange },\n nativeOn: {}\n };\n\n if (config.checkStrictly) {\n // when every node is selectable, click event should not trigger expand event.\n events.nativeOn.click = stopPropagation;\n }\n\n return h('el-checkbox', external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n value: node.checked,\n indeterminate: node.indeterminate,\n disabled: isDisabled\n }\n }, events]));\n },\n renderRadio: function renderRadio(h) {\n var checkedValue = this.checkedValue,\n value = this.value,\n isDisabled = this.isDisabled;\n\n // to keep same reference if value cause radio's checked state is calculated by reference comparision;\n\n if (Object(util_[\"isEqual\"])(value, checkedValue)) {\n value = checkedValue;\n }\n\n return h(\n 'el-radio',\n {\n attrs: {\n value: checkedValue,\n label: value,\n disabled: isDisabled\n },\n on: {\n 'change': this.handleCheckChange\n },\n nativeOn: {\n 'click': stopPropagation\n }\n },\n [h('span')]\n );\n },\n renderCheckIcon: function renderCheckIcon(h) {\n return h('i', { 'class': 'el-icon-check el-cascader-node__prefix' });\n },\n renderLoadingIcon: function renderLoadingIcon(h) {\n return h('i', { 'class': 'el-icon-loading el-cascader-node__postfix' });\n },\n renderExpandIcon: function renderExpandIcon(h) {\n return h('i', { 'class': 'el-icon-arrow-right el-cascader-node__postfix' });\n },\n renderContent: function renderContent(h) {\n var panel = this.panel,\n node = this.node;\n\n var render = panel.renderLabelFn;\n var vnode = render ? render({ node: node, data: node.data }) : null;\n\n return h(\n 'span',\n { 'class': 'el-cascader-node__label' },\n [vnode || node.label]\n );\n }\n },\n\n render: function render(h) {\n var _this3 = this;\n\n var inActivePath = this.inActivePath,\n inCheckedPath = this.inCheckedPath,\n isChecked = this.isChecked,\n isLeaf = this.isLeaf,\n isDisabled = this.isDisabled,\n config = this.config,\n nodeId = this.nodeId;\n var expandTrigger = config.expandTrigger,\n checkStrictly = config.checkStrictly,\n multiple = config.multiple;\n\n var disabled = !checkStrictly && isDisabled;\n var events = { on: {} };\n\n if (expandTrigger === 'click') {\n events.on.click = this.handleExpand;\n } else {\n events.on.mouseenter = function (e) {\n _this3.handleExpand();\n _this3.$emit('expand', e);\n };\n events.on.focus = function (e) {\n _this3.handleExpand();\n _this3.$emit('expand', e);\n };\n }\n if (isLeaf && !isDisabled && !checkStrictly && !multiple) {\n events.on.click = this.handleCheckChange;\n }\n\n return h(\n 'li',\n external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n role: 'menuitem',\n id: nodeId,\n 'aria-expanded': inActivePath,\n tabindex: disabled ? null : -1\n },\n 'class': {\n 'el-cascader-node': true,\n 'is-selectable': checkStrictly,\n 'in-active-path': inActivePath,\n 'in-checked-path': inCheckedPath,\n 'is-active': isChecked,\n 'is-disabled': disabled\n }\n }, events]),\n [this.renderPrefix(h), this.renderContent(h), this.renderPostfix(h)]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-node.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_nodevue_type_script_lang_js_ = (cascader_nodevue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_7612__(0);\n\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-node.vue\nvar cascader_node_render, cascader_node_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_cascader_nodevue_type_script_lang_js_,\n cascader_node_render,\n cascader_node_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/cascader-panel/src/cascader-node.vue\"\n/* harmony default export */ var cascader_node = (component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/locale\"\nvar locale_ = __nested_webpack_require_7612__(6);\nvar locale_default = /*#__PURE__*/__nested_webpack_require_7612__.n(locale_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-menu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n/* harmony default export */ var cascader_menuvue_type_script_lang_js_ = ({\n name: 'ElCascaderMenu',\n\n mixins: [locale_default.a],\n\n inject: ['panel'],\n\n components: {\n ElScrollbar: scrollbar_default.a,\n CascaderNode: cascader_node\n },\n\n props: {\n nodes: {\n type: Array,\n required: true\n },\n index: Number\n },\n\n data: function data() {\n return {\n activeNode: null,\n hoverTimer: null,\n id: Object(util_[\"generateId\"])()\n };\n },\n\n\n computed: {\n isEmpty: function isEmpty() {\n return !this.nodes.length;\n },\n menuId: function menuId() {\n return 'cascader-menu-' + this.id + '-' + this.index;\n }\n },\n\n methods: {\n handleExpand: function handleExpand(e) {\n this.activeNode = e.target;\n },\n handleMouseMove: function handleMouseMove(e) {\n var activeNode = this.activeNode,\n hoverTimer = this.hoverTimer;\n var hoverZone = this.$refs.hoverZone;\n\n\n if (!activeNode || !hoverZone) return;\n\n if (activeNode.contains(e.target)) {\n clearTimeout(hoverTimer);\n\n var _$el$getBoundingClien = this.$el.getBoundingClientRect(),\n left = _$el$getBoundingClien.left;\n\n var startX = e.clientX - left;\n var _$el = this.$el,\n offsetWidth = _$el.offsetWidth,\n offsetHeight = _$el.offsetHeight;\n\n var top = activeNode.offsetTop;\n var bottom = top + activeNode.offsetHeight;\n\n hoverZone.innerHTML = '\\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M' + startX + ' ' + top + ' L' + offsetWidth + ' 0 V' + top + ' Z\" />\\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M' + startX + ' ' + bottom + ' L' + offsetWidth + ' ' + offsetHeight + ' V' + bottom + ' Z\" />\\n ';\n } else if (!hoverTimer) {\n this.hoverTimer = setTimeout(this.clearHoverZone, this.panel.config.hoverThreshold);\n }\n },\n clearHoverZone: function clearHoverZone() {\n var hoverZone = this.$refs.hoverZone;\n\n if (!hoverZone) return;\n hoverZone.innerHTML = '';\n },\n renderEmptyText: function renderEmptyText(h) {\n return h(\n 'div',\n { 'class': 'el-cascader-menu__empty-text' },\n [this.t('el.cascader.noData')]\n );\n },\n renderNodeList: function renderNodeList(h) {\n var menuId = this.menuId;\n var isHoverMenu = this.panel.isHoverMenu;\n\n var events = { on: {} };\n\n if (isHoverMenu) {\n events.on.expand = this.handleExpand;\n }\n\n var nodes = this.nodes.map(function (node, index) {\n var hasChildren = node.hasChildren;\n\n return h('cascader-node', external_babel_helper_vue_jsx_merge_props_default()([{\n key: node.uid,\n attrs: { node: node,\n 'node-id': menuId + '-' + index,\n 'aria-haspopup': hasChildren,\n 'aria-owns': hasChildren ? menuId : null\n }\n }, events]));\n });\n\n return [].concat(nodes, [isHoverMenu ? h('svg', { ref: 'hoverZone', 'class': 'el-cascader-menu__hover-zone' }) : null]);\n }\n },\n\n render: function render(h) {\n var isEmpty = this.isEmpty,\n menuId = this.menuId;\n\n var events = { nativeOn: {} };\n\n // optimize hover to expand experience (#8010)\n if (this.panel.isHoverMenu) {\n events.nativeOn.mousemove = this.handleMouseMove;\n // events.nativeOn.mouseleave = this.clearHoverZone;\n }\n\n return h(\n 'el-scrollbar',\n external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n tag: 'ul',\n role: 'menu',\n id: menuId,\n\n 'wrap-class': 'el-cascader-menu__wrap',\n 'view-class': {\n 'el-cascader-menu__list': true,\n 'is-empty': isEmpty\n }\n },\n 'class': 'el-cascader-menu' }, events]),\n [isEmpty ? this.renderEmptyText(h) : this.renderNodeList(h)]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_menuvue_type_script_lang_js_ = (cascader_menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-menu.vue\nvar cascader_menu_render, cascader_menu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar cascader_menu_component = Object(componentNormalizer[\"a\" /* default */])(\n src_cascader_menuvue_type_script_lang_js_,\n cascader_menu_render,\n cascader_menu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_menu_api; }\ncascader_menu_component.options.__file = \"packages/cascader-panel/src/cascader-menu.vue\"\n/* harmony default export */ var cascader_menu = (cascader_menu_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __nested_webpack_require_7612__(21);\n\n// CONCATENATED MODULE: ./packages/cascader-panel/src/node.js\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar uid = 0;\n\nvar node_Node = function () {\n function Node(data, config, parentNode) {\n _classCallCheck(this, Node);\n\n this.data = data;\n this.config = config;\n this.parent = parentNode || null;\n this.level = !this.parent ? 1 : this.parent.level + 1;\n this.uid = uid++;\n\n this.initState();\n this.initChildren();\n }\n\n Node.prototype.initState = function initState() {\n var _config = this.config,\n valueKey = _config.value,\n labelKey = _config.label;\n\n\n this.value = this.data[valueKey];\n this.label = this.data[labelKey];\n this.pathNodes = this.calculatePathNodes();\n this.path = this.pathNodes.map(function (node) {\n return node.value;\n });\n this.pathLabels = this.pathNodes.map(function (node) {\n return node.label;\n });\n\n // lazy load\n this.loading = false;\n this.loaded = false;\n };\n\n Node.prototype.initChildren = function initChildren() {\n var _this = this;\n\n var config = this.config;\n\n var childrenKey = config.children;\n var childrenData = this.data[childrenKey];\n this.hasChildren = Array.isArray(childrenData);\n this.children = (childrenData || []).map(function (child) {\n return new Node(child, config, _this);\n });\n };\n\n Node.prototype.calculatePathNodes = function calculatePathNodes() {\n var nodes = [this];\n var parent = this.parent;\n\n while (parent) {\n nodes.unshift(parent);\n parent = parent.parent;\n }\n\n return nodes;\n };\n\n Node.prototype.getPath = function getPath() {\n return this.path;\n };\n\n Node.prototype.getValue = function getValue() {\n return this.value;\n };\n\n Node.prototype.getValueByOption = function getValueByOption() {\n return this.config.emitPath ? this.getPath() : this.getValue();\n };\n\n Node.prototype.getText = function getText(allLevels, separator) {\n return allLevels ? this.pathLabels.join(separator) : this.label;\n };\n\n Node.prototype.isSameNode = function isSameNode(checkedValue) {\n var value = this.getValueByOption();\n return this.config.multiple && Array.isArray(checkedValue) ? checkedValue.some(function (val) {\n return Object(util_[\"isEqual\"])(val, value);\n }) : Object(util_[\"isEqual\"])(checkedValue, value);\n };\n\n Node.prototype.broadcast = function broadcast(event) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var handlerName = 'onParent' + Object(util_[\"capitalize\"])(event);\n\n this.children.forEach(function (child) {\n if (child) {\n // bottom up\n child.broadcast.apply(child, [event].concat(args));\n child[handlerName] && child[handlerName].apply(child, args);\n }\n });\n };\n\n Node.prototype.emit = function emit(event) {\n var parent = this.parent;\n\n var handlerName = 'onChild' + Object(util_[\"capitalize\"])(event);\n if (parent) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n parent[handlerName] && parent[handlerName].apply(parent, args);\n parent.emit.apply(parent, [event].concat(args));\n }\n };\n\n Node.prototype.onParentCheck = function onParentCheck(checked) {\n if (!this.isDisabled) {\n this.setCheckState(checked);\n }\n };\n\n Node.prototype.onChildCheck = function onChildCheck() {\n var children = this.children;\n\n var validChildren = children.filter(function (child) {\n return !child.isDisabled;\n });\n var checked = validChildren.length ? validChildren.every(function (child) {\n return child.checked;\n }) : false;\n\n this.setCheckState(checked);\n };\n\n Node.prototype.setCheckState = function setCheckState(checked) {\n var totalNum = this.children.length;\n var checkedNum = this.children.reduce(function (c, p) {\n var num = p.checked ? 1 : p.indeterminate ? 0.5 : 0;\n return c + num;\n }, 0);\n\n this.checked = checked;\n this.indeterminate = checkedNum !== totalNum && checkedNum > 0;\n };\n\n Node.prototype.syncCheckState = function syncCheckState(checkedValue) {\n var value = this.getValueByOption();\n var checked = this.isSameNode(checkedValue, value);\n\n this.doCheck(checked);\n };\n\n Node.prototype.doCheck = function doCheck(checked) {\n if (this.checked !== checked) {\n if (this.config.checkStrictly) {\n this.checked = checked;\n } else {\n // bottom up to unify the calculation of the indeterminate state\n this.broadcast('check', checked);\n this.setCheckState(checked);\n this.emit('check');\n }\n }\n };\n\n _createClass(Node, [{\n key: 'isDisabled',\n get: function get() {\n var data = this.data,\n parent = this.parent,\n config = this.config;\n\n var disabledKey = config.disabled;\n var checkStrictly = config.checkStrictly;\n\n return data[disabledKey] || !checkStrictly && parent && parent.isDisabled;\n }\n }, {\n key: 'isLeaf',\n get: function get() {\n var data = this.data,\n loaded = this.loaded,\n hasChildren = this.hasChildren,\n children = this.children;\n var _config2 = this.config,\n lazy = _config2.lazy,\n leafKey = _config2.leaf;\n\n if (lazy) {\n var isLeaf = Object(shared_[\"isDef\"])(data[leafKey]) ? data[leafKey] : loaded ? !children.length : false;\n this.hasChildren = !isLeaf;\n return isLeaf;\n }\n return !hasChildren;\n }\n }]);\n\n return Node;\n}();\n\n/* harmony default export */ var src_node = (node_Node);\n// CONCATENATED MODULE: ./packages/cascader-panel/src/store.js\nfunction store_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar flatNodes = function flatNodes(data, leafOnly) {\n return data.reduce(function (res, node) {\n if (node.isLeaf) {\n res.push(node);\n } else {\n !leafOnly && res.push(node);\n res = res.concat(flatNodes(node.children, leafOnly));\n }\n return res;\n }, []);\n};\n\nvar store_Store = function () {\n function Store(data, config) {\n store_classCallCheck(this, Store);\n\n this.config = config;\n this.initNodes(data);\n }\n\n Store.prototype.initNodes = function initNodes(data) {\n var _this = this;\n\n data = Object(util_[\"coerceTruthyValueToArray\"])(data);\n this.nodes = data.map(function (nodeData) {\n return new src_node(nodeData, _this.config);\n });\n this.flattedNodes = this.getFlattedNodes(false, false);\n this.leafNodes = this.getFlattedNodes(true, false);\n };\n\n Store.prototype.appendNode = function appendNode(nodeData, parentNode) {\n var node = new src_node(nodeData, this.config, parentNode);\n var children = parentNode ? parentNode.children : this.nodes;\n\n children.push(node);\n };\n\n Store.prototype.appendNodes = function appendNodes(nodeDataList, parentNode) {\n var _this2 = this;\n\n nodeDataList = Object(util_[\"coerceTruthyValueToArray\"])(nodeDataList);\n nodeDataList.forEach(function (nodeData) {\n return _this2.appendNode(nodeData, parentNode);\n });\n };\n\n Store.prototype.getNodes = function getNodes() {\n return this.nodes;\n };\n\n Store.prototype.getFlattedNodes = function getFlattedNodes(leafOnly) {\n var cached = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var cachedNodes = leafOnly ? this.leafNodes : this.flattedNodes;\n return cached ? cachedNodes : flatNodes(this.nodes, leafOnly);\n };\n\n Store.prototype.getNodeByValue = function getNodeByValue(value) {\n var nodes = this.getFlattedNodes(false, !this.config.lazy).filter(function (node) {\n return Object(util_[\"valueEquals\"])(node.path, value) || node.value === value;\n });\n return nodes && nodes.length ? nodes[0] : null;\n };\n\n return Store;\n}();\n\n/* harmony default export */ var src_store = (store_Store);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/merge\"\nvar merge_ = __nested_webpack_require_7612__(9);\nvar merge_default = /*#__PURE__*/__nested_webpack_require_7612__.n(merge_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/aria-utils\"\nvar aria_utils_ = __nested_webpack_require_7612__(41);\nvar aria_utils_default = /*#__PURE__*/__nested_webpack_require_7612__.n(aria_utils_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/scroll-into-view\"\nvar scroll_into_view_ = __nested_webpack_require_7612__(31);\nvar scroll_into_view_default = /*#__PURE__*/__nested_webpack_require_7612__.n(scroll_into_view_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-panel.vue?vue&type=script&lang=js&\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\nvar KeyCode = aria_utils_default.a.keys;\n\nvar DefaultProps = {\n expandTrigger: 'click', // or hover\n multiple: false,\n checkStrictly: false, // whether all nodes can be selected\n emitPath: true, // wether to emit an array of all levels value in which node is located\n lazy: false,\n lazyLoad: util_[\"noop\"],\n value: 'value',\n label: 'label',\n children: 'children',\n leaf: 'leaf',\n disabled: 'disabled',\n hoverThreshold: 500\n};\n\nvar cascader_panelvue_type_script_lang_js_isLeaf = function isLeaf(el) {\n return !el.getAttribute('aria-owns');\n};\n\nvar getSibling = function getSibling(el, distance) {\n var parentNode = el.parentNode;\n\n if (parentNode) {\n var siblings = parentNode.querySelectorAll('.el-cascader-node[tabindex=\"-1\"]');\n var index = Array.prototype.indexOf.call(siblings, el);\n return siblings[index + distance] || null;\n }\n return null;\n};\n\nvar getMenuIndex = function getMenuIndex(el, distance) {\n if (!el) return;\n var pieces = el.id.split('-');\n return Number(pieces[pieces.length - 2]);\n};\n\nvar focusNode = function focusNode(el) {\n if (!el) return;\n el.focus();\n !cascader_panelvue_type_script_lang_js_isLeaf(el) && el.click();\n};\n\nvar checkNode = function checkNode(el) {\n if (!el) return;\n\n var input = el.querySelector('input');\n if (input) {\n input.click();\n } else if (cascader_panelvue_type_script_lang_js_isLeaf(el)) {\n el.click();\n }\n};\n\n/* harmony default export */ var cascader_panelvue_type_script_lang_js_ = ({\n name: 'ElCascaderPanel',\n\n components: {\n CascaderMenu: cascader_menu\n },\n\n props: {\n value: {},\n options: Array,\n props: Object,\n border: {\n type: Boolean,\n default: true\n },\n renderLabel: Function\n },\n\n provide: function provide() {\n return {\n panel: this\n };\n },\n data: function data() {\n return {\n checkedValue: null,\n checkedNodePaths: [],\n store: [],\n menus: [],\n activePath: [],\n loadCount: 0\n };\n },\n\n\n computed: {\n config: function config() {\n return merge_default()(_extends({}, DefaultProps), this.props || {});\n },\n multiple: function multiple() {\n return this.config.multiple;\n },\n checkStrictly: function checkStrictly() {\n return this.config.checkStrictly;\n },\n leafOnly: function leafOnly() {\n return !this.checkStrictly;\n },\n isHoverMenu: function isHoverMenu() {\n return this.config.expandTrigger === 'hover';\n },\n renderLabelFn: function renderLabelFn() {\n return this.renderLabel || this.$scopedSlots.default;\n }\n },\n\n watch: {\n value: function value() {\n this.syncCheckedValue();\n this.checkStrictly && this.calculateCheckedNodePaths();\n },\n\n options: {\n handler: function handler() {\n this.initStore();\n },\n immediate: true,\n deep: true\n },\n checkedValue: function checkedValue(val) {\n if (!Object(util_[\"isEqual\"])(val, this.value)) {\n this.checkStrictly && this.calculateCheckedNodePaths();\n this.$emit('input', val);\n this.$emit('change', val);\n }\n }\n },\n\n mounted: function mounted() {\n if (!this.isEmptyValue(this.value)) {\n this.syncCheckedValue();\n }\n },\n\n\n methods: {\n initStore: function initStore() {\n var config = this.config,\n options = this.options;\n\n if (config.lazy && Object(util_[\"isEmpty\"])(options)) {\n this.lazyLoad();\n } else {\n this.store = new src_store(options, config);\n this.menus = [this.store.getNodes()];\n this.syncMenuState();\n }\n },\n syncCheckedValue: function syncCheckedValue() {\n var value = this.value,\n checkedValue = this.checkedValue;\n\n if (!Object(util_[\"isEqual\"])(value, checkedValue)) {\n this.activePath = [];\n this.checkedValue = value;\n this.syncMenuState();\n }\n },\n syncMenuState: function syncMenuState() {\n var multiple = this.multiple,\n checkStrictly = this.checkStrictly;\n\n this.syncActivePath();\n multiple && this.syncMultiCheckState();\n checkStrictly && this.calculateCheckedNodePaths();\n this.$nextTick(this.scrollIntoView);\n },\n syncMultiCheckState: function syncMultiCheckState() {\n var _this = this;\n\n var nodes = this.getFlattedNodes(this.leafOnly);\n\n nodes.forEach(function (node) {\n node.syncCheckState(_this.checkedValue);\n });\n },\n isEmptyValue: function isEmptyValue(val) {\n var multiple = this.multiple,\n config = this.config;\n var emitPath = config.emitPath;\n\n if (multiple || emitPath) {\n return Object(util_[\"isEmpty\"])(val);\n }\n return false;\n },\n syncActivePath: function syncActivePath() {\n var _this2 = this;\n\n var store = this.store,\n multiple = this.multiple,\n activePath = this.activePath,\n checkedValue = this.checkedValue;\n\n\n if (!Object(util_[\"isEmpty\"])(activePath)) {\n var nodes = activePath.map(function (node) {\n return _this2.getNodeByValue(node.getValue());\n });\n this.expandNodes(nodes);\n } else if (!this.isEmptyValue(checkedValue)) {\n var value = multiple ? checkedValue[0] : checkedValue;\n var checkedNode = this.getNodeByValue(value) || {};\n var _nodes = (checkedNode.pathNodes || []).slice(0, -1);\n this.expandNodes(_nodes);\n } else {\n this.activePath = [];\n this.menus = [store.getNodes()];\n }\n },\n expandNodes: function expandNodes(nodes) {\n var _this3 = this;\n\n nodes.forEach(function (node) {\n return _this3.handleExpand(node, true /* silent */);\n });\n },\n calculateCheckedNodePaths: function calculateCheckedNodePaths() {\n var _this4 = this;\n\n var checkedValue = this.checkedValue,\n multiple = this.multiple;\n\n var checkedValues = multiple ? Object(util_[\"coerceTruthyValueToArray\"])(checkedValue) : [checkedValue];\n this.checkedNodePaths = checkedValues.map(function (v) {\n var checkedNode = _this4.getNodeByValue(v);\n return checkedNode ? checkedNode.pathNodes : [];\n });\n },\n handleKeyDown: function handleKeyDown(e) {\n var target = e.target,\n keyCode = e.keyCode;\n\n\n switch (keyCode) {\n case KeyCode.up:\n var prev = getSibling(target, -1);\n focusNode(prev);\n break;\n case KeyCode.down:\n var next = getSibling(target, 1);\n focusNode(next);\n break;\n case KeyCode.left:\n var preMenu = this.$refs.menu[getMenuIndex(target) - 1];\n if (preMenu) {\n var expandedNode = preMenu.$el.querySelector('.el-cascader-node[aria-expanded=\"true\"]');\n focusNode(expandedNode);\n }\n break;\n case KeyCode.right:\n var nextMenu = this.$refs.menu[getMenuIndex(target) + 1];\n if (nextMenu) {\n var firstNode = nextMenu.$el.querySelector('.el-cascader-node[tabindex=\"-1\"]');\n focusNode(firstNode);\n }\n break;\n case KeyCode.enter:\n checkNode(target);\n break;\n case KeyCode.esc:\n case KeyCode.tab:\n this.$emit('close');\n break;\n default:\n return;\n }\n },\n handleExpand: function handleExpand(node, silent) {\n var activePath = this.activePath;\n var level = node.level;\n\n var path = activePath.slice(0, level - 1);\n var menus = this.menus.slice(0, level);\n\n if (!node.isLeaf) {\n path.push(node);\n menus.push(node.children);\n }\n\n this.activePath = path;\n this.menus = menus;\n\n if (!silent) {\n var pathValues = path.map(function (node) {\n return node.getValue();\n });\n var activePathValues = activePath.map(function (node) {\n return node.getValue();\n });\n if (!Object(util_[\"valueEquals\"])(pathValues, activePathValues)) {\n this.$emit('active-item-change', pathValues); // Deprecated\n this.$emit('expand-change', pathValues);\n }\n }\n },\n handleCheckChange: function handleCheckChange(value) {\n this.checkedValue = value;\n },\n lazyLoad: function lazyLoad(node, onFullfiled) {\n var _this5 = this;\n\n var config = this.config;\n\n if (!node) {\n node = node || { root: true, level: 0 };\n this.store = new src_store([], config);\n this.menus = [this.store.getNodes()];\n }\n node.loading = true;\n var resolve = function resolve(dataList) {\n var parent = node.root ? null : node;\n dataList && dataList.length && _this5.store.appendNodes(dataList, parent);\n node.loading = false;\n node.loaded = true;\n\n // dispose default value on lazy load mode\n if (Array.isArray(_this5.checkedValue)) {\n var nodeValue = _this5.checkedValue[_this5.loadCount++];\n var valueKey = _this5.config.value;\n var leafKey = _this5.config.leaf;\n\n if (Array.isArray(dataList) && dataList.filter(function (item) {\n return item[valueKey] === nodeValue;\n }).length > 0) {\n var checkedNode = _this5.store.getNodeByValue(nodeValue);\n\n if (!checkedNode.data[leafKey]) {\n _this5.lazyLoad(checkedNode, function () {\n _this5.handleExpand(checkedNode);\n });\n }\n\n if (_this5.loadCount === _this5.checkedValue.length) {\n _this5.$parent.computePresentText();\n }\n }\n }\n\n onFullfiled && onFullfiled(dataList);\n };\n config.lazyLoad(node, resolve);\n },\n\n\n /**\n * public methods\n */\n calculateMultiCheckedValue: function calculateMultiCheckedValue() {\n this.checkedValue = this.getCheckedNodes(this.leafOnly).map(function (node) {\n return node.getValueByOption();\n });\n },\n scrollIntoView: function scrollIntoView() {\n if (this.$isServer) return;\n\n var menus = this.$refs.menu || [];\n menus.forEach(function (menu) {\n var menuElement = menu.$el;\n if (menuElement) {\n var container = menuElement.querySelector('.el-scrollbar__wrap');\n var activeNode = menuElement.querySelector('.el-cascader-node.is-active') || menuElement.querySelector('.el-cascader-node.in-active-path');\n scroll_into_view_default()(container, activeNode);\n }\n });\n },\n getNodeByValue: function getNodeByValue(val) {\n return this.store.getNodeByValue(val);\n },\n getFlattedNodes: function getFlattedNodes(leafOnly) {\n var cached = !this.config.lazy;\n return this.store.getFlattedNodes(leafOnly, cached);\n },\n getCheckedNodes: function getCheckedNodes(leafOnly) {\n var checkedValue = this.checkedValue,\n multiple = this.multiple;\n\n if (multiple) {\n var nodes = this.getFlattedNodes(leafOnly);\n return nodes.filter(function (node) {\n return node.checked;\n });\n } else {\n return this.isEmptyValue(checkedValue) ? [] : [this.getNodeByValue(checkedValue)];\n }\n },\n clearCheckedNodes: function clearCheckedNodes() {\n var config = this.config,\n leafOnly = this.leafOnly;\n var multiple = config.multiple,\n emitPath = config.emitPath;\n\n if (multiple) {\n this.getCheckedNodes(leafOnly).filter(function (node) {\n return !node.isDisabled;\n }).forEach(function (node) {\n return node.doCheck(false);\n });\n this.calculateMultiCheckedValue();\n } else {\n this.checkedValue = emitPath ? [] : null;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_panelvue_type_script_lang_js_ = (cascader_panelvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue\n\n\n\n\n\n/* normalize component */\n\nvar cascader_panel_component = Object(componentNormalizer[\"a\" /* default */])(\n src_cascader_panelvue_type_script_lang_js_,\n cascader_panelvue_type_template_id_34932346_render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_panel_api; }\ncascader_panel_component.options.__file = \"packages/cascader-panel/src/cascader-panel.vue\"\n/* harmony default export */ var cascader_panel = (cascader_panel_component.exports);\n// CONCATENATED MODULE: ./packages/cascader-panel/index.js\n\n\n/* istanbul ignore next */\ncascader_panel.install = function (Vue) {\n Vue.component(cascader_panel.name, cascader_panel);\n};\n\n/* harmony default export */ var packages_cascader_panel = __nested_webpack_exports__[\"default\"] = (cascader_panel);\n\n/***/ }),\n\n/***/ 9:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/merge */ \"./node_modules/element-ui/lib/utils/merge.js\");\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvY2FzY2FkZXItcGFuZWwuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOEJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDhCQUFtQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZUFBZSw4QkFBbUI7QUFDbEMsbURBQW1ELCtCQUErQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0EsaUVBQWlFLGlCQUFpQjtBQUNsRjtBQUNBLDBEQUEwRCxhQUFhO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZ0NBQWdDLDhCQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDhCQUFtQjtBQUM5QixrREFBa0QsZ0NBQWdDO0FBQ2xGLDBFQUEwRSw4QkFBbUIsNEJBQTRCLG9CQUFvQjtBQUM3STtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0Esb0NBQW9DLDRCQUE0QjtBQUNoRSwwQ0FBMEM7QUFDMUMsV0FBVyw4QkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQixrQ0FBa0M7QUFDL0Q7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4QkFBbUIsQ0FBQyw4QkFBbUI7QUFDeEQsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsMEJBQW1CLEVBQUUsK0JB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QUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsdUZBQXVGLGFBQWE7QUFDcEc7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkZBQTZGLGVBQWU7QUFDNUc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSx1REFBdUQsMENBQTBDOzs7OztBQUtqRztBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxhQUFhLCtCQUFtQjtBQUNoQyxpQ0FBaUMsK0JBQW1COztBQUVwRDtBQUNBLGtCQUFrQiwrQkFBbUI7QUFDckMsc0NBQXNDLCtCQUFtQjs7QUFFekQ7QUFDQSx3QkFBd0IsK0JBQW1CO0FBQzNDLDRDQUE0QywrQkFBbUI7O0FBRS9EO0FBQ0Esb0RBQW9ELGdCQUFnQixzQkFBc0IsT0FBTywyQkFBMkIsMEJBQTBCLHlEQUF5RCxpQ0FBaUM7O0FBRWhQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFTQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0Esd0NBQXdDLGlDQUFpQztBQUN6RSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLDJCQUEyQjtBQUN0QztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJEQUEyRCwwQkFBbUI7O0FBRTlFLE9BQU87O0FBRVA7QUFDQTs7QUFFQSxpQkFBaUIsbUJBQU8sQ0FBQyxnRkFBNEI7O0FBRXJELE9BQU87O0FBRVAsVUFBVSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi9jYXNjYWRlci1wYW5lbC5qcz8zOWU1Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID1cbi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vKioqKioqLyBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuLyoqKioqKi8gXHRcdHJldHVybiBucztcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNjEpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoe1xuXG4vKioqLyAwOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gbm9ybWFsaXplQ29tcG9uZW50OyB9KTtcbi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KSB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIDE1OlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9zY3JvbGxiYXJcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAxODpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvY2hlY2tib3hcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAyMTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvc2hhcmVkXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gMjY6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJhYmVsLWhlbHBlci12dWUtanN4LW1lcmdlLXByb3BzXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gMzpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvdXRpbFwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDMxOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9zY3JvbGwtaW50by12aWV3XCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gNDE6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL2FyaWEtdXRpbHNcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyA1Mjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvcmFkaW9cIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyA2OlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9taXhpbnMvbG9jYWxlXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gNjE6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1wYW5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzQ5MzIzNDYmXG52YXIgY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDkzMjM0Nl9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBjbGFzczogW1wiZWwtY2FzY2FkZXItcGFuZWxcIiwgX3ZtLmJvcmRlciAmJiBcImlzLWJvcmRlcmVkXCJdLFxuICAgICAgb246IHsga2V5ZG93bjogX3ZtLmhhbmRsZUtleURvd24gfVxuICAgIH0sXG4gICAgX3ZtLl9sKF92bS5tZW51cywgZnVuY3Rpb24obWVudSwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBfYyhcImNhc2NhZGVyLW1lbnVcIiwge1xuICAgICAgICBrZXk6IGluZGV4LFxuICAgICAgICByZWY6IFwibWVudVwiLFxuICAgICAgICByZWZJbkZvcjogdHJ1ZSxcbiAgICAgICAgYXR0cnM6IHsgaW5kZXg6IGluZGV4LCBub2RlczogbWVudSB9XG4gICAgICB9KVxuICAgIH0pLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5jYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM0OTMyMzQ2X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLXBhbmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDkzMjM0NiZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImJhYmVsLWhlbHBlci12dWUtanN4LW1lcmdlLXByb3BzXCJcbnZhciBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcbnZhciBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc18pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvc2Nyb2xsYmFyXCJcbnZhciBzY3JvbGxiYXJfID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG52YXIgc2Nyb2xsYmFyX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHNjcm9sbGJhcl8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvY2hlY2tib3hcIlxudmFyIGNoZWNrYm94XyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpO1xudmFyIGNoZWNrYm94X2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNoZWNrYm94Xyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9yYWRpb1wiXG52YXIgcmFkaW9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Mik7XG52YXIgcmFkaW9fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4ocmFkaW9fKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWxcIlxudmFyIHV0aWxfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLW5vZGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxudmFyIHN0b3BQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uIHN0b3BQcm9wYWdhdGlvbihlKSB7XG4gIHJldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2FzY2FkZXJfbm9kZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIGluamVjdDogWydwYW5lbCddLFxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBFbENoZWNrYm94OiBjaGVja2JveF9kZWZhdWx0LmEsXG4gICAgRWxSYWRpbzogcmFkaW9fZGVmYXVsdC5hXG4gIH0sXG5cbiAgcHJvcHM6IHtcbiAgICBub2RlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgbm9kZUlkOiBTdHJpbmdcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGNvbmZpZzogZnVuY3Rpb24gY29uZmlnKCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFuZWwuY29uZmlnO1xuICAgIH0sXG4gICAgaXNMZWFmOiBmdW5jdGlvbiBpc0xlYWYoKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlLmlzTGVhZjtcbiAgICB9LFxuICAgIGlzRGlzYWJsZWQ6IGZ1bmN0aW9uIGlzRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlLmlzRGlzYWJsZWQ7XG4gICAgfSxcbiAgICBjaGVja2VkVmFsdWU6IGZ1bmN0aW9uIGNoZWNrZWRWYWx1ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhbmVsLmNoZWNrZWRWYWx1ZTtcbiAgICB9LFxuICAgIGlzQ2hlY2tlZDogZnVuY3Rpb24gaXNDaGVja2VkKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZS5pc1NhbWVOb2RlKHRoaXMuY2hlY2tlZFZhbHVlKTtcbiAgICB9LFxuICAgIGluQWN0aXZlUGF0aDogZnVuY3Rpb24gaW5BY3RpdmVQYXRoKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNJblBhdGgodGhpcy5wYW5lbC5hY3RpdmVQYXRoKTtcbiAgICB9LFxuICAgIGluQ2hlY2tlZFBhdGg6IGZ1bmN0aW9uIGluQ2hlY2tlZFBhdGgoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMuY29uZmlnLmNoZWNrU3RyaWN0bHkpIHJldHVybiBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXMucGFuZWwuY2hlY2tlZE5vZGVQYXRocy5zb21lKGZ1bmN0aW9uIChjaGVja2VkUGF0aCkge1xuICAgICAgICByZXR1cm4gX3RoaXMuaXNJblBhdGgoY2hlY2tlZFBhdGgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlLmdldFZhbHVlQnlPcHRpb24oKTtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUV4cGFuZDogZnVuY3Rpb24gaGFuZGxlRXhwYW5kKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBwYW5lbCA9IHRoaXMucGFuZWwsXG4gICAgICAgICAgbm9kZSA9IHRoaXMubm9kZSxcbiAgICAgICAgICBpc0Rpc2FibGVkID0gdGhpcy5pc0Rpc2FibGVkLFxuICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgdmFyIG11bHRpcGxlID0gY29uZmlnLm11bHRpcGxlLFxuICAgICAgICAgIGNoZWNrU3RyaWN0bHkgPSBjb25maWcuY2hlY2tTdHJpY3RseTtcblxuXG4gICAgICBpZiAoIWNoZWNrU3RyaWN0bHkgJiYgaXNEaXNhYmxlZCB8fCBub2RlLmxvYWRpbmcpIHJldHVybjtcblxuICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmICFub2RlLmxvYWRlZCkge1xuICAgICAgICBwYW5lbC5sYXp5TG9hZChub2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gZG8gbm90IHVzZSBjYWNoZWQgbGVhZiB2YWx1ZSBoZXJlLCBpbnZva2UgdGhpcy5pc0xlYWYgdG8gZ2V0IG5ldyB2YWx1ZS5cbiAgICAgICAgICB2YXIgaXNMZWFmID0gX3RoaXMyLmlzTGVhZjtcblxuXG4gICAgICAgICAgaWYgKCFpc0xlYWYpIF90aGlzMi5oYW5kbGVFeHBhbmQoKTtcbiAgICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIC8vIGlmIGxlYWYgc3luYyBjaGVja2VkIHN0YXRlLCBlbHNlIGNsZWFyIGNoZWNrZWQgc3RhdGVcbiAgICAgICAgICAgIHZhciBjaGVja2VkID0gaXNMZWFmID8gbm9kZS5jaGVja2VkIDogZmFsc2U7XG4gICAgICAgICAgICBfdGhpczIuaGFuZGxlTXVsdGlDaGVja0NoYW5nZShjaGVja2VkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFuZWwuaGFuZGxlRXhwYW5kKG5vZGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlQ2hlY2tDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoZWNrQ2hhbmdlKCkge1xuICAgICAgdmFyIHBhbmVsID0gdGhpcy5wYW5lbCxcbiAgICAgICAgICB2YWx1ZSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgbm9kZSA9IHRoaXMubm9kZTtcblxuICAgICAgcGFuZWwuaGFuZGxlQ2hlY2tDaGFuZ2UodmFsdWUpO1xuICAgICAgcGFuZWwuaGFuZGxlRXhwYW5kKG5vZGUpO1xuICAgIH0sXG4gICAgaGFuZGxlTXVsdGlDaGVja0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlTXVsdGlDaGVja0NoYW5nZShjaGVja2VkKSB7XG4gICAgICB0aGlzLm5vZGUuZG9DaGVjayhjaGVja2VkKTtcbiAgICAgIHRoaXMucGFuZWwuY2FsY3VsYXRlTXVsdGlDaGVja2VkVmFsdWUoKTtcbiAgICB9LFxuICAgIGlzSW5QYXRoOiBmdW5jdGlvbiBpc0luUGF0aChwYXRoTm9kZXMpIHtcbiAgICAgIHZhciBub2RlID0gdGhpcy5ub2RlO1xuXG4gICAgICB2YXIgc2VsZWN0ZWRQYXRoTm9kZSA9IHBhdGhOb2Rlc1tub2RlLmxldmVsIC0gMV0gfHwge307XG4gICAgICByZXR1cm4gc2VsZWN0ZWRQYXRoTm9kZS51aWQgPT09IG5vZGUudWlkO1xuICAgIH0sXG4gICAgcmVuZGVyUHJlZml4OiBmdW5jdGlvbiByZW5kZXJQcmVmaXgoaCkge1xuICAgICAgdmFyIGlzTGVhZiA9IHRoaXMuaXNMZWFmLFxuICAgICAgICAgIGlzQ2hlY2tlZCA9IHRoaXMuaXNDaGVja2VkLFxuICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgdmFyIGNoZWNrU3RyaWN0bHkgPSBjb25maWcuY2hlY2tTdHJpY3RseSxcbiAgICAgICAgICBtdWx0aXBsZSA9IGNvbmZpZy5tdWx0aXBsZTtcblxuXG4gICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ2hlY2tib3goaCk7XG4gICAgICB9IGVsc2UgaWYgKGNoZWNrU3RyaWN0bHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyUmFkaW8oaCk7XG4gICAgICB9IGVsc2UgaWYgKGlzTGVhZiAmJiBpc0NoZWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ2hlY2tJY29uKGgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIHJlbmRlclBvc3RmaXg6IGZ1bmN0aW9uIHJlbmRlclBvc3RmaXgoaCkge1xuICAgICAgdmFyIG5vZGUgPSB0aGlzLm5vZGUsXG4gICAgICAgICAgaXNMZWFmID0gdGhpcy5pc0xlYWY7XG5cblxuICAgICAgaWYgKG5vZGUubG9hZGluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJMb2FkaW5nSWNvbihoKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzTGVhZikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJFeHBhbmRJY29uKGgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIHJlbmRlckNoZWNrYm94OiBmdW5jdGlvbiByZW5kZXJDaGVja2JveChoKSB7XG4gICAgICB2YXIgbm9kZSA9IHRoaXMubm9kZSxcbiAgICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBpc0Rpc2FibGVkID0gdGhpcy5pc0Rpc2FibGVkO1xuXG4gICAgICB2YXIgZXZlbnRzID0ge1xuICAgICAgICBvbjogeyBjaGFuZ2U6IHRoaXMuaGFuZGxlTXVsdGlDaGVja0NoYW5nZSB9LFxuICAgICAgICBuYXRpdmVPbjoge31cbiAgICAgIH07XG5cbiAgICAgIGlmIChjb25maWcuY2hlY2tTdHJpY3RseSkge1xuICAgICAgICAvLyB3aGVuIGV2ZXJ5IG5vZGUgaXMgc2VsZWN0YWJsZSwgY2xpY2sgZXZlbnQgc2hvdWxkIG5vdCB0cmlnZ2VyIGV4cGFuZCBldmVudC5cbiAgICAgICAgZXZlbnRzLm5hdGl2ZU9uLmNsaWNrID0gc3RvcFByb3BhZ2F0aW9uO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaCgnZWwtY2hlY2tib3gnLCBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc19kZWZhdWx0KCkoW3tcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICB2YWx1ZTogbm9kZS5jaGVja2VkLFxuICAgICAgICAgIGluZGV0ZXJtaW5hdGU6IG5vZGUuaW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgICB9XG4gICAgICB9LCBldmVudHNdKSk7XG4gICAgfSxcbiAgICByZW5kZXJSYWRpbzogZnVuY3Rpb24gcmVuZGVyUmFkaW8oaCkge1xuICAgICAgdmFyIGNoZWNrZWRWYWx1ZSA9IHRoaXMuY2hlY2tlZFZhbHVlLFxuICAgICAgICAgIHZhbHVlID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICBpc0Rpc2FibGVkID0gdGhpcy5pc0Rpc2FibGVkO1xuXG4gICAgICAvLyB0byBrZWVwIHNhbWUgcmVmZXJlbmNlIGlmIHZhbHVlIGNhdXNlIHJhZGlvJ3MgY2hlY2tlZCBzdGF0ZSBpcyBjYWxjdWxhdGVkIGJ5IHJlZmVyZW5jZSBjb21wYXJpc2lvbjtcblxuICAgICAgaWYgKE9iamVjdCh1dGlsX1tcImlzRXF1YWxcIl0pKHZhbHVlLCBjaGVja2VkVmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gY2hlY2tlZFZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaChcbiAgICAgICAgJ2VsLXJhZGlvJyxcbiAgICAgICAge1xuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICB2YWx1ZTogY2hlY2tlZFZhbHVlLFxuICAgICAgICAgICAgbGFiZWw6IHZhbHVlLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAnY2hhbmdlJzogdGhpcy5oYW5kbGVDaGVja0NoYW5nZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmF0aXZlT246IHtcbiAgICAgICAgICAgICdjbGljayc6IHN0b3BQcm9wYWdhdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW2goJ3NwYW4nKV1cbiAgICAgICk7XG4gICAgfSxcbiAgICByZW5kZXJDaGVja0ljb246IGZ1bmN0aW9uIHJlbmRlckNoZWNrSWNvbihoKSB7XG4gICAgICByZXR1cm4gaCgnaScsIHsgJ2NsYXNzJzogJ2VsLWljb24tY2hlY2sgZWwtY2FzY2FkZXItbm9kZV9fcHJlZml4JyB9KTtcbiAgICB9LFxuICAgIHJlbmRlckxvYWRpbmdJY29uOiBmdW5jdGlvbiByZW5kZXJMb2FkaW5nSWNvbihoKSB7XG4gICAgICByZXR1cm4gaCgnaScsIHsgJ2NsYXNzJzogJ2VsLWljb24tbG9hZGluZyBlbC1jYXNjYWRlci1ub2RlX19wb3N0Zml4JyB9KTtcbiAgICB9LFxuICAgIHJlbmRlckV4cGFuZEljb246IGZ1bmN0aW9uIHJlbmRlckV4cGFuZEljb24oaCkge1xuICAgICAgcmV0dXJuIGgoJ2knLCB7ICdjbGFzcyc6ICdlbC1pY29uLWFycm93LXJpZ2h0IGVsLWNhc2NhZGVyLW5vZGVfX3Bvc3RmaXgnIH0pO1xuICAgIH0sXG4gICAgcmVuZGVyQ29udGVudDogZnVuY3Rpb24gcmVuZGVyQ29udGVudChoKSB7XG4gICAgICB2YXIgcGFuZWwgPSB0aGlzLnBhbmVsLFxuICAgICAgICAgIG5vZGUgPSB0aGlzLm5vZGU7XG5cbiAgICAgIHZhciByZW5kZXIgPSBwYW5lbC5yZW5kZXJMYWJlbEZuO1xuICAgICAgdmFyIHZub2RlID0gcmVuZGVyID8gcmVuZGVyKHsgbm9kZTogbm9kZSwgZGF0YTogbm9kZS5kYXRhIH0pIDogbnVsbDtcblxuICAgICAgcmV0dXJuIGgoXG4gICAgICAgICdzcGFuJyxcbiAgICAgICAgeyAnY2xhc3MnOiAnZWwtY2FzY2FkZXItbm9kZV9fbGFiZWwnIH0sXG4gICAgICAgIFt2bm9kZSB8fCBub2RlLmxhYmVsXVxuICAgICAgKTtcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdmFyIGluQWN0aXZlUGF0aCA9IHRoaXMuaW5BY3RpdmVQYXRoLFxuICAgICAgICBpbkNoZWNrZWRQYXRoID0gdGhpcy5pbkNoZWNrZWRQYXRoLFxuICAgICAgICBpc0NoZWNrZWQgPSB0aGlzLmlzQ2hlY2tlZCxcbiAgICAgICAgaXNMZWFmID0gdGhpcy5pc0xlYWYsXG4gICAgICAgIGlzRGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQsXG4gICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLFxuICAgICAgICBub2RlSWQgPSB0aGlzLm5vZGVJZDtcbiAgICB2YXIgZXhwYW5kVHJpZ2dlciA9IGNvbmZpZy5leHBhbmRUcmlnZ2VyLFxuICAgICAgICBjaGVja1N0cmljdGx5ID0gY29uZmlnLmNoZWNrU3RyaWN0bHksXG4gICAgICAgIG11bHRpcGxlID0gY29uZmlnLm11bHRpcGxlO1xuXG4gICAgdmFyIGRpc2FibGVkID0gIWNoZWNrU3RyaWN0bHkgJiYgaXNEaXNhYmxlZDtcbiAgICB2YXIgZXZlbnRzID0geyBvbjoge30gfTtcblxuICAgIGlmIChleHBhbmRUcmlnZ2VyID09PSAnY2xpY2snKSB7XG4gICAgICBldmVudHMub24uY2xpY2sgPSB0aGlzLmhhbmRsZUV4cGFuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgZXZlbnRzLm9uLm1vdXNlZW50ZXIgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBfdGhpczMuaGFuZGxlRXhwYW5kKCk7XG4gICAgICAgIF90aGlzMy4kZW1pdCgnZXhwYW5kJywgZSk7XG4gICAgICB9O1xuICAgICAgZXZlbnRzLm9uLmZvY3VzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgX3RoaXMzLmhhbmRsZUV4cGFuZCgpO1xuICAgICAgICBfdGhpczMuJGVtaXQoJ2V4cGFuZCcsIGUpO1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGlzTGVhZiAmJiAhaXNEaXNhYmxlZCAmJiAhY2hlY2tTdHJpY3RseSAmJiAhbXVsdGlwbGUpIHtcbiAgICAgIGV2ZW50cy5vbi5jbGljayA9IHRoaXMuaGFuZGxlQ2hlY2tDaGFuZ2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoXG4gICAgICAnbGknLFxuICAgICAgZXh0ZXJuYWxfYmFiZWxfaGVscGVyX3Z1ZV9qc3hfbWVyZ2VfcHJvcHNfZGVmYXVsdCgpKFt7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgcm9sZTogJ21lbnVpdGVtJyxcbiAgICAgICAgICBpZDogbm9kZUlkLFxuICAgICAgICAgICdhcmlhLWV4cGFuZGVkJzogaW5BY3RpdmVQYXRoLFxuICAgICAgICAgIHRhYmluZGV4OiBkaXNhYmxlZCA/IG51bGwgOiAtMVxuICAgICAgICB9LFxuICAgICAgICAnY2xhc3MnOiB7XG4gICAgICAgICAgJ2VsLWNhc2NhZGVyLW5vZGUnOiB0cnVlLFxuICAgICAgICAgICdpcy1zZWxlY3RhYmxlJzogY2hlY2tTdHJpY3RseSxcbiAgICAgICAgICAnaW4tYWN0aXZlLXBhdGgnOiBpbkFjdGl2ZVBhdGgsXG4gICAgICAgICAgJ2luLWNoZWNrZWQtcGF0aCc6IGluQ2hlY2tlZFBhdGgsXG4gICAgICAgICAgJ2lzLWFjdGl2ZSc6IGlzQ2hlY2tlZCxcbiAgICAgICAgICAnaXMtZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgICAgICB9XG4gICAgICB9LCBldmVudHNdKSxcbiAgICAgIFt0aGlzLnJlbmRlclByZWZpeChoKSwgdGhpcy5yZW5kZXJDb250ZW50KGgpLCB0aGlzLnJlbmRlclBvc3RmaXgoaCldXG4gICAgKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1ub2RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfY2FzY2FkZXJfbm9kZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChjYXNjYWRlcl9ub2RldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1xudmFyIGNvbXBvbmVudE5vcm1hbGl6ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1ub2RlLnZ1ZVxudmFyIGNhc2NhZGVyX25vZGVfcmVuZGVyLCBjYXNjYWRlcl9ub2RlX3N0YXRpY1JlbmRlckZuc1xuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBjb21wb25lbnQgPSBPYmplY3QoY29tcG9uZW50Tm9ybWFsaXplcltcImFcIiAvKiBkZWZhdWx0ICovXSkoXG4gIHNyY19jYXNjYWRlcl9ub2RldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBjYXNjYWRlcl9ub2RlX3JlbmRlcixcbiAgY2FzY2FkZXJfbm9kZV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGFwaTsgfVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItbm9kZS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2FzY2FkZXJfbm9kZSA9IChjb21wb25lbnQuZXhwb3J0cyk7XG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2xvY2FsZVwiXG52YXIgbG9jYWxlXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG52YXIgbG9jYWxlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGxvY2FsZV8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItbWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNhc2NhZGVyX21lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxDYXNjYWRlck1lbnUnLFxuXG4gIG1peGluczogW2xvY2FsZV9kZWZhdWx0LmFdLFxuXG4gIGluamVjdDogWydwYW5lbCddLFxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBFbFNjcm9sbGJhcjogc2Nyb2xsYmFyX2RlZmF1bHQuYSxcbiAgICBDYXNjYWRlck5vZGU6IGNhc2NhZGVyX25vZGVcbiAgfSxcblxuICBwcm9wczoge1xuICAgIG5vZGVzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICBpbmRleDogTnVtYmVyXG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlTm9kZTogbnVsbCxcbiAgICAgIGhvdmVyVGltZXI6IG51bGwsXG4gICAgICBpZDogT2JqZWN0KHV0aWxfW1wiZ2VuZXJhdGVJZFwiXSkoKVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGlzRW1wdHk6IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gICAgICByZXR1cm4gIXRoaXMubm9kZXMubGVuZ3RoO1xuICAgIH0sXG4gICAgbWVudUlkOiBmdW5jdGlvbiBtZW51SWQoKSB7XG4gICAgICByZXR1cm4gJ2Nhc2NhZGVyLW1lbnUtJyArIHRoaXMuaWQgKyAnLScgKyB0aGlzLmluZGV4O1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlRXhwYW5kOiBmdW5jdGlvbiBoYW5kbGVFeHBhbmQoZSkge1xuICAgICAgdGhpcy5hY3RpdmVOb2RlID0gZS50YXJnZXQ7XG4gICAgfSxcbiAgICBoYW5kbGVNb3VzZU1vdmU6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShlKSB7XG4gICAgICB2YXIgYWN0aXZlTm9kZSA9IHRoaXMuYWN0aXZlTm9kZSxcbiAgICAgICAgICBob3ZlclRpbWVyID0gdGhpcy5ob3ZlclRpbWVyO1xuICAgICAgdmFyIGhvdmVyWm9uZSA9IHRoaXMuJHJlZnMuaG92ZXJab25lO1xuXG5cbiAgICAgIGlmICghYWN0aXZlTm9kZSB8fCAhaG92ZXJab25lKSByZXR1cm47XG5cbiAgICAgIGlmIChhY3RpdmVOb2RlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICBjbGVhclRpbWVvdXQoaG92ZXJUaW1lcik7XG5cbiAgICAgICAgdmFyIF8kZWwkZ2V0Qm91bmRpbmdDbGllbiA9IHRoaXMuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgICAgbGVmdCA9IF8kZWwkZ2V0Qm91bmRpbmdDbGllbi5sZWZ0O1xuXG4gICAgICAgIHZhciBzdGFydFggPSBlLmNsaWVudFggLSBsZWZ0O1xuICAgICAgICB2YXIgXyRlbCA9IHRoaXMuJGVsLFxuICAgICAgICAgICAgb2Zmc2V0V2lkdGggPSBfJGVsLm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgb2Zmc2V0SGVpZ2h0ID0gXyRlbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgdmFyIHRvcCA9IGFjdGl2ZU5vZGUub2Zmc2V0VG9wO1xuICAgICAgICB2YXIgYm90dG9tID0gdG9wICsgYWN0aXZlTm9kZS5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgaG92ZXJab25lLmlubmVySFRNTCA9ICdcXG4gICAgICAgICAgPHBhdGggc3R5bGU9XCJwb2ludGVyLWV2ZW50czogYXV0bztcIiBmaWxsPVwidHJhbnNwYXJlbnRcIiBkPVwiTScgKyBzdGFydFggKyAnICcgKyB0b3AgKyAnIEwnICsgb2Zmc2V0V2lkdGggKyAnIDAgVicgKyB0b3AgKyAnIFpcIiAvPlxcbiAgICAgICAgICA8cGF0aCBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBhdXRvO1wiIGZpbGw9XCJ0cmFuc3BhcmVudFwiIGQ9XCJNJyArIHN0YXJ0WCArICcgJyArIGJvdHRvbSArICcgTCcgKyBvZmZzZXRXaWR0aCArICcgJyArIG9mZnNldEhlaWdodCArICcgVicgKyBib3R0b20gKyAnIFpcIiAvPlxcbiAgICAgICAgJztcbiAgICAgIH0gZWxzZSBpZiAoIWhvdmVyVGltZXIpIHtcbiAgICAgICAgdGhpcy5ob3ZlclRpbWVyID0gc2V0VGltZW91dCh0aGlzLmNsZWFySG92ZXJab25lLCB0aGlzLnBhbmVsLmNvbmZpZy5ob3ZlclRocmVzaG9sZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGVhckhvdmVyWm9uZTogZnVuY3Rpb24gY2xlYXJIb3ZlclpvbmUoKSB7XG4gICAgICB2YXIgaG92ZXJab25lID0gdGhpcy4kcmVmcy5ob3ZlclpvbmU7XG5cbiAgICAgIGlmICghaG92ZXJab25lKSByZXR1cm47XG4gICAgICBob3ZlclpvbmUuaW5uZXJIVE1MID0gJyc7XG4gICAgfSxcbiAgICByZW5kZXJFbXB0eVRleHQ6IGZ1bmN0aW9uIHJlbmRlckVtcHR5VGV4dChoKSB7XG4gICAgICByZXR1cm4gaChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHsgJ2NsYXNzJzogJ2VsLWNhc2NhZGVyLW1lbnVfX2VtcHR5LXRleHQnIH0sXG4gICAgICAgIFt0aGlzLnQoJ2VsLmNhc2NhZGVyLm5vRGF0YScpXVxuICAgICAgKTtcbiAgICB9LFxuICAgIHJlbmRlck5vZGVMaXN0OiBmdW5jdGlvbiByZW5kZXJOb2RlTGlzdChoKSB7XG4gICAgICB2YXIgbWVudUlkID0gdGhpcy5tZW51SWQ7XG4gICAgICB2YXIgaXNIb3Zlck1lbnUgPSB0aGlzLnBhbmVsLmlzSG92ZXJNZW51O1xuXG4gICAgICB2YXIgZXZlbnRzID0geyBvbjoge30gfTtcblxuICAgICAgaWYgKGlzSG92ZXJNZW51KSB7XG4gICAgICAgIGV2ZW50cy5vbi5leHBhbmQgPSB0aGlzLmhhbmRsZUV4cGFuZDtcbiAgICAgIH1cblxuICAgICAgdmFyIG5vZGVzID0gdGhpcy5ub2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUsIGluZGV4KSB7XG4gICAgICAgIHZhciBoYXNDaGlsZHJlbiA9IG5vZGUuaGFzQ2hpbGRyZW47XG5cbiAgICAgICAgcmV0dXJuIGgoJ2Nhc2NhZGVyLW5vZGUnLCBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc19kZWZhdWx0KCkoW3tcbiAgICAgICAgICBrZXk6IG5vZGUudWlkLFxuICAgICAgICAgIGF0dHJzOiB7IG5vZGU6IG5vZGUsXG4gICAgICAgICAgICAnbm9kZS1pZCc6IG1lbnVJZCArICctJyArIGluZGV4LFxuICAgICAgICAgICAgJ2FyaWEtaGFzcG9wdXAnOiBoYXNDaGlsZHJlbixcbiAgICAgICAgICAgICdhcmlhLW93bnMnOiBoYXNDaGlsZHJlbiA/IG1lbnVJZCA6IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH0sIGV2ZW50c10pKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gW10uY29uY2F0KG5vZGVzLCBbaXNIb3Zlck1lbnUgPyBoKCdzdmcnLCB7IHJlZjogJ2hvdmVyWm9uZScsICdjbGFzcyc6ICdlbC1jYXNjYWRlci1tZW51X19ob3Zlci16b25lJyB9KSA6IG51bGxdKTtcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBpc0VtcHR5ID0gdGhpcy5pc0VtcHR5LFxuICAgICAgICBtZW51SWQgPSB0aGlzLm1lbnVJZDtcblxuICAgIHZhciBldmVudHMgPSB7IG5hdGl2ZU9uOiB7fSB9O1xuXG4gICAgLy8gb3B0aW1pemUgaG92ZXIgdG8gZXhwYW5kIGV4cGVyaWVuY2UgKCM4MDEwKVxuICAgIGlmICh0aGlzLnBhbmVsLmlzSG92ZXJNZW51KSB7XG4gICAgICBldmVudHMubmF0aXZlT24ubW91c2Vtb3ZlID0gdGhpcy5oYW5kbGVNb3VzZU1vdmU7XG4gICAgICAvLyBldmVudHMubmF0aXZlT24ubW91c2VsZWF2ZSA9IHRoaXMuY2xlYXJIb3ZlclpvbmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoXG4gICAgICAnZWwtc2Nyb2xsYmFyJyxcbiAgICAgIGV4dGVybmFsX2JhYmVsX2hlbHBlcl92dWVfanN4X21lcmdlX3Byb3BzX2RlZmF1bHQoKShbe1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHRhZzogJ3VsJyxcbiAgICAgICAgICByb2xlOiAnbWVudScsXG4gICAgICAgICAgaWQ6IG1lbnVJZCxcblxuICAgICAgICAgICd3cmFwLWNsYXNzJzogJ2VsLWNhc2NhZGVyLW1lbnVfX3dyYXAnLFxuICAgICAgICAgICd2aWV3LWNsYXNzJzoge1xuICAgICAgICAgICAgJ2VsLWNhc2NhZGVyLW1lbnVfX2xpc3QnOiB0cnVlLFxuICAgICAgICAgICAgJ2lzLWVtcHR5JzogaXNFbXB0eVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ2NsYXNzJzogJ2VsLWNhc2NhZGVyLW1lbnUnIH0sIGV2ZW50c10pLFxuICAgICAgW2lzRW1wdHkgPyB0aGlzLnJlbmRlckVtcHR5VGV4dChoKSA6IHRoaXMucmVuZGVyTm9kZUxpc3QoaCldXG4gICAgKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1tZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfY2FzY2FkZXJfbWVudXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChjYXNjYWRlcl9tZW51dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1tZW51LnZ1ZVxudmFyIGNhc2NhZGVyX21lbnVfcmVuZGVyLCBjYXNjYWRlcl9tZW51X3N0YXRpY1JlbmRlckZuc1xuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBjYXNjYWRlcl9tZW51X2NvbXBvbmVudCA9IE9iamVjdChjb21wb25lbnROb3JtYWxpemVyW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShcbiAgc3JjX2Nhc2NhZGVyX21lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGNhc2NhZGVyX21lbnVfcmVuZGVyLFxuICBjYXNjYWRlcl9tZW51X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgY2FzY2FkZXJfbWVudV9hcGk7IH1cbmNhc2NhZGVyX21lbnVfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItbWVudS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2FzY2FkZXJfbWVudSA9IChjYXNjYWRlcl9tZW51X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi91dGlscy9zaGFyZWRcIlxudmFyIHNoYXJlZF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvbm9kZS5qc1xudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuXG5cblxudmFyIHVpZCA9IDA7XG5cbnZhciBub2RlX05vZGUgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoZGF0YSwgY29uZmlnLCBwYXJlbnROb2RlKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE5vZGUpO1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudE5vZGUgfHwgbnVsbDtcbiAgICB0aGlzLmxldmVsID0gIXRoaXMucGFyZW50ID8gMSA6IHRoaXMucGFyZW50LmxldmVsICsgMTtcbiAgICB0aGlzLnVpZCA9IHVpZCsrO1xuXG4gICAgdGhpcy5pbml0U3RhdGUoKTtcbiAgICB0aGlzLmluaXRDaGlsZHJlbigpO1xuICB9XG5cbiAgTm9kZS5wcm90b3R5cGUuaW5pdFN0YXRlID0gZnVuY3Rpb24gaW5pdFN0YXRlKCkge1xuICAgIHZhciBfY29uZmlnID0gdGhpcy5jb25maWcsXG4gICAgICAgIHZhbHVlS2V5ID0gX2NvbmZpZy52YWx1ZSxcbiAgICAgICAgbGFiZWxLZXkgPSBfY29uZmlnLmxhYmVsO1xuXG5cbiAgICB0aGlzLnZhbHVlID0gdGhpcy5kYXRhW3ZhbHVlS2V5XTtcbiAgICB0aGlzLmxhYmVsID0gdGhpcy5kYXRhW2xhYmVsS2V5XTtcbiAgICB0aGlzLnBhdGhOb2RlcyA9IHRoaXMuY2FsY3VsYXRlUGF0aE5vZGVzKCk7XG4gICAgdGhpcy5wYXRoID0gdGhpcy5wYXRoTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnBhdGhMYWJlbHMgPSB0aGlzLnBhdGhOb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmxhYmVsO1xuICAgIH0pO1xuXG4gICAgLy8gbGF6eSBsb2FkXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkZWQgPSBmYWxzZTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5pbml0Q2hpbGRyZW4gPSBmdW5jdGlvbiBpbml0Q2hpbGRyZW4oKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjb25maWcgPSB0aGlzLmNvbmZpZztcblxuICAgIHZhciBjaGlsZHJlbktleSA9IGNvbmZpZy5jaGlsZHJlbjtcbiAgICB2YXIgY2hpbGRyZW5EYXRhID0gdGhpcy5kYXRhW2NoaWxkcmVuS2V5XTtcbiAgICB0aGlzLmhhc0NoaWxkcmVuID0gQXJyYXkuaXNBcnJheShjaGlsZHJlbkRhdGEpO1xuICAgIHRoaXMuY2hpbGRyZW4gPSAoY2hpbGRyZW5EYXRhIHx8IFtdKS5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICByZXR1cm4gbmV3IE5vZGUoY2hpbGQsIGNvbmZpZywgX3RoaXMpO1xuICAgIH0pO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmNhbGN1bGF0ZVBhdGhOb2RlcyA9IGZ1bmN0aW9uIGNhbGN1bGF0ZVBhdGhOb2RlcygpIHtcbiAgICB2YXIgbm9kZXMgPSBbdGhpc107XG4gICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50O1xuXG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgbm9kZXMudW5zaGlmdChwYXJlbnQpO1xuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uIGdldFBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aDtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uIGdldFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmdldFZhbHVlQnlPcHRpb24gPSBmdW5jdGlvbiBnZXRWYWx1ZUJ5T3B0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5lbWl0UGF0aCA/IHRoaXMuZ2V0UGF0aCgpIDogdGhpcy5nZXRWYWx1ZSgpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmdldFRleHQgPSBmdW5jdGlvbiBnZXRUZXh0KGFsbExldmVscywgc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIGFsbExldmVscyA/IHRoaXMucGF0aExhYmVscy5qb2luKHNlcGFyYXRvcikgOiB0aGlzLmxhYmVsO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmlzU2FtZU5vZGUgPSBmdW5jdGlvbiBpc1NhbWVOb2RlKGNoZWNrZWRWYWx1ZSkge1xuICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVCeU9wdGlvbigpO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KGNoZWNrZWRWYWx1ZSkgPyBjaGVja2VkVmFsdWUuc29tZShmdW5jdGlvbiAodmFsKSB7XG4gICAgICByZXR1cm4gT2JqZWN0KHV0aWxfW1wiaXNFcXVhbFwiXSkodmFsLCB2YWx1ZSk7XG4gICAgfSkgOiBPYmplY3QodXRpbF9bXCJpc0VxdWFsXCJdKShjaGVja2VkVmFsdWUsIHZhbHVlKTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5icm9hZGNhc3QgPSBmdW5jdGlvbiBicm9hZGNhc3QoZXZlbnQpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBoYW5kbGVyTmFtZSA9ICdvblBhcmVudCcgKyBPYmplY3QodXRpbF9bXCJjYXBpdGFsaXplXCJdKShldmVudCk7XG5cbiAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgLy8gYm90dG9tIHVwXG4gICAgICAgIGNoaWxkLmJyb2FkY2FzdC5hcHBseShjaGlsZCwgW2V2ZW50XS5jb25jYXQoYXJncykpO1xuICAgICAgICBjaGlsZFtoYW5kbGVyTmFtZV0gJiYgY2hpbGRbaGFuZGxlck5hbWVdLmFwcGx5KGNoaWxkLCBhcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudDtcblxuICAgIHZhciBoYW5kbGVyTmFtZSA9ICdvbkNoaWxkJyArIE9iamVjdCh1dGlsX1tcImNhcGl0YWxpemVcIl0pKGV2ZW50KTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIHBhcmVudFtoYW5kbGVyTmFtZV0gJiYgcGFyZW50W2hhbmRsZXJOYW1lXS5hcHBseShwYXJlbnQsIGFyZ3MpO1xuICAgICAgcGFyZW50LmVtaXQuYXBwbHkocGFyZW50LCBbZXZlbnRdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLm9uUGFyZW50Q2hlY2sgPSBmdW5jdGlvbiBvblBhcmVudENoZWNrKGNoZWNrZWQpIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZXRDaGVja1N0YXRlKGNoZWNrZWQpO1xuICAgIH1cbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5vbkNoaWxkQ2hlY2sgPSBmdW5jdGlvbiBvbkNoaWxkQ2hlY2soKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcblxuICAgIHZhciB2YWxpZENoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgcmV0dXJuICFjaGlsZC5pc0Rpc2FibGVkO1xuICAgIH0pO1xuICAgIHZhciBjaGVja2VkID0gdmFsaWRDaGlsZHJlbi5sZW5ndGggPyB2YWxpZENoaWxkcmVuLmV2ZXJ5KGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgcmV0dXJuIGNoaWxkLmNoZWNrZWQ7XG4gICAgfSkgOiBmYWxzZTtcblxuICAgIHRoaXMuc2V0Q2hlY2tTdGF0ZShjaGVja2VkKTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5zZXRDaGVja1N0YXRlID0gZnVuY3Rpb24gc2V0Q2hlY2tTdGF0ZShjaGVja2VkKSB7XG4gICAgdmFyIHRvdGFsTnVtID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gICAgdmFyIGNoZWNrZWROdW0gPSB0aGlzLmNoaWxkcmVuLnJlZHVjZShmdW5jdGlvbiAoYywgcCkge1xuICAgICAgdmFyIG51bSA9IHAuY2hlY2tlZCA/IDEgOiBwLmluZGV0ZXJtaW5hdGUgPyAwLjUgOiAwO1xuICAgICAgcmV0dXJuIGMgKyBudW07XG4gICAgfSwgMCk7XG5cbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGNoZWNrZWROdW0gIT09IHRvdGFsTnVtICYmIGNoZWNrZWROdW0gPiAwO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnN5bmNDaGVja1N0YXRlID0gZnVuY3Rpb24gc3luY0NoZWNrU3RhdGUoY2hlY2tlZFZhbHVlKSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5nZXRWYWx1ZUJ5T3B0aW9uKCk7XG4gICAgdmFyIGNoZWNrZWQgPSB0aGlzLmlzU2FtZU5vZGUoY2hlY2tlZFZhbHVlLCB2YWx1ZSk7XG5cbiAgICB0aGlzLmRvQ2hlY2soY2hlY2tlZCk7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuZG9DaGVjayA9IGZ1bmN0aW9uIGRvQ2hlY2soY2hlY2tlZCkge1xuICAgIGlmICh0aGlzLmNoZWNrZWQgIT09IGNoZWNrZWQpIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5jaGVja1N0cmljdGx5KSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IGNoZWNrZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBib3R0b20gdXAgdG8gdW5pZnkgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBpbmRldGVybWluYXRlIHN0YXRlXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdjaGVjaycsIGNoZWNrZWQpO1xuICAgICAgICB0aGlzLnNldENoZWNrU3RhdGUoY2hlY2tlZCk7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hlY2snKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgX2NyZWF0ZUNsYXNzKE5vZGUsIFt7XG4gICAga2V5OiAnaXNEaXNhYmxlZCcsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSxcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzLnBhcmVudCxcbiAgICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZztcblxuICAgICAgdmFyIGRpc2FibGVkS2V5ID0gY29uZmlnLmRpc2FibGVkO1xuICAgICAgdmFyIGNoZWNrU3RyaWN0bHkgPSBjb25maWcuY2hlY2tTdHJpY3RseTtcblxuICAgICAgcmV0dXJuIGRhdGFbZGlzYWJsZWRLZXldIHx8ICFjaGVja1N0cmljdGx5ICYmIHBhcmVudCAmJiBwYXJlbnQuaXNEaXNhYmxlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdpc0xlYWYnLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEsXG4gICAgICAgICAgbG9hZGVkID0gdGhpcy5sb2FkZWQsXG4gICAgICAgICAgaGFzQ2hpbGRyZW4gPSB0aGlzLmhhc0NoaWxkcmVuLFxuICAgICAgICAgIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICAgIHZhciBfY29uZmlnMiA9IHRoaXMuY29uZmlnLFxuICAgICAgICAgIGxhenkgPSBfY29uZmlnMi5sYXp5LFxuICAgICAgICAgIGxlYWZLZXkgPSBfY29uZmlnMi5sZWFmO1xuXG4gICAgICBpZiAobGF6eSkge1xuICAgICAgICB2YXIgaXNMZWFmID0gT2JqZWN0KHNoYXJlZF9bXCJpc0RlZlwiXSkoZGF0YVtsZWFmS2V5XSkgPyBkYXRhW2xlYWZLZXldIDogbG9hZGVkID8gIWNoaWxkcmVuLmxlbmd0aCA6IGZhbHNlO1xuICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gIWlzTGVhZjtcbiAgICAgICAgcmV0dXJuIGlzTGVhZjtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhaGFzQ2hpbGRyZW47XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE5vZGU7XG59KCk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19ub2RlID0gKG5vZGVfTm9kZSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9zdG9yZS5qc1xuZnVuY3Rpb24gc3RvcmVfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5cblxuXG52YXIgZmxhdE5vZGVzID0gZnVuY3Rpb24gZmxhdE5vZGVzKGRhdGEsIGxlYWZPbmx5KSB7XG4gIHJldHVybiBkYXRhLnJlZHVjZShmdW5jdGlvbiAocmVzLCBub2RlKSB7XG4gICAgaWYgKG5vZGUuaXNMZWFmKSB7XG4gICAgICByZXMucHVzaChub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgIWxlYWZPbmx5ICYmIHJlcy5wdXNoKG5vZGUpO1xuICAgICAgcmVzID0gcmVzLmNvbmNhdChmbGF0Tm9kZXMobm9kZS5jaGlsZHJlbiwgbGVhZk9ubHkpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfSwgW10pO1xufTtcblxudmFyIHN0b3JlX1N0b3JlID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdG9yZShkYXRhLCBjb25maWcpIHtcbiAgICBzdG9yZV9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdG9yZSk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmluaXROb2RlcyhkYXRhKTtcbiAgfVxuXG4gIFN0b3JlLnByb3RvdHlwZS5pbml0Tm9kZXMgPSBmdW5jdGlvbiBpbml0Tm9kZXMoZGF0YSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBkYXRhID0gT2JqZWN0KHV0aWxfW1wiY29lcmNlVHJ1dGh5VmFsdWVUb0FycmF5XCJdKShkYXRhKTtcbiAgICB0aGlzLm5vZGVzID0gZGF0YS5tYXAoZnVuY3Rpb24gKG5vZGVEYXRhKSB7XG4gICAgICByZXR1cm4gbmV3IHNyY19ub2RlKG5vZGVEYXRhLCBfdGhpcy5jb25maWcpO1xuICAgIH0pO1xuICAgIHRoaXMuZmxhdHRlZE5vZGVzID0gdGhpcy5nZXRGbGF0dGVkTm9kZXMoZmFsc2UsIGZhbHNlKTtcbiAgICB0aGlzLmxlYWZOb2RlcyA9IHRoaXMuZ2V0RmxhdHRlZE5vZGVzKHRydWUsIGZhbHNlKTtcbiAgfTtcblxuICBTdG9yZS5wcm90b3R5cGUuYXBwZW5kTm9kZSA9IGZ1bmN0aW9uIGFwcGVuZE5vZGUobm9kZURhdGEsIHBhcmVudE5vZGUpIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBzcmNfbm9kZShub2RlRGF0YSwgdGhpcy5jb25maWcsIHBhcmVudE5vZGUpO1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudE5vZGUgPyBwYXJlbnROb2RlLmNoaWxkcmVuIDogdGhpcy5ub2RlcztcblxuICAgIGNoaWxkcmVuLnB1c2gobm9kZSk7XG4gIH07XG5cbiAgU3RvcmUucHJvdG90eXBlLmFwcGVuZE5vZGVzID0gZnVuY3Rpb24gYXBwZW5kTm9kZXMobm9kZURhdGFMaXN0LCBwYXJlbnROb2RlKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICBub2RlRGF0YUxpc3QgPSBPYmplY3QodXRpbF9bXCJjb2VyY2VUcnV0aHlWYWx1ZVRvQXJyYXlcIl0pKG5vZGVEYXRhTGlzdCk7XG4gICAgbm9kZURhdGFMaXN0LmZvckVhY2goZnVuY3Rpb24gKG5vZGVEYXRhKSB7XG4gICAgICByZXR1cm4gX3RoaXMyLmFwcGVuZE5vZGUobm9kZURhdGEsIHBhcmVudE5vZGUpO1xuICAgIH0pO1xuICB9O1xuXG4gIFN0b3JlLnByb3RvdHlwZS5nZXROb2RlcyA9IGZ1bmN0aW9uIGdldE5vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzO1xuICB9O1xuXG4gIFN0b3JlLnByb3RvdHlwZS5nZXRGbGF0dGVkTm9kZXMgPSBmdW5jdGlvbiBnZXRGbGF0dGVkTm9kZXMobGVhZk9ubHkpIHtcbiAgICB2YXIgY2FjaGVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuXG4gICAgdmFyIGNhY2hlZE5vZGVzID0gbGVhZk9ubHkgPyB0aGlzLmxlYWZOb2RlcyA6IHRoaXMuZmxhdHRlZE5vZGVzO1xuICAgIHJldHVybiBjYWNoZWQgPyBjYWNoZWROb2RlcyA6IGZsYXROb2Rlcyh0aGlzLm5vZGVzLCBsZWFmT25seSk7XG4gIH07XG5cbiAgU3RvcmUucHJvdG90eXBlLmdldE5vZGVCeVZhbHVlID0gZnVuY3Rpb24gZ2V0Tm9kZUJ5VmFsdWUodmFsdWUpIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLmdldEZsYXR0ZWROb2RlcyhmYWxzZSwgIXRoaXMuY29uZmlnLmxhenkpLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcInZhbHVlRXF1YWxzXCJdKShub2RlLnBhdGgsIHZhbHVlKSB8fCBub2RlLnZhbHVlID09PSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXMgJiYgbm9kZXMubGVuZ3RoID8gbm9kZXNbMF0gOiBudWxsO1xuICB9O1xuXG4gIHJldHVybiBTdG9yZTtcbn0oKTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3N0b3JlID0gKHN0b3JlX1N0b3JlKTtcbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi91dGlscy9tZXJnZVwiXG52YXIgbWVyZ2VfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcbnZhciBtZXJnZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihtZXJnZV8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvYXJpYS11dGlsc1wiXG52YXIgYXJpYV91dGlsc18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTtcbnZhciBhcmlhX3V0aWxzX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGFyaWFfdXRpbHNfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3Njcm9sbC1pbnRvLXZpZXdcIlxudmFyIHNjcm9sbF9pbnRvX3ZpZXdfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG52YXIgc2Nyb2xsX2ludG9fdmlld19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihzY3JvbGxfaW50b192aWV3Xyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cbnZhciBLZXlDb2RlID0gYXJpYV91dGlsc19kZWZhdWx0LmEua2V5cztcblxudmFyIERlZmF1bHRQcm9wcyA9IHtcbiAgZXhwYW5kVHJpZ2dlcjogJ2NsaWNrJywgLy8gb3IgaG92ZXJcbiAgbXVsdGlwbGU6IGZhbHNlLFxuICBjaGVja1N0cmljdGx5OiBmYWxzZSwgLy8gd2hldGhlciBhbGwgbm9kZXMgY2FuIGJlIHNlbGVjdGVkXG4gIGVtaXRQYXRoOiB0cnVlLCAvLyB3ZXRoZXIgdG8gZW1pdCBhbiBhcnJheSBvZiBhbGwgbGV2ZWxzIHZhbHVlIGluIHdoaWNoIG5vZGUgaXMgbG9jYXRlZFxuICBsYXp5OiBmYWxzZSxcbiAgbGF6eUxvYWQ6IHV0aWxfW1wibm9vcFwiXSxcbiAgdmFsdWU6ICd2YWx1ZScsXG4gIGxhYmVsOiAnbGFiZWwnLFxuICBjaGlsZHJlbjogJ2NoaWxkcmVuJyxcbiAgbGVhZjogJ2xlYWYnLFxuICBkaXNhYmxlZDogJ2Rpc2FibGVkJyxcbiAgaG92ZXJUaHJlc2hvbGQ6IDUwMFxufTtcblxudmFyIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfaXNMZWFmID0gZnVuY3Rpb24gaXNMZWFmKGVsKSB7XG4gIHJldHVybiAhZWwuZ2V0QXR0cmlidXRlKCdhcmlhLW93bnMnKTtcbn07XG5cbnZhciBnZXRTaWJsaW5nID0gZnVuY3Rpb24gZ2V0U2libGluZyhlbCwgZGlzdGFuY2UpIHtcbiAgdmFyIHBhcmVudE5vZGUgPSBlbC5wYXJlbnROb2RlO1xuXG4gIGlmIChwYXJlbnROb2RlKSB7XG4gICAgdmFyIHNpYmxpbmdzID0gcGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKCcuZWwtY2FzY2FkZXItbm9kZVt0YWJpbmRleD1cIi0xXCJdJyk7XG4gICAgdmFyIGluZGV4ID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChzaWJsaW5ncywgZWwpO1xuICAgIHJldHVybiBzaWJsaW5nc1tpbmRleCArIGRpc3RhbmNlXSB8fCBudWxsO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIGdldE1lbnVJbmRleCA9IGZ1bmN0aW9uIGdldE1lbnVJbmRleChlbCwgZGlzdGFuY2UpIHtcbiAgaWYgKCFlbCkgcmV0dXJuO1xuICB2YXIgcGllY2VzID0gZWwuaWQuc3BsaXQoJy0nKTtcbiAgcmV0dXJuIE51bWJlcihwaWVjZXNbcGllY2VzLmxlbmd0aCAtIDJdKTtcbn07XG5cbnZhciBmb2N1c05vZGUgPSBmdW5jdGlvbiBmb2N1c05vZGUoZWwpIHtcbiAgaWYgKCFlbCkgcmV0dXJuO1xuICBlbC5mb2N1cygpO1xuICAhY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19pc0xlYWYoZWwpICYmIGVsLmNsaWNrKCk7XG59O1xuXG52YXIgY2hlY2tOb2RlID0gZnVuY3Rpb24gY2hlY2tOb2RlKGVsKSB7XG4gIGlmICghZWwpIHJldHVybjtcblxuICB2YXIgaW5wdXQgPSBlbC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICBpZiAoaW5wdXQpIHtcbiAgICBpbnB1dC5jbGljaygpO1xuICB9IGVsc2UgaWYgKGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfaXNMZWFmKGVsKSkge1xuICAgIGVsLmNsaWNrKCk7XG4gIH1cbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsQ2FzY2FkZXJQYW5lbCcsXG5cbiAgY29tcG9uZW50czoge1xuICAgIENhc2NhZGVyTWVudTogY2FzY2FkZXJfbWVudVxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHt9LFxuICAgIG9wdGlvbnM6IEFycmF5LFxuICAgIHByb3BzOiBPYmplY3QsXG4gICAgYm9yZGVyOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgcmVuZGVyTGFiZWw6IEZ1bmN0aW9uXG4gIH0sXG5cbiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFuZWw6IHRoaXNcbiAgICB9O1xuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjaGVja2VkVmFsdWU6IG51bGwsXG4gICAgICBjaGVja2VkTm9kZVBhdGhzOiBbXSxcbiAgICAgIHN0b3JlOiBbXSxcbiAgICAgIG1lbnVzOiBbXSxcbiAgICAgIGFjdGl2ZVBhdGg6IFtdLFxuICAgICAgbG9hZENvdW50OiAwXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB7XG4gICAgY29uZmlnOiBmdW5jdGlvbiBjb25maWcoKSB7XG4gICAgICByZXR1cm4gbWVyZ2VfZGVmYXVsdCgpKF9leHRlbmRzKHt9LCBEZWZhdWx0UHJvcHMpLCB0aGlzLnByb3BzIHx8IHt9KTtcbiAgICB9LFxuICAgIG11bHRpcGxlOiBmdW5jdGlvbiBtdWx0aXBsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5tdWx0aXBsZTtcbiAgICB9LFxuICAgIGNoZWNrU3RyaWN0bHk6IGZ1bmN0aW9uIGNoZWNrU3RyaWN0bHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuY2hlY2tTdHJpY3RseTtcbiAgICB9LFxuICAgIGxlYWZPbmx5OiBmdW5jdGlvbiBsZWFmT25seSgpIHtcbiAgICAgIHJldHVybiAhdGhpcy5jaGVja1N0cmljdGx5O1xuICAgIH0sXG4gICAgaXNIb3Zlck1lbnU6IGZ1bmN0aW9uIGlzSG92ZXJNZW51KCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmV4cGFuZFRyaWdnZXIgPT09ICdob3Zlcic7XG4gICAgfSxcbiAgICByZW5kZXJMYWJlbEZuOiBmdW5jdGlvbiByZW5kZXJMYWJlbEZuKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyTGFiZWwgfHwgdGhpcy4kc2NvcGVkU2xvdHMuZGVmYXVsdDtcbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoKSB7XG4gICAgICB0aGlzLnN5bmNDaGVja2VkVmFsdWUoKTtcbiAgICAgIHRoaXMuY2hlY2tTdHJpY3RseSAmJiB0aGlzLmNhbGN1bGF0ZUNoZWNrZWROb2RlUGF0aHMoKTtcbiAgICB9LFxuXG4gICAgb3B0aW9uczoge1xuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy5pbml0U3RvcmUoKTtcbiAgICAgIH0sXG4gICAgICBpbW1lZGlhdGU6IHRydWUsXG4gICAgICBkZWVwOiB0cnVlXG4gICAgfSxcbiAgICBjaGVja2VkVmFsdWU6IGZ1bmN0aW9uIGNoZWNrZWRWYWx1ZSh2YWwpIHtcbiAgICAgIGlmICghT2JqZWN0KHV0aWxfW1wiaXNFcXVhbFwiXSkodmFsLCB0aGlzLnZhbHVlKSkge1xuICAgICAgICB0aGlzLmNoZWNrU3RyaWN0bHkgJiYgdGhpcy5jYWxjdWxhdGVDaGVja2VkTm9kZVBhdGhzKCk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICBpZiAoIXRoaXMuaXNFbXB0eVZhbHVlKHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLnN5bmNDaGVja2VkVmFsdWUoKTtcbiAgICB9XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgaW5pdFN0b3JlOiBmdW5jdGlvbiBpbml0U3RvcmUoKSB7XG4gICAgICB2YXIgY29uZmlnID0gdGhpcy5jb25maWcsXG4gICAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmIE9iamVjdCh1dGlsX1tcImlzRW1wdHlcIl0pKG9wdGlvbnMpKSB7XG4gICAgICAgIHRoaXMubGF6eUxvYWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmUgPSBuZXcgc3JjX3N0b3JlKG9wdGlvbnMsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMubWVudXMgPSBbdGhpcy5zdG9yZS5nZXROb2RlcygpXTtcbiAgICAgICAgdGhpcy5zeW5jTWVudVN0YXRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzeW5jQ2hlY2tlZFZhbHVlOiBmdW5jdGlvbiBzeW5jQ2hlY2tlZFZhbHVlKCkge1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICBjaGVja2VkVmFsdWUgPSB0aGlzLmNoZWNrZWRWYWx1ZTtcblxuICAgICAgaWYgKCFPYmplY3QodXRpbF9bXCJpc0VxdWFsXCJdKSh2YWx1ZSwgY2hlY2tlZFZhbHVlKSkge1xuICAgICAgICB0aGlzLmFjdGl2ZVBhdGggPSBbXTtcbiAgICAgICAgdGhpcy5jaGVja2VkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zeW5jTWVudVN0YXRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzeW5jTWVudVN0YXRlOiBmdW5jdGlvbiBzeW5jTWVudVN0YXRlKCkge1xuICAgICAgdmFyIG11bHRpcGxlID0gdGhpcy5tdWx0aXBsZSxcbiAgICAgICAgICBjaGVja1N0cmljdGx5ID0gdGhpcy5jaGVja1N0cmljdGx5O1xuXG4gICAgICB0aGlzLnN5bmNBY3RpdmVQYXRoKCk7XG4gICAgICBtdWx0aXBsZSAmJiB0aGlzLnN5bmNNdWx0aUNoZWNrU3RhdGUoKTtcbiAgICAgIGNoZWNrU3RyaWN0bHkgJiYgdGhpcy5jYWxjdWxhdGVDaGVja2VkTm9kZVBhdGhzKCk7XG4gICAgICB0aGlzLiRuZXh0VGljayh0aGlzLnNjcm9sbEludG9WaWV3KTtcbiAgICB9LFxuICAgIHN5bmNNdWx0aUNoZWNrU3RhdGU6IGZ1bmN0aW9uIHN5bmNNdWx0aUNoZWNrU3RhdGUoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgbm9kZXMgPSB0aGlzLmdldEZsYXR0ZWROb2Rlcyh0aGlzLmxlYWZPbmx5KTtcblxuICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnN5bmNDaGVja1N0YXRlKF90aGlzLmNoZWNrZWRWYWx1ZSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzRW1wdHlWYWx1ZTogZnVuY3Rpb24gaXNFbXB0eVZhbHVlKHZhbCkge1xuICAgICAgdmFyIG11bHRpcGxlID0gdGhpcy5tdWx0aXBsZSxcbiAgICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICAgIHZhciBlbWl0UGF0aCA9IGNvbmZpZy5lbWl0UGF0aDtcblxuICAgICAgaWYgKG11bHRpcGxlIHx8IGVtaXRQYXRoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QodXRpbF9bXCJpc0VtcHR5XCJdKSh2YWwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgc3luY0FjdGl2ZVBhdGg6IGZ1bmN0aW9uIHN5bmNBY3RpdmVQYXRoKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBzdG9yZSA9IHRoaXMuc3RvcmUsXG4gICAgICAgICAgbXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlLFxuICAgICAgICAgIGFjdGl2ZVBhdGggPSB0aGlzLmFjdGl2ZVBhdGgsXG4gICAgICAgICAgY2hlY2tlZFZhbHVlID0gdGhpcy5jaGVja2VkVmFsdWU7XG5cblxuICAgICAgaWYgKCFPYmplY3QodXRpbF9bXCJpc0VtcHR5XCJdKShhY3RpdmVQYXRoKSkge1xuICAgICAgICB2YXIgbm9kZXMgPSBhY3RpdmVQYXRoLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHJldHVybiBfdGhpczIuZ2V0Tm9kZUJ5VmFsdWUobm9kZS5nZXRWYWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhwYW5kTm9kZXMobm9kZXMpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0VtcHR5VmFsdWUoY2hlY2tlZFZhbHVlKSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBtdWx0aXBsZSA/IGNoZWNrZWRWYWx1ZVswXSA6IGNoZWNrZWRWYWx1ZTtcbiAgICAgICAgdmFyIGNoZWNrZWROb2RlID0gdGhpcy5nZXROb2RlQnlWYWx1ZSh2YWx1ZSkgfHwge307XG4gICAgICAgIHZhciBfbm9kZXMgPSAoY2hlY2tlZE5vZGUucGF0aE5vZGVzIHx8IFtdKS5zbGljZSgwLCAtMSk7XG4gICAgICAgIHRoaXMuZXhwYW5kTm9kZXMoX25vZGVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWN0aXZlUGF0aCA9IFtdO1xuICAgICAgICB0aGlzLm1lbnVzID0gW3N0b3JlLmdldE5vZGVzKCldO1xuICAgICAgfVxuICAgIH0sXG4gICAgZXhwYW5kTm9kZXM6IGZ1bmN0aW9uIGV4cGFuZE5vZGVzKG5vZGVzKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMzLmhhbmRsZUV4cGFuZChub2RlLCB0cnVlIC8qIHNpbGVudCAqLyk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGNhbGN1bGF0ZUNoZWNrZWROb2RlUGF0aHM6IGZ1bmN0aW9uIGNhbGN1bGF0ZUNoZWNrZWROb2RlUGF0aHMoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgdmFyIGNoZWNrZWRWYWx1ZSA9IHRoaXMuY2hlY2tlZFZhbHVlLFxuICAgICAgICAgIG11bHRpcGxlID0gdGhpcy5tdWx0aXBsZTtcblxuICAgICAgdmFyIGNoZWNrZWRWYWx1ZXMgPSBtdWx0aXBsZSA/IE9iamVjdCh1dGlsX1tcImNvZXJjZVRydXRoeVZhbHVlVG9BcnJheVwiXSkoY2hlY2tlZFZhbHVlKSA6IFtjaGVja2VkVmFsdWVdO1xuICAgICAgdGhpcy5jaGVja2VkTm9kZVBhdGhzID0gY2hlY2tlZFZhbHVlcy5tYXAoZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIGNoZWNrZWROb2RlID0gX3RoaXM0LmdldE5vZGVCeVZhbHVlKHYpO1xuICAgICAgICByZXR1cm4gY2hlY2tlZE5vZGUgPyBjaGVja2VkTm9kZS5wYXRoTm9kZXMgOiBbXTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgaGFuZGxlS2V5RG93bjogZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQsXG4gICAgICAgICAga2V5Q29kZSA9IGUua2V5Q29kZTtcblxuXG4gICAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgICAgY2FzZSBLZXlDb2RlLnVwOlxuICAgICAgICAgIHZhciBwcmV2ID0gZ2V0U2libGluZyh0YXJnZXQsIC0xKTtcbiAgICAgICAgICBmb2N1c05vZGUocHJldik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgS2V5Q29kZS5kb3duOlxuICAgICAgICAgIHZhciBuZXh0ID0gZ2V0U2libGluZyh0YXJnZXQsIDEpO1xuICAgICAgICAgIGZvY3VzTm9kZShuZXh0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBLZXlDb2RlLmxlZnQ6XG4gICAgICAgICAgdmFyIHByZU1lbnUgPSB0aGlzLiRyZWZzLm1lbnVbZ2V0TWVudUluZGV4KHRhcmdldCkgLSAxXTtcbiAgICAgICAgICBpZiAocHJlTWVudSkge1xuICAgICAgICAgICAgdmFyIGV4cGFuZGVkTm9kZSA9IHByZU1lbnUuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5lbC1jYXNjYWRlci1ub2RlW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdJyk7XG4gICAgICAgICAgICBmb2N1c05vZGUoZXhwYW5kZWROb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgS2V5Q29kZS5yaWdodDpcbiAgICAgICAgICB2YXIgbmV4dE1lbnUgPSB0aGlzLiRyZWZzLm1lbnVbZ2V0TWVudUluZGV4KHRhcmdldCkgKyAxXTtcbiAgICAgICAgICBpZiAobmV4dE1lbnUpIHtcbiAgICAgICAgICAgIHZhciBmaXJzdE5vZGUgPSBuZXh0TWVudS4kZWwucXVlcnlTZWxlY3RvcignLmVsLWNhc2NhZGVyLW5vZGVbdGFiaW5kZXg9XCItMVwiXScpO1xuICAgICAgICAgICAgZm9jdXNOb2RlKGZpcnN0Tm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEtleUNvZGUuZW50ZXI6XG4gICAgICAgICAgY2hlY2tOb2RlKHRhcmdldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgS2V5Q29kZS5lc2M6XG4gICAgICAgIGNhc2UgS2V5Q29kZS50YWI6XG4gICAgICAgICAgdGhpcy4kZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVFeHBhbmQ6IGZ1bmN0aW9uIGhhbmRsZUV4cGFuZChub2RlLCBzaWxlbnQpIHtcbiAgICAgIHZhciBhY3RpdmVQYXRoID0gdGhpcy5hY3RpdmVQYXRoO1xuICAgICAgdmFyIGxldmVsID0gbm9kZS5sZXZlbDtcblxuICAgICAgdmFyIHBhdGggPSBhY3RpdmVQYXRoLnNsaWNlKDAsIGxldmVsIC0gMSk7XG4gICAgICB2YXIgbWVudXMgPSB0aGlzLm1lbnVzLnNsaWNlKDAsIGxldmVsKTtcblxuICAgICAgaWYgKCFub2RlLmlzTGVhZikge1xuICAgICAgICBwYXRoLnB1c2gobm9kZSk7XG4gICAgICAgIG1lbnVzLnB1c2gobm9kZS5jaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlUGF0aCA9IHBhdGg7XG4gICAgICB0aGlzLm1lbnVzID0gbWVudXM7XG5cbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIHZhciBwYXRoVmFsdWVzID0gcGF0aC5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5nZXRWYWx1ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGFjdGl2ZVBhdGhWYWx1ZXMgPSBhY3RpdmVQYXRoLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHJldHVybiBub2RlLmdldFZhbHVlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIU9iamVjdCh1dGlsX1tcInZhbHVlRXF1YWxzXCJdKShwYXRoVmFsdWVzLCBhY3RpdmVQYXRoVmFsdWVzKSkge1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ2FjdGl2ZS1pdGVtLWNoYW5nZScsIHBhdGhWYWx1ZXMpOyAvLyBEZXByZWNhdGVkXG4gICAgICAgICAgdGhpcy4kZW1pdCgnZXhwYW5kLWNoYW5nZScsIHBhdGhWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDaGVja0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hlY2tDaGFuZ2UodmFsdWUpIHtcbiAgICAgIHRoaXMuY2hlY2tlZFZhbHVlID0gdmFsdWU7XG4gICAgfSxcbiAgICBsYXp5TG9hZDogZnVuY3Rpb24gbGF6eUxvYWQobm9kZSwgb25GdWxsZmlsZWQpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICB2YXIgY29uZmlnID0gdGhpcy5jb25maWc7XG5cbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICBub2RlID0gbm9kZSB8fCB7IHJvb3Q6IHRydWUsIGxldmVsOiAwIH07XG4gICAgICAgIHRoaXMuc3RvcmUgPSBuZXcgc3JjX3N0b3JlKFtdLCBjb25maWcpO1xuICAgICAgICB0aGlzLm1lbnVzID0gW3RoaXMuc3RvcmUuZ2V0Tm9kZXMoKV07XG4gICAgICB9XG4gICAgICBub2RlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdmFyIHJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlKGRhdGFMaXN0KSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSBub2RlLnJvb3QgPyBudWxsIDogbm9kZTtcbiAgICAgICAgZGF0YUxpc3QgJiYgZGF0YUxpc3QubGVuZ3RoICYmIF90aGlzNS5zdG9yZS5hcHBlbmROb2RlcyhkYXRhTGlzdCwgcGFyZW50KTtcbiAgICAgICAgbm9kZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIG5vZGUubG9hZGVkID0gdHJ1ZTtcblxuICAgICAgICAvLyBkaXNwb3NlIGRlZmF1bHQgdmFsdWUgb24gbGF6eSBsb2FkIG1vZGVcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX3RoaXM1LmNoZWNrZWRWYWx1ZSkpIHtcbiAgICAgICAgICB2YXIgbm9kZVZhbHVlID0gX3RoaXM1LmNoZWNrZWRWYWx1ZVtfdGhpczUubG9hZENvdW50KytdO1xuICAgICAgICAgIHZhciB2YWx1ZUtleSA9IF90aGlzNS5jb25maWcudmFsdWU7XG4gICAgICAgICAgdmFyIGxlYWZLZXkgPSBfdGhpczUuY29uZmlnLmxlYWY7XG5cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhTGlzdCkgJiYgZGF0YUxpc3QuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbVt2YWx1ZUtleV0gPT09IG5vZGVWYWx1ZTtcbiAgICAgICAgICB9KS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB2YXIgY2hlY2tlZE5vZGUgPSBfdGhpczUuc3RvcmUuZ2V0Tm9kZUJ5VmFsdWUobm9kZVZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKCFjaGVja2VkTm9kZS5kYXRhW2xlYWZLZXldKSB7XG4gICAgICAgICAgICAgIF90aGlzNS5sYXp5TG9hZChjaGVja2VkTm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIF90aGlzNS5oYW5kbGVFeHBhbmQoY2hlY2tlZE5vZGUpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF90aGlzNS5sb2FkQ291bnQgPT09IF90aGlzNS5jaGVja2VkVmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIF90aGlzNS4kcGFyZW50LmNvbXB1dGVQcmVzZW50VGV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9uRnVsbGZpbGVkICYmIG9uRnVsbGZpbGVkKGRhdGFMaXN0KTtcbiAgICAgIH07XG4gICAgICBjb25maWcubGF6eUxvYWQobm9kZSwgcmVzb2x2ZSk7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogcHVibGljIG1ldGhvZHNcbiAgICAqL1xuICAgIGNhbGN1bGF0ZU11bHRpQ2hlY2tlZFZhbHVlOiBmdW5jdGlvbiBjYWxjdWxhdGVNdWx0aUNoZWNrZWRWYWx1ZSgpIHtcbiAgICAgIHRoaXMuY2hlY2tlZFZhbHVlID0gdGhpcy5nZXRDaGVja2VkTm9kZXModGhpcy5sZWFmT25seSkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmdldFZhbHVlQnlPcHRpb24oKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc2Nyb2xsSW50b1ZpZXc6IGZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KCkge1xuICAgICAgaWYgKHRoaXMuJGlzU2VydmVyKSByZXR1cm47XG5cbiAgICAgIHZhciBtZW51cyA9IHRoaXMuJHJlZnMubWVudSB8fCBbXTtcbiAgICAgIG1lbnVzLmZvckVhY2goZnVuY3Rpb24gKG1lbnUpIHtcbiAgICAgICAgdmFyIG1lbnVFbGVtZW50ID0gbWVudS4kZWw7XG4gICAgICAgIGlmIChtZW51RWxlbWVudCkge1xuICAgICAgICAgIHZhciBjb250YWluZXIgPSBtZW51RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZWwtc2Nyb2xsYmFyX193cmFwJyk7XG4gICAgICAgICAgdmFyIGFjdGl2ZU5vZGUgPSBtZW51RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZWwtY2FzY2FkZXItbm9kZS5pcy1hY3RpdmUnKSB8fCBtZW51RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZWwtY2FzY2FkZXItbm9kZS5pbi1hY3RpdmUtcGF0aCcpO1xuICAgICAgICAgIHNjcm9sbF9pbnRvX3ZpZXdfZGVmYXVsdCgpKGNvbnRhaW5lciwgYWN0aXZlTm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0Tm9kZUJ5VmFsdWU6IGZ1bmN0aW9uIGdldE5vZGVCeVZhbHVlKHZhbCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0Tm9kZUJ5VmFsdWUodmFsKTtcbiAgICB9LFxuICAgIGdldEZsYXR0ZWROb2RlczogZnVuY3Rpb24gZ2V0RmxhdHRlZE5vZGVzKGxlYWZPbmx5KSB7XG4gICAgICB2YXIgY2FjaGVkID0gIXRoaXMuY29uZmlnLmxhenk7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRGbGF0dGVkTm9kZXMobGVhZk9ubHksIGNhY2hlZCk7XG4gICAgfSxcbiAgICBnZXRDaGVja2VkTm9kZXM6IGZ1bmN0aW9uIGdldENoZWNrZWROb2RlcyhsZWFmT25seSkge1xuICAgICAgdmFyIGNoZWNrZWRWYWx1ZSA9IHRoaXMuY2hlY2tlZFZhbHVlLFxuICAgICAgICAgIG11bHRpcGxlID0gdGhpcy5tdWx0aXBsZTtcblxuICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgIHZhciBub2RlcyA9IHRoaXMuZ2V0RmxhdHRlZE5vZGVzKGxlYWZPbmx5KTtcbiAgICAgICAgcmV0dXJuIG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHJldHVybiBub2RlLmNoZWNrZWQ7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNFbXB0eVZhbHVlKGNoZWNrZWRWYWx1ZSkgPyBbXSA6IFt0aGlzLmdldE5vZGVCeVZhbHVlKGNoZWNrZWRWYWx1ZSldO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xlYXJDaGVja2VkTm9kZXM6IGZ1bmN0aW9uIGNsZWFyQ2hlY2tlZE5vZGVzKCkge1xuICAgICAgdmFyIGNvbmZpZyA9IHRoaXMuY29uZmlnLFxuICAgICAgICAgIGxlYWZPbmx5ID0gdGhpcy5sZWFmT25seTtcbiAgICAgIHZhciBtdWx0aXBsZSA9IGNvbmZpZy5tdWx0aXBsZSxcbiAgICAgICAgICBlbWl0UGF0aCA9IGNvbmZpZy5lbWl0UGF0aDtcblxuICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuZ2V0Q2hlY2tlZE5vZGVzKGxlYWZPbmx5KS5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gIW5vZGUuaXNEaXNhYmxlZDtcbiAgICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHJldHVybiBub2RlLmRvQ2hlY2soZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVNdWx0aUNoZWNrZWRWYWx1ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGVja2VkVmFsdWUgPSBlbWl0UGF0aCA/IFtdIDogbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItcGFuZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19jYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItcGFuZWwudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY2FzY2FkZXJfcGFuZWxfY29tcG9uZW50ID0gT2JqZWN0KGNvbXBvbmVudE5vcm1hbGl6ZXJbXCJhXCIgLyogZGVmYXVsdCAqL10pKFxuICBzcmNfY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfdGVtcGxhdGVfaWRfMzQ5MzIzNDZfcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGNhc2NhZGVyX3BhbmVsX2FwaTsgfVxuY2FzY2FkZXJfcGFuZWxfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItcGFuZWwudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNhc2NhZGVyX3BhbmVsID0gKGNhc2NhZGVyX3BhbmVsX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY2FzY2FkZXJfcGFuZWwuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChjYXNjYWRlcl9wYW5lbC5uYW1lLCBjYXNjYWRlcl9wYW5lbCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19jYXNjYWRlcl9wYW5lbCA9IF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKGNhc2NhZGVyX3BhbmVsKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDk6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL21lcmdlXCIpO1xuXG4vKioqLyB9KVxuXG4vKioqKioqLyB9KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/cascader-panel.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/checkbox-group.js":
/*!*******************************************************!*\
!*** ./node_modules/element-ui/lib/checkbox-group.js ***!
\*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 93);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/emitter */ \"./node_modules/element-ui/lib/mixins/emitter.js\");\n\n/***/ }),\n\n/***/ 93:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_6691__) {\n\n\"use strict\";\n__nested_webpack_require_6691__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-group.vue?vue&type=template&id=7289a290&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-checkbox-group\",\n attrs: { role: \"group\", \"aria-label\": \"checkbox-group\" }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue?vue&type=template&id=7289a290&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __nested_webpack_require_6691__(4);\nvar emitter_default = /*#__PURE__*/__nested_webpack_require_6691__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-group.vue?vue&type=script&lang=js&\n\n\n\n/* harmony default export */ var checkbox_groupvue_type_script_lang_js_ = ({\n name: 'ElCheckboxGroup',\n\n componentName: 'ElCheckboxGroup',\n\n mixins: [emitter_default.a],\n\n inject: {\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n value: {},\n disabled: Boolean,\n min: Number,\n max: Number,\n size: String,\n fill: String,\n textColor: String\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n checkboxGroupSize: function checkboxGroupSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n }\n },\n\n watch: {\n value: function value(_value) {\n this.dispatch('ElFormItem', 'el.form.change', [_value]);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_checkbox_groupvue_type_script_lang_js_ = (checkbox_groupvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_6691__(0);\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_checkbox_groupvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/checkbox/src/checkbox-group.vue\"\n/* harmony default export */ var checkbox_group = (component.exports);\n// CONCATENATED MODULE: ./packages/checkbox-group/index.js\n\n\n/* istanbul ignore next */\ncheckbox_group.install = function (Vue) {\n Vue.component(checkbox_group.name, checkbox_group);\n};\n\n/* harmony default export */ var packages_checkbox_group = __nested_webpack_exports__[\"default\"] = (checkbox_group);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvY2hlY2tib3gtZ3JvdXAuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOEJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDhCQUFtQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZUFBZSw4QkFBbUI7QUFDbEMsbURBQW1ELCtCQUErQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0EsaUVBQWlFLGlCQUFpQjtBQUNsRjtBQUNBLDBEQUEwRCxhQUFhO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZ0NBQWdDLDhCQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDhCQUFtQjtBQUM5QixrREFBa0QsZ0NBQWdDO0FBQ2xGLDBFQUEwRSw4QkFBbUIsNEJBQTRCLG9CQUFvQjtBQUM3STtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0Esb0NBQW9DLDRCQUE0QjtBQUNoRSwwQ0FBMEM7QUFDMUMsV0FBVyw4QkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQixrQ0FBa0M7QUFDL0Q7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4QkFBbUIsQ0FBQyw4QkFBbUI7QUFDeEQsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsMEJBQW1CLEVBQUUsK0JBQW1COztBQUVoRTtBQUNBLCtCQUErQiwrQkFBbUIsR0FBRywwQkFBbUIsb0JBQW9CLDRCQUE0QjtBQUN4SDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLE9BQU87O0FBRVA7QUFDQTs7QUFFQSxpQkFBaUIsbUJBQU8sQ0FBQyxzRkFBK0I7O0FBRXhELE9BQU87O0FBRVA7QUFDQSx3QkFBd0IsMEJBQW1CLEVBQUUsK0JBQW1COztBQUVoRTtBQUNBLCtCQUFtQixHQUFHLDBCQUFtQjs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0EsZUFBZSwrQkFBbUI7QUFDbEMsbUNBQW1DLCtCQUFtQjs7QUFFdEQ7Ozs7QUFJQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsS0FBSztBQUNMO0FBQ0Esc0VBQXNFO0FBQ3RFO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwrQkFBbUI7O0FBRTdDOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLFlBQVk7QUFDdkI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyREFBMkQsMEJBQW1COztBQUU5RSxPQUFPOztBQUVQLFVBQVUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvY2hlY2tib3gtZ3JvdXAuanM/Y2JjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9XG4vKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2Rpc3QvXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDkzKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKHtcblxuLyoqKi8gMDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIG5vcm1hbGl6ZUNvbXBvbmVudDsgfSk7XG4vKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7IGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCkgfVxuICAgICAgOiBpbmplY3RTdHlsZXNcbiAgfVxuXG4gIGlmIChob29rKSB7XG4gICAgaWYgKG9wdGlvbnMuZnVuY3Rpb25hbCkge1xuICAgICAgLy8gZm9yIHRlbXBsYXRlLW9ubHkgaG90LXJlbG9hZCBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcmVuZGVyIGZuIGRvZXNuJ3RcbiAgICAgIC8vIGdvIHRocm91Z2ggdGhlIG5vcm1hbGl6ZXJcbiAgICAgIG9wdGlvbnMuX2luamVjdFN0eWxlcyA9IGhvb2tcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyA0OlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9taXhpbnMvZW1pdHRlclwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDkzOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gtZ3JvdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcyODlhMjkwJlxudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNoZWNrYm94LWdyb3VwXCIsXG4gICAgICBhdHRyczogeyByb2xlOiBcImdyb3VwXCIsIFwiYXJpYS1sYWJlbFwiOiBcImNoZWNrYm94LWdyb3VwXCIgfVxuICAgIH0sXG4gICAgW192bS5fdChcImRlZmF1bHRcIildLFxuICAgIDJcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC1ncm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzI4OWEyOTAmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9taXhpbnMvZW1pdHRlclwiXG52YXIgZW1pdHRlcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIGVtaXR0ZXJfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZW1pdHRlcl8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gtZ3JvdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2hlY2tib3hfZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxDaGVja2JveEdyb3VwJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxDaGVja2JveEdyb3VwJyxcblxuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sXG5cbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtSXRlbToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9XG4gIH0sXG5cbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge30sXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgbWluOiBOdW1iZXIsXG4gICAgbWF4OiBOdW1iZXIsXG4gICAgc2l6ZTogU3RyaW5nLFxuICAgIGZpbGw6IFN0cmluZyxcbiAgICB0ZXh0Q29sb3I6IFN0cmluZ1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgX2VsRm9ybUl0ZW1TaXplOiBmdW5jdGlvbiBfZWxGb3JtSXRlbVNpemUoKSB7XG4gICAgICByZXR1cm4gKHRoaXMuZWxGb3JtSXRlbSB8fCB7fSkuZWxGb3JtSXRlbVNpemU7XG4gICAgfSxcbiAgICBjaGVja2JveEdyb3VwU2l6ZTogZnVuY3Rpb24gY2hlY2tib3hHcm91cFNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaXplIHx8IHRoaXMuX2VsRm9ybUl0ZW1TaXplIHx8ICh0aGlzLiRFTEVNRU5UIHx8IHt9KS5zaXplO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShfdmFsdWUpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsRm9ybUl0ZW0nLCAnZWwuZm9ybS5jaGFuZ2UnLCBbX3ZhbHVlXSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LWdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfY2hlY2tib3hfZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoY2hlY2tib3hfZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXG52YXIgY29tcG9uZW50Tm9ybWFsaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LWdyb3VwLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNvbXBvbmVudCA9IE9iamVjdChjb21wb25lbnROb3JtYWxpemVyW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShcbiAgc3JjX2NoZWNrYm94X2dyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgYXBpOyB9XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC1ncm91cC52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2hlY2tib3hfZ3JvdXAgPSAoY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jaGVja2JveC1ncm91cC9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jaGVja2JveF9ncm91cC5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGNoZWNrYm94X2dyb3VwLm5hbWUsIGNoZWNrYm94X2dyb3VwKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2NoZWNrYm94X2dyb3VwID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoY2hlY2tib3hfZ3JvdXApO1xuXG4vKioqLyB9KVxuXG4vKioqKioqLyB9KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/checkbox-group.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/checkbox.js":
/*!*************************************************!*\
!*** ./node_modules/element-ui/lib/checkbox.js ***!
\*************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 91);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/emitter */ \"./node_modules/element-ui/lib/mixins/emitter.js\");\n\n/***/ }),\n\n/***/ 91:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_6691__) {\n\n\"use strict\";\n__nested_webpack_require_6691__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-checkbox\",\n class: [\n _vm.border && _vm.checkboxSize\n ? \"el-checkbox--\" + _vm.checkboxSize\n : \"\",\n { \"is-disabled\": _vm.isDisabled },\n { \"is-bordered\": _vm.border },\n { \"is-checked\": _vm.isChecked }\n ],\n attrs: { id: _vm.id }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"el-checkbox__input\",\n class: {\n \"is-disabled\": _vm.isDisabled,\n \"is-checked\": _vm.isChecked,\n \"is-indeterminate\": _vm.indeterminate,\n \"is-focus\": _vm.focus\n },\n attrs: {\n tabindex: _vm.indeterminate ? 0 : false,\n role: _vm.indeterminate ? \"checkbox\" : false,\n \"aria-checked\": _vm.indeterminate ? \"mixed\" : false\n }\n },\n [\n _c(\"span\", { staticClass: \"el-checkbox__inner\" }),\n _vm.trueLabel || _vm.falseLabel\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": _vm.indeterminate ? \"true\" : \"false\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n \"true-value\": _vm.trueLabel,\n \"false-value\": _vm.falseLabel\n },\n domProps: {\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, null) > -1\n : _vm._q(_vm.model, _vm.trueLabel)\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? _vm.trueLabel : _vm.falseLabel\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n : _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": _vm.indeterminate ? \"true\" : \"false\",\n disabled: _vm.isDisabled,\n name: _vm.name\n },\n domProps: {\n value: _vm.label,\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, _vm.label) > -1\n : _vm.model\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = _vm.label,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n ]\n ),\n _vm.$slots.default || _vm.label\n ? _c(\n \"span\",\n { staticClass: \"el-checkbox__label\" },\n [\n _vm._t(\"default\"),\n !_vm.$slots.default ? [_vm._v(_vm._s(_vm.label))] : _vm._e()\n ],\n 2\n )\n : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __nested_webpack_require_6691__(4);\nvar emitter_default = /*#__PURE__*/__nested_webpack_require_6691__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var checkboxvue_type_script_lang_js_ = ({\n name: 'ElCheckbox',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n componentName: 'ElCheckbox',\n\n data: function data() {\n return {\n selfModel: false,\n focus: false,\n isLimitExceeded: false\n };\n },\n\n\n computed: {\n model: {\n get: function get() {\n return this.isGroup ? this.store : this.value !== undefined ? this.value : this.selfModel;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.isLimitExceeded = false;\n this._checkboxGroup.min !== undefined && val.length < this._checkboxGroup.min && (this.isLimitExceeded = true);\n\n this._checkboxGroup.max !== undefined && val.length > this._checkboxGroup.max && (this.isLimitExceeded = true);\n\n this.isLimitExceeded === false && this.dispatch('ElCheckboxGroup', 'input', [val]);\n } else {\n this.$emit('input', val);\n this.selfModel = val;\n }\n }\n },\n\n isChecked: function isChecked() {\n if ({}.toString.call(this.model) === '[object Boolean]') {\n return this.model;\n } else if (Array.isArray(this.model)) {\n return this.model.indexOf(this.label) > -1;\n } else if (this.model !== null && this.model !== undefined) {\n return this.model === this.trueLabel;\n }\n },\n isGroup: function isGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElCheckboxGroup') {\n parent = parent.$parent;\n } else {\n this._checkboxGroup = parent;\n return true;\n }\n }\n return false;\n },\n store: function store() {\n return this._checkboxGroup ? this._checkboxGroup.value : this.value;\n },\n\n\n /* used to make the isDisabled judgment under max/min props */\n isLimitDisabled: function isLimitDisabled() {\n var _checkboxGroup = this._checkboxGroup,\n max = _checkboxGroup.max,\n min = _checkboxGroup.min;\n\n return !!(max || min) && this.model.length >= max && !this.isChecked || this.model.length <= min && this.isChecked;\n },\n isDisabled: function isDisabled() {\n return this.isGroup ? this._checkboxGroup.disabled || this.disabled || (this.elForm || {}).disabled || this.isLimitDisabled : this.disabled || (this.elForm || {}).disabled;\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n checkboxSize: function checkboxSize() {\n var temCheckboxSize = this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n return this.isGroup ? this._checkboxGroup.checkboxGroupSize || temCheckboxSize : temCheckboxSize;\n }\n },\n\n props: {\n value: {},\n label: {},\n indeterminate: Boolean,\n disabled: Boolean,\n checked: Boolean,\n name: String,\n trueLabel: [String, Number],\n falseLabel: [String, Number],\n id: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n controls: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n border: Boolean,\n size: String\n },\n\n methods: {\n addToStore: function addToStore() {\n if (Array.isArray(this.model) && this.model.indexOf(this.label) === -1) {\n this.model.push(this.label);\n } else {\n this.model = this.trueLabel || true;\n }\n },\n handleChange: function handleChange(ev) {\n var _this = this;\n\n if (this.isLimitExceeded) return;\n var value = void 0;\n if (ev.target.checked) {\n value = this.trueLabel === undefined ? true : this.trueLabel;\n } else {\n value = this.falseLabel === undefined ? false : this.falseLabel;\n }\n this.$emit('change', value, ev);\n this.$nextTick(function () {\n if (_this.isGroup) {\n _this.dispatch('ElCheckboxGroup', 'change', [_this._checkboxGroup.value]);\n }\n });\n }\n },\n\n created: function created() {\n this.checked && this.addToStore();\n },\n mounted: function mounted() {\n // 为indeterminate元素 添加aria-controls 属性\n if (this.indeterminate) {\n this.$el.setAttribute('aria-controls', this.controls);\n }\n },\n\n\n watch: {\n value: function value(_value) {\n this.dispatch('ElFormItem', 'el.form.change', _value);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_checkboxvue_type_script_lang_js_ = (checkboxvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_6691__(0);\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_checkboxvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/checkbox/src/checkbox.vue\"\n/* harmony default export */ var src_checkbox = (component.exports);\n// CONCATENATED MODULE: ./packages/checkbox/index.js\n\n\n/* istanbul ignore next */\nsrc_checkbox.install = function (Vue) {\n Vue.component(src_checkbox.name, src_checkbox);\n};\n\n/* harmony default export */ var packages_checkbox = __nested_webpack_exports__[\"default\"] = (src_checkbox);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvY2hlY2tib3guanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOEJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDhCQUFtQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZUFBZSw4QkFBbUI7QUFDbEMsbURBQW1ELCtCQUErQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0EsaUVBQWlFLGlCQUFpQjtBQUNsRjtBQUNBLDBEQUEwRCxhQUFhO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZ0NBQWdDLDhCQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDhCQUFtQjtBQUM5QixrREFBa0QsZ0NBQWdDO0FBQ2xGLDBFQUEwRSw4QkFBbUIsNEJBQTRCLG9CQUFvQjtBQUM3STtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0Esb0NBQW9DLDRCQUE0QjtBQUNoRSwwQ0FBMEM7QUFDMUMsV0FBVyw4QkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQixrQ0FBa0M7QUFDL0Q7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4QkFBbUIsQ0FBQyw4QkFBbUI7QUFDeEQsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsMEJBQW1CLEVBQUUsK0JBQW1COztB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsK0JBQW1COztBQUU3Qzs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscURBQXFELDBCQUFtQjs7QUFFeEUsT0FBTzs7QUFFUCxVQUFVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL2NoZWNrYm94LmpzPzBiNzciXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9kaXN0L1wiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA5MSk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICh7XG5cbi8qKiovIDA6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBub3JtYWxpemVDb21wb25lbnQ7IH0pO1xuLyogZ2xvYmFscyBfX1ZVRV9TU1JfQ09OVEVYVF9fICovXG5cbi8vIElNUE9SVEFOVDogRG8gTk9UIHVzZSBFUzIwMTUgZmVhdHVyZXMgaW4gdGhpcyBmaWxlIChleGNlcHQgZm9yIG1vZHVsZXMpLlxuLy8gVGhpcyBtb2R1bGUgaXMgYSBydW50aW1lIHV0aWxpdHkgZm9yIGNsZWFuZXIgY29tcG9uZW50IG1vZHVsZSBvdXRwdXQgYW5kIHdpbGxcbi8vIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCB3ZWJwYWNrIHVzZXIgYnVuZGxlLlxuXG5mdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICBzY3JpcHRFeHBvcnRzLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZnVuY3Rpb25hbFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIsIC8qIHNlcnZlciBvbmx5ICovXG4gIHNoYWRvd01vZGUgLyogdnVlLWNsaSBvbmx5ICovXG4pIHtcbiAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnNcbiAgICA6IHNjcmlwdEV4cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChyZW5kZXIpIHtcbiAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zXG4gICAgb3B0aW9ucy5fY29tcGlsZWQgPSB0cnVlXG4gIH1cblxuICAvLyBmdW5jdGlvbmFsIHRlbXBsYXRlXG4gIGlmIChmdW5jdGlvbmFsVGVtcGxhdGUpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uYWwgPSB0cnVlXG4gIH1cblxuICAvLyBzY29wZWRJZFxuICBpZiAoc2NvcGVJZCkge1xuICAgIG9wdGlvbnMuX3Njb3BlSWQgPSAnZGF0YS12LScgKyBzY29wZUlkXG4gIH1cblxuICB2YXIgaG9va1xuICBpZiAobW9kdWxlSWRlbnRpZmllcikgeyAvLyBzZXJ2ZXIgYnVpbGRcbiAgICBob29rID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIC8vIDIuMyBpbmplY3Rpb25cbiAgICAgIGNvbnRleHQgPVxuICAgICAgICBjb250ZXh0IHx8IC8vIGNhY2hlZCBjYWxsXG4gICAgICAgICh0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0KSB8fCAvLyBzdGF0ZWZ1bFxuICAgICAgICAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuJHZub2RlICYmIHRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0KSAvLyBmdW5jdGlvbmFsXG4gICAgICAvLyAyLjIgd2l0aCBydW5Jbk5ld0NvbnRleHQ6IHRydWVcbiAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX19cbiAgICAgIH1cbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgc3R5bGVzXG4gICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIGNvbnRleHQpXG4gICAgICB9XG4gICAgICAvLyByZWdpc3RlciBjb21wb25lbnQgbW9kdWxlIGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVycmVuY2VcbiAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7XG4gICAgICAgIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVyKVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZVxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXG4gICAgb3B0aW9ucy5fc3NyUmVnaXN0ZXIgPSBob29rXG4gIH0gZWxzZSBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgaG9vayA9IHNoYWRvd01vZGVcbiAgICAgID8gZnVuY3Rpb24gKCkgeyBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCB0aGlzLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3QpIH1cbiAgICAgIDogaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIGZvciB0ZW1wbGF0ZS1vbmx5IGhvdC1yZWxvYWQgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHJlbmRlciBmbiBkb2Vzbid0XG4gICAgICAvLyBnbyB0aHJvdWdoIHRoZSBub3JtYWxpemVyXG4gICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rXG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb2FsIGNvbXBvbmVudCBpbiB2dWUgZmlsZVxuICAgICAgdmFyIG9yaWdpbmFsUmVuZGVyID0gb3B0aW9ucy5yZW5kZXJcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uIChoLCBjb250ZXh0KSB7XG4gICAgICAgIGhvb2suY2FsbChjb250ZXh0KVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZW5kZXIoaCwgY29udGV4dClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIHZhciBleGlzdGluZyA9IG9wdGlvbnMuYmVmb3JlQ3JlYXRlXG4gICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nXG4gICAgICAgID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKVxuICAgICAgICA6IFtob29rXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gNDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2VtaXR0ZXJcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyA5MTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMDM4NzA3NCZcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJsYWJlbFwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNoZWNrYm94XCIsXG4gICAgICBjbGFzczogW1xuICAgICAgICBfdm0uYm9yZGVyICYmIF92bS5jaGVja2JveFNpemVcbiAgICAgICAgICA/IFwiZWwtY2hlY2tib3gtLVwiICsgX3ZtLmNoZWNrYm94U2l6ZVxuICAgICAgICAgIDogXCJcIixcbiAgICAgICAgeyBcImlzLWRpc2FibGVkXCI6IF92bS5pc0Rpc2FibGVkIH0sXG4gICAgICAgIHsgXCJpcy1ib3JkZXJlZFwiOiBfdm0uYm9yZGVyIH0sXG4gICAgICAgIHsgXCJpcy1jaGVja2VkXCI6IF92bS5pc0NoZWNrZWQgfVxuICAgICAgXSxcbiAgICAgIGF0dHJzOiB7IGlkOiBfdm0uaWQgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwic3BhblwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY2hlY2tib3hfX2lucHV0XCIsXG4gICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgIFwiaXMtZGlzYWJsZWRcIjogX3ZtLmlzRGlzYWJsZWQsXG4gICAgICAgICAgICBcImlzLWNoZWNrZWRcIjogX3ZtLmlzQ2hlY2tlZCxcbiAgICAgICAgICAgIFwiaXMtaW5kZXRlcm1pbmF0ZVwiOiBfdm0uaW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgICAgIFwiaXMtZm9jdXNcIjogX3ZtLmZvY3VzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgdGFiaW5kZXg6IF92bS5pbmRldGVybWluYXRlID8gMCA6IGZhbHNlLFxuICAgICAgICAgICAgcm9sZTogX3ZtLmluZGV0ZXJtaW5hdGUgPyBcImNoZWNrYm94XCIgOiBmYWxzZSxcbiAgICAgICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IF92bS5pbmRldGVybWluYXRlID8gXCJtaXhlZFwiIDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1jaGVja2JveF9faW5uZXJcIiB9KSxcbiAgICAgICAgICBfdm0udHJ1ZUxhYmVsIHx8IF92bS5mYWxzZUxhYmVsXG4gICAgICAgICAgICA/IF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5tb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJtb2RlbFwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jaGVja2JveF9fb3JpZ2luYWxcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBfdm0uaW5kZXRlcm1pbmF0ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiLFxuICAgICAgICAgICAgICAgICAgbmFtZTogX3ZtLm5hbWUsXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmlzRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICBcInRydWUtdmFsdWVcIjogX3ZtLnRydWVMYWJlbCxcbiAgICAgICAgICAgICAgICAgIFwiZmFsc2UtdmFsdWVcIjogX3ZtLmZhbHNlTGFiZWxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBBcnJheS5pc0FycmF5KF92bS5tb2RlbClcbiAgICAgICAgICAgICAgICAgICAgPyBfdm0uX2koX3ZtLm1vZGVsLCBudWxsKSA+IC0xXG4gICAgICAgICAgICAgICAgICAgIDogX3ZtLl9xKF92bS5tb2RlbCwgX3ZtLnRydWVMYWJlbClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2U6IFtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyICQkYSA9IF92bS5tb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gX3ZtLnRydWVMYWJlbCA6IF92bS5mYWxzZUxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICQkaSA9IF92bS5faSgkJGEsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJGVsLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJCRpIDwgMCAmJiAoX3ZtLm1vZGVsID0gJCRhLmNvbmNhdChbJCR2XSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkJGkgPiAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0ubW9kZWwgPSAkJGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAkJGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5tb2RlbCA9ICQkY1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZUNoYW5nZVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmZvY3VzID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0uZm9jdXMgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm1vZGVsLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm1vZGVsXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNoZWNrYm94X19vcmlnaW5hbFwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IF92bS5pbmRldGVybWluYXRlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIsXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmlzRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBfdm0ubmFtZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubGFiZWwsXG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBBcnJheS5pc0FycmF5KF92bS5tb2RlbClcbiAgICAgICAgICAgICAgICAgICAgPyBfdm0uX2koX3ZtLm1vZGVsLCBfdm0ubGFiZWwpID4gLTFcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0ubW9kZWxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2U6IFtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyICQkYSA9IF92bS5tb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyICQkdiA9IF92bS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQkZWwuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkJGkgPCAwICYmIChfdm0ubW9kZWwgPSAkJGEuY29uY2F0KFskJHZdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICQkaSA+IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5tb2RlbCA9ICQkYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsICQkaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoJCRhLnNsaWNlKCQkaSArIDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm1vZGVsID0gJCRjXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQ2hhbmdlXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0uZm9jdXMgPSB0cnVlXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYmx1cjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5mb2N1cyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICApLFxuICAgICAgX3ZtLiRzbG90cy5kZWZhdWx0IHx8IF92bS5sYWJlbFxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWNoZWNrYm94X19sYWJlbFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5fdChcImRlZmF1bHRcIiksXG4gICAgICAgICAgICAgICFfdm0uJHNsb3RzLmRlZmF1bHQgPyBbX3ZtLl92KF92bS5fcyhfdm0ubGFiZWwpKV0gOiBfdm0uX2UoKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKClcbiAgICBdXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQwMzg3MDc0JlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2VtaXR0ZXJcIlxudmFyIGVtaXR0ZXJfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBlbWl0dGVyX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGVtaXR0ZXJfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjaGVja2JveHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbENoZWNrYm94JyxcblxuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sXG5cbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgZWxGb3JtSXRlbToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsQ2hlY2tib3gnLFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGZNb2RlbDogZmFsc2UsXG4gICAgICBmb2N1czogZmFsc2UsXG4gICAgICBpc0xpbWl0RXhjZWVkZWQ6IGZhbHNlXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB7XG4gICAgbW9kZWw6IHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5zdG9yZSA6IHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCA/IHRoaXMudmFsdWUgOiB0aGlzLnNlbGZNb2RlbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNHcm91cCkge1xuICAgICAgICAgIHRoaXMuaXNMaW1pdEV4Y2VlZGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hlY2tib3hHcm91cC5taW4gIT09IHVuZGVmaW5lZCAmJiB2YWwubGVuZ3RoIDwgdGhpcy5fY2hlY2tib3hHcm91cC5taW4gJiYgKHRoaXMuaXNMaW1pdEV4Y2VlZGVkID0gdHJ1ZSk7XG5cbiAgICAgICAgICB0aGlzLl9jaGVja2JveEdyb3VwLm1heCAhPT0gdW5kZWZpbmVkICYmIHZhbC5sZW5ndGggPiB0aGlzLl9jaGVja2JveEdyb3VwLm1heCAmJiAodGhpcy5pc0xpbWl0RXhjZWVkZWQgPSB0cnVlKTtcblxuICAgICAgICAgIHRoaXMuaXNMaW1pdEV4Y2VlZGVkID09PSBmYWxzZSAmJiB0aGlzLmRpc3BhdGNoKCdFbENoZWNrYm94R3JvdXAnLCAnaW5wdXQnLCBbdmFsXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWwpO1xuICAgICAgICAgIHRoaXMuc2VsZk1vZGVsID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGlzQ2hlY2tlZDogZnVuY3Rpb24gaXNDaGVja2VkKCkge1xuICAgICAgaWYgKHt9LnRvU3RyaW5nLmNhbGwodGhpcy5tb2RlbCkgPT09ICdbb2JqZWN0IEJvb2xlYW5dJykge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5pbmRleE9mKHRoaXMubGFiZWwpID4gLTE7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubW9kZWwgIT09IG51bGwgJiYgdGhpcy5tb2RlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsID09PSB0aGlzLnRydWVMYWJlbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGlzR3JvdXA6IGZ1bmN0aW9uIGlzR3JvdXAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50LiRvcHRpb25zLmNvbXBvbmVudE5hbWUgIT09ICdFbENoZWNrYm94R3JvdXAnKSB7XG4gICAgICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fY2hlY2tib3hHcm91cCA9IHBhcmVudDtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgc3RvcmU6IGZ1bmN0aW9uIHN0b3JlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrYm94R3JvdXAgPyB0aGlzLl9jaGVja2JveEdyb3VwLnZhbHVlIDogdGhpcy52YWx1ZTtcbiAgICB9LFxuXG5cbiAgICAvKiB1c2VkIHRvIG1ha2UgdGhlIGlzRGlzYWJsZWQganVkZ21lbnQgdW5kZXIgbWF4L21pbiBwcm9wcyAqL1xuICAgIGlzTGltaXREaXNhYmxlZDogZnVuY3Rpb24gaXNMaW1pdERpc2FibGVkKCkge1xuICAgICAgdmFyIF9jaGVja2JveEdyb3VwID0gdGhpcy5fY2hlY2tib3hHcm91cCxcbiAgICAgICAgICBtYXggPSBfY2hlY2tib3hHcm91cC5tYXgsXG4gICAgICAgICAgbWluID0gX2NoZWNrYm94R3JvdXAubWluO1xuXG4gICAgICByZXR1cm4gISEobWF4IHx8IG1pbikgJiYgdGhpcy5tb2RlbC5sZW5ndGggPj0gbWF4ICYmICF0aGlzLmlzQ2hlY2tlZCB8fCB0aGlzLm1vZGVsLmxlbmd0aCA8PSBtaW4gJiYgdGhpcy5pc0NoZWNrZWQ7XG4gICAgfSxcbiAgICBpc0Rpc2FibGVkOiBmdW5jdGlvbiBpc0Rpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNHcm91cCA/IHRoaXMuX2NoZWNrYm94R3JvdXAuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCB8fCAodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkIHx8IHRoaXMuaXNMaW1pdERpc2FibGVkIDogdGhpcy5kaXNhYmxlZCB8fCAodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkO1xuICAgIH0sXG4gICAgX2VsRm9ybUl0ZW1TaXplOiBmdW5jdGlvbiBfZWxGb3JtSXRlbVNpemUoKSB7XG4gICAgICByZXR1cm4gKHRoaXMuZWxGb3JtSXRlbSB8fCB7fSkuZWxGb3JtSXRlbVNpemU7XG4gICAgfSxcbiAgICBjaGVja2JveFNpemU6IGZ1bmN0aW9uIGNoZWNrYm94U2l6ZSgpIHtcbiAgICAgIHZhciB0ZW1DaGVja2JveFNpemUgPSB0aGlzLnNpemUgfHwgdGhpcy5fZWxGb3JtSXRlbVNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7XG4gICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5fY2hlY2tib3hHcm91cC5jaGVja2JveEdyb3VwU2l6ZSB8fCB0ZW1DaGVja2JveFNpemUgOiB0ZW1DaGVja2JveFNpemU7XG4gICAgfVxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHt9LFxuICAgIGxhYmVsOiB7fSxcbiAgICBpbmRldGVybWluYXRlOiBCb29sZWFuLFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIGNoZWNrZWQ6IEJvb2xlYW4sXG4gICAgbmFtZTogU3RyaW5nLFxuICAgIHRydWVMYWJlbDogW1N0cmluZywgTnVtYmVyXSxcbiAgICBmYWxzZUxhYmVsOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgIGlkOiBTdHJpbmcsIC8qIOW9k2luZGV0ZXJtaW5hdGXkuLrnnJ/ml7bvvIzkuLpjb250cm9sc+aPkOS+m+ebuOWFs+i/nueahGNoZWNrYm9455qEaWTvvIzooajmmI7lhYPntKDpl7TnmoTmjqfliLblhbPns7sqL1xuICAgIGNvbnRyb2xzOiBTdHJpbmcsIC8qIOW9k2luZGV0ZXJtaW5hdGXkuLrnnJ/ml7bvvIzkuLpjb250cm9sc+aPkOS+m+ebuOWFs+i/nueahGNoZWNrYm9455qEaWTvvIzooajmmI7lhYPntKDpl7TnmoTmjqfliLblhbPns7sqL1xuICAgIGJvcmRlcjogQm9vbGVhbixcbiAgICBzaXplOiBTdHJpbmdcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgYWRkVG9TdG9yZTogZnVuY3Rpb24gYWRkVG9TdG9yZSgpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMubW9kZWwpICYmIHRoaXMubW9kZWwuaW5kZXhPZih0aGlzLmxhYmVsKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5tb2RlbC5wdXNoKHRoaXMubGFiZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IHRoaXMudHJ1ZUxhYmVsIHx8IHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldikge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuaXNMaW1pdEV4Y2VlZGVkKSByZXR1cm47XG4gICAgICB2YXIgdmFsdWUgPSB2b2lkIDA7XG4gICAgICBpZiAoZXYudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLnRydWVMYWJlbCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHRoaXMudHJ1ZUxhYmVsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmZhbHNlTGFiZWwgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdGhpcy5mYWxzZUxhYmVsO1xuICAgICAgfVxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsdWUsIGV2KTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLmlzR3JvdXApIHtcbiAgICAgICAgICBfdGhpcy5kaXNwYXRjaCgnRWxDaGVja2JveEdyb3VwJywgJ2NoYW5nZScsIFtfdGhpcy5fY2hlY2tib3hHcm91cC52YWx1ZV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLmNoZWNrZWQgJiYgdGhpcy5hZGRUb1N0b3JlKCk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgLy8g5Li6aW5kZXRlcm1pbmF0ZeWFg+e0oCDmt7vliqBhcmlhLWNvbnRyb2xzIOWxnuaAp1xuICAgIGlmICh0aGlzLmluZGV0ZXJtaW5hdGUpIHtcbiAgICAgIHRoaXMuJGVsLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIHRoaXMuY29udHJvbHMpO1xuICAgIH1cbiAgfSxcblxuXG4gIHdhdGNoOiB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKF92YWx1ZSkge1xuICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmNoYW5nZScsIF92YWx1ZSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfY2hlY2tib3h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoY2hlY2tib3h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXG52YXIgY29tcG9uZW50Tm9ybWFsaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNvbXBvbmVudCA9IE9iamVjdChjb21wb25lbnROb3JtYWxpemVyW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShcbiAgc3JjX2NoZWNrYm94dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgYXBpOyB9XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2NoZWNrYm94ID0gKGNvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3JjX2NoZWNrYm94Lmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoc3JjX2NoZWNrYm94Lm5hbWUsIHNyY19jaGVja2JveCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19jaGVja2JveCA9IF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKHNyY19jaGVja2JveCk7XG5cbi8qKiovIH0pXG5cbi8qKioqKiovIH0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/checkbox.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/element-ui.common.js":
/*!**********************************************************!*\
!*** ./node_modules/element-ui/lib/element-ui.common.js ***!
\**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 46);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/date-util */ \"./node_modules/element-ui/lib/utils/date-util.js\");\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/dom */ \"./node_modules/element-ui/lib/utils/dom.js\");\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/emitter */ \"./node_modules/element-ui/lib/mixins/emitter.js\");\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/locale */ \"./node_modules/element-ui/lib/mixins/locale.js\");\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/vue-popper */ \"./node_modules/element-ui/lib/utils/vue-popper.js\");\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/merge */ \"./node_modules/element-ui/lib/utils/merge.js\");\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/input */ \"./node_modules/element-ui/lib/input.js\");\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/migrating */ \"./node_modules/element-ui/lib/mixins/migrating.js\");\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/clickoutside */ \"./node_modules/element-ui/lib/utils/clickoutside.js\");\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/popup */ \"./node_modules/element-ui/lib/utils/popup/index.js\");\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/locale */ \"./node_modules/element-ui/lib/locale/index.js\");\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/button */ \"./node_modules/element-ui/lib/button.js\");\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/checkbox */ \"./node_modules/element-ui/lib/checkbox.js\");\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/resize-event */ \"./node_modules/element-ui/lib/utils/resize-event.js\");\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/types */ \"./node_modules/element-ui/lib/utils/types.js\");\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! throttle-debounce/debounce */ \"./node_modules/throttle-debounce/debounce.js\");\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/scrollbar */ \"./node_modules/element-ui/lib/scrollbar.js\");\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/shared */ \"./node_modules/element-ui/lib/utils/shared.js\");\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/date */ \"./node_modules/element-ui/lib/utils/date.js\");\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/transitions/collapse-transition */ \"./node_modules/element-ui/lib/transitions/collapse-transition.js\");\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/vdom */ \"./node_modules/element-ui/lib/utils/vdom.js\");\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/focus */ \"./node_modules/element-ui/lib/mixins/focus.js\");\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! babel-helper-vue-jsx-merge-props */ \"./node_modules/babel-helper-vue-jsx-merge-props/index.js\");\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! throttle-debounce/throttle */ \"./node_modules/throttle-debounce/throttle.js\");\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/tooltip */ \"./node_modules/element-ui/lib/tooltip.js\");\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/scroll-into-view */ \"./node_modules/element-ui/lib/utils/scroll-into-view.js\");\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/lodash */ \"./node_modules/element-ui/lib/utils/lodash.js\");\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/button-group */ \"./node_modules/element-ui/lib/button-group.js\");\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/tag */ \"./node_modules/element-ui/lib/tag.js\");\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/scrollbar-width */ \"./node_modules/element-ui/lib/utils/scrollbar-width.js\");\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/checkbox-group */ \"./node_modules/element-ui/lib/checkbox-group.js\");\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/after-leave */ \"./node_modules/element-ui/lib/utils/after-leave.js\");\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/progress */ \"./node_modules/element-ui/lib/progress.js\");\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/aria-utils */ \"./node_modules/element-ui/lib/utils/aria-utils.js\");\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! throttle-debounce */ \"./node_modules/throttle-debounce/index.js\");\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/select */ \"./node_modules/element-ui/lib/select.js\");\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/option */ \"./node_modules/element-ui/lib/option.js\");\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! normalize-wheel */ \"./node_modules/normalize-wheel/index.js\");\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/aria-dialog */ \"./node_modules/element-ui/lib/utils/aria-dialog.js\");\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! async-validator */ \"./node_modules/async-validator/es/index.js\");\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/input-number */ \"./node_modules/element-ui/lib/input-number.js\");\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/cascader-panel */ \"./node_modules/element-ui/lib/cascader-panel.js\");\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/radio */ \"./node_modules/element-ui/lib/radio.js\");\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/popover */ \"./node_modules/element-ui/lib/popover.js\");\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __nested_webpack_require_8794__) {\n\nmodule.exports = __nested_webpack_require_8794__(47);\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_8926__) {\n\n\"use strict\";\n__nested_webpack_require_8926__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/pagination/src/pager.vue?vue&type=template&id=7274f267&\nvar pagervue_type_template_id_7274f267_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"ul\",\n { staticClass: \"el-pager\", on: { click: _vm.onPagerClick } },\n [\n _vm.pageCount > 0\n ? _c(\n \"li\",\n {\n staticClass: \"number\",\n class: { active: _vm.currentPage === 1, disabled: _vm.disabled }\n },\n [_vm._v(\"1\")]\n )\n : _vm._e(),\n _vm.showPrevMore\n ? _c(\"li\", {\n staticClass: \"el-icon more btn-quickprev\",\n class: [_vm.quickprevIconClass, { disabled: _vm.disabled }],\n on: {\n mouseenter: function($event) {\n _vm.onMouseenter(\"left\")\n },\n mouseleave: function($event) {\n _vm.quickprevIconClass = \"el-icon-more\"\n }\n }\n })\n : _vm._e(),\n _vm._l(_vm.pagers, function(pager) {\n return _c(\n \"li\",\n {\n key: pager,\n staticClass: \"number\",\n class: { active: _vm.currentPage === pager, disabled: _vm.disabled }\n },\n [_vm._v(_vm._s(pager))]\n )\n }),\n _vm.showNextMore\n ? _c(\"li\", {\n staticClass: \"el-icon more btn-quicknext\",\n class: [_vm.quicknextIconClass, { disabled: _vm.disabled }],\n on: {\n mouseenter: function($event) {\n _vm.onMouseenter(\"right\")\n },\n mouseleave: function($event) {\n _vm.quicknextIconClass = \"el-icon-more\"\n }\n }\n })\n : _vm._e(),\n _vm.pageCount > 1\n ? _c(\n \"li\",\n {\n staticClass: \"number\",\n class: {\n active: _vm.currentPage === _vm.pageCount,\n disabled: _vm.disabled\n }\n },\n [_vm._v(_vm._s(_vm.pageCount))]\n )\n : _vm._e()\n ],\n 2\n )\n}\nvar staticRenderFns = []\npagervue_type_template_id_7274f267_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/pagination/src/pager.vue?vue&type=template&id=7274f267&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/pagination/src/pager.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var pagervue_type_script_lang_js_ = ({\n name: 'ElPager',\n\n props: {\n currentPage: Number,\n\n pageCount: Number,\n\n pagerCount: Number,\n\n disabled: Boolean\n },\n\n watch: {\n showPrevMore: function showPrevMore(val) {\n if (!val) this.quickprevIconClass = 'el-icon-more';\n },\n showNextMore: function showNextMore(val) {\n if (!val) this.quicknextIconClass = 'el-icon-more';\n }\n },\n\n methods: {\n onPagerClick: function onPagerClick(event) {\n var target = event.target;\n if (target.tagName === 'UL' || this.disabled) {\n return;\n }\n\n var newPage = Number(event.target.textContent);\n var pageCount = this.pageCount;\n var currentPage = this.currentPage;\n var pagerCountOffset = this.pagerCount - 2;\n\n if (target.className.indexOf('more') !== -1) {\n if (target.className.indexOf('quickprev') !== -1) {\n newPage = currentPage - pagerCountOffset;\n } else if (target.className.indexOf('quicknext') !== -1) {\n newPage = currentPage + pagerCountOffset;\n }\n }\n\n /* istanbul ignore if */\n if (!isNaN(newPage)) {\n if (newPage < 1) {\n newPage = 1;\n }\n\n if (newPage > pageCount) {\n newPage = pageCount;\n }\n }\n\n if (newPage !== currentPage) {\n this.$emit('change', newPage);\n }\n },\n onMouseenter: function onMouseenter(direction) {\n if (this.disabled) return;\n if (direction === 'left') {\n this.quickprevIconClass = 'el-icon-d-arrow-left';\n } else {\n this.quicknextIconClass = 'el-icon-d-arrow-right';\n }\n }\n },\n\n computed: {\n pagers: function pagers() {\n var pagerCount = this.pagerCount;\n var halfPagerCount = (pagerCount - 1) / 2;\n\n var currentPage = Number(this.currentPage);\n var pageCount = Number(this.pageCount);\n\n var showPrevMore = false;\n var showNextMore = false;\n\n if (pageCount > pagerCount) {\n if (currentPage > pagerCount - halfPagerCount) {\n showPrevMore = true;\n }\n\n if (currentPage < pageCount - halfPagerCount) {\n showNextMore = true;\n }\n }\n\n var array = [];\n\n if (showPrevMore && !showNextMore) {\n var startPage = pageCount - (pagerCount - 2);\n for (var i = startPage; i < pageCount; i++) {\n array.push(i);\n }\n } else if (!showPrevMore && showNextMore) {\n for (var _i = 2; _i < pagerCount; _i++) {\n array.push(_i);\n }\n } else if (showPrevMore && showNextMore) {\n var offset = Math.floor(pagerCount / 2) - 1;\n for (var _i2 = currentPage - offset; _i2 <= currentPage + offset; _i2++) {\n array.push(_i2);\n }\n } else {\n for (var _i3 = 2; _i3 < pageCount; _i3++) {\n array.push(_i3);\n }\n }\n\n this.showPrevMore = showPrevMore;\n this.showNextMore = showNextMore;\n\n return array;\n }\n },\n\n data: function data() {\n return {\n current: null,\n showPrevMore: false,\n showNextMore: false,\n quicknextIconClass: 'el-icon-more',\n quickprevIconClass: 'el-icon-more'\n };\n }\n});\n// CONCATENATED MODULE: ./packages/pagination/src/pager.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_pagervue_type_script_lang_js_ = (pagervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n// CONCATENATED MODULE: ./packages/pagination/src/pager.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n src_pagervue_type_script_lang_js_,\n pagervue_type_template_id_7274f267_render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/pagination/src/pager.vue\"\n/* harmony default export */ var pager = (component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/select\"\nvar select_ = __nested_webpack_require_8926__(37);\nvar select_default = /*#__PURE__*/__nested_webpack_require_8926__.n(select_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/option\"\nvar option_ = __nested_webpack_require_8926__(38);\nvar option_default = /*#__PURE__*/__nested_webpack_require_8926__.n(option_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/input\"\nvar input_ = __nested_webpack_require_8926__(8);\nvar input_default = /*#__PURE__*/__nested_webpack_require_8926__.n(input_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/locale\"\nvar locale_ = __nested_webpack_require_8926__(4);\nvar locale_default = /*#__PURE__*/__nested_webpack_require_8926__.n(locale_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __nested_webpack_require_8926__(2);\n\n// CONCATENATED MODULE: ./packages/pagination/src/pagination.js\n\n\n\n\n\n\n\n/* harmony default export */ var pagination = ({\n name: 'ElPagination',\n\n props: {\n pageSize: {\n type: Number,\n default: 10\n },\n\n small: Boolean,\n\n total: Number,\n\n pageCount: Number,\n\n pagerCount: {\n type: Number,\n validator: function validator(value) {\n return (value | 0) === value && value > 4 && value < 22 && value % 2 === 1;\n },\n\n default: 7\n },\n\n currentPage: {\n type: Number,\n default: 1\n },\n\n layout: {\n default: 'prev, pager, next, jumper, ->, total'\n },\n\n pageSizes: {\n type: Array,\n default: function _default() {\n return [10, 20, 30, 40, 50, 100];\n }\n },\n\n popperClass: String,\n\n prevText: String,\n\n nextText: String,\n\n background: Boolean,\n\n disabled: Boolean,\n\n hideOnSinglePage: Boolean\n },\n\n data: function data() {\n return {\n internalCurrentPage: 1,\n internalPageSize: 0,\n lastEmittedPage: -1,\n userChangePageSize: false\n };\n },\n render: function render(h) {\n var layout = this.layout;\n if (!layout) return null;\n if (this.hideOnSinglePage && (!this.internalPageCount || this.internalPageCount === 1)) return null;\n\n var template = h('div', { 'class': ['el-pagination', {\n 'is-background': this.background,\n 'el-pagination--small': this.small\n }] });\n var TEMPLATE_MAP = {\n prev: h('prev'),\n jumper: h('jumper'),\n pager: h('pager', {\n attrs: { currentPage: this.internalCurrentPage, pageCount: this.internalPageCount, pagerCount: this.pagerCount, disabled: this.disabled },\n on: {\n 'change': this.handleCurrentChange\n }\n }),\n next: h('next'),\n sizes: h('sizes', {\n attrs: { pageSizes: this.pageSizes }\n }),\n slot: h('slot', [this.$slots.default ? this.$slots.default : '']),\n total: h('total')\n };\n var components = layout.split(',').map(function (item) {\n return item.trim();\n });\n var rightWrapper = h('div', { 'class': 'el-pagination__rightwrapper' });\n var haveRightWrapper = false;\n\n template.children = template.children || [];\n rightWrapper.children = rightWrapper.children || [];\n components.forEach(function (compo) {\n if (compo === '->') {\n haveRightWrapper = true;\n return;\n }\n\n if (!haveRightWrapper) {\n template.children.push(TEMPLATE_MAP[compo]);\n } else {\n rightWrapper.children.push(TEMPLATE_MAP[compo]);\n }\n });\n\n if (haveRightWrapper) {\n template.children.unshift(rightWrapper);\n }\n\n return template;\n },\n\n\n components: {\n Prev: {\n render: function render(h) {\n return h(\n 'button',\n {\n attrs: {\n type: 'button',\n\n disabled: this.$parent.disabled || this.$parent.internalCurrentPage <= 1\n },\n 'class': 'btn-prev', on: {\n 'click': this.$parent.prev\n }\n },\n [this.$parent.prevText ? h('span', [this.$parent.prevText]) : h('i', { 'class': 'el-icon el-icon-arrow-left' })]\n );\n }\n },\n\n Next: {\n render: function render(h) {\n return h(\n 'button',\n {\n attrs: {\n type: 'button',\n\n disabled: this.$parent.disabled || this.$parent.internalCurrentPage === this.$parent.internalPageCount || this.$parent.internalPageCount === 0\n },\n 'class': 'btn-next', on: {\n 'click': this.$parent.next\n }\n },\n [this.$parent.nextText ? h('span', [this.$parent.nextText]) : h('i', { 'class': 'el-icon el-icon-arrow-right' })]\n );\n }\n },\n\n Sizes: {\n mixins: [locale_default.a],\n\n props: {\n pageSizes: Array\n },\n\n watch: {\n pageSizes: {\n immediate: true,\n handler: function handler(newVal, oldVal) {\n if (Object(util_[\"valueEquals\"])(newVal, oldVal)) return;\n if (Array.isArray(newVal)) {\n this.$parent.internalPageSize = newVal.indexOf(this.$parent.pageSize) > -1 ? this.$parent.pageSize : this.pageSizes[0];\n }\n }\n }\n },\n\n render: function render(h) {\n var _this = this;\n\n return h(\n 'span',\n { 'class': 'el-pagination__sizes' },\n [h(\n 'el-select',\n {\n attrs: {\n value: this.$parent.internalPageSize,\n popperClass: this.$parent.popperClass || '',\n size: 'mini',\n\n disabled: this.$parent.disabled },\n on: {\n 'input': this.handleChange\n }\n },\n [this.pageSizes.map(function (item) {\n return h('el-option', {\n attrs: {\n value: item,\n label: item + _this.t('el.pagination.pagesize') }\n });\n })]\n )]\n );\n },\n\n\n components: {\n ElSelect: select_default.a,\n ElOption: option_default.a\n },\n\n methods: {\n handleChange: function handleChange(val) {\n if (val !== this.$parent.internalPageSize) {\n this.$parent.internalPageSize = val = parseInt(val, 10);\n this.$parent.userChangePageSize = true;\n this.$parent.$emit('update:pageSize', val);\n this.$parent.$emit('size-change', val);\n }\n }\n }\n },\n\n Jumper: {\n mixins: [locale_default.a],\n\n components: { ElInput: input_default.a },\n\n data: function data() {\n return {\n userInput: null\n };\n },\n\n\n watch: {\n '$parent.internalCurrentPage': function $parentInternalCurrentPage() {\n this.userInput = null;\n }\n },\n\n methods: {\n handleKeyup: function handleKeyup(_ref) {\n var keyCode = _ref.keyCode,\n target = _ref.target;\n\n // Chrome, Safari, Firefox triggers change event on Enter\n // Hack for IE: https://github.com/ElemeFE/element/issues/11710\n // Drop this method when we no longer supports IE\n if (keyCode === 13) {\n this.handleChange(target.value);\n }\n },\n handleInput: function handleInput(value) {\n this.userInput = value;\n },\n handleChange: function handleChange(value) {\n this.$parent.internalCurrentPage = this.$parent.getValidCurrentPage(value);\n this.$parent.emitChange();\n this.userInput = null;\n }\n },\n\n render: function render(h) {\n return h(\n 'span',\n { 'class': 'el-pagination__jump' },\n [this.t('el.pagination.goto'), h('el-input', {\n 'class': 'el-pagination__editor is-in-pagination',\n attrs: { min: 1,\n max: this.$parent.internalPageCount,\n value: this.userInput !== null ? this.userInput : this.$parent.internalCurrentPage,\n type: 'number',\n disabled: this.$parent.disabled\n },\n nativeOn: {\n 'keyup': this.handleKeyup\n },\n on: {\n 'input': this.handleInput,\n 'change': this.handleChange\n }\n }), this.t('el.pagination.pageClassifier')]\n );\n }\n },\n\n Total: {\n mixins: [locale_default.a],\n\n render: function render(h) {\n return typeof this.$parent.total === 'number' ? h(\n 'span',\n { 'class': 'el-pagination__total' },\n [this.t('el.pagination.total', { total: this.$parent.total })]\n ) : '';\n }\n },\n\n Pager: pager\n },\n\n methods: {\n handleCurrentChange: function handleCurrentChange(val) {\n this.internalCurrentPage = this.getValidCurrentPage(val);\n this.userChangePageSize = true;\n this.emitChange();\n },\n prev: function prev() {\n if (this.disabled) return;\n var newVal = this.internalCurrentPage - 1;\n this.internalCurrentPage = this.getValidCurrentPage(newVal);\n this.$emit('prev-click', this.internalCurrentPage);\n this.emitChange();\n },\n next: function next() {\n if (this.disabled) return;\n var newVal = this.internalCurrentPage + 1;\n this.internalCurrentPage = this.getValidCurrentPage(newVal);\n this.$emit('next-click', this.internalCurrentPage);\n this.emitChange();\n },\n getValidCurrentPage: function getValidCurrentPage(value) {\n value = parseInt(value, 10);\n\n var havePageCount = typeof this.internalPageCount === 'number';\n\n var resetValue = void 0;\n if (!havePageCount) {\n if (isNaN(value) || value < 1) resetValue = 1;\n } else {\n if (value < 1) {\n resetValue = 1;\n } else if (value > this.internalPageCount) {\n resetValue = this.internalPageCount;\n }\n }\n\n if (resetValue === undefined && isNaN(value)) {\n resetValue = 1;\n } else if (resetValue === 0) {\n resetValue = 1;\n }\n\n return resetValue === undefined ? value : resetValue;\n },\n emitChange: function emitChange() {\n var _this2 = this;\n\n this.$nextTick(function () {\n if (_this2.internalCurrentPage !== _this2.lastEmittedPage || _this2.userChangePageSize) {\n _this2.$emit('current-change', _this2.internalCurrentPage);\n _this2.lastEmittedPage = _this2.internalCurrentPage;\n _this2.userChangePageSize = false;\n }\n });\n }\n },\n\n computed: {\n internalPageCount: function internalPageCount() {\n if (typeof this.total === 'number') {\n return Math.max(1, Math.ceil(this.total / this.internalPageSize));\n } else if (typeof this.pageCount === 'number') {\n return Math.max(1, this.pageCount);\n }\n return null;\n }\n },\n\n watch: {\n currentPage: {\n immediate: true,\n handler: function handler(val) {\n this.internalCurrentPage = this.getValidCurrentPage(val);\n }\n },\n\n pageSize: {\n immediate: true,\n handler: function handler(val) {\n this.internalPageSize = isNaN(val) ? 10 : val;\n }\n },\n\n internalCurrentPage: {\n immediate: true,\n handler: function handler(newVal) {\n this.$emit('update:currentPage', newVal);\n this.lastEmittedPage = -1;\n }\n },\n\n internalPageCount: function internalPageCount(newVal) {\n /* istanbul ignore if */\n var oldPage = this.internalCurrentPage;\n if (newVal > 0 && oldPage === 0) {\n this.internalCurrentPage = 1;\n } else if (oldPage > newVal) {\n this.internalCurrentPage = newVal === 0 ? 1 : newVal;\n this.userChangePageSize && this.emitChange();\n }\n this.userChangePageSize = false;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/pagination/index.js\n\n\n/* istanbul ignore next */\npagination.install = function (Vue) {\n Vue.component(pagination.name, pagination);\n};\n\n/* harmony default export */ var packages_pagination = (pagination);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/dialog/src/component.vue?vue&type=template&id=60140e62&\nvar componentvue_type_template_id_60140e62_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"dialog-fade\" },\n on: { \"after-enter\": _vm.afterEnter, \"after-leave\": _vm.afterLeave }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-dialog__wrapper\",\n on: {\n click: function($event) {\n if ($event.target !== $event.currentTarget) {\n return null\n }\n return _vm.handleWrapperClick($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n key: _vm.key,\n ref: \"dialog\",\n class: [\n \"el-dialog\",\n {\n \"is-fullscreen\": _vm.fullscreen,\n \"el-dialog--center\": _vm.center\n },\n _vm.customClass\n ],\n style: _vm.style,\n attrs: {\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-label\": _vm.title || \"dialog\"\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-dialog__header\" },\n [\n _vm._t(\"title\", [\n _c(\"span\", { staticClass: \"el-dialog__title\" }, [\n _vm._v(_vm._s(_vm.title))\n ])\n ]),\n _vm.showClose\n ? _c(\n \"button\",\n {\n staticClass: \"el-dialog__headerbtn\",\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n on: { click: _vm.handleClose }\n },\n [\n _c(\"i\", {\n staticClass:\n \"el-dialog__close el-icon el-icon-close\"\n })\n ]\n )\n : _vm._e()\n ],\n 2\n ),\n _vm.rendered\n ? _c(\n \"div\",\n { staticClass: \"el-dialog__body\" },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e(),\n _vm.$slots.footer\n ? _c(\n \"div\",\n { staticClass: \"el-dialog__footer\" },\n [_vm._t(\"footer\")],\n 2\n )\n : _vm._e()\n ]\n )\n ]\n )\n ]\n )\n}\nvar componentvue_type_template_id_60140e62_staticRenderFns = []\ncomponentvue_type_template_id_60140e62_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/dialog/src/component.vue?vue&type=template&id=60140e62&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/popup\"\nvar popup_ = __nested_webpack_require_8926__(11);\nvar popup_default = /*#__PURE__*/__nested_webpack_require_8926__.n(popup_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/migrating\"\nvar migrating_ = __nested_webpack_require_8926__(9);\nvar migrating_default = /*#__PURE__*/__nested_webpack_require_8926__.n(migrating_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __nested_webpack_require_8926__(3);\nvar emitter_default = /*#__PURE__*/__nested_webpack_require_8926__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dialog/src/component.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var componentvue_type_script_lang_js_ = ({\n name: 'ElDialog',\n\n mixins: [popup_default.a, emitter_default.a, migrating_default.a],\n\n props: {\n title: {\n type: String,\n default: ''\n },\n\n modal: {\n type: Boolean,\n default: true\n },\n\n modalAppendToBody: {\n type: Boolean,\n default: true\n },\n\n appendToBody: {\n type: Boolean,\n default: false\n },\n\n lockScroll: {\n type: Boolean,\n default: true\n },\n\n closeOnClickModal: {\n type: Boolean,\n default: true\n },\n\n closeOnPressEscape: {\n type: Boolean,\n default: true\n },\n\n showClose: {\n type: Boolean,\n default: true\n },\n\n width: String,\n\n fullscreen: Boolean,\n\n customClass: {\n type: String,\n default: ''\n },\n\n top: {\n type: String,\n default: '15vh'\n },\n beforeClose: Function,\n center: {\n type: Boolean,\n default: false\n },\n\n destroyOnClose: Boolean\n },\n\n data: function data() {\n return {\n closed: false,\n key: 0\n };\n },\n\n\n watch: {\n visible: function visible(val) {\n var _this = this;\n\n if (val) {\n this.closed = false;\n this.$emit('open');\n this.$el.addEventListener('scroll', this.updatePopper);\n this.$nextTick(function () {\n _this.$refs.dialog.scrollTop = 0;\n });\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n } else {\n this.$el.removeEventListener('scroll', this.updatePopper);\n if (!this.closed) this.$emit('close');\n if (this.destroyOnClose) {\n this.$nextTick(function () {\n _this.key++;\n });\n }\n }\n }\n },\n\n computed: {\n style: function style() {\n var style = {};\n if (!this.fullscreen) {\n style.marginTop = this.top;\n if (this.width) {\n style.width = this.width;\n }\n }\n return style;\n }\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'size': 'size is removed.'\n }\n };\n },\n handleWrapperClick: function handleWrapperClick() {\n if (!this.closeOnClickModal) return;\n this.handleClose();\n },\n handleClose: function handleClose() {\n if (typeof this.beforeClose === 'function') {\n this.beforeClose(this.hide);\n } else {\n this.hide();\n }\n },\n hide: function hide(cancel) {\n if (cancel !== false) {\n this.$emit('update:visible', false);\n this.$emit('close');\n this.closed = true;\n }\n },\n updatePopper: function updatePopper() {\n this.broadcast('ElSelectDropdown', 'updatePopper');\n this.broadcast('ElDropdownMenu', 'updatePopper');\n },\n afterEnter: function afterEnter() {\n this.$emit('opened');\n },\n afterLeave: function afterLeave() {\n this.$emit('closed');\n }\n },\n\n mounted: function mounted() {\n if (this.visible) {\n this.rendered = true;\n this.open();\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n }\n },\n destroyed: function destroyed() {\n // if appendToBody is true, remove DOM node after destroy\n if (this.appendToBody && this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/dialog/src/component.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_componentvue_type_script_lang_js_ = (componentvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dialog/src/component.vue\n\n\n\n\n\n/* normalize component */\n\nvar component_component = normalizeComponent(\n src_componentvue_type_script_lang_js_,\n componentvue_type_template_id_60140e62_render,\n componentvue_type_template_id_60140e62_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var component_api; }\ncomponent_component.options.__file = \"packages/dialog/src/component.vue\"\n/* harmony default export */ var src_component = (component_component.exports);\n// CONCATENATED MODULE: ./packages/dialog/index.js\n\n\n/* istanbul ignore next */\nsrc_component.install = function (Vue) {\n Vue.component(src_component.name, src_component);\n};\n\n/* harmony default export */ var dialog = (src_component);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete.vue?vue&type=template&id=152f2ee6&\nvar autocompletevue_type_template_id_152f2ee6_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.close,\n expression: \"close\"\n }\n ],\n staticClass: \"el-autocomplete\",\n attrs: {\n \"aria-haspopup\": \"listbox\",\n role: \"combobox\",\n \"aria-expanded\": _vm.suggestionVisible,\n \"aria-owns\": _vm.id\n }\n },\n [\n _c(\n \"el-input\",\n _vm._b(\n {\n ref: \"input\",\n on: {\n input: _vm.handleInput,\n change: _vm.handleChange,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n clear: _vm.handleClear\n },\n nativeOn: {\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.highlight(_vm.highlightedIndex - 1)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.highlight(_vm.highlightedIndex + 1)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.handleKeyEnter($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n return _vm.close($event)\n }\n ]\n }\n },\n \"el-input\",\n [_vm.$props, _vm.$attrs],\n false\n ),\n [\n _vm.$slots.prepend\n ? _c(\"template\", { slot: \"prepend\" }, [_vm._t(\"prepend\")], 2)\n : _vm._e(),\n _vm.$slots.append\n ? _c(\"template\", { slot: \"append\" }, [_vm._t(\"append\")], 2)\n : _vm._e(),\n _vm.$slots.prefix\n ? _c(\"template\", { slot: \"prefix\" }, [_vm._t(\"prefix\")], 2)\n : _vm._e(),\n _vm.$slots.suffix\n ? _c(\"template\", { slot: \"suffix\" }, [_vm._t(\"suffix\")], 2)\n : _vm._e()\n ],\n 2\n ),\n _c(\n \"el-autocomplete-suggestions\",\n {\n ref: \"suggestions\",\n class: [_vm.popperClass ? _vm.popperClass : \"\"],\n attrs: {\n \"visible-arrow\": \"\",\n \"popper-options\": _vm.popperOptions,\n \"append-to-body\": _vm.popperAppendToBody,\n placement: _vm.placement,\n id: _vm.id\n }\n },\n _vm._l(_vm.suggestions, function(item, index) {\n return _c(\n \"li\",\n {\n key: index,\n class: { highlighted: _vm.highlightedIndex === index },\n attrs: {\n id: _vm.id + \"-item-\" + index,\n role: \"option\",\n \"aria-selected\": _vm.highlightedIndex === index\n },\n on: {\n click: function($event) {\n _vm.select(item)\n }\n }\n },\n [\n _vm._t(\n \"default\",\n [\n _vm._v(\"\\n \" + _vm._s(item[_vm.valueKey]) + \"\\n \")\n ],\n { item: item }\n )\n ],\n 2\n )\n }),\n 0\n )\n ],\n 1\n )\n}\nvar autocompletevue_type_template_id_152f2ee6_staticRenderFns = []\nautocompletevue_type_template_id_152f2ee6_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete.vue?vue&type=template&id=152f2ee6&\n\n// EXTERNAL MODULE: external \"throttle-debounce/debounce\"\nvar debounce_ = __nested_webpack_require_8926__(17);\nvar debounce_default = /*#__PURE__*/__nested_webpack_require_8926__.n(debounce_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/clickoutside\"\nvar clickoutside_ = __nested_webpack_require_8926__(10);\nvar clickoutside_default = /*#__PURE__*/__nested_webpack_require_8926__.n(clickoutside_);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=template&id=cd10dcf0&\nvar autocomplete_suggestionsvue_type_template_id_cd10dcf0_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n { attrs: { name: \"el-zoom-in-top\" }, on: { \"after-leave\": _vm.doDestroy } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showPopper,\n expression: \"showPopper\"\n }\n ],\n staticClass: \"el-autocomplete-suggestion el-popper\",\n class: {\n \"is-loading\": !_vm.parent.hideLoading && _vm.parent.loading\n },\n style: { width: _vm.dropdownWidth },\n attrs: { role: \"region\" }\n },\n [\n _c(\n \"el-scrollbar\",\n {\n attrs: {\n tag: \"ul\",\n \"wrap-class\": \"el-autocomplete-suggestion__wrap\",\n \"view-class\": \"el-autocomplete-suggestion__list\"\n }\n },\n [\n !_vm.parent.hideLoading && _vm.parent.loading\n ? _c(\"li\", [_c(\"i\", { staticClass: \"el-icon-loading\" })])\n : _vm._t(\"default\")\n ],\n 2\n )\n ],\n 1\n )\n ]\n )\n}\nvar autocomplete_suggestionsvue_type_template_id_cd10dcf0_staticRenderFns = []\nautocomplete_suggestionsvue_type_template_id_cd10dcf0_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=template&id=cd10dcf0&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vue-popper\"\nvar vue_popper_ = __nested_webpack_require_8926__(5);\nvar vue_popper_default = /*#__PURE__*/__nested_webpack_require_8926__.n(vue_popper_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/scrollbar\"\nvar scrollbar_ = __nested_webpack_require_8926__(18);\nvar scrollbar_default = /*#__PURE__*/__nested_webpack_require_8926__.n(scrollbar_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var autocomplete_suggestionsvue_type_script_lang_js_ = ({\n components: { ElScrollbar: scrollbar_default.a },\n mixins: [vue_popper_default.a, emitter_default.a],\n\n componentName: 'ElAutocompleteSuggestions',\n\n data: function data() {\n return {\n parent: this.$parent,\n dropdownWidth: ''\n };\n },\n\n\n props: {\n options: {\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n },\n id: String\n },\n\n methods: {\n select: function select(item) {\n this.dispatch('ElAutocomplete', 'item-click', item);\n }\n },\n\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function (_) {\n _this.popperJS && _this.updatePopper();\n });\n },\n mounted: function mounted() {\n this.$parent.popperElm = this.popperElm = this.$el;\n this.referenceElm = this.$parent.$refs.input.$refs.input || this.$parent.$refs.input.$refs.textarea;\n this.referenceList = this.$el.querySelector('.el-autocomplete-suggestion__list');\n this.referenceList.setAttribute('role', 'listbox');\n this.referenceList.setAttribute('id', this.id);\n },\n created: function created() {\n var _this2 = this;\n\n this.$on('visible', function (val, inputWidth) {\n _this2.dropdownWidth = inputWidth + 'px';\n _this2.showPopper = val;\n });\n }\n});\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_autocomplete_suggestionsvue_type_script_lang_js_ = (autocomplete_suggestionsvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue\n\n\n\n\n\n/* normalize component */\n\nvar autocomplete_suggestions_component = normalizeComponent(\n src_autocomplete_suggestionsvue_type_script_lang_js_,\n autocomplete_suggestionsvue_type_template_id_cd10dcf0_render,\n autocomplete_suggestionsvue_type_template_id_cd10dcf0_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var autocomplete_suggestions_api; }\nautocomplete_suggestions_component.options.__file = \"packages/autocomplete/src/autocomplete-suggestions.vue\"\n/* harmony default export */ var autocomplete_suggestions = (autocomplete_suggestions_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/focus\"\nvar focus_ = __nested_webpack_require_8926__(23);\nvar focus_default = /*#__PURE__*/__nested_webpack_require_8926__.n(focus_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/autocomplete/src/autocomplete.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var autocompletevue_type_script_lang_js_ = ({\n name: 'ElAutocomplete',\n\n mixins: [emitter_default.a, focus_default()('input'), migrating_default.a],\n\n inheritAttrs: false,\n\n componentName: 'ElAutocomplete',\n\n components: {\n ElInput: input_default.a,\n ElAutocompleteSuggestions: autocomplete_suggestions\n },\n\n directives: { Clickoutside: clickoutside_default.a },\n\n props: {\n valueKey: {\n type: String,\n default: 'value'\n },\n popperClass: String,\n popperOptions: Object,\n placeholder: String,\n clearable: {\n type: Boolean,\n default: false\n },\n disabled: Boolean,\n name: String,\n size: String,\n value: String,\n maxlength: Number,\n minlength: Number,\n autofocus: Boolean,\n fetchSuggestions: Function,\n triggerOnFocus: {\n type: Boolean,\n default: true\n },\n customItem: String,\n selectWhenUnmatched: {\n type: Boolean,\n default: false\n },\n prefixIcon: String,\n suffixIcon: String,\n label: String,\n debounce: {\n type: Number,\n default: 300\n },\n placement: {\n type: String,\n default: 'bottom-start'\n },\n hideLoading: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: true\n },\n highlightFirstItem: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n activated: false,\n suggestions: [],\n loading: false,\n highlightedIndex: -1,\n suggestionDisabled: false\n };\n },\n\n computed: {\n suggestionVisible: function suggestionVisible() {\n var suggestions = this.suggestions;\n var isValidData = Array.isArray(suggestions) && suggestions.length > 0;\n return (isValidData || this.loading) && this.activated;\n },\n id: function id() {\n return 'el-autocomplete-' + Object(util_[\"generateId\"])();\n }\n },\n watch: {\n suggestionVisible: function suggestionVisible(val) {\n var $input = this.getInput();\n if ($input) {\n this.broadcast('ElAutocompleteSuggestions', 'visible', [val, $input.offsetWidth]);\n }\n }\n },\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'custom-item': 'custom-item is removed, use scoped slot instead.',\n 'props': 'props is removed, use value-key instead.'\n }\n };\n },\n getData: function getData(queryString) {\n var _this = this;\n\n if (this.suggestionDisabled) {\n return;\n }\n this.loading = true;\n this.fetchSuggestions(queryString, function (suggestions) {\n _this.loading = false;\n if (_this.suggestionDisabled) {\n return;\n }\n if (Array.isArray(suggestions)) {\n _this.suggestions = suggestions;\n _this.highlightedIndex = _this.highlightFirstItem ? 0 : -1;\n } else {\n console.error('[Element Error][Autocomplete]autocomplete suggestions must be an array');\n }\n });\n },\n handleInput: function handleInput(value) {\n this.$emit('input', value);\n this.suggestionDisabled = false;\n if (!this.triggerOnFocus && !value) {\n this.suggestionDisabled = true;\n this.suggestions = [];\n return;\n }\n this.debouncedGetData(value);\n },\n handleChange: function handleChange(value) {\n this.$emit('change', value);\n },\n handleFocus: function handleFocus(event) {\n this.activated = true;\n this.$emit('focus', event);\n if (this.triggerOnFocus) {\n this.debouncedGetData(this.value);\n }\n },\n handleBlur: function handleBlur(event) {\n this.$emit('blur', event);\n },\n handleClear: function handleClear() {\n this.activated = false;\n this.$emit('clear');\n },\n close: function close(e) {\n this.activated = false;\n },\n handleKeyEnter: function handleKeyEnter(e) {\n var _this2 = this;\n\n if (this.suggestionVisible && this.highlightedIndex >= 0 && this.highlightedIndex < this.suggestions.length) {\n e.preventDefault();\n this.select(this.suggestions[this.highlightedIndex]);\n } else if (this.selectWhenUnmatched) {\n this.$emit('select', { value: this.value });\n this.$nextTick(function (_) {\n _this2.suggestions = [];\n _this2.highlightedIndex = -1;\n });\n }\n },\n select: function select(item) {\n var _this3 = this;\n\n this.$emit('input', item[this.valueKey]);\n this.$emit('select', item);\n this.$nextTick(function (_) {\n _this3.suggestions = [];\n _this3.highlightedIndex = -1;\n });\n },\n highlight: function highlight(index) {\n if (!this.suggestionVisible || this.loading) {\n return;\n }\n if (index < 0) {\n this.highlightedIndex = -1;\n return;\n }\n if (index >= this.suggestions.length) {\n index = this.suggestions.length - 1;\n }\n var suggestion = this.$refs.suggestions.$el.querySelector('.el-autocomplete-suggestion__wrap');\n var suggestionList = suggestion.querySelectorAll('.el-autocomplete-suggestion__list li');\n\n var highlightItem = suggestionList[index];\n var scrollTop = suggestion.scrollTop;\n var offsetTop = highlightItem.offsetTop;\n\n if (offsetTop + highlightItem.scrollHeight > scrollTop + suggestion.clientHeight) {\n suggestion.scrollTop += highlightItem.scrollHeight;\n }\n if (offsetTop < scrollTop) {\n suggestion.scrollTop -= highlightItem.scrollHeight;\n }\n this.highlightedIndex = index;\n var $input = this.getInput();\n $input.setAttribute('aria-activedescendant', this.id + '-item-' + this.highlightedIndex);\n },\n getInput: function getInput() {\n return this.$refs.input.getInput();\n }\n },\n mounted: function mounted() {\n var _this4 = this;\n\n this.debouncedGetData = debounce_default()(this.debounce, this.getData);\n this.$on('item-click', function (item) {\n _this4.select(item);\n });\n var $input = this.getInput();\n $input.setAttribute('role', 'textbox');\n $input.setAttribute('aria-autocomplete', 'list');\n $input.setAttribute('aria-controls', 'id');\n $input.setAttribute('aria-activedescendant', this.id + '-item-' + this.highlightedIndex);\n },\n beforeDestroy: function beforeDestroy() {\n this.$refs.suggestions.$destroy();\n }\n});\n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_autocompletevue_type_script_lang_js_ = (autocompletevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete.vue\n\n\n\n\n\n/* normalize component */\n\nvar autocomplete_component = normalizeComponent(\n src_autocompletevue_type_script_lang_js_,\n autocompletevue_type_template_id_152f2ee6_render,\n autocompletevue_type_template_id_152f2ee6_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var autocomplete_api; }\nautocomplete_component.options.__file = \"packages/autocomplete/src/autocomplete.vue\"\n/* harmony default export */ var autocomplete = (autocomplete_component.exports);\n// CONCATENATED MODULE: ./packages/autocomplete/index.js\n\n\n/* istanbul ignore next */\nautocomplete.install = function (Vue) {\n Vue.component(autocomplete.name, autocomplete);\n};\n\n/* harmony default export */ var packages_autocomplete = (autocomplete);\n// EXTERNAL MODULE: external \"element-ui/lib/button\"\nvar button_ = __nested_webpack_require_8926__(13);\nvar button_default = /*#__PURE__*/__nested_webpack_require_8926__.n(button_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/button-group\"\nvar button_group_ = __nested_webpack_require_8926__(29);\nvar button_group_default = /*#__PURE__*/__nested_webpack_require_8926__.n(button_group_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n/* harmony default export */ var dropdownvue_type_script_lang_js_ = ({\n name: 'ElDropdown',\n\n componentName: 'ElDropdown',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n directives: { Clickoutside: clickoutside_default.a },\n\n components: {\n ElButton: button_default.a,\n ElButtonGroup: button_group_default.a\n },\n\n provide: function provide() {\n return {\n dropdown: this\n };\n },\n\n\n props: {\n trigger: {\n type: String,\n default: 'hover'\n },\n type: String,\n size: {\n type: String,\n default: ''\n },\n splitButton: Boolean,\n hideOnClick: {\n type: Boolean,\n default: true\n },\n placement: {\n type: String,\n default: 'bottom-end'\n },\n visibleArrow: {\n default: true\n },\n showTimeout: {\n type: Number,\n default: 250\n },\n hideTimeout: {\n type: Number,\n default: 150\n },\n tabindex: {\n type: Number,\n default: 0\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n timeout: null,\n visible: false,\n triggerElm: null,\n menuItems: null,\n menuItemsArray: null,\n dropdownElm: null,\n focusing: false,\n listId: 'dropdown-menu-' + Object(util_[\"generateId\"])()\n };\n },\n\n\n computed: {\n dropdownSize: function dropdownSize() {\n return this.size || (this.$ELEMENT || {}).size;\n }\n },\n\n mounted: function mounted() {\n this.$on('menu-item-click', this.handleMenuItemClick);\n },\n\n\n watch: {\n visible: function visible(val) {\n this.broadcast('ElDropdownMenu', 'visible', val);\n this.$emit('visible-change', val);\n },\n focusing: function focusing(val) {\n var selfDefine = this.$el.querySelector('.el-dropdown-selfdefine');\n if (selfDefine) {\n // 自定义\n if (val) {\n selfDefine.className += ' focusing';\n } else {\n selfDefine.className = selfDefine.className.replace('focusing', '');\n }\n }\n }\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'menu-align': 'menu-align is renamed to placement.'\n }\n };\n },\n show: function show() {\n var _this = this;\n\n if (this.disabled) return;\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this.visible = true;\n }, this.trigger === 'click' ? 0 : this.showTimeout);\n },\n hide: function hide() {\n var _this2 = this;\n\n if (this.disabled) return;\n this.removeTabindex();\n if (this.tabindex >= 0) {\n this.resetTabindex(this.triggerElm);\n }\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this2.visible = false;\n }, this.trigger === 'click' ? 0 : this.hideTimeout);\n },\n handleClick: function handleClick() {\n if (this.disabled) return;\n if (this.visible) {\n this.hide();\n } else {\n this.show();\n }\n },\n handleTriggerKeyDown: function handleTriggerKeyDown(ev) {\n var keyCode = ev.keyCode;\n if ([38, 40].indexOf(keyCode) > -1) {\n // up/down\n this.removeTabindex();\n this.resetTabindex(this.menuItems[0]);\n this.menuItems[0].focus();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (keyCode === 13) {\n // space enter选中\n this.handleClick();\n } else if ([9, 27].indexOf(keyCode) > -1) {\n // tab || esc\n this.hide();\n }\n },\n handleItemKeyDown: function handleItemKeyDown(ev) {\n var keyCode = ev.keyCode;\n var target = ev.target;\n var currentIndex = this.menuItemsArray.indexOf(target);\n var max = this.menuItemsArray.length - 1;\n var nextIndex = void 0;\n if ([38, 40].indexOf(keyCode) > -1) {\n // up/down\n if (keyCode === 38) {\n // up\n nextIndex = currentIndex !== 0 ? currentIndex - 1 : 0;\n } else {\n // down\n nextIndex = currentIndex < max ? currentIndex + 1 : max;\n }\n this.removeTabindex();\n this.resetTabindex(this.menuItems[nextIndex]);\n this.menuItems[nextIndex].focus();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (keyCode === 13) {\n // enter选中\n this.triggerElmFocus();\n target.click();\n if (this.hideOnClick) {\n // click关闭\n this.visible = false;\n }\n } else if ([9, 27].indexOf(keyCode) > -1) {\n // tab // esc\n this.hide();\n this.triggerElmFocus();\n }\n },\n resetTabindex: function resetTabindex(ele) {\n // 下次tab时组件聚焦元素\n this.removeTabindex();\n ele.setAttribute('tabindex', '0'); // 下次期望的聚焦元素\n },\n removeTabindex: function removeTabindex() {\n this.triggerElm.setAttribute('tabindex', '-1');\n this.menuItemsArray.forEach(function (item) {\n item.setAttribute('tabindex', '-1');\n });\n },\n initAria: function initAria() {\n this.dropdownElm.setAttribute('id', this.listId);\n this.triggerElm.setAttribute('aria-haspopup', 'list');\n this.triggerElm.setAttribute('aria-controls', this.listId);\n\n if (!this.splitButton) {\n // 自定义\n this.triggerElm.setAttribute('role', 'button');\n this.triggerElm.setAttribute('tabindex', this.tabindex);\n this.triggerElm.setAttribute('class', (this.triggerElm.getAttribute('class') || '') + ' el-dropdown-selfdefine'); // 控制\n }\n },\n initEvent: function initEvent() {\n var _this3 = this;\n\n var trigger = this.trigger,\n show = this.show,\n hide = this.hide,\n handleClick = this.handleClick,\n splitButton = this.splitButton,\n handleTriggerKeyDown = this.handleTriggerKeyDown,\n handleItemKeyDown = this.handleItemKeyDown;\n\n this.triggerElm = splitButton ? this.$refs.trigger.$el : this.$slots.default[0].elm;\n\n var dropdownElm = this.dropdownElm;\n\n this.triggerElm.addEventListener('keydown', handleTriggerKeyDown); // triggerElm keydown\n dropdownElm.addEventListener('keydown', handleItemKeyDown, true); // item keydown\n // 控制自定义元素的样式\n if (!splitButton) {\n this.triggerElm.addEventListener('focus', function () {\n _this3.focusing = true;\n });\n this.triggerElm.addEventListener('blur', function () {\n _this3.focusing = false;\n });\n this.triggerElm.addEventListener('click', function () {\n _this3.focusing = false;\n });\n }\n if (trigger === 'hover') {\n this.triggerElm.addEventListener('mouseenter', show);\n this.triggerElm.addEventListener('mouseleave', hide);\n dropdownElm.addEventListener('mouseenter', show);\n dropdownElm.addEventListener('mouseleave', hide);\n } else if (trigger === 'click') {\n this.triggerElm.addEventListener('click', handleClick);\n }\n },\n handleMenuItemClick: function handleMenuItemClick(command, instance) {\n if (this.hideOnClick) {\n this.visible = false;\n }\n this.$emit('command', command, instance);\n },\n triggerElmFocus: function triggerElmFocus() {\n this.triggerElm.focus && this.triggerElm.focus();\n },\n initDomOperation: function initDomOperation() {\n this.dropdownElm = this.popperElm;\n this.menuItems = this.dropdownElm.querySelectorAll(\"[tabindex='-1']\");\n this.menuItemsArray = [].slice.call(this.menuItems);\n\n this.initEvent();\n this.initAria();\n }\n },\n\n render: function render(h) {\n var _this4 = this;\n\n var hide = this.hide,\n splitButton = this.splitButton,\n type = this.type,\n dropdownSize = this.dropdownSize,\n disabled = this.disabled;\n\n\n var handleMainButtonClick = function handleMainButtonClick(event) {\n _this4.$emit('click', event);\n hide();\n };\n\n var triggerElm = null;\n if (splitButton) {\n triggerElm = h('el-button-group', [h(\n 'el-button',\n {\n attrs: { type: type, size: dropdownSize, disabled: disabled },\n nativeOn: {\n 'click': handleMainButtonClick\n }\n },\n [this.$slots.default]\n ), h(\n 'el-button',\n { ref: 'trigger', attrs: { type: type, size: dropdownSize, disabled: disabled },\n 'class': 'el-dropdown__caret-button' },\n [h('i', { 'class': 'el-dropdown__icon el-icon-arrow-down' })]\n )]);\n } else {\n triggerElm = this.$slots.default;\n var vnodeData = triggerElm[0].data || {};\n var _vnodeData$attrs = vnodeData.attrs,\n attrs = _vnodeData$attrs === undefined ? {} : _vnodeData$attrs;\n\n if (disabled && !attrs.disabled) {\n attrs.disabled = true;\n vnodeData.attrs = attrs;\n }\n }\n var menuElm = disabled ? null : this.$slots.dropdown;\n\n return h(\n 'div',\n { 'class': 'el-dropdown', directives: [{\n name: 'clickoutside',\n value: hide\n }],\n attrs: { 'aria-disabled': disabled }\n },\n [triggerElm, menuElm]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_dropdownvue_type_script_lang_js_ = (dropdownvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown.vue\nvar dropdown_render, dropdown_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar dropdown_component = normalizeComponent(\n src_dropdownvue_type_script_lang_js_,\n dropdown_render,\n dropdown_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var dropdown_api; }\ndropdown_component.options.__file = \"packages/dropdown/src/dropdown.vue\"\n/* harmony default export */ var dropdown = (dropdown_component.exports);\n// CONCATENATED MODULE: ./packages/dropdown/index.js\n\n\n/* istanbul ignore next */\ndropdown.install = function (Vue) {\n Vue.component(dropdown.name, dropdown);\n};\n\n/* harmony default export */ var packages_dropdown = (dropdown);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-menu.vue?vue&type=template&id=0da6b714&\nvar dropdown_menuvue_type_template_id_0da6b714_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n { attrs: { name: \"el-zoom-in-top\" }, on: { \"after-leave\": _vm.doDestroy } },\n [\n _c(\n \"ul\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showPopper,\n expression: \"showPopper\"\n }\n ],\n staticClass: \"el-dropdown-menu el-popper\",\n class: [_vm.size && \"el-dropdown-menu--\" + _vm.size]\n },\n [_vm._t(\"default\")],\n 2\n )\n ]\n )\n}\nvar dropdown_menuvue_type_template_id_0da6b714_staticRenderFns = []\ndropdown_menuvue_type_template_id_0da6b714_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-menu.vue?vue&type=template&id=0da6b714&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-menu.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var dropdown_menuvue_type_script_lang_js_ = ({\n name: 'ElDropdownMenu',\n\n componentName: 'ElDropdownMenu',\n\n mixins: [vue_popper_default.a],\n\n props: {\n visibleArrow: {\n type: Boolean,\n default: true\n },\n arrowOffset: {\n type: Number,\n default: 0\n }\n },\n\n data: function data() {\n return {\n size: this.dropdown.dropdownSize\n };\n },\n\n\n inject: ['dropdown'],\n\n created: function created() {\n var _this = this;\n\n this.$on('updatePopper', function () {\n if (_this.showPopper) _this.updatePopper();\n });\n this.$on('visible', function (val) {\n _this.showPopper = val;\n });\n },\n mounted: function mounted() {\n this.dropdown.popperElm = this.popperElm = this.$el;\n this.referenceElm = this.dropdown.$el;\n // compatible with 2.6 new v-slot syntax\n // issue link https://github.com/ElemeFE/element/issues/14345\n this.dropdown.initDomOperation();\n },\n\n\n watch: {\n 'dropdown.placement': {\n immediate: true,\n handler: function handler(val) {\n this.currentPlacement = val;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_dropdown_menuvue_type_script_lang_js_ = (dropdown_menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-menu.vue\n\n\n\n\n\n/* normalize component */\n\nvar dropdown_menu_component = normalizeComponent(\n src_dropdown_menuvue_type_script_lang_js_,\n dropdown_menuvue_type_template_id_0da6b714_render,\n dropdown_menuvue_type_template_id_0da6b714_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var dropdown_menu_api; }\ndropdown_menu_component.options.__file = \"packages/dropdown/src/dropdown-menu.vue\"\n/* harmony default export */ var dropdown_menu = (dropdown_menu_component.exports);\n// CONCATENATED MODULE: ./packages/dropdown-menu/index.js\n\n\n/* istanbul ignore next */\ndropdown_menu.install = function (Vue) {\n Vue.component(dropdown_menu.name, dropdown_menu);\n};\n\n/* harmony default export */ var packages_dropdown_menu = (dropdown_menu);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-item.vue?vue&type=template&id=6359102a&\nvar dropdown_itemvue_type_template_id_6359102a_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n staticClass: \"el-dropdown-menu__item\",\n class: {\n \"is-disabled\": _vm.disabled,\n \"el-dropdown-menu__item--divided\": _vm.divided\n },\n attrs: {\n \"aria-disabled\": _vm.disabled,\n tabindex: _vm.disabled ? null : -1\n },\n on: { click: _vm.handleClick }\n },\n [_vm.icon ? _c(\"i\", { class: _vm.icon }) : _vm._e(), _vm._t(\"default\")],\n 2\n )\n}\nvar dropdown_itemvue_type_template_id_6359102a_staticRenderFns = []\ndropdown_itemvue_type_template_id_6359102a_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-item.vue?vue&type=template&id=6359102a&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/dropdown/src/dropdown-item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var dropdown_itemvue_type_script_lang_js_ = ({\n name: 'ElDropdownItem',\n\n mixins: [emitter_default.a],\n\n props: {\n command: {},\n disabled: Boolean,\n divided: Boolean,\n icon: String\n },\n\n methods: {\n handleClick: function handleClick(e) {\n this.dispatch('ElDropdown', 'menu-item-click', [this.command, this]);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_dropdown_itemvue_type_script_lang_js_ = (dropdown_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/dropdown/src/dropdown-item.vue\n\n\n\n\n\n/* normalize component */\n\nvar dropdown_item_component = normalizeComponent(\n src_dropdown_itemvue_type_script_lang_js_,\n dropdown_itemvue_type_template_id_6359102a_render,\n dropdown_itemvue_type_template_id_6359102a_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var dropdown_item_api; }\ndropdown_item_component.options.__file = \"packages/dropdown/src/dropdown-item.vue\"\n/* harmony default export */ var dropdown_item = (dropdown_item_component.exports);\n// CONCATENATED MODULE: ./packages/dropdown-item/index.js\n\n\n/* istanbul ignore next */\ndropdown_item.install = function (Vue) {\n Vue.component(dropdown_item.name, dropdown_item);\n};\n\n/* harmony default export */ var packages_dropdown_item = (dropdown_item);\n// CONCATENATED MODULE: ./src/utils/aria-utils.js\nvar aria = aria || {};\n\naria.Utils = aria.Utils || {};\n\n/**\n * @desc Set focus on descendant nodes until the first focusable element is\n * found.\n * @param element\n * DOM node for which to find the first focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\naria.Utils.focusFirstDescendant = function (element) {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Find the last descendant node that is focusable.\n * @param element\n * DOM node for which to find the last focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\n\naria.Utils.focusLastDescendant = function (element) {\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Set Attempt to set focus on the current node.\n * @param element\n * The node to attempt to focus on.\n * @returns\n * true if element is focused.\n */\naria.Utils.attemptFocus = function (element) {\n if (!aria.Utils.isFocusable(element)) {\n return false;\n }\n aria.Utils.IgnoreUtilFocusChanges = true;\n try {\n element.focus();\n } catch (e) {}\n aria.Utils.IgnoreUtilFocusChanges = false;\n return document.activeElement === element;\n};\n\naria.Utils.isFocusable = function (element) {\n if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute('tabIndex') !== null) {\n return true;\n }\n\n if (element.disabled) {\n return false;\n }\n\n switch (element.nodeName) {\n case 'A':\n return !!element.href && element.rel !== 'ignore';\n case 'INPUT':\n return element.type !== 'hidden' && element.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n};\n\n/**\n * 触发一个事件\n * mouseenter, mouseleave, mouseover, keyup, change, click 等\n * @param {Element} elm\n * @param {String} name\n * @param {*} opts\n */\naria.Utils.triggerEvent = function (elm, name) {\n var eventName = void 0;\n\n if (/^mouse|click/.test(name)) {\n eventName = 'MouseEvents';\n } else if (/^key/.test(name)) {\n eventName = 'KeyboardEvent';\n } else {\n eventName = 'HTMLEvents';\n }\n var evt = document.createEvent(eventName);\n\n for (var _len = arguments.length, opts = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n opts[_key - 2] = arguments[_key];\n }\n\n evt.initEvent.apply(evt, [name].concat(opts));\n elm.dispatchEvent ? elm.dispatchEvent(evt) : elm.fireEvent('on' + name, evt);\n\n return elm;\n};\n\naria.Utils.keys = {\n tab: 9,\n enter: 13,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n esc: 27\n};\n\n/* harmony default export */ var aria_utils = (aria.Utils);\n// CONCATENATED MODULE: ./src/utils/menu/aria-submenu.js\n\n\nvar SubMenu = function SubMenu(parent, domNode) {\n this.domNode = domNode;\n this.parent = parent;\n this.subMenuItems = [];\n this.subIndex = 0;\n this.init();\n};\n\nSubMenu.prototype.init = function () {\n this.subMenuItems = this.domNode.querySelectorAll('li');\n this.addListeners();\n};\n\nSubMenu.prototype.gotoSubIndex = function (idx) {\n if (idx === this.subMenuItems.length) {\n idx = 0;\n } else if (idx < 0) {\n idx = this.subMenuItems.length - 1;\n }\n this.subMenuItems[idx].focus();\n this.subIndex = idx;\n};\n\nSubMenu.prototype.addListeners = function () {\n var _this = this;\n\n var keys = aria_utils.keys;\n var parentNode = this.parent.domNode;\n Array.prototype.forEach.call(this.subMenuItems, function (el) {\n el.addEventListener('keydown', function (event) {\n var prevDef = false;\n switch (event.keyCode) {\n case keys.down:\n _this.gotoSubIndex(_this.subIndex + 1);\n prevDef = true;\n break;\n case keys.up:\n _this.gotoSubIndex(_this.subIndex - 1);\n prevDef = true;\n break;\n case keys.tab:\n aria_utils.triggerEvent(parentNode, 'mouseleave');\n break;\n case keys.enter:\n case keys.space:\n prevDef = true;\n event.currentTarget.click();\n break;\n }\n if (prevDef) {\n event.preventDefault();\n event.stopPropagation();\n }\n return false;\n });\n });\n};\n\n/* harmony default export */ var aria_submenu = (SubMenu);\n// CONCATENATED MODULE: ./src/utils/menu/aria-menuitem.js\n\n\n\nvar MenuItem = function MenuItem(domNode) {\n this.domNode = domNode;\n this.submenu = null;\n this.init();\n};\n\nMenuItem.prototype.init = function () {\n this.domNode.setAttribute('tabindex', '0');\n var menuChild = this.domNode.querySelector('.el-menu');\n if (menuChild) {\n this.submenu = new aria_submenu(this, menuChild);\n }\n this.addListeners();\n};\n\nMenuItem.prototype.addListeners = function () {\n var _this = this;\n\n var keys = aria_utils.keys;\n this.domNode.addEventListener('keydown', function (event) {\n var prevDef = false;\n switch (event.keyCode) {\n case keys.down:\n aria_utils.triggerEvent(event.currentTarget, 'mouseenter');\n _this.submenu && _this.submenu.gotoSubIndex(0);\n prevDef = true;\n break;\n case keys.up:\n aria_utils.triggerEvent(event.currentTarget, 'mouseenter');\n _this.submenu && _this.submenu.gotoSubIndex(_this.submenu.subMenuItems.length - 1);\n prevDef = true;\n break;\n case keys.tab:\n aria_utils.triggerEvent(event.currentTarget, 'mouseleave');\n break;\n case keys.enter:\n case keys.space:\n prevDef = true;\n event.currentTarget.click();\n break;\n }\n if (prevDef) {\n event.preventDefault();\n }\n });\n};\n\n/* harmony default export */ var aria_menuitem = (MenuItem);\n// CONCATENATED MODULE: ./src/utils/menu/aria-menubar.js\n\n\nvar Menu = function Menu(domNode) {\n this.domNode = domNode;\n this.init();\n};\n\nMenu.prototype.init = function () {\n var menuChildren = this.domNode.childNodes;\n [].filter.call(menuChildren, function (child) {\n return child.nodeType === 1;\n }).forEach(function (child) {\n new aria_menuitem(child); // eslint-disable-line\n });\n};\n/* harmony default export */ var aria_menubar = (Menu);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/dom\"\nvar dom_ = __nested_webpack_require_8926__(1);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n/* harmony default export */ var menuvue_type_script_lang_js_ = ({\n name: 'ElMenu',\n\n render: function render(h) {\n var component = h(\n 'ul',\n {\n attrs: {\n role: 'menubar'\n },\n key: +this.collapse,\n style: { backgroundColor: this.backgroundColor || '' },\n 'class': {\n 'el-menu--horizontal': this.mode === 'horizontal',\n 'el-menu--collapse': this.collapse,\n \"el-menu\": true\n }\n },\n [this.$slots.default]\n );\n\n if (this.collapseTransition) {\n return h('el-menu-collapse-transition', [component]);\n } else {\n return component;\n }\n },\n\n\n componentName: 'ElMenu',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n provide: function provide() {\n return {\n rootMenu: this\n };\n },\n\n\n components: {\n 'el-menu-collapse-transition': {\n functional: true,\n render: function render(createElement, context) {\n var data = {\n props: {\n mode: 'out-in'\n },\n on: {\n beforeEnter: function beforeEnter(el) {\n el.style.opacity = 0.2;\n },\n enter: function enter(el) {\n Object(dom_[\"addClass\"])(el, 'el-opacity-transition');\n el.style.opacity = 1;\n },\n afterEnter: function afterEnter(el) {\n Object(dom_[\"removeClass\"])(el, 'el-opacity-transition');\n el.style.opacity = '';\n },\n beforeLeave: function beforeLeave(el) {\n if (!el.dataset) el.dataset = {};\n\n if (Object(dom_[\"hasClass\"])(el, 'el-menu--collapse')) {\n Object(dom_[\"removeClass\"])(el, 'el-menu--collapse');\n el.dataset.oldOverflow = el.style.overflow;\n el.dataset.scrollWidth = el.clientWidth;\n Object(dom_[\"addClass\"])(el, 'el-menu--collapse');\n } else {\n Object(dom_[\"addClass\"])(el, 'el-menu--collapse');\n el.dataset.oldOverflow = el.style.overflow;\n el.dataset.scrollWidth = el.clientWidth;\n Object(dom_[\"removeClass\"])(el, 'el-menu--collapse');\n }\n\n el.style.width = el.scrollWidth + 'px';\n el.style.overflow = 'hidden';\n },\n leave: function leave(el) {\n Object(dom_[\"addClass\"])(el, 'horizontal-collapse-transition');\n el.style.width = el.dataset.scrollWidth + 'px';\n }\n }\n };\n return createElement('transition', data, context.children);\n }\n }\n },\n\n props: {\n mode: {\n type: String,\n default: 'vertical'\n },\n defaultActive: {\n type: String,\n default: ''\n },\n defaultOpeneds: Array,\n uniqueOpened: Boolean,\n router: Boolean,\n menuTrigger: {\n type: String,\n default: 'hover'\n },\n collapse: Boolean,\n backgroundColor: String,\n textColor: String,\n activeTextColor: String,\n collapseTransition: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n activeIndex: this.defaultActive,\n openedMenus: this.defaultOpeneds && !this.collapse ? this.defaultOpeneds.slice(0) : [],\n items: {},\n submenus: {}\n };\n },\n\n computed: {\n hoverBackground: function hoverBackground() {\n return this.backgroundColor ? this.mixColor(this.backgroundColor, 0.2) : '';\n },\n isMenuPopup: function isMenuPopup() {\n return this.mode === 'horizontal' || this.mode === 'vertical' && this.collapse;\n }\n },\n watch: {\n defaultActive: function defaultActive(value) {\n if (!this.items[value]) {\n this.activeIndex = null;\n }\n this.updateActiveIndex(value);\n },\n defaultOpeneds: function defaultOpeneds(value) {\n if (!this.collapse) {\n this.openedMenus = value;\n }\n },\n collapse: function collapse(value) {\n if (value) this.openedMenus = [];\n this.broadcast('ElSubmenu', 'toggle-collapse', value);\n }\n },\n methods: {\n updateActiveIndex: function updateActiveIndex(val) {\n var item = this.items[val] || this.items[this.activeIndex] || this.items[this.defaultActive];\n if (item) {\n this.activeIndex = item.index;\n this.initOpenedMenu();\n } else {\n this.activeIndex = null;\n }\n },\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'theme': 'theme is removed.'\n }\n };\n },\n getColorChannels: function getColorChannels(color) {\n color = color.replace('#', '');\n if (/^[0-9a-fA-F]{3}$/.test(color)) {\n color = color.split('');\n for (var i = 2; i >= 0; i--) {\n color.splice(i, 0, color[i]);\n }\n color = color.join('');\n }\n if (/^[0-9a-fA-F]{6}$/.test(color)) {\n return {\n red: parseInt(color.slice(0, 2), 16),\n green: parseInt(color.slice(2, 4), 16),\n blue: parseInt(color.slice(4, 6), 16)\n };\n } else {\n return {\n red: 255,\n green: 255,\n blue: 255\n };\n }\n },\n mixColor: function mixColor(color, percent) {\n var _getColorChannels = this.getColorChannels(color),\n red = _getColorChannels.red,\n green = _getColorChannels.green,\n blue = _getColorChannels.blue;\n\n if (percent > 0) {\n // shade given color\n red *= 1 - percent;\n green *= 1 - percent;\n blue *= 1 - percent;\n } else {\n // tint given color\n red += (255 - red) * percent;\n green += (255 - green) * percent;\n blue += (255 - blue) * percent;\n }\n return 'rgb(' + Math.round(red) + ', ' + Math.round(green) + ', ' + Math.round(blue) + ')';\n },\n addItem: function addItem(item) {\n this.$set(this.items, item.index, item);\n },\n removeItem: function removeItem(item) {\n delete this.items[item.index];\n },\n addSubmenu: function addSubmenu(item) {\n this.$set(this.submenus, item.index, item);\n },\n removeSubmenu: function removeSubmenu(item) {\n delete this.submenus[item.index];\n },\n openMenu: function openMenu(index, indexPath) {\n var openedMenus = this.openedMenus;\n if (openedMenus.indexOf(index) !== -1) return;\n // 将不在该菜单路径下的其余菜单收起\n // collapse all menu that are not under current menu item\n if (this.uniqueOpened) {\n this.openedMenus = openedMenus.filter(function (index) {\n return indexPath.indexOf(index) !== -1;\n });\n }\n this.openedMenus.push(index);\n },\n closeMenu: function closeMenu(index) {\n var i = this.openedMenus.indexOf(index);\n if (i !== -1) {\n this.openedMenus.splice(i, 1);\n }\n },\n handleSubmenuClick: function handleSubmenuClick(submenu) {\n var index = submenu.index,\n indexPath = submenu.indexPath;\n\n var isOpened = this.openedMenus.indexOf(index) !== -1;\n\n if (isOpened) {\n this.closeMenu(index);\n this.$emit('close', index, indexPath);\n } else {\n this.openMenu(index, indexPath);\n this.$emit('open', index, indexPath);\n }\n },\n handleItemClick: function handleItemClick(item) {\n var _this = this;\n\n var index = item.index,\n indexPath = item.indexPath;\n\n var oldActiveIndex = this.activeIndex;\n var hasIndex = item.index !== null;\n\n if (hasIndex) {\n this.activeIndex = item.index;\n }\n\n this.$emit('select', index, indexPath, item);\n\n if (this.mode === 'horizontal' || this.collapse) {\n this.openedMenus = [];\n }\n\n if (this.router && hasIndex) {\n this.routeToItem(item, function (error) {\n _this.activeIndex = oldActiveIndex;\n if (error) {\n // vue-router 3.1.0+ push/replace cause NavigationDuplicated error \n // https://github.com/ElemeFE/element/issues/17044\n if (error.name === 'NavigationDuplicated') return;\n console.error(error);\n }\n });\n }\n },\n\n // 初始化展开菜单\n // initialize opened menu\n initOpenedMenu: function initOpenedMenu() {\n var _this2 = this;\n\n var index = this.activeIndex;\n var activeItem = this.items[index];\n if (!activeItem || this.mode === 'horizontal' || this.collapse) return;\n\n var indexPath = activeItem.indexPath;\n\n // 展开该菜单项的路径上所有子菜单\n // expand all submenus of the menu item\n indexPath.forEach(function (index) {\n var submenu = _this2.submenus[index];\n submenu && _this2.openMenu(index, submenu.indexPath);\n });\n },\n routeToItem: function routeToItem(item, onError) {\n var route = item.route || item.index;\n try {\n this.$router.push(route, function () {}, onError);\n } catch (e) {\n console.error(e);\n }\n },\n open: function open(index) {\n var _this3 = this;\n\n var indexPath = this.submenus[index.toString()].indexPath;\n\n indexPath.forEach(function (i) {\n return _this3.openMenu(i, indexPath);\n });\n },\n close: function close(index) {\n this.closeMenu(index);\n }\n },\n mounted: function mounted() {\n this.initOpenedMenu();\n this.$on('item-click', this.handleItemClick);\n this.$on('submenu-click', this.handleSubmenuClick);\n if (this.mode === 'horizontal') {\n new aria_menubar(this.$el); // eslint-disable-line\n }\n this.$watch('items', this.updateActiveIndex);\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_menuvue_type_script_lang_js_ = (menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/menu.vue\nvar menu_render, menu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar menu_component = normalizeComponent(\n src_menuvue_type_script_lang_js_,\n menu_render,\n menu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var menu_api; }\nmenu_component.options.__file = \"packages/menu/src/menu.vue\"\n/* harmony default export */ var src_menu = (menu_component.exports);\n// CONCATENATED MODULE: ./packages/menu/index.js\n\n\n/* istanbul ignore next */\nsrc_menu.install = function (Vue) {\n Vue.component(src_menu.name, src_menu);\n};\n\n/* harmony default export */ var packages_menu = (src_menu);\n// EXTERNAL MODULE: external \"element-ui/lib/transitions/collapse-transition\"\nvar collapse_transition_ = __nested_webpack_require_8926__(21);\nvar collapse_transition_default = /*#__PURE__*/__nested_webpack_require_8926__.n(collapse_transition_);\n\n// CONCATENATED MODULE: ./packages/menu/src/menu-mixin.js\n/* harmony default export */ var menu_mixin = ({\n inject: ['rootMenu'],\n computed: {\n indexPath: function indexPath() {\n var path = [this.index];\n var parent = this.$parent;\n while (parent.$options.componentName !== 'ElMenu') {\n if (parent.index) {\n path.unshift(parent.index);\n }\n parent = parent.$parent;\n }\n return path;\n },\n parentMenu: function parentMenu() {\n var parent = this.$parent;\n while (parent && ['ElMenu', 'ElSubmenu'].indexOf(parent.$options.componentName) === -1) {\n parent = parent.$parent;\n }\n return parent;\n },\n paddingStyle: function paddingStyle() {\n if (this.rootMenu.mode !== 'vertical') return {};\n\n var padding = 20;\n var parent = this.$parent;\n\n if (this.rootMenu.collapse) {\n padding = 20;\n } else {\n while (parent && parent.$options.componentName !== 'ElMenu') {\n if (parent.$options.componentName === 'ElSubmenu') {\n padding += 20;\n }\n parent = parent.$parent;\n }\n }\n return { paddingLeft: padding + 'px' };\n }\n }\n});\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/submenu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\nvar poperMixins = {\n props: {\n transformOrigin: {\n type: [Boolean, String],\n default: false\n },\n offset: vue_popper_default.a.props.offset,\n boundariesPadding: vue_popper_default.a.props.boundariesPadding,\n popperOptions: vue_popper_default.a.props.popperOptions\n },\n data: vue_popper_default.a.data,\n methods: vue_popper_default.a.methods,\n beforeDestroy: vue_popper_default.a.beforeDestroy,\n deactivated: vue_popper_default.a.deactivated\n};\n\n/* harmony default export */ var submenuvue_type_script_lang_js_ = ({\n name: 'ElSubmenu',\n\n componentName: 'ElSubmenu',\n\n mixins: [menu_mixin, emitter_default.a, poperMixins],\n\n components: { ElCollapseTransition: collapse_transition_default.a },\n\n props: {\n index: {\n type: String,\n required: true\n },\n showTimeout: {\n type: Number,\n default: 300\n },\n hideTimeout: {\n type: Number,\n default: 300\n },\n popperClass: String,\n disabled: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: undefined\n }\n },\n\n data: function data() {\n return {\n popperJS: null,\n timeout: null,\n items: {},\n submenus: {},\n mouseInChild: false\n };\n },\n\n watch: {\n opened: function opened(val) {\n var _this = this;\n\n if (this.isMenuPopup) {\n this.$nextTick(function (_) {\n _this.updatePopper();\n });\n }\n }\n },\n computed: {\n // popper option\n appendToBody: function appendToBody() {\n return this.popperAppendToBody === undefined ? this.isFirstLevel : this.popperAppendToBody;\n },\n menuTransitionName: function menuTransitionName() {\n return this.rootMenu.collapse ? 'el-zoom-in-left' : 'el-zoom-in-top';\n },\n opened: function opened() {\n return this.rootMenu.openedMenus.indexOf(this.index) > -1;\n },\n active: function active() {\n var isActive = false;\n var submenus = this.submenus;\n var items = this.items;\n\n Object.keys(items).forEach(function (index) {\n if (items[index].active) {\n isActive = true;\n }\n });\n\n Object.keys(submenus).forEach(function (index) {\n if (submenus[index].active) {\n isActive = true;\n }\n });\n\n return isActive;\n },\n hoverBackground: function hoverBackground() {\n return this.rootMenu.hoverBackground;\n },\n backgroundColor: function backgroundColor() {\n return this.rootMenu.backgroundColor || '';\n },\n activeTextColor: function activeTextColor() {\n return this.rootMenu.activeTextColor || '';\n },\n textColor: function textColor() {\n return this.rootMenu.textColor || '';\n },\n mode: function mode() {\n return this.rootMenu.mode;\n },\n isMenuPopup: function isMenuPopup() {\n return this.rootMenu.isMenuPopup;\n },\n titleStyle: function titleStyle() {\n if (this.mode !== 'horizontal') {\n return {\n color: this.textColor\n };\n }\n return {\n borderBottomColor: this.active ? this.rootMenu.activeTextColor ? this.activeTextColor : '' : 'transparent',\n color: this.active ? this.activeTextColor : this.textColor\n };\n },\n isFirstLevel: function isFirstLevel() {\n var isFirstLevel = true;\n var parent = this.$parent;\n while (parent && parent !== this.rootMenu) {\n if (['ElSubmenu', 'ElMenuItemGroup'].indexOf(parent.$options.componentName) > -1) {\n isFirstLevel = false;\n break;\n } else {\n parent = parent.$parent;\n }\n }\n return isFirstLevel;\n }\n },\n methods: {\n handleCollapseToggle: function handleCollapseToggle(value) {\n if (value) {\n this.initPopper();\n } else {\n this.doDestroy();\n }\n },\n addItem: function addItem(item) {\n this.$set(this.items, item.index, item);\n },\n removeItem: function removeItem(item) {\n delete this.items[item.index];\n },\n addSubmenu: function addSubmenu(item) {\n this.$set(this.submenus, item.index, item);\n },\n removeSubmenu: function removeSubmenu(item) {\n delete this.submenus[item.index];\n },\n handleClick: function handleClick() {\n var rootMenu = this.rootMenu,\n disabled = this.disabled;\n\n if (rootMenu.menuTrigger === 'hover' && rootMenu.mode === 'horizontal' || rootMenu.collapse && rootMenu.mode === 'vertical' || disabled) {\n return;\n }\n this.dispatch('ElMenu', 'submenu-click', this);\n },\n handleMouseenter: function handleMouseenter(event) {\n var _this2 = this;\n\n var showTimeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.showTimeout;\n\n\n if (!('ActiveXObject' in window) && event.type === 'focus' && !event.relatedTarget) {\n return;\n }\n var rootMenu = this.rootMenu,\n disabled = this.disabled;\n\n if (rootMenu.menuTrigger === 'click' && rootMenu.mode === 'horizontal' || !rootMenu.collapse && rootMenu.mode === 'vertical' || disabled) {\n return;\n }\n this.dispatch('ElSubmenu', 'mouse-enter-child');\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this2.rootMenu.openMenu(_this2.index, _this2.indexPath);\n }, showTimeout);\n\n if (this.appendToBody) {\n this.$parent.$el.dispatchEvent(new MouseEvent('mouseenter'));\n }\n },\n handleMouseleave: function handleMouseleave() {\n var _this3 = this;\n\n var deepDispatch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var rootMenu = this.rootMenu;\n\n if (rootMenu.menuTrigger === 'click' && rootMenu.mode === 'horizontal' || !rootMenu.collapse && rootMenu.mode === 'vertical') {\n return;\n }\n this.dispatch('ElSubmenu', 'mouse-leave-child');\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n !_this3.mouseInChild && _this3.rootMenu.closeMenu(_this3.index);\n }, this.hideTimeout);\n\n if (this.appendToBody && deepDispatch) {\n if (this.$parent.$options.name === 'ElSubmenu') {\n this.$parent.handleMouseleave(true);\n }\n }\n },\n handleTitleMouseenter: function handleTitleMouseenter() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n var title = this.$refs['submenu-title'];\n title && (title.style.backgroundColor = this.rootMenu.hoverBackground);\n },\n handleTitleMouseleave: function handleTitleMouseleave() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n var title = this.$refs['submenu-title'];\n title && (title.style.backgroundColor = this.rootMenu.backgroundColor || '');\n },\n updatePlacement: function updatePlacement() {\n this.currentPlacement = this.mode === 'horizontal' && this.isFirstLevel ? 'bottom-start' : 'right-start';\n },\n initPopper: function initPopper() {\n this.referenceElm = this.$el;\n this.popperElm = this.$refs.menu;\n this.updatePlacement();\n }\n },\n created: function created() {\n var _this4 = this;\n\n this.$on('toggle-collapse', this.handleCollapseToggle);\n this.$on('mouse-enter-child', function () {\n _this4.mouseInChild = true;\n clearTimeout(_this4.timeout);\n });\n this.$on('mouse-leave-child', function () {\n _this4.mouseInChild = false;\n clearTimeout(_this4.timeout);\n });\n },\n mounted: function mounted() {\n this.parentMenu.addSubmenu(this);\n this.rootMenu.addSubmenu(this);\n this.initPopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.parentMenu.removeSubmenu(this);\n this.rootMenu.removeSubmenu(this);\n },\n render: function render(h) {\n var _this5 = this;\n\n var active = this.active,\n opened = this.opened,\n paddingStyle = this.paddingStyle,\n titleStyle = this.titleStyle,\n backgroundColor = this.backgroundColor,\n rootMenu = this.rootMenu,\n currentPlacement = this.currentPlacement,\n menuTransitionName = this.menuTransitionName,\n mode = this.mode,\n disabled = this.disabled,\n popperClass = this.popperClass,\n $slots = this.$slots,\n isFirstLevel = this.isFirstLevel;\n\n\n var popupMenu = h(\n 'transition',\n {\n attrs: { name: menuTransitionName }\n },\n [h(\n 'div',\n {\n ref: 'menu',\n directives: [{\n name: 'show',\n value: opened\n }],\n\n 'class': ['el-menu--' + mode, popperClass],\n on: {\n 'mouseenter': function mouseenter($event) {\n return _this5.handleMouseenter($event, 100);\n },\n 'mouseleave': function mouseleave() {\n return _this5.handleMouseleave(true);\n },\n 'focus': function focus($event) {\n return _this5.handleMouseenter($event, 100);\n }\n }\n },\n [h(\n 'ul',\n {\n attrs: {\n role: 'menu'\n },\n 'class': ['el-menu el-menu--popup', 'el-menu--popup-' + currentPlacement],\n style: { backgroundColor: rootMenu.backgroundColor || '' } },\n [$slots.default]\n )]\n )]\n );\n\n var inlineMenu = h('el-collapse-transition', [h(\n 'ul',\n {\n attrs: {\n role: 'menu'\n },\n 'class': 'el-menu el-menu--inline',\n directives: [{\n name: 'show',\n value: opened\n }],\n\n style: { backgroundColor: rootMenu.backgroundColor || '' } },\n [$slots.default]\n )]);\n\n var submenuTitleIcon = rootMenu.mode === 'horizontal' && isFirstLevel || rootMenu.mode === 'vertical' && !rootMenu.collapse ? 'el-icon-arrow-down' : 'el-icon-arrow-right';\n\n return h(\n 'li',\n {\n 'class': {\n 'el-submenu': true,\n 'is-active': active,\n 'is-opened': opened,\n 'is-disabled': disabled\n },\n attrs: { role: 'menuitem',\n 'aria-haspopup': 'true',\n 'aria-expanded': opened\n },\n on: {\n 'mouseenter': this.handleMouseenter,\n 'mouseleave': function mouseleave() {\n return _this5.handleMouseleave(false);\n },\n 'focus': this.handleMouseenter\n }\n },\n [h(\n 'div',\n {\n 'class': 'el-submenu__title',\n ref: 'submenu-title',\n on: {\n 'click': this.handleClick,\n 'mouseenter': this.handleTitleMouseenter,\n 'mouseleave': this.handleTitleMouseleave\n },\n\n style: [paddingStyle, titleStyle, { backgroundColor: backgroundColor }]\n },\n [$slots.title, h('i', { 'class': ['el-submenu__icon-arrow', submenuTitleIcon] })]\n ), this.isMenuPopup ? popupMenu : inlineMenu]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/submenu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_submenuvue_type_script_lang_js_ = (submenuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/submenu.vue\nvar submenu_render, submenu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar submenu_component = normalizeComponent(\n src_submenuvue_type_script_lang_js_,\n submenu_render,\n submenu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var submenu_api; }\nsubmenu_component.options.__file = \"packages/menu/src/submenu.vue\"\n/* harmony default export */ var submenu = (submenu_component.exports);\n// CONCATENATED MODULE: ./packages/submenu/index.js\n\n\n/* istanbul ignore next */\nsubmenu.install = function (Vue) {\n Vue.component(submenu.name, submenu);\n};\n\n/* harmony default export */ var packages_submenu = (submenu);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item.vue?vue&type=template&id=2a5dbfea&\nvar menu_itemvue_type_template_id_2a5dbfea_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n staticClass: \"el-menu-item\",\n class: {\n \"is-active\": _vm.active,\n \"is-disabled\": _vm.disabled\n },\n style: [\n _vm.paddingStyle,\n _vm.itemStyle,\n { backgroundColor: _vm.backgroundColor }\n ],\n attrs: { role: \"menuitem\", tabindex: \"-1\" },\n on: {\n click: _vm.handleClick,\n mouseenter: _vm.onMouseEnter,\n focus: _vm.onMouseEnter,\n blur: _vm.onMouseLeave,\n mouseleave: _vm.onMouseLeave\n }\n },\n [\n _vm.parentMenu.$options.componentName === \"ElMenu\" &&\n _vm.rootMenu.collapse &&\n _vm.$slots.title\n ? _c(\"el-tooltip\", { attrs: { effect: \"dark\", placement: \"right\" } }, [\n _c(\n \"div\",\n { attrs: { slot: \"content\" }, slot: \"content\" },\n [_vm._t(\"title\")],\n 2\n ),\n _c(\n \"div\",\n {\n staticStyle: {\n position: \"absolute\",\n left: \"0\",\n top: \"0\",\n height: \"100%\",\n width: \"100%\",\n display: \"inline-block\",\n \"box-sizing\": \"border-box\",\n padding: \"0 20px\"\n }\n },\n [_vm._t(\"default\")],\n 2\n )\n ])\n : [_vm._t(\"default\"), _vm._t(\"title\")]\n ],\n 2\n )\n}\nvar menu_itemvue_type_template_id_2a5dbfea_staticRenderFns = []\nmenu_itemvue_type_template_id_2a5dbfea_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue?vue&type=template&id=2a5dbfea&\n\n// EXTERNAL MODULE: external \"element-ui/lib/tooltip\"\nvar tooltip_ = __nested_webpack_require_8926__(26);\nvar tooltip_default = /*#__PURE__*/__nested_webpack_require_8926__.n(tooltip_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var menu_itemvue_type_script_lang_js_ = ({\n name: 'ElMenuItem',\n\n componentName: 'ElMenuItem',\n\n mixins: [menu_mixin, emitter_default.a],\n\n components: { ElTooltip: tooltip_default.a },\n\n props: {\n index: {\n default: null,\n validator: function validator(val) {\n return typeof val === 'string' || val === null;\n }\n },\n route: [String, Object],\n disabled: Boolean\n },\n computed: {\n active: function active() {\n return this.index === this.rootMenu.activeIndex;\n },\n hoverBackground: function hoverBackground() {\n return this.rootMenu.hoverBackground;\n },\n backgroundColor: function backgroundColor() {\n return this.rootMenu.backgroundColor || '';\n },\n activeTextColor: function activeTextColor() {\n return this.rootMenu.activeTextColor || '';\n },\n textColor: function textColor() {\n return this.rootMenu.textColor || '';\n },\n mode: function mode() {\n return this.rootMenu.mode;\n },\n itemStyle: function itemStyle() {\n var style = {\n color: this.active ? this.activeTextColor : this.textColor\n };\n if (this.mode === 'horizontal' && !this.isNested) {\n style.borderBottomColor = this.active ? this.rootMenu.activeTextColor ? this.activeTextColor : '' : 'transparent';\n }\n return style;\n },\n isNested: function isNested() {\n return this.parentMenu !== this.rootMenu;\n }\n },\n methods: {\n onMouseEnter: function onMouseEnter() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n this.$el.style.backgroundColor = this.hoverBackground;\n },\n onMouseLeave: function onMouseLeave() {\n if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;\n this.$el.style.backgroundColor = this.backgroundColor;\n },\n handleClick: function handleClick() {\n if (!this.disabled) {\n this.dispatch('ElMenu', 'item-click', this);\n this.$emit('click', this);\n }\n }\n },\n mounted: function mounted() {\n this.parentMenu.addItem(this);\n this.rootMenu.addItem(this);\n },\n beforeDestroy: function beforeDestroy() {\n this.parentMenu.removeItem(this);\n this.rootMenu.removeItem(this);\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_menu_itemvue_type_script_lang_js_ = (menu_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue\n\n\n\n\n\n/* normalize component */\n\nvar menu_item_component = normalizeComponent(\n src_menu_itemvue_type_script_lang_js_,\n menu_itemvue_type_template_id_2a5dbfea_render,\n menu_itemvue_type_template_id_2a5dbfea_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var menu_item_api; }\nmenu_item_component.options.__file = \"packages/menu/src/menu-item.vue\"\n/* harmony default export */ var menu_item = (menu_item_component.exports);\n// CONCATENATED MODULE: ./packages/menu-item/index.js\n\n\n/* istanbul ignore next */\nmenu_item.install = function (Vue) {\n Vue.component(menu_item.name, menu_item);\n};\n\n/* harmony default export */ var packages_menu_item = (menu_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item-group.vue?vue&type=template&id=543b7bdc&\nvar menu_item_groupvue_type_template_id_543b7bdc_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"li\", { staticClass: \"el-menu-item-group\" }, [\n _c(\n \"div\",\n {\n staticClass: \"el-menu-item-group__title\",\n style: { paddingLeft: _vm.levelPadding + \"px\" }\n },\n [!_vm.$slots.title ? [_vm._v(_vm._s(_vm.title))] : _vm._t(\"title\")],\n 2\n ),\n _c(\"ul\", [_vm._t(\"default\")], 2)\n ])\n}\nvar menu_item_groupvue_type_template_id_543b7bdc_staticRenderFns = []\nmenu_item_groupvue_type_template_id_543b7bdc_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/menu/src/menu-item-group.vue?vue&type=template&id=543b7bdc&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item-group.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var menu_item_groupvue_type_script_lang_js_ = ({\n name: 'ElMenuItemGroup',\n\n componentName: 'ElMenuItemGroup',\n\n inject: ['rootMenu'],\n props: {\n title: {\n type: String\n }\n },\n data: function data() {\n return {\n paddingLeft: 20\n };\n },\n\n computed: {\n levelPadding: function levelPadding() {\n var padding = 20;\n var parent = this.$parent;\n if (this.rootMenu.collapse) return 20;\n while (parent && parent.$options.componentName !== 'ElMenu') {\n if (parent.$options.componentName === 'ElSubmenu') {\n padding += 20;\n }\n parent = parent.$parent;\n }\n return padding;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/menu/src/menu-item-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_menu_item_groupvue_type_script_lang_js_ = (menu_item_groupvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/menu/src/menu-item-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar menu_item_group_component = normalizeComponent(\n src_menu_item_groupvue_type_script_lang_js_,\n menu_item_groupvue_type_template_id_543b7bdc_render,\n menu_item_groupvue_type_template_id_543b7bdc_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var menu_item_group_api; }\nmenu_item_group_component.options.__file = \"packages/menu/src/menu-item-group.vue\"\n/* harmony default export */ var menu_item_group = (menu_item_group_component.exports);\n// CONCATENATED MODULE: ./packages/menu-item-group/index.js\n\n\n/* istanbul ignore next */\nmenu_item_group.install = function (Vue) {\n Vue.component(menu_item_group.name, menu_item_group);\n};\n\n/* harmony default export */ var packages_menu_item_group = (menu_item_group);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=template&id=343dd774&\nvar inputvue_type_template_id_343dd774_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n _vm.type === \"textarea\" ? \"el-textarea\" : \"el-input\",\n _vm.inputSize ? \"el-input--\" + _vm.inputSize : \"\",\n {\n \"is-disabled\": _vm.inputDisabled,\n \"is-exceed\": _vm.inputExceed,\n \"el-input-group\": _vm.$slots.prepend || _vm.$slots.append,\n \"el-input-group--append\": _vm.$slots.append,\n \"el-input-group--prepend\": _vm.$slots.prepend,\n \"el-input--prefix\": _vm.$slots.prefix || _vm.prefixIcon,\n \"el-input--suffix\":\n _vm.$slots.suffix ||\n _vm.suffixIcon ||\n _vm.clearable ||\n _vm.showPassword\n }\n ],\n on: {\n mouseenter: function($event) {\n _vm.hovering = true\n },\n mouseleave: function($event) {\n _vm.hovering = false\n }\n }\n },\n [\n _vm.type !== \"textarea\"\n ? [\n _vm.$slots.prepend\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__prepend\" },\n [_vm._t(\"prepend\")],\n 2\n )\n : _vm._e(),\n _vm.type !== \"textarea\"\n ? _c(\n \"input\",\n _vm._b(\n {\n ref: \"input\",\n staticClass: \"el-input__inner\",\n attrs: {\n tabindex: _vm.tabindex,\n type: _vm.showPassword\n ? _vm.passwordVisible\n ? \"text\"\n : \"password\"\n : _vm.type,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"input\",\n _vm.$attrs,\n false\n )\n )\n : _vm._e(),\n _vm.$slots.prefix || _vm.prefixIcon\n ? _c(\n \"span\",\n { staticClass: \"el-input__prefix\" },\n [\n _vm._t(\"prefix\"),\n _vm.prefixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.prefixIcon\n })\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _vm.getSuffixVisible()\n ? _c(\"span\", { staticClass: \"el-input__suffix\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__suffix-inner\" },\n [\n !_vm.showClear ||\n !_vm.showPwdVisible ||\n !_vm.isWordLimitVisible\n ? [\n _vm._t(\"suffix\"),\n _vm.suffixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.suffixIcon\n })\n : _vm._e()\n ]\n : _vm._e(),\n _vm.showClear\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-circle-close el-input__clear\",\n on: {\n mousedown: function($event) {\n $event.preventDefault()\n },\n click: _vm.clear\n }\n })\n : _vm._e(),\n _vm.showPwdVisible\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-view el-input__clear\",\n on: { click: _vm.handlePasswordVisible }\n })\n : _vm._e(),\n _vm.isWordLimitVisible\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__count-inner\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.textLength) +\n \"/\" +\n _vm._s(_vm.upperLimit) +\n \"\\n \"\n )\n ]\n )\n ])\n : _vm._e()\n ],\n 2\n ),\n _vm.validateState\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: [\"el-input__validateIcon\", _vm.validateIcon]\n })\n : _vm._e()\n ])\n : _vm._e(),\n _vm.$slots.append\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__append\" },\n [_vm._t(\"append\")],\n 2\n )\n : _vm._e()\n ]\n : _c(\n \"textarea\",\n _vm._b(\n {\n ref: \"textarea\",\n staticClass: \"el-textarea__inner\",\n style: _vm.textareaStyle,\n attrs: {\n tabindex: _vm.tabindex,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"textarea\",\n _vm.$attrs,\n false\n )\n ),\n _vm.isWordLimitVisible && _vm.type === \"textarea\"\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _vm._v(_vm._s(_vm.textLength) + \"/\" + _vm._s(_vm.upperLimit))\n ])\n : _vm._e()\n ],\n 2\n )\n}\nvar inputvue_type_template_id_343dd774_staticRenderFns = []\ninputvue_type_template_id_343dd774_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=template&id=343dd774&\n\n// CONCATENATED MODULE: ./packages/input/src/calcTextareaHeight.js\nvar hiddenTextarea = void 0;\n\nvar HIDDEN_STYLE = '\\n height:0 !important;\\n visibility:hidden !important;\\n overflow:hidden !important;\\n position:absolute !important;\\n z-index:-1000 !important;\\n top:0 !important;\\n right:0 !important\\n';\n\nvar CONTEXT_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];\n\nfunction calculateNodeStyling(targetElement) {\n var style = window.getComputedStyle(targetElement);\n\n var boxSizing = style.getPropertyValue('box-sizing');\n\n var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n\n var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n\n var contextStyle = CONTEXT_STYLE.map(function (name) {\n return name + ':' + style.getPropertyValue(name);\n }).join(';');\n\n return { contextStyle: contextStyle, paddingSize: paddingSize, borderSize: borderSize, boxSizing: boxSizing };\n}\n\nfunction calcTextareaHeight(targetElement) {\n var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var maxRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.appendChild(hiddenTextarea);\n }\n\n var _calculateNodeStyling = calculateNodeStyling(targetElement),\n paddingSize = _calculateNodeStyling.paddingSize,\n borderSize = _calculateNodeStyling.borderSize,\n boxSizing = _calculateNodeStyling.boxSizing,\n contextStyle = _calculateNodeStyling.contextStyle;\n\n hiddenTextarea.setAttribute('style', contextStyle + ';' + HIDDEN_STYLE);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';\n\n var height = hiddenTextarea.scrollHeight;\n var result = {};\n\n if (boxSizing === 'border-box') {\n height = height + borderSize;\n } else if (boxSizing === 'content-box') {\n height = height - paddingSize;\n }\n\n hiddenTextarea.value = '';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n if (minRows !== null) {\n var minHeight = singleRowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n result.minHeight = minHeight + 'px';\n }\n if (maxRows !== null) {\n var maxHeight = singleRowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n }\n result.height = height + 'px';\n hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n hiddenTextarea = null;\n return result;\n};\n// EXTERNAL MODULE: external \"element-ui/lib/utils/merge\"\nvar merge_ = __nested_webpack_require_8926__(7);\nvar merge_default = /*#__PURE__*/__nested_webpack_require_8926__.n(merge_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __nested_webpack_require_8926__(19);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n/* harmony default export */ var inputvue_type_script_lang_js_ = ({\n name: 'ElInput',\n\n componentName: 'ElInput',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n inheritAttrs: false,\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n data: function data() {\n return {\n textareaCalcStyle: {},\n hovering: false,\n focused: false,\n isComposing: false,\n passwordVisible: false\n };\n },\n\n\n props: {\n value: [String, Number],\n size: String,\n resize: String,\n form: String,\n disabled: Boolean,\n readonly: Boolean,\n type: {\n type: String,\n default: 'text'\n },\n autosize: {\n type: [Boolean, Object],\n default: false\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && 0;\n return true;\n }\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n suffixIcon: String,\n prefixIcon: String,\n label: String,\n clearable: {\n type: Boolean,\n default: false\n },\n showPassword: {\n type: Boolean,\n default: false\n },\n showWordLimit: {\n type: Boolean,\n default: false\n },\n tabindex: String\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n validateState: function validateState() {\n return this.elFormItem ? this.elFormItem.validateState : '';\n },\n needStatusIcon: function needStatusIcon() {\n return this.elForm ? this.elForm.statusIcon : false;\n },\n validateIcon: function validateIcon() {\n return {\n validating: 'el-icon-loading',\n success: 'el-icon-circle-check',\n error: 'el-icon-circle-close'\n }[this.validateState];\n },\n textareaStyle: function textareaStyle() {\n return merge_default()({}, this.textareaCalcStyle, { resize: this.resize });\n },\n inputSize: function inputSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputDisabled: function inputDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n nativeInputValue: function nativeInputValue() {\n return this.value === null || this.value === undefined ? '' : String(this.value);\n },\n showClear: function showClear() {\n return this.clearable && !this.inputDisabled && !this.readonly && this.nativeInputValue && (this.focused || this.hovering);\n },\n showPwdVisible: function showPwdVisible() {\n return this.showPassword && !this.inputDisabled && !this.readonly && (!!this.nativeInputValue || this.focused);\n },\n isWordLimitVisible: function isWordLimitVisible() {\n return this.showWordLimit && this.$attrs.maxlength && (this.type === 'text' || this.type === 'textarea') && !this.inputDisabled && !this.readonly && !this.showPassword;\n },\n upperLimit: function upperLimit() {\n return this.$attrs.maxlength;\n },\n textLength: function textLength() {\n if (typeof this.value === 'number') {\n return String(this.value).length;\n }\n\n return (this.value || '').length;\n },\n inputExceed: function inputExceed() {\n // show exceed style if length of initial value greater then maxlength\n return this.isWordLimitVisible && this.textLength > this.upperLimit;\n }\n },\n\n watch: {\n value: function value(val) {\n this.$nextTick(this.resizeTextarea);\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.change', [val]);\n }\n },\n\n // native input value is set explicitly\n // do not use v-model / :value in template\n // see: https://github.com/ElemeFE/element/issues/14521\n nativeInputValue: function nativeInputValue() {\n this.setNativeInputValue();\n },\n\n // when change between <input> and <textarea>,\n // update DOM dependent value and styles\n // https://github.com/ElemeFE/element/issues/14857\n type: function type() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setNativeInputValue();\n _this.resizeTextarea();\n _this.updateIconOffset();\n });\n }\n },\n\n methods: {\n focus: function focus() {\n this.getInput().focus();\n },\n blur: function blur() {\n this.getInput().blur();\n },\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'icon': 'icon is removed, use suffix-icon / prefix-icon instead.',\n 'on-icon-click': 'on-icon-click is removed.'\n },\n events: {\n 'click': 'click is removed.'\n }\n };\n },\n handleBlur: function handleBlur(event) {\n this.focused = false;\n this.$emit('blur', event);\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.blur', [this.value]);\n }\n },\n select: function select() {\n this.getInput().select();\n },\n resizeTextarea: function resizeTextarea() {\n if (this.$isServer) return;\n var autosize = this.autosize,\n type = this.type;\n\n if (type !== 'textarea') return;\n if (!autosize) {\n this.textareaCalcStyle = {\n minHeight: calcTextareaHeight(this.$refs.textarea).minHeight\n };\n return;\n }\n var minRows = autosize.minRows;\n var maxRows = autosize.maxRows;\n\n this.textareaCalcStyle = calcTextareaHeight(this.$refs.textarea, minRows, maxRows);\n },\n setNativeInputValue: function setNativeInputValue() {\n var input = this.getInput();\n if (!input) return;\n if (input.value === this.nativeInputValue) return;\n input.value = this.nativeInputValue;\n },\n handleFocus: function handleFocus(event) {\n this.focused = true;\n this.$emit('focus', event);\n },\n handleCompositionStart: function handleCompositionStart(event) {\n this.$emit('compositionstart', event);\n this.isComposing = true;\n },\n handleCompositionUpdate: function handleCompositionUpdate(event) {\n this.$emit('compositionupdate', event);\n var text = event.target.value;\n var lastCharacter = text[text.length - 1] || '';\n this.isComposing = !Object(shared_[\"isKorean\"])(lastCharacter);\n },\n handleCompositionEnd: function handleCompositionEnd(event) {\n this.$emit('compositionend', event);\n if (this.isComposing) {\n this.isComposing = false;\n this.handleInput(event);\n }\n },\n handleInput: function handleInput(event) {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (this.isComposing) return;\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (event.target.value === this.nativeInputValue) return;\n\n this.$emit('input', event.target.value);\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n this.$nextTick(this.setNativeInputValue);\n },\n handleChange: function handleChange(event) {\n this.$emit('change', event.target.value);\n },\n calcIconOffset: function calcIconOffset(place) {\n var elList = [].slice.call(this.$el.querySelectorAll('.el-input__' + place) || []);\n if (!elList.length) return;\n var el = null;\n for (var i = 0; i < elList.length; i++) {\n if (elList[i].parentNode === this.$el) {\n el = elList[i];\n break;\n }\n }\n if (!el) return;\n var pendantMap = {\n suffix: 'append',\n prefix: 'prepend'\n };\n\n var pendant = pendantMap[place];\n if (this.$slots[pendant]) {\n el.style.transform = 'translateX(' + (place === 'suffix' ? '-' : '') + this.$el.querySelector('.el-input-group__' + pendant).offsetWidth + 'px)';\n } else {\n el.removeAttribute('style');\n }\n },\n updateIconOffset: function updateIconOffset() {\n this.calcIconOffset('prefix');\n this.calcIconOffset('suffix');\n },\n clear: function clear() {\n this.$emit('input', '');\n this.$emit('change', '');\n this.$emit('clear');\n },\n handlePasswordVisible: function handlePasswordVisible() {\n var _this2 = this;\n\n this.passwordVisible = !this.passwordVisible;\n this.$nextTick(function () {\n _this2.focus();\n });\n },\n getInput: function getInput() {\n return this.$refs.input || this.$refs.textarea;\n },\n getSuffixVisible: function getSuffixVisible() {\n return this.$slots.suffix || this.suffixIcon || this.showClear || this.showPassword || this.isWordLimitVisible || this.validateState && this.needStatusIcon;\n }\n },\n\n created: function created() {\n this.$on('inputSelect', this.select);\n },\n mounted: function mounted() {\n this.setNativeInputValue();\n this.resizeTextarea();\n this.updateIconOffset();\n },\n updated: function updated() {\n this.$nextTick(this.updateIconOffset);\n }\n});\n// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_inputvue_type_script_lang_js_ = (inputvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/input/src/input.vue\n\n\n\n\n\n/* normalize component */\n\nvar input_component = normalizeComponent(\n src_inputvue_type_script_lang_js_,\n inputvue_type_template_id_343dd774_render,\n inputvue_type_template_id_343dd774_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var input_api; }\ninput_component.options.__file = \"packages/input/src/input.vue\"\n/* harmony default export */ var src_input = (input_component.exports);\n// CONCATENATED MODULE: ./packages/input/index.js\n\n\n/* istanbul ignore next */\nsrc_input.install = function (Vue) {\n Vue.component(src_input.name, src_input);\n};\n\n/* harmony default export */ var packages_input = (src_input);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input-number/src/input-number.vue?vue&type=template&id=42f8cf66&\nvar input_numbervue_type_template_id_42f8cf66_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n \"el-input-number\",\n _vm.inputNumberSize ? \"el-input-number--\" + _vm.inputNumberSize : \"\",\n { \"is-disabled\": _vm.inputNumberDisabled },\n { \"is-without-controls\": !_vm.controls },\n { \"is-controls-right\": _vm.controlsAtRight }\n ],\n on: {\n dragstart: function($event) {\n $event.preventDefault()\n }\n }\n },\n [\n _vm.controls\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.decrease,\n expression: \"decrease\"\n }\n ],\n staticClass: \"el-input-number__decrease\",\n class: { \"is-disabled\": _vm.minDisabled },\n attrs: { role: \"button\" },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.decrease($event)\n }\n }\n },\n [\n _c(\"i\", {\n class:\n \"el-icon-\" + (_vm.controlsAtRight ? \"arrow-down\" : \"minus\")\n })\n ]\n )\n : _vm._e(),\n _vm.controls\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.increase,\n expression: \"increase\"\n }\n ],\n staticClass: \"el-input-number__increase\",\n class: { \"is-disabled\": _vm.maxDisabled },\n attrs: { role: \"button\" },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.increase($event)\n }\n }\n },\n [\n _c(\"i\", {\n class: \"el-icon-\" + (_vm.controlsAtRight ? \"arrow-up\" : \"plus\")\n })\n ]\n )\n : _vm._e(),\n _c(\"el-input\", {\n ref: \"input\",\n attrs: {\n value: _vm.displayValue,\n placeholder: _vm.placeholder,\n disabled: _vm.inputNumberDisabled,\n size: _vm.inputNumberSize,\n max: _vm.max,\n min: _vm.min,\n name: _vm.name,\n label: _vm.label\n },\n on: {\n blur: _vm.handleBlur,\n focus: _vm.handleFocus,\n input: _vm.handleInput,\n change: _vm.handleInputChange\n },\n nativeOn: {\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.increase($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.decrease($event)\n }\n ]\n }\n })\n ],\n 1\n )\n}\nvar input_numbervue_type_template_id_42f8cf66_staticRenderFns = []\ninput_numbervue_type_template_id_42f8cf66_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue?vue&type=template&id=42f8cf66&\n\n// CONCATENATED MODULE: ./src/directives/repeat-click.js\n\n\n\n/* harmony default export */ var repeat_click = ({\n bind: function bind(el, binding, vnode) {\n var interval = null;\n var startTime = void 0;\n var maxIntervals = Object(util_[\"isMac\"])() ? 100 : 200;\n var handler = function handler() {\n return vnode.context[binding.expression].apply();\n };\n var clear = function clear() {\n if (Date.now() - startTime < maxIntervals) {\n handler();\n }\n clearInterval(interval);\n interval = null;\n };\n\n Object(dom_[\"on\"])(el, 'mousedown', function (e) {\n if (e.button !== 0) return;\n startTime = Date.now();\n Object(dom_[\"once\"])(document, 'mouseup', clear);\n clearInterval(interval);\n interval = setInterval(handler, maxIntervals);\n });\n }\n});\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input-number/src/input-number.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var input_numbervue_type_script_lang_js_ = ({\n name: 'ElInputNumber',\n mixins: [focus_default()('input')],\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n directives: {\n repeatClick: repeat_click\n },\n components: {\n ElInput: input_default.a\n },\n props: {\n step: {\n type: Number,\n default: 1\n },\n stepStrictly: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: Infinity\n },\n min: {\n type: Number,\n default: -Infinity\n },\n value: {},\n disabled: Boolean,\n size: String,\n controls: {\n type: Boolean,\n default: true\n },\n controlsPosition: {\n type: String,\n default: ''\n },\n name: String,\n label: String,\n placeholder: String,\n precision: {\n type: Number,\n validator: function validator(val) {\n return val >= 0 && val === parseInt(val, 10);\n }\n }\n },\n data: function data() {\n return {\n currentValue: 0,\n userInput: null\n };\n },\n\n watch: {\n value: {\n immediate: true,\n handler: function handler(value) {\n var newVal = value === undefined ? value : Number(value);\n if (newVal !== undefined) {\n if (isNaN(newVal)) {\n return;\n }\n\n if (this.stepStrictly) {\n var stepPrecision = this.getPrecision(this.step);\n var precisionFactor = Math.pow(10, stepPrecision);\n newVal = Math.round(newVal / this.step) * precisionFactor * this.step / precisionFactor;\n }\n\n if (this.precision !== undefined) {\n newVal = this.toPrecision(newVal, this.precision);\n }\n }\n if (newVal >= this.max) newVal = this.max;\n if (newVal <= this.min) newVal = this.min;\n this.currentValue = newVal;\n this.userInput = null;\n this.$emit('input', newVal);\n }\n }\n },\n computed: {\n minDisabled: function minDisabled() {\n return this._decrease(this.value, this.step) < this.min;\n },\n maxDisabled: function maxDisabled() {\n return this._increase(this.value, this.step) > this.max;\n },\n numPrecision: function numPrecision() {\n var value = this.value,\n step = this.step,\n getPrecision = this.getPrecision,\n precision = this.precision;\n\n var stepPrecision = getPrecision(step);\n if (precision !== undefined) {\n if (stepPrecision > precision) {\n console.warn('[Element Warn][InputNumber]precision should not be less than the decimal places of step');\n }\n return precision;\n } else {\n return Math.max(getPrecision(value), stepPrecision);\n }\n },\n controlsAtRight: function controlsAtRight() {\n return this.controls && this.controlsPosition === 'right';\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n inputNumberSize: function inputNumberSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputNumberDisabled: function inputNumberDisabled() {\n return this.disabled || !!(this.elForm || {}).disabled;\n },\n displayValue: function displayValue() {\n if (this.userInput !== null) {\n return this.userInput;\n }\n\n var currentValue = this.currentValue;\n\n if (typeof currentValue === 'number') {\n if (this.stepStrictly) {\n var stepPrecision = this.getPrecision(this.step);\n var precisionFactor = Math.pow(10, stepPrecision);\n currentValue = Math.round(currentValue / this.step) * precisionFactor * this.step / precisionFactor;\n }\n\n if (this.precision !== undefined) {\n currentValue = currentValue.toFixed(this.precision);\n }\n }\n\n return currentValue;\n }\n },\n methods: {\n toPrecision: function toPrecision(num, precision) {\n if (precision === undefined) precision = this.numPrecision;\n return parseFloat(Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision));\n },\n getPrecision: function getPrecision(value) {\n if (value === undefined) return 0;\n var valueString = value.toString();\n var dotPosition = valueString.indexOf('.');\n var precision = 0;\n if (dotPosition !== -1) {\n precision = valueString.length - dotPosition - 1;\n }\n return precision;\n },\n _increase: function _increase(val, step) {\n if (typeof val !== 'number' && val !== undefined) return this.currentValue;\n\n var precisionFactor = Math.pow(10, this.numPrecision);\n // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n return this.toPrecision((precisionFactor * val + precisionFactor * step) / precisionFactor);\n },\n _decrease: function _decrease(val, step) {\n if (typeof val !== 'number' && val !== undefined) return this.currentValue;\n\n var precisionFactor = Math.pow(10, this.numPrecision);\n\n return this.toPrecision((precisionFactor * val - precisionFactor * step) / precisionFactor);\n },\n increase: function increase() {\n if (this.inputNumberDisabled || this.maxDisabled) return;\n var value = this.value || 0;\n var newVal = this._increase(value, this.step);\n this.setCurrentValue(newVal);\n },\n decrease: function decrease() {\n if (this.inputNumberDisabled || this.minDisabled) return;\n var value = this.value || 0;\n var newVal = this._decrease(value, this.step);\n this.setCurrentValue(newVal);\n },\n handleBlur: function handleBlur(event) {\n this.$emit('blur', event);\n },\n handleFocus: function handleFocus(event) {\n this.$emit('focus', event);\n },\n setCurrentValue: function setCurrentValue(newVal) {\n var oldVal = this.currentValue;\n if (typeof newVal === 'number' && this.precision !== undefined) {\n newVal = this.toPrecision(newVal, this.precision);\n }\n if (newVal >= this.max) newVal = this.max;\n if (newVal <= this.min) newVal = this.min;\n if (oldVal === newVal) return;\n this.userInput = null;\n this.$emit('input', newVal);\n this.$emit('change', newVal, oldVal);\n this.currentValue = newVal;\n },\n handleInput: function handleInput(value) {\n this.userInput = value;\n },\n handleInputChange: function handleInputChange(value) {\n var newVal = value === '' ? undefined : Number(value);\n if (!isNaN(newVal) || value === '') {\n this.setCurrentValue(newVal);\n }\n this.userInput = null;\n },\n select: function select() {\n this.$refs.input.select();\n }\n },\n mounted: function mounted() {\n var innerInput = this.$refs.input.$refs.input;\n innerInput.setAttribute('role', 'spinbutton');\n innerInput.setAttribute('aria-valuemax', this.max);\n innerInput.setAttribute('aria-valuemin', this.min);\n innerInput.setAttribute('aria-valuenow', this.currentValue);\n innerInput.setAttribute('aria-disabled', this.inputNumberDisabled);\n },\n updated: function updated() {\n if (!this.$refs || !this.$refs.input) return;\n var innerInput = this.$refs.input.$refs.input;\n innerInput.setAttribute('aria-valuenow', this.currentValue);\n }\n});\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_input_numbervue_type_script_lang_js_ = (input_numbervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue\n\n\n\n\n\n/* normalize component */\n\nvar input_number_component = normalizeComponent(\n src_input_numbervue_type_script_lang_js_,\n input_numbervue_type_template_id_42f8cf66_render,\n input_numbervue_type_template_id_42f8cf66_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var input_number_api; }\ninput_number_component.options.__file = \"packages/input-number/src/input-number.vue\"\n/* harmony default export */ var input_number = (input_number_component.exports);\n// CONCATENATED MODULE: ./packages/input-number/index.js\n\n\n/* istanbul ignore next */\ninput_number.install = function (Vue) {\n Vue.component(input_number.name, input_number);\n};\n\n/* harmony default export */ var packages_input_number = (input_number);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio.vue?vue&type=template&id=69cd6268&\nvar radiovue_type_template_id_69cd6268_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-radio\",\n class: [\n _vm.border && _vm.radioSize ? \"el-radio--\" + _vm.radioSize : \"\",\n { \"is-disabled\": _vm.isDisabled },\n { \"is-focus\": _vm.focus },\n { \"is-bordered\": _vm.border },\n { \"is-checked\": _vm.model === _vm.label }\n ],\n attrs: {\n role: \"radio\",\n \"aria-checked\": _vm.model === _vm.label,\n \"aria-disabled\": _vm.isDisabled,\n tabindex: _vm.tabIndex\n },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"space\", 32, $event.key, [\" \", \"Spacebar\"])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.model = _vm.isDisabled ? _vm.model : _vm.label\n }\n }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"el-radio__input\",\n class: {\n \"is-disabled\": _vm.isDisabled,\n \"is-checked\": _vm.model === _vm.label\n }\n },\n [\n _c(\"span\", { staticClass: \"el-radio__inner\" }),\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n ref: \"radio\",\n staticClass: \"el-radio__original\",\n attrs: {\n type: \"radio\",\n \"aria-hidden\": \"true\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n tabindex: \"-1\",\n autocomplete: \"off\"\n },\n domProps: {\n value: _vm.label,\n checked: _vm._q(_vm.model, _vm.label)\n },\n on: {\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n },\n change: [\n function($event) {\n _vm.model = _vm.label\n },\n _vm.handleChange\n ]\n }\n })\n ]\n ),\n _c(\n \"span\",\n {\n staticClass: \"el-radio__label\",\n on: {\n keydown: function($event) {\n $event.stopPropagation()\n }\n }\n },\n [\n _vm._t(\"default\"),\n !_vm.$slots.default ? [_vm._v(_vm._s(_vm.label))] : _vm._e()\n ],\n 2\n )\n ]\n )\n}\nvar radiovue_type_template_id_69cd6268_staticRenderFns = []\nradiovue_type_template_id_69cd6268_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/radio/src/radio.vue?vue&type=template&id=69cd6268&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var radiovue_type_script_lang_js_ = ({\n name: 'ElRadio',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n\n elFormItem: {\n default: ''\n }\n },\n\n componentName: 'ElRadio',\n\n props: {\n value: {},\n label: {},\n disabled: Boolean,\n name: String,\n border: Boolean,\n size: String\n },\n\n data: function data() {\n return {\n focus: false\n };\n },\n\n computed: {\n isGroup: function isGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElRadioGroup') {\n parent = parent.$parent;\n } else {\n this._radioGroup = parent;\n return true;\n }\n }\n return false;\n },\n\n model: {\n get: function get() {\n return this.isGroup ? this._radioGroup.value : this.value;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.dispatch('ElRadioGroup', 'input', [val]);\n } else {\n this.$emit('input', val);\n }\n this.$refs.radio && (this.$refs.radio.checked = this.model === this.label);\n }\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n radioSize: function radioSize() {\n var temRadioSize = this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n return this.isGroup ? this._radioGroup.radioGroupSize || temRadioSize : temRadioSize;\n },\n isDisabled: function isDisabled() {\n return this.isGroup ? this._radioGroup.disabled || this.disabled || (this.elForm || {}).disabled : this.disabled || (this.elForm || {}).disabled;\n },\n tabIndex: function tabIndex() {\n return this.isDisabled || this.isGroup && this.model !== this.label ? -1 : 0;\n }\n },\n\n methods: {\n handleChange: function handleChange() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.$emit('change', _this.model);\n _this.isGroup && _this.dispatch('ElRadioGroup', 'handleChange', _this.model);\n });\n }\n }\n});\n// CONCATENATED MODULE: ./packages/radio/src/radio.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_radiovue_type_script_lang_js_ = (radiovue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/radio/src/radio.vue\n\n\n\n\n\n/* normalize component */\n\nvar radio_component = normalizeComponent(\n src_radiovue_type_script_lang_js_,\n radiovue_type_template_id_69cd6268_render,\n radiovue_type_template_id_69cd6268_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var radio_api; }\nradio_component.options.__file = \"packages/radio/src/radio.vue\"\n/* harmony default export */ var src_radio = (radio_component.exports);\n// CONCATENATED MODULE: ./packages/radio/index.js\n\n\n/* istanbul ignore next */\nsrc_radio.install = function (Vue) {\n Vue.component(src_radio.name, src_radio);\n};\n\n/* harmony default export */ var packages_radio = (src_radio);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio-group.vue?vue&type=template&id=818a704c&\nvar radio_groupvue_type_template_id_818a704c_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n _vm._elTag,\n {\n tag: \"component\",\n staticClass: \"el-radio-group\",\n attrs: { role: \"radiogroup\" },\n on: { keydown: _vm.handleKeydown }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar radio_groupvue_type_template_id_818a704c_staticRenderFns = []\nradio_groupvue_type_template_id_818a704c_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/radio/src/radio-group.vue?vue&type=template&id=818a704c&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio-group.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\nvar keyCode = Object.freeze({\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n});\n/* harmony default export */ var radio_groupvue_type_script_lang_js_ = ({\n name: 'ElRadioGroup',\n\n componentName: 'ElRadioGroup',\n\n inject: {\n elFormItem: {\n default: ''\n }\n },\n\n mixins: [emitter_default.a],\n\n props: {\n value: {},\n size: String,\n fill: String,\n textColor: String,\n disabled: Boolean\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n _elTag: function _elTag() {\n var tag = (this.$vnode.data || {}).tag;\n if (!tag || tag === 'component') tag = 'div';\n return tag;\n },\n radioGroupSize: function radioGroupSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n }\n },\n\n created: function created() {\n var _this = this;\n\n this.$on('handleChange', function (value) {\n _this.$emit('change', value);\n });\n },\n mounted: function mounted() {\n // 当radioGroup没有默认选项时,第一个可以选中Tab导航\n var radios = this.$el.querySelectorAll('[type=radio]');\n var firstLabel = this.$el.querySelectorAll('[role=radio]')[0];\n if (![].some.call(radios, function (radio) {\n return radio.checked;\n }) && firstLabel) {\n firstLabel.tabIndex = 0;\n }\n },\n\n methods: {\n handleKeydown: function handleKeydown(e) {\n // 左右上下按键 可以在radio组内切换不同选项\n var target = e.target;\n var className = target.nodeName === 'INPUT' ? '[type=radio]' : '[role=radio]';\n var radios = this.$el.querySelectorAll(className);\n var length = radios.length;\n var index = [].indexOf.call(radios, target);\n var roleRadios = this.$el.querySelectorAll('[role=radio]');\n switch (e.keyCode) {\n case keyCode.LEFT:\n case keyCode.UP:\n e.stopPropagation();\n e.preventDefault();\n if (index === 0) {\n roleRadios[length - 1].click();\n roleRadios[length - 1].focus();\n } else {\n roleRadios[index - 1].click();\n roleRadios[index - 1].focus();\n }\n break;\n case keyCode.RIGHT:\n case keyCode.DOWN:\n if (index === length - 1) {\n e.stopPropagation();\n e.preventDefault();\n roleRadios[0].click();\n roleRadios[0].focus();\n } else {\n roleRadios[index + 1].click();\n roleRadios[index + 1].focus();\n }\n break;\n default:\n break;\n }\n }\n },\n watch: {\n value: function value(_value) {\n this.dispatch('ElFormItem', 'el.form.change', [this.value]);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/radio/src/radio-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_radio_groupvue_type_script_lang_js_ = (radio_groupvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/radio/src/radio-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar radio_group_component = normalizeComponent(\n src_radio_groupvue_type_script_lang_js_,\n radio_groupvue_type_template_id_818a704c_render,\n radio_groupvue_type_template_id_818a704c_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var radio_group_api; }\nradio_group_component.options.__file = \"packages/radio/src/radio-group.vue\"\n/* harmony default export */ var radio_group = (radio_group_component.exports);\n// CONCATENATED MODULE: ./packages/radio-group/index.js\n\n\n/* istanbul ignore next */\nradio_group.install = function (Vue) {\n Vue.component(radio_group.name, radio_group);\n};\n\n/* harmony default export */ var packages_radio_group = (radio_group);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio-button.vue?vue&type=template&id=18a77a32&\nvar radio_buttonvue_type_template_id_18a77a32_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-radio-button\",\n class: [\n _vm.size ? \"el-radio-button--\" + _vm.size : \"\",\n { \"is-active\": _vm.value === _vm.label },\n { \"is-disabled\": _vm.isDisabled },\n { \"is-focus\": _vm.focus }\n ],\n attrs: {\n role: \"radio\",\n \"aria-checked\": _vm.value === _vm.label,\n \"aria-disabled\": _vm.isDisabled,\n tabindex: _vm.tabIndex\n },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"space\", 32, $event.key, [\" \", \"Spacebar\"])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.value = _vm.isDisabled ? _vm.value : _vm.label\n }\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.value,\n expression: \"value\"\n }\n ],\n staticClass: \"el-radio-button__orig-radio\",\n attrs: {\n type: \"radio\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n tabindex: \"-1\",\n autocomplete: \"off\"\n },\n domProps: { value: _vm.label, checked: _vm._q(_vm.value, _vm.label) },\n on: {\n change: [\n function($event) {\n _vm.value = _vm.label\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n }),\n _c(\n \"span\",\n {\n staticClass: \"el-radio-button__inner\",\n style: _vm.value === _vm.label ? _vm.activeStyle : null,\n on: {\n keydown: function($event) {\n $event.stopPropagation()\n }\n }\n },\n [\n _vm._t(\"default\"),\n !_vm.$slots.default ? [_vm._v(_vm._s(_vm.label))] : _vm._e()\n ],\n 2\n )\n ]\n )\n}\nvar radio_buttonvue_type_template_id_18a77a32_staticRenderFns = []\nradio_buttonvue_type_template_id_18a77a32_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/radio/src/radio-button.vue?vue&type=template&id=18a77a32&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio-button.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var radio_buttonvue_type_script_lang_js_ = ({\n name: 'ElRadioButton',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n label: {},\n disabled: Boolean,\n name: String\n },\n data: function data() {\n return {\n focus: false\n };\n },\n\n computed: {\n value: {\n get: function get() {\n return this._radioGroup.value;\n },\n set: function set(value) {\n this._radioGroup.$emit('input', value);\n }\n },\n _radioGroup: function _radioGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElRadioGroup') {\n parent = parent.$parent;\n } else {\n return parent;\n }\n }\n return false;\n },\n activeStyle: function activeStyle() {\n return {\n backgroundColor: this._radioGroup.fill || '',\n borderColor: this._radioGroup.fill || '',\n boxShadow: this._radioGroup.fill ? '-1px 0 0 0 ' + this._radioGroup.fill : '',\n color: this._radioGroup.textColor || ''\n };\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n size: function size() {\n return this._radioGroup.radioGroupSize || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n isDisabled: function isDisabled() {\n return this.disabled || this._radioGroup.disabled || (this.elForm || {}).disabled;\n },\n tabIndex: function tabIndex() {\n return this.isDisabled || this._radioGroup && this.value !== this.label ? -1 : 0;\n }\n },\n\n methods: {\n handleChange: function handleChange() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.dispatch('ElRadioGroup', 'handleChange', _this.value);\n });\n }\n }\n});\n// CONCATENATED MODULE: ./packages/radio/src/radio-button.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_radio_buttonvue_type_script_lang_js_ = (radio_buttonvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/radio/src/radio-button.vue\n\n\n\n\n\n/* normalize component */\n\nvar radio_button_component = normalizeComponent(\n src_radio_buttonvue_type_script_lang_js_,\n radio_buttonvue_type_template_id_18a77a32_render,\n radio_buttonvue_type_template_id_18a77a32_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var radio_button_api; }\nradio_button_component.options.__file = \"packages/radio/src/radio-button.vue\"\n/* harmony default export */ var radio_button = (radio_button_component.exports);\n// CONCATENATED MODULE: ./packages/radio-button/index.js\n\n\n/* istanbul ignore next */\nradio_button.install = function (Vue) {\n Vue.component(radio_button.name, radio_button);\n};\n\n/* harmony default export */ var packages_radio_button = (radio_button);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\nvar checkboxvue_type_template_id_d0387074_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-checkbox\",\n class: [\n _vm.border && _vm.checkboxSize\n ? \"el-checkbox--\" + _vm.checkboxSize\n : \"\",\n { \"is-disabled\": _vm.isDisabled },\n { \"is-bordered\": _vm.border },\n { \"is-checked\": _vm.isChecked }\n ],\n attrs: { id: _vm.id }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"el-checkbox__input\",\n class: {\n \"is-disabled\": _vm.isDisabled,\n \"is-checked\": _vm.isChecked,\n \"is-indeterminate\": _vm.indeterminate,\n \"is-focus\": _vm.focus\n },\n attrs: {\n tabindex: _vm.indeterminate ? 0 : false,\n role: _vm.indeterminate ? \"checkbox\" : false,\n \"aria-checked\": _vm.indeterminate ? \"mixed\" : false\n }\n },\n [\n _c(\"span\", { staticClass: \"el-checkbox__inner\" }),\n _vm.trueLabel || _vm.falseLabel\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": _vm.indeterminate ? \"true\" : \"false\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n \"true-value\": _vm.trueLabel,\n \"false-value\": _vm.falseLabel\n },\n domProps: {\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, null) > -1\n : _vm._q(_vm.model, _vm.trueLabel)\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? _vm.trueLabel : _vm.falseLabel\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n : _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": _vm.indeterminate ? \"true\" : \"false\",\n disabled: _vm.isDisabled,\n name: _vm.name\n },\n domProps: {\n value: _vm.label,\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, _vm.label) > -1\n : _vm.model\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = _vm.label,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n ]\n ),\n _vm.$slots.default || _vm.label\n ? _c(\n \"span\",\n { staticClass: \"el-checkbox__label\" },\n [\n _vm._t(\"default\"),\n !_vm.$slots.default ? [_vm._v(_vm._s(_vm.label))] : _vm._e()\n ],\n 2\n )\n : _vm._e()\n ]\n )\n}\nvar checkboxvue_type_template_id_d0387074_staticRenderFns = []\ncheckboxvue_type_template_id_d0387074_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var checkboxvue_type_script_lang_js_ = ({\n name: 'ElCheckbox',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n componentName: 'ElCheckbox',\n\n data: function data() {\n return {\n selfModel: false,\n focus: false,\n isLimitExceeded: false\n };\n },\n\n\n computed: {\n model: {\n get: function get() {\n return this.isGroup ? this.store : this.value !== undefined ? this.value : this.selfModel;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.isLimitExceeded = false;\n this._checkboxGroup.min !== undefined && val.length < this._checkboxGroup.min && (this.isLimitExceeded = true);\n\n this._checkboxGroup.max !== undefined && val.length > this._checkboxGroup.max && (this.isLimitExceeded = true);\n\n this.isLimitExceeded === false && this.dispatch('ElCheckboxGroup', 'input', [val]);\n } else {\n this.$emit('input', val);\n this.selfModel = val;\n }\n }\n },\n\n isChecked: function isChecked() {\n if ({}.toString.call(this.model) === '[object Boolean]') {\n return this.model;\n } else if (Array.isArray(this.model)) {\n return this.model.indexOf(this.label) > -1;\n } else if (this.model !== null && this.model !== undefined) {\n return this.model === this.trueLabel;\n }\n },\n isGroup: function isGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElCheckboxGroup') {\n parent = parent.$parent;\n } else {\n this._checkboxGroup = parent;\n return true;\n }\n }\n return false;\n },\n store: function store() {\n return this._checkboxGroup ? this._checkboxGroup.value : this.value;\n },\n\n\n /* used to make the isDisabled judgment under max/min props */\n isLimitDisabled: function isLimitDisabled() {\n var _checkboxGroup = this._checkboxGroup,\n max = _checkboxGroup.max,\n min = _checkboxGroup.min;\n\n return !!(max || min) && this.model.length >= max && !this.isChecked || this.model.length <= min && this.isChecked;\n },\n isDisabled: function isDisabled() {\n return this.isGroup ? this._checkboxGroup.disabled || this.disabled || (this.elForm || {}).disabled || this.isLimitDisabled : this.disabled || (this.elForm || {}).disabled;\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n checkboxSize: function checkboxSize() {\n var temCheckboxSize = this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n return this.isGroup ? this._checkboxGroup.checkboxGroupSize || temCheckboxSize : temCheckboxSize;\n }\n },\n\n props: {\n value: {},\n label: {},\n indeterminate: Boolean,\n disabled: Boolean,\n checked: Boolean,\n name: String,\n trueLabel: [String, Number],\n falseLabel: [String, Number],\n id: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n controls: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n border: Boolean,\n size: String\n },\n\n methods: {\n addToStore: function addToStore() {\n if (Array.isArray(this.model) && this.model.indexOf(this.label) === -1) {\n this.model.push(this.label);\n } else {\n this.model = this.trueLabel || true;\n }\n },\n handleChange: function handleChange(ev) {\n var _this = this;\n\n if (this.isLimitExceeded) return;\n var value = void 0;\n if (ev.target.checked) {\n value = this.trueLabel === undefined ? true : this.trueLabel;\n } else {\n value = this.falseLabel === undefined ? false : this.falseLabel;\n }\n this.$emit('change', value, ev);\n this.$nextTick(function () {\n if (_this.isGroup) {\n _this.dispatch('ElCheckboxGroup', 'change', [_this._checkboxGroup.value]);\n }\n });\n }\n },\n\n created: function created() {\n this.checked && this.addToStore();\n },\n mounted: function mounted() {\n // 为indeterminate元素 添加aria-controls 属性\n if (this.indeterminate) {\n this.$el.setAttribute('aria-controls', this.controls);\n }\n },\n\n\n watch: {\n value: function value(_value) {\n this.dispatch('ElFormItem', 'el.form.change', _value);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_checkboxvue_type_script_lang_js_ = (checkboxvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue\n\n\n\n\n\n/* normalize component */\n\nvar checkbox_component = normalizeComponent(\n src_checkboxvue_type_script_lang_js_,\n checkboxvue_type_template_id_d0387074_render,\n checkboxvue_type_template_id_d0387074_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var checkbox_api; }\ncheckbox_component.options.__file = \"packages/checkbox/src/checkbox.vue\"\n/* harmony default export */ var src_checkbox = (checkbox_component.exports);\n// CONCATENATED MODULE: ./packages/checkbox/index.js\n\n\n/* istanbul ignore next */\nsrc_checkbox.install = function (Vue) {\n Vue.component(src_checkbox.name, src_checkbox);\n};\n\n/* harmony default export */ var packages_checkbox = (src_checkbox);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-button.vue?vue&type=template&id=478e906e&\nvar checkbox_buttonvue_type_template_id_478e906e_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-checkbox-button\",\n class: [\n _vm.size ? \"el-checkbox-button--\" + _vm.size : \"\",\n { \"is-disabled\": _vm.isDisabled },\n { \"is-checked\": _vm.isChecked },\n { \"is-focus\": _vm.focus }\n ],\n attrs: {\n role: \"checkbox\",\n \"aria-checked\": _vm.isChecked,\n \"aria-disabled\": _vm.isDisabled\n }\n },\n [\n _vm.trueLabel || _vm.falseLabel\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox-button__original\",\n attrs: {\n type: \"checkbox\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n \"true-value\": _vm.trueLabel,\n \"false-value\": _vm.falseLabel\n },\n domProps: {\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, null) > -1\n : _vm._q(_vm.model, _vm.trueLabel)\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? _vm.trueLabel : _vm.falseLabel\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n : _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox-button__original\",\n attrs: {\n type: \"checkbox\",\n name: _vm.name,\n disabled: _vm.isDisabled\n },\n domProps: {\n value: _vm.label,\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, _vm.label) > -1\n : _vm.model\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = _vm.label,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n }),\n _vm.$slots.default || _vm.label\n ? _c(\n \"span\",\n {\n staticClass: \"el-checkbox-button__inner\",\n style: _vm.isChecked ? _vm.activeStyle : null\n },\n [_vm._t(\"default\", [_vm._v(_vm._s(_vm.label))])],\n 2\n )\n : _vm._e()\n ]\n )\n}\nvar checkbox_buttonvue_type_template_id_478e906e_staticRenderFns = []\ncheckbox_buttonvue_type_template_id_478e906e_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-button.vue?vue&type=template&id=478e906e&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-button.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var checkbox_buttonvue_type_script_lang_js_ = ({\n name: 'ElCheckboxButton',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n data: function data() {\n return {\n selfModel: false,\n focus: false,\n isLimitExceeded: false\n };\n },\n\n\n props: {\n value: {},\n label: {},\n disabled: Boolean,\n checked: Boolean,\n name: String,\n trueLabel: [String, Number],\n falseLabel: [String, Number]\n },\n computed: {\n model: {\n get: function get() {\n return this._checkboxGroup ? this.store : this.value !== undefined ? this.value : this.selfModel;\n },\n set: function set(val) {\n if (this._checkboxGroup) {\n this.isLimitExceeded = false;\n this._checkboxGroup.min !== undefined && val.length < this._checkboxGroup.min && (this.isLimitExceeded = true);\n\n this._checkboxGroup.max !== undefined && val.length > this._checkboxGroup.max && (this.isLimitExceeded = true);\n\n this.isLimitExceeded === false && this.dispatch('ElCheckboxGroup', 'input', [val]);\n } else if (this.value !== undefined) {\n this.$emit('input', val);\n } else {\n this.selfModel = val;\n }\n }\n },\n\n isChecked: function isChecked() {\n if ({}.toString.call(this.model) === '[object Boolean]') {\n return this.model;\n } else if (Array.isArray(this.model)) {\n return this.model.indexOf(this.label) > -1;\n } else if (this.model !== null && this.model !== undefined) {\n return this.model === this.trueLabel;\n }\n },\n _checkboxGroup: function _checkboxGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElCheckboxGroup') {\n parent = parent.$parent;\n } else {\n return parent;\n }\n }\n return false;\n },\n store: function store() {\n return this._checkboxGroup ? this._checkboxGroup.value : this.value;\n },\n activeStyle: function activeStyle() {\n return {\n backgroundColor: this._checkboxGroup.fill || '',\n borderColor: this._checkboxGroup.fill || '',\n color: this._checkboxGroup.textColor || '',\n 'box-shadow': '-1px 0 0 0 ' + this._checkboxGroup.fill\n\n };\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n size: function size() {\n return this._checkboxGroup.checkboxGroupSize || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n\n\n /* used to make the isDisabled judgment under max/min props */\n isLimitDisabled: function isLimitDisabled() {\n var _checkboxGroup2 = this._checkboxGroup,\n max = _checkboxGroup2.max,\n min = _checkboxGroup2.min;\n\n return !!(max || min) && this.model.length >= max && !this.isChecked || this.model.length <= min && this.isChecked;\n },\n isDisabled: function isDisabled() {\n return this._checkboxGroup ? this._checkboxGroup.disabled || this.disabled || (this.elForm || {}).disabled || this.isLimitDisabled : this.disabled || (this.elForm || {}).disabled;\n }\n },\n methods: {\n addToStore: function addToStore() {\n if (Array.isArray(this.model) && this.model.indexOf(this.label) === -1) {\n this.model.push(this.label);\n } else {\n this.model = this.trueLabel || true;\n }\n },\n handleChange: function handleChange(ev) {\n var _this = this;\n\n if (this.isLimitExceeded) return;\n var value = void 0;\n if (ev.target.checked) {\n value = this.trueLabel === undefined ? true : this.trueLabel;\n } else {\n value = this.falseLabel === undefined ? false : this.falseLabel;\n }\n this.$emit('change', value, ev);\n this.$nextTick(function () {\n if (_this._checkboxGroup) {\n _this.dispatch('ElCheckboxGroup', 'change', [_this._checkboxGroup.value]);\n }\n });\n }\n },\n\n created: function created() {\n this.checked && this.addToStore();\n }\n});\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-button.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_checkbox_buttonvue_type_script_lang_js_ = (checkbox_buttonvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-button.vue\n\n\n\n\n\n/* normalize component */\n\nvar checkbox_button_component = normalizeComponent(\n src_checkbox_buttonvue_type_script_lang_js_,\n checkbox_buttonvue_type_template_id_478e906e_render,\n checkbox_buttonvue_type_template_id_478e906e_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var checkbox_button_api; }\ncheckbox_button_component.options.__file = \"packages/checkbox/src/checkbox-button.vue\"\n/* harmony default export */ var checkbox_button = (checkbox_button_component.exports);\n// CONCATENATED MODULE: ./packages/checkbox-button/index.js\n\n\n/* istanbul ignore next */\ncheckbox_button.install = function (Vue) {\n Vue.component(checkbox_button.name, checkbox_button);\n};\n\n/* harmony default export */ var packages_checkbox_button = (checkbox_button);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-group.vue?vue&type=template&id=7289a290&\nvar checkbox_groupvue_type_template_id_7289a290_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-checkbox-group\",\n attrs: { role: \"group\", \"aria-label\": \"checkbox-group\" }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar checkbox_groupvue_type_template_id_7289a290_staticRenderFns = []\ncheckbox_groupvue_type_template_id_7289a290_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue?vue&type=template&id=7289a290&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-group.vue?vue&type=script&lang=js&\n\n\n\n/* harmony default export */ var checkbox_groupvue_type_script_lang_js_ = ({\n name: 'ElCheckboxGroup',\n\n componentName: 'ElCheckboxGroup',\n\n mixins: [emitter_default.a],\n\n inject: {\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n value: {},\n disabled: Boolean,\n min: Number,\n max: Number,\n size: String,\n fill: String,\n textColor: String\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n checkboxGroupSize: function checkboxGroupSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n }\n },\n\n watch: {\n value: function value(_value) {\n this.dispatch('ElFormItem', 'el.form.change', [_value]);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_checkbox_groupvue_type_script_lang_js_ = (checkbox_groupvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar checkbox_group_component = normalizeComponent(\n src_checkbox_groupvue_type_script_lang_js_,\n checkbox_groupvue_type_template_id_7289a290_render,\n checkbox_groupvue_type_template_id_7289a290_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var checkbox_group_api; }\ncheckbox_group_component.options.__file = \"packages/checkbox/src/checkbox-group.vue\"\n/* harmony default export */ var checkbox_group = (checkbox_group_component.exports);\n// CONCATENATED MODULE: ./packages/checkbox-group/index.js\n\n\n/* istanbul ignore next */\ncheckbox_group.install = function (Vue) {\n Vue.component(checkbox_group.name, checkbox_group);\n};\n\n/* harmony default export */ var packages_checkbox_group = (checkbox_group);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/switch/src/component.vue?vue&type=template&id=2dcd8fbb&\nvar componentvue_type_template_id_2dcd8fbb_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-switch\",\n class: { \"is-disabled\": _vm.switchDisabled, \"is-checked\": _vm.checked },\n attrs: {\n role: \"switch\",\n \"aria-checked\": _vm.checked,\n \"aria-disabled\": _vm.switchDisabled\n },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.switchValue($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"input\",\n staticClass: \"el-switch__input\",\n attrs: {\n type: \"checkbox\",\n id: _vm.id,\n name: _vm.name,\n \"true-value\": _vm.activeValue,\n \"false-value\": _vm.inactiveValue,\n disabled: _vm.switchDisabled\n },\n on: {\n change: _vm.handleChange,\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.switchValue($event)\n }\n }\n }),\n _vm.inactiveIconClass || _vm.inactiveText\n ? _c(\n \"span\",\n {\n class: [\n \"el-switch__label\",\n \"el-switch__label--left\",\n !_vm.checked ? \"is-active\" : \"\"\n ]\n },\n [\n _vm.inactiveIconClass\n ? _c(\"i\", { class: [_vm.inactiveIconClass] })\n : _vm._e(),\n !_vm.inactiveIconClass && _vm.inactiveText\n ? _c(\"span\", { attrs: { \"aria-hidden\": _vm.checked } }, [\n _vm._v(_vm._s(_vm.inactiveText))\n ])\n : _vm._e()\n ]\n )\n : _vm._e(),\n _c(\"span\", {\n ref: \"core\",\n staticClass: \"el-switch__core\",\n style: { width: _vm.coreWidth + \"px\" }\n }),\n _vm.activeIconClass || _vm.activeText\n ? _c(\n \"span\",\n {\n class: [\n \"el-switch__label\",\n \"el-switch__label--right\",\n _vm.checked ? \"is-active\" : \"\"\n ]\n },\n [\n _vm.activeIconClass\n ? _c(\"i\", { class: [_vm.activeIconClass] })\n : _vm._e(),\n !_vm.activeIconClass && _vm.activeText\n ? _c(\"span\", { attrs: { \"aria-hidden\": !_vm.checked } }, [\n _vm._v(_vm._s(_vm.activeText))\n ])\n : _vm._e()\n ]\n )\n : _vm._e()\n ]\n )\n}\nvar componentvue_type_template_id_2dcd8fbb_staticRenderFns = []\ncomponentvue_type_template_id_2dcd8fbb_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/switch/src/component.vue?vue&type=template&id=2dcd8fbb&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/switch/src/component.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var switch_src_componentvue_type_script_lang_js_ = ({\n name: 'ElSwitch',\n mixins: [focus_default()('input'), migrating_default.a, emitter_default.a],\n inject: {\n elForm: {\n default: ''\n }\n },\n props: {\n value: {\n type: [Boolean, String, Number],\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n width: {\n type: Number,\n default: 40\n },\n activeIconClass: {\n type: String,\n default: ''\n },\n inactiveIconClass: {\n type: String,\n default: ''\n },\n activeText: String,\n inactiveText: String,\n activeColor: {\n type: String,\n default: ''\n },\n inactiveColor: {\n type: String,\n default: ''\n },\n activeValue: {\n type: [Boolean, String, Number],\n default: true\n },\n inactiveValue: {\n type: [Boolean, String, Number],\n default: false\n },\n name: {\n type: String,\n default: ''\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n id: String\n },\n data: function data() {\n return {\n coreWidth: this.width\n };\n },\n created: function created() {\n if (!~[this.activeValue, this.inactiveValue].indexOf(this.value)) {\n this.$emit('input', this.inactiveValue);\n }\n },\n\n computed: {\n checked: function checked() {\n return this.value === this.activeValue;\n },\n switchDisabled: function switchDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n }\n },\n watch: {\n checked: function checked() {\n this.$refs.input.checked = this.checked;\n if (this.activeColor || this.inactiveColor) {\n this.setBackgroundColor();\n }\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.change', [this.value]);\n }\n }\n },\n methods: {\n handleChange: function handleChange(event) {\n var _this = this;\n\n var val = this.checked ? this.inactiveValue : this.activeValue;\n this.$emit('input', val);\n this.$emit('change', val);\n this.$nextTick(function () {\n // set input's checked property\n // in case parent refuses to change component's value\n if (_this.$refs.input) {\n _this.$refs.input.checked = _this.checked;\n }\n });\n },\n setBackgroundColor: function setBackgroundColor() {\n var newColor = this.checked ? this.activeColor : this.inactiveColor;\n this.$refs.core.style.borderColor = newColor;\n this.$refs.core.style.backgroundColor = newColor;\n },\n switchValue: function switchValue() {\n !this.switchDisabled && this.handleChange();\n },\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'on-color': 'on-color is renamed to active-color.',\n 'off-color': 'off-color is renamed to inactive-color.',\n 'on-text': 'on-text is renamed to active-text.',\n 'off-text': 'off-text is renamed to inactive-text.',\n 'on-value': 'on-value is renamed to active-value.',\n 'off-value': 'off-value is renamed to inactive-value.',\n 'on-icon-class': 'on-icon-class is renamed to active-icon-class.',\n 'off-icon-class': 'off-icon-class is renamed to inactive-icon-class.'\n }\n };\n }\n },\n mounted: function mounted() {\n /* istanbul ignore if */\n this.coreWidth = this.width || 40;\n if (this.activeColor || this.inactiveColor) {\n this.setBackgroundColor();\n }\n this.$refs.input.checked = this.checked;\n }\n});\n// CONCATENATED MODULE: ./packages/switch/src/component.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_switch_src_componentvue_type_script_lang_js_ = (switch_src_componentvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/switch/src/component.vue\n\n\n\n\n\n/* normalize component */\n\nvar src_component_component = normalizeComponent(\n packages_switch_src_componentvue_type_script_lang_js_,\n componentvue_type_template_id_2dcd8fbb_render,\n componentvue_type_template_id_2dcd8fbb_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var src_component_api; }\nsrc_component_component.options.__file = \"packages/switch/src/component.vue\"\n/* harmony default export */ var switch_src_component = (src_component_component.exports);\n// CONCATENATED MODULE: ./packages/switch/index.js\n\n\n/* istanbul ignore next */\nswitch_src_component.install = function (Vue) {\n Vue.component(switch_src_component.name, switch_src_component);\n};\n\n/* harmony default export */ var packages_switch = (switch_src_component);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=template&id=0e4aade6&\nvar selectvue_type_template_id_0e4aade6_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleClose,\n expression: \"handleClose\"\n }\n ],\n staticClass: \"el-select\",\n class: [_vm.selectSize ? \"el-select--\" + _vm.selectSize : \"\"],\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.toggleMenu($event)\n }\n }\n },\n [\n _vm.multiple\n ? _c(\n \"div\",\n {\n ref: \"tags\",\n staticClass: \"el-select__tags\",\n style: { \"max-width\": _vm.inputWidth - 32 + \"px\", width: \"100%\" }\n },\n [\n _vm.collapseTags && _vm.selected.length\n ? _c(\n \"span\",\n [\n _c(\n \"el-tag\",\n {\n attrs: {\n closable: !_vm.selectDisabled,\n size: _vm.collapseTagSize,\n hit: _vm.selected[0].hitState,\n type: \"info\",\n \"disable-transitions\": \"\"\n },\n on: {\n close: function($event) {\n _vm.deleteTag($event, _vm.selected[0])\n }\n }\n },\n [\n _c(\"span\", { staticClass: \"el-select__tags-text\" }, [\n _vm._v(_vm._s(_vm.selected[0].currentLabel))\n ])\n ]\n ),\n _vm.selected.length > 1\n ? _c(\n \"el-tag\",\n {\n attrs: {\n closable: false,\n size: _vm.collapseTagSize,\n type: \"info\",\n \"disable-transitions\": \"\"\n }\n },\n [\n _c(\n \"span\",\n { staticClass: \"el-select__tags-text\" },\n [_vm._v(\"+ \" + _vm._s(_vm.selected.length - 1))]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n !_vm.collapseTags\n ? _c(\n \"transition-group\",\n { on: { \"after-leave\": _vm.resetInputHeight } },\n _vm._l(_vm.selected, function(item) {\n return _c(\n \"el-tag\",\n {\n key: _vm.getValueKey(item),\n attrs: {\n closable: !_vm.selectDisabled,\n size: _vm.collapseTagSize,\n hit: item.hitState,\n type: \"info\",\n \"disable-transitions\": \"\"\n },\n on: {\n close: function($event) {\n _vm.deleteTag($event, item)\n }\n }\n },\n [\n _c(\"span\", { staticClass: \"el-select__tags-text\" }, [\n _vm._v(_vm._s(item.currentLabel))\n ])\n ]\n )\n }),\n 1\n )\n : _vm._e(),\n _vm.filterable\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.query,\n expression: \"query\"\n }\n ],\n ref: \"input\",\n staticClass: \"el-select__input\",\n class: [_vm.selectSize ? \"is-\" + _vm.selectSize : \"\"],\n style: {\n \"flex-grow\": \"1\",\n width: _vm.inputLength / (_vm.inputWidth - 32) + \"%\",\n \"max-width\": _vm.inputWidth - 42 + \"px\"\n },\n attrs: {\n type: \"text\",\n disabled: _vm.selectDisabled,\n autocomplete: _vm.autoComplete || _vm.autocomplete\n },\n domProps: { value: _vm.query },\n on: {\n focus: _vm.handleFocus,\n blur: function($event) {\n _vm.softFocus = false\n },\n keyup: _vm.managePlaceholder,\n keydown: [\n _vm.resetInputState,\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.handleNavigate(\"next\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.handleNavigate(\"prev\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.selectOption($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.visible = false\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"delete\",\n [8, 46],\n $event.key,\n [\"Backspace\", \"Delete\", \"Del\"]\n )\n ) {\n return null\n }\n return _vm.deletePrevTag($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n _vm.visible = false\n }\n ],\n compositionstart: _vm.handleComposition,\n compositionupdate: _vm.handleComposition,\n compositionend: _vm.handleComposition,\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.query = $event.target.value\n },\n _vm.debouncedQueryChange\n ]\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-input\",\n {\n ref: \"reference\",\n class: { \"is-focus\": _vm.visible },\n attrs: {\n type: \"text\",\n placeholder: _vm.currentPlaceholder,\n name: _vm.name,\n id: _vm.id,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n size: _vm.selectSize,\n disabled: _vm.selectDisabled,\n readonly: _vm.readonly,\n \"validate-event\": false,\n tabindex: _vm.multiple && _vm.filterable ? \"-1\" : null\n },\n on: {\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n input: _vm.debouncedOnInputChange,\n compositionstart: _vm.handleComposition,\n compositionupdate: _vm.handleComposition,\n compositionend: _vm.handleComposition\n },\n nativeOn: {\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.handleNavigate(\"next\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.handleNavigate(\"prev\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.selectOption($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.visible = false\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n _vm.visible = false\n }\n ],\n mouseenter: function($event) {\n _vm.inputHovering = true\n },\n mouseleave: function($event) {\n _vm.inputHovering = false\n }\n },\n model: {\n value: _vm.selectedLabel,\n callback: function($$v) {\n _vm.selectedLabel = $$v\n },\n expression: \"selectedLabel\"\n }\n },\n [\n _vm.$slots.prefix\n ? _c(\"template\", { slot: \"prefix\" }, [_vm._t(\"prefix\")], 2)\n : _vm._e(),\n _c(\"template\", { slot: \"suffix\" }, [\n _c(\"i\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.showClose,\n expression: \"!showClose\"\n }\n ],\n class: [\n \"el-select__caret\",\n \"el-input__icon\",\n \"el-icon-\" + _vm.iconClass\n ]\n }),\n _vm.showClose\n ? _c(\"i\", {\n staticClass:\n \"el-select__caret el-input__icon el-icon-circle-close\",\n on: { click: _vm.handleClearClick }\n })\n : _vm._e()\n ])\n ],\n 2\n ),\n _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: {\n \"before-enter\": _vm.handleMenuEnter,\n \"after-leave\": _vm.doDestroy\n }\n },\n [\n _c(\n \"el-select-menu\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible && _vm.emptyText !== false,\n expression: \"visible && emptyText !== false\"\n }\n ],\n ref: \"popper\",\n attrs: { \"append-to-body\": _vm.popperAppendToBody }\n },\n [\n _c(\n \"el-scrollbar\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.options.length > 0 && !_vm.loading,\n expression: \"options.length > 0 && !loading\"\n }\n ],\n ref: \"scrollbar\",\n class: {\n \"is-empty\":\n !_vm.allowCreate &&\n _vm.query &&\n _vm.filteredOptionsCount === 0\n },\n attrs: {\n tag: \"ul\",\n \"wrap-class\": \"el-select-dropdown__wrap\",\n \"view-class\": \"el-select-dropdown__list\"\n }\n },\n [\n _vm.showNewOption\n ? _c(\"el-option\", {\n attrs: { value: _vm.query, created: \"\" }\n })\n : _vm._e(),\n _vm._t(\"default\")\n ],\n 2\n ),\n _vm.emptyText &&\n (!_vm.allowCreate ||\n _vm.loading ||\n (_vm.allowCreate && _vm.options.length === 0))\n ? [\n _vm.$slots.empty\n ? _vm._t(\"empty\")\n : _c(\"p\", { staticClass: \"el-select-dropdown__empty\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.emptyText) +\n \"\\n \"\n )\n ])\n ]\n : _vm._e()\n ],\n 2\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar selectvue_type_template_id_0e4aade6_staticRenderFns = []\nselectvue_type_template_id_0e4aade6_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=template&id=0e4aade6&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=template&id=06828748&\nvar select_dropdownvue_type_template_id_06828748_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-select-dropdown el-popper\",\n class: [{ \"is-multiple\": _vm.$parent.multiple }, _vm.popperClass],\n style: { minWidth: _vm.minWidth }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar select_dropdownvue_type_template_id_06828748_staticRenderFns = []\nselect_dropdownvue_type_template_id_06828748_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=template&id=06828748&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var select_dropdownvue_type_script_lang_js_ = ({\n name: 'ElSelectDropdown',\n\n componentName: 'ElSelectDropdown',\n\n mixins: [vue_popper_default.a],\n\n props: {\n placement: {\n default: 'bottom-start'\n },\n\n boundariesPadding: {\n default: 0\n },\n\n popperOptions: {\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n },\n\n visibleArrow: {\n default: true\n },\n\n appendToBody: {\n type: Boolean,\n default: true\n }\n },\n\n data: function data() {\n return {\n minWidth: ''\n };\n },\n\n\n computed: {\n popperClass: function popperClass() {\n return this.$parent.popperClass;\n }\n },\n\n watch: {\n '$parent.inputWidth': function $parentInputWidth() {\n this.minWidth = this.$parent.$el.getBoundingClientRect().width + 'px';\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n this.referenceElm = this.$parent.$refs.reference.$el;\n this.$parent.popperElm = this.popperElm = this.$el;\n this.$on('updatePopper', function () {\n if (_this.$parent.visible) _this.updatePopper();\n });\n this.$on('destroyPopper', this.destroyPopper);\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_select_dropdownvue_type_script_lang_js_ = (select_dropdownvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue\n\n\n\n\n\n/* normalize component */\n\nvar select_dropdown_component = normalizeComponent(\n src_select_dropdownvue_type_script_lang_js_,\n select_dropdownvue_type_template_id_06828748_render,\n select_dropdownvue_type_template_id_06828748_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var select_dropdown_api; }\nselect_dropdown_component.options.__file = \"packages/select/src/select-dropdown.vue\"\n/* harmony default export */ var select_dropdown = (select_dropdown_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=template&id=7a44c642&\nvar optionvue_type_template_id_7a44c642_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-select-dropdown__item\",\n class: {\n selected: _vm.itemSelected,\n \"is-disabled\": _vm.disabled || _vm.groupDisabled || _vm.limitReached,\n hover: _vm.hover\n },\n on: {\n mouseenter: _vm.hoverItem,\n click: function($event) {\n $event.stopPropagation()\n return _vm.selectOptionClick($event)\n }\n }\n },\n [_vm._t(\"default\", [_c(\"span\", [_vm._v(_vm._s(_vm.currentLabel))])])],\n 2\n )\n}\nvar optionvue_type_template_id_7a44c642_staticRenderFns = []\noptionvue_type_template_id_7a44c642_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=template&id=7a44c642&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=script&lang=js&\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var optionvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a],\n\n name: 'ElOption',\n\n componentName: 'ElOption',\n\n inject: ['select'],\n\n props: {\n value: {\n required: true\n },\n label: [String, Number],\n created: Boolean,\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n index: -1,\n groupDisabled: false,\n visible: true,\n hitState: false,\n hover: false\n };\n },\n\n\n computed: {\n isObject: function isObject() {\n return Object.prototype.toString.call(this.value).toLowerCase() === '[object object]';\n },\n currentLabel: function currentLabel() {\n return this.label || (this.isObject ? '' : this.value);\n },\n currentValue: function currentValue() {\n return this.value || this.label || '';\n },\n itemSelected: function itemSelected() {\n if (!this.select.multiple) {\n return this.isEqual(this.value, this.select.value);\n } else {\n return this.contains(this.select.value, this.value);\n }\n },\n limitReached: function limitReached() {\n if (this.select.multiple) {\n return !this.itemSelected && (this.select.value || []).length >= this.select.multipleLimit && this.select.multipleLimit > 0;\n } else {\n return false;\n }\n }\n },\n\n watch: {\n currentLabel: function currentLabel() {\n if (!this.created && !this.select.remote) this.dispatch('ElSelect', 'setSelected');\n },\n value: function value(val, oldVal) {\n var _select = this.select,\n remote = _select.remote,\n valueKey = _select.valueKey;\n\n if (!this.created && !remote) {\n if (valueKey && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && (typeof oldVal === 'undefined' ? 'undefined' : _typeof(oldVal)) === 'object' && val[valueKey] === oldVal[valueKey]) {\n return;\n }\n this.dispatch('ElSelect', 'setSelected');\n }\n }\n },\n\n methods: {\n isEqual: function isEqual(a, b) {\n if (!this.isObject) {\n return a === b;\n } else {\n var valueKey = this.select.valueKey;\n return Object(util_[\"getValueByPath\"])(a, valueKey) === Object(util_[\"getValueByPath\"])(b, valueKey);\n }\n },\n contains: function contains() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var target = arguments[1];\n\n if (!this.isObject) {\n return arr && arr.indexOf(target) > -1;\n } else {\n var valueKey = this.select.valueKey;\n return arr && arr.some(function (item) {\n return Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(target, valueKey);\n });\n }\n },\n handleGroupDisabled: function handleGroupDisabled(val) {\n this.groupDisabled = val;\n },\n hoverItem: function hoverItem() {\n if (!this.disabled && !this.groupDisabled) {\n this.select.hoverIndex = this.select.options.indexOf(this);\n }\n },\n selectOptionClick: function selectOptionClick() {\n if (this.disabled !== true && this.groupDisabled !== true) {\n this.dispatch('ElSelect', 'handleOptionClick', [this, true]);\n }\n },\n queryChange: function queryChange(query) {\n this.visible = new RegExp(Object(util_[\"escapeRegexpString\"])(query), 'i').test(this.currentLabel) || this.created;\n if (!this.visible) {\n this.select.filteredOptionsCount--;\n }\n }\n },\n\n created: function created() {\n this.select.options.push(this);\n this.select.cachedOptions.push(this);\n this.select.optionsCount++;\n this.select.filteredOptionsCount++;\n\n this.$on('queryChange', this.queryChange);\n this.$on('handleGroupDisabled', this.handleGroupDisabled);\n },\n beforeDestroy: function beforeDestroy() {\n var _select2 = this.select,\n selected = _select2.selected,\n multiple = _select2.multiple;\n\n var selectedOptions = multiple ? selected : [selected];\n var index = this.select.cachedOptions.indexOf(this);\n var selectedIndex = selectedOptions.indexOf(this);\n\n // if option is not selected, remove it from cache\n if (index > -1 && selectedIndex < 0) {\n this.select.cachedOptions.splice(index, 1);\n }\n this.select.onOptionDestroy(this.select.options.indexOf(this));\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_optionvue_type_script_lang_js_ = (optionvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/select/src/option.vue\n\n\n\n\n\n/* normalize component */\n\nvar option_component = normalizeComponent(\n src_optionvue_type_script_lang_js_,\n optionvue_type_template_id_7a44c642_render,\n optionvue_type_template_id_7a44c642_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var option_api; }\noption_component.options.__file = \"packages/select/src/option.vue\"\n/* harmony default export */ var src_option = (option_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/tag\"\nvar tag_ = __nested_webpack_require_8926__(30);\nvar tag_default = /*#__PURE__*/__nested_webpack_require_8926__.n(tag_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/resize-event\"\nvar resize_event_ = __nested_webpack_require_8926__(15);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/scroll-into-view\"\nvar scroll_into_view_ = __nested_webpack_require_8926__(27);\nvar scroll_into_view_default = /*#__PURE__*/__nested_webpack_require_8926__.n(scroll_into_view_);\n\n// CONCATENATED MODULE: ./packages/select/src/navigation-mixin.js\n/* harmony default export */ var navigation_mixin = ({\n data: function data() {\n return {\n hoverOption: -1\n };\n },\n\n\n computed: {\n optionsAllDisabled: function optionsAllDisabled() {\n return this.options.filter(function (option) {\n return option.visible;\n }).every(function (option) {\n return option.disabled;\n });\n }\n },\n\n watch: {\n hoverIndex: function hoverIndex(val) {\n var _this = this;\n\n if (typeof val === 'number' && val > -1) {\n this.hoverOption = this.options[val] || {};\n }\n this.options.forEach(function (option) {\n option.hover = _this.hoverOption === option;\n });\n }\n },\n\n methods: {\n navigateOptions: function navigateOptions(direction) {\n var _this2 = this;\n\n if (!this.visible) {\n this.visible = true;\n return;\n }\n if (this.options.length === 0 || this.filteredOptionsCount === 0) return;\n if (!this.optionsAllDisabled) {\n if (direction === 'next') {\n this.hoverIndex++;\n if (this.hoverIndex === this.options.length) {\n this.hoverIndex = 0;\n }\n } else if (direction === 'prev') {\n this.hoverIndex--;\n if (this.hoverIndex < 0) {\n this.hoverIndex = this.options.length - 1;\n }\n }\n var option = this.options[this.hoverIndex];\n if (option.disabled === true || option.groupDisabled === true || !option.visible) {\n this.navigateOptions(direction);\n }\n this.$nextTick(function () {\n return _this2.scrollToOption(_this2.hoverOption);\n });\n }\n }\n }\n});\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var selectvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a, locale_default.a, focus_default()('reference'), navigation_mixin],\n\n name: 'ElSelect',\n\n componentName: 'ElSelect',\n\n inject: {\n elForm: {\n default: ''\n },\n\n elFormItem: {\n default: ''\n }\n },\n\n provide: function provide() {\n return {\n 'select': this\n };\n },\n\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n readonly: function readonly() {\n return !this.filterable || this.multiple || !Object(util_[\"isIE\"])() && !Object(util_[\"isEdge\"])() && !this.visible;\n },\n showClose: function showClose() {\n var hasValue = this.multiple ? Array.isArray(this.value) && this.value.length > 0 : this.value !== undefined && this.value !== null && this.value !== '';\n var criteria = this.clearable && !this.selectDisabled && this.inputHovering && hasValue;\n return criteria;\n },\n iconClass: function iconClass() {\n return this.remote && this.filterable ? '' : this.visible ? 'arrow-up is-reverse' : 'arrow-up';\n },\n debounce: function debounce() {\n return this.remote ? 300 : 0;\n },\n emptyText: function emptyText() {\n if (this.loading) {\n return this.loadingText || this.t('el.select.loading');\n } else {\n if (this.remote && this.query === '' && this.options.length === 0) return false;\n if (this.filterable && this.query && this.options.length > 0 && this.filteredOptionsCount === 0) {\n return this.noMatchText || this.t('el.select.noMatch');\n }\n if (this.options.length === 0) {\n return this.noDataText || this.t('el.select.noData');\n }\n }\n return null;\n },\n showNewOption: function showNewOption() {\n var _this = this;\n\n var hasExistingOption = this.options.filter(function (option) {\n return !option.created;\n }).some(function (option) {\n return option.currentLabel === _this.query;\n });\n return this.filterable && this.allowCreate && this.query !== '' && !hasExistingOption;\n },\n selectSize: function selectSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n selectDisabled: function selectDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n collapseTagSize: function collapseTagSize() {\n return ['small', 'mini'].indexOf(this.selectSize) > -1 ? 'mini' : 'small';\n },\n propPlaceholder: function propPlaceholder() {\n return typeof this.placeholder !== 'undefined' ? this.placeholder : this.t('el.select.placeholder');\n }\n },\n\n components: {\n ElInput: input_default.a,\n ElSelectMenu: select_dropdown,\n ElOption: src_option,\n ElTag: tag_default.a,\n ElScrollbar: scrollbar_default.a\n },\n\n directives: { Clickoutside: clickoutside_default.a },\n\n props: {\n name: String,\n id: String,\n value: {\n required: true\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && 0;\n return true;\n }\n },\n automaticDropdown: Boolean,\n size: String,\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n allowCreate: Boolean,\n loading: Boolean,\n popperClass: String,\n remote: Boolean,\n loadingText: String,\n noMatchText: String,\n noDataText: String,\n remoteMethod: Function,\n filterMethod: Function,\n multiple: Boolean,\n multipleLimit: {\n type: Number,\n default: 0\n },\n placeholder: {\n type: String,\n required: false\n },\n defaultFirstOption: Boolean,\n reserveKeyword: Boolean,\n valueKey: {\n type: String,\n default: 'value'\n },\n collapseTags: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: true\n }\n },\n\n data: function data() {\n return {\n options: [],\n cachedOptions: [],\n createdLabel: null,\n createdSelected: false,\n selected: this.multiple ? [] : {},\n inputLength: 20,\n inputWidth: 0,\n initialInputHeight: 0,\n cachedPlaceHolder: '',\n optionsCount: 0,\n filteredOptionsCount: 0,\n visible: false,\n softFocus: false,\n selectedLabel: '',\n hoverIndex: -1,\n query: '',\n previousQuery: null,\n inputHovering: false,\n currentPlaceholder: '',\n menuVisibleOnFocus: false,\n isOnComposition: false,\n isSilentBlur: false\n };\n },\n\n\n watch: {\n selectDisabled: function selectDisabled() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.resetInputHeight();\n });\n },\n propPlaceholder: function propPlaceholder(val) {\n this.cachedPlaceHolder = this.currentPlaceholder = val;\n },\n value: function value(val, oldVal) {\n if (this.multiple) {\n this.resetInputHeight();\n if (val && val.length > 0 || this.$refs.input && this.query !== '') {\n this.currentPlaceholder = '';\n } else {\n this.currentPlaceholder = this.cachedPlaceHolder;\n }\n if (this.filterable && !this.reserveKeyword) {\n this.query = '';\n this.handleQueryChange(this.query);\n }\n }\n this.setSelected();\n if (this.filterable && !this.multiple) {\n this.inputLength = 20;\n }\n if (!Object(util_[\"valueEquals\"])(val, oldVal)) {\n this.dispatch('ElFormItem', 'el.form.change', val);\n }\n },\n visible: function visible(val) {\n var _this3 = this;\n\n if (!val) {\n this.broadcast('ElSelectDropdown', 'destroyPopper');\n if (this.$refs.input) {\n this.$refs.input.blur();\n }\n this.query = '';\n this.previousQuery = null;\n this.selectedLabel = '';\n this.inputLength = 20;\n this.menuVisibleOnFocus = false;\n this.resetHoverIndex();\n this.$nextTick(function () {\n if (_this3.$refs.input && _this3.$refs.input.value === '' && _this3.selected.length === 0) {\n _this3.currentPlaceholder = _this3.cachedPlaceHolder;\n }\n });\n if (!this.multiple) {\n if (this.selected) {\n if (this.filterable && this.allowCreate && this.createdSelected && this.createdLabel) {\n this.selectedLabel = this.createdLabel;\n } else {\n this.selectedLabel = this.selected.currentLabel;\n }\n if (this.filterable) this.query = this.selectedLabel;\n }\n\n if (this.filterable) {\n this.currentPlaceholder = this.cachedPlaceHolder;\n }\n }\n } else {\n this.broadcast('ElSelectDropdown', 'updatePopper');\n if (this.filterable) {\n this.query = this.remote ? '' : this.selectedLabel;\n this.handleQueryChange(this.query);\n if (this.multiple) {\n this.$refs.input.focus();\n } else {\n if (!this.remote) {\n this.broadcast('ElOption', 'queryChange', '');\n this.broadcast('ElOptionGroup', 'queryChange');\n }\n\n if (this.selectedLabel) {\n this.currentPlaceholder = this.selectedLabel;\n this.selectedLabel = '';\n }\n }\n }\n }\n this.$emit('visible-change', val);\n },\n options: function options() {\n var _this4 = this;\n\n if (this.$isServer) return;\n this.$nextTick(function () {\n _this4.broadcast('ElSelectDropdown', 'updatePopper');\n });\n if (this.multiple) {\n this.resetInputHeight();\n }\n var inputs = this.$el.querySelectorAll('input');\n if ([].indexOf.call(inputs, document.activeElement) === -1) {\n this.setSelected();\n }\n if (this.defaultFirstOption && (this.filterable || this.remote) && this.filteredOptionsCount) {\n this.checkDefaultFirstOption();\n }\n }\n },\n\n methods: {\n handleNavigate: function handleNavigate(direction) {\n if (this.isOnComposition) return;\n\n this.navigateOptions(direction);\n },\n handleComposition: function handleComposition(event) {\n var _this5 = this;\n\n var text = event.target.value;\n if (event.type === 'compositionend') {\n this.isOnComposition = false;\n this.$nextTick(function (_) {\n return _this5.handleQueryChange(text);\n });\n } else {\n var lastCharacter = text[text.length - 1] || '';\n this.isOnComposition = !Object(shared_[\"isKorean\"])(lastCharacter);\n }\n },\n handleQueryChange: function handleQueryChange(val) {\n var _this6 = this;\n\n if (this.previousQuery === val || this.isOnComposition) return;\n if (this.previousQuery === null && (typeof this.filterMethod === 'function' || typeof this.remoteMethod === 'function')) {\n this.previousQuery = val;\n return;\n }\n this.previousQuery = val;\n this.$nextTick(function () {\n if (_this6.visible) _this6.broadcast('ElSelectDropdown', 'updatePopper');\n });\n this.hoverIndex = -1;\n if (this.multiple && this.filterable) {\n this.$nextTick(function () {\n var length = _this6.$refs.input.value.length * 15 + 20;\n _this6.inputLength = _this6.collapseTags ? Math.min(50, length) : length;\n _this6.managePlaceholder();\n _this6.resetInputHeight();\n });\n }\n if (this.remote && typeof this.remoteMethod === 'function') {\n this.hoverIndex = -1;\n this.remoteMethod(val);\n } else if (typeof this.filterMethod === 'function') {\n this.filterMethod(val);\n this.broadcast('ElOptionGroup', 'queryChange');\n } else {\n this.filteredOptionsCount = this.optionsCount;\n this.broadcast('ElOption', 'queryChange', val);\n this.broadcast('ElOptionGroup', 'queryChange');\n }\n if (this.defaultFirstOption && (this.filterable || this.remote) && this.filteredOptionsCount) {\n this.checkDefaultFirstOption();\n }\n },\n scrollToOption: function scrollToOption(option) {\n var target = Array.isArray(option) && option[0] ? option[0].$el : option.$el;\n if (this.$refs.popper && target) {\n var menu = this.$refs.popper.$el.querySelector('.el-select-dropdown__wrap');\n scroll_into_view_default()(menu, target);\n }\n this.$refs.scrollbar && this.$refs.scrollbar.handleScroll();\n },\n handleMenuEnter: function handleMenuEnter() {\n var _this7 = this;\n\n this.$nextTick(function () {\n return _this7.scrollToOption(_this7.selected);\n });\n },\n emitChange: function emitChange(val) {\n if (!Object(util_[\"valueEquals\"])(this.value, val)) {\n this.$emit('change', val);\n }\n },\n getOption: function getOption(value) {\n var option = void 0;\n var isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]';\n var isNull = Object.prototype.toString.call(value).toLowerCase() === '[object null]';\n var isUndefined = Object.prototype.toString.call(value).toLowerCase() === '[object undefined]';\n\n for (var i = this.cachedOptions.length - 1; i >= 0; i--) {\n var cachedOption = this.cachedOptions[i];\n var isEqual = isObject ? Object(util_[\"getValueByPath\"])(cachedOption.value, this.valueKey) === Object(util_[\"getValueByPath\"])(value, this.valueKey) : cachedOption.value === value;\n if (isEqual) {\n option = cachedOption;\n break;\n }\n }\n if (option) return option;\n var label = !isObject && !isNull && !isUndefined ? String(value) : '';\n var newOption = {\n value: value,\n currentLabel: label\n };\n if (this.multiple) {\n newOption.hitState = false;\n }\n return newOption;\n },\n setSelected: function setSelected() {\n var _this8 = this;\n\n if (!this.multiple) {\n var option = this.getOption(this.value);\n if (option.created) {\n this.createdLabel = option.currentLabel;\n this.createdSelected = true;\n } else {\n this.createdSelected = false;\n }\n this.selectedLabel = option.currentLabel;\n this.selected = option;\n if (this.filterable) this.query = this.selectedLabel;\n return;\n }\n var result = [];\n if (Array.isArray(this.value)) {\n this.value.forEach(function (value) {\n result.push(_this8.getOption(value));\n });\n }\n this.selected = result;\n this.$nextTick(function () {\n _this8.resetInputHeight();\n });\n },\n handleFocus: function handleFocus(event) {\n if (!this.softFocus) {\n if (this.automaticDropdown || this.filterable) {\n if (this.filterable && !this.visible) {\n this.menuVisibleOnFocus = true;\n }\n this.visible = true;\n }\n this.$emit('focus', event);\n } else {\n this.softFocus = false;\n }\n },\n blur: function blur() {\n this.visible = false;\n this.$refs.reference.blur();\n },\n handleBlur: function handleBlur(event) {\n var _this9 = this;\n\n setTimeout(function () {\n if (_this9.isSilentBlur) {\n _this9.isSilentBlur = false;\n } else {\n _this9.$emit('blur', event);\n }\n }, 50);\n this.softFocus = false;\n },\n handleClearClick: function handleClearClick(event) {\n this.deleteSelected(event);\n },\n doDestroy: function doDestroy() {\n this.$refs.popper && this.$refs.popper.doDestroy();\n },\n handleClose: function handleClose() {\n this.visible = false;\n },\n toggleLastOptionHitState: function toggleLastOptionHitState(hit) {\n if (!Array.isArray(this.selected)) return;\n var option = this.selected[this.selected.length - 1];\n if (!option) return;\n\n if (hit === true || hit === false) {\n option.hitState = hit;\n return hit;\n }\n\n option.hitState = !option.hitState;\n return option.hitState;\n },\n deletePrevTag: function deletePrevTag(e) {\n if (e.target.value.length <= 0 && !this.toggleLastOptionHitState()) {\n var value = this.value.slice();\n value.pop();\n this.$emit('input', value);\n this.emitChange(value);\n }\n },\n managePlaceholder: function managePlaceholder() {\n if (this.currentPlaceholder !== '') {\n this.currentPlaceholder = this.$refs.input.value ? '' : this.cachedPlaceHolder;\n }\n },\n resetInputState: function resetInputState(e) {\n if (e.keyCode !== 8) this.toggleLastOptionHitState(false);\n this.inputLength = this.$refs.input.value.length * 15 + 20;\n this.resetInputHeight();\n },\n resetInputHeight: function resetInputHeight() {\n var _this10 = this;\n\n if (this.collapseTags && !this.filterable) return;\n this.$nextTick(function () {\n if (!_this10.$refs.reference) return;\n var inputChildNodes = _this10.$refs.reference.$el.childNodes;\n var input = [].filter.call(inputChildNodes, function (item) {\n return item.tagName === 'INPUT';\n })[0];\n var tags = _this10.$refs.tags;\n var tagsHeight = tags ? Math.round(tags.getBoundingClientRect().height) : 0;\n var sizeInMap = _this10.initialInputHeight || 40;\n input.style.height = _this10.selected.length === 0 ? sizeInMap + 'px' : Math.max(tags ? tagsHeight + (tagsHeight > sizeInMap ? 6 : 0) : 0, sizeInMap) + 'px';\n if (_this10.visible && _this10.emptyText !== false) {\n _this10.broadcast('ElSelectDropdown', 'updatePopper');\n }\n });\n },\n resetHoverIndex: function resetHoverIndex() {\n var _this11 = this;\n\n setTimeout(function () {\n if (!_this11.multiple) {\n _this11.hoverIndex = _this11.options.indexOf(_this11.selected);\n } else {\n if (_this11.selected.length > 0) {\n _this11.hoverIndex = Math.min.apply(null, _this11.selected.map(function (item) {\n return _this11.options.indexOf(item);\n }));\n } else {\n _this11.hoverIndex = -1;\n }\n }\n }, 300);\n },\n handleOptionSelect: function handleOptionSelect(option, byClick) {\n var _this12 = this;\n\n if (this.multiple) {\n var value = (this.value || []).slice();\n var optionIndex = this.getValueIndex(value, option.value);\n if (optionIndex > -1) {\n value.splice(optionIndex, 1);\n } else if (this.multipleLimit <= 0 || value.length < this.multipleLimit) {\n value.push(option.value);\n }\n this.$emit('input', value);\n this.emitChange(value);\n if (option.created) {\n this.query = '';\n this.handleQueryChange('');\n this.inputLength = 20;\n }\n if (this.filterable) this.$refs.input.focus();\n } else {\n this.$emit('input', option.value);\n this.emitChange(option.value);\n this.visible = false;\n }\n this.isSilentBlur = byClick;\n this.setSoftFocus();\n if (this.visible) return;\n this.$nextTick(function () {\n _this12.scrollToOption(option);\n });\n },\n setSoftFocus: function setSoftFocus() {\n this.softFocus = true;\n var input = this.$refs.input || this.$refs.reference;\n if (input) {\n input.focus();\n }\n },\n getValueIndex: function getValueIndex() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var value = arguments[1];\n\n var isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]';\n if (!isObject) {\n return arr.indexOf(value);\n } else {\n var valueKey = this.valueKey;\n var index = -1;\n arr.some(function (item, i) {\n if (Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(value, valueKey)) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n }\n },\n toggleMenu: function toggleMenu() {\n if (!this.selectDisabled) {\n if (this.menuVisibleOnFocus) {\n this.menuVisibleOnFocus = false;\n } else {\n this.visible = !this.visible;\n }\n if (this.visible) {\n (this.$refs.input || this.$refs.reference).focus();\n }\n }\n },\n selectOption: function selectOption() {\n if (!this.visible) {\n this.toggleMenu();\n } else {\n if (this.options[this.hoverIndex]) {\n this.handleOptionSelect(this.options[this.hoverIndex]);\n }\n }\n },\n deleteSelected: function deleteSelected(event) {\n event.stopPropagation();\n var value = this.multiple ? [] : '';\n this.$emit('input', value);\n this.emitChange(value);\n this.visible = false;\n this.$emit('clear');\n },\n deleteTag: function deleteTag(event, tag) {\n var index = this.selected.indexOf(tag);\n if (index > -1 && !this.selectDisabled) {\n var value = this.value.slice();\n value.splice(index, 1);\n this.$emit('input', value);\n this.emitChange(value);\n this.$emit('remove-tag', tag.value);\n }\n event.stopPropagation();\n },\n onInputChange: function onInputChange() {\n if (this.filterable && this.query !== this.selectedLabel) {\n this.query = this.selectedLabel;\n this.handleQueryChange(this.query);\n }\n },\n onOptionDestroy: function onOptionDestroy(index) {\n if (index > -1) {\n this.optionsCount--;\n this.filteredOptionsCount--;\n this.options.splice(index, 1);\n }\n },\n resetInputWidth: function resetInputWidth() {\n this.inputWidth = this.$refs.reference.$el.getBoundingClientRect().width;\n },\n handleResize: function handleResize() {\n this.resetInputWidth();\n if (this.multiple) this.resetInputHeight();\n },\n checkDefaultFirstOption: function checkDefaultFirstOption() {\n this.hoverIndex = -1;\n // highlight the created option\n var hasCreated = false;\n for (var i = this.options.length - 1; i >= 0; i--) {\n if (this.options[i].created) {\n hasCreated = true;\n this.hoverIndex = i;\n break;\n }\n }\n if (hasCreated) return;\n for (var _i = 0; _i !== this.options.length; ++_i) {\n var option = this.options[_i];\n if (this.query) {\n // highlight first options that passes the filter\n if (!option.disabled && !option.groupDisabled && option.visible) {\n this.hoverIndex = _i;\n break;\n }\n } else {\n // highlight currently selected option\n if (option.itemSelected) {\n this.hoverIndex = _i;\n break;\n }\n }\n }\n },\n getValueKey: function getValueKey(item) {\n if (Object.prototype.toString.call(item.value).toLowerCase() !== '[object object]') {\n return item.value;\n } else {\n return Object(util_[\"getValueByPath\"])(item.value, this.valueKey);\n }\n }\n },\n\n created: function created() {\n var _this13 = this;\n\n this.cachedPlaceHolder = this.currentPlaceholder = this.propPlaceholder;\n if (this.multiple && !Array.isArray(this.value)) {\n this.$emit('input', []);\n }\n if (!this.multiple && Array.isArray(this.value)) {\n this.$emit('input', '');\n }\n\n this.debouncedOnInputChange = debounce_default()(this.debounce, function () {\n _this13.onInputChange();\n });\n\n this.debouncedQueryChange = debounce_default()(this.debounce, function (e) {\n _this13.handleQueryChange(e.target.value);\n });\n\n this.$on('handleOptionClick', this.handleOptionSelect);\n this.$on('setSelected', this.setSelected);\n },\n mounted: function mounted() {\n var _this14 = this;\n\n if (this.multiple && Array.isArray(this.value) && this.value.length > 0) {\n this.currentPlaceholder = '';\n }\n Object(resize_event_[\"addResizeListener\"])(this.$el, this.handleResize);\n\n var reference = this.$refs.reference;\n if (reference && reference.$el) {\n var sizeMap = {\n medium: 36,\n small: 32,\n mini: 28\n };\n var input = reference.$el.querySelector('input');\n this.initialInputHeight = input.getBoundingClientRect().height || sizeMap[this.selectSize];\n }\n if (this.remote && this.multiple) {\n this.resetInputHeight();\n }\n this.$nextTick(function () {\n if (reference && reference.$el) {\n _this14.inputWidth = reference.$el.getBoundingClientRect().width;\n }\n });\n this.setSelected();\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$el && this.handleResize) Object(resize_event_[\"removeResizeListener\"])(this.$el, this.handleResize);\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_selectvue_type_script_lang_js_ = (selectvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/select/src/select.vue\n\n\n\n\n\n/* normalize component */\n\nvar select_component = normalizeComponent(\n src_selectvue_type_script_lang_js_,\n selectvue_type_template_id_0e4aade6_render,\n selectvue_type_template_id_0e4aade6_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var select_api; }\nselect_component.options.__file = \"packages/select/src/select.vue\"\n/* harmony default export */ var src_select = (select_component.exports);\n// CONCATENATED MODULE: ./packages/select/index.js\n\n\n/* istanbul ignore next */\nsrc_select.install = function (Vue) {\n Vue.component(src_select.name, src_select);\n};\n\n/* harmony default export */ var packages_select = (src_select);\n// CONCATENATED MODULE: ./packages/option/index.js\n\n\n/* istanbul ignore next */\nsrc_option.install = function (Vue) {\n Vue.component(src_option.name, src_option);\n};\n\n/* harmony default export */ var packages_option = (src_option);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option-group.vue?vue&type=template&id=6685e5de&\nvar option_groupvue_type_template_id_6685e5de_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"ul\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-select-group__wrap\"\n },\n [\n _c(\"li\", { staticClass: \"el-select-group__title\" }, [\n _vm._v(_vm._s(_vm.label))\n ]),\n _c(\"li\", [\n _c(\"ul\", { staticClass: \"el-select-group\" }, [_vm._t(\"default\")], 2)\n ])\n ]\n )\n}\nvar option_groupvue_type_template_id_6685e5de_staticRenderFns = []\noption_groupvue_type_template_id_6685e5de_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/option-group.vue?vue&type=template&id=6685e5de&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option-group.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var option_groupvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a],\n\n name: 'ElOptionGroup',\n\n componentName: 'ElOptionGroup',\n\n props: {\n label: String,\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n visible: true\n };\n },\n\n\n watch: {\n disabled: function disabled(val) {\n this.broadcast('ElOption', 'handleGroupDisabled', val);\n }\n },\n\n methods: {\n queryChange: function queryChange() {\n this.visible = this.$children && Array.isArray(this.$children) && this.$children.some(function (option) {\n return option.visible === true;\n });\n }\n },\n\n created: function created() {\n this.$on('queryChange', this.queryChange);\n },\n mounted: function mounted() {\n if (this.disabled) {\n this.broadcast('ElOption', 'handleGroupDisabled', this.disabled);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/option-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_option_groupvue_type_script_lang_js_ = (option_groupvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/select/src/option-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar option_group_component = normalizeComponent(\n src_option_groupvue_type_script_lang_js_,\n option_groupvue_type_template_id_6685e5de_render,\n option_groupvue_type_template_id_6685e5de_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var option_group_api; }\noption_group_component.options.__file = \"packages/select/src/option-group.vue\"\n/* harmony default export */ var option_group = (option_group_component.exports);\n// CONCATENATED MODULE: ./packages/option-group/index.js\n\n\n/* istanbul ignore next */\noption_group.install = function (Vue) {\n Vue.component(option_group.name, option_group);\n};\n\n/* harmony default export */ var packages_option_group = (option_group);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\nvar buttonvue_type_template_id_ca859fb4_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"button\",\n {\n staticClass: \"el-button\",\n class: [\n _vm.type ? \"el-button--\" + _vm.type : \"\",\n _vm.buttonSize ? \"el-button--\" + _vm.buttonSize : \"\",\n {\n \"is-disabled\": _vm.buttonDisabled,\n \"is-loading\": _vm.loading,\n \"is-plain\": _vm.plain,\n \"is-round\": _vm.round,\n \"is-circle\": _vm.circle\n }\n ],\n attrs: {\n disabled: _vm.buttonDisabled || _vm.loading,\n autofocus: _vm.autofocus,\n type: _vm.nativeType\n },\n on: { click: _vm.handleClick }\n },\n [\n _vm.loading ? _c(\"i\", { staticClass: \"el-icon-loading\" }) : _vm._e(),\n _vm.icon && !_vm.loading ? _c(\"i\", { class: _vm.icon }) : _vm._e(),\n _vm.$slots.default ? _c(\"span\", [_vm._t(\"default\")], 2) : _vm._e()\n ]\n )\n}\nvar buttonvue_type_template_id_ca859fb4_staticRenderFns = []\nbuttonvue_type_template_id_ca859fb4_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var buttonvue_type_script_lang_js_ = ({\n name: 'ElButton',\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n type: {\n type: String,\n default: 'default'\n },\n size: String,\n icon: {\n type: String,\n default: ''\n },\n nativeType: {\n type: String,\n default: 'button'\n },\n loading: Boolean,\n disabled: Boolean,\n plain: Boolean,\n autofocus: Boolean,\n round: Boolean,\n circle: Boolean\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n buttonSize: function buttonSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n buttonDisabled: function buttonDisabled() {\n return this.$options.propsData.hasOwnProperty('disabled') ? this.disabled : (this.elForm || {}).disabled;\n }\n },\n\n methods: {\n handleClick: function handleClick(evt) {\n this.$emit('click', evt);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_buttonvue_type_script_lang_js_ = (buttonvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/button/src/button.vue\n\n\n\n\n\n/* normalize component */\n\nvar button_component = normalizeComponent(\n src_buttonvue_type_script_lang_js_,\n buttonvue_type_template_id_ca859fb4_render,\n buttonvue_type_template_id_ca859fb4_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var button_api; }\nbutton_component.options.__file = \"packages/button/src/button.vue\"\n/* harmony default export */ var src_button = (button_component.exports);\n// CONCATENATED MODULE: ./packages/button/index.js\n\n\n/* istanbul ignore next */\nsrc_button.install = function (Vue) {\n Vue.component(src_button.name, src_button);\n};\n\n/* harmony default export */ var packages_button = (src_button);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button-group.vue?vue&type=template&id=3d8661d0&\nvar button_groupvue_type_template_id_3d8661d0_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-button-group\" }, [_vm._t(\"default\")], 2)\n}\nvar button_groupvue_type_template_id_3d8661d0_staticRenderFns = []\nbutton_groupvue_type_template_id_3d8661d0_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/button/src/button-group.vue?vue&type=template&id=3d8661d0&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button-group.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n\n/* harmony default export */ var button_groupvue_type_script_lang_js_ = ({\n name: 'ElButtonGroup'\n});\n// CONCATENATED MODULE: ./packages/button/src/button-group.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_button_groupvue_type_script_lang_js_ = (button_groupvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/button/src/button-group.vue\n\n\n\n\n\n/* normalize component */\n\nvar button_group_component = normalizeComponent(\n src_button_groupvue_type_script_lang_js_,\n button_groupvue_type_template_id_3d8661d0_render,\n button_groupvue_type_template_id_3d8661d0_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var button_group_api; }\nbutton_group_component.options.__file = \"packages/button/src/button-group.vue\"\n/* harmony default export */ var button_group = (button_group_component.exports);\n// CONCATENATED MODULE: ./packages/button-group/index.js\n\n\n/* istanbul ignore next */\nbutton_group.install = function (Vue) {\n Vue.component(button_group.name, button_group);\n};\n\n/* harmony default export */ var packages_button_group = (button_group);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/table/src/table.vue?vue&type=template&id=493fe34e&\nvar tablevue_type_template_id_493fe34e_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-table\",\n class: [\n {\n \"el-table--fit\": _vm.fit,\n \"el-table--striped\": _vm.stripe,\n \"el-table--border\": _vm.border || _vm.isGroup,\n \"el-table--hidden\": _vm.isHidden,\n \"el-table--group\": _vm.isGroup,\n \"el-table--fluid-height\": _vm.maxHeight,\n \"el-table--scrollable-x\": _vm.layout.scrollX,\n \"el-table--scrollable-y\": _vm.layout.scrollY,\n \"el-table--enable-row-hover\": !_vm.store.states.isComplex,\n \"el-table--enable-row-transition\":\n (_vm.store.states.data || []).length !== 0 &&\n (_vm.store.states.data || []).length < 100\n },\n _vm.tableSize ? \"el-table--\" + _vm.tableSize : \"\"\n ],\n on: {\n mouseleave: function($event) {\n _vm.handleMouseLeave($event)\n }\n }\n },\n [\n _c(\n \"div\",\n { ref: \"hiddenColumns\", staticClass: \"hidden-columns\" },\n [_vm._t(\"default\")],\n 2\n ),\n _vm.showHeader\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"mousewheel\",\n rawName: \"v-mousewheel\",\n value: _vm.handleHeaderFooterMousewheel,\n expression: \"handleHeaderFooterMousewheel\"\n }\n ],\n ref: \"headerWrapper\",\n staticClass: \"el-table__header-wrapper\"\n },\n [\n _c(\"table-header\", {\n ref: \"tableHeader\",\n style: {\n width: _vm.layout.bodyWidth ? _vm.layout.bodyWidth + \"px\" : \"\"\n },\n attrs: {\n store: _vm.store,\n border: _vm.border,\n \"default-sort\": _vm.defaultSort\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"div\",\n {\n ref: \"bodyWrapper\",\n staticClass: \"el-table__body-wrapper\",\n class: [\n _vm.layout.scrollX\n ? \"is-scrolling-\" + _vm.scrollPosition\n : \"is-scrolling-none\"\n ],\n style: [_vm.bodyHeight]\n },\n [\n _c(\"table-body\", {\n style: {\n width: _vm.bodyWidth\n },\n attrs: {\n context: _vm.context,\n store: _vm.store,\n stripe: _vm.stripe,\n \"row-class-name\": _vm.rowClassName,\n \"row-style\": _vm.rowStyle,\n highlight: _vm.highlightCurrentRow\n }\n }),\n !_vm.data || _vm.data.length === 0\n ? _c(\n \"div\",\n {\n ref: \"emptyBlock\",\n staticClass: \"el-table__empty-block\",\n style: _vm.emptyBlockStyle\n },\n [\n _c(\n \"span\",\n { staticClass: \"el-table__empty-text\" },\n [\n _vm._t(\"empty\", [\n _vm._v(\n _vm._s(_vm.emptyText || _vm.t(\"el.table.emptyText\"))\n )\n ])\n ],\n 2\n )\n ]\n )\n : _vm._e(),\n _vm.$slots.append\n ? _c(\n \"div\",\n {\n ref: \"appendWrapper\",\n staticClass: \"el-table__append-wrapper\"\n },\n [_vm._t(\"append\")],\n 2\n )\n : _vm._e()\n ],\n 1\n ),\n _vm.showSummary\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.data && _vm.data.length > 0,\n expression: \"data && data.length > 0\"\n },\n {\n name: \"mousewheel\",\n rawName: \"v-mousewheel\",\n value: _vm.handleHeaderFooterMousewheel,\n expression: \"handleHeaderFooterMousewheel\"\n }\n ],\n ref: \"footerWrapper\",\n staticClass: \"el-table__footer-wrapper\"\n },\n [\n _c(\"table-footer\", {\n style: {\n width: _vm.layout.bodyWidth ? _vm.layout.bodyWidth + \"px\" : \"\"\n },\n attrs: {\n store: _vm.store,\n border: _vm.border,\n \"sum-text\": _vm.sumText || _vm.t(\"el.table.sumText\"),\n \"summary-method\": _vm.summaryMethod,\n \"default-sort\": _vm.defaultSort\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm.fixedColumns.length > 0\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"mousewheel\",\n rawName: \"v-mousewheel\",\n value: _vm.handleFixedMousewheel,\n expression: \"handleFixedMousewheel\"\n }\n ],\n ref: \"fixedWrapper\",\n staticClass: \"el-table__fixed\",\n style: [\n {\n width: _vm.layout.fixedWidth\n ? _vm.layout.fixedWidth + \"px\"\n : \"\"\n },\n _vm.fixedHeight\n ]\n },\n [\n _vm.showHeader\n ? _c(\n \"div\",\n {\n ref: \"fixedHeaderWrapper\",\n staticClass: \"el-table__fixed-header-wrapper\"\n },\n [\n _c(\"table-header\", {\n ref: \"fixedTableHeader\",\n style: {\n width: _vm.bodyWidth\n },\n attrs: {\n fixed: \"left\",\n border: _vm.border,\n store: _vm.store\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"div\",\n {\n ref: \"fixedBodyWrapper\",\n staticClass: \"el-table__fixed-body-wrapper\",\n style: [\n {\n top: _vm.layout.headerHeight + \"px\"\n },\n _vm.fixedBodyHeight\n ]\n },\n [\n _c(\"table-body\", {\n style: {\n width: _vm.bodyWidth\n },\n attrs: {\n fixed: \"left\",\n store: _vm.store,\n stripe: _vm.stripe,\n highlight: _vm.highlightCurrentRow,\n \"row-class-name\": _vm.rowClassName,\n \"row-style\": _vm.rowStyle\n }\n }),\n _vm.$slots.append\n ? _c(\"div\", {\n staticClass: \"el-table__append-gutter\",\n style: { height: _vm.layout.appendHeight + \"px\" }\n })\n : _vm._e()\n ],\n 1\n ),\n _vm.showSummary\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.data && _vm.data.length > 0,\n expression: \"data && data.length > 0\"\n }\n ],\n ref: \"fixedFooterWrapper\",\n staticClass: \"el-table__fixed-footer-wrapper\"\n },\n [\n _c(\"table-footer\", {\n style: {\n width: _vm.bodyWidth\n },\n attrs: {\n fixed: \"left\",\n border: _vm.border,\n \"sum-text\": _vm.sumText || _vm.t(\"el.table.sumText\"),\n \"summary-method\": _vm.summaryMethod,\n store: _vm.store\n }\n })\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm.rightFixedColumns.length > 0\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"mousewheel\",\n rawName: \"v-mousewheel\",\n value: _vm.handleFixedMousewheel,\n expression: \"handleFixedMousewheel\"\n }\n ],\n ref: \"rightFixedWrapper\",\n staticClass: \"el-table__fixed-right\",\n style: [\n {\n width: _vm.layout.rightFixedWidth\n ? _vm.layout.rightFixedWidth + \"px\"\n : \"\",\n right: _vm.layout.scrollY\n ? (_vm.border\n ? _vm.layout.gutterWidth\n : _vm.layout.gutterWidth || 0) + \"px\"\n : \"\"\n },\n _vm.fixedHeight\n ]\n },\n [\n _vm.showHeader\n ? _c(\n \"div\",\n {\n ref: \"rightFixedHeaderWrapper\",\n staticClass: \"el-table__fixed-header-wrapper\"\n },\n [\n _c(\"table-header\", {\n ref: \"rightFixedTableHeader\",\n style: {\n width: _vm.bodyWidth\n },\n attrs: {\n fixed: \"right\",\n border: _vm.border,\n store: _vm.store\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"div\",\n {\n ref: \"rightFixedBodyWrapper\",\n staticClass: \"el-table__fixed-body-wrapper\",\n style: [\n {\n top: _vm.layout.headerHeight + \"px\"\n },\n _vm.fixedBodyHeight\n ]\n },\n [\n _c(\"table-body\", {\n style: {\n width: _vm.bodyWidth\n },\n attrs: {\n fixed: \"right\",\n store: _vm.store,\n stripe: _vm.stripe,\n \"row-class-name\": _vm.rowClassName,\n \"row-style\": _vm.rowStyle,\n highlight: _vm.highlightCurrentRow\n }\n }),\n _vm.$slots.append\n ? _c(\"div\", {\n staticClass: \"el-table__append-gutter\",\n style: { height: _vm.layout.appendHeight + \"px\" }\n })\n : _vm._e()\n ],\n 1\n ),\n _vm.showSummary\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.data && _vm.data.length > 0,\n expression: \"data && data.length > 0\"\n }\n ],\n ref: \"rightFixedFooterWrapper\",\n staticClass: \"el-table__fixed-footer-wrapper\"\n },\n [\n _c(\"table-footer\", {\n style: {\n width: _vm.bodyWidth\n },\n attrs: {\n fixed: \"right\",\n border: _vm.border,\n \"sum-text\": _vm.sumText || _vm.t(\"el.table.sumText\"),\n \"summary-method\": _vm.summaryMethod,\n store: _vm.store\n }\n })\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm.rightFixedColumns.length > 0\n ? _c(\"div\", {\n ref: \"rightFixedPatch\",\n staticClass: \"el-table__fixed-right-patch\",\n style: {\n width: _vm.layout.scrollY ? _vm.layout.gutterWidth + \"px\" : \"0\",\n height: _vm.layout.headerHeight + \"px\"\n }\n })\n : _vm._e(),\n _c(\"div\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.resizeProxyVisible,\n expression: \"resizeProxyVisible\"\n }\n ],\n ref: \"resizeProxy\",\n staticClass: \"el-table__column-resize-proxy\"\n })\n ]\n )\n}\nvar tablevue_type_template_id_493fe34e_staticRenderFns = []\ntablevue_type_template_id_493fe34e_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/table/src/table.vue?vue&type=template&id=493fe34e&\n\n// EXTERNAL MODULE: external \"element-ui/lib/checkbox\"\nvar checkbox_ = __nested_webpack_require_8926__(14);\nvar checkbox_default = /*#__PURE__*/__nested_webpack_require_8926__.n(checkbox_);\n\n// EXTERNAL MODULE: external \"throttle-debounce\"\nvar external_throttle_debounce_ = __nested_webpack_require_8926__(36);\n\n// EXTERNAL MODULE: external \"normalize-wheel\"\nvar external_normalize_wheel_ = __nested_webpack_require_8926__(39);\nvar external_normalize_wheel_default = /*#__PURE__*/__nested_webpack_require_8926__.n(external_normalize_wheel_);\n\n// CONCATENATED MODULE: ./src/directives/mousewheel.js\n\n\nvar isFirefox = typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\nvar mousewheel_mousewheel = function mousewheel(element, callback) {\n if (element && element.addEventListener) {\n element.addEventListener(isFirefox ? 'DOMMouseScroll' : 'mousewheel', function (event) {\n var normalized = external_normalize_wheel_default()(event);\n callback && callback.apply(this, [event, normalized]);\n });\n }\n};\n\n/* harmony default export */ var directives_mousewheel = ({\n bind: function bind(el, binding) {\n mousewheel_mousewheel(el, binding.value);\n }\n});\n// EXTERNAL MODULE: external \"vue\"\nvar external_vue_ = __nested_webpack_require_8926__(6);\nvar external_vue_default = /*#__PURE__*/__nested_webpack_require_8926__.n(external_vue_);\n\n// CONCATENATED MODULE: ./packages/table/src/util.js\nvar util_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nvar getCell = function getCell(event) {\n var cell = event.target;\n\n while (cell && cell.tagName.toUpperCase() !== 'HTML') {\n if (cell.tagName.toUpperCase() === 'TD') {\n return cell;\n }\n cell = cell.parentNode;\n }\n\n return null;\n};\n\nvar util_isObject = function isObject(obj) {\n return obj !== null && (typeof obj === 'undefined' ? 'undefined' : util_typeof(obj)) === 'object';\n};\n\nvar util_orderBy = function orderBy(array, sortKey, reverse, sortMethod, sortBy) {\n if (!sortKey && !sortMethod && (!sortBy || Array.isArray(sortBy) && !sortBy.length)) {\n return array;\n }\n if (typeof reverse === 'string') {\n reverse = reverse === 'descending' ? -1 : 1;\n } else {\n reverse = reverse && reverse < 0 ? -1 : 1;\n }\n var getKey = sortMethod ? null : function (value, index) {\n if (sortBy) {\n if (!Array.isArray(sortBy)) {\n sortBy = [sortBy];\n }\n return sortBy.map(function (by) {\n if (typeof by === 'string') {\n return Object(util_[\"getValueByPath\"])(value, by);\n } else {\n return by(value, index, array);\n }\n });\n }\n if (sortKey !== '$key') {\n if (util_isObject(value) && '$value' in value) value = value.$value;\n }\n return [util_isObject(value) ? Object(util_[\"getValueByPath\"])(value, sortKey) : value];\n };\n var compare = function compare(a, b) {\n if (sortMethod) {\n return sortMethod(a.value, b.value);\n }\n for (var i = 0, len = a.key.length; i < len; i++) {\n if (a.key[i] < b.key[i]) {\n return -1;\n }\n if (a.key[i] > b.key[i]) {\n return 1;\n }\n }\n return 0;\n };\n return array.map(function (value, index) {\n return {\n value: value,\n index: index,\n key: getKey ? getKey(value, index) : null\n };\n }).sort(function (a, b) {\n var order = compare(a, b);\n if (!order) {\n // make stable https://en.wikipedia.org/wiki/Sorting_algorithm#Stability\n order = a.index - b.index;\n }\n return order * reverse;\n }).map(function (item) {\n return item.value;\n });\n};\n\nvar getColumnById = function getColumnById(table, columnId) {\n var column = null;\n table.columns.forEach(function (item) {\n if (item.id === columnId) {\n column = item;\n }\n });\n return column;\n};\n\nvar getColumnByKey = function getColumnByKey(table, columnKey) {\n var column = null;\n for (var i = 0; i < table.columns.length; i++) {\n var item = table.columns[i];\n if (item.columnKey === columnKey) {\n column = item;\n break;\n }\n }\n return column;\n};\n\nvar getColumnByCell = function getColumnByCell(table, cell) {\n var matches = (cell.className || '').match(/el-table_[^\\s]+/gm);\n if (matches) {\n return getColumnById(table, matches[0]);\n }\n return null;\n};\n\nvar getRowIdentity = function getRowIdentity(row, rowKey) {\n if (!row) throw new Error('row is required when get row identity');\n if (typeof rowKey === 'string') {\n if (rowKey.indexOf('.') < 0) {\n return row[rowKey];\n }\n var key = rowKey.split('.');\n var current = row;\n for (var i = 0; i < key.length; i++) {\n current = current[key[i]];\n }\n return current;\n } else if (typeof rowKey === 'function') {\n return rowKey.call(null, row);\n }\n};\n\nvar getKeysMap = function getKeysMap(array, rowKey) {\n var arrayMap = {};\n (array || []).forEach(function (row, index) {\n arrayMap[getRowIdentity(row, rowKey)] = { row: row, index: index };\n });\n return arrayMap;\n};\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction mergeOptions(defaults, config) {\n var options = {};\n var key = void 0;\n for (key in defaults) {\n options[key] = defaults[key];\n }\n for (key in config) {\n if (hasOwn(config, key)) {\n var value = config[key];\n if (typeof value !== 'undefined') {\n options[key] = value;\n }\n }\n }\n return options;\n}\n\nfunction parseWidth(width) {\n if (width !== undefined) {\n width = parseInt(width, 10);\n if (isNaN(width)) {\n width = null;\n }\n }\n return width;\n}\n\nfunction parseMinWidth(minWidth) {\n if (typeof minWidth !== 'undefined') {\n minWidth = parseWidth(minWidth);\n if (isNaN(minWidth)) {\n minWidth = 80;\n }\n }\n return minWidth;\n};\n\nfunction parseHeight(height) {\n if (typeof height === 'number') {\n return height;\n }\n if (typeof height === 'string') {\n if (/^\\d+(?:px)?$/.test(height)) {\n return parseInt(height, 10);\n } else {\n return height;\n }\n }\n return null;\n}\n\n// https://github.com/reduxjs/redux/blob/master/src/compose.js\nfunction compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}\n\nfunction toggleRowStatus(statusArr, row, newVal) {\n var changed = false;\n var index = statusArr.indexOf(row);\n var included = index !== -1;\n\n var addRow = function addRow() {\n statusArr.push(row);\n changed = true;\n };\n var removeRow = function removeRow() {\n statusArr.splice(index, 1);\n changed = true;\n };\n\n if (typeof newVal === 'boolean') {\n if (newVal && !included) {\n addRow();\n } else if (!newVal && included) {\n removeRow();\n }\n } else {\n if (included) {\n removeRow();\n } else {\n addRow();\n }\n }\n return changed;\n}\n\nfunction walkTreeNode(root, cb) {\n var childrenKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children';\n var lazyKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'hasChildren';\n\n var isNil = function isNil(array) {\n return !(Array.isArray(array) && array.length);\n };\n\n function _walker(parent, children, level) {\n cb(parent, children, level);\n children.forEach(function (item) {\n if (item[lazyKey]) {\n cb(item, null, level + 1);\n return;\n }\n var children = item[childrenKey];\n if (!isNil(children)) {\n _walker(item, children, level + 1);\n }\n });\n }\n\n root.forEach(function (item) {\n if (item[lazyKey]) {\n cb(item, null, 0);\n return;\n }\n var children = item[childrenKey];\n if (!isNil(children)) {\n _walker(item, children, 0);\n }\n });\n}\n\nvar objectEquals = function objectEquals(objectA, objectB) {\n // 取对象a和b的属性名\n var aProps = Object.getOwnPropertyNames(objectA);\n var bProps = Object.getOwnPropertyNames(objectB);\n // 判断属性名的length是否一致\n if (aProps.length !== bProps.length) {\n return false;\n }\n // 循环取出属性名,再判断属性值是否一致\n for (var i = 0; i < aProps.length; i++) {\n var propName = aProps[i];\n if (objectA[propName] !== objectB[propName]) {\n return false;\n }\n }\n return true;\n};\n// CONCATENATED MODULE: ./packages/table/src/store/expand.js\n\n\n/* harmony default export */ var expand = ({\n data: function data() {\n return {\n states: {\n defaultExpandAll: false,\n expandRows: []\n }\n };\n },\n\n\n methods: {\n updateExpandRows: function updateExpandRows() {\n var _states = this.states,\n _states$data = _states.data,\n data = _states$data === undefined ? [] : _states$data,\n rowKey = _states.rowKey,\n defaultExpandAll = _states.defaultExpandAll,\n expandRows = _states.expandRows;\n\n if (defaultExpandAll) {\n this.states.expandRows = data.slice();\n } else if (rowKey) {\n // TODO:这里的代码可以优化\n var expandRowsMap = getKeysMap(expandRows, rowKey);\n this.states.expandRows = data.reduce(function (prev, row) {\n var rowId = getRowIdentity(row, rowKey);\n var rowInfo = expandRowsMap[rowId];\n if (rowInfo) {\n prev.push(row);\n }\n return prev;\n }, []);\n } else {\n this.states.expandRows = [];\n }\n },\n toggleRowExpansion: function toggleRowExpansion(row, expanded) {\n var changed = toggleRowStatus(this.states.expandRows, row, expanded);\n if (changed) {\n this.table.$emit('expand-change', row, this.states.expandRows.slice());\n this.scheduleLayout();\n }\n },\n setExpandRowKeys: function setExpandRowKeys(rowKeys) {\n this.assertRowKey();\n // TODO:这里的代码可以优化\n var _states2 = this.states,\n data = _states2.data,\n rowKey = _states2.rowKey;\n\n var keysMap = getKeysMap(data, rowKey);\n this.states.expandRows = rowKeys.reduce(function (prev, cur) {\n var info = keysMap[cur];\n if (info) {\n prev.push(info.row);\n }\n return prev;\n }, []);\n },\n isRowExpanded: function isRowExpanded(row) {\n var _states3 = this.states,\n _states3$expandRows = _states3.expandRows,\n expandRows = _states3$expandRows === undefined ? [] : _states3$expandRows,\n rowKey = _states3.rowKey;\n\n if (rowKey) {\n var expandMap = getKeysMap(expandRows, rowKey);\n return !!expandMap[getRowIdentity(row, rowKey)];\n }\n return expandRows.indexOf(row) !== -1;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/table/src/store/current.js\n\n\n\n/* harmony default export */ var store_current = ({\n data: function data() {\n return {\n states: {\n // 不可响应的,设置 currentRowKey 时,data 不一定存在,也许无法算出正确的 currentRow\n // 把该值缓存一下,当用户点击修改 currentRow 时,把该值重置为 null\n _currentRowKey: null,\n currentRow: null\n }\n };\n },\n\n\n methods: {\n setCurrentRowKey: function setCurrentRowKey(key) {\n this.assertRowKey();\n this.states._currentRowKey = key;\n this.setCurrentRowByKey(key);\n },\n restoreCurrentRowKey: function restoreCurrentRowKey() {\n this.states._currentRowKey = null;\n },\n setCurrentRowByKey: function setCurrentRowByKey(key) {\n var states = this.states;\n var _states$data = states.data,\n data = _states$data === undefined ? [] : _states$data,\n rowKey = states.rowKey;\n\n var currentRow = null;\n if (rowKey) {\n currentRow = Object(util_[\"arrayFind\"])(data, function (item) {\n return getRowIdentity(item, rowKey) === key;\n });\n }\n states.currentRow = currentRow;\n },\n updateCurrentRow: function updateCurrentRow(currentRow) {\n var states = this.states,\n table = this.table;\n\n var oldCurrentRow = states.currentRow;\n if (currentRow && currentRow !== oldCurrentRow) {\n states.currentRow = currentRow;\n table.$emit('current-change', currentRow, oldCurrentRow);\n return;\n }\n if (!currentRow && oldCurrentRow) {\n states.currentRow = null;\n table.$emit('current-change', null, oldCurrentRow);\n }\n },\n updateCurrentRowData: function updateCurrentRowData() {\n var states = this.states,\n table = this.table;\n var rowKey = states.rowKey,\n _currentRowKey = states._currentRowKey;\n // data 为 null 时,解构时的默认值会被忽略\n\n var data = states.data || [];\n var oldCurrentRow = states.currentRow;\n\n // 当 currentRow 不在 data 中时尝试更新数据\n if (data.indexOf(oldCurrentRow) === -1 && oldCurrentRow) {\n if (rowKey) {\n var currentRowKey = getRowIdentity(oldCurrentRow, rowKey);\n this.setCurrentRowByKey(currentRowKey);\n } else {\n states.currentRow = null;\n }\n if (states.currentRow === null) {\n table.$emit('current-change', null, oldCurrentRow);\n }\n } else if (_currentRowKey) {\n // 把初始时下设置的 rowKey 转化成 rowData\n this.setCurrentRowByKey(_currentRowKey);\n this.restoreCurrentRowKey();\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/table/src/store/tree.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n/* harmony default export */ var tree = ({\n data: function data() {\n return {\n states: {\n // defaultExpandAll 存在于 expand.js 中,这里不重复添加\n // 在展开行中,expandRowKeys 会被转化成 expandRows,expandRowKeys 这个属性只是记录了 TreeTable 行的展开\n // TODO: 拆分为独立的 TreeTable,统一用法\n expandRowKeys: [],\n treeData: {},\n indent: 16,\n lazy: false,\n lazyTreeNodeMap: {},\n lazyColumnIdentifier: 'hasChildren',\n childrenColumnName: 'children'\n }\n };\n },\n\n\n computed: {\n // 嵌入型的数据,watch 无法是检测到变化 https://github.com/ElemeFE/element/issues/14998\n // TODO: 使用 computed 解决该问题,是否会造成性能问题?\n // @return { id: { level, children } }\n normalizedData: function normalizedData() {\n if (!this.states.rowKey) return {};\n var data = this.states.data || [];\n return this.normalize(data);\n },\n\n // @return { id: { children } }\n // 针对懒加载的情形,不处理嵌套数据\n normalizedLazyNode: function normalizedLazyNode() {\n var _states = this.states,\n rowKey = _states.rowKey,\n lazyTreeNodeMap = _states.lazyTreeNodeMap,\n lazyColumnIdentifier = _states.lazyColumnIdentifier;\n\n var keys = Object.keys(lazyTreeNodeMap);\n var res = {};\n if (!keys.length) return res;\n keys.forEach(function (key) {\n if (lazyTreeNodeMap[key].length) {\n var item = { children: [] };\n lazyTreeNodeMap[key].forEach(function (row) {\n var currentRowKey = getRowIdentity(row, rowKey);\n item.children.push(currentRowKey);\n if (row[lazyColumnIdentifier] && !res[currentRowKey]) {\n res[currentRowKey] = { children: [] };\n }\n });\n res[key] = item;\n }\n });\n return res;\n }\n },\n\n watch: {\n normalizedData: 'updateTreeData',\n normalizedLazyNode: 'updateTreeData'\n },\n\n methods: {\n normalize: function normalize(data) {\n var _states2 = this.states,\n childrenColumnName = _states2.childrenColumnName,\n lazyColumnIdentifier = _states2.lazyColumnIdentifier,\n rowKey = _states2.rowKey,\n lazy = _states2.lazy;\n\n var res = {};\n walkTreeNode(data, function (parent, children, level) {\n var parentId = getRowIdentity(parent, rowKey);\n if (Array.isArray(children)) {\n res[parentId] = {\n children: children.map(function (row) {\n return getRowIdentity(row, rowKey);\n }),\n level: level\n };\n } else if (lazy) {\n // 当 children 不存在且 lazy 为 true,该节点即为懒加载的节点\n res[parentId] = {\n children: [],\n lazy: true,\n level: level\n };\n }\n }, childrenColumnName, lazyColumnIdentifier);\n return res;\n },\n updateTreeData: function updateTreeData() {\n var nested = this.normalizedData;\n var normalizedLazyNode = this.normalizedLazyNode;\n var keys = Object.keys(nested);\n var newTreeData = {};\n if (keys.length) {\n var _states3 = this.states,\n oldTreeData = _states3.treeData,\n defaultExpandAll = _states3.defaultExpandAll,\n expandRowKeys = _states3.expandRowKeys,\n lazy = _states3.lazy;\n\n var rootLazyRowKeys = [];\n var getExpanded = function getExpanded(oldValue, key) {\n var included = defaultExpandAll || expandRowKeys && expandRowKeys.indexOf(key) !== -1;\n return !!(oldValue && oldValue.expanded || included);\n };\n // 合并 expanded 与 display,确保数据刷新后,状态不变\n keys.forEach(function (key) {\n var oldValue = oldTreeData[key];\n var newValue = _extends({}, nested[key]);\n newValue.expanded = getExpanded(oldValue, key);\n if (newValue.lazy) {\n var _ref = oldValue || {},\n _ref$loaded = _ref.loaded,\n loaded = _ref$loaded === undefined ? false : _ref$loaded,\n _ref$loading = _ref.loading,\n loading = _ref$loading === undefined ? false : _ref$loading;\n\n newValue.loaded = !!loaded;\n newValue.loading = !!loading;\n rootLazyRowKeys.push(key);\n }\n newTreeData[key] = newValue;\n });\n // 根据懒加载数据更新 treeData\n var lazyKeys = Object.keys(normalizedLazyNode);\n if (lazy && lazyKeys.length && rootLazyRowKeys.length) {\n lazyKeys.forEach(function (key) {\n var oldValue = oldTreeData[key];\n var lazyNodeChildren = normalizedLazyNode[key].children;\n if (rootLazyRowKeys.indexOf(key) !== -1) {\n // 懒加载的 root 节点,更新一下原有的数据,原来的 children 一定是空数组\n if (newTreeData[key].children.length !== 0) {\n throw new Error('[ElTable]children must be an empty array.');\n }\n newTreeData[key].children = lazyNodeChildren;\n } else {\n var _ref2 = oldValue || {},\n _ref2$loaded = _ref2.loaded,\n loaded = _ref2$loaded === undefined ? false : _ref2$loaded,\n _ref2$loading = _ref2.loading,\n loading = _ref2$loading === undefined ? false : _ref2$loading;\n\n newTreeData[key] = {\n lazy: true,\n loaded: !!loaded,\n loading: !!loading,\n expanded: getExpanded(oldValue, key),\n children: lazyNodeChildren,\n level: ''\n };\n }\n });\n }\n }\n this.states.treeData = newTreeData;\n this.updateTableScrollY();\n },\n updateTreeExpandKeys: function updateTreeExpandKeys(value) {\n this.states.expandRowKeys = value;\n this.updateTreeData();\n },\n toggleTreeExpansion: function toggleTreeExpansion(row, expanded) {\n this.assertRowKey();\n\n var _states4 = this.states,\n rowKey = _states4.rowKey,\n treeData = _states4.treeData;\n\n var id = getRowIdentity(row, rowKey);\n var data = id && treeData[id];\n if (id && data && 'expanded' in data) {\n var oldExpanded = data.expanded;\n expanded = typeof expanded === 'undefined' ? !data.expanded : expanded;\n treeData[id].expanded = expanded;\n if (oldExpanded !== expanded) {\n this.table.$emit('expand-change', row, expanded);\n }\n this.updateTableScrollY();\n }\n },\n loadOrToggle: function loadOrToggle(row) {\n this.assertRowKey();\n var _states5 = this.states,\n lazy = _states5.lazy,\n treeData = _states5.treeData,\n rowKey = _states5.rowKey;\n\n var id = getRowIdentity(row, rowKey);\n var data = treeData[id];\n if (lazy && data && 'loaded' in data && !data.loaded) {\n this.loadData(row, id, data);\n } else {\n this.toggleTreeExpansion(row);\n }\n },\n loadData: function loadData(row, key, treeNode) {\n var _this = this;\n\n var load = this.table.load;\n var rawTreeData = this.states.treeData;\n\n if (load && !rawTreeData[key].loaded) {\n rawTreeData[key].loading = true;\n load(row, treeNode, function (data) {\n if (!Array.isArray(data)) {\n throw new Error('[ElTable] data must be an array');\n }\n var _states6 = _this.states,\n lazyTreeNodeMap = _states6.lazyTreeNodeMap,\n treeData = _states6.treeData;\n\n treeData[key].loading = false;\n treeData[key].loaded = true;\n treeData[key].expanded = true;\n if (data.length) {\n _this.$set(lazyTreeNodeMap, key, data);\n }\n _this.table.$emit('expand-change', row, true);\n });\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/table/src/store/watcher.js\n\n\n\n\n\n\n\nvar watcher_sortData = function sortData(data, states) {\n var sortingColumn = states.sortingColumn;\n if (!sortingColumn || typeof sortingColumn.sortable === 'string') {\n return data;\n }\n return util_orderBy(data, states.sortProp, states.sortOrder, sortingColumn.sortMethod, sortingColumn.sortBy);\n};\n\nvar doFlattenColumns = function doFlattenColumns(columns) {\n var result = [];\n columns.forEach(function (column) {\n if (column.children) {\n result.push.apply(result, doFlattenColumns(column.children));\n } else {\n result.push(column);\n }\n });\n return result;\n};\n\n/* harmony default export */ var watcher = (external_vue_default.a.extend({\n data: function data() {\n return {\n states: {\n // 3.0 版本后要求必须设置该属性\n rowKey: null,\n\n // 渲染的数据来源,是对 table 中的 data 过滤排序后的结果\n data: [],\n\n // 是否包含固定列\n isComplex: false,\n\n // 列\n _columns: [], // 不可响应的\n originColumns: [],\n columns: [],\n fixedColumns: [],\n rightFixedColumns: [],\n leafColumns: [],\n fixedLeafColumns: [],\n rightFixedLeafColumns: [],\n leafColumnsLength: 0,\n fixedLeafColumnsLength: 0,\n rightFixedLeafColumnsLength: 0,\n\n // 选择\n isAllSelected: false,\n selection: [],\n reserveSelection: false,\n selectOnIndeterminate: false,\n selectable: null,\n\n // 过滤\n filters: {}, // 不可响应的\n filteredData: null,\n\n // 排序\n sortingColumn: null,\n sortProp: null,\n sortOrder: null,\n\n hoverRow: null\n }\n };\n },\n\n\n mixins: [expand, store_current, tree],\n\n methods: {\n // 检查 rowKey 是否存在\n assertRowKey: function assertRowKey() {\n var rowKey = this.states.rowKey;\n if (!rowKey) throw new Error('[ElTable] prop row-key is required');\n },\n\n\n // 更新列\n updateColumns: function updateColumns() {\n var states = this.states;\n var _columns = states._columns || [];\n states.fixedColumns = _columns.filter(function (column) {\n return column.fixed === true || column.fixed === 'left';\n });\n states.rightFixedColumns = _columns.filter(function (column) {\n return column.fixed === 'right';\n });\n\n if (states.fixedColumns.length > 0 && _columns[0] && _columns[0].type === 'selection' && !_columns[0].fixed) {\n _columns[0].fixed = true;\n states.fixedColumns.unshift(_columns[0]);\n }\n\n var notFixedColumns = _columns.filter(function (column) {\n return !column.fixed;\n });\n states.originColumns = [].concat(states.fixedColumns).concat(notFixedColumns).concat(states.rightFixedColumns);\n\n var leafColumns = doFlattenColumns(notFixedColumns);\n var fixedLeafColumns = doFlattenColumns(states.fixedColumns);\n var rightFixedLeafColumns = doFlattenColumns(states.rightFixedColumns);\n\n states.leafColumnsLength = leafColumns.length;\n states.fixedLeafColumnsLength = fixedLeafColumns.length;\n states.rightFixedLeafColumnsLength = rightFixedLeafColumns.length;\n\n states.columns = [].concat(fixedLeafColumns).concat(leafColumns).concat(rightFixedLeafColumns);\n states.isComplex = states.fixedColumns.length > 0 || states.rightFixedColumns.length > 0;\n },\n\n\n // 更新 DOM\n scheduleLayout: function scheduleLayout(needUpdateColumns) {\n if (needUpdateColumns) {\n this.updateColumns();\n }\n this.table.debouncedUpdateLayout();\n },\n\n\n // 选择\n isSelected: function isSelected(row) {\n var _states$selection = this.states.selection,\n selection = _states$selection === undefined ? [] : _states$selection;\n\n return selection.indexOf(row) > -1;\n },\n clearSelection: function clearSelection() {\n var states = this.states;\n states.isAllSelected = false;\n var oldSelection = states.selection;\n if (oldSelection.length) {\n states.selection = [];\n this.table.$emit('selection-change', []);\n }\n },\n cleanSelection: function cleanSelection() {\n var states = this.states;\n var data = states.data,\n rowKey = states.rowKey,\n selection = states.selection;\n\n var deleted = void 0;\n if (rowKey) {\n deleted = [];\n var selectedMap = getKeysMap(selection, rowKey);\n var dataMap = getKeysMap(data, rowKey);\n for (var key in selectedMap) {\n if (selectedMap.hasOwnProperty(key) && !dataMap[key]) {\n deleted.push(selectedMap[key].row);\n }\n }\n } else {\n deleted = selection.filter(function (item) {\n return data.indexOf(item) === -1;\n });\n }\n if (deleted.length) {\n var newSelection = selection.filter(function (item) {\n return deleted.indexOf(item) === -1;\n });\n states.selection = newSelection;\n this.table.$emit('selection-change', newSelection.slice());\n }\n },\n toggleRowSelection: function toggleRowSelection(row, selected) {\n var emitChange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var changed = toggleRowStatus(this.states.selection, row, selected);\n if (changed) {\n var newSelection = (this.states.selection || []).slice();\n // 调用 API 修改选中值,不触发 select 事件\n if (emitChange) {\n this.table.$emit('select', newSelection, row);\n }\n this.table.$emit('selection-change', newSelection);\n }\n },\n _toggleAllSelection: function _toggleAllSelection() {\n var states = this.states;\n var _states$data = states.data,\n data = _states$data === undefined ? [] : _states$data,\n selection = states.selection;\n // when only some rows are selected (but not all), select or deselect all of them\n // depending on the value of selectOnIndeterminate\n\n var value = states.selectOnIndeterminate ? !states.isAllSelected : !(states.isAllSelected || selection.length);\n states.isAllSelected = value;\n\n var selectionChanged = false;\n data.forEach(function (row, index) {\n if (states.selectable) {\n if (states.selectable.call(null, row, index) && toggleRowStatus(selection, row, value)) {\n selectionChanged = true;\n }\n } else {\n if (toggleRowStatus(selection, row, value)) {\n selectionChanged = true;\n }\n }\n });\n\n if (selectionChanged) {\n this.table.$emit('selection-change', selection ? selection.slice() : []);\n }\n this.table.$emit('select-all', selection);\n },\n updateSelectionByRowKey: function updateSelectionByRowKey() {\n var states = this.states;\n var selection = states.selection,\n rowKey = states.rowKey,\n data = states.data;\n\n var selectedMap = getKeysMap(selection, rowKey);\n data.forEach(function (row) {\n var rowId = getRowIdentity(row, rowKey);\n var rowInfo = selectedMap[rowId];\n if (rowInfo) {\n selection[rowInfo.index] = row;\n }\n });\n },\n updateAllSelected: function updateAllSelected() {\n var states = this.states;\n var selection = states.selection,\n rowKey = states.rowKey,\n selectable = states.selectable;\n // data 为 null 时,解构时的默认值会被忽略\n\n var data = states.data || [];\n if (data.length === 0) {\n states.isAllSelected = false;\n return;\n }\n\n var selectedMap = void 0;\n if (rowKey) {\n selectedMap = getKeysMap(selection, rowKey);\n }\n var isSelected = function isSelected(row) {\n if (selectedMap) {\n return !!selectedMap[getRowIdentity(row, rowKey)];\n } else {\n return selection.indexOf(row) !== -1;\n }\n };\n var isAllSelected = true;\n var selectedCount = 0;\n for (var i = 0, j = data.length; i < j; i++) {\n var item = data[i];\n var isRowSelectable = selectable && selectable.call(null, item, i);\n if (!isSelected(item)) {\n if (!selectable || isRowSelectable) {\n isAllSelected = false;\n break;\n }\n } else {\n selectedCount++;\n }\n }\n\n if (selectedCount === 0) isAllSelected = false;\n states.isAllSelected = isAllSelected;\n },\n\n\n // 过滤与排序\n updateFilters: function updateFilters(columns, values) {\n if (!Array.isArray(columns)) {\n columns = [columns];\n }\n var states = this.states;\n var filters = {};\n columns.forEach(function (col) {\n states.filters[col.id] = values;\n filters[col.columnKey || col.id] = values;\n });\n\n return filters;\n },\n updateSort: function updateSort(column, prop, order) {\n if (this.states.sortingColumn && this.states.sortingColumn !== column) {\n this.states.sortingColumn.order = null;\n }\n this.states.sortingColumn = column;\n this.states.sortProp = prop;\n this.states.sortOrder = order;\n },\n execFilter: function execFilter() {\n var _this = this;\n\n var states = this.states;\n var _data = states._data,\n filters = states.filters;\n\n var data = _data;\n\n Object.keys(filters).forEach(function (columnId) {\n var values = states.filters[columnId];\n if (!values || values.length === 0) return;\n var column = getColumnById(_this.states, columnId);\n if (column && column.filterMethod) {\n data = data.filter(function (row) {\n return values.some(function (value) {\n return column.filterMethod.call(null, value, row, column);\n });\n });\n }\n });\n\n states.filteredData = data;\n },\n execSort: function execSort() {\n var states = this.states;\n states.data = watcher_sortData(states.filteredData, states);\n },\n\n\n // 根据 filters 与 sort 去过滤 data\n execQuery: function execQuery(ignore) {\n if (!(ignore && ignore.filter)) {\n this.execFilter();\n }\n this.execSort();\n },\n clearFilter: function clearFilter(columnKeys) {\n var states = this.states;\n var _table$$refs = this.table.$refs,\n tableHeader = _table$$refs.tableHeader,\n fixedTableHeader = _table$$refs.fixedTableHeader,\n rightFixedTableHeader = _table$$refs.rightFixedTableHeader;\n\n\n var panels = {};\n if (tableHeader) panels = merge_default()(panels, tableHeader.filterPanels);\n if (fixedTableHeader) panels = merge_default()(panels, fixedTableHeader.filterPanels);\n if (rightFixedTableHeader) panels = merge_default()(panels, rightFixedTableHeader.filterPanels);\n\n var keys = Object.keys(panels);\n if (!keys.length) return;\n\n if (typeof columnKeys === 'string') {\n columnKeys = [columnKeys];\n }\n\n if (Array.isArray(columnKeys)) {\n var columns = columnKeys.map(function (key) {\n return getColumnByKey(states, key);\n });\n keys.forEach(function (key) {\n var column = columns.find(function (col) {\n return col.id === key;\n });\n if (column) {\n // TODO: 优化这里的代码\n panels[key].filteredValue = [];\n }\n });\n this.commit('filterChange', {\n column: columns,\n values: [],\n silent: true,\n multi: true\n });\n } else {\n keys.forEach(function (key) {\n // TODO: 优化这里的代码\n panels[key].filteredValue = [];\n });\n\n states.filters = {};\n this.commit('filterChange', {\n column: {},\n values: [],\n silent: true\n });\n }\n },\n clearSort: function clearSort() {\n var states = this.states;\n if (!states.sortingColumn) return;\n\n this.updateSort(null, null, null);\n this.commit('changeSortCondition', {\n silent: true\n });\n },\n\n\n // 适配层,expand-row-keys 在 Expand 与 TreeTable 中都有使用\n setExpandRowKeysAdapter: function setExpandRowKeysAdapter(val) {\n // 这里会触发额外的计算,但为了兼容性,暂时这么做\n this.setExpandRowKeys(val);\n this.updateTreeExpandKeys(val);\n },\n\n\n // 展开行与 TreeTable 都要使用\n toggleRowExpansionAdapter: function toggleRowExpansionAdapter(row, expanded) {\n var hasExpandColumn = this.states.columns.some(function (_ref) {\n var type = _ref.type;\n return type === 'expand';\n });\n if (hasExpandColumn) {\n this.toggleRowExpansion(row, expanded);\n } else {\n this.toggleTreeExpansion(row, expanded);\n }\n }\n }\n}));\n// CONCATENATED MODULE: ./packages/table/src/store/index.js\n\n\n\n\nwatcher.prototype.mutations = {\n setData: function setData(states, data) {\n var dataInstanceChanged = states._data !== data;\n states._data = data;\n\n this.execQuery();\n // 数据变化,更新部分数据。\n // 没有使用 computed,而是手动更新部分数据 https://github.com/vuejs/vue/issues/6660#issuecomment-331417140\n this.updateCurrentRowData();\n this.updateExpandRows();\n if (states.reserveSelection) {\n this.assertRowKey();\n this.updateSelectionByRowKey();\n } else {\n if (dataInstanceChanged) {\n this.clearSelection();\n } else {\n this.cleanSelection();\n }\n }\n this.updateAllSelected();\n\n this.updateTableScrollY();\n },\n insertColumn: function insertColumn(states, column, index, parent) {\n var array = states._columns;\n if (parent) {\n array = parent.children;\n if (!array) array = parent.children = [];\n }\n\n if (typeof index !== 'undefined') {\n array.splice(index, 0, column);\n } else {\n array.push(column);\n }\n\n if (column.type === 'selection') {\n states.selectable = column.selectable;\n states.reserveSelection = column.reserveSelection;\n }\n\n if (this.table.$ready) {\n this.updateColumns(); // hack for dynamics insert column\n this.scheduleLayout();\n }\n },\n removeColumn: function removeColumn(states, column, parent) {\n var array = states._columns;\n if (parent) {\n array = parent.children;\n if (!array) array = parent.children = [];\n }\n if (array) {\n array.splice(array.indexOf(column), 1);\n }\n\n if (this.table.$ready) {\n this.updateColumns(); // hack for dynamics remove column\n this.scheduleLayout();\n }\n },\n sort: function sort(states, options) {\n var prop = options.prop,\n order = options.order,\n init = options.init;\n\n if (prop) {\n var column = Object(util_[\"arrayFind\"])(states.columns, function (column) {\n return column.property === prop;\n });\n if (column) {\n column.order = order;\n this.updateSort(column, prop, order);\n this.commit('changeSortCondition', { init: init });\n }\n }\n },\n changeSortCondition: function changeSortCondition(states, options) {\n // 修复 pr https://github.com/ElemeFE/element/pull/15012 导致的 bug\n var column = states.sortingColumn,\n prop = states.sortProp,\n order = states.sortOrder;\n\n if (order === null) {\n states.sortingColumn = null;\n states.sortProp = null;\n }\n var ingore = { filter: true };\n this.execQuery(ingore);\n\n if (!options || !(options.silent || options.init)) {\n this.table.$emit('sort-change', {\n column: column,\n prop: prop,\n order: order\n });\n }\n\n this.updateTableScrollY();\n },\n filterChange: function filterChange(states, options) {\n var column = options.column,\n values = options.values,\n silent = options.silent;\n\n var newFilters = this.updateFilters(column, values);\n\n this.execQuery();\n\n if (!silent) {\n this.table.$emit('filter-change', newFilters);\n }\n\n this.updateTableScrollY();\n },\n toggleAllSelection: function toggleAllSelection() {\n this.toggleAllSelection();\n },\n rowSelectedChanged: function rowSelectedChanged(states, row) {\n this.toggleRowSelection(row);\n this.updateAllSelected();\n },\n setHoverRow: function setHoverRow(states, row) {\n states.hoverRow = row;\n },\n setCurrentRow: function setCurrentRow(states, row) {\n this.updateCurrentRow(row);\n }\n};\n\nwatcher.prototype.commit = function (name) {\n var mutations = this.mutations;\n if (mutations[name]) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n mutations[name].apply(this, [this.states].concat(args));\n } else {\n throw new Error('Action not found: ' + name);\n }\n};\n\nwatcher.prototype.updateTableScrollY = function () {\n external_vue_default.a.nextTick(this.table.updateScrollY);\n};\n\n/* harmony default export */ var src_store = (watcher);\n// CONCATENATED MODULE: ./packages/table/src/store/helper.js\n\n\n\nfunction createStore(table) {\n var initialState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!table) {\n throw new Error('Table is required.');\n }\n\n var store = new src_store();\n store.table = table;\n // fix https://github.com/ElemeFE/element/issues/14075\n // related pr https://github.com/ElemeFE/element/pull/14146\n store.toggleAllSelection = debounce_default()(10, store._toggleAllSelection);\n Object.keys(initialState).forEach(function (key) {\n store.states[key] = initialState[key];\n });\n return store;\n}\n\nfunction mapStates(mapper) {\n var res = {};\n Object.keys(mapper).forEach(function (key) {\n var value = mapper[key];\n var fn = void 0;\n if (typeof value === 'string') {\n fn = function fn() {\n return this.store.states[value];\n };\n } else if (typeof value === 'function') {\n fn = function fn() {\n return value.call(this, this.store.states);\n };\n } else {\n console.error('invalid value type');\n }\n if (fn) {\n res[key] = fn;\n }\n });\n return res;\n};\n// EXTERNAL MODULE: external \"element-ui/lib/utils/scrollbar-width\"\nvar scrollbar_width_ = __nested_webpack_require_8926__(31);\nvar scrollbar_width_default = /*#__PURE__*/__nested_webpack_require_8926__.n(scrollbar_width_);\n\n// CONCATENATED MODULE: ./packages/table/src/table-layout.js\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\nvar table_layout_TableLayout = function () {\n function TableLayout(options) {\n _classCallCheck(this, TableLayout);\n\n this.observers = [];\n this.table = null;\n this.store = null;\n this.columns = null;\n this.fit = true;\n this.showHeader = true;\n\n this.height = null;\n this.scrollX = false;\n this.scrollY = false;\n this.bodyWidth = null;\n this.fixedWidth = null;\n this.rightFixedWidth = null;\n this.tableHeight = null;\n this.headerHeight = 44; // Table Header Height\n this.appendHeight = 0; // Append Slot Height\n this.footerHeight = 44; // Table Footer Height\n this.viewportHeight = null; // Table Height - Scroll Bar Height\n this.bodyHeight = null; // Table Height - Table Header Height\n this.fixedBodyHeight = null; // Table Height - Table Header Height - Scroll Bar Height\n this.gutterWidth = scrollbar_width_default()();\n\n for (var name in options) {\n if (options.hasOwnProperty(name)) {\n this[name] = options[name];\n }\n }\n\n if (!this.table) {\n throw new Error('table is required for Table Layout');\n }\n if (!this.store) {\n throw new Error('store is required for Table Layout');\n }\n }\n\n TableLayout.prototype.updateScrollY = function updateScrollY() {\n var height = this.height;\n if (height === null) return false;\n var bodyWrapper = this.table.bodyWrapper;\n if (this.table.$el && bodyWrapper) {\n var body = bodyWrapper.querySelector('.el-table__body');\n var prevScrollY = this.scrollY;\n var scrollY = body.offsetHeight > this.bodyHeight;\n this.scrollY = scrollY;\n return prevScrollY !== scrollY;\n }\n return false;\n };\n\n TableLayout.prototype.setHeight = function setHeight(value) {\n var _this = this;\n\n var prop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'height';\n\n if (external_vue_default.a.prototype.$isServer) return;\n var el = this.table.$el;\n value = parseHeight(value);\n this.height = value;\n\n if (!el && (value || value === 0)) return external_vue_default.a.nextTick(function () {\n return _this.setHeight(value, prop);\n });\n\n if (typeof value === 'number') {\n el.style[prop] = value + 'px';\n this.updateElsHeight();\n } else if (typeof value === 'string') {\n el.style[prop] = value;\n this.updateElsHeight();\n }\n };\n\n TableLayout.prototype.setMaxHeight = function setMaxHeight(value) {\n this.setHeight(value, 'max-height');\n };\n\n TableLayout.prototype.getFlattenColumns = function getFlattenColumns() {\n var flattenColumns = [];\n var columns = this.table.columns;\n columns.forEach(function (column) {\n if (column.isColumnGroup) {\n flattenColumns.push.apply(flattenColumns, column.columns);\n } else {\n flattenColumns.push(column);\n }\n });\n\n return flattenColumns;\n };\n\n TableLayout.prototype.updateElsHeight = function updateElsHeight() {\n var _this2 = this;\n\n if (!this.table.$ready) return external_vue_default.a.nextTick(function () {\n return _this2.updateElsHeight();\n });\n var _table$$refs = this.table.$refs,\n headerWrapper = _table$$refs.headerWrapper,\n appendWrapper = _table$$refs.appendWrapper,\n footerWrapper = _table$$refs.footerWrapper;\n\n this.appendHeight = appendWrapper ? appendWrapper.offsetHeight : 0;\n\n if (this.showHeader && !headerWrapper) return;\n\n // fix issue (https://github.com/ElemeFE/element/pull/16956)\n var headerTrElm = headerWrapper ? headerWrapper.querySelector('.el-table__header tr') : null;\n var noneHeader = this.headerDisplayNone(headerTrElm);\n\n var headerHeight = this.headerHeight = !this.showHeader ? 0 : headerWrapper.offsetHeight;\n if (this.showHeader && !noneHeader && headerWrapper.offsetWidth > 0 && (this.table.columns || []).length > 0 && headerHeight < 2) {\n return external_vue_default.a.nextTick(function () {\n return _this2.updateElsHeight();\n });\n }\n var tableHeight = this.tableHeight = this.table.$el.clientHeight;\n var footerHeight = this.footerHeight = footerWrapper ? footerWrapper.offsetHeight : 0;\n if (this.height !== null) {\n this.bodyHeight = tableHeight - headerHeight - footerHeight + (footerWrapper ? 1 : 0);\n }\n this.fixedBodyHeight = this.scrollX ? this.bodyHeight - this.gutterWidth : this.bodyHeight;\n\n var noData = !(this.store.states.data && this.store.states.data.length);\n this.viewportHeight = this.scrollX ? tableHeight - (noData ? 0 : this.gutterWidth) : tableHeight;\n this.updateScrollY();\n this.notifyObservers('scrollable');\n };\n\n TableLayout.prototype.headerDisplayNone = function headerDisplayNone(elm) {\n if (!elm) return true;\n var headerChild = elm;\n while (headerChild.tagName !== 'DIV') {\n if (getComputedStyle(headerChild).display === 'none') {\n return true;\n }\n headerChild = headerChild.parentElement;\n }\n return false;\n };\n\n TableLayout.prototype.updateColumnsWidth = function updateColumnsWidth() {\n if (external_vue_default.a.prototype.$isServer) return;\n var fit = this.fit;\n var bodyWidth = this.table.$el.clientWidth;\n var bodyMinWidth = 0;\n\n var flattenColumns = this.getFlattenColumns();\n var flexColumns = flattenColumns.filter(function (column) {\n return typeof column.width !== 'number';\n });\n\n flattenColumns.forEach(function (column) {\n // Clean those columns whose width changed from flex to unflex\n if (typeof column.width === 'number' && column.realWidth) column.realWidth = null;\n });\n\n if (flexColumns.length > 0 && fit) {\n flattenColumns.forEach(function (column) {\n bodyMinWidth += column.width || column.minWidth || 80;\n });\n\n var scrollYWidth = this.scrollY ? this.gutterWidth : 0;\n\n if (bodyMinWidth <= bodyWidth - scrollYWidth) {\n // DON'T HAVE SCROLL BAR\n this.scrollX = false;\n\n var totalFlexWidth = bodyWidth - scrollYWidth - bodyMinWidth;\n\n if (flexColumns.length === 1) {\n flexColumns[0].realWidth = (flexColumns[0].minWidth || 80) + totalFlexWidth;\n } else {\n var allColumnsWidth = flexColumns.reduce(function (prev, column) {\n return prev + (column.minWidth || 80);\n }, 0);\n var flexWidthPerPixel = totalFlexWidth / allColumnsWidth;\n var noneFirstWidth = 0;\n\n flexColumns.forEach(function (column, index) {\n if (index === 0) return;\n var flexWidth = Math.floor((column.minWidth || 80) * flexWidthPerPixel);\n noneFirstWidth += flexWidth;\n column.realWidth = (column.minWidth || 80) + flexWidth;\n });\n\n flexColumns[0].realWidth = (flexColumns[0].minWidth || 80) + totalFlexWidth - noneFirstWidth;\n }\n } else {\n // HAVE HORIZONTAL SCROLL BAR\n this.scrollX = true;\n flexColumns.forEach(function (column) {\n column.realWidth = column.minWidth;\n });\n }\n\n this.bodyWidth = Math.max(bodyMinWidth, bodyWidth);\n this.table.resizeState.width = this.bodyWidth;\n } else {\n flattenColumns.forEach(function (column) {\n if (!column.width && !column.minWidth) {\n column.realWidth = 80;\n } else {\n column.realWidth = column.width || column.minWidth;\n }\n\n bodyMinWidth += column.realWidth;\n });\n this.scrollX = bodyMinWidth > bodyWidth;\n\n this.bodyWidth = bodyMinWidth;\n }\n\n var fixedColumns = this.store.states.fixedColumns;\n\n if (fixedColumns.length > 0) {\n var fixedWidth = 0;\n fixedColumns.forEach(function (column) {\n fixedWidth += column.realWidth || column.width;\n });\n\n this.fixedWidth = fixedWidth;\n }\n\n var rightFixedColumns = this.store.states.rightFixedColumns;\n if (rightFixedColumns.length > 0) {\n var rightFixedWidth = 0;\n rightFixedColumns.forEach(function (column) {\n rightFixedWidth += column.realWidth || column.width;\n });\n\n this.rightFixedWidth = rightFixedWidth;\n }\n\n this.notifyObservers('columns');\n };\n\n TableLayout.prototype.addObserver = function addObserver(observer) {\n this.observers.push(observer);\n };\n\n TableLayout.prototype.removeObserver = function removeObserver(observer) {\n var index = this.observers.indexOf(observer);\n if (index !== -1) {\n this.observers.splice(index, 1);\n }\n };\n\n TableLayout.prototype.notifyObservers = function notifyObservers(event) {\n var _this3 = this;\n\n var observers = this.observers;\n observers.forEach(function (observer) {\n switch (event) {\n case 'columns':\n observer.onColumnsChange(_this3);\n break;\n case 'scrollable':\n observer.onScrollableChange(_this3);\n break;\n default:\n throw new Error('Table Layout don\\'t have event ' + event + '.');\n }\n });\n };\n\n return TableLayout;\n}();\n\n/* harmony default export */ var table_layout = (table_layout_TableLayout);\n// CONCATENATED MODULE: ./packages/table/src/layout-observer.js\n/* harmony default export */ var layout_observer = ({\n created: function created() {\n this.tableLayout.addObserver(this);\n },\n destroyed: function destroyed() {\n this.tableLayout.removeObserver(this);\n },\n\n\n computed: {\n tableLayout: function tableLayout() {\n var layout = this.layout;\n if (!layout && this.table) {\n layout = this.table.layout;\n }\n if (!layout) {\n throw new Error('Can not find table layout.');\n }\n return layout;\n }\n },\n\n mounted: function mounted() {\n this.onColumnsChange(this.tableLayout);\n this.onScrollableChange(this.tableLayout);\n },\n updated: function updated() {\n if (this.__updated__) return;\n this.onColumnsChange(this.tableLayout);\n this.onScrollableChange(this.tableLayout);\n this.__updated__ = true;\n },\n\n\n methods: {\n onColumnsChange: function onColumnsChange(layout) {\n var cols = this.$el.querySelectorAll('colgroup > col');\n if (!cols.length) return;\n var flattenColumns = layout.getFlattenColumns();\n var columnsMap = {};\n flattenColumns.forEach(function (column) {\n columnsMap[column.id] = column;\n });\n for (var i = 0, j = cols.length; i < j; i++) {\n var col = cols[i];\n var name = col.getAttribute('name');\n var column = columnsMap[name];\n if (column) {\n col.setAttribute('width', column.realWidth || column.width);\n }\n }\n },\n onScrollableChange: function onScrollableChange(layout) {\n var cols = this.$el.querySelectorAll('colgroup > col[name=gutter]');\n for (var i = 0, j = cols.length; i < j; i++) {\n var col = cols[i];\n col.setAttribute('width', layout.scrollY ? layout.gutterWidth : '0');\n }\n var ths = this.$el.querySelectorAll('th.gutter');\n for (var _i = 0, _j = ths.length; _i < _j; _i++) {\n var th = ths[_i];\n th.style.width = layout.scrollY ? layout.gutterWidth + 'px' : '0';\n th.style.display = layout.scrollY ? '' : 'none';\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/table/src/table-row.js\nvar table_row_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n/* harmony default export */ var table_row = ({\n name: 'ElTableRow',\n props: ['columns', 'row', 'index', 'isSelected', 'isExpanded', 'store', 'context', 'firstDefaultColumnIndex', 'treeRowData', 'treeIndent', 'columnsHidden', 'getSpan', 'getColspanRealWidth', 'getCellStyle', 'getCellClass', 'handleCellMouseLeave', 'handleCellMouseEnter', 'fixed'],\n components: {\n ElCheckbox: checkbox_default.a\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n var columns = this.columns,\n row = this.row,\n $index = this.index,\n store = this.store,\n context = this.context,\n firstDefaultColumnIndex = this.firstDefaultColumnIndex,\n treeRowData = this.treeRowData,\n treeIndent = this.treeIndent,\n _columnsHidden = this.columnsHidden,\n columnsHidden = _columnsHidden === undefined ? [] : _columnsHidden,\n isSelected = this.isSelected,\n isExpanded = this.isExpanded;\n\n\n return h('tr', [columns.map(function (column, cellIndex) {\n var _getSpan = _this.getSpan(row, column, $index, cellIndex),\n rowspan = _getSpan.rowspan,\n colspan = _getSpan.colspan;\n\n if (!rowspan || !colspan) {\n return null;\n }\n var columnData = table_row_extends({}, column);\n columnData.realWidth = _this.getColspanRealWidth(columns, colspan, cellIndex);\n var data = {\n store: store,\n isSelected: isSelected,\n isExpanded: isExpanded,\n _self: context,\n column: columnData,\n row: row,\n $index: $index\n };\n if (cellIndex === firstDefaultColumnIndex && treeRowData) {\n data.treeNode = {\n indent: treeRowData.level * treeIndent,\n level: treeRowData.level\n };\n if (typeof treeRowData.expanded === 'boolean') {\n data.treeNode.expanded = treeRowData.expanded;\n // 表明是懒加载\n if ('loading' in treeRowData) {\n data.treeNode.loading = treeRowData.loading;\n }\n if ('noLazyChildren' in treeRowData) {\n data.treeNode.noLazyChildren = treeRowData.noLazyChildren;\n }\n }\n }\n return h(\n 'td',\n {\n style: _this.getCellStyle($index, cellIndex, row, column),\n 'class': _this.getCellClass($index, cellIndex, row, column),\n attrs: { rowspan: rowspan,\n colspan: colspan\n },\n on: {\n 'mouseenter': function mouseenter($event) {\n return _this.handleCellMouseEnter($event, row);\n },\n 'mouseleave': _this.handleCellMouseLeave\n }\n },\n [column.renderCell.call(_this._renderProxy, _this.$createElement, data, columnsHidden[cellIndex])]\n );\n })]);\n }\n});\n// CONCATENATED MODULE: ./packages/table/src/table-body.js\nvar table_body_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar table_body_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var table_body = ({\n name: 'ElTableBody',\n\n mixins: [layout_observer],\n\n components: {\n ElCheckbox: checkbox_default.a,\n ElTooltip: tooltip_default.a,\n TableRow: table_row\n },\n\n props: {\n store: {\n required: true\n },\n stripe: Boolean,\n context: {},\n rowClassName: [String, Function],\n rowStyle: [Object, Function],\n fixed: String,\n highlight: Boolean\n },\n\n render: function render(h) {\n var _this = this;\n\n var data = this.data || [];\n return h(\n 'table',\n {\n 'class': 'el-table__body',\n attrs: { cellspacing: '0',\n cellpadding: '0',\n border: '0' }\n },\n [h('colgroup', [this.columns.map(function (column) {\n return h('col', {\n attrs: { name: column.id },\n key: column.id });\n })]), h('tbody', [data.reduce(function (acc, row) {\n return acc.concat(_this.wrappedRowRender(row, acc.length));\n }, []), h('el-tooltip', {\n attrs: { effect: this.table.tooltipEffect, placement: 'top', content: this.tooltipContent },\n ref: 'tooltip' })])]\n );\n },\n\n\n computed: table_body_extends({\n table: function table() {\n return this.$parent;\n }\n }, mapStates({\n data: 'data',\n columns: 'columns',\n treeIndent: 'indent',\n leftFixedLeafCount: 'fixedLeafColumnsLength',\n rightFixedLeafCount: 'rightFixedLeafColumnsLength',\n columnsCount: function columnsCount(states) {\n return states.columns.length;\n },\n leftFixedCount: function leftFixedCount(states) {\n return states.fixedColumns.length;\n },\n rightFixedCount: function rightFixedCount(states) {\n return states.rightFixedColumns.length;\n },\n hasExpandColumn: function hasExpandColumn(states) {\n return states.columns.some(function (_ref) {\n var type = _ref.type;\n return type === 'expand';\n });\n }\n }), {\n columnsHidden: function columnsHidden() {\n var _this2 = this;\n\n return this.columns.map(function (column, index) {\n return _this2.isColumnHidden(index);\n });\n },\n firstDefaultColumnIndex: function firstDefaultColumnIndex() {\n return Object(util_[\"arrayFindIndex\"])(this.columns, function (_ref2) {\n var type = _ref2.type;\n return type === 'default';\n });\n }\n }),\n\n watch: {\n // don't trigger getter of currentRow in getCellClass. see https://jsfiddle.net/oe2b4hqt/\n // update DOM manually. see https://github.com/ElemeFE/element/pull/13954/files#diff-9b450c00d0a9dec0ffad5a3176972e40\n 'store.states.hoverRow': function storeStatesHoverRow(newVal, oldVal) {\n var _this3 = this;\n\n if (!this.store.states.isComplex || this.$isServer) return;\n var raf = window.requestAnimationFrame;\n if (!raf) {\n raf = function raf(fn) {\n return setTimeout(fn, 16);\n };\n }\n raf(function () {\n var rows = _this3.$el.querySelectorAll('.el-table__row');\n var oldRow = rows[oldVal];\n var newRow = rows[newVal];\n if (oldRow) {\n Object(dom_[\"removeClass\"])(oldRow, 'hover-row');\n }\n if (newRow) {\n Object(dom_[\"addClass\"])(newRow, 'hover-row');\n }\n });\n }\n },\n\n data: function data() {\n return {\n tooltipContent: ''\n };\n },\n created: function created() {\n this.activateTooltip = debounce_default()(50, function (tooltip) {\n return tooltip.handleShowPopper();\n });\n },\n\n\n methods: {\n getKeyOfRow: function getKeyOfRow(row, index) {\n var rowKey = this.table.rowKey;\n if (rowKey) {\n return getRowIdentity(row, rowKey);\n }\n return index;\n },\n isColumnHidden: function isColumnHidden(index) {\n if (this.fixed === true || this.fixed === 'left') {\n return index >= this.leftFixedLeafCount;\n } else if (this.fixed === 'right') {\n return index < this.columnsCount - this.rightFixedLeafCount;\n } else {\n return index < this.leftFixedLeafCount || index >= this.columnsCount - this.rightFixedLeafCount;\n }\n },\n getSpan: function getSpan(row, column, rowIndex, columnIndex) {\n var rowspan = 1;\n var colspan = 1;\n var fn = this.table.spanMethod;\n if (typeof fn === 'function') {\n var result = fn({\n row: row,\n column: column,\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n if (Array.isArray(result)) {\n rowspan = result[0];\n colspan = result[1];\n } else if ((typeof result === 'undefined' ? 'undefined' : table_body_typeof(result)) === 'object') {\n rowspan = result.rowspan;\n colspan = result.colspan;\n }\n }\n return { rowspan: rowspan, colspan: colspan };\n },\n getRowStyle: function getRowStyle(row, rowIndex) {\n var rowStyle = this.table.rowStyle;\n if (typeof rowStyle === 'function') {\n return rowStyle.call(null, {\n row: row,\n rowIndex: rowIndex\n });\n }\n return rowStyle || null;\n },\n getRowClass: function getRowClass(row, rowIndex) {\n var selection = this.store.states.selection;\n var classes = ['el-table__row'];\n if (this.table.highlightCurrentRow && row === this.store.states.currentRow) {\n classes.push('current-row');\n }\n\n if (this.table.highlightSelectionRow) {\n for (var i = 0; i < selection.length; i++) {\n if (objectEquals(row, selection[i])) {\n classes.push('selection-row');\n }\n };\n }\n\n if (this.stripe && rowIndex % 2 === 1) {\n classes.push('el-table__row--striped');\n }\n var rowClassName = this.table.rowClassName;\n if (typeof rowClassName === 'string') {\n classes.push(rowClassName);\n } else if (typeof rowClassName === 'function') {\n classes.push(rowClassName.call(null, {\n row: row,\n rowIndex: rowIndex\n }));\n }\n\n if (this.store.states.expandRows.indexOf(row) > -1) {\n classes.push('expanded');\n }\n\n return classes;\n },\n getCellStyle: function getCellStyle(rowIndex, columnIndex, row, column) {\n var cellStyle = this.table.cellStyle;\n if (typeof cellStyle === 'function') {\n return cellStyle.call(null, {\n rowIndex: rowIndex,\n columnIndex: columnIndex,\n row: row,\n column: column\n });\n }\n return cellStyle;\n },\n getCellClass: function getCellClass(rowIndex, columnIndex, row, column) {\n var classes = [column.id, column.align, column.className];\n\n if (this.isColumnHidden(columnIndex)) {\n classes.push('is-hidden');\n }\n\n var cellClassName = this.table.cellClassName;\n if (typeof cellClassName === 'string') {\n classes.push(cellClassName);\n } else if (typeof cellClassName === 'function') {\n classes.push(cellClassName.call(null, {\n rowIndex: rowIndex,\n columnIndex: columnIndex,\n row: row,\n column: column\n }));\n }\n\n classes.push('el-table__cell');\n\n return classes.join(' ');\n },\n getColspanRealWidth: function getColspanRealWidth(columns, colspan, index) {\n if (colspan < 1) {\n return columns[index].realWidth;\n }\n var widthArr = columns.map(function (_ref3) {\n var realWidth = _ref3.realWidth;\n return realWidth;\n }).slice(index, index + colspan);\n return widthArr.reduce(function (acc, width) {\n return acc + width;\n }, -1);\n },\n handleCellMouseEnter: function handleCellMouseEnter(event, row) {\n var table = this.table;\n var cell = getCell(event);\n\n if (cell) {\n var column = getColumnByCell(table, cell);\n var hoverState = table.hoverState = { cell: cell, column: column, row: row };\n table.$emit('cell-mouse-enter', hoverState.row, hoverState.column, hoverState.cell, event);\n }\n\n // 判断是否text-overflow, 如果是就显示tooltip\n var cellChild = event.target.querySelector('.cell');\n if (!(Object(dom_[\"hasClass\"])(cellChild, 'el-tooltip') && cellChild.childNodes.length)) {\n return;\n }\n // use range width instead of scrollWidth to determine whether the text is overflowing\n // to address a potential FireFox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1074543#c3\n var range = document.createRange();\n range.setStart(cellChild, 0);\n range.setEnd(cellChild, cellChild.childNodes.length);\n var rangeWidth = range.getBoundingClientRect().width;\n var padding = (parseInt(Object(dom_[\"getStyle\"])(cellChild, 'paddingLeft'), 10) || 0) + (parseInt(Object(dom_[\"getStyle\"])(cellChild, 'paddingRight'), 10) || 0);\n if ((rangeWidth + padding > cellChild.offsetWidth || cellChild.scrollWidth > cellChild.offsetWidth) && this.$refs.tooltip) {\n var tooltip = this.$refs.tooltip;\n // TODO 会引起整个 Table 的重新渲染,需要优化\n this.tooltipContent = cell.innerText || cell.textContent;\n tooltip.referenceElm = cell;\n tooltip.$refs.popper && (tooltip.$refs.popper.style.display = 'none');\n tooltip.doDestroy();\n tooltip.setExpectedState(true);\n this.activateTooltip(tooltip);\n }\n },\n handleCellMouseLeave: function handleCellMouseLeave(event) {\n var tooltip = this.$refs.tooltip;\n if (tooltip) {\n tooltip.setExpectedState(false);\n tooltip.handleClosePopper();\n }\n var cell = getCell(event);\n if (!cell) return;\n\n var oldHoverState = this.table.hoverState || {};\n this.table.$emit('cell-mouse-leave', oldHoverState.row, oldHoverState.column, oldHoverState.cell, event);\n },\n\n\n handleMouseEnter: debounce_default()(30, function (index) {\n this.store.commit('setHoverRow', index);\n }),\n\n handleMouseLeave: debounce_default()(30, function () {\n this.store.commit('setHoverRow', null);\n }),\n\n handleContextMenu: function handleContextMenu(event, row) {\n this.handleEvent(event, row, 'contextmenu');\n },\n handleDoubleClick: function handleDoubleClick(event, row) {\n this.handleEvent(event, row, 'dblclick');\n },\n handleClick: function handleClick(event, row) {\n this.store.commit('setCurrentRow', row);\n this.handleEvent(event, row, 'click');\n },\n handleEvent: function handleEvent(event, row, name) {\n var table = this.table;\n var cell = getCell(event);\n var column = void 0;\n if (cell) {\n column = getColumnByCell(table, cell);\n if (column) {\n table.$emit('cell-' + name, row, column, cell, event);\n }\n }\n table.$emit('row-' + name, row, column, event);\n },\n rowRender: function rowRender(row, $index, treeRowData) {\n var _this4 = this;\n\n var h = this.$createElement;\n var treeIndent = this.treeIndent,\n columns = this.columns,\n firstDefaultColumnIndex = this.firstDefaultColumnIndex;\n\n var rowClasses = this.getRowClass(row, $index);\n var display = true;\n if (treeRowData) {\n rowClasses.push('el-table__row--level-' + treeRowData.level);\n display = treeRowData.display;\n }\n // 指令 v-show 会覆盖 row-style 中 display\n // 使用 :style 代替 v-show https://github.com/ElemeFE/element/issues/16995\n var displayStyle = display ? null : {\n display: 'none'\n };\n return h(table_row, {\n style: [displayStyle, this.getRowStyle(row, $index)],\n 'class': rowClasses,\n key: this.getKeyOfRow(row, $index),\n nativeOn: {\n 'dblclick': function dblclick($event) {\n return _this4.handleDoubleClick($event, row);\n },\n 'click': function click($event) {\n return _this4.handleClick($event, row);\n },\n 'contextmenu': function contextmenu($event) {\n return _this4.handleContextMenu($event, row);\n },\n 'mouseenter': function mouseenter(_) {\n return _this4.handleMouseEnter($index);\n },\n 'mouseleave': this.handleMouseLeave\n },\n attrs: {\n columns: columns,\n row: row,\n index: $index,\n store: this.store,\n context: this.context || this.table.$vnode.context,\n firstDefaultColumnIndex: firstDefaultColumnIndex,\n treeRowData: treeRowData,\n treeIndent: treeIndent,\n columnsHidden: this.columnsHidden,\n getSpan: this.getSpan,\n getColspanRealWidth: this.getColspanRealWidth,\n getCellStyle: this.getCellStyle,\n getCellClass: this.getCellClass,\n handleCellMouseEnter: this.handleCellMouseEnter,\n handleCellMouseLeave: this.handleCellMouseLeave,\n isSelected: this.store.isSelected(row),\n isExpanded: this.store.states.expandRows.indexOf(row) > -1,\n fixed: this.fixed\n }\n });\n },\n wrappedRowRender: function wrappedRowRender(row, $index) {\n var _this5 = this;\n\n var h = this.$createElement;\n\n var store = this.store;\n var isRowExpanded = store.isRowExpanded,\n assertRowKey = store.assertRowKey;\n var _store$states = store.states,\n treeData = _store$states.treeData,\n lazyTreeNodeMap = _store$states.lazyTreeNodeMap,\n childrenColumnName = _store$states.childrenColumnName,\n rowKey = _store$states.rowKey;\n\n if (this.hasExpandColumn && isRowExpanded(row)) {\n var renderExpanded = this.table.renderExpanded;\n var tr = this.rowRender(row, $index);\n if (!renderExpanded) {\n console.error('[Element Error]renderExpanded is required.');\n return tr;\n }\n // 使用二维数组,避免修改 $index\n return [[tr, h(\n 'tr',\n { key: 'expanded-row__' + tr.key },\n [h(\n 'td',\n {\n attrs: { colspan: this.columnsCount },\n 'class': 'el-table__cell el-table__expanded-cell' },\n [renderExpanded(this.$createElement, { row: row, $index: $index, store: this.store })]\n )]\n )]];\n } else if (Object.keys(treeData).length) {\n assertRowKey();\n // TreeTable 时,rowKey 必须由用户设定,不使用 getKeyOfRow 计算\n // 在调用 rowRender 函数时,仍然会计算 rowKey,不太好的操作\n var key = getRowIdentity(row, rowKey);\n var cur = treeData[key];\n var treeRowData = null;\n if (cur) {\n treeRowData = {\n expanded: cur.expanded,\n level: cur.level,\n display: true\n };\n if (typeof cur.lazy === 'boolean') {\n if (typeof cur.loaded === 'boolean' && cur.loaded) {\n treeRowData.noLazyChildren = !(cur.children && cur.children.length);\n }\n treeRowData.loading = cur.loading;\n }\n }\n var tmp = [this.rowRender(row, $index, treeRowData)];\n // 渲染嵌套数据\n if (cur) {\n // currentRow 记录的是 index,所以还需主动增加 TreeTable 的 index\n var i = 0;\n var traverse = function traverse(children, parent) {\n if (!(children && children.length && parent)) return;\n children.forEach(function (node) {\n // 父节点的 display 状态影响子节点的显示状态\n var innerTreeRowData = {\n display: parent.display && parent.expanded,\n level: parent.level + 1\n };\n var childKey = getRowIdentity(node, rowKey);\n if (childKey === undefined || childKey === null) {\n throw new Error('for nested data item, row-key is required.');\n }\n cur = table_body_extends({}, treeData[childKey]);\n // 对于当前节点,分成有无子节点两种情况。\n // 如果包含子节点的,设置 expanded 属性。\n // 对于它子节点的 display 属性由它本身的 expanded 与 display 共同决定。\n if (cur) {\n innerTreeRowData.expanded = cur.expanded;\n // 懒加载的某些节点,level 未知\n cur.level = cur.level || innerTreeRowData.level;\n cur.display = !!(cur.expanded && innerTreeRowData.display);\n if (typeof cur.lazy === 'boolean') {\n if (typeof cur.loaded === 'boolean' && cur.loaded) {\n innerTreeRowData.noLazyChildren = !(cur.children && cur.children.length);\n }\n innerTreeRowData.loading = cur.loading;\n }\n }\n i++;\n tmp.push(_this5.rowRender(node, $index + i, innerTreeRowData));\n if (cur) {\n var _nodes = lazyTreeNodeMap[childKey] || node[childrenColumnName];\n traverse(_nodes, cur);\n }\n });\n };\n // 对于 root 节点,display 一定为 true\n cur.display = true;\n var nodes = lazyTreeNodeMap[key] || row[childrenColumnName];\n traverse(nodes, cur);\n }\n return tmp;\n } else {\n return this.rowRender(row, $index);\n }\n }\n }\n});\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/table/src/filter-panel.vue?vue&type=template&id=7f2c919f&\nvar filter_panelvue_type_template_id_7f2c919f_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"transition\", { attrs: { name: \"el-zoom-in-top\" } }, [\n _vm.multiple\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleOutsideClick,\n expression: \"handleOutsideClick\"\n },\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showPopper,\n expression: \"showPopper\"\n }\n ],\n staticClass: \"el-table-filter\"\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-table-filter__content\" },\n [\n _c(\n \"el-scrollbar\",\n { attrs: { \"wrap-class\": \"el-table-filter__wrap\" } },\n [\n _c(\n \"el-checkbox-group\",\n {\n staticClass: \"el-table-filter__checkbox-group\",\n model: {\n value: _vm.filteredValue,\n callback: function($$v) {\n _vm.filteredValue = $$v\n },\n expression: \"filteredValue\"\n }\n },\n _vm._l(_vm.filters, function(filter) {\n return _c(\n \"el-checkbox\",\n { key: filter.value, attrs: { label: filter.value } },\n [_vm._v(_vm._s(filter.text))]\n )\n }),\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"el-table-filter__bottom\" }, [\n _c(\n \"button\",\n {\n class: { \"is-disabled\": _vm.filteredValue.length === 0 },\n attrs: { disabled: _vm.filteredValue.length === 0 },\n on: { click: _vm.handleConfirm }\n },\n [_vm._v(_vm._s(_vm.t(\"el.table.confirmFilter\")))]\n ),\n _c(\"button\", { on: { click: _vm.handleReset } }, [\n _vm._v(_vm._s(_vm.t(\"el.table.resetFilter\")))\n ])\n ])\n ]\n )\n : _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleOutsideClick,\n expression: \"handleOutsideClick\"\n },\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showPopper,\n expression: \"showPopper\"\n }\n ],\n staticClass: \"el-table-filter\"\n },\n [\n _c(\n \"ul\",\n { staticClass: \"el-table-filter__list\" },\n [\n _c(\n \"li\",\n {\n staticClass: \"el-table-filter__list-item\",\n class: {\n \"is-active\":\n _vm.filterValue === undefined ||\n _vm.filterValue === null\n },\n on: {\n click: function($event) {\n _vm.handleSelect(null)\n }\n }\n },\n [_vm._v(_vm._s(_vm.t(\"el.table.clearFilter\")))]\n ),\n _vm._l(_vm.filters, function(filter) {\n return _c(\n \"li\",\n {\n key: filter.value,\n staticClass: \"el-table-filter__list-item\",\n class: { \"is-active\": _vm.isActive(filter) },\n attrs: { label: filter.value },\n on: {\n click: function($event) {\n _vm.handleSelect(filter.value)\n }\n }\n },\n [_vm._v(_vm._s(filter.text))]\n )\n })\n ],\n 2\n )\n ]\n )\n ])\n}\nvar filter_panelvue_type_template_id_7f2c919f_staticRenderFns = []\nfilter_panelvue_type_template_id_7f2c919f_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/table/src/filter-panel.vue?vue&type=template&id=7f2c919f&\n\n// CONCATENATED MODULE: ./packages/table/src/dropdown.js\n\nvar dropdowns = [];\n\n!external_vue_default.a.prototype.$isServer && document.addEventListener('click', function (event) {\n dropdowns.forEach(function (dropdown) {\n var target = event.target;\n if (!dropdown || !dropdown.$el) return;\n if (target === dropdown.$el || dropdown.$el.contains(target)) {\n return;\n }\n dropdown.handleOutsideClick && dropdown.handleOutsideClick(event);\n });\n});\n\n/* harmony default export */ var src_dropdown = ({\n open: function open(instance) {\n if (instance) {\n dropdowns.push(instance);\n }\n },\n close: function close(instance) {\n var index = dropdowns.indexOf(instance);\n if (index !== -1) {\n dropdowns.splice(instance, 1);\n }\n }\n});\n// EXTERNAL MODULE: external \"element-ui/lib/checkbox-group\"\nvar checkbox_group_ = __nested_webpack_require_8926__(32);\nvar checkbox_group_default = /*#__PURE__*/__nested_webpack_require_8926__.n(checkbox_group_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/table/src/filter-panel.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var filter_panelvue_type_script_lang_js_ = ({\n name: 'ElTableFilterPanel',\n\n mixins: [vue_popper_default.a, locale_default.a],\n\n directives: {\n Clickoutside: clickoutside_default.a\n },\n\n components: {\n ElCheckbox: checkbox_default.a,\n ElCheckboxGroup: checkbox_group_default.a,\n ElScrollbar: scrollbar_default.a\n },\n\n props: {\n placement: {\n type: String,\n default: 'bottom-end'\n }\n },\n\n methods: {\n isActive: function isActive(filter) {\n return filter.value === this.filterValue;\n },\n handleOutsideClick: function handleOutsideClick() {\n var _this = this;\n\n setTimeout(function () {\n _this.showPopper = false;\n }, 16);\n },\n handleConfirm: function handleConfirm() {\n this.confirmFilter(this.filteredValue);\n this.handleOutsideClick();\n },\n handleReset: function handleReset() {\n this.filteredValue = [];\n this.confirmFilter(this.filteredValue);\n this.handleOutsideClick();\n },\n handleSelect: function handleSelect(filterValue) {\n this.filterValue = filterValue;\n\n if (typeof filterValue !== 'undefined' && filterValue !== null) {\n this.confirmFilter(this.filteredValue);\n } else {\n this.confirmFilter([]);\n }\n\n this.handleOutsideClick();\n },\n confirmFilter: function confirmFilter(filteredValue) {\n this.table.store.commit('filterChange', {\n column: this.column,\n values: filteredValue\n });\n this.table.store.updateAllSelected();\n }\n },\n\n data: function data() {\n return {\n table: null,\n cell: null,\n column: null\n };\n },\n\n\n computed: {\n filters: function filters() {\n return this.column && this.column.filters;\n },\n\n\n filterValue: {\n get: function get() {\n return (this.column.filteredValue || [])[0];\n },\n set: function set(value) {\n if (this.filteredValue) {\n if (typeof value !== 'undefined' && value !== null) {\n this.filteredValue.splice(0, 1, value);\n } else {\n this.filteredValue.splice(0, 1);\n }\n }\n }\n },\n\n filteredValue: {\n get: function get() {\n if (this.column) {\n return this.column.filteredValue || [];\n }\n return [];\n },\n set: function set(value) {\n if (this.column) {\n this.column.filteredValue = value;\n }\n }\n },\n\n multiple: function multiple() {\n if (this.column) {\n return this.column.filterMultiple;\n }\n return true;\n }\n },\n\n mounted: function mounted() {\n var _this2 = this;\n\n this.popperElm = this.$el;\n this.referenceElm = this.cell;\n this.table.bodyWrapper.addEventListener('scroll', function () {\n _this2.updatePopper();\n });\n\n this.$watch('showPopper', function (value) {\n if (_this2.column) _this2.column.filterOpened = value;\n if (value) {\n src_dropdown.open(_this2);\n } else {\n src_dropdown.close(_this2);\n }\n });\n },\n\n watch: {\n showPopper: function showPopper(val) {\n if (val === true && parseInt(this.popperJS._popper.style.zIndex, 10) < popup_[\"PopupManager\"].zIndex) {\n this.popperJS._popper.style.zIndex = popup_[\"PopupManager\"].nextZIndex();\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/table/src/filter-panel.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_filter_panelvue_type_script_lang_js_ = (filter_panelvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/table/src/filter-panel.vue\n\n\n\n\n\n/* normalize component */\n\nvar filter_panel_component = normalizeComponent(\n src_filter_panelvue_type_script_lang_js_,\n filter_panelvue_type_template_id_7f2c919f_render,\n filter_panelvue_type_template_id_7f2c919f_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var filter_panel_api; }\nfilter_panel_component.options.__file = \"packages/table/src/filter-panel.vue\"\n/* harmony default export */ var filter_panel = (filter_panel_component.exports);\n// CONCATENATED MODULE: ./packages/table/src/table-header.js\nvar table_header_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\nvar getAllColumns = function getAllColumns(columns) {\n var result = [];\n columns.forEach(function (column) {\n if (column.children) {\n result.push(column);\n result.push.apply(result, getAllColumns(column.children));\n } else {\n result.push(column);\n }\n });\n return result;\n};\n\nvar convertToRows = function convertToRows(originColumns) {\n var maxLevel = 1;\n var traverse = function traverse(column, parent) {\n if (parent) {\n column.level = parent.level + 1;\n if (maxLevel < column.level) {\n maxLevel = column.level;\n }\n }\n if (column.children) {\n var colSpan = 0;\n column.children.forEach(function (subColumn) {\n traverse(subColumn, column);\n colSpan += subColumn.colSpan;\n });\n column.colSpan = colSpan;\n } else {\n column.colSpan = 1;\n }\n };\n\n originColumns.forEach(function (column) {\n column.level = 1;\n traverse(column);\n });\n\n var rows = [];\n for (var i = 0; i < maxLevel; i++) {\n rows.push([]);\n }\n\n var allColumns = getAllColumns(originColumns);\n\n allColumns.forEach(function (column) {\n if (!column.children) {\n column.rowSpan = maxLevel - column.level + 1;\n } else {\n column.rowSpan = 1;\n }\n rows[column.level - 1].push(column);\n });\n\n return rows;\n};\n\n/* harmony default export */ var table_header = ({\n name: 'ElTableHeader',\n\n mixins: [layout_observer],\n\n render: function render(h) {\n var _this = this;\n\n var originColumns = this.store.states.originColumns;\n var columnRows = convertToRows(originColumns, this.columns);\n // 是否拥有多级表头\n var isGroup = columnRows.length > 1;\n if (isGroup) this.$parent.isGroup = true;\n return h(\n 'table',\n {\n 'class': 'el-table__header',\n attrs: { cellspacing: '0',\n cellpadding: '0',\n border: '0' }\n },\n [h('colgroup', [this.columns.map(function (column) {\n return h('col', {\n attrs: { name: column.id },\n key: column.id });\n }), this.hasGutter ? h('col', {\n attrs: { name: 'gutter' }\n }) : '']), h(\n 'thead',\n { 'class': [{ 'is-group': isGroup, 'has-gutter': this.hasGutter }] },\n [this._l(columnRows, function (columns, rowIndex) {\n return h(\n 'tr',\n {\n style: _this.getHeaderRowStyle(rowIndex),\n 'class': _this.getHeaderRowClass(rowIndex)\n },\n [columns.map(function (column, cellIndex) {\n return h(\n 'th',\n {\n attrs: {\n colspan: column.colSpan,\n rowspan: column.rowSpan\n },\n on: {\n 'mousemove': function mousemove($event) {\n return _this.handleMouseMove($event, column);\n },\n 'mouseout': _this.handleMouseOut,\n 'mousedown': function mousedown($event) {\n return _this.handleMouseDown($event, column);\n },\n 'click': function click($event) {\n return _this.handleHeaderClick($event, column);\n },\n 'contextmenu': function contextmenu($event) {\n return _this.handleHeaderContextMenu($event, column);\n }\n },\n\n style: _this.getHeaderCellStyle(rowIndex, cellIndex, columns, column),\n 'class': _this.getHeaderCellClass(rowIndex, cellIndex, columns, column),\n key: column.id },\n [h(\n 'div',\n { 'class': ['cell', column.filteredValue && column.filteredValue.length > 0 ? 'highlight' : '', column.labelClassName] },\n [column.renderHeader ? column.renderHeader.call(_this._renderProxy, h, { column: column, $index: cellIndex, store: _this.store, _self: _this.$parent.$vnode.context }) : column.label, column.sortable ? h(\n 'span',\n {\n 'class': 'caret-wrapper',\n on: {\n 'click': function click($event) {\n return _this.handleSortClick($event, column);\n }\n }\n },\n [h('i', { 'class': 'sort-caret ascending',\n on: {\n 'click': function click($event) {\n return _this.handleSortClick($event, column, 'ascending');\n }\n }\n }), h('i', { 'class': 'sort-caret descending',\n on: {\n 'click': function click($event) {\n return _this.handleSortClick($event, column, 'descending');\n }\n }\n })]\n ) : '', column.filterable ? h(\n 'span',\n {\n 'class': 'el-table__column-filter-trigger',\n on: {\n 'click': function click($event) {\n return _this.handleFilterClick($event, column);\n }\n }\n },\n [h('i', { 'class': ['el-icon-arrow-down', column.filterOpened ? 'el-icon-arrow-up' : ''] })]\n ) : '']\n )]\n );\n }), _this.hasGutter ? h('th', { 'class': 'el-table__cell gutter' }) : '']\n );\n })]\n )]\n );\n },\n\n\n props: {\n fixed: String,\n store: {\n required: true\n },\n border: Boolean,\n defaultSort: {\n type: Object,\n default: function _default() {\n return {\n prop: '',\n order: ''\n };\n }\n }\n },\n\n components: {\n ElCheckbox: checkbox_default.a\n },\n\n computed: table_header_extends({\n table: function table() {\n return this.$parent;\n },\n hasGutter: function hasGutter() {\n return !this.fixed && this.tableLayout.gutterWidth;\n }\n }, mapStates({\n columns: 'columns',\n isAllSelected: 'isAllSelected',\n leftFixedLeafCount: 'fixedLeafColumnsLength',\n rightFixedLeafCount: 'rightFixedLeafColumnsLength',\n columnsCount: function columnsCount(states) {\n return states.columns.length;\n },\n leftFixedCount: function leftFixedCount(states) {\n return states.fixedColumns.length;\n },\n rightFixedCount: function rightFixedCount(states) {\n return states.rightFixedColumns.length;\n }\n })),\n\n created: function created() {\n this.filterPanels = {};\n },\n mounted: function mounted() {\n var _this2 = this;\n\n // nextTick 是有必要的 https://github.com/ElemeFE/element/pull/11311\n this.$nextTick(function () {\n var _defaultSort = _this2.defaultSort,\n prop = _defaultSort.prop,\n order = _defaultSort.order;\n\n var init = true;\n _this2.store.commit('sort', { prop: prop, order: order, init: init });\n });\n },\n beforeDestroy: function beforeDestroy() {\n var panels = this.filterPanels;\n for (var prop in panels) {\n if (panels.hasOwnProperty(prop) && panels[prop]) {\n panels[prop].$destroy(true);\n }\n }\n },\n\n\n methods: {\n isCellHidden: function isCellHidden(index, columns) {\n var start = 0;\n for (var i = 0; i < index; i++) {\n start += columns[i].colSpan;\n }\n var after = start + columns[index].colSpan - 1;\n if (this.fixed === true || this.fixed === 'left') {\n return after >= this.leftFixedLeafCount;\n } else if (this.fixed === 'right') {\n return start < this.columnsCount - this.rightFixedLeafCount;\n } else {\n return after < this.leftFixedLeafCount || start >= this.columnsCount - this.rightFixedLeafCount;\n }\n },\n getHeaderRowStyle: function getHeaderRowStyle(rowIndex) {\n var headerRowStyle = this.table.headerRowStyle;\n if (typeof headerRowStyle === 'function') {\n return headerRowStyle.call(null, { rowIndex: rowIndex });\n }\n return headerRowStyle;\n },\n getHeaderRowClass: function getHeaderRowClass(rowIndex) {\n var classes = [];\n\n var headerRowClassName = this.table.headerRowClassName;\n if (typeof headerRowClassName === 'string') {\n classes.push(headerRowClassName);\n } else if (typeof headerRowClassName === 'function') {\n classes.push(headerRowClassName.call(null, { rowIndex: rowIndex }));\n }\n\n return classes.join(' ');\n },\n getHeaderCellStyle: function getHeaderCellStyle(rowIndex, columnIndex, row, column) {\n var headerCellStyle = this.table.headerCellStyle;\n if (typeof headerCellStyle === 'function') {\n return headerCellStyle.call(null, {\n rowIndex: rowIndex,\n columnIndex: columnIndex,\n row: row,\n column: column\n });\n }\n return headerCellStyle;\n },\n getHeaderCellClass: function getHeaderCellClass(rowIndex, columnIndex, row, column) {\n var classes = [column.id, column.order, column.headerAlign, column.className, column.labelClassName];\n\n if (rowIndex === 0 && this.isCellHidden(columnIndex, row)) {\n classes.push('is-hidden');\n }\n\n if (!column.children) {\n classes.push('is-leaf');\n }\n\n if (column.sortable) {\n classes.push('is-sortable');\n }\n\n var headerCellClassName = this.table.headerCellClassName;\n if (typeof headerCellClassName === 'string') {\n classes.push(headerCellClassName);\n } else if (typeof headerCellClassName === 'function') {\n classes.push(headerCellClassName.call(null, {\n rowIndex: rowIndex,\n columnIndex: columnIndex,\n row: row,\n column: column\n }));\n }\n\n classes.push('el-table__cell');\n\n return classes.join(' ');\n },\n toggleAllSelection: function toggleAllSelection() {\n this.store.commit('toggleAllSelection');\n },\n handleFilterClick: function handleFilterClick(event, column) {\n event.stopPropagation();\n var target = event.target;\n var cell = target.tagName === 'TH' ? target : target.parentNode;\n if (Object(dom_[\"hasClass\"])(cell, 'noclick')) return;\n cell = cell.querySelector('.el-table__column-filter-trigger') || cell;\n var table = this.$parent;\n\n var filterPanel = this.filterPanels[column.id];\n\n if (filterPanel && column.filterOpened) {\n filterPanel.showPopper = false;\n return;\n }\n\n if (!filterPanel) {\n filterPanel = new external_vue_default.a(filter_panel);\n this.filterPanels[column.id] = filterPanel;\n if (column.filterPlacement) {\n filterPanel.placement = column.filterPlacement;\n }\n filterPanel.table = table;\n filterPanel.cell = cell;\n filterPanel.column = column;\n !this.$isServer && filterPanel.$mount(document.createElement('div'));\n }\n\n setTimeout(function () {\n filterPanel.showPopper = true;\n }, 16);\n },\n handleHeaderClick: function handleHeaderClick(event, column) {\n if (!column.filters && column.sortable) {\n this.handleSortClick(event, column);\n } else if (column.filterable && !column.sortable) {\n this.handleFilterClick(event, column);\n }\n\n this.$parent.$emit('header-click', column, event);\n },\n handleHeaderContextMenu: function handleHeaderContextMenu(event, column) {\n this.$parent.$emit('header-contextmenu', column, event);\n },\n handleMouseDown: function handleMouseDown(event, column) {\n var _this3 = this;\n\n if (this.$isServer) return;\n if (column.children && column.children.length > 0) return;\n /* istanbul ignore if */\n if (this.draggingColumn && this.border) {\n this.dragging = true;\n\n this.$parent.resizeProxyVisible = true;\n\n var table = this.$parent;\n var tableEl = table.$el;\n var tableLeft = tableEl.getBoundingClientRect().left;\n var columnEl = this.$el.querySelector('th.' + column.id);\n var columnRect = columnEl.getBoundingClientRect();\n var minLeft = columnRect.left - tableLeft + 30;\n\n Object(dom_[\"addClass\"])(columnEl, 'noclick');\n\n this.dragState = {\n startMouseLeft: event.clientX,\n startLeft: columnRect.right - tableLeft,\n startColumnLeft: columnRect.left - tableLeft,\n tableLeft: tableLeft\n };\n\n var resizeProxy = table.$refs.resizeProxy;\n resizeProxy.style.left = this.dragState.startLeft + 'px';\n\n document.onselectstart = function () {\n return false;\n };\n document.ondragstart = function () {\n return false;\n };\n\n var handleMouseMove = function handleMouseMove(event) {\n var deltaLeft = event.clientX - _this3.dragState.startMouseLeft;\n var proxyLeft = _this3.dragState.startLeft + deltaLeft;\n\n resizeProxy.style.left = Math.max(minLeft, proxyLeft) + 'px';\n };\n\n var handleMouseUp = function handleMouseUp() {\n if (_this3.dragging) {\n var _dragState = _this3.dragState,\n startColumnLeft = _dragState.startColumnLeft,\n startLeft = _dragState.startLeft;\n\n var finalLeft = parseInt(resizeProxy.style.left, 10);\n var columnWidth = finalLeft - startColumnLeft;\n column.width = column.realWidth = columnWidth;\n table.$emit('header-dragend', column.width, startLeft - startColumnLeft, column, event);\n\n _this3.store.scheduleLayout();\n\n document.body.style.cursor = '';\n _this3.dragging = false;\n _this3.draggingColumn = null;\n _this3.dragState = {};\n\n table.resizeProxyVisible = false;\n }\n\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n document.onselectstart = null;\n document.ondragstart = null;\n\n setTimeout(function () {\n Object(dom_[\"removeClass\"])(columnEl, 'noclick');\n }, 0);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n }\n },\n handleMouseMove: function handleMouseMove(event, column) {\n if (column.children && column.children.length > 0) return;\n var target = event.target;\n while (target && target.tagName !== 'TH') {\n target = target.parentNode;\n }\n\n if (!column || !column.resizable) return;\n\n if (!this.dragging && this.border) {\n var rect = target.getBoundingClientRect();\n\n var bodyStyle = document.body.style;\n if (rect.width > 12 && rect.right - event.pageX < 8) {\n bodyStyle.cursor = 'col-resize';\n if (Object(dom_[\"hasClass\"])(target, 'is-sortable')) {\n target.style.cursor = 'col-resize';\n }\n this.draggingColumn = column;\n } else if (!this.dragging) {\n bodyStyle.cursor = '';\n if (Object(dom_[\"hasClass\"])(target, 'is-sortable')) {\n target.style.cursor = 'pointer';\n }\n this.draggingColumn = null;\n }\n }\n },\n handleMouseOut: function handleMouseOut() {\n if (this.$isServer) return;\n document.body.style.cursor = '';\n },\n toggleOrder: function toggleOrder(_ref) {\n var order = _ref.order,\n sortOrders = _ref.sortOrders;\n\n if (order === '') return sortOrders[0];\n var index = sortOrders.indexOf(order || null);\n return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1];\n },\n handleSortClick: function handleSortClick(event, column, givenOrder) {\n event.stopPropagation();\n var order = column.order === givenOrder ? null : givenOrder || this.toggleOrder(column);\n\n var target = event.target;\n while (target && target.tagName !== 'TH') {\n target = target.parentNode;\n }\n\n if (target && target.tagName === 'TH') {\n if (Object(dom_[\"hasClass\"])(target, 'noclick')) {\n Object(dom_[\"removeClass\"])(target, 'noclick');\n return;\n }\n }\n\n if (!column.sortable) return;\n\n var states = this.store.states;\n var sortProp = states.sortProp;\n var sortOrder = void 0;\n var sortingColumn = states.sortingColumn;\n\n if (sortingColumn !== column || sortingColumn === column && sortingColumn.order === null) {\n if (sortingColumn) {\n sortingColumn.order = null;\n }\n states.sortingColumn = column;\n sortProp = column.property;\n }\n\n if (!order) {\n sortOrder = column.order = null;\n } else {\n sortOrder = column.order = order;\n }\n\n states.sortProp = sortProp;\n states.sortOrder = sortOrder;\n\n this.store.commit('changeSortCondition');\n }\n },\n\n data: function data() {\n return {\n draggingColumn: null,\n dragging: false,\n dragState: {}\n };\n }\n});\n// CONCATENATED MODULE: ./packages/table/src/table-footer.js\nvar table_footer_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n/* harmony default export */ var table_footer = ({\n name: 'ElTableFooter',\n\n mixins: [layout_observer],\n\n render: function render(h) {\n var _this = this;\n\n var sums = [];\n if (this.summaryMethod) {\n sums = this.summaryMethod({ columns: this.columns, data: this.store.states.data });\n } else {\n this.columns.forEach(function (column, index) {\n if (index === 0) {\n sums[index] = _this.sumText;\n return;\n }\n var values = _this.store.states.data.map(function (item) {\n return Number(item[column.property]);\n });\n var precisions = [];\n var notNumber = true;\n values.forEach(function (value) {\n if (!isNaN(value)) {\n notNumber = false;\n var decimal = ('' + value).split('.')[1];\n precisions.push(decimal ? decimal.length : 0);\n }\n });\n var precision = Math.max.apply(null, precisions);\n if (!notNumber) {\n sums[index] = values.reduce(function (prev, curr) {\n var value = Number(curr);\n if (!isNaN(value)) {\n return parseFloat((prev + curr).toFixed(Math.min(precision, 20)));\n } else {\n return prev;\n }\n }, 0);\n } else {\n sums[index] = '';\n }\n });\n }\n\n return h(\n 'table',\n {\n 'class': 'el-table__footer',\n attrs: { cellspacing: '0',\n cellpadding: '0',\n border: '0' }\n },\n [h('colgroup', [this.columns.map(function (column) {\n return h('col', {\n attrs: { name: column.id },\n key: column.id });\n }), this.hasGutter ? h('col', {\n attrs: { name: 'gutter' }\n }) : '']), h(\n 'tbody',\n { 'class': [{ 'has-gutter': this.hasGutter }] },\n [h('tr', [this.columns.map(function (column, cellIndex) {\n return h(\n 'td',\n {\n key: cellIndex,\n attrs: { colspan: column.colSpan,\n rowspan: column.rowSpan\n },\n 'class': [].concat(_this.getRowClasses(column, cellIndex), ['el-table__cell']) },\n [h(\n 'div',\n { 'class': ['cell', column.labelClassName] },\n [sums[cellIndex]]\n )]\n );\n }), this.hasGutter ? h('th', { 'class': 'el-table__cell gutter' }) : ''])]\n )]\n );\n },\n\n\n props: {\n fixed: String,\n store: {\n required: true\n },\n summaryMethod: Function,\n sumText: String,\n border: Boolean,\n defaultSort: {\n type: Object,\n default: function _default() {\n return {\n prop: '',\n order: ''\n };\n }\n }\n },\n\n computed: table_footer_extends({\n table: function table() {\n return this.$parent;\n },\n hasGutter: function hasGutter() {\n return !this.fixed && this.tableLayout.gutterWidth;\n }\n }, mapStates({\n columns: 'columns',\n isAllSelected: 'isAllSelected',\n leftFixedLeafCount: 'fixedLeafColumnsLength',\n rightFixedLeafCount: 'rightFixedLeafColumnsLength',\n columnsCount: function columnsCount(states) {\n return states.columns.length;\n },\n leftFixedCount: function leftFixedCount(states) {\n return states.fixedColumns.length;\n },\n rightFixedCount: function rightFixedCount(states) {\n return states.rightFixedColumns.length;\n }\n })),\n\n methods: {\n isCellHidden: function isCellHidden(index, columns, column) {\n if (this.fixed === true || this.fixed === 'left') {\n return index >= this.leftFixedLeafCount;\n } else if (this.fixed === 'right') {\n var before = 0;\n for (var i = 0; i < index; i++) {\n before += columns[i].colSpan;\n }\n return before < this.columnsCount - this.rightFixedLeafCount;\n } else if (!this.fixed && column.fixed) {\n // hide cell when footer instance is not fixed and column is fixed\n return true;\n } else {\n return index < this.leftFixedCount || index >= this.columnsCount - this.rightFixedCount;\n }\n },\n getRowClasses: function getRowClasses(column, cellIndex) {\n var classes = [column.id, column.align, column.labelClassName];\n if (column.className) {\n classes.push(column.className);\n }\n if (this.isCellHidden(cellIndex, this.columns, column)) {\n classes.push('is-hidden');\n }\n if (!column.children) {\n classes.push('is-leaf');\n }\n return classes;\n }\n }\n});\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/table/src/table.vue?vue&type=script&lang=js&\nvar tablevue_type_script_lang_js_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar tableIdSeed = 1;\n\n/* harmony default export */ var tablevue_type_script_lang_js_ = ({\n name: 'ElTable',\n\n mixins: [locale_default.a, migrating_default.a],\n\n directives: {\n Mousewheel: directives_mousewheel\n },\n\n props: {\n data: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n\n size: String,\n\n width: [String, Number],\n\n height: [String, Number],\n\n maxHeight: [String, Number],\n\n fit: {\n type: Boolean,\n default: true\n },\n\n stripe: Boolean,\n\n border: Boolean,\n\n rowKey: [String, Function],\n\n context: {},\n\n showHeader: {\n type: Boolean,\n default: true\n },\n\n showSummary: Boolean,\n\n sumText: String,\n\n summaryMethod: Function,\n\n rowClassName: [String, Function],\n\n rowStyle: [Object, Function],\n\n cellClassName: [String, Function],\n\n cellStyle: [Object, Function],\n\n headerRowClassName: [String, Function],\n\n headerRowStyle: [Object, Function],\n\n headerCellClassName: [String, Function],\n\n headerCellStyle: [Object, Function],\n\n highlightCurrentRow: Boolean,\n\n highlightSelectionRow: {\n type: Boolean,\n default: false\n },\n\n currentRowKey: [String, Number],\n\n emptyText: String,\n\n expandRowKeys: Array,\n\n defaultExpandAll: Boolean,\n\n defaultSort: Object,\n\n tooltipEffect: String,\n\n spanMethod: Function,\n\n selectOnIndeterminate: {\n type: Boolean,\n default: true\n },\n\n indent: {\n type: Number,\n default: 16\n },\n\n treeProps: {\n type: Object,\n default: function _default() {\n return {\n hasChildren: 'hasChildren',\n children: 'children'\n };\n }\n },\n\n lazy: Boolean,\n\n load: Function\n },\n\n components: {\n TableHeader: table_header,\n TableFooter: table_footer,\n TableBody: table_body,\n ElCheckbox: checkbox_default.a\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n events: {\n expand: 'expand is renamed to expand-change'\n }\n };\n },\n setCurrentRow: function setCurrentRow(row) {\n this.store.commit('setCurrentRow', row);\n },\n toggleRowSelection: function toggleRowSelection(row, selected) {\n this.store.toggleRowSelection(row, selected, false);\n this.store.updateAllSelected();\n },\n toggleRowExpansion: function toggleRowExpansion(row, expanded) {\n this.store.toggleRowExpansionAdapter(row, expanded);\n },\n clearSelection: function clearSelection() {\n this.store.clearSelection();\n },\n clearFilter: function clearFilter(columnKeys) {\n this.store.clearFilter(columnKeys);\n },\n clearSort: function clearSort() {\n this.store.clearSort();\n },\n handleMouseLeave: function handleMouseLeave() {\n this.store.commit('setHoverRow', null);\n if (this.hoverState) this.hoverState = null;\n },\n updateScrollY: function updateScrollY() {\n var changed = this.layout.updateScrollY();\n if (changed) {\n this.layout.notifyObservers('scrollable');\n this.layout.updateColumnsWidth();\n }\n },\n handleFixedMousewheel: function handleFixedMousewheel(event, data) {\n var bodyWrapper = this.bodyWrapper;\n if (Math.abs(data.spinY) > 0) {\n var currentScrollTop = bodyWrapper.scrollTop;\n if (data.pixelY < 0 && currentScrollTop !== 0) {\n event.preventDefault();\n }\n if (data.pixelY > 0 && bodyWrapper.scrollHeight - bodyWrapper.clientHeight > currentScrollTop) {\n event.preventDefault();\n }\n bodyWrapper.scrollTop += Math.ceil(data.pixelY / 5);\n } else {\n bodyWrapper.scrollLeft += Math.ceil(data.pixelX / 5);\n }\n },\n handleHeaderFooterMousewheel: function handleHeaderFooterMousewheel(event, data) {\n var pixelX = data.pixelX,\n pixelY = data.pixelY;\n\n if (Math.abs(pixelX) >= Math.abs(pixelY)) {\n this.bodyWrapper.scrollLeft += data.pixelX / 5;\n }\n },\n\n\n // TODO 使用 CSS transform\n syncPostion: function syncPostion() {\n var _bodyWrapper = this.bodyWrapper,\n scrollLeft = _bodyWrapper.scrollLeft,\n scrollTop = _bodyWrapper.scrollTop,\n offsetWidth = _bodyWrapper.offsetWidth,\n scrollWidth = _bodyWrapper.scrollWidth;\n var _$refs = this.$refs,\n headerWrapper = _$refs.headerWrapper,\n footerWrapper = _$refs.footerWrapper,\n fixedBodyWrapper = _$refs.fixedBodyWrapper,\n rightFixedBodyWrapper = _$refs.rightFixedBodyWrapper;\n\n if (headerWrapper) headerWrapper.scrollLeft = scrollLeft;\n if (footerWrapper) footerWrapper.scrollLeft = scrollLeft;\n if (fixedBodyWrapper) fixedBodyWrapper.scrollTop = scrollTop;\n if (rightFixedBodyWrapper) rightFixedBodyWrapper.scrollTop = scrollTop;\n var maxScrollLeftPosition = scrollWidth - offsetWidth - 1;\n if (scrollLeft >= maxScrollLeftPosition) {\n this.scrollPosition = 'right';\n } else if (scrollLeft === 0) {\n this.scrollPosition = 'left';\n } else {\n this.scrollPosition = 'middle';\n }\n },\n\n\n throttleSyncPostion: Object(external_throttle_debounce_[\"throttle\"])(16, function () {\n this.syncPostion();\n }),\n\n onScroll: function onScroll(evt) {\n var raf = window.requestAnimationFrame;\n if (!raf) {\n this.throttleSyncPostion();\n } else {\n raf(this.syncPostion);\n }\n },\n bindEvents: function bindEvents() {\n this.bodyWrapper.addEventListener('scroll', this.onScroll, { passive: true });\n if (this.fit) {\n Object(resize_event_[\"addResizeListener\"])(this.$el, this.resizeListener);\n }\n },\n unbindEvents: function unbindEvents() {\n this.bodyWrapper.removeEventListener('scroll', this.onScroll, { passive: true });\n if (this.fit) {\n Object(resize_event_[\"removeResizeListener\"])(this.$el, this.resizeListener);\n }\n },\n resizeListener: function resizeListener() {\n if (!this.$ready) return;\n var shouldUpdateLayout = false;\n var el = this.$el;\n var _resizeState = this.resizeState,\n oldWidth = _resizeState.width,\n oldHeight = _resizeState.height;\n\n\n var width = el.offsetWidth;\n if (oldWidth !== width) {\n shouldUpdateLayout = true;\n }\n\n var height = el.offsetHeight;\n if ((this.height || this.shouldUpdateHeight) && oldHeight !== height) {\n shouldUpdateLayout = true;\n }\n\n if (shouldUpdateLayout) {\n this.resizeState.width = width;\n this.resizeState.height = height;\n this.doLayout();\n }\n },\n doLayout: function doLayout() {\n if (this.shouldUpdateHeight) {\n this.layout.updateElsHeight();\n }\n this.layout.updateColumnsWidth();\n },\n sort: function sort(prop, order) {\n this.store.commit('sort', { prop: prop, order: order });\n },\n toggleAllSelection: function toggleAllSelection() {\n this.store.commit('toggleAllSelection');\n }\n },\n\n computed: tablevue_type_script_lang_js_extends({\n tableSize: function tableSize() {\n return this.size || (this.$ELEMENT || {}).size;\n },\n bodyWrapper: function bodyWrapper() {\n return this.$refs.bodyWrapper;\n },\n shouldUpdateHeight: function shouldUpdateHeight() {\n return this.height || this.maxHeight || this.fixedColumns.length > 0 || this.rightFixedColumns.length > 0;\n },\n bodyWidth: function bodyWidth() {\n var _layout = this.layout,\n bodyWidth = _layout.bodyWidth,\n scrollY = _layout.scrollY,\n gutterWidth = _layout.gutterWidth;\n\n return bodyWidth ? bodyWidth - (scrollY ? gutterWidth : 0) + 'px' : '';\n },\n bodyHeight: function bodyHeight() {\n var _layout2 = this.layout,\n _layout2$headerHeight = _layout2.headerHeight,\n headerHeight = _layout2$headerHeight === undefined ? 0 : _layout2$headerHeight,\n bodyHeight = _layout2.bodyHeight,\n _layout2$footerHeight = _layout2.footerHeight,\n footerHeight = _layout2$footerHeight === undefined ? 0 : _layout2$footerHeight;\n\n if (this.height) {\n return {\n height: bodyHeight ? bodyHeight + 'px' : ''\n };\n } else if (this.maxHeight) {\n var maxHeight = parseHeight(this.maxHeight);\n if (typeof maxHeight === 'number') {\n return {\n 'max-height': maxHeight - footerHeight - (this.showHeader ? headerHeight : 0) + 'px'\n };\n }\n }\n return {};\n },\n fixedBodyHeight: function fixedBodyHeight() {\n if (this.height) {\n return {\n height: this.layout.fixedBodyHeight ? this.layout.fixedBodyHeight + 'px' : ''\n };\n } else if (this.maxHeight) {\n var maxHeight = parseHeight(this.maxHeight);\n if (typeof maxHeight === 'number') {\n maxHeight = this.layout.scrollX ? maxHeight - this.layout.gutterWidth : maxHeight;\n if (this.showHeader) {\n maxHeight -= this.layout.headerHeight;\n }\n maxHeight -= this.layout.footerHeight;\n return {\n 'max-height': maxHeight + 'px'\n };\n }\n }\n return {};\n },\n fixedHeight: function fixedHeight() {\n if (this.maxHeight) {\n if (this.showSummary) {\n return {\n bottom: 0\n };\n }\n return {\n bottom: this.layout.scrollX && this.data.length ? this.layout.gutterWidth + 'px' : ''\n };\n } else {\n if (this.showSummary) {\n return {\n height: this.layout.tableHeight ? this.layout.tableHeight + 'px' : ''\n };\n }\n return {\n height: this.layout.viewportHeight ? this.layout.viewportHeight + 'px' : ''\n };\n }\n },\n emptyBlockStyle: function emptyBlockStyle() {\n if (this.data && this.data.length) return null;\n var height = '100%';\n if (this.layout.appendHeight) {\n height = 'calc(100% - ' + this.layout.appendHeight + 'px)';\n }\n return {\n width: this.bodyWidth,\n height: height\n };\n }\n }, mapStates({\n selection: 'selection',\n columns: 'columns',\n tableData: 'data',\n fixedColumns: 'fixedColumns',\n rightFixedColumns: 'rightFixedColumns'\n })),\n\n watch: {\n height: {\n immediate: true,\n handler: function handler(value) {\n this.layout.setHeight(value);\n }\n },\n\n maxHeight: {\n immediate: true,\n handler: function handler(value) {\n this.layout.setMaxHeight(value);\n }\n },\n\n currentRowKey: {\n immediate: true,\n handler: function handler(value) {\n if (!this.rowKey) return;\n this.store.setCurrentRowKey(value);\n }\n },\n\n data: {\n immediate: true,\n handler: function handler(value) {\n this.store.commit('setData', value);\n }\n },\n\n expandRowKeys: {\n immediate: true,\n handler: function handler(newVal) {\n if (newVal) {\n this.store.setExpandRowKeysAdapter(newVal);\n }\n }\n }\n },\n\n created: function created() {\n var _this = this;\n\n this.tableId = 'el-table_' + tableIdSeed++;\n this.debouncedUpdateLayout = Object(external_throttle_debounce_[\"debounce\"])(50, function () {\n return _this.doLayout();\n });\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.bindEvents();\n this.store.updateColumns();\n this.doLayout();\n\n this.resizeState = {\n width: this.$el.offsetWidth,\n height: this.$el.offsetHeight\n };\n\n // init filters\n this.store.states.columns.forEach(function (column) {\n if (column.filteredValue && column.filteredValue.length) {\n _this2.store.commit('filterChange', {\n column: column,\n values: column.filteredValue,\n silent: true\n });\n }\n });\n\n this.$ready = true;\n },\n destroyed: function destroyed() {\n this.unbindEvents();\n },\n data: function data() {\n var _treeProps = this.treeProps,\n _treeProps$hasChildre = _treeProps.hasChildren,\n hasChildren = _treeProps$hasChildre === undefined ? 'hasChildren' : _treeProps$hasChildre,\n _treeProps$children = _treeProps.children,\n children = _treeProps$children === undefined ? 'children' : _treeProps$children;\n\n this.store = createStore(this, {\n rowKey: this.rowKey,\n defaultExpandAll: this.defaultExpandAll,\n selectOnIndeterminate: this.selectOnIndeterminate,\n // TreeTable 的相关配置\n indent: this.indent,\n lazy: this.lazy,\n lazyColumnIdentifier: hasChildren,\n childrenColumnName: children\n });\n var layout = new table_layout({\n store: this.store,\n table: this,\n fit: this.fit,\n showHeader: this.showHeader\n });\n return {\n layout: layout,\n isHidden: false,\n renderExpanded: null,\n resizeProxyVisible: false,\n resizeState: {\n width: null,\n height: null\n },\n // 是否拥有多级表头\n isGroup: false,\n scrollPosition: 'left'\n };\n }\n});\n// CONCATENATED MODULE: ./packages/table/src/table.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_tablevue_type_script_lang_js_ = (tablevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/table/src/table.vue\n\n\n\n\n\n/* normalize component */\n\nvar table_component = normalizeComponent(\n src_tablevue_type_script_lang_js_,\n tablevue_type_template_id_493fe34e_render,\n tablevue_type_template_id_493fe34e_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var table_api; }\ntable_component.options.__file = \"packages/table/src/table.vue\"\n/* harmony default export */ var src_table = (table_component.exports);\n// CONCATENATED MODULE: ./packages/table/index.js\n\n\n/* istanbul ignore next */\nsrc_table.install = function (Vue) {\n Vue.component(src_table.name, src_table);\n};\n\n/* harmony default export */ var packages_table = (src_table);\n// CONCATENATED MODULE: ./packages/table/src/config.js\n\n\nvar cellStarts = {\n default: {\n order: ''\n },\n selection: {\n width: 48,\n minWidth: 48,\n realWidth: 48,\n order: '',\n className: 'el-table-column--selection'\n },\n expand: {\n width: 48,\n minWidth: 48,\n realWidth: 48,\n order: ''\n },\n index: {\n width: 48,\n minWidth: 48,\n realWidth: 48,\n order: ''\n }\n};\n\n// 这些选项不应该被覆盖\nvar cellForced = {\n selection: {\n renderHeader: function renderHeader(h, _ref) {\n var store = _ref.store;\n\n return h('el-checkbox', {\n attrs: {\n disabled: store.states.data && store.states.data.length === 0,\n indeterminate: store.states.selection.length > 0 && !this.isAllSelected,\n\n value: this.isAllSelected },\n on: {\n 'input': this.toggleAllSelection\n }\n });\n },\n renderCell: function renderCell(h, _ref2) {\n var row = _ref2.row,\n column = _ref2.column,\n isSelected = _ref2.isSelected,\n store = _ref2.store,\n $index = _ref2.$index;\n\n return h('el-checkbox', {\n nativeOn: {\n 'click': function click(event) {\n return event.stopPropagation();\n }\n },\n attrs: {\n value: isSelected,\n disabled: column.selectable ? !column.selectable.call(null, row, $index) : false\n },\n on: {\n 'input': function input() {\n store.commit('rowSelectedChanged', row);\n }\n }\n });\n },\n sortable: false,\n resizable: false\n },\n index: {\n renderHeader: function renderHeader(h, _ref3) {\n var column = _ref3.column;\n\n return column.label || '#';\n },\n renderCell: function renderCell(h, _ref4) {\n var $index = _ref4.$index,\n column = _ref4.column;\n\n var i = $index + 1;\n var index = column.index;\n\n if (typeof index === 'number') {\n i = $index + index;\n } else if (typeof index === 'function') {\n i = index($index);\n }\n\n return h('div', [i]);\n },\n sortable: false\n },\n expand: {\n renderHeader: function renderHeader(h, _ref5) {\n var column = _ref5.column;\n\n return column.label || '';\n },\n renderCell: function renderCell(h, _ref6) {\n var row = _ref6.row,\n store = _ref6.store,\n isExpanded = _ref6.isExpanded;\n\n var classes = ['el-table__expand-icon'];\n if (isExpanded) {\n classes.push('el-table__expand-icon--expanded');\n }\n var callback = function callback(e) {\n e.stopPropagation();\n store.toggleRowExpansion(row);\n };\n return h(\n 'div',\n { 'class': classes,\n on: {\n 'click': callback\n }\n },\n [h('i', { 'class': 'el-icon el-icon-arrow-right' })]\n );\n },\n sortable: false,\n resizable: false,\n className: 'el-table__expand-column'\n }\n};\n\nfunction defaultRenderCell(h, _ref7) {\n var row = _ref7.row,\n column = _ref7.column,\n $index = _ref7.$index;\n\n var property = column.property;\n var value = property && Object(util_[\"getPropByPath\"])(row, property).v;\n if (column && column.formatter) {\n return column.formatter(row, column, value, $index);\n }\n return value;\n}\n\nfunction treeCellPrefix(h, _ref8) {\n var row = _ref8.row,\n treeNode = _ref8.treeNode,\n store = _ref8.store;\n\n if (!treeNode) return null;\n var ele = [];\n var callback = function callback(e) {\n e.stopPropagation();\n store.loadOrToggle(row);\n };\n if (treeNode.indent) {\n ele.push(h('span', { 'class': 'el-table__indent', style: { 'padding-left': treeNode.indent + 'px' } }));\n }\n if (typeof treeNode.expanded === 'boolean' && !treeNode.noLazyChildren) {\n var expandClasses = ['el-table__expand-icon', treeNode.expanded ? 'el-table__expand-icon--expanded' : ''];\n var iconClasses = ['el-icon-arrow-right'];\n if (treeNode.loading) {\n iconClasses = ['el-icon-loading'];\n }\n ele.push(h(\n 'div',\n { 'class': expandClasses,\n on: {\n 'click': callback\n }\n },\n [h('i', { 'class': iconClasses })]\n ));\n } else {\n ele.push(h('span', { 'class': 'el-table__placeholder' }));\n }\n return ele;\n}\n// CONCATENATED MODULE: ./packages/table/src/table-column.js\nvar table_column_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\nvar columnIdSeed = 1;\n\n/* harmony default export */ var table_column = ({\n name: 'ElTableColumn',\n\n props: {\n type: {\n type: String,\n default: 'default'\n },\n label: String,\n className: String,\n labelClassName: String,\n property: String,\n prop: String,\n width: {},\n minWidth: {},\n renderHeader: Function,\n sortable: {\n type: [Boolean, String],\n default: false\n },\n sortMethod: Function,\n sortBy: [String, Function, Array],\n resizable: {\n type: Boolean,\n default: true\n },\n columnKey: String,\n align: String,\n headerAlign: String,\n showTooltipWhenOverflow: Boolean,\n showOverflowTooltip: Boolean,\n fixed: [Boolean, String],\n formatter: Function,\n selectable: Function,\n reserveSelection: Boolean,\n filterMethod: Function,\n filteredValue: Array,\n filters: Array,\n filterPlacement: String,\n filterMultiple: {\n type: Boolean,\n default: true\n },\n index: [Number, Function],\n sortOrders: {\n type: Array,\n default: function _default() {\n return ['ascending', 'descending', null];\n },\n validator: function validator(val) {\n return val.every(function (order) {\n return ['ascending', 'descending', null].indexOf(order) > -1;\n });\n }\n }\n },\n\n data: function data() {\n return {\n isSubColumn: false,\n columns: []\n };\n },\n\n\n computed: {\n owner: function owner() {\n var parent = this.$parent;\n while (parent && !parent.tableId) {\n parent = parent.$parent;\n }\n return parent;\n },\n columnOrTableParent: function columnOrTableParent() {\n var parent = this.$parent;\n while (parent && !parent.tableId && !parent.columnId) {\n parent = parent.$parent;\n }\n return parent;\n },\n realWidth: function realWidth() {\n return parseWidth(this.width);\n },\n realMinWidth: function realMinWidth() {\n return parseMinWidth(this.minWidth);\n },\n realAlign: function realAlign() {\n return this.align ? 'is-' + this.align : null;\n },\n realHeaderAlign: function realHeaderAlign() {\n return this.headerAlign ? 'is-' + this.headerAlign : this.realAlign;\n }\n },\n\n methods: {\n getPropsData: function getPropsData() {\n var _this = this;\n\n for (var _len = arguments.length, props = Array(_len), _key = 0; _key < _len; _key++) {\n props[_key] = arguments[_key];\n }\n\n return props.reduce(function (prev, cur) {\n if (Array.isArray(cur)) {\n cur.forEach(function (key) {\n prev[key] = _this[key];\n });\n }\n return prev;\n }, {});\n },\n getColumnElIndex: function getColumnElIndex(children, child) {\n return [].indexOf.call(children, child);\n },\n setColumnWidth: function setColumnWidth(column) {\n if (this.realWidth) {\n column.width = this.realWidth;\n }\n if (this.realMinWidth) {\n column.minWidth = this.realMinWidth;\n }\n if (!column.minWidth) {\n column.minWidth = 80;\n }\n column.realWidth = column.width === undefined ? column.minWidth : column.width;\n return column;\n },\n setColumnForcedProps: function setColumnForcedProps(column) {\n // 对于特定类型的 column,某些属性不允许设置\n var type = column.type;\n var source = cellForced[type] || {};\n Object.keys(source).forEach(function (prop) {\n var value = source[prop];\n if (value !== undefined) {\n column[prop] = prop === 'className' ? column[prop] + ' ' + value : value;\n }\n });\n return column;\n },\n setColumnRenders: function setColumnRenders(column) {\n var _this2 = this;\n\n var h = this.$createElement;\n\n // renderHeader 属性不推荐使用。\n if (this.renderHeader) {\n console.warn('[Element Warn][TableColumn]Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header.');\n } else if (column.type !== 'selection') {\n column.renderHeader = function (h, scope) {\n var renderHeader = _this2.$scopedSlots.header;\n return renderHeader ? renderHeader(scope) : column.label;\n };\n }\n\n var originRenderCell = column.renderCell;\n // TODO: 这里的实现调整\n if (column.type === 'expand') {\n // 对于展开行,renderCell 不允许配置的。在上一步中已经设置过,这里需要简单封装一下。\n column.renderCell = function (h, data) {\n return h(\n 'div',\n { 'class': 'cell' },\n [originRenderCell(h, data)]\n );\n };\n this.owner.renderExpanded = function (h, data) {\n return _this2.$scopedSlots.default ? _this2.$scopedSlots.default(data) : _this2.$slots.default;\n };\n } else {\n originRenderCell = originRenderCell || defaultRenderCell;\n // 对 renderCell 进行包装\n column.renderCell = function (h, data) {\n var children = null;\n if (_this2.$scopedSlots.default) {\n children = _this2.$scopedSlots.default(data);\n } else {\n children = originRenderCell(h, data);\n }\n var prefix = treeCellPrefix(h, data);\n var props = {\n class: 'cell',\n style: {}\n };\n if (column.showOverflowTooltip) {\n props.class += ' el-tooltip';\n props.style = { width: (data.column.realWidth || data.column.width) - 1 + 'px' };\n }\n return h(\n 'div',\n props,\n [prefix, children]\n );\n };\n }\n return column;\n },\n registerNormalWatchers: function registerNormalWatchers() {\n var _this3 = this;\n\n var props = ['label', 'property', 'filters', 'filterMultiple', 'sortable', 'index', 'formatter', 'className', 'labelClassName', 'showOverflowTooltip'];\n // 一些属性具有别名\n var aliases = {\n prop: 'property',\n realAlign: 'align',\n realHeaderAlign: 'headerAlign',\n realWidth: 'width'\n };\n var allAliases = props.reduce(function (prev, cur) {\n prev[cur] = cur;\n return prev;\n }, aliases);\n\n Object.keys(allAliases).forEach(function (key) {\n var columnKey = aliases[key];\n\n _this3.$watch(key, function (newVal) {\n _this3.columnConfig[columnKey] = newVal;\n });\n });\n },\n registerComplexWatchers: function registerComplexWatchers() {\n var _this4 = this;\n\n var props = ['fixed'];\n var aliases = {\n realWidth: 'width',\n realMinWidth: 'minWidth'\n };\n var allAliases = props.reduce(function (prev, cur) {\n prev[cur] = cur;\n return prev;\n }, aliases);\n\n Object.keys(allAliases).forEach(function (key) {\n var columnKey = aliases[key];\n\n _this4.$watch(key, function (newVal) {\n _this4.columnConfig[columnKey] = newVal;\n var updateColumns = columnKey === 'fixed';\n _this4.owner.store.scheduleLayout(updateColumns);\n });\n });\n }\n },\n\n components: {\n ElCheckbox: checkbox_default.a\n },\n\n beforeCreate: function beforeCreate() {\n this.row = {};\n this.column = {};\n this.$index = 0;\n this.columnId = '';\n },\n created: function created() {\n var parent = this.columnOrTableParent;\n this.isSubColumn = this.owner !== parent;\n this.columnId = (parent.tableId || parent.columnId) + '_column_' + columnIdSeed++;\n\n var type = this.type || 'default';\n var sortable = this.sortable === '' ? true : this.sortable;\n var defaults = table_column_extends({}, cellStarts[type], {\n id: this.columnId,\n type: type,\n property: this.prop || this.property,\n align: this.realAlign,\n headerAlign: this.realHeaderAlign,\n showOverflowTooltip: this.showOverflowTooltip || this.showTooltipWhenOverflow,\n // filter 相关属性\n filterable: this.filters || this.filterMethod,\n filteredValue: [],\n filterPlacement: '',\n isColumnGroup: false,\n filterOpened: false,\n // sort 相关属性\n sortable: sortable,\n // index 列\n index: this.index\n });\n\n var basicProps = ['columnKey', 'label', 'className', 'labelClassName', 'type', 'renderHeader', 'formatter', 'fixed', 'resizable'];\n var sortProps = ['sortMethod', 'sortBy', 'sortOrders'];\n var selectProps = ['selectable', 'reserveSelection'];\n var filterProps = ['filterMethod', 'filters', 'filterMultiple', 'filterOpened', 'filteredValue', 'filterPlacement'];\n\n var column = this.getPropsData(basicProps, sortProps, selectProps, filterProps);\n column = mergeOptions(defaults, column);\n\n // 注意 compose 中函数执行的顺序是从右到左\n var chains = compose(this.setColumnRenders, this.setColumnWidth, this.setColumnForcedProps);\n column = chains(column);\n\n this.columnConfig = column;\n\n // 注册 watcher\n this.registerNormalWatchers();\n this.registerComplexWatchers();\n },\n mounted: function mounted() {\n var owner = this.owner;\n var parent = this.columnOrTableParent;\n var children = this.isSubColumn ? parent.$el.children : parent.$refs.hiddenColumns.children;\n var columnIndex = this.getColumnElIndex(children, this.$el);\n\n owner.store.commit('insertColumn', this.columnConfig, columnIndex, this.isSubColumn ? parent.columnConfig : null);\n },\n destroyed: function destroyed() {\n if (!this.$parent) return;\n var parent = this.$parent;\n this.owner.store.commit('removeColumn', this.columnConfig, this.isSubColumn ? parent.columnConfig : null);\n },\n render: function render(h) {\n // slots 也要渲染,需要计算合并表头\n return h('div', this.$slots.default);\n }\n});\n// CONCATENATED MODULE: ./packages/table-column/index.js\n\n\n/* istanbul ignore next */\ntable_column.install = function (Vue) {\n Vue.component(table_column.name, table_column);\n};\n\n/* harmony default export */ var packages_table_column = (table_column);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/picker.vue?vue&type=template&id=79ae069f&\nvar pickervue_type_template_id_79ae069f_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return !_vm.ranged\n ? _c(\n \"el-input\",\n _vm._b(\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleClose,\n expression: \"handleClose\"\n }\n ],\n ref: \"reference\",\n staticClass: \"el-date-editor\",\n class: \"el-date-editor--\" + _vm.type,\n attrs: {\n readonly:\n !_vm.editable ||\n _vm.readonly ||\n _vm.type === \"dates\" ||\n _vm.type === \"week\" ||\n _vm.type === \"years\" ||\n _vm.type === \"months\",\n disabled: _vm.pickerDisabled,\n size: _vm.pickerSize,\n name: _vm.name,\n placeholder: _vm.placeholder,\n value: _vm.displayValue,\n validateEvent: false\n },\n on: {\n focus: _vm.handleFocus,\n input: function(value) {\n return (_vm.userInput = value)\n },\n change: _vm.handleChange\n },\n nativeOn: {\n keydown: function($event) {\n return _vm.handleKeydown($event)\n },\n mouseenter: function($event) {\n return _vm.handleMouseEnter($event)\n },\n mouseleave: function($event) {\n _vm.showClose = false\n }\n }\n },\n \"el-input\",\n _vm.firstInputId,\n false\n ),\n [\n _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.triggerClass,\n attrs: { slot: \"prefix\" },\n on: { click: _vm.handleFocus },\n slot: \"prefix\"\n }),\n _vm.haveTrigger\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: [_vm.showClose ? \"\" + _vm.clearIcon : \"\"],\n attrs: { slot: \"suffix\" },\n on: { click: _vm.handleClickIcon },\n slot: \"suffix\"\n })\n : _vm._e()\n ]\n )\n : _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleClose,\n expression: \"handleClose\"\n }\n ],\n ref: \"reference\",\n staticClass: \"el-date-editor el-range-editor el-input__inner\",\n class: [\n \"el-date-editor--\" + _vm.type,\n _vm.pickerSize ? \"el-range-editor--\" + _vm.pickerSize : \"\",\n _vm.pickerDisabled ? \"is-disabled\" : \"\",\n _vm.pickerVisible ? \"is-active\" : \"\"\n ],\n on: {\n click: _vm.handleRangeClick,\n mouseenter: _vm.handleMouseEnter,\n mouseleave: function($event) {\n _vm.showClose = false\n },\n keydown: _vm.handleKeydown\n }\n },\n [\n _c(\"i\", {\n class: [\"el-input__icon\", \"el-range__icon\", _vm.triggerClass]\n }),\n _c(\n \"input\",\n _vm._b(\n {\n staticClass: \"el-range-input\",\n attrs: {\n autocomplete: \"off\",\n placeholder: _vm.startPlaceholder,\n disabled: _vm.pickerDisabled,\n readonly: !_vm.editable || _vm.readonly,\n name: _vm.name && _vm.name[0]\n },\n domProps: { value: _vm.displayValue && _vm.displayValue[0] },\n on: {\n input: _vm.handleStartInput,\n change: _vm.handleStartChange,\n focus: _vm.handleFocus\n }\n },\n \"input\",\n _vm.firstInputId,\n false\n )\n ),\n _vm._t(\"range-separator\", [\n _c(\"span\", { staticClass: \"el-range-separator\" }, [\n _vm._v(_vm._s(_vm.rangeSeparator))\n ])\n ]),\n _c(\n \"input\",\n _vm._b(\n {\n staticClass: \"el-range-input\",\n attrs: {\n autocomplete: \"off\",\n placeholder: _vm.endPlaceholder,\n disabled: _vm.pickerDisabled,\n readonly: !_vm.editable || _vm.readonly,\n name: _vm.name && _vm.name[1]\n },\n domProps: { value: _vm.displayValue && _vm.displayValue[1] },\n on: {\n input: _vm.handleEndInput,\n change: _vm.handleEndChange,\n focus: _vm.handleFocus\n }\n },\n \"input\",\n _vm.secondInputId,\n false\n )\n ),\n _vm.haveTrigger\n ? _c(\"i\", {\n staticClass: \"el-input__icon el-range__close-icon\",\n class: [_vm.showClose ? \"\" + _vm.clearIcon : \"\"],\n on: { click: _vm.handleClickIcon }\n })\n : _vm._e()\n ],\n 2\n )\n}\nvar pickervue_type_template_id_79ae069f_staticRenderFns = []\npickervue_type_template_id_79ae069f_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/picker.vue?vue&type=template&id=79ae069f&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/date-util\"\nvar date_util_ = __nested_webpack_require_8926__(0);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/picker.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\nvar NewPopper = {\n props: {\n appendToBody: vue_popper_default.a.props.appendToBody,\n offset: vue_popper_default.a.props.offset,\n boundariesPadding: vue_popper_default.a.props.boundariesPadding,\n arrowOffset: vue_popper_default.a.props.arrowOffset,\n transformOrigin: vue_popper_default.a.props.transformOrigin\n },\n methods: vue_popper_default.a.methods,\n data: function data() {\n return merge_default()({ visibleArrow: true }, vue_popper_default.a.data);\n },\n\n beforeDestroy: vue_popper_default.a.beforeDestroy\n};\n\nvar DEFAULT_FORMATS = {\n date: 'yyyy-MM-dd',\n month: 'yyyy-MM',\n months: 'yyyy-MM',\n datetime: 'yyyy-MM-dd HH:mm:ss',\n time: 'HH:mm:ss',\n week: 'yyyywWW',\n timerange: 'HH:mm:ss',\n daterange: 'yyyy-MM-dd',\n monthrange: 'yyyy-MM',\n datetimerange: 'yyyy-MM-dd HH:mm:ss',\n year: 'yyyy',\n years: 'yyyy'\n};\nvar HAVE_TRIGGER_TYPES = ['date', 'datetime', 'time', 'time-select', 'week', 'month', 'year', 'daterange', 'monthrange', 'timerange', 'datetimerange', 'dates', 'months', 'years'];\nvar pickervue_type_script_lang_js_DATE_FORMATTER = function DATE_FORMATTER(value, format) {\n if (format === 'timestamp') return value.getTime();\n return Object(date_util_[\"formatDate\"])(value, format);\n};\nvar pickervue_type_script_lang_js_DATE_PARSER = function DATE_PARSER(text, format) {\n if (format === 'timestamp') return new Date(Number(text));\n return Object(date_util_[\"parseDate\"])(text, format);\n};\nvar RANGE_FORMATTER = function RANGE_FORMATTER(value, format) {\n if (Array.isArray(value) && value.length === 2) {\n var start = value[0];\n var end = value[1];\n\n if (start && end) {\n return [pickervue_type_script_lang_js_DATE_FORMATTER(start, format), pickervue_type_script_lang_js_DATE_FORMATTER(end, format)];\n }\n }\n return '';\n};\nvar RANGE_PARSER = function RANGE_PARSER(array, format, separator) {\n if (!Array.isArray(array)) {\n array = array.split(separator);\n }\n if (array.length === 2) {\n var range1 = array[0];\n var range2 = array[1];\n\n return [pickervue_type_script_lang_js_DATE_PARSER(range1, format), pickervue_type_script_lang_js_DATE_PARSER(range2, format)];\n }\n return [];\n};\nvar TYPE_VALUE_RESOLVER_MAP = {\n default: {\n formatter: function formatter(value) {\n if (!value) return '';\n return '' + value;\n },\n parser: function parser(text) {\n if (text === undefined || text === '') return null;\n return text;\n }\n },\n week: {\n formatter: function formatter(value, format) {\n var week = Object(date_util_[\"getWeekNumber\"])(value);\n var month = value.getMonth();\n var trueDate = new Date(value);\n if (week === 1 && month === 11) {\n trueDate.setHours(0, 0, 0, 0);\n trueDate.setDate(trueDate.getDate() + 3 - (trueDate.getDay() + 6) % 7);\n }\n var date = Object(date_util_[\"formatDate\"])(trueDate, format);\n\n date = /WW/.test(date) ? date.replace(/WW/, week < 10 ? '0' + week : week) : date.replace(/W/, week);\n return date;\n },\n parser: function parser(text, format) {\n // parse as if a normal date\n return TYPE_VALUE_RESOLVER_MAP.date.parser(text, format);\n }\n },\n date: {\n formatter: pickervue_type_script_lang_js_DATE_FORMATTER,\n parser: pickervue_type_script_lang_js_DATE_PARSER\n },\n datetime: {\n formatter: pickervue_type_script_lang_js_DATE_FORMATTER,\n parser: pickervue_type_script_lang_js_DATE_PARSER\n },\n daterange: {\n formatter: RANGE_FORMATTER,\n parser: RANGE_PARSER\n },\n monthrange: {\n formatter: RANGE_FORMATTER,\n parser: RANGE_PARSER\n },\n datetimerange: {\n formatter: RANGE_FORMATTER,\n parser: RANGE_PARSER\n },\n timerange: {\n formatter: RANGE_FORMATTER,\n parser: RANGE_PARSER\n },\n time: {\n formatter: pickervue_type_script_lang_js_DATE_FORMATTER,\n parser: pickervue_type_script_lang_js_DATE_PARSER\n },\n month: {\n formatter: pickervue_type_script_lang_js_DATE_FORMATTER,\n parser: pickervue_type_script_lang_js_DATE_PARSER\n },\n year: {\n formatter: pickervue_type_script_lang_js_DATE_FORMATTER,\n parser: pickervue_type_script_lang_js_DATE_PARSER\n },\n number: {\n formatter: function formatter(value) {\n if (!value) return '';\n return '' + value;\n },\n parser: function parser(text) {\n var result = Number(text);\n\n if (!isNaN(text)) {\n return result;\n } else {\n return null;\n }\n }\n },\n dates: {\n formatter: function formatter(value, format) {\n return value.map(function (date) {\n return pickervue_type_script_lang_js_DATE_FORMATTER(date, format);\n });\n },\n parser: function parser(value, format) {\n return (typeof value === 'string' ? value.split(', ') : value).map(function (date) {\n return date instanceof Date ? date : pickervue_type_script_lang_js_DATE_PARSER(date, format);\n });\n }\n },\n months: {\n formatter: function formatter(value, format) {\n return value.map(function (date) {\n return pickervue_type_script_lang_js_DATE_FORMATTER(date, format);\n });\n },\n parser: function parser(value, format) {\n return (typeof value === 'string' ? value.split(', ') : value).map(function (date) {\n return date instanceof Date ? date : pickervue_type_script_lang_js_DATE_PARSER(date, format);\n });\n }\n },\n years: {\n formatter: function formatter(value, format) {\n return value.map(function (date) {\n return pickervue_type_script_lang_js_DATE_FORMATTER(date, format);\n });\n },\n parser: function parser(value, format) {\n return (typeof value === 'string' ? value.split(', ') : value).map(function (date) {\n return date instanceof Date ? date : pickervue_type_script_lang_js_DATE_PARSER(date, format);\n });\n }\n }\n};\nvar PLACEMENT_MAP = {\n left: 'bottom-start',\n center: 'bottom',\n right: 'bottom-end'\n};\n\nvar parseAsFormatAndType = function parseAsFormatAndType(value, customFormat, type) {\n var rangeSeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '-';\n\n if (!value) return null;\n var parser = (TYPE_VALUE_RESOLVER_MAP[type] || TYPE_VALUE_RESOLVER_MAP['default']).parser;\n var format = customFormat || DEFAULT_FORMATS[type];\n return parser(value, format, rangeSeparator);\n};\n\nvar formatAsFormatAndType = function formatAsFormatAndType(value, customFormat, type) {\n if (!value) return null;\n var formatter = (TYPE_VALUE_RESOLVER_MAP[type] || TYPE_VALUE_RESOLVER_MAP['default']).formatter;\n var format = customFormat || DEFAULT_FORMATS[type];\n return formatter(value, format);\n};\n\n/*\n * Considers:\n * 1. Date object\n * 2. date string\n * 3. array of 1 or 2\n */\nvar valueEquals = function valueEquals(a, b) {\n // considers Date object and string\n var dateEquals = function dateEquals(a, b) {\n var aIsDate = a instanceof Date;\n var bIsDate = b instanceof Date;\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime();\n }\n if (!aIsDate && !bIsDate) {\n return a === b;\n }\n return false;\n };\n\n var aIsArray = a instanceof Array;\n var bIsArray = b instanceof Array;\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (item, index) {\n return dateEquals(item, b[index]);\n });\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b);\n }\n return false;\n};\n\nvar isString = function isString(val) {\n return typeof val === 'string' || val instanceof String;\n};\n\nvar pickervue_type_script_lang_js_validator = function validator(val) {\n // either: String, Array of String, null / undefined\n return val === null || val === undefined || isString(val) || Array.isArray(val) && val.length === 2 && val.every(isString);\n};\n\n/* harmony default export */ var pickervue_type_script_lang_js_ = ({\n mixins: [emitter_default.a, NewPopper],\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n size: String,\n format: String,\n valueFormat: String,\n readonly: Boolean,\n placeholder: String,\n startPlaceholder: String,\n endPlaceholder: String,\n prefixIcon: String,\n clearIcon: {\n type: String,\n default: 'el-icon-circle-close'\n },\n name: {\n default: '',\n validator: pickervue_type_script_lang_js_validator\n },\n disabled: Boolean,\n clearable: {\n type: Boolean,\n default: true\n },\n id: {\n default: '',\n validator: pickervue_type_script_lang_js_validator\n },\n popperClass: String,\n editable: {\n type: Boolean,\n default: true\n },\n align: {\n type: String,\n default: 'left'\n },\n value: {},\n defaultValue: {},\n defaultTime: {},\n rangeSeparator: {\n default: '-'\n },\n pickerOptions: {},\n unlinkPanels: Boolean,\n validateEvent: {\n type: Boolean,\n default: true\n }\n },\n\n components: { ElInput: input_default.a },\n\n directives: { Clickoutside: clickoutside_default.a },\n\n data: function data() {\n return {\n pickerVisible: false,\n showClose: false,\n userInput: null,\n valueOnOpen: null, // value when picker opens, used to determine whether to emit change\n unwatchPickerOptions: null\n };\n },\n\n\n watch: {\n pickerVisible: function pickerVisible(val) {\n if (this.readonly || this.pickerDisabled) return;\n if (val) {\n this.showPicker();\n this.valueOnOpen = Array.isArray(this.value) ? [].concat(this.value) : this.value;\n } else {\n this.hidePicker();\n this.emitChange(this.value);\n this.userInput = null;\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.blur');\n }\n this.$emit('blur', this);\n this.blur();\n }\n },\n\n parsedValue: {\n immediate: true,\n handler: function handler(val) {\n if (this.picker) {\n this.picker.value = val;\n }\n }\n },\n defaultValue: function defaultValue(val) {\n // NOTE: should eventually move to jsx style picker + panel ?\n if (this.picker) {\n this.picker.defaultValue = val;\n }\n },\n value: function value(val, oldVal) {\n if (!valueEquals(val, oldVal) && !this.pickerVisible && this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.change', val);\n }\n }\n },\n\n computed: {\n ranged: function ranged() {\n return this.type.indexOf('range') > -1;\n },\n reference: function reference() {\n var reference = this.$refs.reference;\n return reference.$el || reference;\n },\n refInput: function refInput() {\n if (this.reference) {\n return [].slice.call(this.reference.querySelectorAll('input'));\n }\n return [];\n },\n valueIsEmpty: function valueIsEmpty() {\n var val = this.value;\n if (Array.isArray(val)) {\n for (var i = 0, len = val.length; i < len; i++) {\n if (val[i]) {\n return false;\n }\n }\n } else {\n if (val) {\n return false;\n }\n }\n return true;\n },\n triggerClass: function triggerClass() {\n return this.prefixIcon || (this.type.indexOf('time') !== -1 ? 'el-icon-time' : 'el-icon-date');\n },\n selectionMode: function selectionMode() {\n if (this.type === 'week') {\n return 'week';\n } else if (this.type === 'month') {\n return 'month';\n } else if (this.type === 'year') {\n return 'year';\n } else if (this.type === 'dates') {\n return 'dates';\n } else if (this.type === 'months') {\n return 'months';\n } else if (this.type === 'years') {\n return 'years';\n }\n\n return 'day';\n },\n haveTrigger: function haveTrigger() {\n if (typeof this.showTrigger !== 'undefined') {\n return this.showTrigger;\n }\n return HAVE_TRIGGER_TYPES.indexOf(this.type) !== -1;\n },\n displayValue: function displayValue() {\n var formattedValue = formatAsFormatAndType(this.parsedValue, this.format, this.type, this.rangeSeparator);\n if (Array.isArray(this.userInput)) {\n return [this.userInput[0] || formattedValue && formattedValue[0] || '', this.userInput[1] || formattedValue && formattedValue[1] || ''];\n } else if (this.userInput !== null) {\n return this.userInput;\n } else if (formattedValue) {\n return this.type === 'dates' || this.type === 'years' || this.type === 'months' ? formattedValue.join(', ') : formattedValue;\n } else {\n return '';\n }\n },\n parsedValue: function parsedValue() {\n if (!this.value) return this.value; // component value is not set\n if (this.type === 'time-select') return this.value; // time-select does not require parsing, this might change in next major version\n\n var valueIsDateObject = Object(date_util_[\"isDateObject\"])(this.value) || Array.isArray(this.value) && this.value.every(date_util_[\"isDateObject\"]);\n if (valueIsDateObject) {\n return this.value;\n }\n\n if (this.valueFormat) {\n return parseAsFormatAndType(this.value, this.valueFormat, this.type, this.rangeSeparator) || this.value;\n }\n\n // NOTE: deal with common but incorrect usage, should remove in next major version\n // user might provide string / timestamp without value-format, coerce them into date (or array of date)\n return Array.isArray(this.value) ? this.value.map(function (val) {\n return new Date(val);\n }) : new Date(this.value);\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n pickerSize: function pickerSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n pickerDisabled: function pickerDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n firstInputId: function firstInputId() {\n var obj = {};\n var id = void 0;\n if (this.ranged) {\n id = this.id && this.id[0];\n } else {\n id = this.id;\n }\n if (id) obj.id = id;\n return obj;\n },\n secondInputId: function secondInputId() {\n var obj = {};\n var id = void 0;\n if (this.ranged) {\n id = this.id && this.id[1];\n }\n if (id) obj.id = id;\n return obj;\n }\n },\n\n created: function created() {\n // vue-popper\n this.popperOptions = {\n boundariesPadding: 0,\n gpuAcceleration: false\n };\n this.placement = PLACEMENT_MAP[this.align] || PLACEMENT_MAP.left;\n\n this.$on('fieldReset', this.handleFieldReset);\n },\n\n\n methods: {\n focus: function focus() {\n if (!this.ranged) {\n this.$refs.reference.focus();\n } else {\n this.handleFocus();\n }\n },\n blur: function blur() {\n this.refInput.forEach(function (input) {\n return input.blur();\n });\n },\n\n\n // {parse, formatTo} Value deals maps component value with internal Date\n parseValue: function parseValue(value) {\n var isParsed = Object(date_util_[\"isDateObject\"])(value) || Array.isArray(value) && value.every(date_util_[\"isDateObject\"]);\n if (this.valueFormat && !isParsed) {\n return parseAsFormatAndType(value, this.valueFormat, this.type, this.rangeSeparator) || value;\n } else {\n return value;\n }\n },\n formatToValue: function formatToValue(date) {\n var isFormattable = Object(date_util_[\"isDateObject\"])(date) || Array.isArray(date) && date.every(date_util_[\"isDateObject\"]);\n if (this.valueFormat && isFormattable) {\n return formatAsFormatAndType(date, this.valueFormat, this.type, this.rangeSeparator);\n } else {\n return date;\n }\n },\n\n\n // {parse, formatTo} String deals with user input\n parseString: function parseString(value) {\n var type = Array.isArray(value) ? this.type : this.type.replace('range', '');\n return parseAsFormatAndType(value, this.format, type);\n },\n formatToString: function formatToString(value) {\n var type = Array.isArray(value) ? this.type : this.type.replace('range', '');\n return formatAsFormatAndType(value, this.format, type);\n },\n handleMouseEnter: function handleMouseEnter() {\n if (this.readonly || this.pickerDisabled) return;\n if (!this.valueIsEmpty && this.clearable) {\n this.showClose = true;\n }\n },\n handleChange: function handleChange() {\n if (this.userInput) {\n var value = this.parseString(this.displayValue);\n if (value) {\n this.picker.value = value;\n if (this.isValidValue(value)) {\n this.emitInput(value);\n this.userInput = null;\n }\n }\n }\n if (this.userInput === '') {\n this.emitInput(null);\n this.emitChange(null);\n this.userInput = null;\n }\n },\n handleStartInput: function handleStartInput(event) {\n if (this.userInput) {\n this.userInput = [event.target.value, this.userInput[1]];\n } else {\n this.userInput = [event.target.value, null];\n }\n },\n handleEndInput: function handleEndInput(event) {\n if (this.userInput) {\n this.userInput = [this.userInput[0], event.target.value];\n } else {\n this.userInput = [null, event.target.value];\n }\n },\n handleStartChange: function handleStartChange(event) {\n var value = this.parseString(this.userInput && this.userInput[0]);\n if (value) {\n this.userInput = [this.formatToString(value), this.displayValue[1]];\n var newValue = [value, this.picker.value && this.picker.value[1]];\n this.picker.value = newValue;\n if (this.isValidValue(newValue)) {\n this.emitInput(newValue);\n this.userInput = null;\n }\n }\n },\n handleEndChange: function handleEndChange(event) {\n var value = this.parseString(this.userInput && this.userInput[1]);\n if (value) {\n this.userInput = [this.displayValue[0], this.formatToString(value)];\n var newValue = [this.picker.value && this.picker.value[0], value];\n this.picker.value = newValue;\n if (this.isValidValue(newValue)) {\n this.emitInput(newValue);\n this.userInput = null;\n }\n }\n },\n handleClickIcon: function handleClickIcon(event) {\n if (this.readonly || this.pickerDisabled) return;\n if (this.showClose) {\n this.valueOnOpen = this.value;\n event.stopPropagation();\n this.emitInput(null);\n this.emitChange(null);\n this.showClose = false;\n if (this.picker && typeof this.picker.handleClear === 'function') {\n this.picker.handleClear();\n }\n } else {\n this.pickerVisible = !this.pickerVisible;\n }\n },\n handleClose: function handleClose() {\n if (!this.pickerVisible) return;\n this.pickerVisible = false;\n\n if (this.type === 'dates' || this.type === 'years' || this.type === 'months') {\n // restore to former value\n var oldValue = parseAsFormatAndType(this.valueOnOpen, this.valueFormat, this.type, this.rangeSeparator) || this.valueOnOpen;\n this.emitInput(oldValue);\n }\n },\n handleFieldReset: function handleFieldReset(initialValue) {\n this.userInput = initialValue === '' ? null : initialValue;\n },\n handleFocus: function handleFocus() {\n var type = this.type;\n\n if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {\n this.pickerVisible = true;\n }\n this.$emit('focus', this);\n },\n handleKeydown: function handleKeydown(event) {\n var _this = this;\n\n var keyCode = event.keyCode;\n\n // ESC\n if (keyCode === 27) {\n this.pickerVisible = false;\n event.stopPropagation();\n return;\n }\n\n // Tab\n if (keyCode === 9) {\n if (!this.ranged) {\n this.handleChange();\n this.pickerVisible = this.picker.visible = false;\n this.blur();\n event.stopPropagation();\n } else {\n // user may change focus between two input\n setTimeout(function () {\n if (_this.refInput.indexOf(document.activeElement) === -1) {\n _this.pickerVisible = false;\n _this.blur();\n event.stopPropagation();\n }\n }, 0);\n }\n return;\n }\n\n // Enter\n if (keyCode === 13) {\n if (this.userInput === '' || this.isValidValue(this.parseString(this.displayValue))) {\n this.handleChange();\n this.pickerVisible = this.picker.visible = false;\n this.blur();\n }\n event.stopPropagation();\n return;\n }\n\n // if user is typing, do not let picker handle key input\n if (this.userInput) {\n event.stopPropagation();\n return;\n }\n\n // delegate other keys to panel\n if (this.picker && this.picker.handleKeydown) {\n this.picker.handleKeydown(event);\n }\n },\n handleRangeClick: function handleRangeClick() {\n var type = this.type;\n\n if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {\n this.pickerVisible = true;\n }\n this.$emit('focus', this);\n },\n hidePicker: function hidePicker() {\n if (this.picker) {\n this.picker.resetView && this.picker.resetView();\n this.pickerVisible = this.picker.visible = false;\n this.destroyPopper();\n }\n },\n showPicker: function showPicker() {\n var _this2 = this;\n\n if (this.$isServer) return;\n if (!this.picker) {\n this.mountPicker();\n }\n this.pickerVisible = this.picker.visible = true;\n\n this.updatePopper();\n\n this.picker.value = this.parsedValue;\n this.picker.resetView && this.picker.resetView();\n\n this.$nextTick(function () {\n _this2.picker.adjustSpinners && _this2.picker.adjustSpinners();\n });\n },\n mountPicker: function mountPicker() {\n var _this3 = this;\n\n this.picker = new external_vue_default.a(this.panel).$mount();\n this.picker.defaultValue = this.defaultValue;\n this.picker.defaultTime = this.defaultTime;\n this.picker.popperClass = this.popperClass;\n this.popperElm = this.picker.$el;\n this.picker.width = this.reference.getBoundingClientRect().width;\n this.picker.showTime = this.type === 'datetime' || this.type === 'datetimerange';\n this.picker.selectionMode = this.selectionMode;\n this.picker.unlinkPanels = this.unlinkPanels;\n this.picker.arrowControl = this.arrowControl || this.timeArrowControl || false;\n this.$watch('format', function (format) {\n _this3.picker.format = format;\n });\n\n var updateOptions = function updateOptions() {\n var options = _this3.pickerOptions;\n\n if (options && options.selectableRange) {\n var ranges = options.selectableRange;\n var parser = TYPE_VALUE_RESOLVER_MAP.datetimerange.parser;\n var format = DEFAULT_FORMATS.timerange;\n\n ranges = Array.isArray(ranges) ? ranges : [ranges];\n _this3.picker.selectableRange = ranges.map(function (range) {\n return parser(range, format, _this3.rangeSeparator);\n });\n }\n\n for (var option in options) {\n if (options.hasOwnProperty(option) &&\n // 忽略 time-picker 的该配置项\n option !== 'selectableRange') {\n _this3.picker[option] = options[option];\n }\n }\n\n // main format must prevail over undocumented pickerOptions.format\n if (_this3.format) {\n _this3.picker.format = _this3.format;\n }\n };\n updateOptions();\n this.unwatchPickerOptions = this.$watch('pickerOptions', function () {\n return updateOptions();\n }, { deep: true });\n this.$el.appendChild(this.picker.$el);\n this.picker.resetView && this.picker.resetView();\n\n this.picker.$on('dodestroy', this.doDestroy);\n this.picker.$on('pick', function () {\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n _this3.userInput = null;\n _this3.pickerVisible = _this3.picker.visible = visible;\n _this3.emitInput(date);\n _this3.picker.resetView && _this3.picker.resetView();\n });\n\n this.picker.$on('select-range', function (start, end, pos) {\n if (_this3.refInput.length === 0) return;\n if (!pos || pos === 'min') {\n _this3.refInput[0].setSelectionRange(start, end);\n _this3.refInput[0].focus();\n } else if (pos === 'max') {\n _this3.refInput[1].setSelectionRange(start, end);\n _this3.refInput[1].focus();\n }\n });\n },\n unmountPicker: function unmountPicker() {\n if (this.picker) {\n this.picker.$destroy();\n this.picker.$off();\n if (typeof this.unwatchPickerOptions === 'function') {\n this.unwatchPickerOptions();\n }\n this.picker.$el.parentNode.removeChild(this.picker.$el);\n }\n },\n emitChange: function emitChange(val) {\n // determine user real change only\n if (!valueEquals(val, this.valueOnOpen)) {\n this.$emit('change', val);\n this.valueOnOpen = val;\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.change', val);\n }\n }\n },\n emitInput: function emitInput(val) {\n var formatted = this.formatToValue(val);\n if (!valueEquals(this.value, formatted)) {\n this.$emit('input', formatted);\n }\n },\n isValidValue: function isValidValue(value) {\n if (!this.picker) {\n this.mountPicker();\n }\n if (this.picker.isValidValue) {\n return value && this.picker.isValidValue(value);\n } else {\n return true;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/picker.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_pickervue_type_script_lang_js_ = (pickervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/picker.vue\n\n\n\n\n\n/* normalize component */\n\nvar picker_component = normalizeComponent(\n src_pickervue_type_script_lang_js_,\n pickervue_type_template_id_79ae069f_render,\n pickervue_type_template_id_79ae069f_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var picker_api; }\npicker_component.options.__file = \"packages/date-picker/src/picker.vue\"\n/* harmony default export */ var picker = (picker_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/date.vue?vue&type=template&id=2440d4ea&\nvar datevue_type_template_id_2440d4ea_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: { \"after-enter\": _vm.handleEnter, \"after-leave\": _vm.handleLeave }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-picker-panel el-date-picker el-popper\",\n class: [\n {\n \"has-sidebar\": _vm.$slots.sidebar || _vm.shortcuts,\n \"has-time\": _vm.showTime\n },\n _vm.popperClass\n ]\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-picker-panel__body-wrapper\" },\n [\n _vm._t(\"sidebar\"),\n _vm.shortcuts\n ? _c(\n \"div\",\n { staticClass: \"el-picker-panel__sidebar\" },\n _vm._l(_vm.shortcuts, function(shortcut, key) {\n return _c(\n \"button\",\n {\n key: key,\n staticClass: \"el-picker-panel__shortcut\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n _vm.handleShortcutClick(shortcut)\n }\n }\n },\n [_vm._v(_vm._s(shortcut.text))]\n )\n }),\n 0\n )\n : _vm._e(),\n _c(\"div\", { staticClass: \"el-picker-panel__body\" }, [\n _vm.showTime\n ? _c(\"div\", { staticClass: \"el-date-picker__time-header\" }, [\n _c(\n \"span\",\n { staticClass: \"el-date-picker__editor-wrap\" },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: _vm.t(\"el.datepicker.selectDate\"),\n value: _vm.visibleDate,\n size: \"small\"\n },\n on: {\n input: function(val) {\n return (_vm.userInputDate = val)\n },\n change: _vm.handleVisibleDateChange\n }\n })\n ],\n 1\n ),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleTimePickClose,\n expression: \"handleTimePickClose\"\n }\n ],\n staticClass: \"el-date-picker__editor-wrap\"\n },\n [\n _c(\"el-input\", {\n ref: \"input\",\n attrs: {\n placeholder: _vm.t(\"el.datepicker.selectTime\"),\n value: _vm.visibleTime,\n size: \"small\"\n },\n on: {\n focus: function($event) {\n _vm.timePickerVisible = true\n },\n input: function(val) {\n return (_vm.userInputTime = val)\n },\n change: _vm.handleVisibleTimeChange\n }\n }),\n _c(\"time-picker\", {\n ref: \"timepicker\",\n attrs: {\n \"time-arrow-control\": _vm.arrowControl,\n visible: _vm.timePickerVisible\n },\n on: {\n pick: _vm.handleTimePick,\n mounted: _vm.proxyTimePickerDataProperties\n }\n })\n ],\n 1\n )\n ])\n : _vm._e(),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentView !== \"time\",\n expression: \"currentView !== 'time'\"\n }\n ],\n staticClass: \"el-date-picker__header\",\n class: {\n \"el-date-picker__header--bordered\":\n _vm.currentView === \"year\" ||\n _vm.currentView === \"month\"\n }\n },\n [\n _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left\",\n attrs: {\n type: \"button\",\n \"aria-label\": _vm.t(\"el.datepicker.prevYear\")\n },\n on: { click: _vm.prevYear }\n }),\n _c(\"button\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentView === \"date\",\n expression: \"currentView === 'date'\"\n }\n ],\n staticClass:\n \"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left\",\n attrs: {\n type: \"button\",\n \"aria-label\": _vm.t(\"el.datepicker.prevMonth\")\n },\n on: { click: _vm.prevMonth }\n }),\n _c(\n \"span\",\n {\n staticClass: \"el-date-picker__header-label\",\n attrs: { role: \"button\" },\n on: { click: _vm.showYearPicker }\n },\n [_vm._v(_vm._s(_vm.yearLabel))]\n ),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentView === \"date\",\n expression: \"currentView === 'date'\"\n }\n ],\n staticClass: \"el-date-picker__header-label\",\n class: { active: _vm.currentView === \"month\" },\n attrs: { role: \"button\" },\n on: { click: _vm.showMonthPicker }\n },\n [\n _vm._v(\n _vm._s(_vm.t(\"el.datepicker.month\" + (_vm.month + 1)))\n )\n ]\n ),\n _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right\",\n attrs: {\n type: \"button\",\n \"aria-label\": _vm.t(\"el.datepicker.nextYear\")\n },\n on: { click: _vm.nextYear }\n }),\n _c(\"button\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentView === \"date\",\n expression: \"currentView === 'date'\"\n }\n ],\n staticClass:\n \"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right\",\n attrs: {\n type: \"button\",\n \"aria-label\": _vm.t(\"el.datepicker.nextMonth\")\n },\n on: { click: _vm.nextMonth }\n })\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"el-picker-panel__content\" },\n [\n _c(\"date-table\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentView === \"date\",\n expression: \"currentView === 'date'\"\n }\n ],\n attrs: {\n \"selection-mode\": _vm.selectionMode,\n \"first-day-of-week\": _vm.firstDayOfWeek,\n value: _vm.value,\n \"default-value\": _vm.defaultValue\n ? new Date(_vm.defaultValue)\n : null,\n date: _vm.date,\n \"cell-class-name\": _vm.cellClassName,\n \"disabled-date\": _vm.disabledDate\n },\n on: { pick: _vm.handleDatePick }\n }),\n _c(\"year-table\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentView === \"year\",\n expression: \"currentView === 'year'\"\n }\n ],\n attrs: {\n \"selection-mode\": _vm.selectionMode,\n value: _vm.value,\n \"default-value\": _vm.defaultValue\n ? new Date(_vm.defaultValue)\n : null,\n date: _vm.date,\n \"disabled-date\": _vm.disabledDate\n },\n on: { pick: _vm.handleYearPick }\n }),\n _c(\"month-table\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentView === \"month\",\n expression: \"currentView === 'month'\"\n }\n ],\n attrs: {\n \"selection-mode\": _vm.selectionMode,\n value: _vm.value,\n \"default-value\": _vm.defaultValue\n ? new Date(_vm.defaultValue)\n : null,\n date: _vm.date,\n \"disabled-date\": _vm.disabledDate\n },\n on: { pick: _vm.handleMonthPick }\n })\n ],\n 1\n )\n ])\n ],\n 2\n ),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n _vm.footerVisible &&\n (_vm.currentView === \"date\" ||\n _vm.currentView === \"month\" ||\n _vm.currentView === \"year\"),\n expression:\n \"footerVisible && (currentView === 'date' || currentView === 'month' || currentView === 'year')\"\n }\n ],\n staticClass: \"el-picker-panel__footer\"\n },\n [\n _c(\n \"el-button\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n _vm.selectionMode !== \"dates\" &&\n _vm.selectionMode !== \"months\" &&\n _vm.selectionMode !== \"years\",\n expression:\n \"selectionMode !== 'dates' && selectionMode !== 'months' && selectionMode !== 'years'\"\n }\n ],\n staticClass: \"el-picker-panel__link-btn\",\n attrs: { size: \"mini\", type: \"text\" },\n on: { click: _vm.changeToNow }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.t(\"el.datepicker.now\")) +\n \"\\n \"\n )\n ]\n ),\n _c(\n \"el-button\",\n {\n staticClass: \"el-picker-panel__link-btn\",\n attrs: { plain: \"\", size: \"mini\" },\n on: { click: _vm.confirm }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.t(\"el.datepicker.confirm\")) +\n \"\\n \"\n )\n ]\n )\n ],\n 1\n )\n ]\n )\n ]\n )\n}\nvar datevue_type_template_id_2440d4ea_staticRenderFns = []\ndatevue_type_template_id_2440d4ea_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/date.vue?vue&type=template&id=2440d4ea&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/time.vue?vue&type=template&id=3d939089&\nvar timevue_type_template_id_3d939089_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: {\n \"after-leave\": function($event) {\n _vm.$emit(\"dodestroy\")\n }\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-time-panel el-popper\",\n class: _vm.popperClass\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"el-time-panel__content\",\n class: { \"has-seconds\": _vm.showSeconds }\n },\n [\n _c(\"time-spinner\", {\n ref: \"spinner\",\n attrs: {\n \"arrow-control\": _vm.useArrow,\n \"show-seconds\": _vm.showSeconds,\n \"am-pm-mode\": _vm.amPmMode,\n date: _vm.date\n },\n on: {\n change: _vm.handleChange,\n \"select-range\": _vm.setSelectionRange\n }\n })\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"el-time-panel__footer\" }, [\n _c(\n \"button\",\n {\n staticClass: \"el-time-panel__btn cancel\",\n attrs: { type: \"button\" },\n on: { click: _vm.handleCancel }\n },\n [_vm._v(_vm._s(_vm.t(\"el.datepicker.cancel\")))]\n ),\n _c(\n \"button\",\n {\n staticClass: \"el-time-panel__btn\",\n class: { confirm: !_vm.disabled },\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n _vm.handleConfirm()\n }\n }\n },\n [_vm._v(_vm._s(_vm.t(\"el.datepicker.confirm\")))]\n )\n ])\n ]\n )\n ]\n )\n}\nvar timevue_type_template_id_3d939089_staticRenderFns = []\ntimevue_type_template_id_3d939089_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/time.vue?vue&type=template&id=3d939089&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/time-spinner.vue?vue&type=template&id=1facadeb&\nvar time_spinnervue_type_template_id_1facadeb_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-time-spinner\",\n class: { \"has-seconds\": _vm.showSeconds }\n },\n [\n !_vm.arrowControl\n ? [\n _c(\n \"el-scrollbar\",\n {\n ref: \"hours\",\n staticClass: \"el-time-spinner__wrapper\",\n attrs: {\n \"wrap-style\": \"max-height: inherit;\",\n \"view-class\": \"el-time-spinner__list\",\n noresize: \"\",\n tag: \"ul\"\n },\n nativeOn: {\n mouseenter: function($event) {\n _vm.emitSelectRange(\"hours\")\n },\n mousemove: function($event) {\n _vm.adjustCurrentSpinner(\"hours\")\n }\n }\n },\n _vm._l(_vm.hoursList, function(disabled, hour) {\n return _c(\n \"li\",\n {\n key: hour,\n staticClass: \"el-time-spinner__item\",\n class: { active: hour === _vm.hours, disabled: disabled },\n on: {\n click: function($event) {\n _vm.handleClick(\"hours\", {\n value: hour,\n disabled: disabled\n })\n }\n }\n },\n [\n _vm._v(\n _vm._s(\n (\"0\" + (_vm.amPmMode ? hour % 12 || 12 : hour)).slice(\n -2\n )\n ) + _vm._s(_vm.amPm(hour))\n )\n ]\n )\n }),\n 0\n ),\n _c(\n \"el-scrollbar\",\n {\n ref: \"minutes\",\n staticClass: \"el-time-spinner__wrapper\",\n attrs: {\n \"wrap-style\": \"max-height: inherit;\",\n \"view-class\": \"el-time-spinner__list\",\n noresize: \"\",\n tag: \"ul\"\n },\n nativeOn: {\n mouseenter: function($event) {\n _vm.emitSelectRange(\"minutes\")\n },\n mousemove: function($event) {\n _vm.adjustCurrentSpinner(\"minutes\")\n }\n }\n },\n _vm._l(_vm.minutesList, function(enabled, key) {\n return _c(\n \"li\",\n {\n key: key,\n staticClass: \"el-time-spinner__item\",\n class: { active: key === _vm.minutes, disabled: !enabled },\n on: {\n click: function($event) {\n _vm.handleClick(\"minutes\", {\n value: key,\n disabled: false\n })\n }\n }\n },\n [_vm._v(_vm._s((\"0\" + key).slice(-2)))]\n )\n }),\n 0\n ),\n _c(\n \"el-scrollbar\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showSeconds,\n expression: \"showSeconds\"\n }\n ],\n ref: \"seconds\",\n staticClass: \"el-time-spinner__wrapper\",\n attrs: {\n \"wrap-style\": \"max-height: inherit;\",\n \"view-class\": \"el-time-spinner__list\",\n noresize: \"\",\n tag: \"ul\"\n },\n nativeOn: {\n mouseenter: function($event) {\n _vm.emitSelectRange(\"seconds\")\n },\n mousemove: function($event) {\n _vm.adjustCurrentSpinner(\"seconds\")\n }\n }\n },\n _vm._l(60, function(second, key) {\n return _c(\n \"li\",\n {\n key: key,\n staticClass: \"el-time-spinner__item\",\n class: { active: key === _vm.seconds },\n on: {\n click: function($event) {\n _vm.handleClick(\"seconds\", {\n value: key,\n disabled: false\n })\n }\n }\n },\n [_vm._v(_vm._s((\"0\" + key).slice(-2)))]\n )\n }),\n 0\n )\n ]\n : _vm._e(),\n _vm.arrowControl\n ? [\n _c(\n \"div\",\n {\n staticClass: \"el-time-spinner__wrapper is-arrow\",\n on: {\n mouseenter: function($event) {\n _vm.emitSelectRange(\"hours\")\n }\n }\n },\n [\n _c(\"i\", {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.decrease,\n expression: \"decrease\"\n }\n ],\n staticClass: \"el-time-spinner__arrow el-icon-arrow-up\"\n }),\n _c(\"i\", {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.increase,\n expression: \"increase\"\n }\n ],\n staticClass: \"el-time-spinner__arrow el-icon-arrow-down\"\n }),\n _c(\n \"ul\",\n { ref: \"hours\", staticClass: \"el-time-spinner__list\" },\n _vm._l(_vm.arrowHourList, function(hour, key) {\n return _c(\n \"li\",\n {\n key: key,\n staticClass: \"el-time-spinner__item\",\n class: {\n active: hour === _vm.hours,\n disabled: _vm.hoursList[hour]\n }\n },\n [\n _vm._v(\n _vm._s(\n hour === undefined\n ? \"\"\n : (\n \"0\" + (_vm.amPmMode ? hour % 12 || 12 : hour)\n ).slice(-2) + _vm.amPm(hour)\n )\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _c(\n \"div\",\n {\n staticClass: \"el-time-spinner__wrapper is-arrow\",\n on: {\n mouseenter: function($event) {\n _vm.emitSelectRange(\"minutes\")\n }\n }\n },\n [\n _c(\"i\", {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.decrease,\n expression: \"decrease\"\n }\n ],\n staticClass: \"el-time-spinner__arrow el-icon-arrow-up\"\n }),\n _c(\"i\", {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.increase,\n expression: \"increase\"\n }\n ],\n staticClass: \"el-time-spinner__arrow el-icon-arrow-down\"\n }),\n _c(\n \"ul\",\n { ref: \"minutes\", staticClass: \"el-time-spinner__list\" },\n _vm._l(_vm.arrowMinuteList, function(minute, key) {\n return _c(\n \"li\",\n {\n key: key,\n staticClass: \"el-time-spinner__item\",\n class: { active: minute === _vm.minutes }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n minute === undefined\n ? \"\"\n : (\"0\" + minute).slice(-2)\n ) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm.showSeconds\n ? _c(\n \"div\",\n {\n staticClass: \"el-time-spinner__wrapper is-arrow\",\n on: {\n mouseenter: function($event) {\n _vm.emitSelectRange(\"seconds\")\n }\n }\n },\n [\n _c(\"i\", {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.decrease,\n expression: \"decrease\"\n }\n ],\n staticClass: \"el-time-spinner__arrow el-icon-arrow-up\"\n }),\n _c(\"i\", {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.increase,\n expression: \"increase\"\n }\n ],\n staticClass: \"el-time-spinner__arrow el-icon-arrow-down\"\n }),\n _c(\n \"ul\",\n { ref: \"seconds\", staticClass: \"el-time-spinner__list\" },\n _vm._l(_vm.arrowSecondList, function(second, key) {\n return _c(\n \"li\",\n {\n key: key,\n staticClass: \"el-time-spinner__item\",\n class: { active: second === _vm.seconds }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n second === undefined\n ? \"\"\n : (\"0\" + second).slice(-2)\n ) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n )\n ]\n )\n : _vm._e()\n ]\n : _vm._e()\n ],\n 2\n )\n}\nvar time_spinnervue_type_template_id_1facadeb_staticRenderFns = []\ntime_spinnervue_type_template_id_1facadeb_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/basic/time-spinner.vue?vue&type=template&id=1facadeb&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/time-spinner.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var time_spinnervue_type_script_lang_js_ = ({\n components: { ElScrollbar: scrollbar_default.a },\n\n directives: {\n repeatClick: repeat_click\n },\n\n props: {\n date: {},\n defaultValue: {}, // reserved for future use\n showSeconds: {\n type: Boolean,\n default: true\n },\n arrowControl: Boolean,\n amPmMode: {\n type: String,\n default: '' // 'a': am/pm; 'A': AM/PM\n }\n },\n\n computed: {\n hours: function hours() {\n return this.date.getHours();\n },\n minutes: function minutes() {\n return this.date.getMinutes();\n },\n seconds: function seconds() {\n return this.date.getSeconds();\n },\n hoursList: function hoursList() {\n return Object(date_util_[\"getRangeHours\"])(this.selectableRange);\n },\n minutesList: function minutesList() {\n return Object(date_util_[\"getRangeMinutes\"])(this.selectableRange, this.hours);\n },\n arrowHourList: function arrowHourList() {\n var hours = this.hours;\n return [hours > 0 ? hours - 1 : undefined, hours, hours < 23 ? hours + 1 : undefined];\n },\n arrowMinuteList: function arrowMinuteList() {\n var minutes = this.minutes;\n return [minutes > 0 ? minutes - 1 : undefined, minutes, minutes < 59 ? minutes + 1 : undefined];\n },\n arrowSecondList: function arrowSecondList() {\n var seconds = this.seconds;\n return [seconds > 0 ? seconds - 1 : undefined, seconds, seconds < 59 ? seconds + 1 : undefined];\n }\n },\n\n data: function data() {\n return {\n selectableRange: [],\n currentScrollbar: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n !_this.arrowControl && _this.bindScrollEvent();\n });\n },\n\n\n methods: {\n increase: function increase() {\n this.scrollDown(1);\n },\n decrease: function decrease() {\n this.scrollDown(-1);\n },\n modifyDateField: function modifyDateField(type, value) {\n switch (type) {\n case 'hours':\n this.$emit('change', Object(date_util_[\"modifyTime\"])(this.date, value, this.minutes, this.seconds));break;\n case 'minutes':\n this.$emit('change', Object(date_util_[\"modifyTime\"])(this.date, this.hours, value, this.seconds));break;\n case 'seconds':\n this.$emit('change', Object(date_util_[\"modifyTime\"])(this.date, this.hours, this.minutes, value));break;\n }\n },\n handleClick: function handleClick(type, _ref) {\n var value = _ref.value,\n disabled = _ref.disabled;\n\n if (!disabled) {\n this.modifyDateField(type, value);\n this.emitSelectRange(type);\n this.adjustSpinner(type, value);\n }\n },\n emitSelectRange: function emitSelectRange(type) {\n if (type === 'hours') {\n this.$emit('select-range', 0, 2);\n } else if (type === 'minutes') {\n this.$emit('select-range', 3, 5);\n } else if (type === 'seconds') {\n this.$emit('select-range', 6, 8);\n }\n this.currentScrollbar = type;\n },\n bindScrollEvent: function bindScrollEvent() {\n var _this2 = this;\n\n var bindFunction = function bindFunction(type) {\n _this2.$refs[type].wrap.onscroll = function (e) {\n // TODO: scroll is emitted when set scrollTop programatically\n // should find better solutions in the future!\n _this2.handleScroll(type, e);\n };\n };\n bindFunction('hours');\n bindFunction('minutes');\n bindFunction('seconds');\n },\n handleScroll: function handleScroll(type) {\n var value = Math.min(Math.round((this.$refs[type].wrap.scrollTop - (this.scrollBarHeight(type) * 0.5 - 10) / this.typeItemHeight(type) + 3) / this.typeItemHeight(type)), type === 'hours' ? 23 : 59);\n this.modifyDateField(type, value);\n },\n\n\n // NOTE: used by datetime / date-range panel\n // renamed from adjustScrollTop\n // should try to refactory it\n adjustSpinners: function adjustSpinners() {\n this.adjustSpinner('hours', this.hours);\n this.adjustSpinner('minutes', this.minutes);\n this.adjustSpinner('seconds', this.seconds);\n },\n adjustCurrentSpinner: function adjustCurrentSpinner(type) {\n this.adjustSpinner(type, this[type]);\n },\n adjustSpinner: function adjustSpinner(type, value) {\n if (this.arrowControl) return;\n var el = this.$refs[type].wrap;\n if (el) {\n el.scrollTop = Math.max(0, value * this.typeItemHeight(type));\n }\n },\n scrollDown: function scrollDown(step) {\n var _this3 = this;\n\n if (!this.currentScrollbar) {\n this.emitSelectRange('hours');\n }\n\n var label = this.currentScrollbar;\n var hoursList = this.hoursList;\n var now = this[label];\n\n if (this.currentScrollbar === 'hours') {\n var total = Math.abs(step);\n step = step > 0 ? 1 : -1;\n var length = hoursList.length;\n while (length-- && total) {\n now = (now + step + hoursList.length) % hoursList.length;\n if (hoursList[now]) {\n continue;\n }\n total--;\n }\n if (hoursList[now]) return;\n } else {\n now = (now + step + 60) % 60;\n }\n\n this.modifyDateField(label, now);\n this.adjustSpinner(label, now);\n this.$nextTick(function () {\n return _this3.emitSelectRange(_this3.currentScrollbar);\n });\n },\n amPm: function amPm(hour) {\n var shouldShowAmPm = this.amPmMode.toLowerCase() === 'a';\n if (!shouldShowAmPm) return '';\n var isCapital = this.amPmMode === 'A';\n var content = hour < 12 ? ' am' : ' pm';\n if (isCapital) content = content.toUpperCase();\n return content;\n },\n typeItemHeight: function typeItemHeight(type) {\n return this.$refs[type].$el.querySelector('li').offsetHeight;\n },\n scrollBarHeight: function scrollBarHeight(type) {\n return this.$refs[type].$el.offsetHeight;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/basic/time-spinner.vue?vue&type=script&lang=js&\n /* harmony default export */ var basic_time_spinnervue_type_script_lang_js_ = (time_spinnervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/basic/time-spinner.vue\n\n\n\n\n\n/* normalize component */\n\nvar time_spinner_component = normalizeComponent(\n basic_time_spinnervue_type_script_lang_js_,\n time_spinnervue_type_template_id_1facadeb_render,\n time_spinnervue_type_template_id_1facadeb_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var time_spinner_api; }\ntime_spinner_component.options.__file = \"packages/date-picker/src/basic/time-spinner.vue\"\n/* harmony default export */ var time_spinner = (time_spinner_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/time.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var timevue_type_script_lang_js_ = ({\n mixins: [locale_default.a],\n\n components: {\n TimeSpinner: time_spinner\n },\n\n props: {\n visible: Boolean,\n timeArrowControl: Boolean\n },\n\n watch: {\n visible: function visible(val) {\n var _this = this;\n\n if (val) {\n this.oldValue = this.value;\n this.$nextTick(function () {\n return _this.$refs.spinner.emitSelectRange('hours');\n });\n } else {\n this.needInitAdjust = true;\n }\n },\n value: function value(newVal) {\n var _this2 = this;\n\n var date = void 0;\n if (newVal instanceof Date) {\n date = Object(date_util_[\"limitTimeRange\"])(newVal, this.selectableRange, this.format);\n } else if (!newVal) {\n date = this.defaultValue ? new Date(this.defaultValue) : new Date();\n }\n\n this.date = date;\n if (this.visible && this.needInitAdjust) {\n this.$nextTick(function (_) {\n return _this2.adjustSpinners();\n });\n this.needInitAdjust = false;\n }\n },\n selectableRange: function selectableRange(val) {\n this.$refs.spinner.selectableRange = val;\n },\n defaultValue: function defaultValue(val) {\n if (!Object(date_util_[\"isDate\"])(this.value)) {\n this.date = val ? new Date(val) : new Date();\n }\n }\n },\n\n data: function data() {\n return {\n popperClass: '',\n format: 'HH:mm:ss',\n value: '',\n defaultValue: null,\n date: new Date(),\n oldValue: new Date(),\n selectableRange: [],\n selectionRange: [0, 2],\n disabled: false,\n arrowControl: false,\n needInitAdjust: true\n };\n },\n\n\n computed: {\n showSeconds: function showSeconds() {\n return (this.format || '').indexOf('ss') !== -1;\n },\n useArrow: function useArrow() {\n return this.arrowControl || this.timeArrowControl || false;\n },\n amPmMode: function amPmMode() {\n if ((this.format || '').indexOf('A') !== -1) return 'A';\n if ((this.format || '').indexOf('a') !== -1) return 'a';\n return '';\n }\n },\n\n methods: {\n handleCancel: function handleCancel() {\n this.$emit('pick', this.oldValue, false);\n },\n handleChange: function handleChange(date) {\n // this.visible avoids edge cases, when use scrolls during panel closing animation\n if (this.visible) {\n this.date = Object(date_util_[\"clearMilliseconds\"])(date);\n // if date is out of range, do not emit\n if (this.isValidValue(this.date)) {\n this.$emit('pick', this.date, true);\n }\n }\n },\n setSelectionRange: function setSelectionRange(start, end) {\n this.$emit('select-range', start, end);\n this.selectionRange = [start, end];\n },\n handleConfirm: function handleConfirm() {\n var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var first = arguments[1];\n\n if (first) return;\n var date = Object(date_util_[\"clearMilliseconds\"])(Object(date_util_[\"limitTimeRange\"])(this.date, this.selectableRange, this.format));\n this.$emit('pick', date, visible, first);\n },\n handleKeydown: function handleKeydown(event) {\n var keyCode = event.keyCode;\n var mapping = { 38: -1, 40: 1, 37: -1, 39: 1 };\n\n // Left or Right\n if (keyCode === 37 || keyCode === 39) {\n var step = mapping[keyCode];\n this.changeSelectionRange(step);\n event.preventDefault();\n return;\n }\n\n // Up or Down\n if (keyCode === 38 || keyCode === 40) {\n var _step = mapping[keyCode];\n this.$refs.spinner.scrollDown(_step);\n event.preventDefault();\n return;\n }\n },\n isValidValue: function isValidValue(date) {\n return Object(date_util_[\"timeWithinRange\"])(date, this.selectableRange, this.format);\n },\n adjustSpinners: function adjustSpinners() {\n return this.$refs.spinner.adjustSpinners();\n },\n changeSelectionRange: function changeSelectionRange(step) {\n var list = [0, 3].concat(this.showSeconds ? [6] : []);\n var mapping = ['hours', 'minutes'].concat(this.showSeconds ? ['seconds'] : []);\n var index = list.indexOf(this.selectionRange[0]);\n var next = (index + step + list.length) % list.length;\n this.$refs.spinner.emitSelectRange(mapping[next]);\n }\n },\n\n mounted: function mounted() {\n var _this3 = this;\n\n this.$nextTick(function () {\n return _this3.handleConfirm(true, true);\n });\n this.$emit('mounted');\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/time.vue?vue&type=script&lang=js&\n /* harmony default export */ var panel_timevue_type_script_lang_js_ = (timevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/panel/time.vue\n\n\n\n\n\n/* normalize component */\n\nvar time_component = normalizeComponent(\n panel_timevue_type_script_lang_js_,\n timevue_type_template_id_3d939089_render,\n timevue_type_template_id_3d939089_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var time_api; }\ntime_component.options.__file = \"packages/date-picker/src/panel/time.vue\"\n/* harmony default export */ var panel_time = (time_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/year-table.vue?vue&type=template&id=c86ab5e0&\nvar year_tablevue_type_template_id_c86ab5e0_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"table\",\n { staticClass: \"el-year-table\", on: { click: _vm.handleYearTableClick } },\n [\n _c(\"tbody\", [\n _c(\"tr\", [\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 0)\n },\n [_c(\"a\", { staticClass: \"cell\" }, [_vm._v(_vm._s(_vm.startYear))])]\n ),\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 1)\n },\n [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(_vm._s(_vm.startYear + 1))\n ])\n ]\n ),\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 2)\n },\n [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(_vm._s(_vm.startYear + 2))\n ])\n ]\n ),\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 3)\n },\n [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(_vm._s(_vm.startYear + 3))\n ])\n ]\n )\n ]),\n _c(\"tr\", [\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 4)\n },\n [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(_vm._s(_vm.startYear + 4))\n ])\n ]\n ),\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 5)\n },\n [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(_vm._s(_vm.startYear + 5))\n ])\n ]\n ),\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 6)\n },\n [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(_vm._s(_vm.startYear + 6))\n ])\n ]\n ),\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 7)\n },\n [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(_vm._s(_vm.startYear + 7))\n ])\n ]\n )\n ]),\n _c(\"tr\", [\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 8)\n },\n [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(_vm._s(_vm.startYear + 8))\n ])\n ]\n ),\n _c(\n \"td\",\n {\n staticClass: \"available\",\n class: _vm.getCellStyle(_vm.startYear + 9)\n },\n [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(_vm._s(_vm.startYear + 9))\n ])\n ]\n ),\n _c(\"td\"),\n _c(\"td\")\n ])\n ])\n ]\n )\n}\nvar year_tablevue_type_template_id_c86ab5e0_staticRenderFns = []\nyear_tablevue_type_template_id_c86ab5e0_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/basic/year-table.vue?vue&type=template&id=c86ab5e0&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/year-table.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\nvar year_tablevue_type_script_lang_js_datesInYear = function datesInYear(year) {\n var numOfDays = Object(date_util_[\"getDayCountOfYear\"])(year);\n var firstDay = new Date(year, 0, 1);\n return Object(date_util_[\"range\"])(numOfDays).map(function (n) {\n return Object(date_util_[\"nextDate\"])(firstDay, n);\n });\n};\n\n/* harmony default export */ var year_tablevue_type_script_lang_js_ = ({\n props: {\n disabledDate: {},\n value: {},\n defaultValue: {\n validator: function validator(val) {\n // null or valid Date Object\n return val === null || val instanceof Date && Object(date_util_[\"isDate\"])(val);\n }\n },\n date: {},\n selectionMode: {}\n },\n\n computed: {\n startYear: function startYear() {\n return Math.floor(this.date.getFullYear() / 10) * 10;\n }\n },\n\n methods: {\n getCellStyle: function getCellStyle(year) {\n var style = {};\n var today = new Date();\n\n style.disabled = typeof this.disabledDate === 'function' ? year_tablevue_type_script_lang_js_datesInYear(year).every(this.disabledDate) : false;\n style.current = Object(util_[\"arrayFindIndex\"])(Object(util_[\"coerceTruthyValueToArray\"])(this.value), function (date) {\n return date.getFullYear() === year;\n }) >= 0;\n style.today = today.getFullYear() === year;\n style.default = this.defaultValue && this.defaultValue.getFullYear() === year;\n\n return style;\n },\n handleYearTableClick: function handleYearTableClick(event) {\n var target = event.target;\n if (target.tagName === 'A') {\n if (Object(dom_[\"hasClass\"])(target.parentNode, 'disabled')) return;\n var year = target.textContent || target.innerText;\n if (this.selectionMode === 'years') {\n var value = this.value || [];\n var idx = Object(util_[\"arrayFindIndex\"])(value, function (date) {\n return date.getFullYear() === Number(year);\n });\n var newValue = idx > -1 ? [].concat(value.slice(0, idx), value.slice(idx + 1)) : [].concat(value, [new Date(year)]);\n this.$emit('pick', newValue);\n } else {\n this.$emit('pick', Number(year));\n }\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/basic/year-table.vue?vue&type=script&lang=js&\n /* harmony default export */ var basic_year_tablevue_type_script_lang_js_ = (year_tablevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/basic/year-table.vue\n\n\n\n\n\n/* normalize component */\n\nvar year_table_component = normalizeComponent(\n basic_year_tablevue_type_script_lang_js_,\n year_tablevue_type_template_id_c86ab5e0_render,\n year_tablevue_type_template_id_c86ab5e0_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var year_table_api; }\nyear_table_component.options.__file = \"packages/date-picker/src/basic/year-table.vue\"\n/* harmony default export */ var year_table = (year_table_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/month-table.vue?vue&type=template&id=654d4f42&\nvar month_tablevue_type_template_id_654d4f42_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"table\",\n {\n staticClass: \"el-month-table\",\n on: { click: _vm.handleMonthTableClick, mousemove: _vm.handleMouseMove }\n },\n [\n _c(\n \"tbody\",\n _vm._l(_vm.rows, function(row, key) {\n return _c(\n \"tr\",\n { key: key },\n _vm._l(row, function(cell, key) {\n return _c(\"td\", { key: key, class: _vm.getCellStyle(cell) }, [\n _c(\"div\", [\n _c(\"a\", { staticClass: \"cell\" }, [\n _vm._v(\n _vm._s(\n _vm.t(\"el.datepicker.months.\" + _vm.months[cell.text])\n )\n )\n ])\n ])\n ])\n }),\n 0\n )\n }),\n 0\n )\n ]\n )\n}\nvar month_tablevue_type_template_id_654d4f42_staticRenderFns = []\nmonth_tablevue_type_template_id_654d4f42_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/basic/month-table.vue?vue&type=template&id=654d4f42&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/month-table.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\nvar month_tablevue_type_script_lang_js_datesInMonth = function datesInMonth(year, month) {\n var numOfDays = Object(date_util_[\"getDayCountOfMonth\"])(year, month);\n var firstDay = new Date(year, month, 1);\n return Object(date_util_[\"range\"])(numOfDays).map(function (n) {\n return Object(date_util_[\"nextDate\"])(firstDay, n);\n });\n};\n\nvar clearDate = function clearDate(date) {\n return new Date(date.getFullYear(), date.getMonth());\n};\n\nvar getMonthTimestamp = function getMonthTimestamp(time) {\n if (typeof time === 'number' || typeof time === 'string') {\n return clearDate(new Date(time)).getTime();\n } else if (time instanceof Date) {\n return clearDate(time).getTime();\n } else {\n return NaN;\n }\n};\n\n// remove the first element that satisfies `pred` from arr\n// return a new array if modification occurs\n// return the original array otherwise\nvar month_tablevue_type_script_lang_js_removeFromArray = function removeFromArray(arr, pred) {\n var idx = typeof pred === 'function' ? Object(util_[\"arrayFindIndex\"])(arr, pred) : arr.indexOf(pred);\n return idx >= 0 ? [].concat(arr.slice(0, idx), arr.slice(idx + 1)) : arr;\n};\n/* harmony default export */ var month_tablevue_type_script_lang_js_ = ({\n props: {\n disabledDate: {},\n value: {},\n selectionMode: {\n default: 'month'\n },\n minDate: {},\n\n maxDate: {},\n defaultValue: {\n validator: function validator(val) {\n // null or valid Date Object\n return val === null || Object(date_util_[\"isDate\"])(val) || Array.isArray(val) && val.every(date_util_[\"isDate\"]);\n }\n },\n date: {},\n rangeState: {\n default: function _default() {\n return {\n endDate: null,\n selecting: false\n };\n }\n }\n },\n\n mixins: [locale_default.a],\n\n watch: {\n 'rangeState.endDate': function rangeStateEndDate(newVal) {\n this.markRange(this.minDate, newVal);\n },\n minDate: function minDate(newVal, oldVal) {\n if (getMonthTimestamp(newVal) !== getMonthTimestamp(oldVal)) {\n this.markRange(this.minDate, this.maxDate);\n }\n },\n maxDate: function maxDate(newVal, oldVal) {\n if (getMonthTimestamp(newVal) !== getMonthTimestamp(oldVal)) {\n this.markRange(this.minDate, this.maxDate);\n }\n }\n },\n\n data: function data() {\n return {\n months: ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],\n tableRows: [[], [], []],\n lastRow: null,\n lastColumn: null\n };\n },\n\n\n methods: {\n cellMatchesDate: function cellMatchesDate(cell, date) {\n var value = new Date(date);\n return this.date.getFullYear() === value.getFullYear() && Number(cell.text) === value.getMonth();\n },\n getCellStyle: function getCellStyle(cell) {\n var _this = this;\n\n var style = {};\n var year = this.date.getFullYear();\n var today = new Date();\n var month = cell.text;\n var defaultValue = this.defaultValue ? Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue] : [];\n style.disabled = typeof this.disabledDate === 'function' ? month_tablevue_type_script_lang_js_datesInMonth(year, month).every(this.disabledDate) : false;\n style.current = Object(util_[\"arrayFindIndex\"])(Object(util_[\"coerceTruthyValueToArray\"])(this.value), function (date) {\n return date.getFullYear() === year && date.getMonth() === month;\n }) >= 0;\n style.today = today.getFullYear() === year && today.getMonth() === month;\n style.default = defaultValue.some(function (date) {\n return _this.cellMatchesDate(cell, date);\n });\n\n if (cell.inRange) {\n style['in-range'] = true;\n\n if (cell.start) {\n style['start-date'] = true;\n }\n\n if (cell.end) {\n style['end-date'] = true;\n }\n }\n return style;\n },\n getMonthOfCell: function getMonthOfCell(month) {\n var year = this.date.getFullYear();\n return new Date(year, month, 1);\n },\n markRange: function markRange(minDate, maxDate) {\n minDate = getMonthTimestamp(minDate);\n maxDate = getMonthTimestamp(maxDate) || minDate;\n var _ref = [Math.min(minDate, maxDate), Math.max(minDate, maxDate)];\n minDate = _ref[0];\n maxDate = _ref[1];\n\n var rows = this.rows;\n for (var i = 0, k = rows.length; i < k; i++) {\n var row = rows[i];\n for (var j = 0, l = row.length; j < l; j++) {\n\n var cell = row[j];\n var index = i * 4 + j;\n var time = new Date(this.date.getFullYear(), index).getTime();\n\n cell.inRange = minDate && time >= minDate && time <= maxDate;\n cell.start = minDate && time === minDate;\n cell.end = maxDate && time === maxDate;\n }\n }\n },\n handleMouseMove: function handleMouseMove(event) {\n if (!this.rangeState.selecting) return;\n\n var target = event.target;\n if (target.tagName === 'A') {\n target = target.parentNode.parentNode;\n }\n if (target.tagName === 'DIV') {\n target = target.parentNode;\n }\n if (target.tagName !== 'TD') return;\n\n var row = target.parentNode.rowIndex;\n var column = target.cellIndex;\n // can not select disabled date\n if (this.rows[row][column].disabled) return;\n\n // only update rangeState when mouse moves to a new cell\n // this avoids frequent Date object creation and improves performance\n if (row !== this.lastRow || column !== this.lastColumn) {\n this.lastRow = row;\n this.lastColumn = column;\n this.$emit('changerange', {\n minDate: this.minDate,\n maxDate: this.maxDate,\n rangeState: {\n selecting: true,\n endDate: this.getMonthOfCell(row * 4 + column)\n }\n });\n }\n },\n handleMonthTableClick: function handleMonthTableClick(event) {\n var target = event.target;\n if (target.tagName === 'A') {\n target = target.parentNode.parentNode;\n }\n if (target.tagName === 'DIV') {\n target = target.parentNode;\n }\n if (target.tagName !== 'TD') return;\n if (Object(dom_[\"hasClass\"])(target, 'disabled')) return;\n var column = target.cellIndex;\n var row = target.parentNode.rowIndex;\n var month = row * 4 + column;\n var newDate = this.getMonthOfCell(month);\n if (this.selectionMode === 'range') {\n if (!this.rangeState.selecting) {\n this.$emit('pick', { minDate: newDate, maxDate: null });\n this.rangeState.selecting = true;\n } else {\n if (newDate >= this.minDate) {\n this.$emit('pick', { minDate: this.minDate, maxDate: newDate });\n } else {\n this.$emit('pick', { minDate: newDate, maxDate: this.minDate });\n }\n this.rangeState.selecting = false;\n }\n } else if (this.selectionMode === 'months') {\n var value = this.value || [];\n var year = this.date.getFullYear();\n var newValue = Object(util_[\"arrayFindIndex\"])(value, function (date) {\n return date.getFullYear() === year && date.getMonth() === month;\n }) >= 0 ? month_tablevue_type_script_lang_js_removeFromArray(value, function (date) {\n return date.getTime() === newDate.getTime();\n }) : [].concat(value, [newDate]);\n this.$emit('pick', newValue);\n } else {\n this.$emit('pick', month);\n }\n }\n },\n\n computed: {\n rows: function rows() {\n var _this2 = this;\n\n // TODO: refactory rows / getCellClasses\n var rows = this.tableRows;\n var disabledDate = this.disabledDate;\n var selectedDate = [];\n var now = getMonthTimestamp(new Date());\n\n for (var i = 0; i < 3; i++) {\n var row = rows[i];\n\n var _loop = function _loop(j) {\n var cell = row[j];\n if (!cell) {\n cell = { row: i, column: j, type: 'normal', inRange: false, start: false, end: false };\n }\n\n cell.type = 'normal';\n\n var index = i * 4 + j;\n var time = new Date(_this2.date.getFullYear(), index).getTime();\n cell.inRange = time >= getMonthTimestamp(_this2.minDate) && time <= getMonthTimestamp(_this2.maxDate);\n cell.start = _this2.minDate && time === getMonthTimestamp(_this2.minDate);\n cell.end = _this2.maxDate && time === getMonthTimestamp(_this2.maxDate);\n var isToday = time === now;\n\n if (isToday) {\n cell.type = 'today';\n }\n cell.text = index;\n var cellDate = new Date(time);\n cell.disabled = typeof disabledDate === 'function' && disabledDate(cellDate);\n cell.selected = Object(util_[\"arrayFind\"])(selectedDate, function (date) {\n return date.getTime() === cellDate.getTime();\n });\n\n _this2.$set(row, j, cell);\n };\n\n for (var j = 0; j < 4; j++) {\n _loop(j);\n }\n }\n return rows;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/basic/month-table.vue?vue&type=script&lang=js&\n /* harmony default export */ var basic_month_tablevue_type_script_lang_js_ = (month_tablevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/basic/month-table.vue\n\n\n\n\n\n/* normalize component */\n\nvar month_table_component = normalizeComponent(\n basic_month_tablevue_type_script_lang_js_,\n month_tablevue_type_template_id_654d4f42_render,\n month_tablevue_type_template_id_654d4f42_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var month_table_api; }\nmonth_table_component.options.__file = \"packages/date-picker/src/basic/month-table.vue\"\n/* harmony default export */ var month_table = (month_table_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/date-table.vue?vue&type=template&id=5d1f3341&\nvar date_tablevue_type_template_id_5d1f3341_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"table\",\n {\n staticClass: \"el-date-table\",\n class: { \"is-week-mode\": _vm.selectionMode === \"week\" },\n attrs: { cellspacing: \"0\", cellpadding: \"0\" },\n on: { click: _vm.handleClick, mousemove: _vm.handleMouseMove }\n },\n [\n _c(\n \"tbody\",\n [\n _c(\n \"tr\",\n [\n _vm.showWeekNumber\n ? _c(\"th\", [_vm._v(_vm._s(_vm.t(\"el.datepicker.week\")))])\n : _vm._e(),\n _vm._l(_vm.WEEKS, function(week, key) {\n return _c(\"th\", { key: key }, [\n _vm._v(_vm._s(_vm.t(\"el.datepicker.weeks.\" + week)))\n ])\n })\n ],\n 2\n ),\n _vm._l(_vm.rows, function(row, key) {\n return _c(\n \"tr\",\n {\n key: key,\n staticClass: \"el-date-table__row\",\n class: { current: _vm.isWeekActive(row[1]) }\n },\n _vm._l(row, function(cell, key) {\n return _c(\"td\", { key: key, class: _vm.getCellClasses(cell) }, [\n _c(\"div\", [\n _c(\"span\", [\n _vm._v(\"\\n \" + _vm._s(cell.text) + \"\\n \")\n ])\n ])\n ])\n }),\n 0\n )\n })\n ],\n 2\n )\n ]\n )\n}\nvar date_tablevue_type_template_id_5d1f3341_staticRenderFns = []\ndate_tablevue_type_template_id_5d1f3341_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/basic/date-table.vue?vue&type=template&id=5d1f3341&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/date-table.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\nvar _WEEKS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar date_tablevue_type_script_lang_js_getDateTimestamp = function getDateTimestamp(time) {\n if (typeof time === 'number' || typeof time === 'string') {\n return Object(date_util_[\"clearTime\"])(new Date(time)).getTime();\n } else if (time instanceof Date) {\n return Object(date_util_[\"clearTime\"])(time).getTime();\n } else {\n return NaN;\n }\n};\n\n// remove the first element that satisfies `pred` from arr\n// return a new array if modification occurs\n// return the original array otherwise\nvar date_tablevue_type_script_lang_js_removeFromArray = function removeFromArray(arr, pred) {\n var idx = typeof pred === 'function' ? Object(util_[\"arrayFindIndex\"])(arr, pred) : arr.indexOf(pred);\n return idx >= 0 ? [].concat(arr.slice(0, idx), arr.slice(idx + 1)) : arr;\n};\n\n/* harmony default export */ var date_tablevue_type_script_lang_js_ = ({\n mixins: [locale_default.a],\n\n props: {\n firstDayOfWeek: {\n default: 7,\n type: Number,\n validator: function validator(val) {\n return val >= 1 && val <= 7;\n }\n },\n\n value: {},\n\n defaultValue: {\n validator: function validator(val) {\n // either: null, valid Date object, Array of valid Date objects\n return val === null || Object(date_util_[\"isDate\"])(val) || Array.isArray(val) && val.every(date_util_[\"isDate\"]);\n }\n },\n\n date: {},\n\n selectionMode: {\n default: 'day'\n },\n\n showWeekNumber: {\n type: Boolean,\n default: false\n },\n\n disabledDate: {},\n\n cellClassName: {},\n\n minDate: {},\n\n maxDate: {},\n\n rangeState: {\n default: function _default() {\n return {\n endDate: null,\n selecting: false\n };\n }\n }\n },\n\n computed: {\n offsetDay: function offsetDay() {\n var week = this.firstDayOfWeek;\n // 周日为界限,左右偏移的天数,3217654 例如周一就是 -1,目的是调整前两行日期的位置\n return week > 3 ? 7 - week : -week;\n },\n WEEKS: function WEEKS() {\n var week = this.firstDayOfWeek;\n return _WEEKS.concat(_WEEKS).slice(week, week + 7);\n },\n year: function year() {\n return this.date.getFullYear();\n },\n month: function month() {\n return this.date.getMonth();\n },\n startDate: function startDate() {\n return Object(date_util_[\"getStartDateOfMonth\"])(this.year, this.month);\n },\n rows: function rows() {\n var _this = this;\n\n // TODO: refactory rows / getCellClasses\n var date = new Date(this.year, this.month, 1);\n var day = Object(date_util_[\"getFirstDayOfMonth\"])(date); // day of first day\n var dateCountOfMonth = Object(date_util_[\"getDayCountOfMonth\"])(date.getFullYear(), date.getMonth());\n var dateCountOfLastMonth = Object(date_util_[\"getDayCountOfMonth\"])(date.getFullYear(), date.getMonth() === 0 ? 11 : date.getMonth() - 1);\n\n day = day === 0 ? 7 : day;\n\n var offset = this.offsetDay;\n var rows = this.tableRows;\n var count = 1;\n\n var startDate = this.startDate;\n var disabledDate = this.disabledDate;\n var cellClassName = this.cellClassName;\n var selectedDate = this.selectionMode === 'dates' ? Object(util_[\"coerceTruthyValueToArray\"])(this.value) : [];\n var now = date_tablevue_type_script_lang_js_getDateTimestamp(new Date());\n\n for (var i = 0; i < 6; i++) {\n var row = rows[i];\n\n if (this.showWeekNumber) {\n if (!row[0]) {\n row[0] = { type: 'week', text: Object(date_util_[\"getWeekNumber\"])(Object(date_util_[\"nextDate\"])(startDate, i * 7 + 1)) };\n }\n }\n\n var _loop = function _loop(j) {\n var cell = row[_this.showWeekNumber ? j + 1 : j];\n if (!cell) {\n cell = { row: i, column: j, type: 'normal', inRange: false, start: false, end: false };\n }\n\n cell.type = 'normal';\n\n var index = i * 7 + j;\n var time = Object(date_util_[\"nextDate\"])(startDate, index - offset).getTime();\n cell.inRange = time >= date_tablevue_type_script_lang_js_getDateTimestamp(_this.minDate) && time <= date_tablevue_type_script_lang_js_getDateTimestamp(_this.maxDate);\n cell.start = _this.minDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(_this.minDate);\n cell.end = _this.maxDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(_this.maxDate);\n var isToday = time === now;\n\n if (isToday) {\n cell.type = 'today';\n }\n\n if (i >= 0 && i <= 1) {\n var numberOfDaysFromPreviousMonth = day + offset < 0 ? 7 + day + offset : day + offset;\n\n if (j + i * 7 >= numberOfDaysFromPreviousMonth) {\n cell.text = count++;\n } else {\n cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - j % 7) + 1 + i * 7;\n cell.type = 'prev-month';\n }\n } else {\n if (count <= dateCountOfMonth) {\n cell.text = count++;\n } else {\n cell.text = count++ - dateCountOfMonth;\n cell.type = 'next-month';\n }\n }\n\n var cellDate = new Date(time);\n cell.disabled = typeof disabledDate === 'function' && disabledDate(cellDate);\n cell.selected = Object(util_[\"arrayFind\"])(selectedDate, function (date) {\n return date.getTime() === cellDate.getTime();\n });\n cell.customClass = typeof cellClassName === 'function' && cellClassName(cellDate);\n _this.$set(row, _this.showWeekNumber ? j + 1 : j, cell);\n };\n\n for (var j = 0; j < 7; j++) {\n _loop(j);\n }\n\n if (this.selectionMode === 'week') {\n var start = this.showWeekNumber ? 1 : 0;\n var end = this.showWeekNumber ? 7 : 6;\n var isWeekActive = this.isWeekActive(row[start + 1]);\n\n row[start].inRange = isWeekActive;\n row[start].start = isWeekActive;\n row[end].inRange = isWeekActive;\n row[end].end = isWeekActive;\n }\n }\n\n return rows;\n }\n },\n\n watch: {\n 'rangeState.endDate': function rangeStateEndDate(newVal) {\n this.markRange(this.minDate, newVal);\n },\n minDate: function minDate(newVal, oldVal) {\n if (date_tablevue_type_script_lang_js_getDateTimestamp(newVal) !== date_tablevue_type_script_lang_js_getDateTimestamp(oldVal)) {\n this.markRange(this.minDate, this.maxDate);\n }\n },\n maxDate: function maxDate(newVal, oldVal) {\n if (date_tablevue_type_script_lang_js_getDateTimestamp(newVal) !== date_tablevue_type_script_lang_js_getDateTimestamp(oldVal)) {\n this.markRange(this.minDate, this.maxDate);\n }\n }\n },\n\n data: function data() {\n return {\n tableRows: [[], [], [], [], [], []],\n lastRow: null,\n lastColumn: null\n };\n },\n\n\n methods: {\n cellMatchesDate: function cellMatchesDate(cell, date) {\n var value = new Date(date);\n return this.year === value.getFullYear() && this.month === value.getMonth() && Number(cell.text) === value.getDate();\n },\n getCellClasses: function getCellClasses(cell) {\n var _this2 = this;\n\n var selectionMode = this.selectionMode;\n var defaultValue = this.defaultValue ? Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue] : [];\n\n var classes = [];\n if ((cell.type === 'normal' || cell.type === 'today') && !cell.disabled) {\n classes.push('available');\n if (cell.type === 'today') {\n classes.push('today');\n }\n } else {\n classes.push(cell.type);\n }\n\n if (cell.type === 'normal' && defaultValue.some(function (date) {\n return _this2.cellMatchesDate(cell, date);\n })) {\n classes.push('default');\n }\n\n if (selectionMode === 'day' && (cell.type === 'normal' || cell.type === 'today') && this.cellMatchesDate(cell, this.value)) {\n classes.push('current');\n }\n\n if (cell.inRange && (cell.type === 'normal' || cell.type === 'today' || this.selectionMode === 'week')) {\n classes.push('in-range');\n\n if (cell.start) {\n classes.push('start-date');\n }\n\n if (cell.end) {\n classes.push('end-date');\n }\n }\n\n if (cell.disabled) {\n classes.push('disabled');\n }\n\n if (cell.selected) {\n classes.push('selected');\n }\n\n if (cell.customClass) {\n classes.push(cell.customClass);\n }\n\n return classes.join(' ');\n },\n getDateOfCell: function getDateOfCell(row, column) {\n var offsetFromStart = row * 7 + (column - (this.showWeekNumber ? 1 : 0)) - this.offsetDay;\n return Object(date_util_[\"nextDate\"])(this.startDate, offsetFromStart);\n },\n isWeekActive: function isWeekActive(cell) {\n if (this.selectionMode !== 'week') return false;\n var newDate = new Date(this.year, this.month, 1);\n var year = newDate.getFullYear();\n var month = newDate.getMonth();\n\n if (cell.type === 'prev-month') {\n newDate.setMonth(month === 0 ? 11 : month - 1);\n newDate.setFullYear(month === 0 ? year - 1 : year);\n }\n\n if (cell.type === 'next-month') {\n newDate.setMonth(month === 11 ? 0 : month + 1);\n newDate.setFullYear(month === 11 ? year + 1 : year);\n }\n\n newDate.setDate(parseInt(cell.text, 10));\n\n if (Object(date_util_[\"isDate\"])(this.value)) {\n var dayOffset = (this.value.getDay() - this.firstDayOfWeek + 7) % 7 - 1;\n var weekDate = Object(date_util_[\"prevDate\"])(this.value, dayOffset);\n return weekDate.getTime() === newDate.getTime();\n }\n return false;\n },\n markRange: function markRange(minDate, maxDate) {\n minDate = date_tablevue_type_script_lang_js_getDateTimestamp(minDate);\n maxDate = date_tablevue_type_script_lang_js_getDateTimestamp(maxDate) || minDate;\n var _ref = [Math.min(minDate, maxDate), Math.max(minDate, maxDate)];\n minDate = _ref[0];\n maxDate = _ref[1];\n\n\n var startDate = this.startDate;\n var rows = this.rows;\n for (var i = 0, k = rows.length; i < k; i++) {\n var row = rows[i];\n for (var j = 0, l = row.length; j < l; j++) {\n if (this.showWeekNumber && j === 0) continue;\n\n var _cell = row[j];\n var index = i * 7 + j + (this.showWeekNumber ? -1 : 0);\n var time = Object(date_util_[\"nextDate\"])(startDate, index - this.offsetDay).getTime();\n\n _cell.inRange = minDate && time >= minDate && time <= maxDate;\n _cell.start = minDate && time === minDate;\n _cell.end = maxDate && time === maxDate;\n }\n }\n },\n handleMouseMove: function handleMouseMove(event) {\n if (!this.rangeState.selecting) return;\n\n var target = event.target;\n if (target.tagName === 'SPAN') {\n target = target.parentNode.parentNode;\n }\n if (target.tagName === 'DIV') {\n target = target.parentNode;\n }\n if (target.tagName !== 'TD') return;\n\n var row = target.parentNode.rowIndex - 1;\n var column = target.cellIndex;\n\n // can not select disabled date\n if (this.rows[row][column].disabled) return;\n\n // only update rangeState when mouse moves to a new cell\n // this avoids frequent Date object creation and improves performance\n if (row !== this.lastRow || column !== this.lastColumn) {\n this.lastRow = row;\n this.lastColumn = column;\n this.$emit('changerange', {\n minDate: this.minDate,\n maxDate: this.maxDate,\n rangeState: {\n selecting: true,\n endDate: this.getDateOfCell(row, column)\n }\n });\n }\n },\n handleClick: function handleClick(event) {\n var target = event.target;\n if (target.tagName === 'SPAN') {\n target = target.parentNode.parentNode;\n }\n if (target.tagName === 'DIV') {\n target = target.parentNode;\n }\n\n if (target.tagName !== 'TD') return;\n\n var row = target.parentNode.rowIndex - 1;\n var column = this.selectionMode === 'week' ? 1 : target.cellIndex;\n var cell = this.rows[row][column];\n\n if (cell.disabled || cell.type === 'week') return;\n\n var newDate = this.getDateOfCell(row, column);\n\n if (this.selectionMode === 'range') {\n if (!this.rangeState.selecting) {\n this.$emit('pick', { minDate: newDate, maxDate: null });\n this.rangeState.selecting = true;\n } else {\n if (newDate >= this.minDate) {\n this.$emit('pick', { minDate: this.minDate, maxDate: newDate });\n } else {\n this.$emit('pick', { minDate: newDate, maxDate: this.minDate });\n }\n this.rangeState.selecting = false;\n }\n } else if (this.selectionMode === 'day') {\n this.$emit('pick', newDate);\n } else if (this.selectionMode === 'week') {\n var weekNumber = Object(date_util_[\"getWeekNumber\"])(newDate);\n var value = newDate.getFullYear() + 'w' + weekNumber;\n this.$emit('pick', {\n year: newDate.getFullYear(),\n week: weekNumber,\n value: value,\n date: newDate\n });\n } else if (this.selectionMode === 'dates') {\n var _value = this.value || [];\n var newValue = cell.selected ? date_tablevue_type_script_lang_js_removeFromArray(_value, function (date) {\n return date.getTime() === newDate.getTime();\n }) : [].concat(_value, [newDate]);\n this.$emit('pick', newValue);\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/basic/date-table.vue?vue&type=script&lang=js&\n /* harmony default export */ var basic_date_tablevue_type_script_lang_js_ = (date_tablevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/basic/date-table.vue\n\n\n\n\n\n/* normalize component */\n\nvar date_table_component = normalizeComponent(\n basic_date_tablevue_type_script_lang_js_,\n date_tablevue_type_template_id_5d1f3341_render,\n date_tablevue_type_template_id_5d1f3341_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var date_table_api; }\ndate_table_component.options.__file = \"packages/date-picker/src/basic/date-table.vue\"\n/* harmony default export */ var date_table = (date_table_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/date.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var datevue_type_script_lang_js_ = ({\n mixins: [locale_default.a],\n\n directives: { Clickoutside: clickoutside_default.a },\n\n watch: {\n showTime: function showTime(val) {\n var _this = this;\n\n /* istanbul ignore if */\n if (!val) return;\n this.$nextTick(function (_) {\n var inputElm = _this.$refs.input.$el;\n if (inputElm) {\n _this.pickerWidth = inputElm.getBoundingClientRect().width + 10;\n }\n });\n },\n value: function value(val) {\n if (this.selectionMode === 'dates' && this.value) return;\n if (this.selectionMode === 'months' && this.value) return;\n if (this.selectionMode === 'years' && this.value) return;\n if (Object(date_util_[\"isDate\"])(val)) {\n this.date = new Date(val);\n } else {\n this.date = this.getDefaultValue();\n }\n },\n defaultValue: function defaultValue(val) {\n if (!Object(date_util_[\"isDate\"])(this.value)) {\n this.date = val ? new Date(val) : new Date();\n }\n },\n timePickerVisible: function timePickerVisible(val) {\n var _this2 = this;\n\n if (val) this.$nextTick(function () {\n return _this2.$refs.timepicker.adjustSpinners();\n });\n },\n selectionMode: function selectionMode(newVal) {\n if (newVal === 'month') {\n /* istanbul ignore next */\n if (this.currentView !== 'year' || this.currentView !== 'month') {\n this.currentView = 'month';\n }\n } else if (newVal === 'dates') {\n this.currentView = 'date';\n } else if (newVal === 'years') {\n this.currentView = 'year';\n } else if (newVal === 'months') {\n this.currentView = 'month';\n }\n }\n },\n\n methods: {\n proxyTimePickerDataProperties: function proxyTimePickerDataProperties() {\n var _this3 = this;\n\n var format = function format(timeFormat) {\n _this3.$refs.timepicker.format = timeFormat;\n };\n var value = function value(_value) {\n _this3.$refs.timepicker.value = _value;\n };\n var date = function date(_date) {\n _this3.$refs.timepicker.date = _date;\n };\n var selectableRange = function selectableRange(_selectableRange) {\n _this3.$refs.timepicker.selectableRange = _selectableRange;\n };\n\n this.$watch('value', value);\n this.$watch('date', date);\n this.$watch('selectableRange', selectableRange);\n\n format(this.timeFormat);\n value(this.value);\n date(this.date);\n selectableRange(this.selectableRange);\n },\n handleClear: function handleClear() {\n this.date = this.getDefaultValue();\n this.$emit('pick', null);\n },\n emit: function emit(value) {\n var _this4 = this;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (!value) {\n this.$emit.apply(this, ['pick', value].concat(args));\n } else if (Array.isArray(value)) {\n var dates = value.map(function (date) {\n return _this4.showTime ? Object(date_util_[\"clearMilliseconds\"])(date) : Object(date_util_[\"clearTime\"])(date);\n });\n this.$emit.apply(this, ['pick', dates].concat(args));\n } else {\n this.$emit.apply(this, ['pick', this.showTime ? Object(date_util_[\"clearMilliseconds\"])(value) : Object(date_util_[\"clearTime\"])(value)].concat(args));\n }\n this.userInputDate = null;\n this.userInputTime = null;\n },\n\n\n // resetDate() {\n // this.date = new Date(this.date);\n // },\n\n showMonthPicker: function showMonthPicker() {\n this.currentView = 'month';\n },\n showYearPicker: function showYearPicker() {\n this.currentView = 'year';\n },\n\n\n // XXX: 没用到\n // handleLabelClick() {\n // if (this.currentView === 'date') {\n // this.showMonthPicker();\n // } else if (this.currentView === 'month') {\n // this.showYearPicker();\n // }\n // },\n\n prevMonth: function prevMonth() {\n this.date = Object(date_util_[\"prevMonth\"])(this.date);\n },\n nextMonth: function nextMonth() {\n this.date = Object(date_util_[\"nextMonth\"])(this.date);\n },\n prevYear: function prevYear() {\n if (this.currentView === 'year') {\n this.date = Object(date_util_[\"prevYear\"])(this.date, 10);\n } else {\n this.date = Object(date_util_[\"prevYear\"])(this.date);\n }\n },\n nextYear: function nextYear() {\n if (this.currentView === 'year') {\n this.date = Object(date_util_[\"nextYear\"])(this.date, 10);\n } else {\n this.date = Object(date_util_[\"nextYear\"])(this.date);\n }\n },\n handleShortcutClick: function handleShortcutClick(shortcut) {\n if (shortcut.onClick) {\n shortcut.onClick(this);\n }\n },\n handleTimePick: function handleTimePick(value, visible, first) {\n if (Object(date_util_[\"isDate\"])(value)) {\n var newDate = this.value ? Object(date_util_[\"modifyTime\"])(this.value, value.getHours(), value.getMinutes(), value.getSeconds()) : Object(date_util_[\"modifyWithTimeString\"])(this.getDefaultValue(), this.defaultTime);\n this.date = newDate;\n this.emit(this.date, true);\n } else {\n this.emit(value, true);\n }\n if (!first) {\n this.timePickerVisible = visible;\n }\n },\n handleTimePickClose: function handleTimePickClose() {\n this.timePickerVisible = false;\n },\n handleMonthPick: function handleMonthPick(month) {\n if (this.selectionMode === 'month') {\n this.date = Object(date_util_[\"modifyDate\"])(this.date, this.year, month, 1);\n this.emit(this.date);\n } else if (this.selectionMode === 'months') {\n this.emit(month, true);\n } else {\n this.date = Object(date_util_[\"changeYearMonthAndClampDate\"])(this.date, this.year, month);\n // TODO: should emit intermediate value ??\n // this.emit(this.date);\n this.currentView = 'date';\n }\n },\n handleDatePick: function handleDatePick(value) {\n if (this.selectionMode === 'day') {\n var newDate = this.value ? Object(date_util_[\"modifyDate\"])(this.value, value.getFullYear(), value.getMonth(), value.getDate()) : Object(date_util_[\"modifyWithTimeString\"])(value, this.defaultTime);\n // change default time while out of selectableRange\n if (!this.checkDateWithinRange(newDate)) {\n newDate = Object(date_util_[\"modifyDate\"])(this.selectableRange[0][0], value.getFullYear(), value.getMonth(), value.getDate());\n }\n this.date = newDate;\n this.emit(this.date, this.showTime);\n } else if (this.selectionMode === 'week') {\n this.emit(value.date);\n } else if (this.selectionMode === 'dates') {\n this.emit(value, true); // set false to keep panel open\n }\n },\n handleYearPick: function handleYearPick(year) {\n if (this.selectionMode === 'year') {\n this.date = Object(date_util_[\"modifyDate\"])(this.date, year, 0, 1);\n this.emit(this.date);\n } else if (this.selectionMode === 'years') {\n this.emit(year, true);\n } else {\n this.date = Object(date_util_[\"changeYearMonthAndClampDate\"])(this.date, year, this.month);\n // TODO: should emit intermediate value ??\n // this.emit(this.date, true);\n this.currentView = 'month';\n }\n },\n changeToNow: function changeToNow() {\n // NOTE: not a permanent solution\n // consider disable \"now\" button in the future\n if ((!this.disabledDate || !this.disabledDate(new Date())) && this.checkDateWithinRange(new Date())) {\n this.date = new Date();\n this.emit(this.date);\n }\n },\n confirm: function confirm() {\n if (this.selectionMode === 'dates' || this.selectionMode === 'months' || this.selectionMode === 'years') {\n this.emit(this.value);\n } else {\n // value were emitted in handle{Date,Time}Pick, nothing to update here\n // deal with the scenario where: user opens the picker, then confirm without doing anything\n var value = this.value ? this.value : Object(date_util_[\"modifyWithTimeString\"])(this.getDefaultValue(), this.defaultTime);\n this.date = new Date(value); // refresh date\n this.emit(value);\n }\n },\n resetView: function resetView() {\n if (this.selectionMode === 'month' || this.selectionMode === 'months') {\n this.currentView = 'month';\n } else if (this.selectionMode === 'year' || this.selectionMode === 'years') {\n this.currentView = 'year';\n } else {\n this.currentView = 'date';\n }\n },\n handleEnter: function handleEnter() {\n document.body.addEventListener('keydown', this.handleKeydown);\n },\n handleLeave: function handleLeave() {\n this.$emit('dodestroy');\n document.body.removeEventListener('keydown', this.handleKeydown);\n },\n handleKeydown: function handleKeydown(event) {\n var keyCode = event.keyCode;\n var list = [38, 40, 37, 39];\n if (this.visible && !this.timePickerVisible) {\n if (list.indexOf(keyCode) !== -1) {\n this.handleKeyControl(keyCode);\n event.stopPropagation();\n event.preventDefault();\n }\n if (keyCode === 13 && this.userInputDate === null && this.userInputTime === null) {\n // Enter\n this.emit(this.date, false);\n }\n }\n },\n handleKeyControl: function handleKeyControl(keyCode) {\n var mapping = {\n 'year': {\n 38: -4, 40: 4, 37: -1, 39: 1, offset: function offset(date, step) {\n return date.setFullYear(date.getFullYear() + step);\n }\n },\n 'month': {\n 38: -4, 40: 4, 37: -1, 39: 1, offset: function offset(date, step) {\n return date.setMonth(date.getMonth() + step);\n }\n },\n 'week': {\n 38: -1, 40: 1, 37: -1, 39: 1, offset: function offset(date, step) {\n return date.setDate(date.getDate() + step * 7);\n }\n },\n 'day': {\n 38: -7, 40: 7, 37: -1, 39: 1, offset: function offset(date, step) {\n return date.setDate(date.getDate() + step);\n }\n }\n };\n var mode = this.selectionMode;\n var year = 3.1536e10;\n var now = this.date.getTime();\n var newDate = new Date(this.date.getTime());\n while (Math.abs(now - newDate.getTime()) <= year) {\n var map = mapping[mode];\n map.offset(newDate, map[keyCode]);\n if (typeof this.disabledDate === 'function' && this.disabledDate(newDate)) {\n continue;\n }\n this.date = newDate;\n this.$emit('pick', newDate, true);\n break;\n }\n },\n handleVisibleTimeChange: function handleVisibleTimeChange(value) {\n var time = Object(date_util_[\"parseDate\"])(value, this.timeFormat);\n if (time && this.checkDateWithinRange(time)) {\n this.date = Object(date_util_[\"modifyDate\"])(time, this.year, this.month, this.monthDate);\n this.userInputTime = null;\n this.$refs.timepicker.value = this.date;\n this.timePickerVisible = false;\n this.emit(this.date, true);\n }\n },\n handleVisibleDateChange: function handleVisibleDateChange(value) {\n var date = Object(date_util_[\"parseDate\"])(value, this.dateFormat);\n if (date) {\n if (typeof this.disabledDate === 'function' && this.disabledDate(date)) {\n return;\n }\n this.date = Object(date_util_[\"modifyTime\"])(date, this.date.getHours(), this.date.getMinutes(), this.date.getSeconds());\n this.userInputDate = null;\n this.resetView();\n this.emit(this.date, true);\n }\n },\n isValidValue: function isValidValue(value) {\n return value && !isNaN(value) && (typeof this.disabledDate === 'function' ? !this.disabledDate(value) : true) && this.checkDateWithinRange(value);\n },\n getDefaultValue: function getDefaultValue() {\n // if default-value is set, return it\n // otherwise, return now (the moment this method gets called)\n return this.defaultValue ? new Date(this.defaultValue) : new Date();\n },\n checkDateWithinRange: function checkDateWithinRange(date) {\n return this.selectableRange.length > 0 ? Object(date_util_[\"timeWithinRange\"])(date, this.selectableRange, this.format || 'HH:mm:ss') : true;\n }\n },\n\n components: {\n TimePicker: panel_time, YearTable: year_table, MonthTable: month_table, DateTable: date_table, ElInput: input_default.a, ElButton: button_default.a\n },\n\n data: function data() {\n return {\n popperClass: '',\n date: new Date(),\n value: '',\n defaultValue: null, // use getDefaultValue() for time computation\n defaultTime: null,\n showTime: false,\n selectionMode: 'day',\n shortcuts: '',\n visible: false,\n currentView: 'date',\n disabledDate: '',\n cellClassName: '',\n selectableRange: [],\n firstDayOfWeek: 7,\n showWeekNumber: false,\n timePickerVisible: false,\n format: '',\n arrowControl: false,\n userInputDate: null,\n userInputTime: null\n };\n },\n\n\n computed: {\n year: function year() {\n return this.date.getFullYear();\n },\n month: function month() {\n return this.date.getMonth();\n },\n week: function week() {\n return Object(date_util_[\"getWeekNumber\"])(this.date);\n },\n monthDate: function monthDate() {\n return this.date.getDate();\n },\n footerVisible: function footerVisible() {\n return this.showTime || this.selectionMode === 'dates' || this.selectionMode === 'months' || this.selectionMode === 'years';\n },\n visibleTime: function visibleTime() {\n if (this.userInputTime !== null) {\n return this.userInputTime;\n } else {\n return Object(date_util_[\"formatDate\"])(this.value || this.defaultValue, this.timeFormat);\n }\n },\n visibleDate: function visibleDate() {\n if (this.userInputDate !== null) {\n return this.userInputDate;\n } else {\n return Object(date_util_[\"formatDate\"])(this.value || this.defaultValue, this.dateFormat);\n }\n },\n yearLabel: function yearLabel() {\n var yearTranslation = this.t('el.datepicker.year');\n if (this.currentView === 'year') {\n var startYear = Math.floor(this.year / 10) * 10;\n if (yearTranslation) {\n return startYear + ' ' + yearTranslation + ' - ' + (startYear + 9) + ' ' + yearTranslation;\n }\n return startYear + ' - ' + (startYear + 9);\n }\n return this.year + ' ' + yearTranslation;\n },\n timeFormat: function timeFormat() {\n if (this.format) {\n return Object(date_util_[\"extractTimeFormat\"])(this.format);\n } else {\n return 'HH:mm:ss';\n }\n },\n dateFormat: function dateFormat() {\n if (this.format) {\n return Object(date_util_[\"extractDateFormat\"])(this.format);\n } else {\n return 'yyyy-MM-dd';\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/date.vue?vue&type=script&lang=js&\n /* harmony default export */ var panel_datevue_type_script_lang_js_ = (datevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/panel/date.vue\n\n\n\n\n\n/* normalize component */\n\nvar date_component = normalizeComponent(\n panel_datevue_type_script_lang_js_,\n datevue_type_template_id_2440d4ea_render,\n datevue_type_template_id_2440d4ea_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var date_api; }\ndate_component.options.__file = \"packages/date-picker/src/panel/date.vue\"\n/* harmony default export */ var panel_date = (date_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/date-range.vue?vue&type=template&id=2652849a&\nvar date_rangevue_type_template_id_2652849a_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: {\n \"after-leave\": function($event) {\n _vm.$emit(\"dodestroy\")\n }\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-picker-panel el-date-range-picker el-popper\",\n class: [\n {\n \"has-sidebar\": _vm.$slots.sidebar || _vm.shortcuts,\n \"has-time\": _vm.showTime\n },\n _vm.popperClass\n ]\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-picker-panel__body-wrapper\" },\n [\n _vm._t(\"sidebar\"),\n _vm.shortcuts\n ? _c(\n \"div\",\n { staticClass: \"el-picker-panel__sidebar\" },\n _vm._l(_vm.shortcuts, function(shortcut, key) {\n return _c(\n \"button\",\n {\n key: key,\n staticClass: \"el-picker-panel__shortcut\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n _vm.handleShortcutClick(shortcut)\n }\n }\n },\n [_vm._v(_vm._s(shortcut.text))]\n )\n }),\n 0\n )\n : _vm._e(),\n _c(\"div\", { staticClass: \"el-picker-panel__body\" }, [\n _vm.showTime\n ? _c(\n \"div\",\n { staticClass: \"el-date-range-picker__time-header\" },\n [\n _c(\n \"span\",\n { staticClass: \"el-date-range-picker__editors-wrap\" },\n [\n _c(\n \"span\",\n {\n staticClass:\n \"el-date-range-picker__time-picker-wrap\"\n },\n [\n _c(\"el-input\", {\n ref: \"minInput\",\n staticClass: \"el-date-range-picker__editor\",\n attrs: {\n size: \"small\",\n disabled: _vm.rangeState.selecting,\n placeholder: _vm.t(\n \"el.datepicker.startDate\"\n ),\n value: _vm.minVisibleDate\n },\n on: {\n input: function(val) {\n return _vm.handleDateInput(val, \"min\")\n },\n change: function(val) {\n return _vm.handleDateChange(val, \"min\")\n }\n }\n })\n ],\n 1\n ),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleMinTimeClose,\n expression: \"handleMinTimeClose\"\n }\n ],\n staticClass:\n \"el-date-range-picker__time-picker-wrap\"\n },\n [\n _c(\"el-input\", {\n staticClass: \"el-date-range-picker__editor\",\n attrs: {\n size: \"small\",\n disabled: _vm.rangeState.selecting,\n placeholder: _vm.t(\n \"el.datepicker.startTime\"\n ),\n value: _vm.minVisibleTime\n },\n on: {\n focus: function($event) {\n _vm.minTimePickerVisible = true\n },\n input: function(val) {\n return _vm.handleTimeInput(val, \"min\")\n },\n change: function(val) {\n return _vm.handleTimeChange(val, \"min\")\n }\n }\n }),\n _c(\"time-picker\", {\n ref: \"minTimePicker\",\n attrs: {\n \"time-arrow-control\": _vm.arrowControl,\n visible: _vm.minTimePickerVisible\n },\n on: {\n pick: _vm.handleMinTimePick,\n mounted: function($event) {\n _vm.$refs.minTimePicker.format =\n _vm.timeFormat\n }\n }\n })\n ],\n 1\n )\n ]\n ),\n _c(\"span\", { staticClass: \"el-icon-arrow-right\" }),\n _c(\n \"span\",\n {\n staticClass:\n \"el-date-range-picker__editors-wrap is-right\"\n },\n [\n _c(\n \"span\",\n {\n staticClass:\n \"el-date-range-picker__time-picker-wrap\"\n },\n [\n _c(\"el-input\", {\n staticClass: \"el-date-range-picker__editor\",\n attrs: {\n size: \"small\",\n disabled: _vm.rangeState.selecting,\n placeholder: _vm.t(\"el.datepicker.endDate\"),\n value: _vm.maxVisibleDate,\n readonly: !_vm.minDate\n },\n on: {\n input: function(val) {\n return _vm.handleDateInput(val, \"max\")\n },\n change: function(val) {\n return _vm.handleDateChange(val, \"max\")\n }\n }\n })\n ],\n 1\n ),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleMaxTimeClose,\n expression: \"handleMaxTimeClose\"\n }\n ],\n staticClass:\n \"el-date-range-picker__time-picker-wrap\"\n },\n [\n _c(\"el-input\", {\n staticClass: \"el-date-range-picker__editor\",\n attrs: {\n size: \"small\",\n disabled: _vm.rangeState.selecting,\n placeholder: _vm.t(\"el.datepicker.endTime\"),\n value: _vm.maxVisibleTime,\n readonly: !_vm.minDate\n },\n on: {\n focus: function($event) {\n _vm.minDate &&\n (_vm.maxTimePickerVisible = true)\n },\n input: function(val) {\n return _vm.handleTimeInput(val, \"max\")\n },\n change: function(val) {\n return _vm.handleTimeChange(val, \"max\")\n }\n }\n }),\n _c(\"time-picker\", {\n ref: \"maxTimePicker\",\n attrs: {\n \"time-arrow-control\": _vm.arrowControl,\n visible: _vm.maxTimePickerVisible\n },\n on: {\n pick: _vm.handleMaxTimePick,\n mounted: function($event) {\n _vm.$refs.maxTimePicker.format =\n _vm.timeFormat\n }\n }\n })\n ],\n 1\n )\n ]\n )\n ]\n )\n : _vm._e(),\n _c(\n \"div\",\n {\n staticClass:\n \"el-picker-panel__content el-date-range-picker__content is-left\"\n },\n [\n _c(\"div\", { staticClass: \"el-date-range-picker__header\" }, [\n _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-d-arrow-left\",\n attrs: { type: \"button\" },\n on: { click: _vm.leftPrevYear }\n }),\n _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-arrow-left\",\n attrs: { type: \"button\" },\n on: { click: _vm.leftPrevMonth }\n }),\n _vm.unlinkPanels\n ? _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-d-arrow-right\",\n class: { \"is-disabled\": !_vm.enableYearArrow },\n attrs: {\n type: \"button\",\n disabled: !_vm.enableYearArrow\n },\n on: { click: _vm.leftNextYear }\n })\n : _vm._e(),\n _vm.unlinkPanels\n ? _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-arrow-right\",\n class: { \"is-disabled\": !_vm.enableMonthArrow },\n attrs: {\n type: \"button\",\n disabled: !_vm.enableMonthArrow\n },\n on: { click: _vm.leftNextMonth }\n })\n : _vm._e(),\n _c(\"div\", [_vm._v(_vm._s(_vm.leftLabel))])\n ]),\n _c(\"date-table\", {\n attrs: {\n \"selection-mode\": \"range\",\n date: _vm.leftDate,\n \"default-value\": _vm.defaultValue,\n \"min-date\": _vm.minDate,\n \"max-date\": _vm.maxDate,\n \"range-state\": _vm.rangeState,\n \"disabled-date\": _vm.disabledDate,\n \"cell-class-name\": _vm.cellClassName,\n \"first-day-of-week\": _vm.firstDayOfWeek\n },\n on: {\n changerange: _vm.handleChangeRange,\n pick: _vm.handleRangePick\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"el-picker-panel__content el-date-range-picker__content is-right\"\n },\n [\n _c(\"div\", { staticClass: \"el-date-range-picker__header\" }, [\n _vm.unlinkPanels\n ? _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-d-arrow-left\",\n class: { \"is-disabled\": !_vm.enableYearArrow },\n attrs: {\n type: \"button\",\n disabled: !_vm.enableYearArrow\n },\n on: { click: _vm.rightPrevYear }\n })\n : _vm._e(),\n _vm.unlinkPanels\n ? _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-arrow-left\",\n class: { \"is-disabled\": !_vm.enableMonthArrow },\n attrs: {\n type: \"button\",\n disabled: !_vm.enableMonthArrow\n },\n on: { click: _vm.rightPrevMonth }\n })\n : _vm._e(),\n _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-d-arrow-right\",\n attrs: { type: \"button\" },\n on: { click: _vm.rightNextYear }\n }),\n _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-arrow-right\",\n attrs: { type: \"button\" },\n on: { click: _vm.rightNextMonth }\n }),\n _c(\"div\", [_vm._v(_vm._s(_vm.rightLabel))])\n ]),\n _c(\"date-table\", {\n attrs: {\n \"selection-mode\": \"range\",\n date: _vm.rightDate,\n \"default-value\": _vm.defaultValue,\n \"min-date\": _vm.minDate,\n \"max-date\": _vm.maxDate,\n \"range-state\": _vm.rangeState,\n \"disabled-date\": _vm.disabledDate,\n \"cell-class-name\": _vm.cellClassName,\n \"first-day-of-week\": _vm.firstDayOfWeek\n },\n on: {\n changerange: _vm.handleChangeRange,\n pick: _vm.handleRangePick\n }\n })\n ],\n 1\n )\n ])\n ],\n 2\n ),\n _vm.showTime\n ? _c(\n \"div\",\n { staticClass: \"el-picker-panel__footer\" },\n [\n _c(\n \"el-button\",\n {\n staticClass: \"el-picker-panel__link-btn\",\n attrs: { size: \"mini\", type: \"text\" },\n on: { click: _vm.handleClear }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.t(\"el.datepicker.clear\")) +\n \"\\n \"\n )\n ]\n ),\n _c(\n \"el-button\",\n {\n staticClass: \"el-picker-panel__link-btn\",\n attrs: {\n plain: \"\",\n size: \"mini\",\n disabled: _vm.btnDisabled\n },\n on: {\n click: function($event) {\n _vm.handleConfirm(false)\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.t(\"el.datepicker.confirm\")) +\n \"\\n \"\n )\n ]\n )\n ],\n 1\n )\n : _vm._e()\n ]\n )\n ]\n )\n}\nvar date_rangevue_type_template_id_2652849a_staticRenderFns = []\ndate_rangevue_type_template_id_2652849a_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/date-range.vue?vue&type=template&id=2652849a&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/date-range.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\nvar date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultValue(defaultValue) {\n if (Array.isArray(defaultValue)) {\n return [new Date(defaultValue[0]), new Date(defaultValue[1])];\n } else if (defaultValue) {\n return [new Date(defaultValue), Object(date_util_[\"nextDate\"])(new Date(defaultValue), 1)];\n } else {\n return [new Date(), Object(date_util_[\"nextDate\"])(new Date(), 1)];\n }\n};\n\n/* harmony default export */ var date_rangevue_type_script_lang_js_ = ({\n mixins: [locale_default.a],\n\n directives: { Clickoutside: clickoutside_default.a },\n\n computed: {\n btnDisabled: function btnDisabled() {\n return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));\n },\n leftLabel: function leftLabel() {\n return this.leftDate.getFullYear() + ' ' + this.t('el.datepicker.year') + ' ' + this.t('el.datepicker.month' + (this.leftDate.getMonth() + 1));\n },\n rightLabel: function rightLabel() {\n return this.rightDate.getFullYear() + ' ' + this.t('el.datepicker.year') + ' ' + this.t('el.datepicker.month' + (this.rightDate.getMonth() + 1));\n },\n leftYear: function leftYear() {\n return this.leftDate.getFullYear();\n },\n leftMonth: function leftMonth() {\n return this.leftDate.getMonth();\n },\n leftMonthDate: function leftMonthDate() {\n return this.leftDate.getDate();\n },\n rightYear: function rightYear() {\n return this.rightDate.getFullYear();\n },\n rightMonth: function rightMonth() {\n return this.rightDate.getMonth();\n },\n rightMonthDate: function rightMonthDate() {\n return this.rightDate.getDate();\n },\n minVisibleDate: function minVisibleDate() {\n if (this.dateUserInput.min !== null) return this.dateUserInput.min;\n if (this.minDate) return Object(date_util_[\"formatDate\"])(this.minDate, this.dateFormat);\n return '';\n },\n maxVisibleDate: function maxVisibleDate() {\n if (this.dateUserInput.max !== null) return this.dateUserInput.max;\n if (this.maxDate || this.minDate) return Object(date_util_[\"formatDate\"])(this.maxDate || this.minDate, this.dateFormat);\n return '';\n },\n minVisibleTime: function minVisibleTime() {\n if (this.timeUserInput.min !== null) return this.timeUserInput.min;\n if (this.minDate) return Object(date_util_[\"formatDate\"])(this.minDate, this.timeFormat);\n return '';\n },\n maxVisibleTime: function maxVisibleTime() {\n if (this.timeUserInput.max !== null) return this.timeUserInput.max;\n if (this.maxDate || this.minDate) return Object(date_util_[\"formatDate\"])(this.maxDate || this.minDate, this.timeFormat);\n return '';\n },\n timeFormat: function timeFormat() {\n if (this.format) {\n return Object(date_util_[\"extractTimeFormat\"])(this.format);\n } else {\n return 'HH:mm:ss';\n }\n },\n dateFormat: function dateFormat() {\n if (this.format) {\n return Object(date_util_[\"extractDateFormat\"])(this.format);\n } else {\n return 'yyyy-MM-dd';\n }\n },\n enableMonthArrow: function enableMonthArrow() {\n var nextMonth = (this.leftMonth + 1) % 12;\n var yearOffset = this.leftMonth + 1 >= 12 ? 1 : 0;\n return this.unlinkPanels && new Date(this.leftYear + yearOffset, nextMonth) < new Date(this.rightYear, this.rightMonth);\n },\n enableYearArrow: function enableYearArrow() {\n return this.unlinkPanels && this.rightYear * 12 + this.rightMonth - (this.leftYear * 12 + this.leftMonth + 1) >= 12;\n }\n },\n\n data: function data() {\n return {\n popperClass: '',\n value: [],\n defaultValue: null,\n defaultTime: null,\n minDate: '',\n maxDate: '',\n leftDate: new Date(),\n rightDate: Object(date_util_[\"nextMonth\"])(new Date()),\n rangeState: {\n endDate: null,\n selecting: false,\n row: null,\n column: null\n },\n showTime: false,\n shortcuts: '',\n visible: '',\n disabledDate: '',\n cellClassName: '',\n firstDayOfWeek: 7,\n minTimePickerVisible: false,\n maxTimePickerVisible: false,\n format: '',\n arrowControl: false,\n unlinkPanels: false,\n dateUserInput: {\n min: null,\n max: null\n },\n timeUserInput: {\n min: null,\n max: null\n }\n };\n },\n\n\n watch: {\n minDate: function minDate(val) {\n var _this = this;\n\n this.dateUserInput.min = null;\n this.timeUserInput.min = null;\n this.$nextTick(function () {\n if (_this.$refs.maxTimePicker && _this.maxDate && _this.maxDate < _this.minDate) {\n var format = 'HH:mm:ss';\n _this.$refs.maxTimePicker.selectableRange = [[Object(date_util_[\"parseDate\"])(Object(date_util_[\"formatDate\"])(_this.minDate, format), format), Object(date_util_[\"parseDate\"])('23:59:59', format)]];\n }\n });\n if (val && this.$refs.minTimePicker) {\n this.$refs.minTimePicker.date = val;\n this.$refs.minTimePicker.value = val;\n }\n },\n maxDate: function maxDate(val) {\n this.dateUserInput.max = null;\n this.timeUserInput.max = null;\n if (val && this.$refs.maxTimePicker) {\n this.$refs.maxTimePicker.date = val;\n this.$refs.maxTimePicker.value = val;\n }\n },\n minTimePickerVisible: function minTimePickerVisible(val) {\n var _this2 = this;\n\n if (val) {\n this.$nextTick(function () {\n _this2.$refs.minTimePicker.date = _this2.minDate;\n _this2.$refs.minTimePicker.value = _this2.minDate;\n _this2.$refs.minTimePicker.adjustSpinners();\n });\n }\n },\n maxTimePickerVisible: function maxTimePickerVisible(val) {\n var _this3 = this;\n\n if (val) {\n this.$nextTick(function () {\n _this3.$refs.maxTimePicker.date = _this3.maxDate;\n _this3.$refs.maxTimePicker.value = _this3.maxDate;\n _this3.$refs.maxTimePicker.adjustSpinners();\n });\n }\n },\n value: function value(newVal) {\n if (!newVal) {\n this.minDate = null;\n this.maxDate = null;\n } else if (Array.isArray(newVal)) {\n this.minDate = Object(date_util_[\"isDate\"])(newVal[0]) ? new Date(newVal[0]) : null;\n this.maxDate = Object(date_util_[\"isDate\"])(newVal[1]) ? new Date(newVal[1]) : null;\n if (this.minDate) {\n this.leftDate = this.minDate;\n if (this.unlinkPanels && this.maxDate) {\n var minDateYear = this.minDate.getFullYear();\n var minDateMonth = this.minDate.getMonth();\n var maxDateYear = this.maxDate.getFullYear();\n var maxDateMonth = this.maxDate.getMonth();\n this.rightDate = minDateYear === maxDateYear && minDateMonth === maxDateMonth ? Object(date_util_[\"nextMonth\"])(this.maxDate) : this.maxDate;\n } else {\n this.rightDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n }\n } else {\n this.leftDate = date_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];\n this.rightDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n }\n }\n },\n defaultValue: function defaultValue(val) {\n if (!Array.isArray(this.value)) {\n var _calcDefaultValue = date_rangevue_type_script_lang_js_calcDefaultValue(val),\n left = _calcDefaultValue[0],\n right = _calcDefaultValue[1];\n\n this.leftDate = left;\n this.rightDate = val && val[1] && this.unlinkPanels ? right : Object(date_util_[\"nextMonth\"])(this.leftDate);\n }\n }\n },\n\n methods: {\n handleClear: function handleClear() {\n this.minDate = null;\n this.maxDate = null;\n this.leftDate = date_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];\n this.rightDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n this.$emit('pick', null);\n },\n handleChangeRange: function handleChangeRange(val) {\n this.minDate = val.minDate;\n this.maxDate = val.maxDate;\n this.rangeState = val.rangeState;\n },\n handleDateInput: function handleDateInput(value, type) {\n this.dateUserInput[type] = value;\n if (value.length !== this.dateFormat.length) return;\n var parsedValue = Object(date_util_[\"parseDate\"])(value, this.dateFormat);\n\n if (parsedValue) {\n if (typeof this.disabledDate === 'function' && this.disabledDate(new Date(parsedValue))) {\n return;\n }\n if (type === 'min') {\n this.minDate = Object(date_util_[\"modifyDate\"])(this.minDate || new Date(), parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());\n this.leftDate = new Date(parsedValue);\n if (!this.unlinkPanels) {\n this.rightDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n }\n } else {\n this.maxDate = Object(date_util_[\"modifyDate\"])(this.maxDate || new Date(), parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());\n this.rightDate = new Date(parsedValue);\n if (!this.unlinkPanels) {\n this.leftDate = Object(date_util_[\"prevMonth\"])(parsedValue);\n }\n }\n }\n },\n handleDateChange: function handleDateChange(value, type) {\n var parsedValue = Object(date_util_[\"parseDate\"])(value, this.dateFormat);\n if (parsedValue) {\n if (type === 'min') {\n this.minDate = Object(date_util_[\"modifyDate\"])(this.minDate, parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());\n if (this.minDate > this.maxDate) {\n this.maxDate = this.minDate;\n }\n } else {\n this.maxDate = Object(date_util_[\"modifyDate\"])(this.maxDate, parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());\n if (this.maxDate < this.minDate) {\n this.minDate = this.maxDate;\n }\n }\n }\n },\n handleTimeInput: function handleTimeInput(value, type) {\n var _this4 = this;\n\n this.timeUserInput[type] = value;\n if (value.length !== this.timeFormat.length) return;\n var parsedValue = Object(date_util_[\"parseDate\"])(value, this.timeFormat);\n\n if (parsedValue) {\n if (type === 'min') {\n this.minDate = Object(date_util_[\"modifyTime\"])(this.minDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());\n this.$nextTick(function (_) {\n return _this4.$refs.minTimePicker.adjustSpinners();\n });\n } else {\n this.maxDate = Object(date_util_[\"modifyTime\"])(this.maxDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());\n this.$nextTick(function (_) {\n return _this4.$refs.maxTimePicker.adjustSpinners();\n });\n }\n }\n },\n handleTimeChange: function handleTimeChange(value, type) {\n var parsedValue = Object(date_util_[\"parseDate\"])(value, this.timeFormat);\n if (parsedValue) {\n if (type === 'min') {\n this.minDate = Object(date_util_[\"modifyTime\"])(this.minDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());\n if (this.minDate > this.maxDate) {\n this.maxDate = this.minDate;\n }\n this.$refs.minTimePicker.value = this.minDate;\n this.minTimePickerVisible = false;\n } else {\n this.maxDate = Object(date_util_[\"modifyTime\"])(this.maxDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());\n if (this.maxDate < this.minDate) {\n this.minDate = this.maxDate;\n }\n this.$refs.maxTimePicker.value = this.minDate;\n this.maxTimePickerVisible = false;\n }\n }\n },\n handleRangePick: function handleRangePick(val) {\n var _this5 = this;\n\n var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var defaultTime = this.defaultTime || [];\n var minDate = Object(date_util_[\"modifyWithTimeString\"])(val.minDate, defaultTime[0]);\n var maxDate = Object(date_util_[\"modifyWithTimeString\"])(val.maxDate, defaultTime[1]);\n\n if (this.maxDate === maxDate && this.minDate === minDate) {\n return;\n }\n this.onPick && this.onPick(val);\n this.maxDate = maxDate;\n this.minDate = minDate;\n\n // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57\n setTimeout(function () {\n _this5.maxDate = maxDate;\n _this5.minDate = minDate;\n }, 10);\n if (!close || this.showTime) return;\n this.handleConfirm();\n },\n handleShortcutClick: function handleShortcutClick(shortcut) {\n if (shortcut.onClick) {\n shortcut.onClick(this);\n }\n },\n handleMinTimePick: function handleMinTimePick(value, visible, first) {\n this.minDate = this.minDate || new Date();\n if (value) {\n this.minDate = Object(date_util_[\"modifyTime\"])(this.minDate, value.getHours(), value.getMinutes(), value.getSeconds());\n }\n\n if (!first) {\n this.minTimePickerVisible = visible;\n }\n\n if (!this.maxDate || this.maxDate && this.maxDate.getTime() < this.minDate.getTime()) {\n this.maxDate = new Date(this.minDate);\n }\n },\n handleMinTimeClose: function handleMinTimeClose() {\n this.minTimePickerVisible = false;\n },\n handleMaxTimePick: function handleMaxTimePick(value, visible, first) {\n if (this.maxDate && value) {\n this.maxDate = Object(date_util_[\"modifyTime\"])(this.maxDate, value.getHours(), value.getMinutes(), value.getSeconds());\n }\n\n if (!first) {\n this.maxTimePickerVisible = visible;\n }\n\n if (this.maxDate && this.minDate && this.minDate.getTime() > this.maxDate.getTime()) {\n this.minDate = new Date(this.maxDate);\n }\n },\n handleMaxTimeClose: function handleMaxTimeClose() {\n this.maxTimePickerVisible = false;\n },\n\n\n // leftPrev*, rightNext* need to take care of `unlinkPanels`\n leftPrevYear: function leftPrevYear() {\n this.leftDate = Object(date_util_[\"prevYear\"])(this.leftDate);\n if (!this.unlinkPanels) {\n this.rightDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n }\n },\n leftPrevMonth: function leftPrevMonth() {\n this.leftDate = Object(date_util_[\"prevMonth\"])(this.leftDate);\n if (!this.unlinkPanels) {\n this.rightDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n }\n },\n rightNextYear: function rightNextYear() {\n if (!this.unlinkPanels) {\n this.leftDate = Object(date_util_[\"nextYear\"])(this.leftDate);\n this.rightDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n } else {\n this.rightDate = Object(date_util_[\"nextYear\"])(this.rightDate);\n }\n },\n rightNextMonth: function rightNextMonth() {\n if (!this.unlinkPanels) {\n this.leftDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n this.rightDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n } else {\n this.rightDate = Object(date_util_[\"nextMonth\"])(this.rightDate);\n }\n },\n\n\n // leftNext*, rightPrev* are called when `unlinkPanels` is true\n leftNextYear: function leftNextYear() {\n this.leftDate = Object(date_util_[\"nextYear\"])(this.leftDate);\n },\n leftNextMonth: function leftNextMonth() {\n this.leftDate = Object(date_util_[\"nextMonth\"])(this.leftDate);\n },\n rightPrevYear: function rightPrevYear() {\n this.rightDate = Object(date_util_[\"prevYear\"])(this.rightDate);\n },\n rightPrevMonth: function rightPrevMonth() {\n this.rightDate = Object(date_util_[\"prevMonth\"])(this.rightDate);\n },\n handleConfirm: function handleConfirm() {\n var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (this.isValidValue([this.minDate, this.maxDate])) {\n this.$emit('pick', [this.minDate, this.maxDate], visible);\n }\n },\n isValidValue: function isValidValue(value) {\n return Array.isArray(value) && value && value[0] && value[1] && Object(date_util_[\"isDate\"])(value[0]) && Object(date_util_[\"isDate\"])(value[1]) && value[0].getTime() <= value[1].getTime() && (typeof this.disabledDate === 'function' ? !this.disabledDate(value[0]) && !this.disabledDate(value[1]) : true);\n },\n resetView: function resetView() {\n // NOTE: this is a hack to reset {min, max}Date on picker open.\n // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state\n // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView\n if (this.minDate && this.maxDate == null) this.rangeState.selecting = false;\n this.minDate = this.value && Object(date_util_[\"isDate\"])(this.value[0]) ? new Date(this.value[0]) : null;\n this.maxDate = this.value && Object(date_util_[\"isDate\"])(this.value[0]) ? new Date(this.value[1]) : null;\n }\n },\n\n components: { TimePicker: panel_time, DateTable: date_table, ElInput: input_default.a, ElButton: button_default.a }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/date-range.vue?vue&type=script&lang=js&\n /* harmony default export */ var panel_date_rangevue_type_script_lang_js_ = (date_rangevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/panel/date-range.vue\n\n\n\n\n\n/* normalize component */\n\nvar date_range_component = normalizeComponent(\n panel_date_rangevue_type_script_lang_js_,\n date_rangevue_type_template_id_2652849a_render,\n date_rangevue_type_template_id_2652849a_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var date_range_api; }\ndate_range_component.options.__file = \"packages/date-picker/src/panel/date-range.vue\"\n/* harmony default export */ var date_range = (date_range_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/month-range.vue?vue&type=template&id=f2645fb8&\nvar month_rangevue_type_template_id_f2645fb8_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: {\n \"after-leave\": function($event) {\n _vm.$emit(\"dodestroy\")\n }\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-picker-panel el-date-range-picker el-popper\",\n class: [\n {\n \"has-sidebar\": _vm.$slots.sidebar || _vm.shortcuts\n },\n _vm.popperClass\n ]\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-picker-panel__body-wrapper\" },\n [\n _vm._t(\"sidebar\"),\n _vm.shortcuts\n ? _c(\n \"div\",\n { staticClass: \"el-picker-panel__sidebar\" },\n _vm._l(_vm.shortcuts, function(shortcut, key) {\n return _c(\n \"button\",\n {\n key: key,\n staticClass: \"el-picker-panel__shortcut\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n _vm.handleShortcutClick(shortcut)\n }\n }\n },\n [_vm._v(_vm._s(shortcut.text))]\n )\n }),\n 0\n )\n : _vm._e(),\n _c(\"div\", { staticClass: \"el-picker-panel__body\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"el-picker-panel__content el-date-range-picker__content is-left\"\n },\n [\n _c(\"div\", { staticClass: \"el-date-range-picker__header\" }, [\n _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-d-arrow-left\",\n attrs: { type: \"button\" },\n on: { click: _vm.leftPrevYear }\n }),\n _vm.unlinkPanels\n ? _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-d-arrow-right\",\n class: { \"is-disabled\": !_vm.enableYearArrow },\n attrs: {\n type: \"button\",\n disabled: !_vm.enableYearArrow\n },\n on: { click: _vm.leftNextYear }\n })\n : _vm._e(),\n _c(\"div\", [_vm._v(_vm._s(_vm.leftLabel))])\n ]),\n _c(\"month-table\", {\n attrs: {\n \"selection-mode\": \"range\",\n date: _vm.leftDate,\n \"default-value\": _vm.defaultValue,\n \"min-date\": _vm.minDate,\n \"max-date\": _vm.maxDate,\n \"range-state\": _vm.rangeState,\n \"disabled-date\": _vm.disabledDate\n },\n on: {\n changerange: _vm.handleChangeRange,\n pick: _vm.handleRangePick\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"el-picker-panel__content el-date-range-picker__content is-right\"\n },\n [\n _c(\"div\", { staticClass: \"el-date-range-picker__header\" }, [\n _vm.unlinkPanels\n ? _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-d-arrow-left\",\n class: { \"is-disabled\": !_vm.enableYearArrow },\n attrs: {\n type: \"button\",\n disabled: !_vm.enableYearArrow\n },\n on: { click: _vm.rightPrevYear }\n })\n : _vm._e(),\n _c(\"button\", {\n staticClass:\n \"el-picker-panel__icon-btn el-icon-d-arrow-right\",\n attrs: { type: \"button\" },\n on: { click: _vm.rightNextYear }\n }),\n _c(\"div\", [_vm._v(_vm._s(_vm.rightLabel))])\n ]),\n _c(\"month-table\", {\n attrs: {\n \"selection-mode\": \"range\",\n date: _vm.rightDate,\n \"default-value\": _vm.defaultValue,\n \"min-date\": _vm.minDate,\n \"max-date\": _vm.maxDate,\n \"range-state\": _vm.rangeState,\n \"disabled-date\": _vm.disabledDate\n },\n on: {\n changerange: _vm.handleChangeRange,\n pick: _vm.handleRangePick\n }\n })\n ],\n 1\n )\n ])\n ],\n 2\n )\n ]\n )\n ]\n )\n}\nvar month_rangevue_type_template_id_f2645fb8_staticRenderFns = []\nmonth_rangevue_type_template_id_f2645fb8_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/month-range.vue?vue&type=template&id=f2645fb8&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/month-range.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\nvar month_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultValue(defaultValue) {\n if (Array.isArray(defaultValue)) {\n return [new Date(defaultValue[0]), new Date(defaultValue[1])];\n } else if (defaultValue) {\n return [new Date(defaultValue), Object(date_util_[\"nextMonth\"])(new Date(defaultValue))];\n } else {\n return [new Date(), Object(date_util_[\"nextMonth\"])(new Date())];\n }\n};\n/* harmony default export */ var month_rangevue_type_script_lang_js_ = ({\n mixins: [locale_default.a],\n\n directives: { Clickoutside: clickoutside_default.a },\n\n computed: {\n btnDisabled: function btnDisabled() {\n return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));\n },\n leftLabel: function leftLabel() {\n return this.leftDate.getFullYear() + ' ' + this.t('el.datepicker.year');\n },\n rightLabel: function rightLabel() {\n return this.rightDate.getFullYear() + ' ' + this.t('el.datepicker.year');\n },\n leftYear: function leftYear() {\n return this.leftDate.getFullYear();\n },\n rightYear: function rightYear() {\n return this.rightDate.getFullYear() === this.leftDate.getFullYear() ? this.leftDate.getFullYear() + 1 : this.rightDate.getFullYear();\n },\n enableYearArrow: function enableYearArrow() {\n return this.unlinkPanels && this.rightYear > this.leftYear + 1;\n }\n },\n\n data: function data() {\n return {\n popperClass: '',\n value: [],\n defaultValue: null,\n defaultTime: null,\n minDate: '',\n maxDate: '',\n leftDate: new Date(),\n rightDate: Object(date_util_[\"nextYear\"])(new Date()),\n rangeState: {\n endDate: null,\n selecting: false,\n row: null,\n column: null\n },\n shortcuts: '',\n visible: '',\n disabledDate: '',\n format: '',\n arrowControl: false,\n unlinkPanels: false\n };\n },\n\n\n watch: {\n value: function value(newVal) {\n if (!newVal) {\n this.minDate = null;\n this.maxDate = null;\n } else if (Array.isArray(newVal)) {\n this.minDate = Object(date_util_[\"isDate\"])(newVal[0]) ? new Date(newVal[0]) : null;\n this.maxDate = Object(date_util_[\"isDate\"])(newVal[1]) ? new Date(newVal[1]) : null;\n if (this.minDate) {\n this.leftDate = this.minDate;\n if (this.unlinkPanels && this.maxDate) {\n var minDateYear = this.minDate.getFullYear();\n var maxDateYear = this.maxDate.getFullYear();\n this.rightDate = minDateYear === maxDateYear ? Object(date_util_[\"nextYear\"])(this.maxDate) : this.maxDate;\n } else {\n this.rightDate = Object(date_util_[\"nextYear\"])(this.leftDate);\n }\n } else {\n this.leftDate = month_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];\n this.rightDate = Object(date_util_[\"nextYear\"])(this.leftDate);\n }\n }\n },\n defaultValue: function defaultValue(val) {\n if (!Array.isArray(this.value)) {\n var _calcDefaultValue = month_rangevue_type_script_lang_js_calcDefaultValue(val),\n left = _calcDefaultValue[0],\n right = _calcDefaultValue[1];\n\n this.leftDate = left;\n this.rightDate = val && val[1] && left.getFullYear() !== right.getFullYear() && this.unlinkPanels ? right : Object(date_util_[\"nextYear\"])(this.leftDate);\n }\n }\n },\n\n methods: {\n handleClear: function handleClear() {\n this.minDate = null;\n this.maxDate = null;\n this.leftDate = month_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];\n this.rightDate = Object(date_util_[\"nextYear\"])(this.leftDate);\n this.$emit('pick', null);\n },\n handleChangeRange: function handleChangeRange(val) {\n this.minDate = val.minDate;\n this.maxDate = val.maxDate;\n this.rangeState = val.rangeState;\n },\n handleRangePick: function handleRangePick(val) {\n var _this = this;\n\n var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var defaultTime = this.defaultTime || [];\n var minDate = Object(date_util_[\"modifyWithTimeString\"])(val.minDate, defaultTime[0]);\n var maxDate = Object(date_util_[\"modifyWithTimeString\"])(val.maxDate, defaultTime[1]);\n if (this.maxDate === maxDate && this.minDate === minDate) {\n return;\n }\n this.onPick && this.onPick(val);\n this.maxDate = maxDate;\n this.minDate = minDate;\n\n // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57\n setTimeout(function () {\n _this.maxDate = maxDate;\n _this.minDate = minDate;\n }, 10);\n if (!close) return;\n this.handleConfirm();\n },\n handleShortcutClick: function handleShortcutClick(shortcut) {\n if (shortcut.onClick) {\n shortcut.onClick(this);\n }\n },\n\n\n // leftPrev*, rightNext* need to take care of `unlinkPanels`\n leftPrevYear: function leftPrevYear() {\n this.leftDate = Object(date_util_[\"prevYear\"])(this.leftDate);\n if (!this.unlinkPanels) {\n this.rightDate = Object(date_util_[\"prevYear\"])(this.rightDate);\n }\n },\n rightNextYear: function rightNextYear() {\n if (!this.unlinkPanels) {\n this.leftDate = Object(date_util_[\"nextYear\"])(this.leftDate);\n }\n this.rightDate = Object(date_util_[\"nextYear\"])(this.rightDate);\n },\n\n\n // leftNext*, rightPrev* are called when `unlinkPanels` is true\n leftNextYear: function leftNextYear() {\n this.leftDate = Object(date_util_[\"nextYear\"])(this.leftDate);\n },\n rightPrevYear: function rightPrevYear() {\n this.rightDate = Object(date_util_[\"prevYear\"])(this.rightDate);\n },\n handleConfirm: function handleConfirm() {\n var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (this.isValidValue([this.minDate, this.maxDate])) {\n this.$emit('pick', [this.minDate, this.maxDate], visible);\n }\n },\n isValidValue: function isValidValue(value) {\n return Array.isArray(value) && value && value[0] && value[1] && Object(date_util_[\"isDate\"])(value[0]) && Object(date_util_[\"isDate\"])(value[1]) && value[0].getTime() <= value[1].getTime() && (typeof this.disabledDate === 'function' ? !this.disabledDate(value[0]) && !this.disabledDate(value[1]) : true);\n },\n resetView: function resetView() {\n // NOTE: this is a hack to reset {min, max}Date on picker open.\n // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state\n // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView\n this.minDate = this.value && Object(date_util_[\"isDate\"])(this.value[0]) ? new Date(this.value[0]) : null;\n this.maxDate = this.value && Object(date_util_[\"isDate\"])(this.value[0]) ? new Date(this.value[1]) : null;\n }\n },\n\n components: { MonthTable: month_table, ElInput: input_default.a, ElButton: button_default.a }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/month-range.vue?vue&type=script&lang=js&\n /* harmony default export */ var panel_month_rangevue_type_script_lang_js_ = (month_rangevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/panel/month-range.vue\n\n\n\n\n\n/* normalize component */\n\nvar month_range_component = normalizeComponent(\n panel_month_rangevue_type_script_lang_js_,\n month_rangevue_type_template_id_f2645fb8_render,\n month_rangevue_type_template_id_f2645fb8_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var month_range_api; }\nmonth_range_component.options.__file = \"packages/date-picker/src/panel/month-range.vue\"\n/* harmony default export */ var month_range = (month_range_component.exports);\n// CONCATENATED MODULE: ./packages/date-picker/src/picker/date-picker.js\n\n\n\n\n\nvar date_picker_getPanel = function getPanel(type) {\n if (type === 'daterange' || type === 'datetimerange') {\n return date_range;\n } else if (type === 'monthrange') {\n return month_range;\n }\n return panel_date;\n};\n\n/* harmony default export */ var date_picker = ({\n mixins: [picker],\n\n name: 'ElDatePicker',\n\n props: {\n type: {\n type: String,\n default: 'date'\n },\n timeArrowControl: Boolean\n },\n\n watch: {\n type: function type(_type) {\n if (this.picker) {\n this.unmountPicker();\n this.panel = date_picker_getPanel(_type);\n this.mountPicker();\n } else {\n this.panel = date_picker_getPanel(_type);\n }\n }\n },\n\n created: function created() {\n this.panel = date_picker_getPanel(this.type);\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/index.js\n\n\n/* istanbul ignore next */\ndate_picker.install = function install(Vue) {\n Vue.component(date_picker.name, date_picker);\n};\n\n/* harmony default export */ var packages_date_picker = (date_picker);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/time-select.vue?vue&type=template&id=51ab9320&\nvar time_selectvue_type_template_id_51ab9320_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: {\n \"before-enter\": _vm.handleMenuEnter,\n \"after-leave\": function($event) {\n _vm.$emit(\"dodestroy\")\n }\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n ref: \"popper\",\n staticClass: \"el-picker-panel time-select el-popper\",\n class: _vm.popperClass,\n style: { width: _vm.width + \"px\" }\n },\n [\n _c(\n \"el-scrollbar\",\n {\n attrs: { noresize: \"\", \"wrap-class\": \"el-picker-panel__content\" }\n },\n _vm._l(_vm.items, function(item) {\n return _c(\n \"div\",\n {\n key: item.value,\n staticClass: \"time-select-item\",\n class: {\n selected: _vm.value === item.value,\n disabled: item.disabled,\n default: item.value === _vm.defaultValue\n },\n attrs: { disabled: item.disabled },\n on: {\n click: function($event) {\n _vm.handleClick(item)\n }\n }\n },\n [_vm._v(_vm._s(item.value))]\n )\n }),\n 0\n )\n ],\n 1\n )\n ]\n )\n}\nvar time_selectvue_type_template_id_51ab9320_staticRenderFns = []\ntime_selectvue_type_template_id_51ab9320_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/time-select.vue?vue&type=template&id=51ab9320&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/time-select.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\nvar parseTime = function parseTime(time) {\n var values = (time || '').split(':');\n if (values.length >= 2) {\n var hours = parseInt(values[0], 10);\n var minutes = parseInt(values[1], 10);\n\n return {\n hours: hours,\n minutes: minutes\n };\n }\n /* istanbul ignore next */\n return null;\n};\n\nvar compareTime = function compareTime(time1, time2) {\n var value1 = parseTime(time1);\n var value2 = parseTime(time2);\n\n var minutes1 = value1.minutes + value1.hours * 60;\n var minutes2 = value2.minutes + value2.hours * 60;\n\n if (minutes1 === minutes2) {\n return 0;\n }\n\n return minutes1 > minutes2 ? 1 : -1;\n};\n\nvar formatTime = function formatTime(time) {\n return (time.hours < 10 ? '0' + time.hours : time.hours) + ':' + (time.minutes < 10 ? '0' + time.minutes : time.minutes);\n};\n\nvar nextTime = function nextTime(time, step) {\n var timeValue = parseTime(time);\n var stepValue = parseTime(step);\n\n var next = {\n hours: timeValue.hours,\n minutes: timeValue.minutes\n };\n\n next.minutes += stepValue.minutes;\n next.hours += stepValue.hours;\n\n next.hours += Math.floor(next.minutes / 60);\n next.minutes = next.minutes % 60;\n\n return formatTime(next);\n};\n\n/* harmony default export */ var time_selectvue_type_script_lang_js_ = ({\n components: { ElScrollbar: scrollbar_default.a },\n\n watch: {\n value: function value(val) {\n var _this = this;\n\n if (!val) return;\n this.$nextTick(function () {\n return _this.scrollToOption();\n });\n }\n },\n\n methods: {\n handleClick: function handleClick(item) {\n if (!item.disabled) {\n this.$emit('pick', item.value);\n }\n },\n handleClear: function handleClear() {\n this.$emit('pick', null);\n },\n scrollToOption: function scrollToOption() {\n var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.selected';\n\n var menu = this.$refs.popper.querySelector('.el-picker-panel__content');\n scroll_into_view_default()(menu, menu.querySelector(selector));\n },\n handleMenuEnter: function handleMenuEnter() {\n var _this2 = this;\n\n var selected = this.items.map(function (item) {\n return item.value;\n }).indexOf(this.value) !== -1;\n var hasDefault = this.items.map(function (item) {\n return item.value;\n }).indexOf(this.defaultValue) !== -1;\n var option = selected && '.selected' || hasDefault && '.default' || '.time-select-item:not(.disabled)';\n this.$nextTick(function () {\n return _this2.scrollToOption(option);\n });\n },\n scrollDown: function scrollDown(step) {\n var items = this.items;\n var length = items.length;\n var total = items.length;\n var index = items.map(function (item) {\n return item.value;\n }).indexOf(this.value);\n while (total--) {\n index = (index + step + length) % length;\n if (!items[index].disabled) {\n this.$emit('pick', items[index].value, true);\n return;\n }\n }\n },\n isValidValue: function isValidValue(date) {\n return this.items.filter(function (item) {\n return !item.disabled;\n }).map(function (item) {\n return item.value;\n }).indexOf(date) !== -1;\n },\n handleKeydown: function handleKeydown(event) {\n var keyCode = event.keyCode;\n if (keyCode === 38 || keyCode === 40) {\n var mapping = { 40: 1, 38: -1 };\n var offset = mapping[keyCode.toString()];\n this.scrollDown(offset);\n event.stopPropagation();\n return;\n }\n }\n },\n\n data: function data() {\n return {\n popperClass: '',\n start: '09:00',\n end: '18:00',\n step: '00:30',\n value: '',\n defaultValue: '',\n visible: false,\n minTime: '',\n maxTime: '',\n width: 0\n };\n },\n\n\n computed: {\n items: function items() {\n var start = this.start;\n var end = this.end;\n var step = this.step;\n\n var result = [];\n\n if (start && end && step) {\n var current = start;\n while (compareTime(current, end) <= 0) {\n result.push({\n value: current,\n disabled: compareTime(current, this.minTime || '-1:-1') <= 0 || compareTime(current, this.maxTime || '100:100') >= 0\n });\n current = nextTime(current, step);\n }\n }\n\n return result;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/time-select.vue?vue&type=script&lang=js&\n /* harmony default export */ var panel_time_selectvue_type_script_lang_js_ = (time_selectvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/panel/time-select.vue\n\n\n\n\n\n/* normalize component */\n\nvar time_select_component = normalizeComponent(\n panel_time_selectvue_type_script_lang_js_,\n time_selectvue_type_template_id_51ab9320_render,\n time_selectvue_type_template_id_51ab9320_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var time_select_api; }\ntime_select_component.options.__file = \"packages/date-picker/src/panel/time-select.vue\"\n/* harmony default export */ var time_select = (time_select_component.exports);\n// CONCATENATED MODULE: ./packages/date-picker/src/picker/time-select.js\n\n\n\n/* harmony default export */ var picker_time_select = ({\n mixins: [picker],\n\n name: 'ElTimeSelect',\n\n componentName: 'ElTimeSelect',\n\n props: {\n type: {\n type: String,\n default: 'time-select'\n }\n },\n\n beforeCreate: function beforeCreate() {\n this.panel = time_select;\n }\n});\n// CONCATENATED MODULE: ./packages/time-select/index.js\n\n\n/* istanbul ignore next */\npicker_time_select.install = function (Vue) {\n Vue.component(picker_time_select.name, picker_time_select);\n};\n\n/* harmony default export */ var packages_time_select = (picker_time_select);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/time-range.vue?vue&type=template&id=fb28660e&\nvar time_rangevue_type_template_id_fb28660e_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: {\n \"after-leave\": function($event) {\n _vm.$emit(\"dodestroy\")\n }\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-time-range-picker el-picker-panel el-popper\",\n class: _vm.popperClass\n },\n [\n _c(\"div\", { staticClass: \"el-time-range-picker__content\" }, [\n _c(\"div\", { staticClass: \"el-time-range-picker__cell\" }, [\n _c(\"div\", { staticClass: \"el-time-range-picker__header\" }, [\n _vm._v(_vm._s(_vm.t(\"el.datepicker.startTime\")))\n ]),\n _c(\n \"div\",\n {\n staticClass:\n \"el-time-range-picker__body el-time-panel__content\",\n class: {\n \"has-seconds\": _vm.showSeconds,\n \"is-arrow\": _vm.arrowControl\n }\n },\n [\n _c(\"time-spinner\", {\n ref: \"minSpinner\",\n attrs: {\n \"show-seconds\": _vm.showSeconds,\n \"am-pm-mode\": _vm.amPmMode,\n \"arrow-control\": _vm.arrowControl,\n date: _vm.minDate\n },\n on: {\n change: _vm.handleMinChange,\n \"select-range\": _vm.setMinSelectionRange\n }\n })\n ],\n 1\n )\n ]),\n _c(\"div\", { staticClass: \"el-time-range-picker__cell\" }, [\n _c(\"div\", { staticClass: \"el-time-range-picker__header\" }, [\n _vm._v(_vm._s(_vm.t(\"el.datepicker.endTime\")))\n ]),\n _c(\n \"div\",\n {\n staticClass:\n \"el-time-range-picker__body el-time-panel__content\",\n class: {\n \"has-seconds\": _vm.showSeconds,\n \"is-arrow\": _vm.arrowControl\n }\n },\n [\n _c(\"time-spinner\", {\n ref: \"maxSpinner\",\n attrs: {\n \"show-seconds\": _vm.showSeconds,\n \"am-pm-mode\": _vm.amPmMode,\n \"arrow-control\": _vm.arrowControl,\n date: _vm.maxDate\n },\n on: {\n change: _vm.handleMaxChange,\n \"select-range\": _vm.setMaxSelectionRange\n }\n })\n ],\n 1\n )\n ])\n ]),\n _c(\"div\", { staticClass: \"el-time-panel__footer\" }, [\n _c(\n \"button\",\n {\n staticClass: \"el-time-panel__btn cancel\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n _vm.handleCancel()\n }\n }\n },\n [_vm._v(_vm._s(_vm.t(\"el.datepicker.cancel\")))]\n ),\n _c(\n \"button\",\n {\n staticClass: \"el-time-panel__btn confirm\",\n attrs: { type: \"button\", disabled: _vm.btnDisabled },\n on: {\n click: function($event) {\n _vm.handleConfirm()\n }\n }\n },\n [_vm._v(_vm._s(_vm.t(\"el.datepicker.confirm\")))]\n )\n ])\n ]\n )\n ]\n )\n}\nvar time_rangevue_type_template_id_fb28660e_staticRenderFns = []\ntime_rangevue_type_template_id_fb28660e_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/time-range.vue?vue&type=template&id=fb28660e&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/time-range.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\nvar MIN_TIME = Object(date_util_[\"parseDate\"])('00:00:00', 'HH:mm:ss');\nvar MAX_TIME = Object(date_util_[\"parseDate\"])('23:59:59', 'HH:mm:ss');\n\nvar time_rangevue_type_script_lang_js_minTimeOfDay = function minTimeOfDay(date) {\n return Object(date_util_[\"modifyDate\"])(MIN_TIME, date.getFullYear(), date.getMonth(), date.getDate());\n};\n\nvar time_rangevue_type_script_lang_js_maxTimeOfDay = function maxTimeOfDay(date) {\n return Object(date_util_[\"modifyDate\"])(MAX_TIME, date.getFullYear(), date.getMonth(), date.getDate());\n};\n\n// increase time by amount of milliseconds, but within the range of day\nvar advanceTime = function advanceTime(date, amount) {\n return new Date(Math.min(date.getTime() + amount, time_rangevue_type_script_lang_js_maxTimeOfDay(date).getTime()));\n};\n\n/* harmony default export */ var time_rangevue_type_script_lang_js_ = ({\n mixins: [locale_default.a],\n\n components: { TimeSpinner: time_spinner },\n\n computed: {\n showSeconds: function showSeconds() {\n return (this.format || '').indexOf('ss') !== -1;\n },\n offset: function offset() {\n return this.showSeconds ? 11 : 8;\n },\n spinner: function spinner() {\n return this.selectionRange[0] < this.offset ? this.$refs.minSpinner : this.$refs.maxSpinner;\n },\n btnDisabled: function btnDisabled() {\n return this.minDate.getTime() > this.maxDate.getTime();\n },\n amPmMode: function amPmMode() {\n if ((this.format || '').indexOf('A') !== -1) return 'A';\n if ((this.format || '').indexOf('a') !== -1) return 'a';\n return '';\n }\n },\n\n data: function data() {\n return {\n popperClass: '',\n minDate: new Date(),\n maxDate: new Date(),\n value: [],\n oldValue: [new Date(), new Date()],\n defaultValue: null,\n format: 'HH:mm:ss',\n visible: false,\n selectionRange: [0, 2],\n arrowControl: false\n };\n },\n\n\n watch: {\n value: function value(_value) {\n if (Array.isArray(_value)) {\n this.minDate = new Date(_value[0]);\n this.maxDate = new Date(_value[1]);\n } else {\n if (Array.isArray(this.defaultValue)) {\n this.minDate = new Date(this.defaultValue[0]);\n this.maxDate = new Date(this.defaultValue[1]);\n } else if (this.defaultValue) {\n this.minDate = new Date(this.defaultValue);\n this.maxDate = advanceTime(new Date(this.defaultValue), 60 * 60 * 1000);\n } else {\n this.minDate = new Date();\n this.maxDate = advanceTime(new Date(), 60 * 60 * 1000);\n }\n }\n },\n visible: function visible(val) {\n var _this = this;\n\n if (val) {\n this.oldValue = this.value;\n this.$nextTick(function () {\n return _this.$refs.minSpinner.emitSelectRange('hours');\n });\n }\n }\n },\n\n methods: {\n handleClear: function handleClear() {\n this.$emit('pick', null);\n },\n handleCancel: function handleCancel() {\n this.$emit('pick', this.oldValue);\n },\n handleMinChange: function handleMinChange(date) {\n this.minDate = Object(date_util_[\"clearMilliseconds\"])(date);\n this.handleChange();\n },\n handleMaxChange: function handleMaxChange(date) {\n this.maxDate = Object(date_util_[\"clearMilliseconds\"])(date);\n this.handleChange();\n },\n handleChange: function handleChange() {\n if (this.isValidValue([this.minDate, this.maxDate])) {\n this.$refs.minSpinner.selectableRange = [[time_rangevue_type_script_lang_js_minTimeOfDay(this.minDate), this.maxDate]];\n this.$refs.maxSpinner.selectableRange = [[this.minDate, time_rangevue_type_script_lang_js_maxTimeOfDay(this.maxDate)]];\n this.$emit('pick', [this.minDate, this.maxDate], true);\n }\n },\n setMinSelectionRange: function setMinSelectionRange(start, end) {\n this.$emit('select-range', start, end, 'min');\n this.selectionRange = [start, end];\n },\n setMaxSelectionRange: function setMaxSelectionRange(start, end) {\n this.$emit('select-range', start, end, 'max');\n this.selectionRange = [start + this.offset, end + this.offset];\n },\n handleConfirm: function handleConfirm() {\n var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var minSelectableRange = this.$refs.minSpinner.selectableRange;\n var maxSelectableRange = this.$refs.maxSpinner.selectableRange;\n\n this.minDate = Object(date_util_[\"limitTimeRange\"])(this.minDate, minSelectableRange, this.format);\n this.maxDate = Object(date_util_[\"limitTimeRange\"])(this.maxDate, maxSelectableRange, this.format);\n\n this.$emit('pick', [this.minDate, this.maxDate], visible);\n },\n adjustSpinners: function adjustSpinners() {\n this.$refs.minSpinner.adjustSpinners();\n this.$refs.maxSpinner.adjustSpinners();\n },\n changeSelectionRange: function changeSelectionRange(step) {\n var list = this.showSeconds ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11];\n var mapping = ['hours', 'minutes'].concat(this.showSeconds ? ['seconds'] : []);\n var index = list.indexOf(this.selectionRange[0]);\n var next = (index + step + list.length) % list.length;\n var half = list.length / 2;\n if (next < half) {\n this.$refs.minSpinner.emitSelectRange(mapping[next]);\n } else {\n this.$refs.maxSpinner.emitSelectRange(mapping[next - half]);\n }\n },\n isValidValue: function isValidValue(date) {\n return Array.isArray(date) && Object(date_util_[\"timeWithinRange\"])(this.minDate, this.$refs.minSpinner.selectableRange) && Object(date_util_[\"timeWithinRange\"])(this.maxDate, this.$refs.maxSpinner.selectableRange);\n },\n handleKeydown: function handleKeydown(event) {\n var keyCode = event.keyCode;\n var mapping = { 38: -1, 40: 1, 37: -1, 39: 1 };\n\n // Left or Right\n if (keyCode === 37 || keyCode === 39) {\n var step = mapping[keyCode];\n this.changeSelectionRange(step);\n event.preventDefault();\n return;\n }\n\n // Up or Down\n if (keyCode === 38 || keyCode === 40) {\n var _step = mapping[keyCode];\n this.spinner.scrollDown(_step);\n event.preventDefault();\n return;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/date-picker/src/panel/time-range.vue?vue&type=script&lang=js&\n /* harmony default export */ var panel_time_rangevue_type_script_lang_js_ = (time_rangevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/date-picker/src/panel/time-range.vue\n\n\n\n\n\n/* normalize component */\n\nvar time_range_component = normalizeComponent(\n panel_time_rangevue_type_script_lang_js_,\n time_rangevue_type_template_id_fb28660e_render,\n time_rangevue_type_template_id_fb28660e_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var time_range_api; }\ntime_range_component.options.__file = \"packages/date-picker/src/panel/time-range.vue\"\n/* harmony default export */ var time_range = (time_range_component.exports);\n// CONCATENATED MODULE: ./packages/date-picker/src/picker/time-picker.js\n\n\n\n\n/* harmony default export */ var time_picker = ({\n mixins: [picker],\n\n name: 'ElTimePicker',\n\n props: {\n isRange: Boolean,\n arrowControl: Boolean\n },\n\n data: function data() {\n return {\n type: ''\n };\n },\n\n\n watch: {\n isRange: function isRange(_isRange) {\n if (this.picker) {\n this.unmountPicker();\n this.type = _isRange ? 'timerange' : 'time';\n this.panel = _isRange ? time_range : panel_time;\n this.mountPicker();\n } else {\n this.type = _isRange ? 'timerange' : 'time';\n this.panel = _isRange ? time_range : panel_time;\n }\n }\n },\n\n created: function created() {\n this.type = this.isRange ? 'timerange' : 'time';\n this.panel = this.isRange ? time_range : panel_time;\n }\n});\n// CONCATENATED MODULE: ./packages/time-picker/index.js\n\n\n/* istanbul ignore next */\ntime_picker.install = function (Vue) {\n Vue.component(time_picker.name, time_picker);\n};\n\n/* harmony default export */ var packages_time_picker = (time_picker);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/popover/src/main.vue?vue&type=template&id=52060272&\nvar mainvue_type_template_id_52060272_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"span\",\n [\n _c(\n \"transition\",\n {\n attrs: { name: _vm.transition },\n on: {\n \"after-enter\": _vm.handleAfterEnter,\n \"after-leave\": _vm.handleAfterLeave\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.disabled && _vm.showPopper,\n expression: \"!disabled && showPopper\"\n }\n ],\n ref: \"popper\",\n staticClass: \"el-popover el-popper\",\n class: [_vm.popperClass, _vm.content && \"el-popover--plain\"],\n style: { width: _vm.width + \"px\" },\n attrs: {\n role: \"tooltip\",\n id: _vm.tooltipId,\n \"aria-hidden\":\n _vm.disabled || !_vm.showPopper ? \"true\" : \"false\"\n }\n },\n [\n _vm.title\n ? _c(\"div\", {\n staticClass: \"el-popover__title\",\n domProps: { textContent: _vm._s(_vm.title) }\n })\n : _vm._e(),\n _vm._t(\"default\", [_vm._v(_vm._s(_vm.content))])\n ],\n 2\n )\n ]\n ),\n _c(\n \"span\",\n { ref: \"wrapper\", staticClass: \"el-popover__reference-wrapper\" },\n [_vm._t(\"reference\")],\n 2\n )\n ],\n 1\n )\n}\nvar mainvue_type_template_id_52060272_staticRenderFns = []\nmainvue_type_template_id_52060272_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/popover/src/main.vue?vue&type=template&id=52060272&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/popover/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ var mainvue_type_script_lang_js_ = ({\n name: 'ElPopover',\n\n mixins: [vue_popper_default.a],\n\n props: {\n trigger: {\n type: String,\n default: 'click',\n validator: function validator(value) {\n return ['click', 'focus', 'hover', 'manual'].indexOf(value) > -1;\n }\n },\n openDelay: {\n type: Number,\n default: 0\n },\n closeDelay: {\n type: Number,\n default: 200\n },\n title: String,\n disabled: Boolean,\n content: String,\n reference: {},\n popperClass: String,\n width: {},\n visibleArrow: {\n default: true\n },\n arrowOffset: {\n type: Number,\n default: 0\n },\n transition: {\n type: String,\n default: 'fade-in-linear'\n },\n tabindex: {\n type: Number,\n default: 0\n }\n },\n\n computed: {\n tooltipId: function tooltipId() {\n return 'el-popover-' + Object(util_[\"generateId\"])();\n }\n },\n watch: {\n showPopper: function showPopper(val) {\n if (this.disabled) {\n return;\n }\n val ? this.$emit('show') : this.$emit('hide');\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n var reference = this.referenceElm = this.reference || this.$refs.reference;\n var popper = this.popper || this.$refs.popper;\n\n if (!reference && this.$refs.wrapper.children) {\n reference = this.referenceElm = this.$refs.wrapper.children[0];\n }\n // 可访问性\n if (reference) {\n Object(dom_[\"addClass\"])(reference, 'el-popover__reference');\n reference.setAttribute('aria-describedby', this.tooltipId);\n reference.setAttribute('tabindex', this.tabindex); // tab序列\n popper.setAttribute('tabindex', 0);\n\n if (this.trigger !== 'click') {\n Object(dom_[\"on\"])(reference, 'focusin', function () {\n _this.handleFocus();\n var instance = reference.__vue__;\n if (instance && typeof instance.focus === 'function') {\n instance.focus();\n }\n });\n Object(dom_[\"on\"])(popper, 'focusin', this.handleFocus);\n Object(dom_[\"on\"])(reference, 'focusout', this.handleBlur);\n Object(dom_[\"on\"])(popper, 'focusout', this.handleBlur);\n }\n Object(dom_[\"on\"])(reference, 'keydown', this.handleKeydown);\n Object(dom_[\"on\"])(reference, 'click', this.handleClick);\n }\n if (this.trigger === 'click') {\n Object(dom_[\"on\"])(reference, 'click', this.doToggle);\n Object(dom_[\"on\"])(document, 'click', this.handleDocumentClick);\n } else if (this.trigger === 'hover') {\n Object(dom_[\"on\"])(reference, 'mouseenter', this.handleMouseEnter);\n Object(dom_[\"on\"])(popper, 'mouseenter', this.handleMouseEnter);\n Object(dom_[\"on\"])(reference, 'mouseleave', this.handleMouseLeave);\n Object(dom_[\"on\"])(popper, 'mouseleave', this.handleMouseLeave);\n } else if (this.trigger === 'focus') {\n if (this.tabindex < 0) {\n console.warn('[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key');\n }\n if (reference.querySelector('input, textarea')) {\n Object(dom_[\"on\"])(reference, 'focusin', this.doShow);\n Object(dom_[\"on\"])(reference, 'focusout', this.doClose);\n } else {\n Object(dom_[\"on\"])(reference, 'mousedown', this.doShow);\n Object(dom_[\"on\"])(reference, 'mouseup', this.doClose);\n }\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.cleanup();\n },\n deactivated: function deactivated() {\n this.cleanup();\n },\n\n\n methods: {\n doToggle: function doToggle() {\n this.showPopper = !this.showPopper;\n },\n doShow: function doShow() {\n this.showPopper = true;\n },\n doClose: function doClose() {\n this.showPopper = false;\n },\n handleFocus: function handleFocus() {\n Object(dom_[\"addClass\"])(this.referenceElm, 'focusing');\n if (this.trigger === 'click' || this.trigger === 'focus') this.showPopper = true;\n },\n handleClick: function handleClick() {\n Object(dom_[\"removeClass\"])(this.referenceElm, 'focusing');\n },\n handleBlur: function handleBlur() {\n Object(dom_[\"removeClass\"])(this.referenceElm, 'focusing');\n if (this.trigger === 'click' || this.trigger === 'focus') this.showPopper = false;\n },\n handleMouseEnter: function handleMouseEnter() {\n var _this2 = this;\n\n clearTimeout(this._timer);\n if (this.openDelay) {\n this._timer = setTimeout(function () {\n _this2.showPopper = true;\n }, this.openDelay);\n } else {\n this.showPopper = true;\n }\n },\n handleKeydown: function handleKeydown(ev) {\n if (ev.keyCode === 27 && this.trigger !== 'manual') {\n // esc\n this.doClose();\n }\n },\n handleMouseLeave: function handleMouseLeave() {\n var _this3 = this;\n\n clearTimeout(this._timer);\n if (this.closeDelay) {\n this._timer = setTimeout(function () {\n _this3.showPopper = false;\n }, this.closeDelay);\n } else {\n this.showPopper = false;\n }\n },\n handleDocumentClick: function handleDocumentClick(e) {\n var reference = this.reference || this.$refs.reference;\n var popper = this.popper || this.$refs.popper;\n\n if (!reference && this.$refs.wrapper.children) {\n reference = this.referenceElm = this.$refs.wrapper.children[0];\n }\n if (!this.$el || !reference || this.$el.contains(e.target) || reference.contains(e.target) || !popper || popper.contains(e.target)) return;\n this.showPopper = false;\n },\n handleAfterEnter: function handleAfterEnter() {\n this.$emit('after-enter');\n },\n handleAfterLeave: function handleAfterLeave() {\n this.$emit('after-leave');\n this.doDestroy();\n },\n cleanup: function cleanup() {\n if (this.openDelay || this.closeDelay) {\n clearTimeout(this._timer);\n }\n }\n },\n\n destroyed: function destroyed() {\n var reference = this.reference;\n\n Object(dom_[\"off\"])(reference, 'click', this.doToggle);\n Object(dom_[\"off\"])(reference, 'mouseup', this.doClose);\n Object(dom_[\"off\"])(reference, 'mousedown', this.doShow);\n Object(dom_[\"off\"])(reference, 'focusin', this.doShow);\n Object(dom_[\"off\"])(reference, 'focusout', this.doClose);\n Object(dom_[\"off\"])(reference, 'mousedown', this.doShow);\n Object(dom_[\"off\"])(reference, 'mouseup', this.doClose);\n Object(dom_[\"off\"])(reference, 'mouseleave', this.handleMouseLeave);\n Object(dom_[\"off\"])(reference, 'mouseenter', this.handleMouseEnter);\n Object(dom_[\"off\"])(document, 'click', this.handleDocumentClick);\n }\n});\n// CONCATENATED MODULE: ./packages/popover/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_mainvue_type_script_lang_js_ = (mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/popover/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar main_component = normalizeComponent(\n src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_52060272_render,\n mainvue_type_template_id_52060272_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var main_api; }\nmain_component.options.__file = \"packages/popover/src/main.vue\"\n/* harmony default export */ var main = (main_component.exports);\n// CONCATENATED MODULE: ./packages/popover/src/directive.js\nvar getReference = function getReference(el, binding, vnode) {\n var _ref = binding.expression ? binding.value : binding.arg;\n var popper = vnode.context.$refs[_ref];\n if (popper) {\n if (Array.isArray(popper)) {\n popper[0].$refs.reference = el;\n } else {\n popper.$refs.reference = el;\n }\n }\n};\n\n/* harmony default export */ var directive = ({\n bind: function bind(el, binding, vnode) {\n getReference(el, binding, vnode);\n },\n inserted: function inserted(el, binding, vnode) {\n getReference(el, binding, vnode);\n }\n});\n// CONCATENATED MODULE: ./packages/popover/index.js\n\n\n\n\nexternal_vue_default.a.directive('popover', directive);\n\n/* istanbul ignore next */\nmain.install = function (Vue) {\n Vue.directive('popover', directive);\n Vue.component(main.name, main);\n};\nmain.directive = directive;\n\n/* harmony default export */ var popover = (main);\n// CONCATENATED MODULE: ./packages/tooltip/src/main.js\n\n\n\n\n\n\n/* harmony default export */ var src_main = ({\n name: 'ElTooltip',\n\n mixins: [vue_popper_default.a],\n\n props: {\n openDelay: {\n type: Number,\n default: 0\n },\n disabled: Boolean,\n manual: Boolean,\n effect: {\n type: String,\n default: 'dark'\n },\n arrowOffset: {\n type: Number,\n default: 0\n },\n popperClass: String,\n content: String,\n visibleArrow: {\n default: true\n },\n transition: {\n type: String,\n default: 'el-fade-in-linear'\n },\n popperOptions: {\n default: function _default() {\n return {\n boundariesPadding: 10,\n gpuAcceleration: false\n };\n }\n },\n enterable: {\n type: Boolean,\n default: true\n },\n hideAfter: {\n type: Number,\n default: 0\n },\n tabindex: {\n type: Number,\n default: 0\n }\n },\n\n data: function data() {\n return {\n tooltipId: 'el-tooltip-' + Object(util_[\"generateId\"])(),\n timeoutPending: null,\n focusing: false\n };\n },\n beforeCreate: function beforeCreate() {\n var _this = this;\n\n if (this.$isServer) return;\n\n this.popperVM = new external_vue_default.a({\n data: { node: '' },\n render: function render(h) {\n return this.node;\n }\n }).$mount();\n\n this.debounceClose = debounce_default()(200, function () {\n return _this.handleClosePopper();\n });\n },\n render: function render(h) {\n var _this2 = this;\n\n if (this.popperVM) {\n this.popperVM.node = h(\n 'transition',\n {\n attrs: {\n name: this.transition\n },\n on: {\n 'afterLeave': this.doDestroy\n }\n },\n [h(\n 'div',\n {\n on: {\n 'mouseleave': function mouseleave() {\n _this2.setExpectedState(false);_this2.debounceClose();\n },\n 'mouseenter': function mouseenter() {\n _this2.setExpectedState(true);\n }\n },\n\n ref: 'popper',\n attrs: { role: 'tooltip',\n id: this.tooltipId,\n 'aria-hidden': this.disabled || !this.showPopper ? 'true' : 'false'\n },\n directives: [{\n name: 'show',\n value: !this.disabled && this.showPopper\n }],\n\n 'class': ['el-tooltip__popper', 'is-' + this.effect, this.popperClass] },\n [this.$slots.content || this.content]\n )]\n );\n }\n\n var firstElement = this.getFirstElement();\n if (!firstElement) return null;\n\n var data = firstElement.data = firstElement.data || {};\n data.staticClass = this.addTooltipClass(data.staticClass);\n\n return firstElement;\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.referenceElm = this.$el;\n if (this.$el.nodeType === 1) {\n this.$el.setAttribute('aria-describedby', this.tooltipId);\n this.$el.setAttribute('tabindex', this.tabindex);\n Object(dom_[\"on\"])(this.referenceElm, 'mouseenter', this.show);\n Object(dom_[\"on\"])(this.referenceElm, 'mouseleave', this.hide);\n Object(dom_[\"on\"])(this.referenceElm, 'focus', function () {\n if (!_this3.$slots.default || !_this3.$slots.default.length) {\n _this3.handleFocus();\n return;\n }\n var instance = _this3.$slots.default[0].componentInstance;\n if (instance && instance.focus) {\n instance.focus();\n } else {\n _this3.handleFocus();\n }\n });\n Object(dom_[\"on\"])(this.referenceElm, 'blur', this.handleBlur);\n Object(dom_[\"on\"])(this.referenceElm, 'click', this.removeFocusing);\n }\n // fix issue https://github.com/ElemeFE/element/issues/14424\n if (this.value && this.popperVM) {\n this.popperVM.$nextTick(function () {\n if (_this3.value) {\n _this3.updatePopper();\n }\n });\n }\n },\n\n watch: {\n focusing: function focusing(val) {\n if (val) {\n Object(dom_[\"addClass\"])(this.referenceElm, 'focusing');\n } else {\n Object(dom_[\"removeClass\"])(this.referenceElm, 'focusing');\n }\n }\n },\n methods: {\n show: function show() {\n this.setExpectedState(true);\n this.handleShowPopper();\n },\n hide: function hide() {\n this.setExpectedState(false);\n this.debounceClose();\n },\n handleFocus: function handleFocus() {\n this.focusing = true;\n this.show();\n },\n handleBlur: function handleBlur() {\n this.focusing = false;\n this.hide();\n },\n removeFocusing: function removeFocusing() {\n this.focusing = false;\n },\n addTooltipClass: function addTooltipClass(prev) {\n if (!prev) {\n return 'el-tooltip';\n } else {\n return 'el-tooltip ' + prev.replace('el-tooltip', '');\n }\n },\n handleShowPopper: function handleShowPopper() {\n var _this4 = this;\n\n if (!this.expectedState || this.manual) return;\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this4.showPopper = true;\n }, this.openDelay);\n\n if (this.hideAfter > 0) {\n this.timeoutPending = setTimeout(function () {\n _this4.showPopper = false;\n }, this.hideAfter);\n }\n },\n handleClosePopper: function handleClosePopper() {\n if (this.enterable && this.expectedState || this.manual) return;\n clearTimeout(this.timeout);\n\n if (this.timeoutPending) {\n clearTimeout(this.timeoutPending);\n }\n this.showPopper = false;\n\n if (this.disabled) {\n this.doDestroy();\n }\n },\n setExpectedState: function setExpectedState(expectedState) {\n if (expectedState === false) {\n clearTimeout(this.timeoutPending);\n }\n this.expectedState = expectedState;\n },\n getFirstElement: function getFirstElement() {\n var slots = this.$slots.default;\n if (!Array.isArray(slots)) return null;\n var element = null;\n for (var index = 0; index < slots.length; index++) {\n if (slots[index] && slots[index].tag) {\n element = slots[index];\n break;\n };\n }\n return element;\n }\n },\n\n beforeDestroy: function beforeDestroy() {\n this.popperVM && this.popperVM.$destroy();\n },\n destroyed: function destroyed() {\n var reference = this.referenceElm;\n if (reference.nodeType === 1) {\n Object(dom_[\"off\"])(reference, 'mouseenter', this.show);\n Object(dom_[\"off\"])(reference, 'mouseleave', this.hide);\n Object(dom_[\"off\"])(reference, 'focus', this.handleFocus);\n Object(dom_[\"off\"])(reference, 'blur', this.handleBlur);\n Object(dom_[\"off\"])(reference, 'click', this.removeFocusing);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/tooltip/index.js\n\n\n/* istanbul ignore next */\nsrc_main.install = function (Vue) {\n Vue.component(src_main.name, src_main);\n};\n\n/* harmony default export */ var packages_tooltip = (src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/message-box/src/main.vue?vue&type=template&id=6b29b012&\nvar mainvue_type_template_id_6b29b012_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"transition\", { attrs: { name: \"msgbox-fade\" } }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-message-box__wrapper\",\n attrs: {\n tabindex: \"-1\",\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-label\": _vm.title || \"dialog\"\n },\n on: {\n click: function($event) {\n if ($event.target !== $event.currentTarget) {\n return null\n }\n return _vm.handleWrapperClick($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"el-message-box\",\n class: [_vm.customClass, _vm.center && \"el-message-box--center\"]\n },\n [\n _vm.title !== null\n ? _c(\"div\", { staticClass: \"el-message-box__header\" }, [\n _c(\"div\", { staticClass: \"el-message-box__title\" }, [\n _vm.icon && _vm.center\n ? _c(\"div\", {\n class: [\"el-message-box__status\", _vm.icon]\n })\n : _vm._e(),\n _c(\"span\", [_vm._v(_vm._s(_vm.title))])\n ]),\n _vm.showClose\n ? _c(\n \"button\",\n {\n staticClass: \"el-message-box__headerbtn\",\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n on: {\n click: function($event) {\n _vm.handleAction(\n _vm.distinguishCancelAndClose\n ? \"close\"\n : \"cancel\"\n )\n },\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n _vm.handleAction(\n _vm.distinguishCancelAndClose\n ? \"close\"\n : \"cancel\"\n )\n }\n }\n },\n [\n _c(\"i\", {\n staticClass: \"el-message-box__close el-icon-close\"\n })\n ]\n )\n : _vm._e()\n ])\n : _vm._e(),\n _c(\"div\", { staticClass: \"el-message-box__content\" }, [\n _c(\"div\", { staticClass: \"el-message-box__container\" }, [\n _vm.icon && !_vm.center && _vm.message !== \"\"\n ? _c(\"div\", { class: [\"el-message-box__status\", _vm.icon] })\n : _vm._e(),\n _vm.message !== \"\"\n ? _c(\n \"div\",\n { staticClass: \"el-message-box__message\" },\n [\n _vm._t(\"default\", [\n !_vm.dangerouslyUseHTMLString\n ? _c(\"p\", [_vm._v(_vm._s(_vm.message))])\n : _c(\"p\", {\n domProps: { innerHTML: _vm._s(_vm.message) }\n })\n ])\n ],\n 2\n )\n : _vm._e()\n ]),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showInput,\n expression: \"showInput\"\n }\n ],\n staticClass: \"el-message-box__input\"\n },\n [\n _c(\"el-input\", {\n ref: \"input\",\n attrs: {\n type: _vm.inputType,\n placeholder: _vm.inputPlaceholder\n },\n nativeOn: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.handleInputEnter($event)\n }\n },\n model: {\n value: _vm.inputValue,\n callback: function($$v) {\n _vm.inputValue = $$v\n },\n expression: \"inputValue\"\n }\n }),\n _c(\n \"div\",\n {\n staticClass: \"el-message-box__errormsg\",\n style: {\n visibility: !!_vm.editorErrorMessage\n ? \"visible\"\n : \"hidden\"\n }\n },\n [_vm._v(_vm._s(_vm.editorErrorMessage))]\n )\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n { staticClass: \"el-message-box__btns\" },\n [\n _vm.showCancelButton\n ? _c(\n \"el-button\",\n {\n class: [_vm.cancelButtonClasses],\n attrs: {\n loading: _vm.cancelButtonLoading,\n round: _vm.roundButton,\n size: \"small\"\n },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n _vm.handleAction(\"cancel\")\n }\n },\n nativeOn: {\n click: function($event) {\n _vm.handleAction(\"cancel\")\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.cancelButtonText ||\n _vm.t(\"el.messagebox.cancel\")\n ) +\n \"\\n \"\n )\n ]\n )\n : _vm._e(),\n _c(\n \"el-button\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showConfirmButton,\n expression: \"showConfirmButton\"\n }\n ],\n ref: \"confirm\",\n class: [_vm.confirmButtonClasses],\n attrs: {\n loading: _vm.confirmButtonLoading,\n round: _vm.roundButton,\n size: \"small\"\n },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n _vm.handleAction(\"confirm\")\n }\n },\n nativeOn: {\n click: function($event) {\n _vm.handleAction(\"confirm\")\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.confirmButtonText ||\n _vm.t(\"el.messagebox.confirm\")\n ) +\n \"\\n \"\n )\n ]\n )\n ],\n 1\n )\n ]\n )\n ]\n )\n ])\n}\nvar mainvue_type_template_id_6b29b012_staticRenderFns = []\nmainvue_type_template_id_6b29b012_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/message-box/src/main.vue?vue&type=template&id=6b29b012&\n\n// EXTERNAL MODULE: external \"element-ui/lib/locale\"\nvar lib_locale_ = __nested_webpack_require_8926__(12);\nvar lib_locale_default = /*#__PURE__*/__nested_webpack_require_8926__.n(lib_locale_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/aria-dialog\"\nvar aria_dialog_ = __nested_webpack_require_8926__(40);\nvar aria_dialog_default = /*#__PURE__*/__nested_webpack_require_8926__.n(aria_dialog_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/message-box/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\nvar messageBox = void 0;\nvar typeMap = {\n success: 'success',\n info: 'info',\n warning: 'warning',\n error: 'error'\n};\n\n/* harmony default export */ var message_box_src_mainvue_type_script_lang_js_ = ({\n mixins: [popup_default.a, locale_default.a],\n\n props: {\n modal: {\n default: true\n },\n lockScroll: {\n default: true\n },\n showClose: {\n type: Boolean,\n default: true\n },\n closeOnClickModal: {\n default: true\n },\n closeOnPressEscape: {\n default: true\n },\n closeOnHashChange: {\n default: true\n },\n center: {\n default: false,\n type: Boolean\n },\n roundButton: {\n default: false,\n type: Boolean\n }\n },\n\n components: {\n ElInput: input_default.a,\n ElButton: button_default.a\n },\n\n computed: {\n icon: function icon() {\n var type = this.type,\n iconClass = this.iconClass;\n\n return iconClass || (type && typeMap[type] ? 'el-icon-' + typeMap[type] : '');\n },\n confirmButtonClasses: function confirmButtonClasses() {\n return 'el-button--primary ' + this.confirmButtonClass;\n },\n cancelButtonClasses: function cancelButtonClasses() {\n return '' + this.cancelButtonClass;\n }\n },\n\n methods: {\n getSafeClose: function getSafeClose() {\n var _this = this;\n\n var currentId = this.uid;\n return function () {\n _this.$nextTick(function () {\n if (currentId === _this.uid) _this.doClose();\n });\n };\n },\n doClose: function doClose() {\n var _this2 = this;\n\n if (!this.visible) return;\n this.visible = false;\n this._closing = true;\n\n this.onClose && this.onClose();\n messageBox.closeDialog(); // 解绑\n if (this.lockScroll) {\n setTimeout(this.restoreBodyStyle, 200);\n }\n this.opened = false;\n this.doAfterClose();\n setTimeout(function () {\n if (_this2.action) _this2.callback(_this2.action, _this2);\n });\n },\n handleWrapperClick: function handleWrapperClick() {\n if (this.closeOnClickModal) {\n this.handleAction(this.distinguishCancelAndClose ? 'close' : 'cancel');\n }\n },\n handleInputEnter: function handleInputEnter() {\n if (this.inputType !== 'textarea') {\n return this.handleAction('confirm');\n }\n },\n handleAction: function handleAction(action) {\n if (this.$type === 'prompt' && action === 'confirm' && !this.validate()) {\n return;\n }\n this.action = action;\n if (typeof this.beforeClose === 'function') {\n this.close = this.getSafeClose();\n this.beforeClose(action, this, this.close);\n } else {\n this.doClose();\n }\n },\n validate: function validate() {\n if (this.$type === 'prompt') {\n var inputPattern = this.inputPattern;\n if (inputPattern && !inputPattern.test(this.inputValue || '')) {\n this.editorErrorMessage = this.inputErrorMessage || Object(lib_locale_[\"t\"])('el.messagebox.error');\n Object(dom_[\"addClass\"])(this.getInputElement(), 'invalid');\n return false;\n }\n var inputValidator = this.inputValidator;\n if (typeof inputValidator === 'function') {\n var validateResult = inputValidator(this.inputValue);\n if (validateResult === false) {\n this.editorErrorMessage = this.inputErrorMessage || Object(lib_locale_[\"t\"])('el.messagebox.error');\n Object(dom_[\"addClass\"])(this.getInputElement(), 'invalid');\n return false;\n }\n if (typeof validateResult === 'string') {\n this.editorErrorMessage = validateResult;\n Object(dom_[\"addClass\"])(this.getInputElement(), 'invalid');\n return false;\n }\n }\n }\n this.editorErrorMessage = '';\n Object(dom_[\"removeClass\"])(this.getInputElement(), 'invalid');\n return true;\n },\n getFirstFocus: function getFirstFocus() {\n var btn = this.$el.querySelector('.el-message-box__btns .el-button');\n var title = this.$el.querySelector('.el-message-box__btns .el-message-box__title');\n return btn || title;\n },\n getInputElement: function getInputElement() {\n var inputRefs = this.$refs.input.$refs;\n return inputRefs.input || inputRefs.textarea;\n },\n handleClose: function handleClose() {\n this.handleAction('close');\n }\n },\n\n watch: {\n inputValue: {\n immediate: true,\n handler: function handler(val) {\n var _this3 = this;\n\n this.$nextTick(function (_) {\n if (_this3.$type === 'prompt' && val !== null) {\n _this3.validate();\n }\n });\n }\n },\n\n visible: function visible(val) {\n var _this4 = this;\n\n if (val) {\n this.uid++;\n if (this.$type === 'alert' || this.$type === 'confirm') {\n this.$nextTick(function () {\n _this4.$refs.confirm.$el.focus();\n });\n }\n this.focusAfterClosed = document.activeElement;\n messageBox = new aria_dialog_default.a(this.$el, this.focusAfterClosed, this.getFirstFocus());\n }\n\n // prompt\n if (this.$type !== 'prompt') return;\n if (val) {\n setTimeout(function () {\n if (_this4.$refs.input && _this4.$refs.input.$el) {\n _this4.getInputElement().focus();\n }\n }, 500);\n } else {\n this.editorErrorMessage = '';\n Object(dom_[\"removeClass\"])(this.getInputElement(), 'invalid');\n }\n }\n },\n\n mounted: function mounted() {\n var _this5 = this;\n\n this.$nextTick(function () {\n if (_this5.closeOnHashChange) {\n window.addEventListener('hashchange', _this5.close);\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.closeOnHashChange) {\n window.removeEventListener('hashchange', this.close);\n }\n setTimeout(function () {\n messageBox.closeDialog();\n });\n },\n data: function data() {\n return {\n uid: 1,\n title: undefined,\n message: '',\n type: '',\n iconClass: '',\n customClass: '',\n showInput: false,\n inputValue: null,\n inputPlaceholder: '',\n inputType: 'text',\n inputPattern: null,\n inputValidator: null,\n inputErrorMessage: '',\n showConfirmButton: true,\n showCancelButton: false,\n action: '',\n confirmButtonText: '',\n cancelButtonText: '',\n confirmButtonLoading: false,\n cancelButtonLoading: false,\n confirmButtonClass: '',\n confirmButtonDisabled: false,\n cancelButtonClass: '',\n editorErrorMessage: null,\n callback: null,\n dangerouslyUseHTMLString: false,\n focusAfterClosed: null,\n isOnComposition: false,\n distinguishCancelAndClose: false\n };\n }\n});\n// CONCATENATED MODULE: ./packages/message-box/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_message_box_src_mainvue_type_script_lang_js_ = (message_box_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/message-box/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar src_main_component = normalizeComponent(\n packages_message_box_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_6b29b012_render,\n mainvue_type_template_id_6b29b012_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var src_main_api; }\nsrc_main_component.options.__file = \"packages/message-box/src/main.vue\"\n/* harmony default export */ var message_box_src_main = (src_main_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vdom\"\nvar vdom_ = __nested_webpack_require_8926__(22);\n\n// CONCATENATED MODULE: ./packages/message-box/src/main.js\nvar main_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar main_defaults = {\n title: null,\n message: '',\n type: '',\n iconClass: '',\n showInput: false,\n showClose: true,\n modalFade: true,\n lockScroll: true,\n closeOnClickModal: true,\n closeOnPressEscape: true,\n closeOnHashChange: true,\n inputValue: null,\n inputPlaceholder: '',\n inputType: 'text',\n inputPattern: null,\n inputValidator: null,\n inputErrorMessage: '',\n showConfirmButton: true,\n showCancelButton: false,\n confirmButtonPosition: 'right',\n confirmButtonHighlight: false,\n cancelButtonHighlight: false,\n confirmButtonText: '',\n cancelButtonText: '',\n confirmButtonClass: '',\n cancelButtonClass: '',\n customClass: '',\n beforeClose: null,\n dangerouslyUseHTMLString: false,\n center: false,\n roundButton: false,\n distinguishCancelAndClose: false\n};\n\n\n\n\n\n\nvar MessageBoxConstructor = external_vue_default.a.extend(message_box_src_main);\n\nvar currentMsg = void 0,\n main_instance = void 0;\nvar msgQueue = [];\n\nvar defaultCallback = function defaultCallback(action) {\n if (currentMsg) {\n var callback = currentMsg.callback;\n if (typeof callback === 'function') {\n if (main_instance.showInput) {\n callback(main_instance.inputValue, action);\n } else {\n callback(action);\n }\n }\n if (currentMsg.resolve) {\n if (action === 'confirm') {\n if (main_instance.showInput) {\n currentMsg.resolve({ value: main_instance.inputValue, action: action });\n } else {\n currentMsg.resolve(action);\n }\n } else if (currentMsg.reject && (action === 'cancel' || action === 'close')) {\n currentMsg.reject(action);\n }\n }\n }\n};\n\nvar initInstance = function initInstance() {\n main_instance = new MessageBoxConstructor({\n el: document.createElement('div')\n });\n\n main_instance.callback = defaultCallback;\n};\n\nvar main_showNextMsg = function showNextMsg() {\n if (!main_instance) {\n initInstance();\n }\n main_instance.action = '';\n\n if (!main_instance.visible || main_instance.closeTimer) {\n if (msgQueue.length > 0) {\n currentMsg = msgQueue.shift();\n\n var options = currentMsg.options;\n for (var prop in options) {\n if (options.hasOwnProperty(prop)) {\n main_instance[prop] = options[prop];\n }\n }\n if (options.callback === undefined) {\n main_instance.callback = defaultCallback;\n }\n\n var oldCb = main_instance.callback;\n main_instance.callback = function (action, instance) {\n oldCb(action, instance);\n showNextMsg();\n };\n if (Object(vdom_[\"isVNode\"])(main_instance.message)) {\n main_instance.$slots.default = [main_instance.message];\n main_instance.message = null;\n } else {\n delete main_instance.$slots.default;\n }\n ['modal', 'showClose', 'closeOnClickModal', 'closeOnPressEscape', 'closeOnHashChange'].forEach(function (prop) {\n if (main_instance[prop] === undefined) {\n main_instance[prop] = true;\n }\n });\n document.body.appendChild(main_instance.$el);\n\n external_vue_default.a.nextTick(function () {\n main_instance.visible = true;\n });\n }\n }\n};\n\nvar main_MessageBox = function MessageBox(options, callback) {\n if (external_vue_default.a.prototype.$isServer) return;\n if (typeof options === 'string' || Object(vdom_[\"isVNode\"])(options)) {\n options = {\n message: options\n };\n if (typeof arguments[1] === 'string') {\n options.title = arguments[1];\n }\n } else if (options.callback && !callback) {\n callback = options.callback;\n }\n\n if (typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n // eslint-disable-line\n msgQueue.push({\n options: merge_default()({}, main_defaults, MessageBox.defaults, options),\n callback: callback,\n resolve: resolve,\n reject: reject\n });\n\n main_showNextMsg();\n });\n } else {\n msgQueue.push({\n options: merge_default()({}, main_defaults, MessageBox.defaults, options),\n callback: callback\n });\n\n main_showNextMsg();\n }\n};\n\nmain_MessageBox.setDefaults = function (defaults) {\n main_MessageBox.defaults = defaults;\n};\n\nmain_MessageBox.alert = function (message, title, options) {\n if ((typeof title === 'undefined' ? 'undefined' : main_typeof(title)) === 'object') {\n options = title;\n title = '';\n } else if (title === undefined) {\n title = '';\n }\n return main_MessageBox(merge_default()({\n title: title,\n message: message,\n $type: 'alert',\n closeOnPressEscape: false,\n closeOnClickModal: false\n }, options));\n};\n\nmain_MessageBox.confirm = function (message, title, options) {\n if ((typeof title === 'undefined' ? 'undefined' : main_typeof(title)) === 'object') {\n options = title;\n title = '';\n } else if (title === undefined) {\n title = '';\n }\n return main_MessageBox(merge_default()({\n title: title,\n message: message,\n $type: 'confirm',\n showCancelButton: true\n }, options));\n};\n\nmain_MessageBox.prompt = function (message, title, options) {\n if ((typeof title === 'undefined' ? 'undefined' : main_typeof(title)) === 'object') {\n options = title;\n title = '';\n } else if (title === undefined) {\n title = '';\n }\n return main_MessageBox(merge_default()({\n title: title,\n message: message,\n showCancelButton: true,\n showInput: true,\n $type: 'prompt'\n }, options));\n};\n\nmain_MessageBox.close = function () {\n main_instance.doClose();\n main_instance.visible = false;\n msgQueue = [];\n currentMsg = null;\n};\n\n/* harmony default export */ var packages_message_box_src_main = (main_MessageBox);\n\n// CONCATENATED MODULE: ./packages/message-box/index.js\n\n/* harmony default export */ var message_box = (packages_message_box_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/breadcrumb/src/breadcrumb.vue?vue&type=template&id=4b464c06&\nvar breadcrumbvue_type_template_id_4b464c06_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-breadcrumb\",\n attrs: { \"aria-label\": \"Breadcrumb\", role: \"navigation\" }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar breadcrumbvue_type_template_id_4b464c06_staticRenderFns = []\nbreadcrumbvue_type_template_id_4b464c06_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/breadcrumb/src/breadcrumb.vue?vue&type=template&id=4b464c06&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/breadcrumb/src/breadcrumb.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n\n/* harmony default export */ var breadcrumbvue_type_script_lang_js_ = ({\n name: 'ElBreadcrumb',\n\n props: {\n separator: {\n type: String,\n default: '/'\n },\n separatorClass: {\n type: String,\n default: ''\n }\n },\n\n provide: function provide() {\n return {\n elBreadcrumb: this\n };\n },\n mounted: function mounted() {\n var items = this.$el.querySelectorAll('.el-breadcrumb__item');\n if (items.length) {\n items[items.length - 1].setAttribute('aria-current', 'page');\n }\n }\n});\n// CONCATENATED MODULE: ./packages/breadcrumb/src/breadcrumb.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_breadcrumbvue_type_script_lang_js_ = (breadcrumbvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/breadcrumb/src/breadcrumb.vue\n\n\n\n\n\n/* normalize component */\n\nvar breadcrumb_component = normalizeComponent(\n src_breadcrumbvue_type_script_lang_js_,\n breadcrumbvue_type_template_id_4b464c06_render,\n breadcrumbvue_type_template_id_4b464c06_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var breadcrumb_api; }\nbreadcrumb_component.options.__file = \"packages/breadcrumb/src/breadcrumb.vue\"\n/* harmony default export */ var breadcrumb = (breadcrumb_component.exports);\n// CONCATENATED MODULE: ./packages/breadcrumb/index.js\n\n\n/* istanbul ignore next */\nbreadcrumb.install = function (Vue) {\n Vue.component(breadcrumb.name, breadcrumb);\n};\n\n/* harmony default export */ var packages_breadcrumb = (breadcrumb);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/breadcrumb/src/breadcrumb-item.vue?vue&type=template&id=fcf9eaac&\nvar breadcrumb_itemvue_type_template_id_fcf9eaac_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"span\", { staticClass: \"el-breadcrumb__item\" }, [\n _c(\n \"span\",\n {\n ref: \"link\",\n class: [\"el-breadcrumb__inner\", _vm.to ? \"is-link\" : \"\"],\n attrs: { role: \"link\" }\n },\n [_vm._t(\"default\")],\n 2\n ),\n _vm.separatorClass\n ? _c(\"i\", {\n staticClass: \"el-breadcrumb__separator\",\n class: _vm.separatorClass\n })\n : _c(\n \"span\",\n {\n staticClass: \"el-breadcrumb__separator\",\n attrs: { role: \"presentation\" }\n },\n [_vm._v(_vm._s(_vm.separator))]\n )\n ])\n}\nvar breadcrumb_itemvue_type_template_id_fcf9eaac_staticRenderFns = []\nbreadcrumb_itemvue_type_template_id_fcf9eaac_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/breadcrumb/src/breadcrumb-item.vue?vue&type=template&id=fcf9eaac&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/breadcrumb/src/breadcrumb-item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var breadcrumb_itemvue_type_script_lang_js_ = ({\n name: 'ElBreadcrumbItem',\n props: {\n to: {},\n replace: Boolean\n },\n data: function data() {\n return {\n separator: '',\n separatorClass: ''\n };\n },\n\n\n inject: ['elBreadcrumb'],\n\n mounted: function mounted() {\n var _this = this;\n\n this.separator = this.elBreadcrumb.separator;\n this.separatorClass = this.elBreadcrumb.separatorClass;\n var link = this.$refs.link;\n link.setAttribute('role', 'link');\n link.addEventListener('click', function (_) {\n var to = _this.to,\n $router = _this.$router;\n\n if (!to || !$router) return;\n _this.replace ? $router.replace(to) : $router.push(to);\n });\n }\n});\n// CONCATENATED MODULE: ./packages/breadcrumb/src/breadcrumb-item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_breadcrumb_itemvue_type_script_lang_js_ = (breadcrumb_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/breadcrumb/src/breadcrumb-item.vue\n\n\n\n\n\n/* normalize component */\n\nvar breadcrumb_item_component = normalizeComponent(\n src_breadcrumb_itemvue_type_script_lang_js_,\n breadcrumb_itemvue_type_template_id_fcf9eaac_render,\n breadcrumb_itemvue_type_template_id_fcf9eaac_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var breadcrumb_item_api; }\nbreadcrumb_item_component.options.__file = \"packages/breadcrumb/src/breadcrumb-item.vue\"\n/* harmony default export */ var breadcrumb_item = (breadcrumb_item_component.exports);\n// CONCATENATED MODULE: ./packages/breadcrumb-item/index.js\n\n\n/* istanbul ignore next */\nbreadcrumb_item.install = function (Vue) {\n Vue.component(breadcrumb_item.name, breadcrumb_item);\n};\n\n/* harmony default export */ var packages_breadcrumb_item = (breadcrumb_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/form/src/form.vue?vue&type=template&id=a1b5ff34&\nvar formvue_type_template_id_a1b5ff34_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"form\",\n {\n staticClass: \"el-form\",\n class: [\n _vm.labelPosition ? \"el-form--label-\" + _vm.labelPosition : \"\",\n { \"el-form--inline\": _vm.inline }\n ]\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar formvue_type_template_id_a1b5ff34_staticRenderFns = []\nformvue_type_template_id_a1b5ff34_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/form/src/form.vue?vue&type=template&id=a1b5ff34&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/form/src/form.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var formvue_type_script_lang_js_ = ({\n name: 'ElForm',\n\n componentName: 'ElForm',\n\n provide: function provide() {\n return {\n elForm: this\n };\n },\n\n\n props: {\n model: Object,\n rules: Object,\n labelPosition: String,\n labelWidth: String,\n labelSuffix: {\n type: String,\n default: ''\n },\n inline: Boolean,\n inlineMessage: Boolean,\n statusIcon: Boolean,\n showMessage: {\n type: Boolean,\n default: true\n },\n size: String,\n disabled: Boolean,\n validateOnRuleChange: {\n type: Boolean,\n default: true\n },\n hideRequiredAsterisk: {\n type: Boolean,\n default: false\n }\n },\n watch: {\n rules: function rules() {\n // remove then add event listeners on form-item after form rules change\n this.fields.forEach(function (field) {\n field.removeValidateEvents();\n field.addValidateEvents();\n });\n\n if (this.validateOnRuleChange) {\n this.validate(function () {});\n }\n }\n },\n computed: {\n autoLabelWidth: function autoLabelWidth() {\n if (!this.potentialLabelWidthArr.length) return 0;\n var max = Math.max.apply(Math, this.potentialLabelWidthArr);\n return max ? max + 'px' : '';\n }\n },\n data: function data() {\n return {\n fields: [],\n potentialLabelWidthArr: [] // use this array to calculate auto width\n };\n },\n created: function created() {\n var _this = this;\n\n this.$on('el.form.addField', function (field) {\n if (field) {\n _this.fields.push(field);\n }\n });\n /* istanbul ignore next */\n this.$on('el.form.removeField', function (field) {\n if (field.prop) {\n _this.fields.splice(_this.fields.indexOf(field), 1);\n }\n });\n },\n\n methods: {\n resetFields: function resetFields() {\n if (!this.model) {\n console.warn('[Element Warn][Form]model is required for resetFields to work.');\n return;\n }\n this.fields.forEach(function (field) {\n field.resetField();\n });\n },\n clearValidate: function clearValidate() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var fields = props.length ? typeof props === 'string' ? this.fields.filter(function (field) {\n return props === field.prop;\n }) : this.fields.filter(function (field) {\n return props.indexOf(field.prop) > -1;\n }) : this.fields;\n fields.forEach(function (field) {\n field.clearValidate();\n });\n },\n validate: function validate(callback) {\n var _this2 = this;\n\n if (!this.model) {\n console.warn('[Element Warn][Form]model is required for validate to work!');\n return;\n }\n\n var promise = void 0;\n // if no callback, return promise\n if (typeof callback !== 'function' && window.Promise) {\n promise = new window.Promise(function (resolve, reject) {\n callback = function callback(valid, invalidFields) {\n valid ? resolve(valid) : reject(invalidFields);\n };\n });\n }\n\n var valid = true;\n var count = 0;\n // 如果需要验证的fields为空,调用验证时立刻返回callback\n if (this.fields.length === 0 && callback) {\n callback(true);\n }\n var invalidFields = {};\n this.fields.forEach(function (field) {\n field.validate('', function (message, field) {\n if (message) {\n valid = false;\n }\n invalidFields = merge_default()({}, invalidFields, field);\n if (typeof callback === 'function' && ++count === _this2.fields.length) {\n callback(valid, invalidFields);\n }\n });\n });\n\n if (promise) {\n return promise;\n }\n },\n validateField: function validateField(props, cb) {\n props = [].concat(props);\n var fields = this.fields.filter(function (field) {\n return props.indexOf(field.prop) !== -1;\n });\n if (!fields.length) {\n console.warn('[Element Warn]please pass correct props!');\n return;\n }\n\n fields.forEach(function (field) {\n field.validate('', cb);\n });\n },\n getLabelWidthIndex: function getLabelWidthIndex(width) {\n var index = this.potentialLabelWidthArr.indexOf(width);\n // it's impossible\n if (index === -1) {\n throw new Error('[ElementForm]unpected width ', width);\n }\n return index;\n },\n registerLabelWidth: function registerLabelWidth(val, oldVal) {\n if (val && oldVal) {\n var index = this.getLabelWidthIndex(oldVal);\n this.potentialLabelWidthArr.splice(index, 1, val);\n } else if (val) {\n this.potentialLabelWidthArr.push(val);\n }\n },\n deregisterLabelWidth: function deregisterLabelWidth(val) {\n var index = this.getLabelWidthIndex(val);\n this.potentialLabelWidthArr.splice(index, 1);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/form/src/form.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_formvue_type_script_lang_js_ = (formvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/form/src/form.vue\n\n\n\n\n\n/* normalize component */\n\nvar form_component = normalizeComponent(\n src_formvue_type_script_lang_js_,\n formvue_type_template_id_a1b5ff34_render,\n formvue_type_template_id_a1b5ff34_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var form_api; }\nform_component.options.__file = \"packages/form/src/form.vue\"\n/* harmony default export */ var src_form = (form_component.exports);\n// CONCATENATED MODULE: ./packages/form/index.js\n\n\n/* istanbul ignore next */\nsrc_form.install = function (Vue) {\n Vue.component(src_form.name, src_form);\n};\n\n/* harmony default export */ var packages_form = (src_form);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/form/src/form-item.vue?vue&type=template&id=b6f3db6c&\nvar form_itemvue_type_template_id_b6f3db6c_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-form-item\",\n class: [\n {\n \"el-form-item--feedback\": _vm.elForm && _vm.elForm.statusIcon,\n \"is-error\": _vm.validateState === \"error\",\n \"is-validating\": _vm.validateState === \"validating\",\n \"is-success\": _vm.validateState === \"success\",\n \"is-required\": _vm.isRequired || _vm.required,\n \"is-no-asterisk\": _vm.elForm && _vm.elForm.hideRequiredAsterisk\n },\n _vm.sizeClass ? \"el-form-item--\" + _vm.sizeClass : \"\"\n ]\n },\n [\n _c(\n \"label-wrap\",\n {\n attrs: {\n \"is-auto-width\": _vm.labelStyle && _vm.labelStyle.width === \"auto\",\n \"update-all\": _vm.form.labelWidth === \"auto\"\n }\n },\n [\n _vm.label || _vm.$slots.label\n ? _c(\n \"label\",\n {\n staticClass: \"el-form-item__label\",\n style: _vm.labelStyle,\n attrs: { for: _vm.labelFor }\n },\n [\n _vm._t(\"label\", [\n _vm._v(_vm._s(_vm.label + _vm.form.labelSuffix))\n ])\n ],\n 2\n )\n : _vm._e()\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"el-form-item__content\", style: _vm.contentStyle },\n [\n _vm._t(\"default\"),\n _c(\n \"transition\",\n { attrs: { name: \"el-zoom-in-top\" } },\n [\n _vm.validateState === \"error\" &&\n _vm.showMessage &&\n _vm.form.showMessage\n ? _vm._t(\n \"error\",\n [\n _c(\n \"div\",\n {\n staticClass: \"el-form-item__error\",\n class: {\n \"el-form-item__error--inline\":\n typeof _vm.inlineMessage === \"boolean\"\n ? _vm.inlineMessage\n : (_vm.elForm && _vm.elForm.inlineMessage) ||\n false\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.validateMessage) +\n \"\\n \"\n )\n ]\n )\n ],\n { error: _vm.validateMessage }\n )\n : _vm._e()\n ],\n 2\n )\n ],\n 2\n )\n ],\n 1\n )\n}\nvar form_itemvue_type_template_id_b6f3db6c_staticRenderFns = []\nform_itemvue_type_template_id_b6f3db6c_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/form/src/form-item.vue?vue&type=template&id=b6f3db6c&\n\n// EXTERNAL MODULE: external \"async-validator\"\nvar external_async_validator_ = __nested_webpack_require_8926__(41);\nvar external_async_validator_default = /*#__PURE__*/__nested_webpack_require_8926__.n(external_async_validator_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/form/src/label-wrap.vue?vue&type=script&lang=js&\n\n\n/* harmony default export */ var label_wrapvue_type_script_lang_js_ = ({\n props: {\n isAutoWidth: Boolean,\n updateAll: Boolean\n },\n\n inject: ['elForm', 'elFormItem'],\n\n render: function render() {\n var h = arguments[0];\n\n var slots = this.$slots.default;\n if (!slots) return null;\n if (this.isAutoWidth) {\n var autoLabelWidth = this.elForm.autoLabelWidth;\n var style = {};\n if (autoLabelWidth && autoLabelWidth !== 'auto') {\n var marginLeft = parseInt(autoLabelWidth, 10) - this.computedWidth;\n if (marginLeft) {\n style.marginLeft = marginLeft + 'px';\n }\n }\n return h(\n 'div',\n { 'class': 'el-form-item__label-wrap', style: style },\n [slots]\n );\n } else {\n return slots[0];\n }\n },\n\n\n methods: {\n getLabelWidth: function getLabelWidth() {\n if (this.$el && this.$el.firstElementChild) {\n var computedWidth = window.getComputedStyle(this.$el.firstElementChild).width;\n return Math.ceil(parseFloat(computedWidth));\n } else {\n return 0;\n }\n },\n updateLabelWidth: function updateLabelWidth() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'update';\n\n if (this.$slots.default && this.isAutoWidth && this.$el.firstElementChild) {\n if (action === 'update') {\n this.computedWidth = this.getLabelWidth();\n } else if (action === 'remove') {\n this.elForm.deregisterLabelWidth(this.computedWidth);\n }\n }\n }\n },\n\n watch: {\n computedWidth: function computedWidth(val, oldVal) {\n if (this.updateAll) {\n this.elForm.registerLabelWidth(val, oldVal);\n this.elFormItem.updateComputedLabelWidth(val);\n }\n }\n },\n\n data: function data() {\n return {\n computedWidth: 0\n };\n },\n mounted: function mounted() {\n this.updateLabelWidth('update');\n },\n updated: function updated() {\n this.updateLabelWidth('update');\n },\n beforeDestroy: function beforeDestroy() {\n this.updateLabelWidth('remove');\n }\n});\n// CONCATENATED MODULE: ./packages/form/src/label-wrap.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_label_wrapvue_type_script_lang_js_ = (label_wrapvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/form/src/label-wrap.vue\nvar label_wrap_render, label_wrap_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar label_wrap_component = normalizeComponent(\n src_label_wrapvue_type_script_lang_js_,\n label_wrap_render,\n label_wrap_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var label_wrap_api; }\nlabel_wrap_component.options.__file = \"packages/form/src/label-wrap.vue\"\n/* harmony default export */ var label_wrap = (label_wrap_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/form/src/form-item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ var form_itemvue_type_script_lang_js_ = ({\n name: 'ElFormItem',\n\n componentName: 'ElFormItem',\n\n mixins: [emitter_default.a],\n\n provide: function provide() {\n return {\n elFormItem: this\n };\n },\n\n\n inject: ['elForm'],\n\n props: {\n label: String,\n labelWidth: String,\n prop: String,\n required: {\n type: Boolean,\n default: undefined\n },\n rules: [Object, Array],\n error: String,\n validateStatus: String,\n for: String,\n inlineMessage: {\n type: [String, Boolean],\n default: ''\n },\n showMessage: {\n type: Boolean,\n default: true\n },\n size: String\n },\n components: {\n // use this component to calculate auto width\n LabelWrap: label_wrap\n },\n watch: {\n error: {\n immediate: true,\n handler: function handler(value) {\n this.validateMessage = value;\n this.validateState = value ? 'error' : '';\n }\n },\n validateStatus: function validateStatus(value) {\n this.validateState = value;\n },\n rules: function rules(value) {\n if ((!value || value.length === 0) && this.required === undefined) {\n this.clearValidate();\n }\n }\n },\n computed: {\n labelFor: function labelFor() {\n return this.for || this.prop;\n },\n labelStyle: function labelStyle() {\n var ret = {};\n if (this.form.labelPosition === 'top') return ret;\n var labelWidth = this.labelWidth || this.form.labelWidth;\n if (labelWidth) {\n ret.width = labelWidth;\n }\n return ret;\n },\n contentStyle: function contentStyle() {\n var ret = {};\n var label = this.label;\n if (this.form.labelPosition === 'top' || this.form.inline) return ret;\n if (!label && !this.labelWidth && this.isNested) return ret;\n var labelWidth = this.labelWidth || this.form.labelWidth;\n if (labelWidth === 'auto') {\n if (this.labelWidth === 'auto') {\n ret.marginLeft = this.computedLabelWidth;\n } else if (this.form.labelWidth === 'auto') {\n ret.marginLeft = this.elForm.autoLabelWidth;\n }\n } else {\n ret.marginLeft = labelWidth;\n }\n return ret;\n },\n form: function form() {\n var parent = this.$parent;\n var parentName = parent.$options.componentName;\n while (parentName !== 'ElForm') {\n if (parentName === 'ElFormItem') {\n this.isNested = true;\n }\n parent = parent.$parent;\n parentName = parent.$options.componentName;\n }\n return parent;\n },\n fieldValue: function fieldValue() {\n var model = this.form.model;\n if (!model || !this.prop) {\n return;\n }\n\n var path = this.prop;\n if (path.indexOf(':') !== -1) {\n path = path.replace(/:/, '.');\n }\n\n return Object(util_[\"getPropByPath\"])(model, path, true).v;\n },\n isRequired: function isRequired() {\n var rules = this.getRules();\n var isRequired = false;\n\n if (rules && rules.length) {\n rules.every(function (rule) {\n if (rule.required) {\n isRequired = true;\n return false;\n }\n return true;\n });\n }\n return isRequired;\n },\n _formSize: function _formSize() {\n return this.elForm.size;\n },\n elFormItemSize: function elFormItemSize() {\n return this.size || this._formSize;\n },\n sizeClass: function sizeClass() {\n return this.elFormItemSize || (this.$ELEMENT || {}).size;\n }\n },\n data: function data() {\n return {\n validateState: '',\n validateMessage: '',\n validateDisabled: false,\n validator: {},\n isNested: false,\n computedLabelWidth: ''\n };\n },\n\n methods: {\n validate: function validate(trigger) {\n var _this = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : util_[\"noop\"];\n\n this.validateDisabled = false;\n var rules = this.getFilteredRule(trigger);\n if ((!rules || rules.length === 0) && this.required === undefined) {\n callback();\n return true;\n }\n\n this.validateState = 'validating';\n\n var descriptor = {};\n if (rules && rules.length > 0) {\n rules.forEach(function (rule) {\n delete rule.trigger;\n });\n }\n descriptor[this.prop] = rules;\n\n var validator = new external_async_validator_default.a(descriptor);\n var model = {};\n\n model[this.prop] = this.fieldValue;\n\n validator.validate(model, { firstFields: true }, function (errors, invalidFields) {\n _this.validateState = !errors ? 'success' : 'error';\n _this.validateMessage = errors ? errors[0].message : '';\n\n callback(_this.validateMessage, invalidFields);\n _this.elForm && _this.elForm.$emit('validate', _this.prop, !errors, _this.validateMessage || null);\n });\n },\n clearValidate: function clearValidate() {\n this.validateState = '';\n this.validateMessage = '';\n this.validateDisabled = false;\n },\n resetField: function resetField() {\n var _this2 = this;\n\n this.validateState = '';\n this.validateMessage = '';\n\n var model = this.form.model;\n var value = this.fieldValue;\n var path = this.prop;\n if (path.indexOf(':') !== -1) {\n path = path.replace(/:/, '.');\n }\n\n var prop = Object(util_[\"getPropByPath\"])(model, path, true);\n\n this.validateDisabled = true;\n if (Array.isArray(value)) {\n prop.o[prop.k] = [].concat(this.initialValue);\n } else {\n prop.o[prop.k] = this.initialValue;\n }\n\n // reset validateDisabled after onFieldChange triggered\n this.$nextTick(function () {\n _this2.validateDisabled = false;\n });\n\n this.broadcast('ElTimeSelect', 'fieldReset', this.initialValue);\n },\n getRules: function getRules() {\n var formRules = this.form.rules;\n var selfRules = this.rules;\n var requiredRule = this.required !== undefined ? { required: !!this.required } : [];\n\n var prop = Object(util_[\"getPropByPath\"])(formRules, this.prop || '');\n formRules = formRules ? prop.o[this.prop || ''] || prop.v : [];\n\n return [].concat(selfRules || formRules || []).concat(requiredRule);\n },\n getFilteredRule: function getFilteredRule(trigger) {\n var rules = this.getRules();\n\n return rules.filter(function (rule) {\n if (!rule.trigger || trigger === '') return true;\n if (Array.isArray(rule.trigger)) {\n return rule.trigger.indexOf(trigger) > -1;\n } else {\n return rule.trigger === trigger;\n }\n }).map(function (rule) {\n return merge_default()({}, rule);\n });\n },\n onFieldBlur: function onFieldBlur() {\n this.validate('blur');\n },\n onFieldChange: function onFieldChange() {\n if (this.validateDisabled) {\n this.validateDisabled = false;\n return;\n }\n\n this.validate('change');\n },\n updateComputedLabelWidth: function updateComputedLabelWidth(width) {\n this.computedLabelWidth = width ? width + 'px' : '';\n },\n addValidateEvents: function addValidateEvents() {\n var rules = this.getRules();\n\n if (rules.length || this.required !== undefined) {\n this.$on('el.form.blur', this.onFieldBlur);\n this.$on('el.form.change', this.onFieldChange);\n }\n },\n removeValidateEvents: function removeValidateEvents() {\n this.$off();\n }\n },\n mounted: function mounted() {\n if (this.prop) {\n this.dispatch('ElForm', 'el.form.addField', [this]);\n\n var initialValue = this.fieldValue;\n if (Array.isArray(initialValue)) {\n initialValue = [].concat(initialValue);\n }\n Object.defineProperty(this, 'initialValue', {\n value: initialValue\n });\n\n this.addValidateEvents();\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.dispatch('ElForm', 'el.form.removeField', [this]);\n }\n});\n// CONCATENATED MODULE: ./packages/form/src/form-item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_form_itemvue_type_script_lang_js_ = (form_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/form/src/form-item.vue\n\n\n\n\n\n/* normalize component */\n\nvar form_item_component = normalizeComponent(\n src_form_itemvue_type_script_lang_js_,\n form_itemvue_type_template_id_b6f3db6c_render,\n form_itemvue_type_template_id_b6f3db6c_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var form_item_api; }\nform_item_component.options.__file = \"packages/form/src/form-item.vue\"\n/* harmony default export */ var form_item = (form_item_component.exports);\n// CONCATENATED MODULE: ./packages/form-item/index.js\n\n\n/* istanbul ignore next */\nform_item.install = function (Vue) {\n Vue.component(form_item.name, form_item);\n};\n\n/* harmony default export */ var packages_form_item = (form_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/tabs/src/tab-bar.vue?vue&type=template&id=2031f33a&\nvar tab_barvue_type_template_id_2031f33a_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", {\n staticClass: \"el-tabs__active-bar\",\n class: \"is-\" + _vm.rootTabs.tabPosition,\n style: _vm.barStyle\n })\n}\nvar tab_barvue_type_template_id_2031f33a_staticRenderFns = []\ntab_barvue_type_template_id_2031f33a_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/tabs/src/tab-bar.vue?vue&type=template&id=2031f33a&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/tabs/src/tab-bar.vue?vue&type=script&lang=js&\n//\n//\n//\n\n\n/* harmony default export */ var tab_barvue_type_script_lang_js_ = ({\n name: 'TabBar',\n\n props: {\n tabs: Array\n },\n\n inject: ['rootTabs'],\n\n computed: {\n barStyle: {\n get: function get() {\n var _this = this;\n\n var style = {};\n var offset = 0;\n var tabSize = 0;\n var sizeName = ['top', 'bottom'].indexOf(this.rootTabs.tabPosition) !== -1 ? 'width' : 'height';\n var sizeDir = sizeName === 'width' ? 'x' : 'y';\n var firstUpperCase = function firstUpperCase(str) {\n return str.toLowerCase().replace(/( |^)[a-z]/g, function (L) {\n return L.toUpperCase();\n });\n };\n this.tabs.every(function (tab, index) {\n var $el = Object(util_[\"arrayFind\"])(_this.$parent.$refs.tabs || [], function (t) {\n return t.id.replace('tab-', '') === tab.paneName;\n });\n if (!$el) {\n return false;\n }\n\n if (!tab.active) {\n offset += $el['client' + firstUpperCase(sizeName)];\n return true;\n } else {\n tabSize = $el['client' + firstUpperCase(sizeName)];\n var tabStyles = window.getComputedStyle($el);\n if (sizeName === 'width' && _this.tabs.length > 1) {\n tabSize -= parseFloat(tabStyles.paddingLeft) + parseFloat(tabStyles.paddingRight);\n }\n if (sizeName === 'width') {\n offset += parseFloat(tabStyles.paddingLeft);\n }\n return false;\n }\n });\n\n var transform = 'translate' + firstUpperCase(sizeDir) + '(' + offset + 'px)';\n style[sizeName] = tabSize + 'px';\n style.transform = transform;\n style.msTransform = transform;\n style.webkitTransform = transform;\n\n return style;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/tabs/src/tab-bar.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_tab_barvue_type_script_lang_js_ = (tab_barvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/tabs/src/tab-bar.vue\n\n\n\n\n\n/* normalize component */\n\nvar tab_bar_component = normalizeComponent(\n src_tab_barvue_type_script_lang_js_,\n tab_barvue_type_template_id_2031f33a_render,\n tab_barvue_type_template_id_2031f33a_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var tab_bar_api; }\ntab_bar_component.options.__file = \"packages/tabs/src/tab-bar.vue\"\n/* harmony default export */ var tab_bar = (tab_bar_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/tabs/src/tab-nav.vue?vue&type=script&lang=js&\n\n\n\n\nfunction noop() {}\nvar tab_navvue_type_script_lang_js_firstUpperCase = function firstUpperCase(str) {\n return str.toLowerCase().replace(/( |^)[a-z]/g, function (L) {\n return L.toUpperCase();\n });\n};\n\n/* harmony default export */ var tab_navvue_type_script_lang_js_ = ({\n name: 'TabNav',\n\n components: {\n TabBar: tab_bar\n },\n\n inject: ['rootTabs'],\n\n props: {\n panes: Array,\n currentName: String,\n editable: Boolean,\n onTabClick: {\n type: Function,\n default: noop\n },\n onTabRemove: {\n type: Function,\n default: noop\n },\n type: String,\n stretch: Boolean\n },\n\n data: function data() {\n return {\n scrollable: false,\n navOffset: 0,\n isFocus: false,\n focusable: true\n };\n },\n\n\n computed: {\n navStyle: function navStyle() {\n var dir = ['top', 'bottom'].indexOf(this.rootTabs.tabPosition) !== -1 ? 'X' : 'Y';\n return {\n transform: 'translate' + dir + '(-' + this.navOffset + 'px)'\n };\n },\n sizeName: function sizeName() {\n return ['top', 'bottom'].indexOf(this.rootTabs.tabPosition) !== -1 ? 'width' : 'height';\n }\n },\n\n methods: {\n scrollPrev: function scrollPrev() {\n var containerSize = this.$refs.navScroll['offset' + tab_navvue_type_script_lang_js_firstUpperCase(this.sizeName)];\n var currentOffset = this.navOffset;\n\n if (!currentOffset) return;\n\n var newOffset = currentOffset > containerSize ? currentOffset - containerSize : 0;\n\n this.navOffset = newOffset;\n },\n scrollNext: function scrollNext() {\n var navSize = this.$refs.nav['offset' + tab_navvue_type_script_lang_js_firstUpperCase(this.sizeName)];\n var containerSize = this.$refs.navScroll['offset' + tab_navvue_type_script_lang_js_firstUpperCase(this.sizeName)];\n var currentOffset = this.navOffset;\n\n if (navSize - currentOffset <= containerSize) return;\n\n var newOffset = navSize - currentOffset > containerSize * 2 ? currentOffset + containerSize : navSize - containerSize;\n\n this.navOffset = newOffset;\n },\n scrollToActiveTab: function scrollToActiveTab() {\n if (!this.scrollable) return;\n var nav = this.$refs.nav;\n var activeTab = this.$el.querySelector('.is-active');\n if (!activeTab) return;\n var navScroll = this.$refs.navScroll;\n var isHorizontal = ['top', 'bottom'].indexOf(this.rootTabs.tabPosition) !== -1;\n var activeTabBounding = activeTab.getBoundingClientRect();\n var navScrollBounding = navScroll.getBoundingClientRect();\n var maxOffset = isHorizontal ? nav.offsetWidth - navScrollBounding.width : nav.offsetHeight - navScrollBounding.height;\n var currentOffset = this.navOffset;\n var newOffset = currentOffset;\n\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset = currentOffset - (navScrollBounding.left - activeTabBounding.left);\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset = currentOffset + activeTabBounding.right - navScrollBounding.right;\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset = currentOffset - (navScrollBounding.top - activeTabBounding.top);\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset = currentOffset + (activeTabBounding.bottom - navScrollBounding.bottom);\n }\n }\n newOffset = Math.max(newOffset, 0);\n this.navOffset = Math.min(newOffset, maxOffset);\n },\n update: function update() {\n if (!this.$refs.nav) return;\n var sizeName = this.sizeName;\n var navSize = this.$refs.nav['offset' + tab_navvue_type_script_lang_js_firstUpperCase(sizeName)];\n var containerSize = this.$refs.navScroll['offset' + tab_navvue_type_script_lang_js_firstUpperCase(sizeName)];\n var currentOffset = this.navOffset;\n\n if (containerSize < navSize) {\n var _currentOffset = this.navOffset;\n this.scrollable = this.scrollable || {};\n this.scrollable.prev = _currentOffset;\n this.scrollable.next = _currentOffset + containerSize < navSize;\n if (navSize - _currentOffset < containerSize) {\n this.navOffset = navSize - containerSize;\n }\n } else {\n this.scrollable = false;\n if (currentOffset > 0) {\n this.navOffset = 0;\n }\n }\n },\n changeTab: function changeTab(e) {\n var keyCode = e.keyCode;\n var nextIndex = void 0;\n var currentIndex = void 0,\n tabList = void 0;\n if ([37, 38, 39, 40].indexOf(keyCode) !== -1) {\n // 左右上下键更换tab\n tabList = e.currentTarget.querySelectorAll('[role=tab]');\n currentIndex = Array.prototype.indexOf.call(tabList, e.target);\n } else {\n return;\n }\n if (keyCode === 37 || keyCode === 38) {\n // left\n if (currentIndex === 0) {\n // first\n nextIndex = tabList.length - 1;\n } else {\n nextIndex = currentIndex - 1;\n }\n } else {\n // right\n if (currentIndex < tabList.length - 1) {\n // not last\n nextIndex = currentIndex + 1;\n } else {\n nextIndex = 0;\n }\n }\n tabList[nextIndex].focus(); // 改变焦点元素\n tabList[nextIndex].click(); // 选中下一个tab\n this.setFocus();\n },\n setFocus: function setFocus() {\n if (this.focusable) {\n this.isFocus = true;\n }\n },\n removeFocus: function removeFocus() {\n this.isFocus = false;\n },\n visibilityChangeHandler: function visibilityChangeHandler() {\n var _this = this;\n\n var visibility = document.visibilityState;\n if (visibility === 'hidden') {\n this.focusable = false;\n } else if (visibility === 'visible') {\n setTimeout(function () {\n _this.focusable = true;\n }, 50);\n }\n },\n windowBlurHandler: function windowBlurHandler() {\n this.focusable = false;\n },\n windowFocusHandler: function windowFocusHandler() {\n var _this2 = this;\n\n setTimeout(function () {\n _this2.focusable = true;\n }, 50);\n }\n },\n\n updated: function updated() {\n this.update();\n },\n render: function render(h) {\n var _this3 = this;\n\n var type = this.type,\n panes = this.panes,\n editable = this.editable,\n stretch = this.stretch,\n onTabClick = this.onTabClick,\n onTabRemove = this.onTabRemove,\n navStyle = this.navStyle,\n scrollable = this.scrollable,\n scrollNext = this.scrollNext,\n scrollPrev = this.scrollPrev,\n changeTab = this.changeTab,\n setFocus = this.setFocus,\n removeFocus = this.removeFocus;\n\n var scrollBtn = scrollable ? [h(\n 'span',\n { 'class': ['el-tabs__nav-prev', scrollable.prev ? '' : 'is-disabled'], on: {\n 'click': scrollPrev\n }\n },\n [h('i', { 'class': 'el-icon-arrow-left' })]\n ), h(\n 'span',\n { 'class': ['el-tabs__nav-next', scrollable.next ? '' : 'is-disabled'], on: {\n 'click': scrollNext\n }\n },\n [h('i', { 'class': 'el-icon-arrow-right' })]\n )] : null;\n\n var tabs = this._l(panes, function (pane, index) {\n var _ref;\n\n var tabName = pane.name || pane.index || index;\n var closable = pane.isClosable || editable;\n\n pane.index = '' + index;\n\n var btnClose = closable ? h('span', { 'class': 'el-icon-close', on: {\n 'click': function click(ev) {\n onTabRemove(pane, ev);\n }\n }\n }) : null;\n\n var tabLabelContent = pane.$slots.label || pane.label;\n var tabindex = pane.active ? 0 : -1;\n return h(\n 'div',\n {\n 'class': (_ref = {\n 'el-tabs__item': true\n }, _ref['is-' + _this3.rootTabs.tabPosition] = true, _ref['is-active'] = pane.active, _ref['is-disabled'] = pane.disabled, _ref['is-closable'] = closable, _ref['is-focus'] = _this3.isFocus, _ref),\n attrs: { id: 'tab-' + tabName,\n\n 'aria-controls': 'pane-' + tabName,\n role: 'tab',\n 'aria-selected': pane.active,\n\n tabindex: tabindex\n },\n key: 'tab-' + tabName, ref: 'tabs', refInFor: true,\n on: {\n 'focus': function focus() {\n setFocus();\n },\n 'blur': function blur() {\n removeFocus();\n },\n 'click': function click(ev) {\n removeFocus();onTabClick(pane, tabName, ev);\n },\n 'keydown': function keydown(ev) {\n if (closable && (ev.keyCode === 46 || ev.keyCode === 8)) {\n onTabRemove(pane, ev);\n }\n }\n }\n },\n [tabLabelContent, btnClose]\n );\n });\n return h(\n 'div',\n { 'class': ['el-tabs__nav-wrap', scrollable ? 'is-scrollable' : '', 'is-' + this.rootTabs.tabPosition] },\n [scrollBtn, h(\n 'div',\n { 'class': ['el-tabs__nav-scroll'], ref: 'navScroll' },\n [h(\n 'div',\n {\n 'class': ['el-tabs__nav', 'is-' + this.rootTabs.tabPosition, stretch && ['top', 'bottom'].indexOf(this.rootTabs.tabPosition) !== -1 ? 'is-stretch' : ''],\n ref: 'nav',\n style: navStyle,\n attrs: { role: 'tablist'\n },\n on: {\n 'keydown': changeTab\n }\n },\n [!type ? h('tab-bar', {\n attrs: { tabs: panes }\n }) : null, tabs]\n )]\n )]\n );\n },\n mounted: function mounted() {\n var _this4 = this;\n\n Object(resize_event_[\"addResizeListener\"])(this.$el, this.update);\n document.addEventListener('visibilitychange', this.visibilityChangeHandler);\n window.addEventListener('blur', this.windowBlurHandler);\n window.addEventListener('focus', this.windowFocusHandler);\n setTimeout(function () {\n _this4.scrollToActiveTab();\n }, 0);\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$el && this.update) Object(resize_event_[\"removeResizeListener\"])(this.$el, this.update);\n document.removeEventListener('visibilitychange', this.visibilityChangeHandler);\n window.removeEventListener('blur', this.windowBlurHandler);\n window.removeEventListener('focus', this.windowFocusHandler);\n }\n});\n// CONCATENATED MODULE: ./packages/tabs/src/tab-nav.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_tab_navvue_type_script_lang_js_ = (tab_navvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/tabs/src/tab-nav.vue\nvar tab_nav_render, tab_nav_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar tab_nav_component = normalizeComponent(\n src_tab_navvue_type_script_lang_js_,\n tab_nav_render,\n tab_nav_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var tab_nav_api; }\ntab_nav_component.options.__file = \"packages/tabs/src/tab-nav.vue\"\n/* harmony default export */ var tab_nav = (tab_nav_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/tabs/src/tabs.vue?vue&type=script&lang=js&\n\n\n\n/* harmony default export */ var tabsvue_type_script_lang_js_ = ({\n name: 'ElTabs',\n\n components: {\n TabNav: tab_nav\n },\n\n props: {\n type: String,\n activeName: String,\n closable: Boolean,\n addable: Boolean,\n value: {},\n editable: Boolean,\n tabPosition: {\n type: String,\n default: 'top'\n },\n beforeLeave: Function,\n stretch: Boolean\n },\n\n provide: function provide() {\n return {\n rootTabs: this\n };\n },\n data: function data() {\n return {\n currentName: this.value || this.activeName,\n panes: []\n };\n },\n\n\n watch: {\n activeName: function activeName(value) {\n this.setCurrentName(value);\n },\n value: function value(_value) {\n this.setCurrentName(_value);\n },\n currentName: function currentName(value) {\n var _this = this;\n\n if (this.$refs.nav) {\n this.$nextTick(function () {\n _this.$refs.nav.$nextTick(function (_) {\n _this.$refs.nav.scrollToActiveTab();\n });\n });\n }\n }\n },\n\n methods: {\n calcPaneInstances: function calcPaneInstances() {\n var _this2 = this;\n\n var isForceUpdate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (this.$slots.default) {\n var paneSlots = this.$slots.default.filter(function (vnode) {\n return vnode.tag && vnode.componentOptions && vnode.componentOptions.Ctor.options.name === 'ElTabPane';\n });\n // update indeed\n var panes = paneSlots.map(function (_ref) {\n var componentInstance = _ref.componentInstance;\n return componentInstance;\n });\n var panesChanged = !(panes.length === this.panes.length && panes.every(function (pane, index) {\n return pane === _this2.panes[index];\n }));\n if (isForceUpdate || panesChanged) {\n this.panes = panes;\n }\n } else if (this.panes.length !== 0) {\n this.panes = [];\n }\n },\n handleTabClick: function handleTabClick(tab, tabName, event) {\n if (tab.disabled) return;\n this.setCurrentName(tabName);\n this.$emit('tab-click', tab, event);\n },\n handleTabRemove: function handleTabRemove(pane, ev) {\n if (pane.disabled) return;\n ev.stopPropagation();\n this.$emit('edit', pane.name, 'remove');\n this.$emit('tab-remove', pane.name);\n },\n handleTabAdd: function handleTabAdd() {\n this.$emit('edit', null, 'add');\n this.$emit('tab-add');\n },\n setCurrentName: function setCurrentName(value) {\n var _this3 = this;\n\n var changeCurrentName = function changeCurrentName() {\n _this3.currentName = value;\n _this3.$emit('input', value);\n };\n if (this.currentName !== value && this.beforeLeave) {\n var before = this.beforeLeave(value, this.currentName);\n if (before && before.then) {\n before.then(function () {\n changeCurrentName();\n _this3.$refs.nav && _this3.$refs.nav.removeFocus();\n }, function () {\n // https://github.com/ElemeFE/element/pull/14816\n // ignore promise rejection in `before-leave` hook\n });\n } else if (before !== false) {\n changeCurrentName();\n }\n } else {\n changeCurrentName();\n }\n }\n },\n\n render: function render(h) {\n var _ref2;\n\n var type = this.type,\n handleTabClick = this.handleTabClick,\n handleTabRemove = this.handleTabRemove,\n handleTabAdd = this.handleTabAdd,\n currentName = this.currentName,\n panes = this.panes,\n editable = this.editable,\n addable = this.addable,\n tabPosition = this.tabPosition,\n stretch = this.stretch;\n\n\n var newButton = editable || addable ? h(\n 'span',\n {\n 'class': 'el-tabs__new-tab',\n on: {\n 'click': handleTabAdd,\n 'keydown': function keydown(ev) {\n if (ev.keyCode === 13) {\n handleTabAdd();\n }\n }\n },\n attrs: {\n tabindex: '0'\n }\n },\n [h('i', { 'class': 'el-icon-plus' })]\n ) : null;\n\n var navData = {\n props: {\n currentName: currentName,\n onTabClick: handleTabClick,\n onTabRemove: handleTabRemove,\n editable: editable,\n type: type,\n panes: panes,\n stretch: stretch\n },\n ref: 'nav'\n };\n var header = h(\n 'div',\n { 'class': ['el-tabs__header', 'is-' + tabPosition] },\n [newButton, h('tab-nav', navData)]\n );\n var panels = h(\n 'div',\n { 'class': 'el-tabs__content' },\n [this.$slots.default]\n );\n\n return h(\n 'div',\n { 'class': (_ref2 = {\n 'el-tabs': true,\n 'el-tabs--card': type === 'card'\n }, _ref2['el-tabs--' + tabPosition] = true, _ref2['el-tabs--border-card'] = type === 'border-card', _ref2) },\n [tabPosition !== 'bottom' ? [header, panels] : [panels, header]]\n );\n },\n created: function created() {\n if (!this.currentName) {\n this.setCurrentName('0');\n }\n\n this.$on('tab-nav-update', this.calcPaneInstances.bind(null, true));\n },\n mounted: function mounted() {\n this.calcPaneInstances();\n },\n updated: function updated() {\n this.calcPaneInstances();\n }\n});\n// CONCATENATED MODULE: ./packages/tabs/src/tabs.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_tabsvue_type_script_lang_js_ = (tabsvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/tabs/src/tabs.vue\nvar tabs_render, tabs_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar tabs_component = normalizeComponent(\n src_tabsvue_type_script_lang_js_,\n tabs_render,\n tabs_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var tabs_api; }\ntabs_component.options.__file = \"packages/tabs/src/tabs.vue\"\n/* harmony default export */ var tabs = (tabs_component.exports);\n// CONCATENATED MODULE: ./packages/tabs/index.js\n\n\n/* istanbul ignore next */\ntabs.install = function (Vue) {\n Vue.component(tabs.name, tabs);\n};\n\n/* harmony default export */ var packages_tabs = (tabs);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/tabs/src/tab-pane.vue?vue&type=template&id=9145a070&\nvar tab_panevue_type_template_id_9145a070_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return !_vm.lazy || _vm.loaded || _vm.active\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.active,\n expression: \"active\"\n }\n ],\n staticClass: \"el-tab-pane\",\n attrs: {\n role: \"tabpanel\",\n \"aria-hidden\": !_vm.active,\n id: \"pane-\" + _vm.paneName,\n \"aria-labelledby\": \"tab-\" + _vm.paneName\n }\n },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e()\n}\nvar tab_panevue_type_template_id_9145a070_staticRenderFns = []\ntab_panevue_type_template_id_9145a070_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/tabs/src/tab-pane.vue?vue&type=template&id=9145a070&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/tabs/src/tab-pane.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var tab_panevue_type_script_lang_js_ = ({\n name: 'ElTabPane',\n\n componentName: 'ElTabPane',\n\n props: {\n label: String,\n labelContent: Function,\n name: String,\n closable: Boolean,\n disabled: Boolean,\n lazy: Boolean\n },\n\n data: function data() {\n return {\n index: null,\n loaded: false\n };\n },\n\n\n computed: {\n isClosable: function isClosable() {\n return this.closable || this.$parent.closable;\n },\n active: function active() {\n var active = this.$parent.currentName === (this.name || this.index);\n if (active) {\n this.loaded = true;\n }\n return active;\n },\n paneName: function paneName() {\n return this.name || this.index;\n }\n },\n\n updated: function updated() {\n this.$parent.$emit('tab-nav-update');\n }\n});\n// CONCATENATED MODULE: ./packages/tabs/src/tab-pane.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_tab_panevue_type_script_lang_js_ = (tab_panevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/tabs/src/tab-pane.vue\n\n\n\n\n\n/* normalize component */\n\nvar tab_pane_component = normalizeComponent(\n src_tab_panevue_type_script_lang_js_,\n tab_panevue_type_template_id_9145a070_render,\n tab_panevue_type_template_id_9145a070_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var tab_pane_api; }\ntab_pane_component.options.__file = \"packages/tabs/src/tab-pane.vue\"\n/* harmony default export */ var tab_pane = (tab_pane_component.exports);\n// CONCATENATED MODULE: ./packages/tab-pane/index.js\n\n\n/* istanbul ignore next */\ntab_pane.install = function (Vue) {\n Vue.component(tab_pane.name, tab_pane);\n};\n\n/* harmony default export */ var packages_tab_pane = (tab_pane);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/tag/src/tag.vue?vue&type=script&lang=js&\n\n/* harmony default export */ var tagvue_type_script_lang_js_ = ({\n name: 'ElTag',\n props: {\n text: String,\n closable: Boolean,\n type: String,\n hit: Boolean,\n disableTransitions: Boolean,\n color: String,\n size: String,\n effect: {\n type: String,\n default: 'light',\n validator: function validator(val) {\n return ['dark', 'light', 'plain'].indexOf(val) !== -1;\n }\n }\n },\n methods: {\n handleClose: function handleClose(event) {\n event.stopPropagation();\n this.$emit('close', event);\n },\n handleClick: function handleClick(event) {\n this.$emit('click', event);\n }\n },\n computed: {\n tagSize: function tagSize() {\n return this.size || (this.$ELEMENT || {}).size;\n }\n },\n render: function render(h) {\n var type = this.type,\n tagSize = this.tagSize,\n hit = this.hit,\n effect = this.effect;\n\n var classes = ['el-tag', type ? 'el-tag--' + type : '', tagSize ? 'el-tag--' + tagSize : '', effect ? 'el-tag--' + effect : '', hit && 'is-hit'];\n var tagEl = h(\n 'span',\n {\n 'class': classes,\n style: { backgroundColor: this.color },\n on: {\n 'click': this.handleClick\n }\n },\n [this.$slots.default, this.closable && h('i', { 'class': 'el-tag__close el-icon-close', on: {\n 'click': this.handleClose\n }\n })]\n );\n\n return this.disableTransitions ? tagEl : h(\n 'transition',\n {\n attrs: { name: 'el-zoom-in-center' }\n },\n [tagEl]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/tag/src/tag.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_tagvue_type_script_lang_js_ = (tagvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/tag/src/tag.vue\nvar tag_render, tag_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar tag_component = normalizeComponent(\n src_tagvue_type_script_lang_js_,\n tag_render,\n tag_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var tag_api; }\ntag_component.options.__file = \"packages/tag/src/tag.vue\"\n/* harmony default export */ var src_tag = (tag_component.exports);\n// CONCATENATED MODULE: ./packages/tag/index.js\n\n\n/* istanbul ignore next */\nsrc_tag.install = function (Vue) {\n Vue.component(src_tag.name, src_tag);\n};\n\n/* harmony default export */ var packages_tag = (src_tag);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/tree/src/tree.vue?vue&type=template&id=547575a6&\nvar treevue_type_template_id_547575a6_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-tree\",\n class: {\n \"el-tree--highlight-current\": _vm.highlightCurrent,\n \"is-dragging\": !!_vm.dragState.draggingNode,\n \"is-drop-not-allow\": !_vm.dragState.allowDrop,\n \"is-drop-inner\": _vm.dragState.dropType === \"inner\"\n },\n attrs: { role: \"tree\" }\n },\n [\n _vm._l(_vm.root.childNodes, function(child) {\n return _c(\"el-tree-node\", {\n key: _vm.getNodeKey(child),\n attrs: {\n node: child,\n props: _vm.props,\n \"render-after-expand\": _vm.renderAfterExpand,\n \"show-checkbox\": _vm.showCheckbox,\n \"render-content\": _vm.renderContent\n },\n on: { \"node-expand\": _vm.handleNodeExpand }\n })\n }),\n _vm.isEmpty\n ? _c(\"div\", { staticClass: \"el-tree__empty-block\" }, [\n _c(\"span\", { staticClass: \"el-tree__empty-text\" }, [\n _vm._v(_vm._s(_vm.emptyText))\n ])\n ])\n : _vm._e(),\n _c(\"div\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.dragState.showDropIndicator,\n expression: \"dragState.showDropIndicator\"\n }\n ],\n ref: \"dropIndicator\",\n staticClass: \"el-tree__drop-indicator\"\n })\n ],\n 2\n )\n}\nvar treevue_type_template_id_547575a6_staticRenderFns = []\ntreevue_type_template_id_547575a6_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/tree/src/tree.vue?vue&type=template&id=547575a6&\n\n// CONCATENATED MODULE: ./packages/tree/src/model/util.js\nvar NODE_KEY = '$treeNodeId';\n\nvar markNodeData = function markNodeData(node, data) {\n if (!data || data[NODE_KEY]) return;\n Object.defineProperty(data, NODE_KEY, {\n value: node.id,\n enumerable: false,\n configurable: false,\n writable: false\n });\n};\n\nvar util_getNodeKey = function getNodeKey(key, data) {\n if (!key) return data[NODE_KEY];\n return data[key];\n};\n\nvar findNearestComponent = function findNearestComponent(element, componentName) {\n var target = element;\n while (target && target.tagName !== 'BODY') {\n if (target.__vue__ && target.__vue__.$options.name === componentName) {\n return target.__vue__;\n }\n target = target.parentNode;\n }\n return null;\n};\n// CONCATENATED MODULE: ./packages/tree/src/model/node.js\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction node_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\nvar getChildState = function getChildState(node) {\n var all = true;\n var none = true;\n var allWithoutDisable = true;\n for (var i = 0, j = node.length; i < j; i++) {\n var n = node[i];\n if (n.checked !== true || n.indeterminate) {\n all = false;\n if (!n.disabled) {\n allWithoutDisable = false;\n }\n }\n if (n.checked !== false || n.indeterminate) {\n none = false;\n }\n }\n\n return { all: all, none: none, allWithoutDisable: allWithoutDisable, half: !all && !none };\n};\n\nvar reInitChecked = function reInitChecked(node) {\n if (node.childNodes.length === 0 || node.loading) return;\n\n var _getChildState = getChildState(node.childNodes),\n all = _getChildState.all,\n none = _getChildState.none,\n half = _getChildState.half;\n\n if (all) {\n node.checked = true;\n node.indeterminate = false;\n } else if (half) {\n node.checked = false;\n node.indeterminate = true;\n } else if (none) {\n node.checked = false;\n node.indeterminate = false;\n }\n\n var parent = node.parent;\n if (!parent || parent.level === 0) return;\n\n if (!node.store.checkStrictly) {\n reInitChecked(parent);\n }\n};\n\nvar getPropertyFromData = function getPropertyFromData(node, prop) {\n var props = node.store.props;\n var data = node.data || {};\n var config = props[prop];\n\n if (typeof config === 'function') {\n return config(data, node);\n } else if (typeof config === 'string') {\n return data[config];\n } else if (typeof config === 'undefined') {\n var dataProp = data[prop];\n return dataProp === undefined ? '' : dataProp;\n }\n};\n\nvar nodeIdSeed = 0;\n\nvar node_Node = function () {\n function Node(options) {\n node_classCallCheck(this, Node);\n\n this.id = nodeIdSeed++;\n this.text = null;\n this.checked = false;\n this.indeterminate = false;\n this.data = null;\n this.expanded = false;\n this.parent = null;\n this.visible = true;\n this.isCurrent = false;\n\n for (var name in options) {\n if (options.hasOwnProperty(name)) {\n this[name] = options[name];\n }\n }\n\n // internal\n this.level = 0;\n this.loaded = false;\n this.childNodes = [];\n this.loading = false;\n\n if (this.parent) {\n this.level = this.parent.level + 1;\n }\n\n var store = this.store;\n if (!store) {\n throw new Error('[Node]store is required!');\n }\n store.registerNode(this);\n\n var props = store.props;\n if (props && typeof props.isLeaf !== 'undefined') {\n var isLeaf = getPropertyFromData(this, 'isLeaf');\n if (typeof isLeaf === 'boolean') {\n this.isLeafByUser = isLeaf;\n }\n }\n\n if (store.lazy !== true && this.data) {\n this.setData(this.data);\n\n if (store.defaultExpandAll) {\n this.expanded = true;\n }\n } else if (this.level > 0 && store.lazy && store.defaultExpandAll) {\n this.expand();\n }\n if (!Array.isArray(this.data)) {\n markNodeData(this, this.data);\n }\n if (!this.data) return;\n var defaultExpandedKeys = store.defaultExpandedKeys;\n var key = store.key;\n if (key && defaultExpandedKeys && defaultExpandedKeys.indexOf(this.key) !== -1) {\n this.expand(null, store.autoExpandParent);\n }\n\n if (key && store.currentNodeKey !== undefined && this.key === store.currentNodeKey) {\n store.currentNode = this;\n store.currentNode.isCurrent = true;\n }\n\n if (store.lazy) {\n store._initDefaultCheckedNode(this);\n }\n\n this.updateLeafState();\n }\n\n Node.prototype.setData = function setData(data) {\n if (!Array.isArray(data)) {\n markNodeData(this, data);\n }\n\n this.data = data;\n this.childNodes = [];\n\n var children = void 0;\n if (this.level === 0 && this.data instanceof Array) {\n children = this.data;\n } else {\n children = getPropertyFromData(this, 'children') || [];\n }\n\n for (var i = 0, j = children.length; i < j; i++) {\n this.insertChild({ data: children[i] });\n }\n };\n\n Node.prototype.contains = function contains(target) {\n var deep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var walk = function walk(parent) {\n var children = parent.childNodes || [];\n var result = false;\n for (var i = 0, j = children.length; i < j; i++) {\n var child = children[i];\n if (child === target || deep && walk(child)) {\n result = true;\n break;\n }\n }\n return result;\n };\n\n return walk(this);\n };\n\n Node.prototype.remove = function remove() {\n var parent = this.parent;\n if (parent) {\n parent.removeChild(this);\n }\n };\n\n Node.prototype.insertChild = function insertChild(child, index, batch) {\n if (!child) throw new Error('insertChild error: child is required.');\n\n if (!(child instanceof Node)) {\n if (!batch) {\n var children = this.getChildren(true) || [];\n if (children.indexOf(child.data) === -1) {\n if (typeof index === 'undefined' || index < 0) {\n children.push(child.data);\n } else {\n children.splice(index, 0, child.data);\n }\n }\n }\n merge_default()(child, {\n parent: this,\n store: this.store\n });\n child = new Node(child);\n }\n\n child.level = this.level + 1;\n\n if (typeof index === 'undefined' || index < 0) {\n this.childNodes.push(child);\n } else {\n this.childNodes.splice(index, 0, child);\n }\n\n this.updateLeafState();\n };\n\n Node.prototype.insertBefore = function insertBefore(child, ref) {\n var index = void 0;\n if (ref) {\n index = this.childNodes.indexOf(ref);\n }\n this.insertChild(child, index);\n };\n\n Node.prototype.insertAfter = function insertAfter(child, ref) {\n var index = void 0;\n if (ref) {\n index = this.childNodes.indexOf(ref);\n if (index !== -1) index += 1;\n }\n this.insertChild(child, index);\n };\n\n Node.prototype.removeChild = function removeChild(child) {\n var children = this.getChildren() || [];\n var dataIndex = children.indexOf(child.data);\n if (dataIndex > -1) {\n children.splice(dataIndex, 1);\n }\n\n var index = this.childNodes.indexOf(child);\n\n if (index > -1) {\n this.store && this.store.deregisterNode(child);\n child.parent = null;\n this.childNodes.splice(index, 1);\n }\n\n this.updateLeafState();\n };\n\n Node.prototype.removeChildByData = function removeChildByData(data) {\n var targetNode = null;\n\n for (var i = 0; i < this.childNodes.length; i++) {\n if (this.childNodes[i].data === data) {\n targetNode = this.childNodes[i];\n break;\n }\n }\n\n if (targetNode) {\n this.removeChild(targetNode);\n }\n };\n\n Node.prototype.expand = function expand(callback, expandParent) {\n var _this = this;\n\n var done = function done() {\n if (expandParent) {\n var parent = _this.parent;\n while (parent.level > 0) {\n parent.expanded = true;\n parent = parent.parent;\n }\n }\n _this.expanded = true;\n if (callback) callback();\n };\n\n if (this.shouldLoadData()) {\n this.loadData(function (data) {\n if (data instanceof Array) {\n if (_this.checked) {\n _this.setChecked(true, true);\n } else if (!_this.store.checkStrictly) {\n reInitChecked(_this);\n }\n done();\n }\n });\n } else {\n done();\n }\n };\n\n Node.prototype.doCreateChildren = function doCreateChildren(array) {\n var _this2 = this;\n\n var defaultProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n array.forEach(function (item) {\n _this2.insertChild(merge_default()({ data: item }, defaultProps), undefined, true);\n });\n };\n\n Node.prototype.collapse = function collapse() {\n this.expanded = false;\n };\n\n Node.prototype.shouldLoadData = function shouldLoadData() {\n return this.store.lazy === true && this.store.load && !this.loaded;\n };\n\n Node.prototype.updateLeafState = function updateLeafState() {\n if (this.store.lazy === true && this.loaded !== true && typeof this.isLeafByUser !== 'undefined') {\n this.isLeaf = this.isLeafByUser;\n return;\n }\n var childNodes = this.childNodes;\n if (!this.store.lazy || this.store.lazy === true && this.loaded === true) {\n this.isLeaf = !childNodes || childNodes.length === 0;\n return;\n }\n this.isLeaf = false;\n };\n\n Node.prototype.setChecked = function setChecked(value, deep, recursion, passValue) {\n var _this3 = this;\n\n this.indeterminate = value === 'half';\n this.checked = value === true;\n\n if (this.store.checkStrictly) return;\n\n if (!(this.shouldLoadData() && !this.store.checkDescendants)) {\n var _getChildState2 = getChildState(this.childNodes),\n all = _getChildState2.all,\n allWithoutDisable = _getChildState2.allWithoutDisable;\n\n if (!this.isLeaf && !all && allWithoutDisable) {\n this.checked = false;\n value = false;\n }\n\n var handleDescendants = function handleDescendants() {\n if (deep) {\n var childNodes = _this3.childNodes;\n for (var i = 0, j = childNodes.length; i < j; i++) {\n var child = childNodes[i];\n passValue = passValue || value !== false;\n var isCheck = child.disabled ? child.checked : passValue;\n child.setChecked(isCheck, deep, true, passValue);\n }\n\n var _getChildState3 = getChildState(childNodes),\n half = _getChildState3.half,\n _all = _getChildState3.all;\n\n if (!_all) {\n _this3.checked = _all;\n _this3.indeterminate = half;\n }\n }\n };\n\n if (this.shouldLoadData()) {\n // Only work on lazy load data.\n this.loadData(function () {\n handleDescendants();\n reInitChecked(_this3);\n }, {\n checked: value !== false\n });\n return;\n } else {\n handleDescendants();\n }\n }\n\n var parent = this.parent;\n if (!parent || parent.level === 0) return;\n\n if (!recursion) {\n reInitChecked(parent);\n }\n };\n\n Node.prototype.getChildren = function getChildren() {\n var forceInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n // this is data\n if (this.level === 0) return this.data;\n var data = this.data;\n if (!data) return null;\n\n var props = this.store.props;\n var children = 'children';\n if (props) {\n children = props.children || 'children';\n }\n\n if (data[children] === undefined) {\n data[children] = null;\n }\n\n if (forceInit && !data[children]) {\n data[children] = [];\n }\n\n return data[children];\n };\n\n Node.prototype.updateChildren = function updateChildren() {\n var _this4 = this;\n\n var newData = this.getChildren() || [];\n var oldData = this.childNodes.map(function (node) {\n return node.data;\n });\n\n var newDataMap = {};\n var newNodes = [];\n\n newData.forEach(function (item, index) {\n var key = item[NODE_KEY];\n var isNodeExists = !!key && Object(util_[\"arrayFindIndex\"])(oldData, function (data) {\n return data[NODE_KEY] === key;\n }) >= 0;\n if (isNodeExists) {\n newDataMap[key] = { index: index, data: item };\n } else {\n newNodes.push({ index: index, data: item });\n }\n });\n\n if (!this.store.lazy) {\n oldData.forEach(function (item) {\n if (!newDataMap[item[NODE_KEY]]) _this4.removeChildByData(item);\n });\n }\n\n newNodes.forEach(function (_ref) {\n var index = _ref.index,\n data = _ref.data;\n\n _this4.insertChild({ data: data }, index);\n });\n\n this.updateLeafState();\n };\n\n Node.prototype.loadData = function loadData(callback) {\n var _this5 = this;\n\n var defaultProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.store.lazy === true && this.store.load && !this.loaded && (!this.loading || Object.keys(defaultProps).length)) {\n this.loading = true;\n\n var resolve = function resolve(children) {\n _this5.childNodes = [];\n\n _this5.doCreateChildren(children, defaultProps);\n _this5.loaded = true;\n _this5.loading = false;\n _this5.updateLeafState();\n if (callback) {\n callback.call(_this5, children);\n }\n };\n\n this.store.load(this, resolve);\n } else {\n if (callback) {\n callback.call(this);\n }\n }\n };\n\n _createClass(Node, [{\n key: 'label',\n get: function get() {\n return getPropertyFromData(this, 'label');\n }\n }, {\n key: 'key',\n get: function get() {\n var nodeKey = this.store.key;\n if (this.data) return this.data[nodeKey];\n return null;\n }\n }, {\n key: 'disabled',\n get: function get() {\n return getPropertyFromData(this, 'disabled');\n }\n }, {\n key: 'nextSibling',\n get: function get() {\n var parent = this.parent;\n if (parent) {\n var index = parent.childNodes.indexOf(this);\n if (index > -1) {\n return parent.childNodes[index + 1];\n }\n }\n return null;\n }\n }, {\n key: 'previousSibling',\n get: function get() {\n var parent = this.parent;\n if (parent) {\n var index = parent.childNodes.indexOf(this);\n if (index > -1) {\n return index > 0 ? parent.childNodes[index - 1] : null;\n }\n }\n return null;\n }\n }]);\n\n return Node;\n}();\n\n/* harmony default export */ var model_node = (node_Node);\n// CONCATENATED MODULE: ./packages/tree/src/model/tree-store.js\nvar tree_store_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction tree_store_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar tree_store_TreeStore = function () {\n function TreeStore(options) {\n var _this = this;\n\n tree_store_classCallCheck(this, TreeStore);\n\n this.currentNode = null;\n this.currentNodeKey = null;\n\n for (var option in options) {\n if (options.hasOwnProperty(option)) {\n this[option] = options[option];\n }\n }\n\n this.nodesMap = {};\n\n this.root = new model_node({\n data: this.data,\n store: this\n });\n\n if (this.lazy && this.load) {\n var loadFn = this.load;\n loadFn(this.root, function (data) {\n _this.root.doCreateChildren(data);\n _this._initDefaultCheckedNodes();\n });\n } else {\n this._initDefaultCheckedNodes();\n }\n }\n\n TreeStore.prototype.filter = function filter(value) {\n var filterNodeMethod = this.filterNodeMethod;\n var lazy = this.lazy;\n var traverse = function traverse(node) {\n var childNodes = node.root ? node.root.childNodes : node.childNodes;\n\n childNodes.forEach(function (child) {\n child.visible = filterNodeMethod.call(child, value, child.data, child);\n\n traverse(child);\n });\n\n if (!node.visible && childNodes.length) {\n var allHidden = true;\n allHidden = !childNodes.some(function (child) {\n return child.visible;\n });\n\n if (node.root) {\n node.root.visible = allHidden === false;\n } else {\n node.visible = allHidden === false;\n }\n }\n if (!value) return;\n\n if (node.visible && !node.isLeaf && !lazy) node.expand();\n };\n\n traverse(this);\n };\n\n TreeStore.prototype.setData = function setData(newVal) {\n var instanceChanged = newVal !== this.root.data;\n if (instanceChanged) {\n this.root.setData(newVal);\n this._initDefaultCheckedNodes();\n } else {\n this.root.updateChildren();\n }\n };\n\n TreeStore.prototype.getNode = function getNode(data) {\n if (data instanceof model_node) return data;\n var key = (typeof data === 'undefined' ? 'undefined' : tree_store_typeof(data)) !== 'object' ? data : util_getNodeKey(this.key, data);\n return this.nodesMap[key] || null;\n };\n\n TreeStore.prototype.insertBefore = function insertBefore(data, refData) {\n var refNode = this.getNode(refData);\n refNode.parent.insertBefore({ data: data }, refNode);\n };\n\n TreeStore.prototype.insertAfter = function insertAfter(data, refData) {\n var refNode = this.getNode(refData);\n refNode.parent.insertAfter({ data: data }, refNode);\n };\n\n TreeStore.prototype.remove = function remove(data) {\n var node = this.getNode(data);\n\n if (node && node.parent) {\n if (node === this.currentNode) {\n this.currentNode = null;\n }\n node.parent.removeChild(node);\n }\n };\n\n TreeStore.prototype.append = function append(data, parentData) {\n var parentNode = parentData ? this.getNode(parentData) : this.root;\n\n if (parentNode) {\n parentNode.insertChild({ data: data });\n }\n };\n\n TreeStore.prototype._initDefaultCheckedNodes = function _initDefaultCheckedNodes() {\n var _this2 = this;\n\n var defaultCheckedKeys = this.defaultCheckedKeys || [];\n var nodesMap = this.nodesMap;\n\n defaultCheckedKeys.forEach(function (checkedKey) {\n var node = nodesMap[checkedKey];\n\n if (node) {\n node.setChecked(true, !_this2.checkStrictly);\n }\n });\n };\n\n TreeStore.prototype._initDefaultCheckedNode = function _initDefaultCheckedNode(node) {\n var defaultCheckedKeys = this.defaultCheckedKeys || [];\n\n if (defaultCheckedKeys.indexOf(node.key) !== -1) {\n node.setChecked(true, !this.checkStrictly);\n }\n };\n\n TreeStore.prototype.setDefaultCheckedKey = function setDefaultCheckedKey(newVal) {\n if (newVal !== this.defaultCheckedKeys) {\n this.defaultCheckedKeys = newVal;\n this._initDefaultCheckedNodes();\n }\n };\n\n TreeStore.prototype.registerNode = function registerNode(node) {\n var key = this.key;\n if (!key || !node || !node.data) return;\n\n var nodeKey = node.key;\n if (nodeKey !== undefined) this.nodesMap[node.key] = node;\n };\n\n TreeStore.prototype.deregisterNode = function deregisterNode(node) {\n var _this3 = this;\n\n var key = this.key;\n if (!key || !node || !node.data) return;\n\n node.childNodes.forEach(function (child) {\n _this3.deregisterNode(child);\n });\n\n delete this.nodesMap[node.key];\n };\n\n TreeStore.prototype.getCheckedNodes = function getCheckedNodes() {\n var leafOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var includeHalfChecked = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var checkedNodes = [];\n var traverse = function traverse(node) {\n var childNodes = node.root ? node.root.childNodes : node.childNodes;\n\n childNodes.forEach(function (child) {\n if ((child.checked || includeHalfChecked && child.indeterminate) && (!leafOnly || leafOnly && child.isLeaf)) {\n checkedNodes.push(child.data);\n }\n\n traverse(child);\n });\n };\n\n traverse(this);\n\n return checkedNodes;\n };\n\n TreeStore.prototype.getCheckedKeys = function getCheckedKeys() {\n var _this4 = this;\n\n var leafOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n return this.getCheckedNodes(leafOnly).map(function (data) {\n return (data || {})[_this4.key];\n });\n };\n\n TreeStore.prototype.getHalfCheckedNodes = function getHalfCheckedNodes() {\n var nodes = [];\n var traverse = function traverse(node) {\n var childNodes = node.root ? node.root.childNodes : node.childNodes;\n\n childNodes.forEach(function (child) {\n if (child.indeterminate) {\n nodes.push(child.data);\n }\n\n traverse(child);\n });\n };\n\n traverse(this);\n\n return nodes;\n };\n\n TreeStore.prototype.getHalfCheckedKeys = function getHalfCheckedKeys() {\n var _this5 = this;\n\n return this.getHalfCheckedNodes().map(function (data) {\n return (data || {})[_this5.key];\n });\n };\n\n TreeStore.prototype._getAllNodes = function _getAllNodes() {\n var allNodes = [];\n var nodesMap = this.nodesMap;\n for (var nodeKey in nodesMap) {\n if (nodesMap.hasOwnProperty(nodeKey)) {\n allNodes.push(nodesMap[nodeKey]);\n }\n }\n\n return allNodes;\n };\n\n TreeStore.prototype.updateChildren = function updateChildren(key, data) {\n var node = this.nodesMap[key];\n if (!node) return;\n var childNodes = node.childNodes;\n for (var i = childNodes.length - 1; i >= 0; i--) {\n var child = childNodes[i];\n this.remove(child.data);\n }\n for (var _i = 0, j = data.length; _i < j; _i++) {\n var _child = data[_i];\n this.append(_child, node.data);\n }\n };\n\n TreeStore.prototype._setCheckedKeys = function _setCheckedKeys(key) {\n var leafOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var checkedKeys = arguments[2];\n\n var allNodes = this._getAllNodes().sort(function (a, b) {\n return b.level - a.level;\n });\n var cache = Object.create(null);\n var keys = Object.keys(checkedKeys);\n allNodes.forEach(function (node) {\n return node.setChecked(false, false);\n });\n for (var i = 0, j = allNodes.length; i < j; i++) {\n var node = allNodes[i];\n var nodeKey = node.data[key].toString();\n var checked = keys.indexOf(nodeKey) > -1;\n if (!checked) {\n if (node.checked && !cache[nodeKey]) {\n node.setChecked(false, false);\n }\n continue;\n }\n\n var parent = node.parent;\n while (parent && parent.level > 0) {\n cache[parent.data[key]] = true;\n parent = parent.parent;\n }\n\n if (node.isLeaf || this.checkStrictly) {\n node.setChecked(true, false);\n continue;\n }\n node.setChecked(true, true);\n\n if (leafOnly) {\n (function () {\n node.setChecked(false, false);\n var traverse = function traverse(node) {\n var childNodes = node.childNodes;\n childNodes.forEach(function (child) {\n if (!child.isLeaf) {\n child.setChecked(false, false);\n }\n traverse(child);\n });\n };\n traverse(node);\n })();\n }\n }\n };\n\n TreeStore.prototype.setCheckedNodes = function setCheckedNodes(array) {\n var leafOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var key = this.key;\n var checkedKeys = {};\n array.forEach(function (item) {\n checkedKeys[(item || {})[key]] = true;\n });\n\n this._setCheckedKeys(key, leafOnly, checkedKeys);\n };\n\n TreeStore.prototype.setCheckedKeys = function setCheckedKeys(keys) {\n var leafOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n this.defaultCheckedKeys = keys;\n var key = this.key;\n var checkedKeys = {};\n keys.forEach(function (key) {\n checkedKeys[key] = true;\n });\n\n this._setCheckedKeys(key, leafOnly, checkedKeys);\n };\n\n TreeStore.prototype.setDefaultExpandedKeys = function setDefaultExpandedKeys(keys) {\n var _this6 = this;\n\n keys = keys || [];\n this.defaultExpandedKeys = keys;\n\n keys.forEach(function (key) {\n var node = _this6.getNode(key);\n if (node) node.expand(null, _this6.autoExpandParent);\n });\n };\n\n TreeStore.prototype.setChecked = function setChecked(data, checked, deep) {\n var node = this.getNode(data);\n\n if (node) {\n node.setChecked(!!checked, deep);\n }\n };\n\n TreeStore.prototype.getCurrentNode = function getCurrentNode() {\n return this.currentNode;\n };\n\n TreeStore.prototype.setCurrentNode = function setCurrentNode(currentNode) {\n var prevCurrentNode = this.currentNode;\n if (prevCurrentNode) {\n prevCurrentNode.isCurrent = false;\n }\n this.currentNode = currentNode;\n this.currentNode.isCurrent = true;\n };\n\n TreeStore.prototype.setUserCurrentNode = function setUserCurrentNode(node) {\n var key = node[this.key];\n var currNode = this.nodesMap[key];\n this.setCurrentNode(currNode);\n };\n\n TreeStore.prototype.setCurrentNodeKey = function setCurrentNodeKey(key) {\n if (key === null || key === undefined) {\n this.currentNode && (this.currentNode.isCurrent = false);\n this.currentNode = null;\n return;\n }\n var node = this.getNode(key);\n if (node) {\n this.setCurrentNode(node);\n }\n };\n\n return TreeStore;\n}();\n\n/* harmony default export */ var tree_store = (tree_store_TreeStore);\n;\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/tree/src/tree-node.vue?vue&type=template&id=3ba3ef0e&\nvar tree_nodevue_type_template_id_3ba3ef0e_render = function() {\n var this$1 = this\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.node.visible,\n expression: \"node.visible\"\n }\n ],\n ref: \"node\",\n staticClass: \"el-tree-node\",\n class: {\n \"is-expanded\": _vm.expanded,\n \"is-current\": _vm.node.isCurrent,\n \"is-hidden\": !_vm.node.visible,\n \"is-focusable\": !_vm.node.disabled,\n \"is-checked\": !_vm.node.disabled && _vm.node.checked\n },\n attrs: {\n role: \"treeitem\",\n tabindex: \"-1\",\n \"aria-expanded\": _vm.expanded,\n \"aria-disabled\": _vm.node.disabled,\n \"aria-checked\": _vm.node.checked,\n draggable: _vm.tree.draggable\n },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.handleClick($event)\n },\n contextmenu: function($event) {\n return this$1.handleContextMenu($event)\n },\n dragstart: function($event) {\n $event.stopPropagation()\n return _vm.handleDragStart($event)\n },\n dragover: function($event) {\n $event.stopPropagation()\n return _vm.handleDragOver($event)\n },\n dragend: function($event) {\n $event.stopPropagation()\n return _vm.handleDragEnd($event)\n },\n drop: function($event) {\n $event.stopPropagation()\n return _vm.handleDrop($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"el-tree-node__content\",\n style: {\n \"padding-left\": (_vm.node.level - 1) * _vm.tree.indent + \"px\"\n }\n },\n [\n _c(\"span\", {\n class: [\n {\n \"is-leaf\": _vm.node.isLeaf,\n expanded: !_vm.node.isLeaf && _vm.expanded\n },\n \"el-tree-node__expand-icon\",\n _vm.tree.iconClass ? _vm.tree.iconClass : \"el-icon-caret-right\"\n ],\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.handleExpandIconClick($event)\n }\n }\n }),\n _vm.showCheckbox\n ? _c(\"el-checkbox\", {\n attrs: {\n indeterminate: _vm.node.indeterminate,\n disabled: !!_vm.node.disabled\n },\n on: { change: _vm.handleCheckChange },\n nativeOn: {\n click: function($event) {\n $event.stopPropagation()\n }\n },\n model: {\n value: _vm.node.checked,\n callback: function($$v) {\n _vm.$set(_vm.node, \"checked\", $$v)\n },\n expression: \"node.checked\"\n }\n })\n : _vm._e(),\n _vm.node.loading\n ? _c(\"span\", {\n staticClass: \"el-tree-node__loading-icon el-icon-loading\"\n })\n : _vm._e(),\n _c(\"node-content\", { attrs: { node: _vm.node } })\n ],\n 1\n ),\n _c(\"el-collapse-transition\", [\n !_vm.renderAfterExpand || _vm.childNodeRendered\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.expanded,\n expression: \"expanded\"\n }\n ],\n staticClass: \"el-tree-node__children\",\n attrs: { role: \"group\", \"aria-expanded\": _vm.expanded }\n },\n _vm._l(_vm.node.childNodes, function(child) {\n return _c(\"el-tree-node\", {\n key: _vm.getNodeKey(child),\n attrs: {\n \"render-content\": _vm.renderContent,\n \"render-after-expand\": _vm.renderAfterExpand,\n \"show-checkbox\": _vm.showCheckbox,\n node: child\n },\n on: { \"node-expand\": _vm.handleChildNodeExpand }\n })\n }),\n 1\n )\n : _vm._e()\n ])\n ],\n 1\n )\n}\nvar tree_nodevue_type_template_id_3ba3ef0e_staticRenderFns = []\ntree_nodevue_type_template_id_3ba3ef0e_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/tree/src/tree-node.vue?vue&type=template&id=3ba3ef0e&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/tree/src/tree-node.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ var tree_nodevue_type_script_lang_js_ = ({\n name: 'ElTreeNode',\n\n componentName: 'ElTreeNode',\n\n mixins: [emitter_default.a],\n\n props: {\n node: {\n default: function _default() {\n return {};\n }\n },\n props: {},\n renderContent: Function,\n renderAfterExpand: {\n type: Boolean,\n default: true\n },\n showCheckbox: {\n type: Boolean,\n default: false\n }\n },\n\n components: {\n ElCollapseTransition: collapse_transition_default.a,\n ElCheckbox: checkbox_default.a,\n NodeContent: {\n props: {\n node: {\n required: true\n }\n },\n render: function render(h) {\n var parent = this.$parent;\n var tree = parent.tree;\n var node = this.node;\n var data = node.data,\n store = node.store;\n\n return parent.renderContent ? parent.renderContent.call(parent._renderProxy, h, { _self: tree.$vnode.context, node: node, data: data, store: store }) : tree.$scopedSlots.default ? tree.$scopedSlots.default({ node: node, data: data }) : h(\n 'span',\n { 'class': 'el-tree-node__label' },\n [node.label]\n );\n }\n }\n },\n\n data: function data() {\n return {\n tree: null,\n expanded: false,\n childNodeRendered: false,\n oldChecked: null,\n oldIndeterminate: null\n };\n },\n\n\n watch: {\n 'node.indeterminate': function nodeIndeterminate(val) {\n this.handleSelectChange(this.node.checked, val);\n },\n 'node.checked': function nodeChecked(val) {\n this.handleSelectChange(val, this.node.indeterminate);\n },\n 'node.expanded': function nodeExpanded(val) {\n var _this = this;\n\n this.$nextTick(function () {\n return _this.expanded = val;\n });\n if (val) {\n this.childNodeRendered = true;\n }\n }\n },\n\n methods: {\n getNodeKey: function getNodeKey(node) {\n return util_getNodeKey(this.tree.nodeKey, node.data);\n },\n handleSelectChange: function handleSelectChange(checked, indeterminate) {\n if (this.oldChecked !== checked && this.oldIndeterminate !== indeterminate) {\n this.tree.$emit('check-change', this.node.data, checked, indeterminate);\n }\n this.oldChecked = checked;\n this.indeterminate = indeterminate;\n },\n handleClick: function handleClick() {\n var store = this.tree.store;\n store.setCurrentNode(this.node);\n this.tree.$emit('current-change', store.currentNode ? store.currentNode.data : null, store.currentNode);\n this.tree.currentNode = this;\n if (this.tree.expandOnClickNode) {\n this.handleExpandIconClick();\n }\n if (this.tree.checkOnClickNode && !this.node.disabled) {\n this.handleCheckChange(null, {\n target: { checked: !this.node.checked }\n });\n }\n this.tree.$emit('node-click', this.node.data, this.node, this);\n },\n handleContextMenu: function handleContextMenu(event) {\n if (this.tree._events['node-contextmenu'] && this.tree._events['node-contextmenu'].length > 0) {\n event.stopPropagation();\n event.preventDefault();\n }\n this.tree.$emit('node-contextmenu', event, this.node.data, this.node, this);\n },\n handleExpandIconClick: function handleExpandIconClick() {\n if (this.node.isLeaf) return;\n if (this.expanded) {\n this.tree.$emit('node-collapse', this.node.data, this.node, this);\n this.node.collapse();\n } else {\n this.node.expand();\n this.$emit('node-expand', this.node.data, this.node, this);\n }\n },\n handleCheckChange: function handleCheckChange(value, ev) {\n var _this2 = this;\n\n this.node.setChecked(ev.target.checked, !this.tree.checkStrictly);\n this.$nextTick(function () {\n var store = _this2.tree.store;\n _this2.tree.$emit('check', _this2.node.data, {\n checkedNodes: store.getCheckedNodes(),\n checkedKeys: store.getCheckedKeys(),\n halfCheckedNodes: store.getHalfCheckedNodes(),\n halfCheckedKeys: store.getHalfCheckedKeys()\n });\n });\n },\n handleChildNodeExpand: function handleChildNodeExpand(nodeData, node, instance) {\n this.broadcast('ElTreeNode', 'tree-node-expand', node);\n this.tree.$emit('node-expand', nodeData, node, instance);\n },\n handleDragStart: function handleDragStart(event) {\n if (!this.tree.draggable) return;\n this.tree.$emit('tree-node-drag-start', event, this);\n },\n handleDragOver: function handleDragOver(event) {\n if (!this.tree.draggable) return;\n this.tree.$emit('tree-node-drag-over', event, this);\n event.preventDefault();\n },\n handleDrop: function handleDrop(event) {\n event.preventDefault();\n },\n handleDragEnd: function handleDragEnd(event) {\n if (!this.tree.draggable) return;\n this.tree.$emit('tree-node-drag-end', event, this);\n }\n },\n\n created: function created() {\n var _this3 = this;\n\n var parent = this.$parent;\n\n if (parent.isTree) {\n this.tree = parent;\n } else {\n this.tree = parent.tree;\n }\n\n var tree = this.tree;\n if (!tree) {\n console.warn('Can not find node\\'s tree.');\n }\n\n var props = tree.props || {};\n var childrenKey = props['children'] || 'children';\n\n this.$watch('node.data.' + childrenKey, function () {\n _this3.node.updateChildren();\n });\n\n if (this.node.expanded) {\n this.expanded = true;\n this.childNodeRendered = true;\n }\n\n if (this.tree.accordion) {\n this.$on('tree-node-expand', function (node) {\n if (_this3.node !== node) {\n _this3.node.collapse();\n }\n });\n }\n }\n});\n// CONCATENATED MODULE: ./packages/tree/src/tree-node.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_tree_nodevue_type_script_lang_js_ = (tree_nodevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/tree/src/tree-node.vue\n\n\n\n\n\n/* normalize component */\n\nvar tree_node_component = normalizeComponent(\n src_tree_nodevue_type_script_lang_js_,\n tree_nodevue_type_template_id_3ba3ef0e_render,\n tree_nodevue_type_template_id_3ba3ef0e_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var tree_node_api; }\ntree_node_component.options.__file = \"packages/tree/src/tree-node.vue\"\n/* harmony default export */ var tree_node = (tree_node_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/tree/src/tree.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n/* harmony default export */ var treevue_type_script_lang_js_ = ({\n name: 'ElTree',\n\n mixins: [emitter_default.a],\n\n components: {\n ElTreeNode: tree_node\n },\n\n data: function data() {\n return {\n store: null,\n root: null,\n currentNode: null,\n treeItems: null,\n checkboxItems: [],\n dragState: {\n showDropIndicator: false,\n draggingNode: null,\n dropNode: null,\n allowDrop: true\n }\n };\n },\n\n\n props: {\n data: {\n type: Array\n },\n emptyText: {\n type: String,\n default: function _default() {\n return Object(lib_locale_[\"t\"])('el.tree.emptyText');\n }\n },\n renderAfterExpand: {\n type: Boolean,\n default: true\n },\n nodeKey: String,\n checkStrictly: Boolean,\n defaultExpandAll: Boolean,\n expandOnClickNode: {\n type: Boolean,\n default: true\n },\n checkOnClickNode: Boolean,\n checkDescendants: {\n type: Boolean,\n default: false\n },\n autoExpandParent: {\n type: Boolean,\n default: true\n },\n defaultCheckedKeys: Array,\n defaultExpandedKeys: Array,\n currentNodeKey: [String, Number],\n renderContent: Function,\n showCheckbox: {\n type: Boolean,\n default: false\n },\n draggable: {\n type: Boolean,\n default: false\n },\n allowDrag: Function,\n allowDrop: Function,\n props: {\n default: function _default() {\n return {\n children: 'children',\n label: 'label',\n disabled: 'disabled'\n };\n }\n },\n lazy: {\n type: Boolean,\n default: false\n },\n highlightCurrent: Boolean,\n load: Function,\n filterNodeMethod: Function,\n accordion: Boolean,\n indent: {\n type: Number,\n default: 18\n },\n iconClass: String\n },\n\n computed: {\n children: {\n set: function set(value) {\n this.data = value;\n },\n get: function get() {\n return this.data;\n }\n },\n\n treeItemArray: function treeItemArray() {\n return Array.prototype.slice.call(this.treeItems);\n },\n isEmpty: function isEmpty() {\n var childNodes = this.root.childNodes;\n\n return !childNodes || childNodes.length === 0 || childNodes.every(function (_ref) {\n var visible = _ref.visible;\n return !visible;\n });\n }\n },\n\n watch: {\n defaultCheckedKeys: function defaultCheckedKeys(newVal) {\n this.store.setDefaultCheckedKey(newVal);\n },\n defaultExpandedKeys: function defaultExpandedKeys(newVal) {\n this.store.defaultExpandedKeys = newVal;\n this.store.setDefaultExpandedKeys(newVal);\n },\n data: function data(newVal) {\n this.store.setData(newVal);\n },\n checkboxItems: function checkboxItems(val) {\n Array.prototype.forEach.call(val, function (checkbox) {\n checkbox.setAttribute('tabindex', -1);\n });\n },\n checkStrictly: function checkStrictly(newVal) {\n this.store.checkStrictly = newVal;\n }\n },\n\n methods: {\n filter: function filter(value) {\n if (!this.filterNodeMethod) throw new Error('[Tree] filterNodeMethod is required when filter');\n this.store.filter(value);\n },\n getNodeKey: function getNodeKey(node) {\n return util_getNodeKey(this.nodeKey, node.data);\n },\n getNodePath: function getNodePath(data) {\n if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in getNodePath');\n var node = this.store.getNode(data);\n if (!node) return [];\n var path = [node.data];\n var parent = node.parent;\n while (parent && parent !== this.root) {\n path.push(parent.data);\n parent = parent.parent;\n }\n return path.reverse();\n },\n getCheckedNodes: function getCheckedNodes(leafOnly, includeHalfChecked) {\n return this.store.getCheckedNodes(leafOnly, includeHalfChecked);\n },\n getCheckedKeys: function getCheckedKeys(leafOnly) {\n return this.store.getCheckedKeys(leafOnly);\n },\n getCurrentNode: function getCurrentNode() {\n var currentNode = this.store.getCurrentNode();\n return currentNode ? currentNode.data : null;\n },\n getCurrentKey: function getCurrentKey() {\n if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in getCurrentKey');\n var currentNode = this.getCurrentNode();\n return currentNode ? currentNode[this.nodeKey] : null;\n },\n setCheckedNodes: function setCheckedNodes(nodes, leafOnly) {\n if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCheckedNodes');\n this.store.setCheckedNodes(nodes, leafOnly);\n },\n setCheckedKeys: function setCheckedKeys(keys, leafOnly) {\n if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCheckedKeys');\n this.store.setCheckedKeys(keys, leafOnly);\n },\n setChecked: function setChecked(data, checked, deep) {\n this.store.setChecked(data, checked, deep);\n },\n getHalfCheckedNodes: function getHalfCheckedNodes() {\n return this.store.getHalfCheckedNodes();\n },\n getHalfCheckedKeys: function getHalfCheckedKeys() {\n return this.store.getHalfCheckedKeys();\n },\n setCurrentNode: function setCurrentNode(node) {\n if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCurrentNode');\n this.store.setUserCurrentNode(node);\n },\n setCurrentKey: function setCurrentKey(key) {\n if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCurrentKey');\n this.store.setCurrentNodeKey(key);\n },\n getNode: function getNode(data) {\n return this.store.getNode(data);\n },\n remove: function remove(data) {\n this.store.remove(data);\n },\n append: function append(data, parentNode) {\n this.store.append(data, parentNode);\n },\n insertBefore: function insertBefore(data, refNode) {\n this.store.insertBefore(data, refNode);\n },\n insertAfter: function insertAfter(data, refNode) {\n this.store.insertAfter(data, refNode);\n },\n handleNodeExpand: function handleNodeExpand(nodeData, node, instance) {\n this.broadcast('ElTreeNode', 'tree-node-expand', node);\n this.$emit('node-expand', nodeData, node, instance);\n },\n updateKeyChildren: function updateKeyChildren(key, data) {\n if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in updateKeyChild');\n this.store.updateChildren(key, data);\n },\n initTabIndex: function initTabIndex() {\n this.treeItems = this.$el.querySelectorAll('.is-focusable[role=treeitem]');\n this.checkboxItems = this.$el.querySelectorAll('input[type=checkbox]');\n var checkedItem = this.$el.querySelectorAll('.is-checked[role=treeitem]');\n if (checkedItem.length) {\n checkedItem[0].setAttribute('tabindex', 0);\n return;\n }\n this.treeItems[0] && this.treeItems[0].setAttribute('tabindex', 0);\n },\n handleKeydown: function handleKeydown(ev) {\n var currentItem = ev.target;\n if (currentItem.className.indexOf('el-tree-node') === -1) return;\n var keyCode = ev.keyCode;\n this.treeItems = this.$el.querySelectorAll('.is-focusable[role=treeitem]');\n var currentIndex = this.treeItemArray.indexOf(currentItem);\n var nextIndex = void 0;\n if ([38, 40].indexOf(keyCode) > -1) {\n // up、down\n ev.preventDefault();\n if (keyCode === 38) {\n // up\n nextIndex = currentIndex !== 0 ? currentIndex - 1 : 0;\n } else {\n nextIndex = currentIndex < this.treeItemArray.length - 1 ? currentIndex + 1 : 0;\n }\n this.treeItemArray[nextIndex].focus(); // 选中\n }\n if ([37, 39].indexOf(keyCode) > -1) {\n // left、right 展开\n ev.preventDefault();\n currentItem.click(); // 选中\n }\n var hasInput = currentItem.querySelector('[type=\"checkbox\"]');\n if ([13, 32].indexOf(keyCode) > -1 && hasInput) {\n // space enter选中checkbox\n ev.preventDefault();\n hasInput.click();\n }\n }\n },\n\n created: function created() {\n var _this = this;\n\n this.isTree = true;\n\n this.store = new tree_store({\n key: this.nodeKey,\n data: this.data,\n lazy: this.lazy,\n props: this.props,\n load: this.load,\n currentNodeKey: this.currentNodeKey,\n checkStrictly: this.checkStrictly,\n checkDescendants: this.checkDescendants,\n defaultCheckedKeys: this.defaultCheckedKeys,\n defaultExpandedKeys: this.defaultExpandedKeys,\n autoExpandParent: this.autoExpandParent,\n defaultExpandAll: this.defaultExpandAll,\n filterNodeMethod: this.filterNodeMethod\n });\n\n this.root = this.store.root;\n\n var dragState = this.dragState;\n this.$on('tree-node-drag-start', function (event, treeNode) {\n if (typeof _this.allowDrag === 'function' && !_this.allowDrag(treeNode.node)) {\n event.preventDefault();\n return false;\n }\n event.dataTransfer.effectAllowed = 'move';\n\n // wrap in try catch to address IE's error when first param is 'text/plain'\n try {\n // setData is required for draggable to work in FireFox\n // the content has to be '' so dragging a node out of the tree won't open a new tab in FireFox\n event.dataTransfer.setData('text/plain', '');\n } catch (e) {}\n dragState.draggingNode = treeNode;\n _this.$emit('node-drag-start', treeNode.node, event);\n });\n\n this.$on('tree-node-drag-over', function (event, treeNode) {\n var dropNode = findNearestComponent(event.target, 'ElTreeNode');\n var oldDropNode = dragState.dropNode;\n if (oldDropNode && oldDropNode !== dropNode) {\n Object(dom_[\"removeClass\"])(oldDropNode.$el, 'is-drop-inner');\n }\n var draggingNode = dragState.draggingNode;\n if (!draggingNode || !dropNode) return;\n\n var dropPrev = true;\n var dropInner = true;\n var dropNext = true;\n var userAllowDropInner = true;\n if (typeof _this.allowDrop === 'function') {\n dropPrev = _this.allowDrop(draggingNode.node, dropNode.node, 'prev');\n userAllowDropInner = dropInner = _this.allowDrop(draggingNode.node, dropNode.node, 'inner');\n dropNext = _this.allowDrop(draggingNode.node, dropNode.node, 'next');\n }\n event.dataTransfer.dropEffect = dropInner ? 'move' : 'none';\n if ((dropPrev || dropInner || dropNext) && oldDropNode !== dropNode) {\n if (oldDropNode) {\n _this.$emit('node-drag-leave', draggingNode.node, oldDropNode.node, event);\n }\n _this.$emit('node-drag-enter', draggingNode.node, dropNode.node, event);\n }\n\n if (dropPrev || dropInner || dropNext) {\n dragState.dropNode = dropNode;\n }\n\n if (dropNode.node.nextSibling === draggingNode.node) {\n dropNext = false;\n }\n if (dropNode.node.previousSibling === draggingNode.node) {\n dropPrev = false;\n }\n if (dropNode.node.contains(draggingNode.node, false)) {\n dropInner = false;\n }\n if (draggingNode.node === dropNode.node || draggingNode.node.contains(dropNode.node)) {\n dropPrev = false;\n dropInner = false;\n dropNext = false;\n }\n\n var targetPosition = dropNode.$el.getBoundingClientRect();\n var treePosition = _this.$el.getBoundingClientRect();\n\n var dropType = void 0;\n var prevPercent = dropPrev ? dropInner ? 0.25 : dropNext ? 0.45 : 1 : -1;\n var nextPercent = dropNext ? dropInner ? 0.75 : dropPrev ? 0.55 : 0 : 1;\n\n var indicatorTop = -9999;\n var distance = event.clientY - targetPosition.top;\n if (distance < targetPosition.height * prevPercent) {\n dropType = 'before';\n } else if (distance > targetPosition.height * nextPercent) {\n dropType = 'after';\n } else if (dropInner) {\n dropType = 'inner';\n } else {\n dropType = 'none';\n }\n\n var iconPosition = dropNode.$el.querySelector('.el-tree-node__expand-icon').getBoundingClientRect();\n var dropIndicator = _this.$refs.dropIndicator;\n if (dropType === 'before') {\n indicatorTop = iconPosition.top - treePosition.top;\n } else if (dropType === 'after') {\n indicatorTop = iconPosition.bottom - treePosition.top;\n }\n dropIndicator.style.top = indicatorTop + 'px';\n dropIndicator.style.left = iconPosition.right - treePosition.left + 'px';\n\n if (dropType === 'inner') {\n Object(dom_[\"addClass\"])(dropNode.$el, 'is-drop-inner');\n } else {\n Object(dom_[\"removeClass\"])(dropNode.$el, 'is-drop-inner');\n }\n\n dragState.showDropIndicator = dropType === 'before' || dropType === 'after';\n dragState.allowDrop = dragState.showDropIndicator || userAllowDropInner;\n dragState.dropType = dropType;\n _this.$emit('node-drag-over', draggingNode.node, dropNode.node, event);\n });\n\n this.$on('tree-node-drag-end', function (event) {\n var draggingNode = dragState.draggingNode,\n dropType = dragState.dropType,\n dropNode = dragState.dropNode;\n\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n\n if (draggingNode && dropNode) {\n var draggingNodeCopy = { data: draggingNode.node.data };\n if (dropType !== 'none') {\n draggingNode.node.remove();\n }\n if (dropType === 'before') {\n dropNode.node.parent.insertBefore(draggingNodeCopy, dropNode.node);\n } else if (dropType === 'after') {\n dropNode.node.parent.insertAfter(draggingNodeCopy, dropNode.node);\n } else if (dropType === 'inner') {\n dropNode.node.insertChild(draggingNodeCopy);\n }\n if (dropType !== 'none') {\n _this.store.registerNode(draggingNodeCopy);\n }\n\n Object(dom_[\"removeClass\"])(dropNode.$el, 'is-drop-inner');\n\n _this.$emit('node-drag-end', draggingNode.node, dropNode.node, dropType, event);\n if (dropType !== 'none') {\n _this.$emit('node-drop', draggingNode.node, dropNode.node, dropType, event);\n }\n }\n if (draggingNode && !dropNode) {\n _this.$emit('node-drag-end', draggingNode.node, null, dropType, event);\n }\n\n dragState.showDropIndicator = false;\n dragState.draggingNode = null;\n dragState.dropNode = null;\n dragState.allowDrop = true;\n });\n },\n mounted: function mounted() {\n this.initTabIndex();\n this.$el.addEventListener('keydown', this.handleKeydown);\n },\n updated: function updated() {\n this.treeItems = this.$el.querySelectorAll('[role=treeitem]');\n this.checkboxItems = this.$el.querySelectorAll('input[type=checkbox]');\n }\n});\n// CONCATENATED MODULE: ./packages/tree/src/tree.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_treevue_type_script_lang_js_ = (treevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/tree/src/tree.vue\n\n\n\n\n\n/* normalize component */\n\nvar tree_component = normalizeComponent(\n src_treevue_type_script_lang_js_,\n treevue_type_template_id_547575a6_render,\n treevue_type_template_id_547575a6_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var tree_api; }\ntree_component.options.__file = \"packages/tree/src/tree.vue\"\n/* harmony default export */ var src_tree = (tree_component.exports);\n// CONCATENATED MODULE: ./packages/tree/index.js\n\n\n/* istanbul ignore next */\nsrc_tree.install = function (Vue) {\n Vue.component(src_tree.name, src_tree);\n};\n\n/* harmony default export */ var packages_tree = (src_tree);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/alert/src/main.vue?vue&type=template&id=6e53341b&\nvar mainvue_type_template_id_6e53341b_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"transition\", { attrs: { name: \"el-alert-fade\" } }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-alert\",\n class: [\n _vm.typeClass,\n _vm.center ? \"is-center\" : \"\",\n \"is-\" + _vm.effect\n ],\n attrs: { role: \"alert\" }\n },\n [\n _vm.showIcon\n ? _c(\"i\", {\n staticClass: \"el-alert__icon\",\n class: [_vm.iconClass, _vm.isBigIcon]\n })\n : _vm._e(),\n _c(\"div\", { staticClass: \"el-alert__content\" }, [\n _vm.title || _vm.$slots.title\n ? _c(\n \"span\",\n { staticClass: \"el-alert__title\", class: [_vm.isBoldTitle] },\n [_vm._t(\"title\", [_vm._v(_vm._s(_vm.title))])],\n 2\n )\n : _vm._e(),\n _vm.$slots.default && !_vm.description\n ? _c(\n \"p\",\n { staticClass: \"el-alert__description\" },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e(),\n _vm.description && !_vm.$slots.default\n ? _c(\"p\", { staticClass: \"el-alert__description\" }, [\n _vm._v(_vm._s(_vm.description))\n ])\n : _vm._e(),\n _c(\n \"i\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.closable,\n expression: \"closable\"\n }\n ],\n staticClass: \"el-alert__closebtn\",\n class: {\n \"is-customed\": _vm.closeText !== \"\",\n \"el-icon-close\": _vm.closeText === \"\"\n },\n on: {\n click: function($event) {\n _vm.close()\n }\n }\n },\n [_vm._v(_vm._s(_vm.closeText))]\n )\n ])\n ]\n )\n ])\n}\nvar mainvue_type_template_id_6e53341b_staticRenderFns = []\nmainvue_type_template_id_6e53341b_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/alert/src/main.vue?vue&type=template&id=6e53341b&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/alert/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar TYPE_CLASSES_MAP = {\n 'success': 'el-icon-success',\n 'warning': 'el-icon-warning',\n 'error': 'el-icon-error'\n};\n/* harmony default export */ var alert_src_mainvue_type_script_lang_js_ = ({\n name: 'ElAlert',\n\n props: {\n title: {\n type: String,\n default: ''\n },\n description: {\n type: String,\n default: ''\n },\n type: {\n type: String,\n default: 'info'\n },\n closable: {\n type: Boolean,\n default: true\n },\n closeText: {\n type: String,\n default: ''\n },\n showIcon: Boolean,\n center: Boolean,\n effect: {\n type: String,\n default: 'light',\n validator: function validator(value) {\n return ['light', 'dark'].indexOf(value) !== -1;\n }\n }\n },\n\n data: function data() {\n return {\n visible: true\n };\n },\n\n\n methods: {\n close: function close() {\n this.visible = false;\n this.$emit('close');\n }\n },\n\n computed: {\n typeClass: function typeClass() {\n return 'el-alert--' + this.type;\n },\n iconClass: function iconClass() {\n return TYPE_CLASSES_MAP[this.type] || 'el-icon-info';\n },\n isBigIcon: function isBigIcon() {\n return this.description || this.$slots.default ? 'is-big' : '';\n },\n isBoldTitle: function isBoldTitle() {\n return this.description || this.$slots.default ? 'is-bold' : '';\n }\n }\n});\n// CONCATENATED MODULE: ./packages/alert/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_alert_src_mainvue_type_script_lang_js_ = (alert_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/alert/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar alert_src_main_component = normalizeComponent(\n packages_alert_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_6e53341b_render,\n mainvue_type_template_id_6e53341b_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var alert_src_main_api; }\nalert_src_main_component.options.__file = \"packages/alert/src/main.vue\"\n/* harmony default export */ var alert_src_main = (alert_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/alert/index.js\n\n\n/* istanbul ignore next */\nalert_src_main.install = function (Vue) {\n Vue.component(alert_src_main.name, alert_src_main);\n};\n\n/* harmony default export */ var packages_alert = (alert_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/notification/src/main.vue?vue&type=template&id=43dbc3d8&\nvar mainvue_type_template_id_43dbc3d8_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"transition\", { attrs: { name: \"el-notification-fade\" } }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n class: [\"el-notification\", _vm.customClass, _vm.horizontalClass],\n style: _vm.positionStyle,\n attrs: { role: \"alert\" },\n on: {\n mouseenter: function($event) {\n _vm.clearTimer()\n },\n mouseleave: function($event) {\n _vm.startTimer()\n },\n click: _vm.click\n }\n },\n [\n _vm.type || _vm.iconClass\n ? _c(\"i\", {\n staticClass: \"el-notification__icon\",\n class: [_vm.typeClass, _vm.iconClass]\n })\n : _vm._e(),\n _c(\n \"div\",\n {\n staticClass: \"el-notification__group\",\n class: { \"is-with-icon\": _vm.typeClass || _vm.iconClass }\n },\n [\n _c(\"h2\", {\n staticClass: \"el-notification__title\",\n domProps: { textContent: _vm._s(_vm.title) }\n }),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.message,\n expression: \"message\"\n }\n ],\n staticClass: \"el-notification__content\"\n },\n [\n _vm._t(\"default\", [\n !_vm.dangerouslyUseHTMLString\n ? _c(\"p\", [_vm._v(_vm._s(_vm.message))])\n : _c(\"p\", { domProps: { innerHTML: _vm._s(_vm.message) } })\n ])\n ],\n 2\n ),\n _vm.showClose\n ? _c(\"div\", {\n staticClass: \"el-notification__closeBtn el-icon-close\",\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.close($event)\n }\n }\n })\n : _vm._e()\n ]\n )\n ]\n )\n ])\n}\nvar mainvue_type_template_id_43dbc3d8_staticRenderFns = []\nmainvue_type_template_id_43dbc3d8_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/notification/src/main.vue?vue&type=template&id=43dbc3d8&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/notification/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar mainvue_type_script_lang_js_typeMap = {\n success: 'success',\n info: 'info',\n warning: 'warning',\n error: 'error'\n};\n\n/* harmony default export */ var notification_src_mainvue_type_script_lang_js_ = ({\n data: function data() {\n return {\n visible: false,\n title: '',\n message: '',\n duration: 4500,\n type: '',\n showClose: true,\n customClass: '',\n iconClass: '',\n onClose: null,\n onClick: null,\n closed: false,\n verticalOffset: 0,\n timer: null,\n dangerouslyUseHTMLString: false,\n position: 'top-right'\n };\n },\n\n\n computed: {\n typeClass: function typeClass() {\n return this.type && mainvue_type_script_lang_js_typeMap[this.type] ? 'el-icon-' + mainvue_type_script_lang_js_typeMap[this.type] : '';\n },\n horizontalClass: function horizontalClass() {\n return this.position.indexOf('right') > -1 ? 'right' : 'left';\n },\n verticalProperty: function verticalProperty() {\n return (/^top-/.test(this.position) ? 'top' : 'bottom'\n );\n },\n positionStyle: function positionStyle() {\n var _ref;\n\n return _ref = {}, _ref[this.verticalProperty] = this.verticalOffset + 'px', _ref;\n }\n },\n\n watch: {\n closed: function closed(newVal) {\n if (newVal) {\n this.visible = false;\n this.$el.addEventListener('transitionend', this.destroyElement);\n }\n }\n },\n\n methods: {\n destroyElement: function destroyElement() {\n this.$el.removeEventListener('transitionend', this.destroyElement);\n this.$destroy(true);\n this.$el.parentNode.removeChild(this.$el);\n },\n click: function click() {\n if (typeof this.onClick === 'function') {\n this.onClick();\n }\n },\n close: function close() {\n this.closed = true;\n if (typeof this.onClose === 'function') {\n this.onClose();\n }\n },\n clearTimer: function clearTimer() {\n clearTimeout(this.timer);\n },\n startTimer: function startTimer() {\n var _this = this;\n\n if (this.duration > 0) {\n this.timer = setTimeout(function () {\n if (!_this.closed) {\n _this.close();\n }\n }, this.duration);\n }\n },\n keydown: function keydown(e) {\n if (e.keyCode === 46 || e.keyCode === 8) {\n this.clearTimer(); // detele 取消倒计时\n } else if (e.keyCode === 27) {\n // esc关闭消息\n if (!this.closed) {\n this.close();\n }\n } else {\n this.startTimer(); // 恢复倒计时\n }\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.duration > 0) {\n this.timer = setTimeout(function () {\n if (!_this2.closed) {\n _this2.close();\n }\n }, this.duration);\n }\n document.addEventListener('keydown', this.keydown);\n },\n beforeDestroy: function beforeDestroy() {\n document.removeEventListener('keydown', this.keydown);\n }\n});\n// CONCATENATED MODULE: ./packages/notification/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_notification_src_mainvue_type_script_lang_js_ = (notification_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/notification/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar notification_src_main_component = normalizeComponent(\n packages_notification_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_43dbc3d8_render,\n mainvue_type_template_id_43dbc3d8_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var notification_src_main_api; }\nnotification_src_main_component.options.__file = \"packages/notification/src/main.vue\"\n/* harmony default export */ var notification_src_main = (notification_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/notification/src/main.js\n\n\n\n\n\nvar NotificationConstructor = external_vue_default.a.extend(notification_src_main);\n\nvar src_main_instance = void 0;\nvar instances = [];\nvar seed = 1;\n\nvar main_Notification = function Notification(options) {\n if (external_vue_default.a.prototype.$isServer) return;\n options = merge_default()({}, options);\n var userOnClose = options.onClose;\n var id = 'notification_' + seed++;\n var position = options.position || 'top-right';\n\n options.onClose = function () {\n Notification.close(id, userOnClose);\n };\n\n src_main_instance = new NotificationConstructor({\n data: options\n });\n\n if (Object(vdom_[\"isVNode\"])(options.message)) {\n src_main_instance.$slots.default = [options.message];\n options.message = 'REPLACED_BY_VNODE';\n }\n src_main_instance.id = id;\n src_main_instance.$mount();\n document.body.appendChild(src_main_instance.$el);\n src_main_instance.visible = true;\n src_main_instance.dom = src_main_instance.$el;\n src_main_instance.dom.style.zIndex = popup_[\"PopupManager\"].nextZIndex();\n\n var verticalOffset = options.offset || 0;\n instances.filter(function (item) {\n return item.position === position;\n }).forEach(function (item) {\n verticalOffset += item.$el.offsetHeight + 16;\n });\n verticalOffset += 16;\n src_main_instance.verticalOffset = verticalOffset;\n instances.push(src_main_instance);\n return src_main_instance;\n};\n\n['success', 'warning', 'info', 'error'].forEach(function (type) {\n main_Notification[type] = function (options) {\n if (typeof options === 'string' || Object(vdom_[\"isVNode\"])(options)) {\n options = {\n message: options\n };\n }\n options.type = type;\n return main_Notification(options);\n };\n});\n\nmain_Notification.close = function (id, userOnClose) {\n var index = -1;\n var len = instances.length;\n var instance = instances.filter(function (instance, i) {\n if (instance.id === id) {\n index = i;\n return true;\n }\n return false;\n })[0];\n if (!instance) return;\n\n if (typeof userOnClose === 'function') {\n userOnClose(instance);\n }\n instances.splice(index, 1);\n\n if (len <= 1) return;\n var position = instance.position;\n var removedHeight = instance.dom.offsetHeight;\n for (var i = index; i < len - 1; i++) {\n if (instances[i].position === position) {\n instances[i].dom.style[instance.verticalProperty] = parseInt(instances[i].dom.style[instance.verticalProperty], 10) - removedHeight - 16 + 'px';\n }\n }\n};\n\nmain_Notification.closeAll = function () {\n for (var i = instances.length - 1; i >= 0; i--) {\n instances[i].close();\n }\n};\n\n/* harmony default export */ var packages_notification_src_main = (main_Notification);\n// CONCATENATED MODULE: ./packages/notification/index.js\n\n/* harmony default export */ var notification = (packages_notification_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/slider/src/main.vue?vue&type=template&id=32708644&\nvar mainvue_type_template_id_32708644_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-slider\",\n class: {\n \"is-vertical\": _vm.vertical,\n \"el-slider--with-input\": _vm.showInput\n },\n attrs: {\n role: \"slider\",\n \"aria-valuemin\": _vm.min,\n \"aria-valuemax\": _vm.max,\n \"aria-orientation\": _vm.vertical ? \"vertical\" : \"horizontal\",\n \"aria-disabled\": _vm.sliderDisabled\n }\n },\n [\n _vm.showInput && !_vm.range\n ? _c(\"el-input-number\", {\n ref: \"input\",\n staticClass: \"el-slider__input\",\n attrs: {\n step: _vm.step,\n disabled: _vm.sliderDisabled,\n controls: _vm.showInputControls,\n min: _vm.min,\n max: _vm.max,\n debounce: _vm.debounce,\n size: _vm.inputSize\n },\n on: { change: _vm.emitChange },\n model: {\n value: _vm.firstValue,\n callback: function($$v) {\n _vm.firstValue = $$v\n },\n expression: \"firstValue\"\n }\n })\n : _vm._e(),\n _c(\n \"div\",\n {\n ref: \"slider\",\n staticClass: \"el-slider__runway\",\n class: { \"show-input\": _vm.showInput, disabled: _vm.sliderDisabled },\n style: _vm.runwayStyle,\n on: { click: _vm.onSliderClick }\n },\n [\n _c(\"div\", { staticClass: \"el-slider__bar\", style: _vm.barStyle }),\n _c(\"slider-button\", {\n ref: \"button1\",\n attrs: {\n vertical: _vm.vertical,\n \"tooltip-class\": _vm.tooltipClass\n },\n model: {\n value: _vm.firstValue,\n callback: function($$v) {\n _vm.firstValue = $$v\n },\n expression: \"firstValue\"\n }\n }),\n _vm.range\n ? _c(\"slider-button\", {\n ref: \"button2\",\n attrs: {\n vertical: _vm.vertical,\n \"tooltip-class\": _vm.tooltipClass\n },\n model: {\n value: _vm.secondValue,\n callback: function($$v) {\n _vm.secondValue = $$v\n },\n expression: \"secondValue\"\n }\n })\n : _vm._e(),\n _vm._l(_vm.stops, function(item, key) {\n return _vm.showStops\n ? _c(\"div\", {\n key: key,\n staticClass: \"el-slider__stop\",\n style: _vm.getStopStyle(item)\n })\n : _vm._e()\n }),\n _vm.markList.length > 0\n ? [\n _c(\n \"div\",\n _vm._l(_vm.markList, function(item, key) {\n return _c(\"div\", {\n key: key,\n staticClass: \"el-slider__stop el-slider__marks-stop\",\n style: _vm.getStopStyle(item.position)\n })\n }),\n 0\n ),\n _c(\n \"div\",\n { staticClass: \"el-slider__marks\" },\n _vm._l(_vm.markList, function(item, key) {\n return _c(\"slider-marker\", {\n key: key,\n style: _vm.getStopStyle(item.position),\n attrs: { mark: item.mark }\n })\n }),\n 1\n )\n ]\n : _vm._e()\n ],\n 2\n )\n ],\n 1\n )\n}\nvar mainvue_type_template_id_32708644_staticRenderFns = []\nmainvue_type_template_id_32708644_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/slider/src/main.vue?vue&type=template&id=32708644&\n\n// EXTERNAL MODULE: external \"element-ui/lib/input-number\"\nvar input_number_ = __nested_webpack_require_8926__(42);\nvar input_number_default = /*#__PURE__*/__nested_webpack_require_8926__.n(input_number_);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/slider/src/button.vue?vue&type=template&id=e72d2ad2&\nvar buttonvue_type_template_id_e72d2ad2_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n ref: \"button\",\n staticClass: \"el-slider__button-wrapper\",\n class: { hover: _vm.hovering, dragging: _vm.dragging },\n style: _vm.wrapperStyle,\n attrs: { tabindex: \"0\" },\n on: {\n mouseenter: _vm.handleMouseEnter,\n mouseleave: _vm.handleMouseLeave,\n mousedown: _vm.onButtonDown,\n touchstart: _vm.onButtonDown,\n focus: _vm.handleMouseEnter,\n blur: _vm.handleMouseLeave,\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"left\", 37, $event.key, [\n \"Left\",\n \"ArrowLeft\"\n ])\n ) {\n return null\n }\n if (\"button\" in $event && $event.button !== 0) {\n return null\n }\n return _vm.onLeftKeyDown($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"right\", 39, $event.key, [\n \"Right\",\n \"ArrowRight\"\n ])\n ) {\n return null\n }\n if (\"button\" in $event && $event.button !== 2) {\n return null\n }\n return _vm.onRightKeyDown($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.onLeftKeyDown($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.onRightKeyDown($event)\n }\n ]\n }\n },\n [\n _c(\n \"el-tooltip\",\n {\n ref: \"tooltip\",\n attrs: {\n placement: \"top\",\n \"popper-class\": _vm.tooltipClass,\n disabled: !_vm.showTooltip\n }\n },\n [\n _c(\"span\", { attrs: { slot: \"content\" }, slot: \"content\" }, [\n _vm._v(_vm._s(_vm.formatValue))\n ]),\n _c(\"div\", {\n staticClass: \"el-slider__button\",\n class: { hover: _vm.hovering, dragging: _vm.dragging }\n })\n ]\n )\n ],\n 1\n )\n}\nvar buttonvue_type_template_id_e72d2ad2_staticRenderFns = []\nbuttonvue_type_template_id_e72d2ad2_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/slider/src/button.vue?vue&type=template&id=e72d2ad2&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/slider/src/button.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var slider_src_buttonvue_type_script_lang_js_ = ({\n name: 'ElSliderButton',\n\n components: {\n ElTooltip: tooltip_default.a\n },\n\n props: {\n value: {\n type: Number,\n default: 0\n },\n vertical: {\n type: Boolean,\n default: false\n },\n tooltipClass: String\n },\n\n data: function data() {\n return {\n hovering: false,\n dragging: false,\n isClick: false,\n startX: 0,\n currentX: 0,\n startY: 0,\n currentY: 0,\n startPosition: 0,\n newPosition: null,\n oldValue: this.value\n };\n },\n\n\n computed: {\n disabled: function disabled() {\n return this.$parent.sliderDisabled;\n },\n max: function max() {\n return this.$parent.max;\n },\n min: function min() {\n return this.$parent.min;\n },\n step: function step() {\n return this.$parent.step;\n },\n showTooltip: function showTooltip() {\n return this.$parent.showTooltip;\n },\n precision: function precision() {\n return this.$parent.precision;\n },\n currentPosition: function currentPosition() {\n return (this.value - this.min) / (this.max - this.min) * 100 + '%';\n },\n enableFormat: function enableFormat() {\n return this.$parent.formatTooltip instanceof Function;\n },\n formatValue: function formatValue() {\n return this.enableFormat && this.$parent.formatTooltip(this.value) || this.value;\n },\n wrapperStyle: function wrapperStyle() {\n return this.vertical ? { bottom: this.currentPosition } : { left: this.currentPosition };\n }\n },\n\n watch: {\n dragging: function dragging(val) {\n this.$parent.dragging = val;\n }\n },\n\n methods: {\n displayTooltip: function displayTooltip() {\n this.$refs.tooltip && (this.$refs.tooltip.showPopper = true);\n },\n hideTooltip: function hideTooltip() {\n this.$refs.tooltip && (this.$refs.tooltip.showPopper = false);\n },\n handleMouseEnter: function handleMouseEnter() {\n this.hovering = true;\n this.displayTooltip();\n },\n handleMouseLeave: function handleMouseLeave() {\n this.hovering = false;\n this.hideTooltip();\n },\n onButtonDown: function onButtonDown(event) {\n if (this.disabled) return;\n event.preventDefault();\n this.onDragStart(event);\n window.addEventListener('mousemove', this.onDragging);\n window.addEventListener('touchmove', this.onDragging);\n window.addEventListener('mouseup', this.onDragEnd);\n window.addEventListener('touchend', this.onDragEnd);\n window.addEventListener('contextmenu', this.onDragEnd);\n },\n onLeftKeyDown: function onLeftKeyDown() {\n if (this.disabled) return;\n this.newPosition = parseFloat(this.currentPosition) - this.step / (this.max - this.min) * 100;\n this.setPosition(this.newPosition);\n this.$parent.emitChange();\n },\n onRightKeyDown: function onRightKeyDown() {\n if (this.disabled) return;\n this.newPosition = parseFloat(this.currentPosition) + this.step / (this.max - this.min) * 100;\n this.setPosition(this.newPosition);\n this.$parent.emitChange();\n },\n onDragStart: function onDragStart(event) {\n this.dragging = true;\n this.isClick = true;\n if (event.type === 'touchstart') {\n event.clientY = event.touches[0].clientY;\n event.clientX = event.touches[0].clientX;\n }\n if (this.vertical) {\n this.startY = event.clientY;\n } else {\n this.startX = event.clientX;\n }\n this.startPosition = parseFloat(this.currentPosition);\n this.newPosition = this.startPosition;\n },\n onDragging: function onDragging(event) {\n if (this.dragging) {\n this.isClick = false;\n this.displayTooltip();\n this.$parent.resetSize();\n var diff = 0;\n if (event.type === 'touchmove') {\n event.clientY = event.touches[0].clientY;\n event.clientX = event.touches[0].clientX;\n }\n if (this.vertical) {\n this.currentY = event.clientY;\n diff = (this.startY - this.currentY) / this.$parent.sliderSize * 100;\n } else {\n this.currentX = event.clientX;\n diff = (this.currentX - this.startX) / this.$parent.sliderSize * 100;\n }\n this.newPosition = this.startPosition + diff;\n this.setPosition(this.newPosition);\n }\n },\n onDragEnd: function onDragEnd() {\n var _this = this;\n\n if (this.dragging) {\n /*\n * 防止在 mouseup 后立即触发 click,导致滑块有几率产生一小段位移\n * 不使用 preventDefault 是因为 mouseup 和 click 没有注册在同一个 DOM 上\n */\n setTimeout(function () {\n _this.dragging = false;\n _this.hideTooltip();\n if (!_this.isClick) {\n _this.setPosition(_this.newPosition);\n _this.$parent.emitChange();\n }\n }, 0);\n window.removeEventListener('mousemove', this.onDragging);\n window.removeEventListener('touchmove', this.onDragging);\n window.removeEventListener('mouseup', this.onDragEnd);\n window.removeEventListener('touchend', this.onDragEnd);\n window.removeEventListener('contextmenu', this.onDragEnd);\n }\n },\n setPosition: function setPosition(newPosition) {\n var _this2 = this;\n\n if (newPosition === null || isNaN(newPosition)) return;\n if (newPosition < 0) {\n newPosition = 0;\n } else if (newPosition > 100) {\n newPosition = 100;\n }\n var lengthPerStep = 100 / ((this.max - this.min) / this.step);\n var steps = Math.round(newPosition / lengthPerStep);\n var value = steps * lengthPerStep * (this.max - this.min) * 0.01 + this.min;\n value = parseFloat(value.toFixed(this.precision));\n this.$emit('input', value);\n this.$nextTick(function () {\n _this2.displayTooltip();\n _this2.$refs.tooltip && _this2.$refs.tooltip.updatePopper();\n });\n if (!this.dragging && this.value !== this.oldValue) {\n this.oldValue = this.value;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/slider/src/button.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_slider_src_buttonvue_type_script_lang_js_ = (slider_src_buttonvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/slider/src/button.vue\n\n\n\n\n\n/* normalize component */\n\nvar src_button_component = normalizeComponent(\n packages_slider_src_buttonvue_type_script_lang_js_,\n buttonvue_type_template_id_e72d2ad2_render,\n buttonvue_type_template_id_e72d2ad2_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var src_button_api; }\nsrc_button_component.options.__file = \"packages/slider/src/button.vue\"\n/* harmony default export */ var slider_src_button = (src_button_component.exports);\n// CONCATENATED MODULE: ./packages/slider/src/marker.js\n/* harmony default export */ var marker = ({\n name: 'ElMarker',\n\n props: {\n mark: {\n type: [String, Object]\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var label = typeof this.mark === 'string' ? this.mark : this.mark.label;\n\n return h(\n 'div',\n { 'class': 'el-slider__marks-text', style: this.mark.style || {} },\n [label]\n );\n }\n});\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/slider/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ var slider_src_mainvue_type_script_lang_js_ = ({\n name: 'ElSlider',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n }\n },\n\n props: {\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n step: {\n type: Number,\n default: 1\n },\n value: {\n type: [Number, Array],\n default: 0\n },\n showInput: {\n type: Boolean,\n default: false\n },\n showInputControls: {\n type: Boolean,\n default: true\n },\n inputSize: {\n type: String,\n default: 'small'\n },\n showStops: {\n type: Boolean,\n default: false\n },\n showTooltip: {\n type: Boolean,\n default: true\n },\n formatTooltip: Function,\n disabled: {\n type: Boolean,\n default: false\n },\n range: {\n type: Boolean,\n default: false\n },\n vertical: {\n type: Boolean,\n default: false\n },\n height: {\n type: String\n },\n debounce: {\n type: Number,\n default: 300\n },\n label: {\n type: String\n },\n tooltipClass: String,\n marks: Object\n },\n\n components: {\n ElInputNumber: input_number_default.a,\n SliderButton: slider_src_button,\n SliderMarker: marker\n },\n\n data: function data() {\n return {\n firstValue: null,\n secondValue: null,\n oldValue: null,\n dragging: false,\n sliderSize: 1\n };\n },\n\n\n watch: {\n value: function value(val, oldVal) {\n if (this.dragging || Array.isArray(val) && Array.isArray(oldVal) && val.every(function (item, index) {\n return item === oldVal[index];\n })) {\n return;\n }\n this.setValues();\n },\n dragging: function dragging(val) {\n if (!val) {\n this.setValues();\n }\n },\n firstValue: function firstValue(val) {\n if (this.range) {\n this.$emit('input', [this.minValue, this.maxValue]);\n } else {\n this.$emit('input', val);\n }\n },\n secondValue: function secondValue() {\n if (this.range) {\n this.$emit('input', [this.minValue, this.maxValue]);\n }\n },\n min: function min() {\n this.setValues();\n },\n max: function max() {\n this.setValues();\n }\n },\n\n methods: {\n valueChanged: function valueChanged() {\n var _this = this;\n\n if (this.range) {\n return ![this.minValue, this.maxValue].every(function (item, index) {\n return item === _this.oldValue[index];\n });\n } else {\n return this.value !== this.oldValue;\n }\n },\n setValues: function setValues() {\n if (this.min > this.max) {\n console.error('[Element Error][Slider]min should not be greater than max.');\n return;\n }\n var val = this.value;\n if (this.range && Array.isArray(val)) {\n if (val[1] < this.min) {\n this.$emit('input', [this.min, this.min]);\n } else if (val[0] > this.max) {\n this.$emit('input', [this.max, this.max]);\n } else if (val[0] < this.min) {\n this.$emit('input', [this.min, val[1]]);\n } else if (val[1] > this.max) {\n this.$emit('input', [val[0], this.max]);\n } else {\n this.firstValue = val[0];\n this.secondValue = val[1];\n if (this.valueChanged()) {\n this.dispatch('ElFormItem', 'el.form.change', [this.minValue, this.maxValue]);\n this.oldValue = val.slice();\n }\n }\n } else if (!this.range && typeof val === 'number' && !isNaN(val)) {\n if (val < this.min) {\n this.$emit('input', this.min);\n } else if (val > this.max) {\n this.$emit('input', this.max);\n } else {\n this.firstValue = val;\n if (this.valueChanged()) {\n this.dispatch('ElFormItem', 'el.form.change', val);\n this.oldValue = val;\n }\n }\n }\n },\n setPosition: function setPosition(percent) {\n var targetValue = this.min + percent * (this.max - this.min) / 100;\n if (!this.range) {\n this.$refs.button1.setPosition(percent);\n return;\n }\n var button = void 0;\n if (Math.abs(this.minValue - targetValue) < Math.abs(this.maxValue - targetValue)) {\n button = this.firstValue < this.secondValue ? 'button1' : 'button2';\n } else {\n button = this.firstValue > this.secondValue ? 'button1' : 'button2';\n }\n this.$refs[button].setPosition(percent);\n },\n onSliderClick: function onSliderClick(event) {\n if (this.sliderDisabled || this.dragging) return;\n this.resetSize();\n if (this.vertical) {\n var sliderOffsetBottom = this.$refs.slider.getBoundingClientRect().bottom;\n this.setPosition((sliderOffsetBottom - event.clientY) / this.sliderSize * 100);\n } else {\n var sliderOffsetLeft = this.$refs.slider.getBoundingClientRect().left;\n this.setPosition((event.clientX - sliderOffsetLeft) / this.sliderSize * 100);\n }\n this.emitChange();\n },\n resetSize: function resetSize() {\n if (this.$refs.slider) {\n this.sliderSize = this.$refs.slider['client' + (this.vertical ? 'Height' : 'Width')];\n }\n },\n emitChange: function emitChange() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.$emit('change', _this2.range ? [_this2.minValue, _this2.maxValue] : _this2.value);\n });\n },\n getStopStyle: function getStopStyle(position) {\n return this.vertical ? { 'bottom': position + '%' } : { 'left': position + '%' };\n }\n },\n\n computed: {\n stops: function stops() {\n var _this3 = this;\n\n if (!this.showStops || this.min > this.max) return [];\n if (this.step === 0) {\n false && 0;\n return [];\n }\n var stopCount = (this.max - this.min) / this.step;\n var stepWidth = 100 * this.step / (this.max - this.min);\n var result = [];\n for (var i = 1; i < stopCount; i++) {\n result.push(i * stepWidth);\n }\n if (this.range) {\n return result.filter(function (step) {\n return step < 100 * (_this3.minValue - _this3.min) / (_this3.max - _this3.min) || step > 100 * (_this3.maxValue - _this3.min) / (_this3.max - _this3.min);\n });\n } else {\n return result.filter(function (step) {\n return step > 100 * (_this3.firstValue - _this3.min) / (_this3.max - _this3.min);\n });\n }\n },\n markList: function markList() {\n var _this4 = this;\n\n if (!this.marks) {\n return [];\n }\n\n var marksKeys = Object.keys(this.marks);\n return marksKeys.map(parseFloat).sort(function (a, b) {\n return a - b;\n }).filter(function (point) {\n return point <= _this4.max && point >= _this4.min;\n }).map(function (point) {\n return {\n point: point,\n position: (point - _this4.min) * 100 / (_this4.max - _this4.min),\n mark: _this4.marks[point]\n };\n });\n },\n minValue: function minValue() {\n return Math.min(this.firstValue, this.secondValue);\n },\n maxValue: function maxValue() {\n return Math.max(this.firstValue, this.secondValue);\n },\n barSize: function barSize() {\n return this.range ? 100 * (this.maxValue - this.minValue) / (this.max - this.min) + '%' : 100 * (this.firstValue - this.min) / (this.max - this.min) + '%';\n },\n barStart: function barStart() {\n return this.range ? 100 * (this.minValue - this.min) / (this.max - this.min) + '%' : '0%';\n },\n precision: function precision() {\n var precisions = [this.min, this.max, this.step].map(function (item) {\n var decimal = ('' + item).split('.')[1];\n return decimal ? decimal.length : 0;\n });\n return Math.max.apply(null, precisions);\n },\n runwayStyle: function runwayStyle() {\n return this.vertical ? { height: this.height } : {};\n },\n barStyle: function barStyle() {\n return this.vertical ? {\n height: this.barSize,\n bottom: this.barStart\n } : {\n width: this.barSize,\n left: this.barStart\n };\n },\n sliderDisabled: function sliderDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n }\n },\n\n mounted: function mounted() {\n var valuetext = void 0;\n if (this.range) {\n if (Array.isArray(this.value)) {\n this.firstValue = Math.max(this.min, this.value[0]);\n this.secondValue = Math.min(this.max, this.value[1]);\n } else {\n this.firstValue = this.min;\n this.secondValue = this.max;\n }\n this.oldValue = [this.firstValue, this.secondValue];\n valuetext = this.firstValue + '-' + this.secondValue;\n } else {\n if (typeof this.value !== 'number' || isNaN(this.value)) {\n this.firstValue = this.min;\n } else {\n this.firstValue = Math.min(this.max, Math.max(this.min, this.value));\n }\n this.oldValue = this.firstValue;\n valuetext = this.firstValue;\n }\n this.$el.setAttribute('aria-valuetext', valuetext);\n\n // label screen reader\n this.$el.setAttribute('aria-label', this.label ? this.label : 'slider between ' + this.min + ' and ' + this.max);\n\n this.resetSize();\n window.addEventListener('resize', this.resetSize);\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.resetSize);\n }\n});\n// CONCATENATED MODULE: ./packages/slider/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_slider_src_mainvue_type_script_lang_js_ = (slider_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/slider/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar slider_src_main_component = normalizeComponent(\n packages_slider_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_32708644_render,\n mainvue_type_template_id_32708644_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var slider_src_main_api; }\nslider_src_main_component.options.__file = \"packages/slider/src/main.vue\"\n/* harmony default export */ var slider_src_main = (slider_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/slider/index.js\n\n\n/* istanbul ignore next */\nslider_src_main.install = function (Vue) {\n Vue.component(slider_src_main.name, slider_src_main);\n};\n\n/* harmony default export */ var slider = (slider_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/loading/src/loading.vue?vue&type=template&id=eee0a7ac&\nvar loadingvue_type_template_id_eee0a7ac_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"el-loading-fade\" },\n on: { \"after-leave\": _vm.handleAfterLeave }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-loading-mask\",\n class: [_vm.customClass, { \"is-fullscreen\": _vm.fullscreen }],\n style: { backgroundColor: _vm.background || \"\" }\n },\n [\n _c(\"div\", { staticClass: \"el-loading-spinner\" }, [\n !_vm.spinner\n ? _c(\n \"svg\",\n {\n staticClass: \"circular\",\n attrs: { viewBox: \"25 25 50 50\" }\n },\n [\n _c(\"circle\", {\n staticClass: \"path\",\n attrs: { cx: \"50\", cy: \"50\", r: \"20\", fill: \"none\" }\n })\n ]\n )\n : _c(\"i\", { class: _vm.spinner }),\n _vm.text\n ? _c(\"p\", { staticClass: \"el-loading-text\" }, [\n _vm._v(_vm._s(_vm.text))\n ])\n : _vm._e()\n ])\n ]\n )\n ]\n )\n}\nvar loadingvue_type_template_id_eee0a7ac_staticRenderFns = []\nloadingvue_type_template_id_eee0a7ac_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/loading/src/loading.vue?vue&type=template&id=eee0a7ac&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/loading/src/loading.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var loadingvue_type_script_lang_js_ = ({\n data: function data() {\n return {\n text: null,\n spinner: null,\n background: null,\n fullscreen: true,\n visible: false,\n customClass: ''\n };\n },\n\n\n methods: {\n handleAfterLeave: function handleAfterLeave() {\n this.$emit('after-leave');\n },\n setText: function setText(text) {\n this.text = text;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/loading/src/loading.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_loadingvue_type_script_lang_js_ = (loadingvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/loading/src/loading.vue\n\n\n\n\n\n/* normalize component */\n\nvar loading_component = normalizeComponent(\n src_loadingvue_type_script_lang_js_,\n loadingvue_type_template_id_eee0a7ac_render,\n loadingvue_type_template_id_eee0a7ac_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var loading_api; }\nloading_component.options.__file = \"packages/loading/src/loading.vue\"\n/* harmony default export */ var loading = (loading_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/after-leave\"\nvar after_leave_ = __nested_webpack_require_8926__(33);\nvar after_leave_default = /*#__PURE__*/__nested_webpack_require_8926__.n(after_leave_);\n\n// CONCATENATED MODULE: ./packages/loading/src/directive.js\n\n\n\n\n\nvar Mask = external_vue_default.a.extend(loading);\n\nvar loadingDirective = {};\nloadingDirective.install = function (Vue) {\n if (Vue.prototype.$isServer) return;\n var toggleLoading = function toggleLoading(el, binding) {\n if (binding.value) {\n Vue.nextTick(function () {\n if (binding.modifiers.fullscreen) {\n el.originalPosition = Object(dom_[\"getStyle\"])(document.body, 'position');\n el.originalOverflow = Object(dom_[\"getStyle\"])(document.body, 'overflow');\n el.maskStyle.zIndex = popup_[\"PopupManager\"].nextZIndex();\n\n Object(dom_[\"addClass\"])(el.mask, 'is-fullscreen');\n insertDom(document.body, el, binding);\n } else {\n Object(dom_[\"removeClass\"])(el.mask, 'is-fullscreen');\n\n if (binding.modifiers.body) {\n el.originalPosition = Object(dom_[\"getStyle\"])(document.body, 'position');\n\n ['top', 'left'].forEach(function (property) {\n var scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';\n el.maskStyle[property] = el.getBoundingClientRect()[property] + document.body[scroll] + document.documentElement[scroll] - parseInt(Object(dom_[\"getStyle\"])(document.body, 'margin-' + property), 10) + 'px';\n });\n ['height', 'width'].forEach(function (property) {\n el.maskStyle[property] = el.getBoundingClientRect()[property] + 'px';\n });\n\n insertDom(document.body, el, binding);\n } else {\n el.originalPosition = Object(dom_[\"getStyle\"])(el, 'position');\n insertDom(el, el, binding);\n }\n }\n });\n } else {\n after_leave_default()(el.instance, function (_) {\n if (!el.instance.hiding) return;\n el.domVisible = false;\n var target = binding.modifiers.fullscreen || binding.modifiers.body ? document.body : el;\n Object(dom_[\"removeClass\"])(target, 'el-loading-parent--relative');\n Object(dom_[\"removeClass\"])(target, 'el-loading-parent--hidden');\n el.instance.hiding = false;\n }, 300, true);\n el.instance.visible = false;\n el.instance.hiding = true;\n }\n };\n var insertDom = function insertDom(parent, el, binding) {\n if (!el.domVisible && Object(dom_[\"getStyle\"])(el, 'display') !== 'none' && Object(dom_[\"getStyle\"])(el, 'visibility') !== 'hidden') {\n Object.keys(el.maskStyle).forEach(function (property) {\n el.mask.style[property] = el.maskStyle[property];\n });\n\n if (el.originalPosition !== 'absolute' && el.originalPosition !== 'fixed' && el.originalPosition !== 'sticky') {\n Object(dom_[\"addClass\"])(parent, 'el-loading-parent--relative');\n }\n if (binding.modifiers.fullscreen && binding.modifiers.lock) {\n Object(dom_[\"addClass\"])(parent, 'el-loading-parent--hidden');\n }\n el.domVisible = true;\n\n parent.appendChild(el.mask);\n Vue.nextTick(function () {\n if (el.instance.hiding) {\n el.instance.$emit('after-leave');\n } else {\n el.instance.visible = true;\n }\n });\n el.domInserted = true;\n } else if (el.domVisible && el.instance.hiding === true) {\n el.instance.visible = true;\n el.instance.hiding = false;\n }\n };\n\n Vue.directive('loading', {\n bind: function bind(el, binding, vnode) {\n var textExr = el.getAttribute('element-loading-text');\n var spinnerExr = el.getAttribute('element-loading-spinner');\n var backgroundExr = el.getAttribute('element-loading-background');\n var customClassExr = el.getAttribute('element-loading-custom-class');\n var vm = vnode.context;\n var mask = new Mask({\n el: document.createElement('div'),\n data: {\n text: vm && vm[textExr] || textExr,\n spinner: vm && vm[spinnerExr] || spinnerExr,\n background: vm && vm[backgroundExr] || backgroundExr,\n customClass: vm && vm[customClassExr] || customClassExr,\n fullscreen: !!binding.modifiers.fullscreen\n }\n });\n el.instance = mask;\n el.mask = mask.$el;\n el.maskStyle = {};\n\n binding.value && toggleLoading(el, binding);\n },\n\n update: function update(el, binding) {\n el.instance.setText(el.getAttribute('element-loading-text'));\n if (binding.oldValue !== binding.value) {\n toggleLoading(el, binding);\n }\n },\n\n unbind: function unbind(el, binding) {\n if (el.domInserted) {\n el.mask && el.mask.parentNode && el.mask.parentNode.removeChild(el.mask);\n toggleLoading(el, { value: false, modifiers: binding.modifiers });\n }\n el.instance && el.instance.$destroy();\n }\n });\n};\n\n/* harmony default export */ var src_directive = (loadingDirective);\n// CONCATENATED MODULE: ./packages/loading/src/index.js\n\n\n\n\n\n\n\nvar LoadingConstructor = external_vue_default.a.extend(loading);\n\nvar src_defaults = {\n text: null,\n fullscreen: true,\n body: false,\n lock: false,\n customClass: ''\n};\n\nvar fullscreenLoading = void 0;\n\nLoadingConstructor.prototype.originalPosition = '';\nLoadingConstructor.prototype.originalOverflow = '';\n\nLoadingConstructor.prototype.close = function () {\n var _this = this;\n\n if (this.fullscreen) {\n fullscreenLoading = undefined;\n }\n after_leave_default()(this, function (_) {\n var target = _this.fullscreen || _this.body ? document.body : _this.target;\n Object(dom_[\"removeClass\"])(target, 'el-loading-parent--relative');\n Object(dom_[\"removeClass\"])(target, 'el-loading-parent--hidden');\n if (_this.$el && _this.$el.parentNode) {\n _this.$el.parentNode.removeChild(_this.$el);\n }\n _this.$destroy();\n }, 300);\n this.visible = false;\n};\n\nvar src_addStyle = function addStyle(options, parent, instance) {\n var maskStyle = {};\n if (options.fullscreen) {\n instance.originalPosition = Object(dom_[\"getStyle\"])(document.body, 'position');\n instance.originalOverflow = Object(dom_[\"getStyle\"])(document.body, 'overflow');\n maskStyle.zIndex = popup_[\"PopupManager\"].nextZIndex();\n } else if (options.body) {\n instance.originalPosition = Object(dom_[\"getStyle\"])(document.body, 'position');\n ['top', 'left'].forEach(function (property) {\n var scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';\n maskStyle[property] = options.target.getBoundingClientRect()[property] + document.body[scroll] + document.documentElement[scroll] + 'px';\n });\n ['height', 'width'].forEach(function (property) {\n maskStyle[property] = options.target.getBoundingClientRect()[property] + 'px';\n });\n } else {\n instance.originalPosition = Object(dom_[\"getStyle\"])(parent, 'position');\n }\n Object.keys(maskStyle).forEach(function (property) {\n instance.$el.style[property] = maskStyle[property];\n });\n};\n\nvar src_Loading = function Loading() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (external_vue_default.a.prototype.$isServer) return;\n options = merge_default()({}, src_defaults, options);\n if (typeof options.target === 'string') {\n options.target = document.querySelector(options.target);\n }\n options.target = options.target || document.body;\n if (options.target !== document.body) {\n options.fullscreen = false;\n } else {\n options.body = true;\n }\n if (options.fullscreen && fullscreenLoading) {\n return fullscreenLoading;\n }\n\n var parent = options.body ? document.body : options.target;\n var instance = new LoadingConstructor({\n el: document.createElement('div'),\n data: options\n });\n\n src_addStyle(options, parent, instance);\n if (instance.originalPosition !== 'absolute' && instance.originalPosition !== 'fixed' && instance.originalPosition !== 'sticky') {\n Object(dom_[\"addClass\"])(parent, 'el-loading-parent--relative');\n }\n if (options.fullscreen && options.lock) {\n Object(dom_[\"addClass\"])(parent, 'el-loading-parent--hidden');\n }\n parent.appendChild(instance.$el);\n external_vue_default.a.nextTick(function () {\n instance.visible = true;\n });\n if (options.fullscreen) {\n fullscreenLoading = instance;\n }\n return instance;\n};\n\n/* harmony default export */ var src = (src_Loading);\n// CONCATENATED MODULE: ./packages/loading/index.js\n\n\n\n/* harmony default export */ var packages_loading = ({\n install: function install(Vue) {\n Vue.use(src_directive);\n Vue.prototype.$loading = src;\n },\n\n directive: src_directive,\n service: src\n});\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/icon/src/icon.vue?vue&type=template&id=cb3fe7f4&\nvar iconvue_type_template_id_cb3fe7f4_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"i\", { class: \"el-icon-\" + _vm.name })\n}\nvar iconvue_type_template_id_cb3fe7f4_staticRenderFns = []\niconvue_type_template_id_cb3fe7f4_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/icon/src/icon.vue?vue&type=template&id=cb3fe7f4&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/icon/src/icon.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n\n/* harmony default export */ var iconvue_type_script_lang_js_ = ({\n name: 'ElIcon',\n\n props: {\n name: String\n }\n});\n// CONCATENATED MODULE: ./packages/icon/src/icon.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_iconvue_type_script_lang_js_ = (iconvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/icon/src/icon.vue\n\n\n\n\n\n/* normalize component */\n\nvar icon_component = normalizeComponent(\n src_iconvue_type_script_lang_js_,\n iconvue_type_template_id_cb3fe7f4_render,\n iconvue_type_template_id_cb3fe7f4_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var icon_api; }\nicon_component.options.__file = \"packages/icon/src/icon.vue\"\n/* harmony default export */ var icon = (icon_component.exports);\n// CONCATENATED MODULE: ./packages/icon/index.js\n\n\n/* istanbul ignore next */\nicon.install = function (Vue) {\n Vue.component(icon.name, icon);\n};\n\n/* harmony default export */ var packages_icon = (icon);\n// CONCATENATED MODULE: ./packages/row/src/row.js\n/* harmony default export */ var src_row = ({\n name: 'ElRow',\n\n componentName: 'ElRow',\n\n props: {\n tag: {\n type: String,\n default: 'div'\n },\n gutter: Number,\n type: String,\n justify: {\n type: String,\n default: 'start'\n },\n align: String\n },\n\n computed: {\n style: function style() {\n var ret = {};\n\n if (this.gutter) {\n ret.marginLeft = '-' + this.gutter / 2 + 'px';\n ret.marginRight = ret.marginLeft;\n }\n\n return ret;\n }\n },\n\n render: function render(h) {\n return h(this.tag, {\n class: ['el-row', this.justify !== 'start' ? 'is-justify-' + this.justify : '', this.align ? 'is-align-' + this.align : '', { 'el-row--flex': this.type === 'flex' }],\n style: this.style\n }, this.$slots.default);\n }\n});\n// CONCATENATED MODULE: ./packages/row/index.js\n\n\n/* istanbul ignore next */\nsrc_row.install = function (Vue) {\n Vue.component(src_row.name, src_row);\n};\n\n/* harmony default export */ var packages_row = (src_row);\n// CONCATENATED MODULE: ./packages/col/src/col.js\nvar col_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* harmony default export */ var col = ({\n name: 'ElCol',\n\n props: {\n span: {\n type: Number,\n default: 24\n },\n tag: {\n type: String,\n default: 'div'\n },\n offset: Number,\n pull: Number,\n push: Number,\n xs: [Number, Object],\n sm: [Number, Object],\n md: [Number, Object],\n lg: [Number, Object],\n xl: [Number, Object]\n },\n\n computed: {\n gutter: function gutter() {\n var parent = this.$parent;\n while (parent && parent.$options.componentName !== 'ElRow') {\n parent = parent.$parent;\n }\n return parent ? parent.gutter : 0;\n }\n },\n render: function render(h) {\n var _this = this;\n\n var classList = [];\n var style = {};\n\n if (this.gutter) {\n style.paddingLeft = this.gutter / 2 + 'px';\n style.paddingRight = style.paddingLeft;\n }\n\n ['span', 'offset', 'pull', 'push'].forEach(function (prop) {\n if (_this[prop] || _this[prop] === 0) {\n classList.push(prop !== 'span' ? 'el-col-' + prop + '-' + _this[prop] : 'el-col-' + _this[prop]);\n }\n });\n\n ['xs', 'sm', 'md', 'lg', 'xl'].forEach(function (size) {\n if (typeof _this[size] === 'number') {\n classList.push('el-col-' + size + '-' + _this[size]);\n } else if (col_typeof(_this[size]) === 'object') {\n var props = _this[size];\n Object.keys(props).forEach(function (prop) {\n classList.push(prop !== 'span' ? 'el-col-' + size + '-' + prop + '-' + props[prop] : 'el-col-' + size + '-' + props[prop]);\n });\n }\n });\n\n return h(this.tag, {\n class: ['el-col', classList],\n style: style\n }, this.$slots.default);\n }\n});\n// CONCATENATED MODULE: ./packages/col/index.js\n\n\n/* istanbul ignore next */\ncol.install = function (Vue) {\n Vue.component(col.name, col);\n};\n\n/* harmony default export */ var packages_col = (col);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload-list.vue?vue&type=template&id=173fedf5&\nvar upload_listvue_type_template_id_173fedf5_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition-group\",\n {\n class: [\n \"el-upload-list\",\n \"el-upload-list--\" + _vm.listType,\n { \"is-disabled\": _vm.disabled }\n ],\n attrs: { tag: \"ul\", name: \"el-list\" }\n },\n _vm._l(_vm.files, function(file) {\n return _c(\n \"li\",\n {\n key: file.uid,\n class: [\n \"el-upload-list__item\",\n \"is-\" + file.status,\n _vm.focusing ? \"focusing\" : \"\"\n ],\n attrs: { tabindex: \"0\" },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"delete\", [8, 46], $event.key, [\n \"Backspace\",\n \"Delete\",\n \"Del\"\n ])\n ) {\n return null\n }\n !_vm.disabled && _vm.$emit(\"remove\", file)\n },\n focus: function($event) {\n _vm.focusing = true\n },\n blur: function($event) {\n _vm.focusing = false\n },\n click: function($event) {\n _vm.focusing = false\n }\n }\n },\n [\n _vm._t(\n \"default\",\n [\n file.status !== \"uploading\" &&\n [\"picture-card\", \"picture\"].indexOf(_vm.listType) > -1\n ? _c(\"img\", {\n staticClass: \"el-upload-list__item-thumbnail\",\n attrs: { src: file.url, alt: \"\" }\n })\n : _vm._e(),\n _c(\n \"a\",\n {\n staticClass: \"el-upload-list__item-name\",\n on: {\n click: function($event) {\n _vm.handleClick(file)\n }\n }\n },\n [\n _c(\"i\", { staticClass: \"el-icon-document\" }),\n _vm._v(_vm._s(file.name) + \"\\n \")\n ]\n ),\n _c(\n \"label\",\n { staticClass: \"el-upload-list__item-status-label\" },\n [\n _c(\"i\", {\n class: {\n \"el-icon-upload-success\": true,\n \"el-icon-circle-check\": _vm.listType === \"text\",\n \"el-icon-check\":\n [\"picture-card\", \"picture\"].indexOf(_vm.listType) > -1\n }\n })\n ]\n ),\n !_vm.disabled\n ? _c(\"i\", {\n staticClass: \"el-icon-close\",\n on: {\n click: function($event) {\n _vm.$emit(\"remove\", file)\n }\n }\n })\n : _vm._e(),\n !_vm.disabled\n ? _c(\"i\", { staticClass: \"el-icon-close-tip\" }, [\n _vm._v(_vm._s(_vm.t(\"el.upload.deleteTip\")))\n ])\n : _vm._e(),\n file.status === \"uploading\"\n ? _c(\"el-progress\", {\n attrs: {\n type: _vm.listType === \"picture-card\" ? \"circle\" : \"line\",\n \"stroke-width\": _vm.listType === \"picture-card\" ? 6 : 2,\n percentage: _vm.parsePercentage(file.percentage)\n }\n })\n : _vm._e(),\n _vm.listType === \"picture-card\"\n ? _c(\"span\", { staticClass: \"el-upload-list__item-actions\" }, [\n _vm.handlePreview && _vm.listType === \"picture-card\"\n ? _c(\n \"span\",\n {\n staticClass: \"el-upload-list__item-preview\",\n on: {\n click: function($event) {\n _vm.handlePreview(file)\n }\n }\n },\n [_c(\"i\", { staticClass: \"el-icon-zoom-in\" })]\n )\n : _vm._e(),\n !_vm.disabled\n ? _c(\n \"span\",\n {\n staticClass: \"el-upload-list__item-delete\",\n on: {\n click: function($event) {\n _vm.$emit(\"remove\", file)\n }\n }\n },\n [_c(\"i\", { staticClass: \"el-icon-delete\" })]\n )\n : _vm._e()\n ])\n : _vm._e()\n ],\n { file: file }\n )\n ],\n 2\n )\n }),\n 0\n )\n}\nvar upload_listvue_type_template_id_173fedf5_staticRenderFns = []\nupload_listvue_type_template_id_173fedf5_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/upload/src/upload-list.vue?vue&type=template&id=173fedf5&\n\n// EXTERNAL MODULE: external \"element-ui/lib/progress\"\nvar progress_ = __nested_webpack_require_8926__(34);\nvar progress_default = /*#__PURE__*/__nested_webpack_require_8926__.n(progress_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload-list.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var upload_listvue_type_script_lang_js_ = ({\n\n name: 'ElUploadList',\n\n mixins: [locale_default.a],\n\n data: function data() {\n return {\n focusing: false\n };\n },\n\n components: { ElProgress: progress_default.a },\n\n props: {\n files: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n disabled: {\n type: Boolean,\n default: false\n },\n handlePreview: Function,\n listType: String\n },\n methods: {\n parsePercentage: function parsePercentage(val) {\n return parseInt(val, 10);\n },\n handleClick: function handleClick(file) {\n this.handlePreview && this.handlePreview(file);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/upload/src/upload-list.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_upload_listvue_type_script_lang_js_ = (upload_listvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/upload/src/upload-list.vue\n\n\n\n\n\n/* normalize component */\n\nvar upload_list_component = normalizeComponent(\n src_upload_listvue_type_script_lang_js_,\n upload_listvue_type_template_id_173fedf5_render,\n upload_listvue_type_template_id_173fedf5_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var upload_list_api; }\nupload_list_component.options.__file = \"packages/upload/src/upload-list.vue\"\n/* harmony default export */ var upload_list = (upload_list_component.exports);\n// EXTERNAL MODULE: external \"babel-helper-vue-jsx-merge-props\"\nvar external_babel_helper_vue_jsx_merge_props_ = __nested_webpack_require_8926__(24);\nvar external_babel_helper_vue_jsx_merge_props_default = /*#__PURE__*/__nested_webpack_require_8926__.n(external_babel_helper_vue_jsx_merge_props_);\n\n// CONCATENATED MODULE: ./packages/upload/src/ajax.js\nfunction getError(action, option, xhr) {\n var msg = void 0;\n if (xhr.response) {\n msg = '' + (xhr.response.error || xhr.response);\n } else if (xhr.responseText) {\n msg = '' + xhr.responseText;\n } else {\n msg = 'fail to post ' + action + ' ' + xhr.status;\n }\n\n var err = new Error(msg);\n err.status = xhr.status;\n err.method = 'post';\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n var text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nfunction upload(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n var xhr = new XMLHttpRequest();\n var action = option.action;\n\n if (xhr.upload) {\n xhr.upload.onprogress = function progress(e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n option.onProgress(e);\n };\n }\n\n var formData = new FormData();\n\n if (option.data) {\n Object.keys(option.data).forEach(function (key) {\n formData.append(key, option.data[key]);\n });\n }\n\n formData.append(option.filename, option.file, option.file.name);\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open('post', action, true);\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n var headers = option.headers || {};\n\n for (var item in headers) {\n if (headers.hasOwnProperty(item) && headers[item] !== null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n }\n xhr.send(formData);\n return xhr;\n}\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload-dragger.vue?vue&type=template&id=7ebbf219&\nvar upload_draggervue_type_template_id_7ebbf219_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-upload-dragger\",\n class: {\n \"is-dragover\": _vm.dragover\n },\n on: {\n drop: function($event) {\n $event.preventDefault()\n return _vm.onDrop($event)\n },\n dragover: function($event) {\n $event.preventDefault()\n return _vm.onDragover($event)\n },\n dragleave: function($event) {\n $event.preventDefault()\n _vm.dragover = false\n }\n }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar upload_draggervue_type_template_id_7ebbf219_staticRenderFns = []\nupload_draggervue_type_template_id_7ebbf219_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/upload/src/upload-dragger.vue?vue&type=template&id=7ebbf219&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload-dragger.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var upload_draggervue_type_script_lang_js_ = ({\n name: 'ElUploadDrag',\n props: {\n disabled: Boolean\n },\n inject: {\n uploader: {\n default: ''\n }\n },\n data: function data() {\n return {\n dragover: false\n };\n },\n\n methods: {\n onDragover: function onDragover() {\n if (!this.disabled) {\n this.dragover = true;\n }\n },\n onDrop: function onDrop(e) {\n if (this.disabled || !this.uploader) return;\n var accept = this.uploader.accept;\n this.dragover = false;\n if (!accept) {\n this.$emit('file', e.dataTransfer.files);\n return;\n }\n this.$emit('file', [].slice.call(e.dataTransfer.files).filter(function (file) {\n var type = file.type,\n name = file.name;\n\n var extension = name.indexOf('.') > -1 ? '.' + name.split('.').pop() : '';\n var baseType = type.replace(/\\/.*$/, '');\n return accept.split(',').map(function (type) {\n return type.trim();\n }).filter(function (type) {\n return type;\n }).some(function (acceptedType) {\n if (/\\..+$/.test(acceptedType)) {\n return extension === acceptedType;\n }\n if (/\\/\\*$/.test(acceptedType)) {\n return baseType === acceptedType.replace(/\\/\\*$/, '');\n }\n if (/^[^\\/]+\\/[^\\/]+$/.test(acceptedType)) {\n return type === acceptedType;\n }\n return false;\n });\n }));\n }\n }\n});\n// CONCATENATED MODULE: ./packages/upload/src/upload-dragger.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_upload_draggervue_type_script_lang_js_ = (upload_draggervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/upload/src/upload-dragger.vue\n\n\n\n\n\n/* normalize component */\n\nvar upload_dragger_component = normalizeComponent(\n src_upload_draggervue_type_script_lang_js_,\n upload_draggervue_type_template_id_7ebbf219_render,\n upload_draggervue_type_template_id_7ebbf219_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var upload_dragger_api; }\nupload_dragger_component.options.__file = \"packages/upload/src/upload-dragger.vue\"\n/* harmony default export */ var upload_dragger = (upload_dragger_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload.vue?vue&type=script&lang=js&\n\n\n\n\n\n/* harmony default export */ var uploadvue_type_script_lang_js_ = ({\n inject: ['uploader'],\n components: {\n UploadDragger: upload_dragger\n },\n props: {\n type: String,\n action: {\n type: String,\n required: true\n },\n name: {\n type: String,\n default: 'file'\n },\n data: Object,\n headers: Object,\n withCredentials: Boolean,\n multiple: Boolean,\n accept: String,\n onStart: Function,\n onProgress: Function,\n onSuccess: Function,\n onError: Function,\n beforeUpload: Function,\n drag: Boolean,\n onPreview: {\n type: Function,\n default: function _default() {}\n },\n onRemove: {\n type: Function,\n default: function _default() {}\n },\n fileList: Array,\n autoUpload: Boolean,\n listType: String,\n httpRequest: {\n type: Function,\n default: upload\n },\n disabled: Boolean,\n limit: Number,\n onExceed: Function\n },\n\n data: function data() {\n return {\n mouseover: false,\n reqs: {}\n };\n },\n\n\n methods: {\n isImage: function isImage(str) {\n return str.indexOf('image') !== -1;\n },\n handleChange: function handleChange(ev) {\n var files = ev.target.files;\n\n if (!files) return;\n this.uploadFiles(files);\n },\n uploadFiles: function uploadFiles(files) {\n var _this = this;\n\n if (this.limit && this.fileList.length + files.length > this.limit) {\n this.onExceed && this.onExceed(files, this.fileList);\n return;\n }\n\n var postFiles = Array.prototype.slice.call(files);\n if (!this.multiple) {\n postFiles = postFiles.slice(0, 1);\n }\n\n if (postFiles.length === 0) {\n return;\n }\n\n postFiles.forEach(function (rawFile) {\n _this.onStart(rawFile);\n if (_this.autoUpload) _this.upload(rawFile);\n });\n },\n upload: function upload(rawFile) {\n var _this2 = this;\n\n this.$refs.input.value = null;\n\n if (!this.beforeUpload) {\n return this.post(rawFile);\n }\n\n var before = this.beforeUpload(rawFile);\n if (before && before.then) {\n before.then(function (processedFile) {\n var fileType = Object.prototype.toString.call(processedFile);\n\n if (fileType === '[object File]' || fileType === '[object Blob]') {\n if (fileType === '[object Blob]') {\n processedFile = new File([processedFile], rawFile.name, {\n type: rawFile.type\n });\n }\n for (var p in rawFile) {\n if (rawFile.hasOwnProperty(p)) {\n processedFile[p] = rawFile[p];\n }\n }\n _this2.post(processedFile);\n } else {\n _this2.post(rawFile);\n }\n }, function () {\n _this2.onRemove(null, rawFile);\n });\n } else if (before !== false) {\n this.post(rawFile);\n } else {\n this.onRemove(null, rawFile);\n }\n },\n abort: function abort(file) {\n var reqs = this.reqs;\n\n if (file) {\n var uid = file;\n if (file.uid) uid = file.uid;\n if (reqs[uid]) {\n reqs[uid].abort();\n }\n } else {\n Object.keys(reqs).forEach(function (uid) {\n if (reqs[uid]) reqs[uid].abort();\n delete reqs[uid];\n });\n }\n },\n post: function post(rawFile) {\n var _this3 = this;\n\n var uid = rawFile.uid;\n\n var options = {\n headers: this.headers,\n withCredentials: this.withCredentials,\n file: rawFile,\n data: this.data,\n filename: this.name,\n action: this.action,\n onProgress: function onProgress(e) {\n _this3.onProgress(e, rawFile);\n },\n onSuccess: function onSuccess(res) {\n _this3.onSuccess(res, rawFile);\n delete _this3.reqs[uid];\n },\n onError: function onError(err) {\n _this3.onError(err, rawFile);\n delete _this3.reqs[uid];\n }\n };\n var req = this.httpRequest(options);\n this.reqs[uid] = req;\n if (req && req.then) {\n req.then(options.onSuccess, options.onError);\n }\n },\n handleClick: function handleClick() {\n if (!this.disabled) {\n this.$refs.input.value = null;\n this.$refs.input.click();\n }\n },\n handleKeydown: function handleKeydown(e) {\n if (e.target !== e.currentTarget) return;\n if (e.keyCode === 13 || e.keyCode === 32) {\n this.handleClick();\n }\n }\n },\n\n render: function render(h) {\n var handleClick = this.handleClick,\n drag = this.drag,\n name = this.name,\n handleChange = this.handleChange,\n multiple = this.multiple,\n accept = this.accept,\n listType = this.listType,\n uploadFiles = this.uploadFiles,\n disabled = this.disabled,\n handleKeydown = this.handleKeydown;\n\n var data = {\n class: {\n 'el-upload': true\n },\n on: {\n click: handleClick,\n keydown: handleKeydown\n }\n };\n data.class['el-upload--' + listType] = true;\n return h(\n 'div',\n external_babel_helper_vue_jsx_merge_props_default()([data, {\n attrs: { tabindex: '0' }\n }]),\n [drag ? h(\n 'upload-dragger',\n {\n attrs: { disabled: disabled },\n on: {\n 'file': uploadFiles\n }\n },\n [this.$slots.default]\n ) : this.$slots.default, h('input', { 'class': 'el-upload__input', attrs: { type: 'file', name: name, multiple: multiple, accept: accept },\n ref: 'input', on: {\n 'change': handleChange\n }\n })]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/upload/src/upload.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_uploadvue_type_script_lang_js_ = (uploadvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/upload/src/upload.vue\nvar upload_render, upload_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar upload_component = normalizeComponent(\n src_uploadvue_type_script_lang_js_,\n upload_render,\n upload_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var upload_api; }\nupload_component.options.__file = \"packages/upload/src/upload.vue\"\n/* harmony default export */ var src_upload = (upload_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/index.vue?vue&type=script&lang=js&\n\n\n\n\n\n\nfunction srcvue_type_script_lang_js_noop() {}\n\n/* harmony default export */ var srcvue_type_script_lang_js_ = ({\n name: 'ElUpload',\n\n mixins: [migrating_default.a],\n\n components: {\n ElProgress: progress_default.a,\n UploadList: upload_list,\n Upload: src_upload\n },\n\n provide: function provide() {\n return {\n uploader: this\n };\n },\n\n\n inject: {\n elForm: {\n default: ''\n }\n },\n\n props: {\n action: {\n type: String,\n required: true\n },\n headers: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n data: Object,\n multiple: Boolean,\n name: {\n type: String,\n default: 'file'\n },\n drag: Boolean,\n dragger: Boolean,\n withCredentials: Boolean,\n showFileList: {\n type: Boolean,\n default: true\n },\n accept: String,\n type: {\n type: String,\n default: 'select'\n },\n beforeUpload: Function,\n beforeRemove: Function,\n onRemove: {\n type: Function,\n default: srcvue_type_script_lang_js_noop\n },\n onChange: {\n type: Function,\n default: srcvue_type_script_lang_js_noop\n },\n onPreview: {\n type: Function\n },\n onSuccess: {\n type: Function,\n default: srcvue_type_script_lang_js_noop\n },\n onProgress: {\n type: Function,\n default: srcvue_type_script_lang_js_noop\n },\n onError: {\n type: Function,\n default: srcvue_type_script_lang_js_noop\n },\n fileList: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n autoUpload: {\n type: Boolean,\n default: true\n },\n listType: {\n type: String,\n default: 'text' // text,picture,picture-card\n },\n httpRequest: Function,\n disabled: Boolean,\n limit: Number,\n onExceed: {\n type: Function,\n default: srcvue_type_script_lang_js_noop\n }\n },\n\n data: function data() {\n return {\n uploadFiles: [],\n dragOver: false,\n draging: false,\n tempIndex: 1\n };\n },\n\n\n computed: {\n uploadDisabled: function uploadDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n }\n },\n\n watch: {\n listType: function listType(type) {\n if (type === 'picture-card' || type === 'picture') {\n this.uploadFiles = this.uploadFiles.map(function (file) {\n if (!file.url && file.raw) {\n try {\n file.url = URL.createObjectURL(file.raw);\n } catch (err) {\n console.error('[Element Error][Upload]', err);\n }\n }\n return file;\n });\n }\n },\n\n fileList: {\n immediate: true,\n handler: function handler(fileList) {\n var _this = this;\n\n this.uploadFiles = fileList.map(function (item) {\n item.uid = item.uid || Date.now() + _this.tempIndex++;\n item.status = item.status || 'success';\n return item;\n });\n }\n }\n },\n\n methods: {\n handleStart: function handleStart(rawFile) {\n rawFile.uid = Date.now() + this.tempIndex++;\n var file = {\n status: 'ready',\n name: rawFile.name,\n size: rawFile.size,\n percentage: 0,\n uid: rawFile.uid,\n raw: rawFile\n };\n\n if (this.listType === 'picture-card' || this.listType === 'picture') {\n try {\n file.url = URL.createObjectURL(rawFile);\n } catch (err) {\n console.error('[Element Error][Upload]', err);\n return;\n }\n }\n\n this.uploadFiles.push(file);\n this.onChange(file, this.uploadFiles);\n },\n handleProgress: function handleProgress(ev, rawFile) {\n var file = this.getFile(rawFile);\n this.onProgress(ev, file, this.uploadFiles);\n file.status = 'uploading';\n file.percentage = ev.percent || 0;\n },\n handleSuccess: function handleSuccess(res, rawFile) {\n var file = this.getFile(rawFile);\n\n if (file) {\n file.status = 'success';\n file.response = res;\n\n this.onSuccess(res, file, this.uploadFiles);\n this.onChange(file, this.uploadFiles);\n }\n },\n handleError: function handleError(err, rawFile) {\n var file = this.getFile(rawFile);\n var fileList = this.uploadFiles;\n\n file.status = 'fail';\n\n fileList.splice(fileList.indexOf(file), 1);\n\n this.onError(err, file, this.uploadFiles);\n this.onChange(file, this.uploadFiles);\n },\n handleRemove: function handleRemove(file, raw) {\n var _this2 = this;\n\n if (raw) {\n file = this.getFile(raw);\n }\n var doRemove = function doRemove() {\n _this2.abort(file);\n var fileList = _this2.uploadFiles;\n fileList.splice(fileList.indexOf(file), 1);\n _this2.onRemove(file, fileList);\n };\n\n if (!this.beforeRemove) {\n doRemove();\n } else if (typeof this.beforeRemove === 'function') {\n var before = this.beforeRemove(file, this.uploadFiles);\n if (before && before.then) {\n before.then(function () {\n doRemove();\n }, srcvue_type_script_lang_js_noop);\n } else if (before !== false) {\n doRemove();\n }\n }\n },\n getFile: function getFile(rawFile) {\n var fileList = this.uploadFiles;\n var target = void 0;\n fileList.every(function (item) {\n target = rawFile.uid === item.uid ? item : null;\n return !target;\n });\n return target;\n },\n abort: function abort(file) {\n this.$refs['upload-inner'].abort(file);\n },\n clearFiles: function clearFiles() {\n this.uploadFiles = [];\n },\n submit: function submit() {\n var _this3 = this;\n\n this.uploadFiles.filter(function (file) {\n return file.status === 'ready';\n }).forEach(function (file) {\n _this3.$refs['upload-inner'].upload(file.raw);\n });\n },\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'default-file-list': 'default-file-list is renamed to file-list.',\n 'show-upload-list': 'show-upload-list is renamed to show-file-list.',\n 'thumbnail-mode': 'thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan'\n }\n };\n }\n },\n\n beforeDestroy: function beforeDestroy() {\n this.uploadFiles.forEach(function (file) {\n if (file.url && file.url.indexOf('blob:') === 0) {\n URL.revokeObjectURL(file.url);\n }\n });\n },\n render: function render(h) {\n var _this4 = this;\n\n var uploadList = void 0;\n\n if (this.showFileList) {\n uploadList = h(\n upload_list,\n {\n attrs: {\n disabled: this.uploadDisabled,\n listType: this.listType,\n files: this.uploadFiles,\n\n handlePreview: this.onPreview },\n on: {\n 'remove': this.handleRemove\n }\n },\n [function (props) {\n if (_this4.$scopedSlots.file) {\n return _this4.$scopedSlots.file({\n file: props.file\n });\n }\n }]\n );\n }\n\n var uploadData = {\n props: {\n type: this.type,\n drag: this.drag,\n action: this.action,\n multiple: this.multiple,\n 'before-upload': this.beforeUpload,\n 'with-credentials': this.withCredentials,\n headers: this.headers,\n name: this.name,\n data: this.data,\n accept: this.accept,\n fileList: this.uploadFiles,\n autoUpload: this.autoUpload,\n listType: this.listType,\n disabled: this.uploadDisabled,\n limit: this.limit,\n 'on-exceed': this.onExceed,\n 'on-start': this.handleStart,\n 'on-progress': this.handleProgress,\n 'on-success': this.handleSuccess,\n 'on-error': this.handleError,\n 'on-preview': this.onPreview,\n 'on-remove': this.handleRemove,\n 'http-request': this.httpRequest\n },\n ref: 'upload-inner'\n };\n\n var trigger = this.$slots.trigger || this.$slots.default;\n var uploadComponent = h(\n 'upload',\n uploadData,\n [trigger]\n );\n\n return h('div', [this.listType === 'picture-card' ? uploadList : '', this.$slots.trigger ? [uploadComponent, this.$slots.default] : uploadComponent, this.$slots.tip, this.listType !== 'picture-card' ? uploadList : '']);\n }\n});\n// CONCATENATED MODULE: ./packages/upload/src/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var upload_srcvue_type_script_lang_js_ = (srcvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/upload/src/index.vue\nvar src_render, src_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar upload_src_component = normalizeComponent(\n upload_srcvue_type_script_lang_js_,\n src_render,\n src_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var src_api; }\nupload_src_component.options.__file = \"packages/upload/src/index.vue\"\n/* harmony default export */ var upload_src = (upload_src_component.exports);\n// CONCATENATED MODULE: ./packages/upload/index.js\n\n\n/* istanbul ignore next */\nupload_src.install = function (Vue) {\n Vue.component(upload_src.name, upload_src);\n};\n\n/* harmony default export */ var packages_upload = (upload_src);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/progress/src/progress.vue?vue&type=template&id=229ee406&\nvar progressvue_type_template_id_229ee406_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-progress\",\n class: [\n \"el-progress--\" + _vm.type,\n _vm.status ? \"is-\" + _vm.status : \"\",\n {\n \"el-progress--without-text\": !_vm.showText,\n \"el-progress--text-inside\": _vm.textInside\n }\n ],\n attrs: {\n role: \"progressbar\",\n \"aria-valuenow\": _vm.percentage,\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": \"100\"\n }\n },\n [\n _vm.type === \"line\"\n ? _c(\"div\", { staticClass: \"el-progress-bar\" }, [\n _c(\n \"div\",\n {\n staticClass: \"el-progress-bar__outer\",\n style: {\n height: _vm.strokeWidth + \"px\",\n backgroundColor: _vm.defineBackColor\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"el-progress-bar__inner\",\n style: _vm.barStyle\n },\n [\n _vm.showText && _vm.textInside\n ? _c(\n \"div\",\n {\n staticClass: \"el-progress-bar__innerText\",\n style: { color: _vm.textColor }\n },\n [_vm._v(_vm._s(_vm.content))]\n )\n : _vm._e()\n ]\n )\n ]\n )\n ])\n : _c(\n \"div\",\n {\n staticClass: \"el-progress-circle\",\n style: { height: _vm.width + \"px\", width: _vm.width + \"px\" }\n },\n [\n _c(\"svg\", { attrs: { viewBox: \"0 0 100 100\" } }, [\n _c(\"path\", {\n staticClass: \"el-progress-circle__track\",\n style: _vm.trailPathStyle,\n attrs: {\n d: _vm.trackPath,\n stroke: _vm.defineBackColor,\n \"stroke-width\": _vm.relativeStrokeWidth,\n fill: \"none\"\n }\n }),\n _c(\"path\", {\n staticClass: \"el-progress-circle__path\",\n style: _vm.circlePathStyle,\n attrs: {\n d: _vm.trackPath,\n stroke: _vm.stroke,\n fill: \"none\",\n \"stroke-linecap\": _vm.strokeLinecap,\n \"stroke-width\": _vm.percentage ? _vm.relativeStrokeWidth : 0\n }\n })\n ])\n ]\n ),\n _vm.showText && !_vm.textInside\n ? _c(\n \"div\",\n {\n staticClass: \"el-progress__text\",\n style: {\n fontSize: _vm.progressTextSize + \"px\",\n color: _vm.textColor\n }\n },\n [\n !_vm.status\n ? [_vm._v(_vm._s(_vm.content))]\n : _c(\"i\", { class: _vm.iconClass })\n ],\n 2\n )\n : _vm._e()\n ]\n )\n}\nvar progressvue_type_template_id_229ee406_staticRenderFns = []\nprogressvue_type_template_id_229ee406_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/progress/src/progress.vue?vue&type=template&id=229ee406&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/progress/src/progress.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var progressvue_type_script_lang_js_ = ({\n name: 'ElProgress',\n props: {\n type: {\n type: String,\n default: 'line',\n validator: function validator(val) {\n return ['line', 'circle', 'dashboard'].indexOf(val) > -1;\n }\n },\n percentage: {\n type: Number,\n default: 0,\n required: true,\n validator: function validator(val) {\n return val >= 0 && val <= 100;\n }\n },\n status: {\n type: String,\n validator: function validator(val) {\n return ['success', 'exception', 'warning'].indexOf(val) > -1;\n }\n },\n strokeWidth: {\n type: Number,\n default: 6\n },\n strokeLinecap: {\n type: String,\n default: 'round'\n },\n textInside: {\n type: Boolean,\n default: false\n },\n width: {\n type: Number,\n default: 126\n },\n showText: {\n type: Boolean,\n default: true\n },\n color: {\n type: [String, Array, Function],\n default: ''\n },\n defineBackColor: {\n type: [String, Array, Function],\n default: '#ebeef5'\n },\n textColor: {\n type: [String, Array, Function],\n default: '#606266'\n },\n format: Function\n },\n computed: {\n barStyle: function barStyle() {\n var style = {};\n style.width = this.percentage + '%';\n style.backgroundColor = this.getCurrentColor(this.percentage);\n return style;\n },\n relativeStrokeWidth: function relativeStrokeWidth() {\n return (this.strokeWidth / this.width * 100).toFixed(1);\n },\n radius: function radius() {\n if (this.type === 'circle' || this.type === 'dashboard') {\n return parseInt(50 - parseFloat(this.relativeStrokeWidth) / 2, 10);\n } else {\n return 0;\n }\n },\n trackPath: function trackPath() {\n var radius = this.radius;\n var isDashboard = this.type === 'dashboard';\n return '\\n M 50 50\\n m 0 ' + (isDashboard ? '' : '-') + radius + '\\n a ' + radius + ' ' + radius + ' 0 1 1 0 ' + (isDashboard ? '-' : '') + radius * 2 + '\\n a ' + radius + ' ' + radius + ' 0 1 1 0 ' + (isDashboard ? '' : '-') + radius * 2 + '\\n ';\n },\n perimeter: function perimeter() {\n return 2 * Math.PI * this.radius;\n },\n rate: function rate() {\n return this.type === 'dashboard' ? 0.75 : 1;\n },\n strokeDashoffset: function strokeDashoffset() {\n var offset = -1 * this.perimeter * (1 - this.rate) / 2;\n return offset + 'px';\n },\n trailPathStyle: function trailPathStyle() {\n return {\n strokeDasharray: this.perimeter * this.rate + 'px, ' + this.perimeter + 'px',\n strokeDashoffset: this.strokeDashoffset\n };\n },\n circlePathStyle: function circlePathStyle() {\n return {\n strokeDasharray: this.perimeter * this.rate * (this.percentage / 100) + 'px, ' + this.perimeter + 'px',\n strokeDashoffset: this.strokeDashoffset,\n transition: 'stroke-dasharray 0.6s ease 0s, stroke 0.6s ease'\n };\n },\n stroke: function stroke() {\n var ret = void 0;\n if (this.color) {\n ret = this.getCurrentColor(this.percentage);\n } else {\n switch (this.status) {\n case 'success':\n ret = '#13ce66';\n break;\n case 'exception':\n ret = '#ff4949';\n break;\n case 'warning':\n ret = '#e6a23c';\n break;\n default:\n ret = '#20a0ff';\n }\n }\n return ret;\n },\n iconClass: function iconClass() {\n if (this.status === 'warning') {\n return 'el-icon-warning';\n }\n if (this.type === 'line') {\n return this.status === 'success' ? 'el-icon-circle-check' : 'el-icon-circle-close';\n } else {\n return this.status === 'success' ? 'el-icon-check' : 'el-icon-close';\n }\n },\n progressTextSize: function progressTextSize() {\n return this.type === 'line' ? 12 + this.strokeWidth * 0.4 : this.width * 0.111111 + 2;\n },\n content: function content() {\n if (typeof this.format === 'function') {\n return this.format(this.percentage) || '';\n } else {\n return this.percentage + '%';\n }\n }\n },\n methods: {\n getCurrentColor: function getCurrentColor(percentage) {\n if (typeof this.color === 'function') {\n return this.color(percentage);\n } else if (typeof this.color === 'string') {\n return this.color;\n } else {\n return this.getLevelColor(percentage);\n }\n },\n getLevelColor: function getLevelColor(percentage) {\n var colorArray = this.getColorArray().sort(function (a, b) {\n return a.percentage - b.percentage;\n });\n\n for (var i = 0; i < colorArray.length; i++) {\n if (colorArray[i].percentage > percentage) {\n return colorArray[i].color;\n }\n }\n return colorArray[colorArray.length - 1].color;\n },\n getColorArray: function getColorArray() {\n var color = this.color;\n var span = 100 / color.length;\n return color.map(function (seriesColor, index) {\n if (typeof seriesColor === 'string') {\n return {\n color: seriesColor,\n percentage: (index + 1) * span\n };\n }\n return seriesColor;\n });\n }\n }\n});\n// CONCATENATED MODULE: ./packages/progress/src/progress.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_progressvue_type_script_lang_js_ = (progressvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/progress/src/progress.vue\n\n\n\n\n\n/* normalize component */\n\nvar progress_component = normalizeComponent(\n src_progressvue_type_script_lang_js_,\n progressvue_type_template_id_229ee406_render,\n progressvue_type_template_id_229ee406_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var progress_api; }\nprogress_component.options.__file = \"packages/progress/src/progress.vue\"\n/* harmony default export */ var progress = (progress_component.exports);\n// CONCATENATED MODULE: ./packages/progress/index.js\n\n\n/* istanbul ignore next */\nprogress.install = function (Vue) {\n Vue.component(progress.name, progress);\n};\n\n/* harmony default export */ var packages_progress = (progress);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/spinner/src/spinner.vue?vue&type=template&id=697b8538&\nvar spinnervue_type_template_id_697b8538_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"span\", { staticClass: \"el-spinner\" }, [\n _c(\n \"svg\",\n {\n staticClass: \"el-spinner-inner\",\n style: { width: _vm.radius / 2 + \"px\", height: _vm.radius / 2 + \"px\" },\n attrs: { viewBox: \"0 0 50 50\" }\n },\n [\n _c(\"circle\", {\n staticClass: \"path\",\n attrs: {\n cx: \"25\",\n cy: \"25\",\n r: \"20\",\n fill: \"none\",\n stroke: _vm.strokeColor,\n \"stroke-width\": _vm.strokeWidth\n }\n })\n ]\n )\n ])\n}\nvar spinnervue_type_template_id_697b8538_staticRenderFns = []\nspinnervue_type_template_id_697b8538_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/spinner/src/spinner.vue?vue&type=template&id=697b8538&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/spinner/src/spinner.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var spinnervue_type_script_lang_js_ = ({\n name: 'ElSpinner',\n props: {\n type: String,\n radius: {\n type: Number,\n default: 100\n },\n strokeWidth: {\n type: Number,\n default: 5\n },\n strokeColor: {\n type: String,\n default: '#efefef'\n }\n }\n});\n// CONCATENATED MODULE: ./packages/spinner/src/spinner.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_spinnervue_type_script_lang_js_ = (spinnervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/spinner/src/spinner.vue\n\n\n\n\n\n/* normalize component */\n\nvar spinner_component = normalizeComponent(\n src_spinnervue_type_script_lang_js_,\n spinnervue_type_template_id_697b8538_render,\n spinnervue_type_template_id_697b8538_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var spinner_api; }\nspinner_component.options.__file = \"packages/spinner/src/spinner.vue\"\n/* harmony default export */ var spinner = (spinner_component.exports);\n// CONCATENATED MODULE: ./packages/spinner/index.js\n\n\n/* istanbul ignore next */\nspinner.install = function (Vue) {\n Vue.component(spinner.name, spinner);\n};\n\n/* harmony default export */ var packages_spinner = (spinner);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/message/src/main.vue?vue&type=template&id=455b9f60&\nvar mainvue_type_template_id_455b9f60_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"el-message-fade\" },\n on: { \"after-leave\": _vm.handleAfterLeave }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n class: [\n \"el-message\",\n _vm.type && !_vm.iconClass ? \"el-message--\" + _vm.type : \"\",\n _vm.center ? \"is-center\" : \"\",\n _vm.showClose ? \"is-closable\" : \"\",\n _vm.customClass\n ],\n style: _vm.positionStyle,\n attrs: { role: \"alert\" },\n on: { mouseenter: _vm.clearTimer, mouseleave: _vm.startTimer }\n },\n [\n _vm.iconClass\n ? _c(\"i\", { class: _vm.iconClass })\n : _c(\"i\", { class: _vm.typeClass }),\n _vm._t(\"default\", [\n !_vm.dangerouslyUseHTMLString\n ? _c(\"p\", { staticClass: \"el-message__content\" }, [\n _vm._v(_vm._s(_vm.message))\n ])\n : _c(\"p\", {\n staticClass: \"el-message__content\",\n domProps: { innerHTML: _vm._s(_vm.message) }\n })\n ]),\n _vm.showClose\n ? _c(\"i\", {\n staticClass: \"el-message__closeBtn el-icon-close\",\n on: { click: _vm.close }\n })\n : _vm._e()\n ],\n 2\n )\n ]\n )\n}\nvar mainvue_type_template_id_455b9f60_staticRenderFns = []\nmainvue_type_template_id_455b9f60_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/message/src/main.vue?vue&type=template&id=455b9f60&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/message/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar src_mainvue_type_script_lang_js_typeMap = {\n success: 'success',\n info: 'info',\n warning: 'warning',\n error: 'error'\n};\n\n/* harmony default export */ var message_src_mainvue_type_script_lang_js_ = ({\n data: function data() {\n return {\n visible: false,\n message: '',\n duration: 3000,\n type: 'info',\n iconClass: '',\n customClass: '',\n onClose: null,\n showClose: false,\n closed: false,\n verticalOffset: 20,\n timer: null,\n dangerouslyUseHTMLString: false,\n center: false\n };\n },\n\n\n computed: {\n typeClass: function typeClass() {\n return this.type && !this.iconClass ? 'el-message__icon el-icon-' + src_mainvue_type_script_lang_js_typeMap[this.type] : '';\n },\n positionStyle: function positionStyle() {\n return {\n 'top': this.verticalOffset + 'px'\n };\n }\n },\n\n watch: {\n closed: function closed(newVal) {\n if (newVal) {\n this.visible = false;\n }\n }\n },\n\n methods: {\n handleAfterLeave: function handleAfterLeave() {\n this.$destroy(true);\n this.$el.parentNode.removeChild(this.$el);\n },\n close: function close() {\n this.closed = true;\n if (typeof this.onClose === 'function') {\n this.onClose(this);\n }\n },\n clearTimer: function clearTimer() {\n clearTimeout(this.timer);\n },\n startTimer: function startTimer() {\n var _this = this;\n\n if (this.duration > 0) {\n this.timer = setTimeout(function () {\n if (!_this.closed) {\n _this.close();\n }\n }, this.duration);\n }\n },\n keydown: function keydown(e) {\n if (e.keyCode === 27) {\n // esc关闭消息\n if (!this.closed) {\n this.close();\n }\n }\n }\n },\n mounted: function mounted() {\n this.startTimer();\n document.addEventListener('keydown', this.keydown);\n },\n beforeDestroy: function beforeDestroy() {\n document.removeEventListener('keydown', this.keydown);\n }\n});\n// CONCATENATED MODULE: ./packages/message/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_message_src_mainvue_type_script_lang_js_ = (message_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/message/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar message_src_main_component = normalizeComponent(\n packages_message_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_455b9f60_render,\n mainvue_type_template_id_455b9f60_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var message_src_main_api; }\nmessage_src_main_component.options.__file = \"packages/message/src/main.vue\"\n/* harmony default export */ var message_src_main = (message_src_main_component.exports);\n// EXTERNAL MODULE: external \"element-ui/lib/utils/types\"\nvar types_ = __nested_webpack_require_8926__(16);\n\n// CONCATENATED MODULE: ./packages/message/src/main.js\nvar main_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\nvar MessageConstructor = external_vue_default.a.extend(message_src_main);\n\nvar message_src_main_instance = void 0;\nvar main_instances = [];\nvar main_seed = 1;\n\nvar main_Message = function Message(options) {\n if (external_vue_default.a.prototype.$isServer) return;\n options = options || {};\n if (typeof options === 'string') {\n options = {\n message: options\n };\n }\n var userOnClose = options.onClose;\n var id = 'message_' + main_seed++;\n\n options.onClose = function () {\n Message.close(id, userOnClose);\n };\n message_src_main_instance = new MessageConstructor({\n data: options\n });\n message_src_main_instance.id = id;\n if (Object(vdom_[\"isVNode\"])(message_src_main_instance.message)) {\n message_src_main_instance.$slots.default = [message_src_main_instance.message];\n message_src_main_instance.message = null;\n }\n message_src_main_instance.$mount();\n document.body.appendChild(message_src_main_instance.$el);\n var verticalOffset = options.offset || 20;\n main_instances.forEach(function (item) {\n verticalOffset += item.$el.offsetHeight + 16;\n });\n message_src_main_instance.verticalOffset = verticalOffset;\n message_src_main_instance.visible = true;\n message_src_main_instance.$el.style.zIndex = popup_[\"PopupManager\"].nextZIndex();\n main_instances.push(message_src_main_instance);\n return message_src_main_instance;\n};\n\n['success', 'warning', 'info', 'error'].forEach(function (type) {\n main_Message[type] = function (options) {\n if (Object(types_[\"isObject\"])(options) && !Object(vdom_[\"isVNode\"])(options)) {\n return main_Message(main_extends({}, options, {\n type: type\n }));\n }\n return main_Message({\n type: type,\n message: options\n });\n };\n});\n\nmain_Message.close = function (id, userOnClose) {\n var len = main_instances.length;\n var index = -1;\n var removedHeight = void 0;\n for (var i = 0; i < len; i++) {\n if (id === main_instances[i].id) {\n removedHeight = main_instances[i].$el.offsetHeight;\n index = i;\n if (typeof userOnClose === 'function') {\n userOnClose(main_instances[i]);\n }\n main_instances.splice(i, 1);\n break;\n }\n }\n if (len <= 1 || index === -1 || index > main_instances.length - 1) return;\n for (var _i = index; _i < len - 1; _i++) {\n var dom = main_instances[_i].$el;\n dom.style['top'] = parseInt(dom.style['top'], 10) - removedHeight - 16 + 'px';\n }\n};\n\nmain_Message.closeAll = function () {\n for (var i = main_instances.length - 1; i >= 0; i--) {\n main_instances[i].close();\n }\n};\n\n/* harmony default export */ var packages_message_src_main = (main_Message);\n// CONCATENATED MODULE: ./packages/message/index.js\n\n/* harmony default export */ var packages_message = (packages_message_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/badge/src/main.vue?vue&type=template&id=7ccb6598&\nvar mainvue_type_template_id_7ccb6598_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"el-badge\" },\n [\n _vm._t(\"default\"),\n _c(\"transition\", { attrs: { name: \"el-zoom-in-center\" } }, [\n _c(\"sup\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n !_vm.hidden && (_vm.content || _vm.content === 0 || _vm.isDot),\n expression: \"!hidden && (content || content === 0 || isDot)\"\n }\n ],\n staticClass: \"el-badge__content\",\n class: [\n _vm.type ? \"el-badge__content--\" + _vm.type : null,\n {\n \"is-fixed\": _vm.$slots.default,\n \"is-dot\": _vm.isDot\n }\n ],\n domProps: { textContent: _vm._s(_vm.content) }\n })\n ])\n ],\n 2\n )\n}\nvar mainvue_type_template_id_7ccb6598_staticRenderFns = []\nmainvue_type_template_id_7ccb6598_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/badge/src/main.vue?vue&type=template&id=7ccb6598&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/badge/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var badge_src_mainvue_type_script_lang_js_ = ({\n name: 'ElBadge',\n\n props: {\n value: [String, Number],\n max: Number,\n isDot: Boolean,\n hidden: Boolean,\n type: {\n type: String,\n validator: function validator(val) {\n return ['primary', 'success', 'warning', 'info', 'danger'].indexOf(val) > -1;\n }\n }\n },\n\n computed: {\n content: function content() {\n if (this.isDot) return;\n\n var value = this.value;\n var max = this.max;\n\n if (typeof value === 'number' && typeof max === 'number') {\n return max < value ? max + '+' : value;\n }\n\n return value;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/badge/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_badge_src_mainvue_type_script_lang_js_ = (badge_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/badge/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar badge_src_main_component = normalizeComponent(\n packages_badge_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_7ccb6598_render,\n mainvue_type_template_id_7ccb6598_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var badge_src_main_api; }\nbadge_src_main_component.options.__file = \"packages/badge/src/main.vue\"\n/* harmony default export */ var badge_src_main = (badge_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/badge/index.js\n\n\n/* istanbul ignore next */\nbadge_src_main.install = function (Vue) {\n Vue.component(badge_src_main.name, badge_src_main);\n};\n\n/* harmony default export */ var badge = (badge_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/card/src/main.vue?vue&type=template&id=59a4a40f&\nvar mainvue_type_template_id_59a4a40f_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-card\",\n class: _vm.shadow ? \"is-\" + _vm.shadow + \"-shadow\" : \"is-always-shadow\"\n },\n [\n _vm.$slots.header || _vm.header\n ? _c(\n \"div\",\n { staticClass: \"el-card__header\" },\n [_vm._t(\"header\", [_vm._v(_vm._s(_vm.header))])],\n 2\n )\n : _vm._e(),\n _c(\n \"div\",\n { staticClass: \"el-card__body\", style: _vm.bodyStyle },\n [_vm._t(\"default\")],\n 2\n )\n ]\n )\n}\nvar mainvue_type_template_id_59a4a40f_staticRenderFns = []\nmainvue_type_template_id_59a4a40f_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/card/src/main.vue?vue&type=template&id=59a4a40f&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/card/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var card_src_mainvue_type_script_lang_js_ = ({\n name: 'ElCard',\n props: {\n header: {},\n bodyStyle: {},\n shadow: {\n type: String\n }\n }\n});\n// CONCATENATED MODULE: ./packages/card/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_card_src_mainvue_type_script_lang_js_ = (card_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/card/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar card_src_main_component = normalizeComponent(\n packages_card_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_59a4a40f_render,\n mainvue_type_template_id_59a4a40f_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var card_src_main_api; }\ncard_src_main_component.options.__file = \"packages/card/src/main.vue\"\n/* harmony default export */ var card_src_main = (card_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/card/index.js\n\n\n/* istanbul ignore next */\ncard_src_main.install = function (Vue) {\n Vue.component(card_src_main.name, card_src_main);\n};\n\n/* harmony default export */ var card = (card_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/rate/src/main.vue?vue&type=template&id=ada57782&\nvar mainvue_type_template_id_ada57782_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-rate\",\n attrs: {\n role: \"slider\",\n \"aria-valuenow\": _vm.currentValue,\n \"aria-valuetext\": _vm.text,\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": _vm.max,\n tabindex: \"0\"\n },\n on: { keydown: _vm.handleKey }\n },\n [\n _vm._l(_vm.max, function(item, key) {\n return _c(\n \"span\",\n {\n key: key,\n staticClass: \"el-rate__item\",\n style: { cursor: _vm.rateDisabled ? \"auto\" : \"pointer\" },\n on: {\n mousemove: function($event) {\n _vm.setCurrentValue(item, $event)\n },\n mouseleave: _vm.resetCurrentValue,\n click: function($event) {\n _vm.selectValue(item)\n }\n }\n },\n [\n _c(\n \"i\",\n {\n staticClass: \"el-rate__icon\",\n class: [\n _vm.classes[item - 1],\n { hover: _vm.hoverIndex === item }\n ],\n style: _vm.getIconStyle(item)\n },\n [\n _vm.showDecimalIcon(item)\n ? _c(\"i\", {\n staticClass: \"el-rate__decimal\",\n class: _vm.decimalIconClass,\n style: _vm.decimalStyle\n })\n : _vm._e()\n ]\n )\n ]\n )\n }),\n _vm.showText || _vm.showScore\n ? _c(\n \"span\",\n { staticClass: \"el-rate__text\", style: { color: _vm.textColor } },\n [_vm._v(_vm._s(_vm.text))]\n )\n : _vm._e()\n ],\n 2\n )\n}\nvar mainvue_type_template_id_ada57782_staticRenderFns = []\nmainvue_type_template_id_ada57782_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/rate/src/main.vue?vue&type=template&id=ada57782&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/rate/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var rate_src_mainvue_type_script_lang_js_ = ({\n name: 'ElRate',\n\n mixins: [migrating_default.a],\n\n inject: {\n elForm: {\n default: ''\n }\n },\n\n data: function data() {\n return {\n pointerAtLeftHalf: true,\n currentValue: this.value,\n hoverIndex: -1\n };\n },\n\n\n props: {\n value: {\n type: Number,\n default: 0\n },\n lowThreshold: {\n type: Number,\n default: 2\n },\n highThreshold: {\n type: Number,\n default: 4\n },\n max: {\n type: Number,\n default: 5\n },\n colors: {\n type: [Array, Object],\n default: function _default() {\n return ['#F7BA2A', '#F7BA2A', '#F7BA2A'];\n }\n },\n voidColor: {\n type: String,\n default: '#C6D1DE'\n },\n disabledVoidColor: {\n type: String,\n default: '#EFF2F7'\n },\n iconClasses: {\n type: [Array, Object],\n default: function _default() {\n return ['el-icon-star-on', 'el-icon-star-on', 'el-icon-star-on'];\n }\n },\n voidIconClass: {\n type: String,\n default: 'el-icon-star-off'\n },\n disabledVoidIconClass: {\n type: String,\n default: 'el-icon-star-on'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n allowHalf: {\n type: Boolean,\n default: false\n },\n showText: {\n type: Boolean,\n default: false\n },\n showScore: {\n type: Boolean,\n default: false\n },\n textColor: {\n type: String,\n default: '#1f2d3d'\n },\n texts: {\n type: Array,\n default: function _default() {\n return ['极差', '失望', '一般', '满意', '惊喜'];\n }\n },\n scoreTemplate: {\n type: String,\n default: '{value}'\n }\n },\n\n computed: {\n text: function text() {\n var result = '';\n if (this.showScore) {\n result = this.scoreTemplate.replace(/\\{\\s*value\\s*\\}/, this.rateDisabled ? this.value : this.currentValue);\n } else if (this.showText) {\n result = this.texts[Math.ceil(this.currentValue) - 1];\n }\n return result;\n },\n decimalStyle: function decimalStyle() {\n var width = '';\n if (this.rateDisabled) {\n width = this.valueDecimal + '%';\n } else if (this.allowHalf) {\n width = '50%';\n }\n return {\n color: this.activeColor,\n width: width\n };\n },\n valueDecimal: function valueDecimal() {\n return this.value * 100 - Math.floor(this.value) * 100;\n },\n classMap: function classMap() {\n var _ref;\n\n return Array.isArray(this.iconClasses) ? (_ref = {}, _ref[this.lowThreshold] = this.iconClasses[0], _ref[this.highThreshold] = { value: this.iconClasses[1], excluded: true }, _ref[this.max] = this.iconClasses[2], _ref) : this.iconClasses;\n },\n decimalIconClass: function decimalIconClass() {\n return this.getValueFromMap(this.value, this.classMap);\n },\n voidClass: function voidClass() {\n return this.rateDisabled ? this.disabledVoidIconClass : this.voidIconClass;\n },\n activeClass: function activeClass() {\n return this.getValueFromMap(this.currentValue, this.classMap);\n },\n colorMap: function colorMap() {\n var _ref2;\n\n return Array.isArray(this.colors) ? (_ref2 = {}, _ref2[this.lowThreshold] = this.colors[0], _ref2[this.highThreshold] = { value: this.colors[1], excluded: true }, _ref2[this.max] = this.colors[2], _ref2) : this.colors;\n },\n activeColor: function activeColor() {\n return this.getValueFromMap(this.currentValue, this.colorMap);\n },\n classes: function classes() {\n var result = [];\n var i = 0;\n var threshold = this.currentValue;\n if (this.allowHalf && this.currentValue !== Math.floor(this.currentValue)) {\n threshold--;\n }\n for (; i < threshold; i++) {\n result.push(this.activeClass);\n }\n for (; i < this.max; i++) {\n result.push(this.voidClass);\n }\n return result;\n },\n rateDisabled: function rateDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n }\n },\n\n watch: {\n value: function value(val) {\n this.currentValue = val;\n this.pointerAtLeftHalf = this.value !== Math.floor(this.value);\n }\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'text-template': 'text-template is renamed to score-template.'\n }\n };\n },\n getValueFromMap: function getValueFromMap(value, map) {\n var matchedKeys = Object.keys(map).filter(function (key) {\n var val = map[key];\n var excluded = Object(types_[\"isObject\"])(val) ? val.excluded : false;\n return excluded ? value < key : value <= key;\n }).sort(function (a, b) {\n return a - b;\n });\n var matchedValue = map[matchedKeys[0]];\n return Object(types_[\"isObject\"])(matchedValue) ? matchedValue.value : matchedValue || '';\n },\n showDecimalIcon: function showDecimalIcon(item) {\n var showWhenDisabled = this.rateDisabled && this.valueDecimal > 0 && item - 1 < this.value && item > this.value;\n /* istanbul ignore next */\n var showWhenAllowHalf = this.allowHalf && this.pointerAtLeftHalf && item - 0.5 <= this.currentValue && item > this.currentValue;\n return showWhenDisabled || showWhenAllowHalf;\n },\n getIconStyle: function getIconStyle(item) {\n var voidColor = this.rateDisabled ? this.disabledVoidColor : this.voidColor;\n return {\n color: item <= this.currentValue ? this.activeColor : voidColor\n };\n },\n selectValue: function selectValue(value) {\n if (this.rateDisabled) {\n return;\n }\n if (this.allowHalf && this.pointerAtLeftHalf) {\n this.$emit('input', this.currentValue);\n this.$emit('change', this.currentValue);\n } else {\n this.$emit('input', value);\n this.$emit('change', value);\n }\n },\n handleKey: function handleKey(e) {\n if (this.rateDisabled) {\n return;\n }\n var currentValue = this.currentValue;\n var keyCode = e.keyCode;\n if (keyCode === 38 || keyCode === 39) {\n // left / down\n if (this.allowHalf) {\n currentValue += 0.5;\n } else {\n currentValue += 1;\n }\n e.stopPropagation();\n e.preventDefault();\n } else if (keyCode === 37 || keyCode === 40) {\n if (this.allowHalf) {\n currentValue -= 0.5;\n } else {\n currentValue -= 1;\n }\n e.stopPropagation();\n e.preventDefault();\n }\n currentValue = currentValue < 0 ? 0 : currentValue;\n currentValue = currentValue > this.max ? this.max : currentValue;\n\n this.$emit('input', currentValue);\n this.$emit('change', currentValue);\n },\n setCurrentValue: function setCurrentValue(value, event) {\n if (this.rateDisabled) {\n return;\n }\n /* istanbul ignore if */\n if (this.allowHalf) {\n var target = event.target;\n if (Object(dom_[\"hasClass\"])(target, 'el-rate__item')) {\n target = target.querySelector('.el-rate__icon');\n }\n if (Object(dom_[\"hasClass\"])(target, 'el-rate__decimal')) {\n target = target.parentNode;\n }\n this.pointerAtLeftHalf = event.offsetX * 2 <= target.clientWidth;\n this.currentValue = this.pointerAtLeftHalf ? value - 0.5 : value;\n } else {\n this.currentValue = value;\n }\n this.hoverIndex = value;\n },\n resetCurrentValue: function resetCurrentValue() {\n if (this.rateDisabled) {\n return;\n }\n if (this.allowHalf) {\n this.pointerAtLeftHalf = this.value !== Math.floor(this.value);\n }\n this.currentValue = this.value;\n this.hoverIndex = -1;\n }\n },\n\n created: function created() {\n if (!this.value) {\n this.$emit('input', 0);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/rate/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_rate_src_mainvue_type_script_lang_js_ = (rate_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/rate/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar rate_src_main_component = normalizeComponent(\n packages_rate_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_ada57782_render,\n mainvue_type_template_id_ada57782_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var rate_src_main_api; }\nrate_src_main_component.options.__file = \"packages/rate/src/main.vue\"\n/* harmony default export */ var rate_src_main = (rate_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/rate/index.js\n\n\n/* istanbul ignore next */\nrate_src_main.install = function (Vue) {\n Vue.component(rate_src_main.name, rate_src_main);\n};\n\n/* harmony default export */ var packages_rate = (rate_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/steps/src/steps.vue?vue&type=template&id=3c6b6dc0&\nvar stepsvue_type_template_id_3c6b6dc0_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-steps\",\n class: [\n !_vm.simple && \"el-steps--\" + _vm.direction,\n _vm.simple && \"el-steps--simple\"\n ]\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar stepsvue_type_template_id_3c6b6dc0_staticRenderFns = []\nstepsvue_type_template_id_3c6b6dc0_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/steps/src/steps.vue?vue&type=template&id=3c6b6dc0&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/steps/src/steps.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var stepsvue_type_script_lang_js_ = ({\n name: 'ElSteps',\n\n mixins: [migrating_default.a],\n\n props: {\n space: [Number, String],\n active: Number,\n direction: {\n type: String,\n default: 'horizontal'\n },\n alignCenter: Boolean,\n simple: Boolean,\n finishStatus: {\n type: String,\n default: 'finish'\n },\n processStatus: {\n type: String,\n default: 'process'\n }\n },\n\n data: function data() {\n return {\n steps: [],\n stepOffset: 0\n };\n },\n\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'center': 'center is removed.'\n }\n };\n }\n },\n\n watch: {\n active: function active(newVal, oldVal) {\n this.$emit('change', newVal, oldVal);\n },\n steps: function steps(_steps) {\n _steps.forEach(function (child, index) {\n child.index = index;\n });\n }\n }\n});\n// CONCATENATED MODULE: ./packages/steps/src/steps.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_stepsvue_type_script_lang_js_ = (stepsvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/steps/src/steps.vue\n\n\n\n\n\n/* normalize component */\n\nvar steps_component = normalizeComponent(\n src_stepsvue_type_script_lang_js_,\n stepsvue_type_template_id_3c6b6dc0_render,\n stepsvue_type_template_id_3c6b6dc0_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var steps_api; }\nsteps_component.options.__file = \"packages/steps/src/steps.vue\"\n/* harmony default export */ var steps = (steps_component.exports);\n// CONCATENATED MODULE: ./packages/steps/index.js\n\n\n/* istanbul ignore next */\nsteps.install = function (Vue) {\n Vue.component(steps.name, steps);\n};\n\n/* harmony default export */ var packages_steps = (steps);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/steps/src/step.vue?vue&type=template&id=f414a87a&\nvar stepvue_type_template_id_f414a87a_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-step\",\n class: [\n !_vm.isSimple && \"is-\" + _vm.$parent.direction,\n _vm.isSimple && \"is-simple\",\n _vm.isLast && !_vm.space && !_vm.isCenter && \"is-flex\",\n _vm.isCenter && !_vm.isVertical && !_vm.isSimple && \"is-center\"\n ],\n style: _vm.style\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-step__head\", class: \"is-\" + _vm.currentStatus },\n [\n _c(\n \"div\",\n {\n staticClass: \"el-step__line\",\n style: _vm.isLast\n ? \"\"\n : { marginRight: _vm.$parent.stepOffset + \"px\" }\n },\n [\n _c(\"i\", {\n staticClass: \"el-step__line-inner\",\n style: _vm.lineStyle\n })\n ]\n ),\n _c(\n \"div\",\n {\n staticClass: \"el-step__icon\",\n class: \"is-\" + (_vm.icon ? \"icon\" : \"text\")\n },\n [\n _vm.currentStatus !== \"success\" && _vm.currentStatus !== \"error\"\n ? _vm._t(\"icon\", [\n _vm.icon\n ? _c(\"i\", {\n staticClass: \"el-step__icon-inner\",\n class: [_vm.icon]\n })\n : _vm._e(),\n !_vm.icon && !_vm.isSimple\n ? _c(\"div\", { staticClass: \"el-step__icon-inner\" }, [\n _vm._v(_vm._s(_vm.index + 1))\n ])\n : _vm._e()\n ])\n : _c(\"i\", {\n staticClass: \"el-step__icon-inner is-status\",\n class: [\n \"el-icon-\" +\n (_vm.currentStatus === \"success\" ? \"check\" : \"close\")\n ]\n })\n ],\n 2\n )\n ]\n ),\n _c(\"div\", { staticClass: \"el-step__main\" }, [\n _c(\n \"div\",\n {\n ref: \"title\",\n staticClass: \"el-step__title\",\n class: [\"is-\" + _vm.currentStatus]\n },\n [_vm._t(\"title\", [_vm._v(_vm._s(_vm.title))])],\n 2\n ),\n _vm.isSimple\n ? _c(\"div\", { staticClass: \"el-step__arrow\" })\n : _c(\n \"div\",\n {\n staticClass: \"el-step__description\",\n class: [\"is-\" + _vm.currentStatus]\n },\n [_vm._t(\"description\", [_vm._v(_vm._s(_vm.description))])],\n 2\n )\n ])\n ]\n )\n}\nvar stepvue_type_template_id_f414a87a_staticRenderFns = []\nstepvue_type_template_id_f414a87a_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/steps/src/step.vue?vue&type=template&id=f414a87a&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/steps/src/step.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var stepvue_type_script_lang_js_ = ({\n name: 'ElStep',\n\n props: {\n title: String,\n icon: String,\n description: String,\n status: String\n },\n\n data: function data() {\n return {\n index: -1,\n lineStyle: {},\n internalStatus: ''\n };\n },\n beforeCreate: function beforeCreate() {\n this.$parent.steps.push(this);\n },\n beforeDestroy: function beforeDestroy() {\n var steps = this.$parent.steps;\n var index = steps.indexOf(this);\n if (index >= 0) {\n steps.splice(index, 1);\n }\n },\n\n\n computed: {\n currentStatus: function currentStatus() {\n return this.status || this.internalStatus;\n },\n prevStatus: function prevStatus() {\n var prevStep = this.$parent.steps[this.index - 1];\n return prevStep ? prevStep.currentStatus : 'wait';\n },\n isCenter: function isCenter() {\n return this.$parent.alignCenter;\n },\n isVertical: function isVertical() {\n return this.$parent.direction === 'vertical';\n },\n isSimple: function isSimple() {\n return this.$parent.simple;\n },\n isLast: function isLast() {\n var parent = this.$parent;\n return parent.steps[parent.steps.length - 1] === this;\n },\n stepsCount: function stepsCount() {\n return this.$parent.steps.length;\n },\n space: function space() {\n var isSimple = this.isSimple,\n space = this.$parent.space;\n\n return isSimple ? '' : space;\n },\n\n style: function style() {\n var style = {};\n var parent = this.$parent;\n var len = parent.steps.length;\n\n var space = typeof this.space === 'number' ? this.space + 'px' : this.space ? this.space : 100 / (len - (this.isCenter ? 0 : 1)) + '%';\n style.flexBasis = space;\n if (this.isVertical) return style;\n if (this.isLast) {\n style.maxWidth = 100 / this.stepsCount + '%';\n } else {\n style.marginRight = -this.$parent.stepOffset + 'px';\n }\n\n return style;\n }\n },\n\n methods: {\n updateStatus: function updateStatus(val) {\n var prevChild = this.$parent.$children[this.index - 1];\n\n if (val > this.index) {\n this.internalStatus = this.$parent.finishStatus;\n } else if (val === this.index && this.prevStatus !== 'error') {\n this.internalStatus = this.$parent.processStatus;\n } else {\n this.internalStatus = 'wait';\n }\n\n if (prevChild) prevChild.calcProgress(this.internalStatus);\n },\n calcProgress: function calcProgress(status) {\n var step = 100;\n var style = {};\n\n style.transitionDelay = 150 * this.index + 'ms';\n if (status === this.$parent.processStatus) {\n step = this.currentStatus !== 'error' ? 0 : 0;\n } else if (status === 'wait') {\n step = 0;\n style.transitionDelay = -150 * this.index + 'ms';\n }\n\n style.borderWidth = step && !this.isSimple ? '1px' : 0;\n this.$parent.direction === 'vertical' ? style.height = step + '%' : style.width = step + '%';\n\n this.lineStyle = style;\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n var unwatch = this.$watch('index', function (val) {\n _this.$watch('$parent.active', _this.updateStatus, { immediate: true });\n _this.$watch('$parent.processStatus', function () {\n var activeIndex = _this.$parent.active;\n _this.updateStatus(activeIndex);\n }, { immediate: true });\n unwatch();\n });\n }\n});\n// CONCATENATED MODULE: ./packages/steps/src/step.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_stepvue_type_script_lang_js_ = (stepvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/steps/src/step.vue\n\n\n\n\n\n/* normalize component */\n\nvar step_component = normalizeComponent(\n src_stepvue_type_script_lang_js_,\n stepvue_type_template_id_f414a87a_render,\n stepvue_type_template_id_f414a87a_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var step_api; }\nstep_component.options.__file = \"packages/steps/src/step.vue\"\n/* harmony default export */ var step = (step_component.exports);\n// CONCATENATED MODULE: ./packages/step/index.js\n\n\n/* istanbul ignore next */\nstep.install = function (Vue) {\n Vue.component(step.name, step);\n};\n\n/* harmony default export */ var packages_step = (step);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/carousel/src/main.vue?vue&type=template&id=5d5d1482&\nvar mainvue_type_template_id_5d5d1482_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: _vm.carouselClasses,\n on: {\n mouseenter: function($event) {\n $event.stopPropagation()\n return _vm.handleMouseEnter($event)\n },\n mouseleave: function($event) {\n $event.stopPropagation()\n return _vm.handleMouseLeave($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"el-carousel__container\",\n style: { height: _vm.height }\n },\n [\n _vm.arrowDisplay\n ? _c(\"transition\", { attrs: { name: \"carousel-arrow-left\" } }, [\n _c(\n \"button\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n (_vm.arrow === \"always\" || _vm.hover) &&\n (_vm.loop || _vm.activeIndex > 0),\n expression:\n \"(arrow === 'always' || hover) && (loop || activeIndex > 0)\"\n }\n ],\n staticClass: \"el-carousel__arrow el-carousel__arrow--left\",\n attrs: { type: \"button\" },\n on: {\n mouseenter: function($event) {\n _vm.handleButtonEnter(\"left\")\n },\n mouseleave: _vm.handleButtonLeave,\n click: function($event) {\n $event.stopPropagation()\n _vm.throttledArrowClick(_vm.activeIndex - 1)\n }\n }\n },\n [_c(\"i\", { staticClass: \"el-icon-arrow-left\" })]\n )\n ])\n : _vm._e(),\n _vm.arrowDisplay\n ? _c(\"transition\", { attrs: { name: \"carousel-arrow-right\" } }, [\n _c(\n \"button\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n (_vm.arrow === \"always\" || _vm.hover) &&\n (_vm.loop || _vm.activeIndex < _vm.items.length - 1),\n expression:\n \"(arrow === 'always' || hover) && (loop || activeIndex < items.length - 1)\"\n }\n ],\n staticClass: \"el-carousel__arrow el-carousel__arrow--right\",\n attrs: { type: \"button\" },\n on: {\n mouseenter: function($event) {\n _vm.handleButtonEnter(\"right\")\n },\n mouseleave: _vm.handleButtonLeave,\n click: function($event) {\n $event.stopPropagation()\n _vm.throttledArrowClick(_vm.activeIndex + 1)\n }\n }\n },\n [_c(\"i\", { staticClass: \"el-icon-arrow-right\" })]\n )\n ])\n : _vm._e(),\n _vm._t(\"default\")\n ],\n 2\n ),\n _vm.indicatorPosition !== \"none\"\n ? _c(\n \"ul\",\n { class: _vm.indicatorsClasses },\n _vm._l(_vm.items, function(item, index) {\n return _c(\n \"li\",\n {\n key: index,\n class: [\n \"el-carousel__indicator\",\n \"el-carousel__indicator--\" + _vm.direction,\n { \"is-active\": index === _vm.activeIndex }\n ],\n on: {\n mouseenter: function($event) {\n _vm.throttledIndicatorHover(index)\n },\n click: function($event) {\n $event.stopPropagation()\n _vm.handleIndicatorClick(index)\n }\n }\n },\n [\n _c(\"button\", { staticClass: \"el-carousel__button\" }, [\n _vm.hasLabel\n ? _c(\"span\", [_vm._v(_vm._s(item.label))])\n : _vm._e()\n ])\n ]\n )\n }),\n 0\n )\n : _vm._e()\n ]\n )\n}\nvar mainvue_type_template_id_5d5d1482_staticRenderFns = []\nmainvue_type_template_id_5d5d1482_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/carousel/src/main.vue?vue&type=template&id=5d5d1482&\n\n// EXTERNAL MODULE: external \"throttle-debounce/throttle\"\nvar throttle_ = __nested_webpack_require_8926__(25);\nvar throttle_default = /*#__PURE__*/__nested_webpack_require_8926__.n(throttle_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/carousel/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var carousel_src_mainvue_type_script_lang_js_ = ({\n name: 'ElCarousel',\n\n props: {\n initialIndex: {\n type: Number,\n default: 0\n },\n height: String,\n trigger: {\n type: String,\n default: 'hover'\n },\n autoplay: {\n type: Boolean,\n default: true\n },\n interval: {\n type: Number,\n default: 3000\n },\n indicatorPosition: String,\n indicator: {\n type: Boolean,\n default: true\n },\n arrow: {\n type: String,\n default: 'hover'\n },\n type: String,\n loop: {\n type: Boolean,\n default: true\n },\n direction: {\n type: String,\n default: 'horizontal',\n validator: function validator(val) {\n return ['horizontal', 'vertical'].indexOf(val) !== -1;\n }\n }\n },\n\n data: function data() {\n return {\n items: [],\n activeIndex: -1,\n containerWidth: 0,\n timer: null,\n hover: false\n };\n },\n\n\n computed: {\n arrowDisplay: function arrowDisplay() {\n return this.arrow !== 'never' && this.direction !== 'vertical';\n },\n hasLabel: function hasLabel() {\n return this.items.some(function (item) {\n return item.label.toString().length > 0;\n });\n },\n carouselClasses: function carouselClasses() {\n var classes = ['el-carousel', 'el-carousel--' + this.direction];\n if (this.type === 'card') {\n classes.push('el-carousel--card');\n }\n return classes;\n },\n indicatorsClasses: function indicatorsClasses() {\n var classes = ['el-carousel__indicators', 'el-carousel__indicators--' + this.direction];\n if (this.hasLabel) {\n classes.push('el-carousel__indicators--labels');\n }\n if (this.indicatorPosition === 'outside' || this.type === 'card') {\n classes.push('el-carousel__indicators--outside');\n }\n return classes;\n }\n },\n\n watch: {\n items: function items(val) {\n if (val.length > 0) this.setActiveItem(this.initialIndex);\n },\n activeIndex: function activeIndex(val, oldVal) {\n this.resetItemPosition(oldVal);\n if (oldVal > -1) {\n this.$emit('change', val, oldVal);\n }\n },\n autoplay: function autoplay(val) {\n val ? this.startTimer() : this.pauseTimer();\n },\n loop: function loop() {\n this.setActiveItem(this.activeIndex);\n },\n interval: function interval() {\n this.pauseTimer();\n this.startTimer();\n }\n },\n\n methods: {\n handleMouseEnter: function handleMouseEnter() {\n this.hover = true;\n this.pauseTimer();\n },\n handleMouseLeave: function handleMouseLeave() {\n this.hover = false;\n this.startTimer();\n },\n itemInStage: function itemInStage(item, index) {\n var length = this.items.length;\n if (index === length - 1 && item.inStage && this.items[0].active || item.inStage && this.items[index + 1] && this.items[index + 1].active) {\n return 'left';\n } else if (index === 0 && item.inStage && this.items[length - 1].active || item.inStage && this.items[index - 1] && this.items[index - 1].active) {\n return 'right';\n }\n return false;\n },\n handleButtonEnter: function handleButtonEnter(arrow) {\n var _this = this;\n\n if (this.direction === 'vertical') return;\n this.items.forEach(function (item, index) {\n if (arrow === _this.itemInStage(item, index)) {\n item.hover = true;\n }\n });\n },\n handleButtonLeave: function handleButtonLeave() {\n if (this.direction === 'vertical') return;\n this.items.forEach(function (item) {\n item.hover = false;\n });\n },\n updateItems: function updateItems() {\n this.items = this.$children.filter(function (child) {\n return child.$options.name === 'ElCarouselItem';\n });\n },\n resetItemPosition: function resetItemPosition(oldIndex) {\n var _this2 = this;\n\n this.items.forEach(function (item, index) {\n item.translateItem(index, _this2.activeIndex, oldIndex);\n });\n },\n playSlides: function playSlides() {\n if (this.activeIndex < this.items.length - 1) {\n this.activeIndex++;\n } else if (this.loop) {\n this.activeIndex = 0;\n }\n },\n pauseTimer: function pauseTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n },\n startTimer: function startTimer() {\n if (this.interval <= 0 || !this.autoplay || this.timer) return;\n this.timer = setInterval(this.playSlides, this.interval);\n },\n resetTimer: function resetTimer() {\n this.pauseTimer();\n this.startTimer();\n },\n setActiveItem: function setActiveItem(index) {\n if (typeof index === 'string') {\n var filteredItems = this.items.filter(function (item) {\n return item.name === index;\n });\n if (filteredItems.length > 0) {\n index = this.items.indexOf(filteredItems[0]);\n }\n }\n index = Number(index);\n if (isNaN(index) || index !== Math.floor(index)) {\n console.warn('[Element Warn][Carousel]index must be an integer.');\n return;\n }\n var length = this.items.length;\n var oldIndex = this.activeIndex;\n if (index < 0) {\n this.activeIndex = this.loop ? length - 1 : 0;\n } else if (index >= length) {\n this.activeIndex = this.loop ? 0 : length - 1;\n } else {\n this.activeIndex = index;\n }\n if (oldIndex === this.activeIndex) {\n this.resetItemPosition(oldIndex);\n }\n this.resetTimer();\n },\n prev: function prev() {\n this.setActiveItem(this.activeIndex - 1);\n },\n next: function next() {\n this.setActiveItem(this.activeIndex + 1);\n },\n handleIndicatorClick: function handleIndicatorClick(index) {\n this.activeIndex = index;\n },\n handleIndicatorHover: function handleIndicatorHover(index) {\n if (this.trigger === 'hover' && index !== this.activeIndex) {\n this.activeIndex = index;\n }\n }\n },\n\n created: function created() {\n var _this3 = this;\n\n this.throttledArrowClick = throttle_default()(300, true, function (index) {\n _this3.setActiveItem(index);\n });\n this.throttledIndicatorHover = throttle_default()(300, function (index) {\n _this3.handleIndicatorHover(index);\n });\n },\n mounted: function mounted() {\n var _this4 = this;\n\n this.updateItems();\n this.$nextTick(function () {\n Object(resize_event_[\"addResizeListener\"])(_this4.$el, _this4.resetItemPosition);\n if (_this4.initialIndex < _this4.items.length && _this4.initialIndex >= 0) {\n _this4.activeIndex = _this4.initialIndex;\n }\n _this4.startTimer();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$el) Object(resize_event_[\"removeResizeListener\"])(this.$el, this.resetItemPosition);\n this.pauseTimer();\n }\n});\n// CONCATENATED MODULE: ./packages/carousel/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_carousel_src_mainvue_type_script_lang_js_ = (carousel_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/carousel/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar carousel_src_main_component = normalizeComponent(\n packages_carousel_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_5d5d1482_render,\n mainvue_type_template_id_5d5d1482_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var carousel_src_main_api; }\ncarousel_src_main_component.options.__file = \"packages/carousel/src/main.vue\"\n/* harmony default export */ var carousel_src_main = (carousel_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/carousel/index.js\n\n\n/* istanbul ignore next */\ncarousel_src_main.install = function (Vue) {\n Vue.component(carousel_src_main.name, carousel_src_main);\n};\n\n/* harmony default export */ var carousel = (carousel_src_main);\n// CONCATENATED MODULE: ./packages/scrollbar/src/util.js\nvar BAR_MAP = {\n vertical: {\n offset: 'offsetHeight',\n scroll: 'scrollTop',\n scrollSize: 'scrollHeight',\n size: 'height',\n key: 'vertical',\n axis: 'Y',\n client: 'clientY',\n direction: 'top'\n },\n horizontal: {\n offset: 'offsetWidth',\n scroll: 'scrollLeft',\n scrollSize: 'scrollWidth',\n size: 'width',\n key: 'horizontal',\n axis: 'X',\n client: 'clientX',\n direction: 'left'\n }\n};\n\nfunction renderThumbStyle(_ref) {\n var move = _ref.move,\n size = _ref.size,\n bar = _ref.bar;\n\n var style = {};\n var translate = 'translate' + bar.axis + '(' + move + '%)';\n\n style[bar.size] = size;\n style.transform = translate;\n style.msTransform = translate;\n style.webkitTransform = translate;\n\n return style;\n};\n// CONCATENATED MODULE: ./packages/scrollbar/src/bar.js\n\n\n\n/* istanbul ignore next */\n/* harmony default export */ var src_bar = ({\n name: 'Bar',\n\n props: {\n vertical: Boolean,\n size: String,\n move: Number\n },\n\n computed: {\n bar: function bar() {\n return BAR_MAP[this.vertical ? 'vertical' : 'horizontal'];\n },\n wrap: function wrap() {\n return this.$parent.wrap;\n }\n },\n\n render: function render(h) {\n var size = this.size,\n move = this.move,\n bar = this.bar;\n\n\n return h(\n 'div',\n {\n 'class': ['el-scrollbar__bar', 'is-' + bar.key],\n on: {\n 'mousedown': this.clickTrackHandler\n }\n },\n [h('div', {\n ref: 'thumb',\n 'class': 'el-scrollbar__thumb',\n on: {\n 'mousedown': this.clickThumbHandler\n },\n\n style: renderThumbStyle({ size: size, move: move, bar: bar }) })]\n );\n },\n\n\n methods: {\n clickThumbHandler: function clickThumbHandler(e) {\n // prevent click event of right button\n if (e.ctrlKey || e.button === 2) {\n return;\n }\n this.startDrag(e);\n this[this.bar.axis] = e.currentTarget[this.bar.offset] - (e[this.bar.client] - e.currentTarget.getBoundingClientRect()[this.bar.direction]);\n },\n clickTrackHandler: function clickTrackHandler(e) {\n var offset = Math.abs(e.target.getBoundingClientRect()[this.bar.direction] - e[this.bar.client]);\n var thumbHalf = this.$refs.thumb[this.bar.offset] / 2;\n var thumbPositionPercentage = (offset - thumbHalf) * 100 / this.$el[this.bar.offset];\n\n this.wrap[this.bar.scroll] = thumbPositionPercentage * this.wrap[this.bar.scrollSize] / 100;\n },\n startDrag: function startDrag(e) {\n e.stopImmediatePropagation();\n this.cursorDown = true;\n\n Object(dom_[\"on\"])(document, 'mousemove', this.mouseMoveDocumentHandler);\n Object(dom_[\"on\"])(document, 'mouseup', this.mouseUpDocumentHandler);\n document.onselectstart = function () {\n return false;\n };\n },\n mouseMoveDocumentHandler: function mouseMoveDocumentHandler(e) {\n if (this.cursorDown === false) return;\n var prevPage = this[this.bar.axis];\n\n if (!prevPage) return;\n\n var offset = (this.$el.getBoundingClientRect()[this.bar.direction] - e[this.bar.client]) * -1;\n var thumbClickPosition = this.$refs.thumb[this.bar.offset] - prevPage;\n var thumbPositionPercentage = (offset - thumbClickPosition) * 100 / this.$el[this.bar.offset];\n\n this.wrap[this.bar.scroll] = thumbPositionPercentage * this.wrap[this.bar.scrollSize] / 100;\n },\n mouseUpDocumentHandler: function mouseUpDocumentHandler(e) {\n this.cursorDown = false;\n this[this.bar.axis] = 0;\n Object(dom_[\"off\"])(document, 'mousemove', this.mouseMoveDocumentHandler);\n document.onselectstart = null;\n }\n },\n\n destroyed: function destroyed() {\n Object(dom_[\"off\"])(document, 'mouseup', this.mouseUpDocumentHandler);\n }\n});\n// CONCATENATED MODULE: ./packages/scrollbar/src/main.js\n// reference https://github.com/noeldelgado/gemini-scrollbar/blob/master/index.js\n\n\n\n\n\n\n/* istanbul ignore next */\n/* harmony default export */ var scrollbar_src_main = ({\n name: 'ElScrollbar',\n\n components: { Bar: src_bar },\n\n props: {\n native: Boolean,\n wrapStyle: {},\n wrapClass: {},\n viewClass: {},\n viewStyle: {},\n noresize: Boolean, // 如果 container 尺寸不会发生变化,最好设置它可以优化性能\n tag: {\n type: String,\n default: 'div'\n }\n },\n\n data: function data() {\n return {\n sizeWidth: '0',\n sizeHeight: '0',\n moveX: 0,\n moveY: 0\n };\n },\n\n\n computed: {\n wrap: function wrap() {\n return this.$refs.wrap;\n }\n },\n\n render: function render(h) {\n var gutter = scrollbar_width_default()();\n var style = this.wrapStyle;\n\n if (gutter) {\n var gutterWith = '-' + gutter + 'px';\n var gutterStyle = 'margin-bottom: ' + gutterWith + '; margin-right: ' + gutterWith + ';';\n\n if (Array.isArray(this.wrapStyle)) {\n style = Object(util_[\"toObject\"])(this.wrapStyle);\n style.marginRight = style.marginBottom = gutterWith;\n } else if (typeof this.wrapStyle === 'string') {\n style += gutterStyle;\n } else {\n style = gutterStyle;\n }\n }\n var view = h(this.tag, {\n class: ['el-scrollbar__view', this.viewClass],\n style: this.viewStyle,\n ref: 'resize'\n }, this.$slots.default);\n var wrap = h(\n 'div',\n {\n ref: 'wrap',\n style: style,\n on: {\n 'scroll': this.handleScroll\n },\n\n 'class': [this.wrapClass, 'el-scrollbar__wrap', gutter ? '' : 'el-scrollbar__wrap--hidden-default'] },\n [[view]]\n );\n var nodes = void 0;\n\n if (!this.native) {\n nodes = [wrap, h(src_bar, {\n attrs: {\n move: this.moveX,\n size: this.sizeWidth }\n }), h(src_bar, {\n attrs: {\n vertical: true,\n move: this.moveY,\n size: this.sizeHeight }\n })];\n } else {\n nodes = [h(\n 'div',\n {\n ref: 'wrap',\n 'class': [this.wrapClass, 'el-scrollbar__wrap'],\n style: style },\n [[view]]\n )];\n }\n return h('div', { class: 'el-scrollbar' }, nodes);\n },\n\n\n methods: {\n handleScroll: function handleScroll() {\n var wrap = this.wrap;\n\n this.moveY = wrap.scrollTop * 100 / wrap.clientHeight;\n this.moveX = wrap.scrollLeft * 100 / wrap.clientWidth;\n },\n update: function update() {\n var heightPercentage = void 0,\n widthPercentage = void 0;\n var wrap = this.wrap;\n if (!wrap) return;\n\n heightPercentage = wrap.clientHeight * 100 / wrap.scrollHeight;\n widthPercentage = wrap.clientWidth * 100 / wrap.scrollWidth;\n\n this.sizeHeight = heightPercentage < 100 ? heightPercentage + '%' : '';\n this.sizeWidth = widthPercentage < 100 ? widthPercentage + '%' : '';\n }\n },\n\n mounted: function mounted() {\n if (this.native) return;\n this.$nextTick(this.update);\n !this.noresize && Object(resize_event_[\"addResizeListener\"])(this.$refs.resize, this.update);\n },\n beforeDestroy: function beforeDestroy() {\n if (this.native) return;\n !this.noresize && Object(resize_event_[\"removeResizeListener\"])(this.$refs.resize, this.update);\n }\n});\n// CONCATENATED MODULE: ./packages/scrollbar/index.js\n\n\n/* istanbul ignore next */\nscrollbar_src_main.install = function (Vue) {\n Vue.component(scrollbar_src_main.name, scrollbar_src_main);\n};\n\n/* harmony default export */ var scrollbar = (scrollbar_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/carousel/src/item.vue?vue&type=template&id=1801ae19&\nvar itemvue_type_template_id_1801ae19_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.ready,\n expression: \"ready\"\n }\n ],\n staticClass: \"el-carousel__item\",\n class: {\n \"is-active\": _vm.active,\n \"el-carousel__item--card\": _vm.$parent.type === \"card\",\n \"is-in-stage\": _vm.inStage,\n \"is-hover\": _vm.hover,\n \"is-animating\": _vm.animating\n },\n style: _vm.itemStyle,\n on: { click: _vm.handleItemClick }\n },\n [\n _vm.$parent.type === \"card\"\n ? _c(\"div\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.active,\n expression: \"!active\"\n }\n ],\n staticClass: \"el-carousel__mask\"\n })\n : _vm._e(),\n _vm._t(\"default\")\n ],\n 2\n )\n}\nvar itemvue_type_template_id_1801ae19_staticRenderFns = []\nitemvue_type_template_id_1801ae19_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/carousel/src/item.vue?vue&type=template&id=1801ae19&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/carousel/src/item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\nvar CARD_SCALE = 0.83;\n/* harmony default export */ var itemvue_type_script_lang_js_ = ({\n name: 'ElCarouselItem',\n\n props: {\n name: String,\n label: {\n type: [String, Number],\n default: ''\n }\n },\n\n data: function data() {\n return {\n hover: false,\n translate: 0,\n scale: 1,\n active: false,\n ready: false,\n inStage: false,\n animating: false\n };\n },\n\n\n methods: {\n processIndex: function processIndex(index, activeIndex, length) {\n if (activeIndex === 0 && index === length - 1) {\n return -1;\n } else if (activeIndex === length - 1 && index === 0) {\n return length;\n } else if (index < activeIndex - 1 && activeIndex - index >= length / 2) {\n return length + 1;\n } else if (index > activeIndex + 1 && index - activeIndex >= length / 2) {\n return -2;\n }\n return index;\n },\n calcCardTranslate: function calcCardTranslate(index, activeIndex) {\n var parentWidth = this.$parent.$el.offsetWidth;\n if (this.inStage) {\n return parentWidth * ((2 - CARD_SCALE) * (index - activeIndex) + 1) / 4;\n } else if (index < activeIndex) {\n return -(1 + CARD_SCALE) * parentWidth / 4;\n } else {\n return (3 + CARD_SCALE) * parentWidth / 4;\n }\n },\n calcTranslate: function calcTranslate(index, activeIndex, isVertical) {\n var distance = this.$parent.$el[isVertical ? 'offsetHeight' : 'offsetWidth'];\n return distance * (index - activeIndex);\n },\n translateItem: function translateItem(index, activeIndex, oldIndex) {\n var parentType = this.$parent.type;\n var parentDirection = this.parentDirection;\n var length = this.$parent.items.length;\n if (parentType !== 'card' && oldIndex !== undefined) {\n this.animating = index === activeIndex || index === oldIndex;\n }\n if (index !== activeIndex && length > 2 && this.$parent.loop) {\n index = this.processIndex(index, activeIndex, length);\n }\n if (parentType === 'card') {\n if (parentDirection === 'vertical') {\n console.warn('[Element Warn][Carousel]vertical direction is not supported in card mode');\n }\n this.inStage = Math.round(Math.abs(index - activeIndex)) <= 1;\n this.active = index === activeIndex;\n this.translate = this.calcCardTranslate(index, activeIndex);\n this.scale = this.active ? 1 : CARD_SCALE;\n } else {\n this.active = index === activeIndex;\n var isVertical = parentDirection === 'vertical';\n this.translate = this.calcTranslate(index, activeIndex, isVertical);\n this.scale = 1;\n }\n this.ready = true;\n },\n handleItemClick: function handleItemClick() {\n var parent = this.$parent;\n if (parent && parent.type === 'card') {\n var index = parent.items.indexOf(this);\n parent.setActiveItem(index);\n }\n }\n },\n\n computed: {\n parentDirection: function parentDirection() {\n return this.$parent.direction;\n },\n itemStyle: function itemStyle() {\n var translateType = this.parentDirection === 'vertical' ? 'translateY' : 'translateX';\n var value = translateType + '(' + this.translate + 'px) scale(' + this.scale + ')';\n var style = {\n transform: value\n };\n return Object(util_[\"autoprefixer\"])(style);\n }\n },\n\n created: function created() {\n this.$parent && this.$parent.updateItems();\n },\n destroyed: function destroyed() {\n this.$parent && this.$parent.updateItems();\n }\n});\n// CONCATENATED MODULE: ./packages/carousel/src/item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_itemvue_type_script_lang_js_ = (itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/carousel/src/item.vue\n\n\n\n\n\n/* normalize component */\n\nvar item_component = normalizeComponent(\n src_itemvue_type_script_lang_js_,\n itemvue_type_template_id_1801ae19_render,\n itemvue_type_template_id_1801ae19_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var item_api; }\nitem_component.options.__file = \"packages/carousel/src/item.vue\"\n/* harmony default export */ var src_item = (item_component.exports);\n// CONCATENATED MODULE: ./packages/carousel-item/index.js\n\n\n/* istanbul ignore next */\nsrc_item.install = function (Vue) {\n Vue.component(src_item.name, src_item);\n};\n\n/* harmony default export */ var carousel_item = (src_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/collapse/src/collapse.vue?vue&type=template&id=461d57f4&\nvar collapsevue_type_template_id_461d57f4_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-collapse\",\n attrs: { role: \"tablist\", \"aria-multiselectable\": \"true\" }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar collapsevue_type_template_id_461d57f4_staticRenderFns = []\ncollapsevue_type_template_id_461d57f4_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/collapse/src/collapse.vue?vue&type=template&id=461d57f4&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/collapse/src/collapse.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n\n/* harmony default export */ var collapsevue_type_script_lang_js_ = ({\n name: 'ElCollapse',\n\n componentName: 'ElCollapse',\n\n props: {\n accordion: Boolean,\n value: {\n type: [Array, String, Number],\n default: function _default() {\n return [];\n }\n }\n },\n\n data: function data() {\n return {\n activeNames: [].concat(this.value)\n };\n },\n provide: function provide() {\n return {\n collapse: this\n };\n },\n\n\n watch: {\n value: function value(_value) {\n this.activeNames = [].concat(_value);\n }\n },\n\n methods: {\n setActiveNames: function setActiveNames(activeNames) {\n activeNames = [].concat(activeNames);\n var value = this.accordion ? activeNames[0] : activeNames;\n this.activeNames = activeNames;\n this.$emit('input', value);\n this.$emit('change', value);\n },\n handleItemClick: function handleItemClick(item) {\n if (this.accordion) {\n this.setActiveNames((this.activeNames[0] || this.activeNames[0] === 0) && this.activeNames[0] === item.name ? '' : item.name);\n } else {\n var activeNames = this.activeNames.slice(0);\n var index = activeNames.indexOf(item.name);\n\n if (index > -1) {\n activeNames.splice(index, 1);\n } else {\n activeNames.push(item.name);\n }\n this.setActiveNames(activeNames);\n }\n }\n },\n\n created: function created() {\n this.$on('item-click', this.handleItemClick);\n }\n});\n// CONCATENATED MODULE: ./packages/collapse/src/collapse.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_collapsevue_type_script_lang_js_ = (collapsevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/collapse/src/collapse.vue\n\n\n\n\n\n/* normalize component */\n\nvar collapse_component = normalizeComponent(\n src_collapsevue_type_script_lang_js_,\n collapsevue_type_template_id_461d57f4_render,\n collapsevue_type_template_id_461d57f4_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var collapse_api; }\ncollapse_component.options.__file = \"packages/collapse/src/collapse.vue\"\n/* harmony default export */ var collapse = (collapse_component.exports);\n// CONCATENATED MODULE: ./packages/collapse/index.js\n\n\n/* istanbul ignore next */\ncollapse.install = function (Vue) {\n Vue.component(collapse.name, collapse);\n};\n\n/* harmony default export */ var packages_collapse = (collapse);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/collapse/src/collapse-item.vue?vue&type=template&id=2d05faac&\nvar collapse_itemvue_type_template_id_2d05faac_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-collapse-item\",\n class: { \"is-active\": _vm.isActive, \"is-disabled\": _vm.disabled }\n },\n [\n _c(\n \"div\",\n {\n attrs: {\n role: \"tab\",\n \"aria-expanded\": _vm.isActive,\n \"aria-controls\": \"el-collapse-content-\" + _vm.id,\n \"aria-describedby\": \"el-collapse-content-\" + _vm.id\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"el-collapse-item__header\",\n class: {\n focusing: _vm.focusing,\n \"is-active\": _vm.isActive\n },\n attrs: {\n role: \"button\",\n id: \"el-collapse-head-\" + _vm.id,\n tabindex: _vm.disabled ? undefined : 0\n },\n on: {\n click: _vm.handleHeaderClick,\n keyup: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"space\", 32, $event.key, [\n \" \",\n \"Spacebar\"\n ]) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n $event.stopPropagation()\n return _vm.handleEnterClick($event)\n },\n focus: _vm.handleFocus,\n blur: function($event) {\n _vm.focusing = false\n }\n }\n },\n [\n _vm._t(\"title\", [_vm._v(_vm._s(_vm.title))]),\n _c(\"i\", {\n staticClass: \"el-collapse-item__arrow el-icon-arrow-right\",\n class: { \"is-active\": _vm.isActive }\n })\n ],\n 2\n )\n ]\n ),\n _c(\"el-collapse-transition\", [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.isActive,\n expression: \"isActive\"\n }\n ],\n staticClass: \"el-collapse-item__wrap\",\n attrs: {\n role: \"tabpanel\",\n \"aria-hidden\": !_vm.isActive,\n \"aria-labelledby\": \"el-collapse-head-\" + _vm.id,\n id: \"el-collapse-content-\" + _vm.id\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-collapse-item__content\" },\n [_vm._t(\"default\")],\n 2\n )\n ]\n )\n ])\n ],\n 1\n )\n}\nvar collapse_itemvue_type_template_id_2d05faac_staticRenderFns = []\ncollapse_itemvue_type_template_id_2d05faac_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/collapse/src/collapse-item.vue?vue&type=template&id=2d05faac&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/collapse/src/collapse-item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var collapse_itemvue_type_script_lang_js_ = ({\n name: 'ElCollapseItem',\n\n componentName: 'ElCollapseItem',\n\n mixins: [emitter_default.a],\n\n components: { ElCollapseTransition: collapse_transition_default.a },\n\n data: function data() {\n return {\n contentWrapStyle: {\n height: 'auto',\n display: 'block'\n },\n contentHeight: 0,\n focusing: false,\n isClick: false,\n id: Object(util_[\"generateId\"])()\n };\n },\n\n\n inject: ['collapse'],\n\n props: {\n title: String,\n name: {\n type: [String, Number],\n default: function _default() {\n return this._uid;\n }\n },\n disabled: Boolean\n },\n\n computed: {\n isActive: function isActive() {\n return this.collapse.activeNames.indexOf(this.name) > -1;\n }\n },\n\n methods: {\n handleFocus: function handleFocus() {\n var _this = this;\n\n setTimeout(function () {\n if (!_this.isClick) {\n _this.focusing = true;\n } else {\n _this.isClick = false;\n }\n }, 50);\n },\n handleHeaderClick: function handleHeaderClick() {\n if (this.disabled) return;\n this.dispatch('ElCollapse', 'item-click', this);\n this.focusing = false;\n this.isClick = true;\n },\n handleEnterClick: function handleEnterClick() {\n this.dispatch('ElCollapse', 'item-click', this);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/collapse/src/collapse-item.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_collapse_itemvue_type_script_lang_js_ = (collapse_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/collapse/src/collapse-item.vue\n\n\n\n\n\n/* normalize component */\n\nvar collapse_item_component = normalizeComponent(\n src_collapse_itemvue_type_script_lang_js_,\n collapse_itemvue_type_template_id_2d05faac_render,\n collapse_itemvue_type_template_id_2d05faac_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var collapse_item_api; }\ncollapse_item_component.options.__file = \"packages/collapse/src/collapse-item.vue\"\n/* harmony default export */ var collapse_item = (collapse_item_component.exports);\n// CONCATENATED MODULE: ./packages/collapse-item/index.js\n\n\n/* istanbul ignore next */\ncollapse_item.install = function (Vue) {\n Vue.component(collapse_item.name, collapse_item);\n};\n\n/* harmony default export */ var packages_collapse_item = (collapse_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader/src/cascader.vue?vue&type=template&id=032537a6&\nvar cascadervue_type_template_id_032537a6_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: function() {\n return _vm.toggleDropDownVisible(false)\n },\n expression: \"() => toggleDropDownVisible(false)\"\n }\n ],\n ref: \"reference\",\n class: [\n \"el-cascader\",\n _vm.realSize && \"el-cascader--\" + _vm.realSize,\n { \"is-disabled\": _vm.isDisabled }\n ],\n on: {\n mouseenter: function($event) {\n _vm.inputHover = true\n },\n mouseleave: function($event) {\n _vm.inputHover = false\n },\n click: function() {\n return _vm.toggleDropDownVisible(_vm.readonly ? undefined : true)\n },\n keydown: _vm.handleKeyDown\n }\n },\n [\n _c(\n \"el-input\",\n {\n ref: \"input\",\n class: { \"is-focus\": _vm.dropDownVisible },\n attrs: {\n size: _vm.realSize,\n placeholder: _vm.placeholder,\n readonly: _vm.readonly,\n disabled: _vm.isDisabled,\n \"validate-event\": false\n },\n on: {\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n input: _vm.handleInput\n },\n model: {\n value: _vm.multiple ? _vm.presentText : _vm.inputValue,\n callback: function($$v) {\n _vm.multiple ? _vm.presentText : (_vm.inputValue = $$v)\n },\n expression: \"multiple ? presentText : inputValue\"\n }\n },\n [\n _c(\"template\", { slot: \"suffix\" }, [\n _vm.clearBtnVisible\n ? _c(\"i\", {\n key: \"clear\",\n staticClass: \"el-input__icon el-icon-circle-close\",\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.handleClear($event)\n }\n }\n })\n : _c(\"i\", {\n key: \"arrow-down\",\n class: [\n \"el-input__icon\",\n \"el-icon-arrow-down\",\n _vm.dropDownVisible && \"is-reverse\"\n ],\n on: {\n click: function($event) {\n $event.stopPropagation()\n _vm.toggleDropDownVisible()\n }\n }\n })\n ])\n ],\n 2\n ),\n _vm.multiple\n ? _c(\n \"div\",\n { staticClass: \"el-cascader__tags\" },\n [\n _vm._l(_vm.presentTags, function(tag) {\n return _c(\n \"el-tag\",\n {\n key: tag.key,\n attrs: {\n type: \"info\",\n size: _vm.tagSize,\n hit: tag.hitState,\n closable: tag.closable,\n \"disable-transitions\": \"\"\n },\n on: {\n close: function($event) {\n _vm.deleteTag(tag)\n }\n }\n },\n [_c(\"span\", [_vm._v(_vm._s(tag.text))])]\n )\n }),\n _vm.filterable && !_vm.isDisabled\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model.trim\",\n value: _vm.inputValue,\n expression: \"inputValue\",\n modifiers: { trim: true }\n }\n ],\n staticClass: \"el-cascader__search-input\",\n attrs: {\n type: \"text\",\n placeholder: _vm.presentTags.length ? \"\" : _vm.placeholder\n },\n domProps: { value: _vm.inputValue },\n on: {\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.inputValue = $event.target.value.trim()\n },\n function(e) {\n return _vm.handleInput(_vm.inputValue, e)\n }\n ],\n click: function($event) {\n $event.stopPropagation()\n _vm.toggleDropDownVisible(true)\n },\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"delete\",\n [8, 46],\n $event.key,\n [\"Backspace\", \"Delete\", \"Del\"]\n )\n ) {\n return null\n }\n return _vm.handleDelete($event)\n },\n blur: function($event) {\n _vm.$forceUpdate()\n }\n }\n })\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: { \"after-leave\": _vm.handleDropdownLeave }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.dropDownVisible,\n expression: \"dropDownVisible\"\n }\n ],\n ref: \"popper\",\n class: [\"el-popper\", \"el-cascader__dropdown\", _vm.popperClass]\n },\n [\n _c(\"el-cascader-panel\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.filtering,\n expression: \"!filtering\"\n }\n ],\n ref: \"panel\",\n attrs: {\n options: _vm.options,\n props: _vm.config,\n border: false,\n \"render-label\": _vm.$scopedSlots.default\n },\n on: {\n \"expand-change\": _vm.handleExpandChange,\n close: function($event) {\n _vm.toggleDropDownVisible(false)\n }\n },\n model: {\n value: _vm.checkedValue,\n callback: function($$v) {\n _vm.checkedValue = $$v\n },\n expression: \"checkedValue\"\n }\n }),\n _vm.filterable\n ? _c(\n \"el-scrollbar\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.filtering,\n expression: \"filtering\"\n }\n ],\n ref: \"suggestionPanel\",\n staticClass: \"el-cascader__suggestion-panel\",\n attrs: {\n tag: \"ul\",\n \"view-class\": \"el-cascader__suggestion-list\"\n },\n nativeOn: {\n keydown: function($event) {\n return _vm.handleSuggestionKeyDown($event)\n }\n }\n },\n [\n _vm.suggestions.length\n ? _vm._l(_vm.suggestions, function(item, index) {\n return _c(\n \"li\",\n {\n key: item.uid,\n class: [\n \"el-cascader__suggestion-item\",\n item.checked && \"is-checked\"\n ],\n attrs: { tabindex: -1 },\n on: {\n click: function($event) {\n _vm.handleSuggestionClick(index)\n }\n }\n },\n [\n _c(\"span\", [_vm._v(_vm._s(item.text))]),\n item.checked\n ? _c(\"i\", { staticClass: \"el-icon-check\" })\n : _vm._e()\n ]\n )\n })\n : _vm._t(\"empty\", [\n _c(\n \"li\",\n { staticClass: \"el-cascader__empty-text\" },\n [_vm._v(_vm._s(_vm.t(\"el.cascader.noMatch\")))]\n )\n ])\n ],\n 2\n )\n : _vm._e()\n ],\n 1\n )\n ]\n )\n ],\n 1\n )\n}\nvar cascadervue_type_template_id_032537a6_staticRenderFns = []\ncascadervue_type_template_id_032537a6_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/cascader/src/cascader.vue?vue&type=template&id=032537a6&\n\n// EXTERNAL MODULE: external \"element-ui/lib/cascader-panel\"\nvar cascader_panel_ = __nested_webpack_require_8926__(43);\nvar cascader_panel_default = /*#__PURE__*/__nested_webpack_require_8926__.n(cascader_panel_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/aria-utils\"\nvar aria_utils_ = __nested_webpack_require_8926__(35);\nvar aria_utils_default = /*#__PURE__*/__nested_webpack_require_8926__.n(aria_utils_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader/src/cascader.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar KeyCode = aria_utils_default.a.keys;\n\nvar MigratingProps = {\n expandTrigger: {\n newProp: 'expandTrigger',\n type: String\n },\n changeOnSelect: {\n newProp: 'checkStrictly',\n type: Boolean\n },\n hoverThreshold: {\n newProp: 'hoverThreshold',\n type: Number\n }\n};\n\nvar PopperMixin = {\n props: {\n placement: {\n type: String,\n default: 'bottom-start'\n },\n appendToBody: vue_popper_default.a.props.appendToBody,\n visibleArrow: {\n type: Boolean,\n default: true\n },\n arrowOffset: vue_popper_default.a.props.arrowOffset,\n offset: vue_popper_default.a.props.offset,\n boundariesPadding: vue_popper_default.a.props.boundariesPadding,\n popperOptions: vue_popper_default.a.props.popperOptions,\n transformOrigin: vue_popper_default.a.props.transformOrigin\n },\n methods: vue_popper_default.a.methods,\n data: vue_popper_default.a.data,\n beforeDestroy: vue_popper_default.a.beforeDestroy\n};\n\nvar InputSizeMap = {\n medium: 36,\n small: 32,\n mini: 28\n};\n\n/* harmony default export */ var cascadervue_type_script_lang_js_ = ({\n name: 'ElCascader',\n\n directives: { Clickoutside: clickoutside_default.a },\n\n mixins: [PopperMixin, emitter_default.a, locale_default.a, migrating_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n components: {\n ElInput: input_default.a,\n ElTag: tag_default.a,\n ElScrollbar: scrollbar_default.a,\n ElCascaderPanel: cascader_panel_default.a\n },\n\n props: {\n value: {},\n options: Array,\n props: Object,\n size: String,\n placeholder: {\n type: String,\n default: function _default() {\n return Object(lib_locale_[\"t\"])('el.cascader.placeholder');\n }\n },\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n filterMethod: Function,\n separator: {\n type: String,\n default: ' / '\n },\n showAllLevels: {\n type: Boolean,\n default: true\n },\n collapseTags: Boolean,\n debounce: {\n type: Number,\n default: 300\n },\n beforeFilter: {\n type: Function,\n default: function _default() {\n return function () {};\n }\n },\n popperClass: String\n },\n\n data: function data() {\n return {\n dropDownVisible: false,\n checkedValue: this.value,\n inputHover: false,\n inputValue: null,\n presentText: null,\n presentTags: [],\n checkedNodes: [],\n filtering: false,\n suggestions: [],\n inputInitialHeight: 0,\n pressDeleteCount: 0\n };\n },\n\n\n computed: {\n realSize: function realSize() {\n var _elFormItemSize = (this.elFormItem || {}).elFormItemSize;\n return this.size || _elFormItemSize || (this.$ELEMENT || {}).size;\n },\n tagSize: function tagSize() {\n return ['small', 'mini'].indexOf(this.realSize) > -1 ? 'mini' : 'small';\n },\n isDisabled: function isDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n config: function config() {\n var config = this.props || {};\n var $attrs = this.$attrs;\n\n\n Object.keys(MigratingProps).forEach(function (oldProp) {\n var _MigratingProps$oldPr = MigratingProps[oldProp],\n newProp = _MigratingProps$oldPr.newProp,\n type = _MigratingProps$oldPr.type;\n\n var oldValue = $attrs[oldProp] || $attrs[Object(util_[\"kebabCase\"])(oldProp)];\n if (Object(shared_[\"isDef\"])(oldProp) && !Object(shared_[\"isDef\"])(config[newProp])) {\n if (type === Boolean && oldValue === '') {\n oldValue = true;\n }\n config[newProp] = oldValue;\n }\n });\n\n return config;\n },\n multiple: function multiple() {\n return this.config.multiple;\n },\n leafOnly: function leafOnly() {\n return !this.config.checkStrictly;\n },\n readonly: function readonly() {\n return !this.filterable || this.multiple;\n },\n clearBtnVisible: function clearBtnVisible() {\n if (!this.clearable || this.isDisabled || this.filtering || !this.inputHover) {\n return false;\n }\n\n return this.multiple ? !!this.checkedNodes.filter(function (node) {\n return !node.isDisabled;\n }).length : !!this.presentText;\n },\n panel: function panel() {\n return this.$refs.panel;\n }\n },\n\n watch: {\n disabled: function disabled() {\n this.computePresentContent();\n },\n value: function value(val) {\n if (!Object(util_[\"isEqual\"])(val, this.checkedValue)) {\n this.checkedValue = val;\n this.computePresentContent();\n }\n },\n checkedValue: function checkedValue(val) {\n var value = this.value,\n dropDownVisible = this.dropDownVisible;\n var _config = this.config,\n checkStrictly = _config.checkStrictly,\n multiple = _config.multiple;\n\n\n if (!Object(util_[\"isEqual\"])(val, value) || Object(types_[\"isUndefined\"])(value)) {\n this.computePresentContent();\n // hide dropdown when single mode\n if (!multiple && !checkStrictly && dropDownVisible) {\n this.toggleDropDownVisible(false);\n }\n\n this.$emit('input', val);\n this.$emit('change', val);\n this.dispatch('ElFormItem', 'el.form.change', [val]);\n }\n },\n\n options: {\n handler: function handler() {\n this.$nextTick(this.computePresentContent);\n },\n deep: true\n },\n presentText: function presentText(val) {\n this.inputValue = val;\n },\n presentTags: function presentTags(val, oldVal) {\n if (this.multiple && (val.length || oldVal.length)) {\n this.$nextTick(this.updateStyle);\n }\n },\n filtering: function filtering(val) {\n this.$nextTick(this.updatePopper);\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n var input = this.$refs.input;\n\n if (input && input.$el) {\n this.inputInitialHeight = input.$el.offsetHeight || InputSizeMap[this.realSize] || 40;\n }\n\n if (!this.isEmptyValue(this.value)) {\n this.computePresentContent();\n }\n\n this.filterHandler = debounce_default()(this.debounce, function () {\n var inputValue = _this.inputValue;\n\n\n if (!inputValue) {\n _this.filtering = false;\n return;\n }\n\n var before = _this.beforeFilter(inputValue);\n if (before && before.then) {\n before.then(_this.getSuggestions);\n } else if (before !== false) {\n _this.getSuggestions();\n } else {\n _this.filtering = false;\n }\n });\n\n Object(resize_event_[\"addResizeListener\"])(this.$el, this.updateStyle);\n },\n beforeDestroy: function beforeDestroy() {\n Object(resize_event_[\"removeResizeListener\"])(this.$el, this.updateStyle);\n },\n\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'expand-trigger': 'expand-trigger is removed, use `props.expandTrigger` instead.',\n 'change-on-select': 'change-on-select is removed, use `props.checkStrictly` instead.',\n 'hover-threshold': 'hover-threshold is removed, use `props.hoverThreshold` instead'\n },\n events: {\n 'active-item-change': 'active-item-change is renamed to expand-change'\n }\n };\n },\n toggleDropDownVisible: function toggleDropDownVisible(visible) {\n var _this2 = this;\n\n if (this.isDisabled) return;\n\n var dropDownVisible = this.dropDownVisible;\n var input = this.$refs.input;\n\n visible = Object(shared_[\"isDef\"])(visible) ? visible : !dropDownVisible;\n if (visible !== dropDownVisible) {\n this.dropDownVisible = visible;\n if (visible) {\n this.$nextTick(function () {\n _this2.updatePopper();\n _this2.panel.scrollIntoView();\n });\n }\n input.$refs.input.setAttribute('aria-expanded', visible);\n this.$emit('visible-change', visible);\n }\n },\n handleDropdownLeave: function handleDropdownLeave() {\n this.filtering = false;\n this.inputValue = this.presentText;\n this.doDestroy();\n },\n handleKeyDown: function handleKeyDown(event) {\n switch (event.keyCode) {\n case KeyCode.enter:\n this.toggleDropDownVisible();\n break;\n case KeyCode.down:\n this.toggleDropDownVisible(true);\n this.focusFirstNode();\n event.preventDefault();\n break;\n case KeyCode.esc:\n case KeyCode.tab:\n this.toggleDropDownVisible(false);\n break;\n }\n },\n handleFocus: function handleFocus(e) {\n this.$emit('focus', e);\n },\n handleBlur: function handleBlur(e) {\n this.$emit('blur', e);\n },\n handleInput: function handleInput(val, event) {\n !this.dropDownVisible && this.toggleDropDownVisible(true);\n\n if (event && event.isComposing) return;\n if (val) {\n this.filterHandler();\n } else {\n this.filtering = false;\n }\n },\n handleClear: function handleClear() {\n this.presentText = '';\n this.panel.clearCheckedNodes();\n },\n handleExpandChange: function handleExpandChange(value) {\n this.$nextTick(this.updatePopper.bind(this));\n this.$emit('expand-change', value);\n this.$emit('active-item-change', value); // Deprecated\n },\n focusFirstNode: function focusFirstNode() {\n var _this3 = this;\n\n this.$nextTick(function () {\n var filtering = _this3.filtering;\n var _$refs = _this3.$refs,\n popper = _$refs.popper,\n suggestionPanel = _$refs.suggestionPanel;\n\n var firstNode = null;\n\n if (filtering && suggestionPanel) {\n firstNode = suggestionPanel.$el.querySelector('.el-cascader__suggestion-item');\n } else {\n var firstMenu = popper.querySelector('.el-cascader-menu');\n firstNode = firstMenu.querySelector('.el-cascader-node[tabindex=\"-1\"]');\n }\n\n if (firstNode) {\n firstNode.focus();\n !filtering && firstNode.click();\n }\n });\n },\n computePresentContent: function computePresentContent() {\n var _this4 = this;\n\n // nextTick is required, because checked nodes may not change right now\n this.$nextTick(function () {\n if (_this4.config.multiple) {\n _this4.computePresentTags();\n _this4.presentText = _this4.presentTags.length ? ' ' : null;\n } else {\n _this4.computePresentText();\n }\n });\n },\n isEmptyValue: function isEmptyValue(val) {\n var multiple = this.multiple;\n var emitPath = this.panel.config.emitPath;\n\n if (multiple || emitPath) {\n return Object(util_[\"isEmpty\"])(val);\n }\n return false;\n },\n computePresentText: function computePresentText() {\n var checkedValue = this.checkedValue,\n config = this.config;\n\n if (!this.isEmptyValue(checkedValue)) {\n var node = this.panel.getNodeByValue(checkedValue);\n if (node && (config.checkStrictly || node.isLeaf)) {\n this.presentText = node.getText(this.showAllLevels, this.separator);\n return;\n }\n }\n this.presentText = null;\n },\n computePresentTags: function computePresentTags() {\n var isDisabled = this.isDisabled,\n leafOnly = this.leafOnly,\n showAllLevels = this.showAllLevels,\n separator = this.separator,\n collapseTags = this.collapseTags;\n\n var checkedNodes = this.getCheckedNodes(leafOnly);\n var tags = [];\n\n var genTag = function genTag(node) {\n return {\n node: node,\n key: node.uid,\n text: node.getText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled && !node.isDisabled\n };\n };\n\n if (checkedNodes.length) {\n var first = checkedNodes[0],\n rest = checkedNodes.slice(1);\n\n var restCount = rest.length;\n tags.push(genTag(first));\n\n if (restCount) {\n if (collapseTags) {\n tags.push({\n key: -1,\n text: '+ ' + restCount,\n closable: false\n });\n } else {\n rest.forEach(function (node) {\n return tags.push(genTag(node));\n });\n }\n }\n }\n\n this.checkedNodes = checkedNodes;\n this.presentTags = tags;\n },\n getSuggestions: function getSuggestions() {\n var _this5 = this;\n\n var filterMethod = this.filterMethod;\n\n\n if (!Object(types_[\"isFunction\"])(filterMethod)) {\n filterMethod = function filterMethod(node, keyword) {\n return node.text.includes(keyword);\n };\n }\n\n var suggestions = this.panel.getFlattedNodes(this.leafOnly).filter(function (node) {\n if (node.isDisabled) return false;\n node.text = node.getText(_this5.showAllLevels, _this5.separator) || '';\n return filterMethod(node, _this5.inputValue);\n });\n\n if (this.multiple) {\n this.presentTags.forEach(function (tag) {\n tag.hitState = false;\n });\n } else {\n suggestions.forEach(function (node) {\n node.checked = Object(util_[\"isEqual\"])(_this5.checkedValue, node.getValueByOption());\n });\n }\n\n this.filtering = true;\n this.suggestions = suggestions;\n this.$nextTick(this.updatePopper);\n },\n handleSuggestionKeyDown: function handleSuggestionKeyDown(event) {\n var keyCode = event.keyCode,\n target = event.target;\n\n switch (keyCode) {\n case KeyCode.enter:\n target.click();\n break;\n case KeyCode.up:\n var prev = target.previousElementSibling;\n prev && prev.focus();\n break;\n case KeyCode.down:\n var next = target.nextElementSibling;\n next && next.focus();\n break;\n case KeyCode.esc:\n case KeyCode.tab:\n this.toggleDropDownVisible(false);\n break;\n }\n },\n handleDelete: function handleDelete() {\n var inputValue = this.inputValue,\n pressDeleteCount = this.pressDeleteCount,\n presentTags = this.presentTags;\n\n var lastIndex = presentTags.length - 1;\n var lastTag = presentTags[lastIndex];\n this.pressDeleteCount = inputValue ? 0 : pressDeleteCount + 1;\n\n if (!lastTag) return;\n\n if (this.pressDeleteCount) {\n if (lastTag.hitState) {\n this.deleteTag(lastTag);\n } else {\n lastTag.hitState = true;\n }\n }\n },\n handleSuggestionClick: function handleSuggestionClick(index) {\n var multiple = this.multiple;\n\n var targetNode = this.suggestions[index];\n\n if (multiple) {\n var checked = targetNode.checked;\n\n targetNode.doCheck(!checked);\n this.panel.calculateMultiCheckedValue();\n } else {\n this.checkedValue = targetNode.getValueByOption();\n this.toggleDropDownVisible(false);\n }\n },\n deleteTag: function deleteTag(tag) {\n var checkedValue = this.checkedValue;\n\n var current = tag.node.getValueByOption();\n var val = checkedValue.find(function (n) {\n return Object(util_[\"isEqual\"])(n, current);\n });\n this.checkedValue = checkedValue.filter(function (n) {\n return !Object(util_[\"isEqual\"])(n, current);\n });\n this.$emit('remove-tag', val);\n },\n updateStyle: function updateStyle() {\n var $el = this.$el,\n inputInitialHeight = this.inputInitialHeight;\n\n if (this.$isServer || !$el) return;\n\n var suggestionPanel = this.$refs.suggestionPanel;\n\n var inputInner = $el.querySelector('.el-input__inner');\n\n if (!inputInner) return;\n\n var tags = $el.querySelector('.el-cascader__tags');\n var suggestionPanelEl = null;\n\n if (suggestionPanel && (suggestionPanelEl = suggestionPanel.$el)) {\n var suggestionList = suggestionPanelEl.querySelector('.el-cascader__suggestion-list');\n suggestionList.style.minWidth = inputInner.offsetWidth + 'px';\n }\n\n if (tags) {\n var offsetHeight = Math.round(tags.getBoundingClientRect().height);\n var height = Math.max(offsetHeight + 6, inputInitialHeight) + 'px';\n inputInner.style.height = height;\n if (this.dropDownVisible) {\n this.updatePopper();\n }\n }\n },\n\n\n /**\n * public methods\n */\n getCheckedNodes: function getCheckedNodes(leafOnly) {\n return this.panel.getCheckedNodes(leafOnly);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/cascader/src/cascader.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascadervue_type_script_lang_js_ = (cascadervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader/src/cascader.vue\n\n\n\n\n\n/* normalize component */\n\nvar cascader_component = normalizeComponent(\n src_cascadervue_type_script_lang_js_,\n cascadervue_type_template_id_032537a6_render,\n cascadervue_type_template_id_032537a6_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_api; }\ncascader_component.options.__file = \"packages/cascader/src/cascader.vue\"\n/* harmony default export */ var cascader = (cascader_component.exports);\n// CONCATENATED MODULE: ./packages/cascader/index.js\n\n\n/* istanbul ignore next */\ncascader.install = function (Vue) {\n Vue.component(cascader.name, cascader);\n};\n\n/* harmony default export */ var packages_cascader = (cascader);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/main.vue?vue&type=template&id=55c8ade7&\nvar mainvue_type_template_id_55c8ade7_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.hide,\n expression: \"hide\"\n }\n ],\n class: [\n \"el-color-picker\",\n _vm.colorDisabled ? \"is-disabled\" : \"\",\n _vm.colorSize ? \"el-color-picker--\" + _vm.colorSize : \"\"\n ]\n },\n [\n _vm.colorDisabled\n ? _c(\"div\", { staticClass: \"el-color-picker__mask\" })\n : _vm._e(),\n _c(\n \"div\",\n {\n staticClass: \"el-color-picker__trigger\",\n on: { click: _vm.handleTrigger }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"el-color-picker__color\",\n class: { \"is-alpha\": _vm.showAlpha }\n },\n [\n _c(\"span\", {\n staticClass: \"el-color-picker__color-inner\",\n style: {\n backgroundColor: _vm.displayedColor\n }\n }),\n !_vm.value && !_vm.showPanelColor\n ? _c(\"span\", {\n staticClass: \"el-color-picker__empty el-icon-close\"\n })\n : _vm._e()\n ]\n ),\n _c(\"span\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.value || _vm.showPanelColor,\n expression: \"value || showPanelColor\"\n }\n ],\n staticClass: \"el-color-picker__icon el-icon-arrow-down\"\n })\n ]\n ),\n _c(\"picker-dropdown\", {\n ref: \"dropdown\",\n class: [\"el-color-picker__panel\", _vm.popperClass || \"\"],\n attrs: {\n color: _vm.color,\n \"show-alpha\": _vm.showAlpha,\n predefine: _vm.predefine\n },\n on: { pick: _vm.confirmValue, clear: _vm.clearValue },\n model: {\n value: _vm.showPicker,\n callback: function($$v) {\n _vm.showPicker = $$v\n },\n expression: \"showPicker\"\n }\n })\n ],\n 1\n )\n}\nvar mainvue_type_template_id_55c8ade7_staticRenderFns = []\nmainvue_type_template_id_55c8ade7_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/color-picker/src/main.vue?vue&type=template&id=55c8ade7&\n\n// CONCATENATED MODULE: ./packages/color-picker/src/color.js\nvar color_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction color_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar hsv2hsl = function hsv2hsl(hue, sat, val) {\n return [hue, sat * val / ((hue = (2 - sat) * val) < 1 ? hue : 2 - hue) || 0, hue / 2];\n};\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nvar isOnePointZero = function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n};\n\nvar isPercentage = function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n};\n\n// Take input from [0, n] and return it as [0, 1]\nvar bound01 = function bound01(value, max) {\n if (isOnePointZero(value)) value = '100%';\n\n var processPercent = isPercentage(value);\n value = Math.min(max, Math.max(0, parseFloat(value)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n value = parseInt(value * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(value - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return value % max / parseFloat(max);\n};\n\nvar INT_HEX_MAP = { 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F' };\n\nvar toHex = function toHex(_ref) {\n var r = _ref.r,\n g = _ref.g,\n b = _ref.b;\n\n var hexOne = function hexOne(value) {\n value = Math.min(Math.round(value), 255);\n var high = Math.floor(value / 16);\n var low = value % 16;\n return '' + (INT_HEX_MAP[high] || high) + (INT_HEX_MAP[low] || low);\n };\n\n if (isNaN(r) || isNaN(g) || isNaN(b)) return '';\n\n return '#' + hexOne(r) + hexOne(g) + hexOne(b);\n};\n\nvar HEX_INT_MAP = { A: 10, B: 11, C: 12, D: 13, E: 14, F: 15 };\n\nvar parseHexChannel = function parseHexChannel(hex) {\n if (hex.length === 2) {\n return (HEX_INT_MAP[hex[0].toUpperCase()] || +hex[0]) * 16 + (HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1]);\n }\n\n return HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1];\n};\n\nvar hsl2hsv = function hsl2hsv(hue, sat, light) {\n sat = sat / 100;\n light = light / 100;\n var smin = sat;\n var lmin = Math.max(light, 0.01);\n var sv = void 0;\n var v = void 0;\n\n light *= 2;\n sat *= light <= 1 ? light : 2 - light;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n v = (light + sat) / 2;\n sv = light === 0 ? 2 * smin / (lmin + smin) : 2 * sat / (light + sat);\n\n return {\n h: hue,\n s: sv * 100,\n v: v * 100\n };\n};\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nvar rgb2hsv = function rgb2hsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = void 0,\n s = void 0;\n var v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if (max === min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return { h: h * 360, s: s * 100, v: v * 100 };\n};\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nvar hsv2rgb = function hsv2rgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n};\n\nvar Color = function () {\n function Color(options) {\n color_classCallCheck(this, Color);\n\n this._hue = 0;\n this._saturation = 100;\n this._value = 100;\n this._alpha = 100;\n\n this.enableAlpha = false;\n this.format = 'hex';\n this.value = '';\n\n options = options || {};\n\n for (var option in options) {\n if (options.hasOwnProperty(option)) {\n this[option] = options[option];\n }\n }\n\n this.doOnChange();\n }\n\n Color.prototype.set = function set(prop, value) {\n if (arguments.length === 1 && (typeof prop === 'undefined' ? 'undefined' : color_typeof(prop)) === 'object') {\n for (var p in prop) {\n if (prop.hasOwnProperty(p)) {\n this.set(p, prop[p]);\n }\n }\n\n return;\n }\n\n this['_' + prop] = value;\n this.doOnChange();\n };\n\n Color.prototype.get = function get(prop) {\n return this['_' + prop];\n };\n\n Color.prototype.toRgb = function toRgb() {\n return hsv2rgb(this._hue, this._saturation, this._value);\n };\n\n Color.prototype.fromString = function fromString(value) {\n var _this = this;\n\n if (!value) {\n this._hue = 0;\n this._saturation = 100;\n this._value = 100;\n\n this.doOnChange();\n return;\n }\n\n var fromHSV = function fromHSV(h, s, v) {\n _this._hue = Math.max(0, Math.min(360, h));\n _this._saturation = Math.max(0, Math.min(100, s));\n _this._value = Math.max(0, Math.min(100, v));\n\n _this.doOnChange();\n };\n\n if (value.indexOf('hsl') !== -1) {\n var parts = value.replace(/hsla|hsl|\\(|\\)/gm, '').split(/\\s|,/g).filter(function (val) {\n return val !== '';\n }).map(function (val, index) {\n return index > 2 ? parseFloat(val) : parseInt(val, 10);\n });\n\n if (parts.length === 4) {\n this._alpha = Math.floor(parseFloat(parts[3]) * 100);\n } else if (parts.length === 3) {\n this._alpha = 100;\n }\n if (parts.length >= 3) {\n var _hsl2hsv = hsl2hsv(parts[0], parts[1], parts[2]),\n h = _hsl2hsv.h,\n s = _hsl2hsv.s,\n v = _hsl2hsv.v;\n\n fromHSV(h, s, v);\n }\n } else if (value.indexOf('hsv') !== -1) {\n var _parts = value.replace(/hsva|hsv|\\(|\\)/gm, '').split(/\\s|,/g).filter(function (val) {\n return val !== '';\n }).map(function (val, index) {\n return index > 2 ? parseFloat(val) : parseInt(val, 10);\n });\n\n if (_parts.length === 4) {\n this._alpha = Math.floor(parseFloat(_parts[3]) * 100);\n } else if (_parts.length === 3) {\n this._alpha = 100;\n }\n if (_parts.length >= 3) {\n fromHSV(_parts[0], _parts[1], _parts[2]);\n }\n } else if (value.indexOf('rgb') !== -1) {\n var _parts2 = value.replace(/rgba|rgb|\\(|\\)/gm, '').split(/\\s|,/g).filter(function (val) {\n return val !== '';\n }).map(function (val, index) {\n return index > 2 ? parseFloat(val) : parseInt(val, 10);\n });\n\n if (_parts2.length === 4) {\n this._alpha = Math.floor(parseFloat(_parts2[3]) * 100);\n } else if (_parts2.length === 3) {\n this._alpha = 100;\n }\n if (_parts2.length >= 3) {\n var _rgb2hsv = rgb2hsv(_parts2[0], _parts2[1], _parts2[2]),\n _h = _rgb2hsv.h,\n _s = _rgb2hsv.s,\n _v = _rgb2hsv.v;\n\n fromHSV(_h, _s, _v);\n }\n } else if (value.indexOf('#') !== -1) {\n var hex = value.replace('#', '').trim();\n if (!/^(?:[0-9a-fA-F]{3}){1,2}|[0-9a-fA-F]{8}$/.test(hex)) return;\n var r = void 0,\n g = void 0,\n b = void 0;\n\n if (hex.length === 3) {\n r = parseHexChannel(hex[0] + hex[0]);\n g = parseHexChannel(hex[1] + hex[1]);\n b = parseHexChannel(hex[2] + hex[2]);\n } else if (hex.length === 6 || hex.length === 8) {\n r = parseHexChannel(hex.substring(0, 2));\n g = parseHexChannel(hex.substring(2, 4));\n b = parseHexChannel(hex.substring(4, 6));\n }\n\n if (hex.length === 8) {\n this._alpha = Math.floor(parseHexChannel(hex.substring(6)) / 255 * 100);\n } else if (hex.length === 3 || hex.length === 6) {\n this._alpha = 100;\n }\n\n var _rgb2hsv2 = rgb2hsv(r, g, b),\n _h2 = _rgb2hsv2.h,\n _s2 = _rgb2hsv2.s,\n _v2 = _rgb2hsv2.v;\n\n fromHSV(_h2, _s2, _v2);\n }\n };\n\n Color.prototype.compare = function compare(color) {\n return Math.abs(color._hue - this._hue) < 2 && Math.abs(color._saturation - this._saturation) < 1 && Math.abs(color._value - this._value) < 1 && Math.abs(color._alpha - this._alpha) < 1;\n };\n\n Color.prototype.doOnChange = function doOnChange() {\n var _hue = this._hue,\n _saturation = this._saturation,\n _value = this._value,\n _alpha = this._alpha,\n format = this.format;\n\n\n if (this.enableAlpha) {\n switch (format) {\n case 'hsl':\n var hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);\n this.value = 'hsla(' + _hue + ', ' + Math.round(hsl[1] * 100) + '%, ' + Math.round(hsl[2] * 100) + '%, ' + _alpha / 100 + ')';\n break;\n case 'hsv':\n this.value = 'hsva(' + _hue + ', ' + Math.round(_saturation) + '%, ' + Math.round(_value) + '%, ' + _alpha / 100 + ')';\n break;\n default:\n var _hsv2rgb = hsv2rgb(_hue, _saturation, _value),\n r = _hsv2rgb.r,\n g = _hsv2rgb.g,\n b = _hsv2rgb.b;\n\n this.value = 'rgba(' + r + ', ' + g + ', ' + b + ', ' + _alpha / 100 + ')';\n }\n } else {\n switch (format) {\n case 'hsl':\n var _hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);\n this.value = 'hsl(' + _hue + ', ' + Math.round(_hsl[1] * 100) + '%, ' + Math.round(_hsl[2] * 100) + '%)';\n break;\n case 'hsv':\n this.value = 'hsv(' + _hue + ', ' + Math.round(_saturation) + '%, ' + Math.round(_value) + '%)';\n break;\n case 'rgb':\n var _hsv2rgb2 = hsv2rgb(_hue, _saturation, _value),\n _r = _hsv2rgb2.r,\n _g = _hsv2rgb2.g,\n _b = _hsv2rgb2.b;\n\n this.value = 'rgb(' + _r + ', ' + _g + ', ' + _b + ')';\n break;\n default:\n this.value = toHex(hsv2rgb(_hue, _saturation, _value));\n }\n }\n };\n\n return Color;\n}();\n\n/* harmony default export */ var src_color = (Color);\n;\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/picker-dropdown.vue?vue&type=template&id=06601625&\nvar picker_dropdownvue_type_template_id_06601625_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n { attrs: { name: \"el-zoom-in-top\" }, on: { \"after-leave\": _vm.doDestroy } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showPopper,\n expression: \"showPopper\"\n }\n ],\n staticClass: \"el-color-dropdown\"\n },\n [\n _c(\n \"div\",\n { staticClass: \"el-color-dropdown__main-wrapper\" },\n [\n _c(\"hue-slider\", {\n ref: \"hue\",\n staticStyle: { float: \"right\" },\n attrs: { color: _vm.color, vertical: \"\" }\n }),\n _c(\"sv-panel\", { ref: \"sl\", attrs: { color: _vm.color } })\n ],\n 1\n ),\n _vm.showAlpha\n ? _c(\"alpha-slider\", { ref: \"alpha\", attrs: { color: _vm.color } })\n : _vm._e(),\n _vm.predefine\n ? _c(\"predefine\", {\n attrs: { color: _vm.color, colors: _vm.predefine }\n })\n : _vm._e(),\n _c(\n \"div\",\n { staticClass: \"el-color-dropdown__btns\" },\n [\n _c(\n \"span\",\n { staticClass: \"el-color-dropdown__value\" },\n [\n _c(\"el-input\", {\n attrs: { \"validate-event\": false, size: \"mini\" },\n on: { blur: _vm.handleConfirm },\n nativeOn: {\n keyup: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.handleConfirm($event)\n }\n },\n model: {\n value: _vm.customInput,\n callback: function($$v) {\n _vm.customInput = $$v\n },\n expression: \"customInput\"\n }\n })\n ],\n 1\n ),\n _c(\n \"el-button\",\n {\n staticClass: \"el-color-dropdown__link-btn\",\n attrs: { size: \"mini\", type: \"text\" },\n on: {\n click: function($event) {\n _vm.$emit(\"clear\")\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.t(\"el.colorpicker.clear\")) +\n \"\\n \"\n )\n ]\n ),\n _c(\n \"el-button\",\n {\n staticClass: \"el-color-dropdown__btn\",\n attrs: { plain: \"\", size: \"mini\" },\n on: { click: _vm.confirmValue }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.t(\"el.colorpicker.confirm\")) +\n \"\\n \"\n )\n ]\n )\n ],\n 1\n )\n ],\n 1\n )\n ]\n )\n}\nvar picker_dropdownvue_type_template_id_06601625_staticRenderFns = []\npicker_dropdownvue_type_template_id_06601625_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/color-picker/src/components/picker-dropdown.vue?vue&type=template&id=06601625&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/sv-panel.vue?vue&type=template&id=d8583596&\nvar sv_panelvue_type_template_id_d8583596_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-color-svpanel\",\n style: {\n backgroundColor: _vm.background\n }\n },\n [\n _c(\"div\", { staticClass: \"el-color-svpanel__white\" }),\n _c(\"div\", { staticClass: \"el-color-svpanel__black\" }),\n _c(\n \"div\",\n {\n staticClass: \"el-color-svpanel__cursor\",\n style: {\n top: _vm.cursorTop + \"px\",\n left: _vm.cursorLeft + \"px\"\n }\n },\n [_c(\"div\")]\n )\n ]\n )\n}\nvar sv_panelvue_type_template_id_d8583596_staticRenderFns = []\nsv_panelvue_type_template_id_d8583596_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/color-picker/src/components/sv-panel.vue?vue&type=template&id=d8583596&\n\n// CONCATENATED MODULE: ./packages/color-picker/src/draggable.js\n\nvar isDragging = false;\n\n/* harmony default export */ var draggable = (function (element, options) {\n if (external_vue_default.a.prototype.$isServer) return;\n var moveFn = function moveFn(event) {\n if (options.drag) {\n options.drag(event);\n }\n };\n var upFn = function upFn(event) {\n document.removeEventListener('mousemove', moveFn);\n document.removeEventListener('mouseup', upFn);\n document.onselectstart = null;\n document.ondragstart = null;\n\n isDragging = false;\n\n if (options.end) {\n options.end(event);\n }\n };\n element.addEventListener('mousedown', function (event) {\n if (isDragging) return;\n document.onselectstart = function () {\n return false;\n };\n document.ondragstart = function () {\n return false;\n };\n\n document.addEventListener('mousemove', moveFn);\n document.addEventListener('mouseup', upFn);\n isDragging = true;\n\n if (options.start) {\n options.start(event);\n }\n });\n});\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/sv-panel.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var sv_panelvue_type_script_lang_js_ = ({\n name: 'el-sl-panel',\n\n props: {\n color: {\n required: true\n }\n },\n\n computed: {\n colorValue: function colorValue() {\n var hue = this.color.get('hue');\n var value = this.color.get('value');\n return { hue: hue, value: value };\n }\n },\n\n watch: {\n colorValue: function colorValue() {\n this.update();\n }\n },\n\n methods: {\n update: function update() {\n var saturation = this.color.get('saturation');\n var value = this.color.get('value');\n\n var el = this.$el;\n var width = el.clientWidth,\n height = el.clientHeight;\n\n\n this.cursorLeft = saturation * width / 100;\n this.cursorTop = (100 - value) * height / 100;\n\n this.background = 'hsl(' + this.color.get('hue') + ', 100%, 50%)';\n },\n handleDrag: function handleDrag(event) {\n var el = this.$el;\n var rect = el.getBoundingClientRect();\n\n var left = event.clientX - rect.left;\n var top = event.clientY - rect.top;\n left = Math.max(0, left);\n left = Math.min(left, rect.width);\n\n top = Math.max(0, top);\n top = Math.min(top, rect.height);\n\n this.cursorLeft = left;\n this.cursorTop = top;\n this.color.set({\n saturation: left / rect.width * 100,\n value: 100 - top / rect.height * 100\n });\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n draggable(this.$el, {\n drag: function drag(event) {\n _this.handleDrag(event);\n },\n end: function end(event) {\n _this.handleDrag(event);\n }\n });\n\n this.update();\n },\n data: function data() {\n return {\n cursorTop: 0,\n cursorLeft: 0,\n background: 'hsl(0, 100%, 50%)'\n };\n }\n});\n// CONCATENATED MODULE: ./packages/color-picker/src/components/sv-panel.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_sv_panelvue_type_script_lang_js_ = (sv_panelvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/color-picker/src/components/sv-panel.vue\n\n\n\n\n\n/* normalize component */\n\nvar sv_panel_component = normalizeComponent(\n components_sv_panelvue_type_script_lang_js_,\n sv_panelvue_type_template_id_d8583596_render,\n sv_panelvue_type_template_id_d8583596_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var sv_panel_api; }\nsv_panel_component.options.__file = \"packages/color-picker/src/components/sv-panel.vue\"\n/* harmony default export */ var sv_panel = (sv_panel_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/hue-slider.vue?vue&type=template&id=5cdc43b1&\nvar hue_slidervue_type_template_id_5cdc43b1_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-color-hue-slider\",\n class: { \"is-vertical\": _vm.vertical }\n },\n [\n _c(\"div\", {\n ref: \"bar\",\n staticClass: \"el-color-hue-slider__bar\",\n on: { click: _vm.handleClick }\n }),\n _c(\"div\", {\n ref: \"thumb\",\n staticClass: \"el-color-hue-slider__thumb\",\n style: {\n left: _vm.thumbLeft + \"px\",\n top: _vm.thumbTop + \"px\"\n }\n })\n ]\n )\n}\nvar hue_slidervue_type_template_id_5cdc43b1_staticRenderFns = []\nhue_slidervue_type_template_id_5cdc43b1_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/color-picker/src/components/hue-slider.vue?vue&type=template&id=5cdc43b1&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/hue-slider.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var hue_slidervue_type_script_lang_js_ = ({\n name: 'el-color-hue-slider',\n\n props: {\n color: {\n required: true\n },\n\n vertical: Boolean\n },\n\n data: function data() {\n return {\n thumbLeft: 0,\n thumbTop: 0\n };\n },\n\n\n computed: {\n hueValue: function hueValue() {\n var hue = this.color.get('hue');\n return hue;\n }\n },\n\n watch: {\n hueValue: function hueValue() {\n this.update();\n }\n },\n\n methods: {\n handleClick: function handleClick(event) {\n var thumb = this.$refs.thumb;\n var target = event.target;\n\n if (target !== thumb) {\n this.handleDrag(event);\n }\n },\n handleDrag: function handleDrag(event) {\n var rect = this.$el.getBoundingClientRect();\n var thumb = this.$refs.thumb;\n\n var hue = void 0;\n\n if (!this.vertical) {\n var left = event.clientX - rect.left;\n left = Math.min(left, rect.width - thumb.offsetWidth / 2);\n left = Math.max(thumb.offsetWidth / 2, left);\n\n hue = Math.round((left - thumb.offsetWidth / 2) / (rect.width - thumb.offsetWidth) * 360);\n } else {\n var top = event.clientY - rect.top;\n top = Math.min(top, rect.height - thumb.offsetHeight / 2);\n top = Math.max(thumb.offsetHeight / 2, top);\n\n hue = Math.round((top - thumb.offsetHeight / 2) / (rect.height - thumb.offsetHeight) * 360);\n }\n\n this.color.set('hue', hue);\n },\n getThumbLeft: function getThumbLeft() {\n if (this.vertical) return 0;\n var el = this.$el;\n var hue = this.color.get('hue');\n\n if (!el) return 0;\n var thumb = this.$refs.thumb;\n return Math.round(hue * (el.offsetWidth - thumb.offsetWidth / 2) / 360);\n },\n getThumbTop: function getThumbTop() {\n if (!this.vertical) return 0;\n var el = this.$el;\n var hue = this.color.get('hue');\n\n if (!el) return 0;\n var thumb = this.$refs.thumb;\n return Math.round(hue * (el.offsetHeight - thumb.offsetHeight / 2) / 360);\n },\n update: function update() {\n this.thumbLeft = this.getThumbLeft();\n this.thumbTop = this.getThumbTop();\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n var _$refs = this.$refs,\n bar = _$refs.bar,\n thumb = _$refs.thumb;\n\n\n var dragConfig = {\n drag: function drag(event) {\n _this.handleDrag(event);\n },\n end: function end(event) {\n _this.handleDrag(event);\n }\n };\n\n draggable(bar, dragConfig);\n draggable(thumb, dragConfig);\n this.update();\n }\n});\n// CONCATENATED MODULE: ./packages/color-picker/src/components/hue-slider.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_hue_slidervue_type_script_lang_js_ = (hue_slidervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/color-picker/src/components/hue-slider.vue\n\n\n\n\n\n/* normalize component */\n\nvar hue_slider_component = normalizeComponent(\n components_hue_slidervue_type_script_lang_js_,\n hue_slidervue_type_template_id_5cdc43b1_render,\n hue_slidervue_type_template_id_5cdc43b1_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var hue_slider_api; }\nhue_slider_component.options.__file = \"packages/color-picker/src/components/hue-slider.vue\"\n/* harmony default export */ var hue_slider = (hue_slider_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/alpha-slider.vue?vue&type=template&id=068c66cb&\nvar alpha_slidervue_type_template_id_068c66cb_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-color-alpha-slider\",\n class: { \"is-vertical\": _vm.vertical }\n },\n [\n _c(\"div\", {\n ref: \"bar\",\n staticClass: \"el-color-alpha-slider__bar\",\n style: {\n background: _vm.background\n },\n on: { click: _vm.handleClick }\n }),\n _c(\"div\", {\n ref: \"thumb\",\n staticClass: \"el-color-alpha-slider__thumb\",\n style: {\n left: _vm.thumbLeft + \"px\",\n top: _vm.thumbTop + \"px\"\n }\n })\n ]\n )\n}\nvar alpha_slidervue_type_template_id_068c66cb_staticRenderFns = []\nalpha_slidervue_type_template_id_068c66cb_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/color-picker/src/components/alpha-slider.vue?vue&type=template&id=068c66cb&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/alpha-slider.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var alpha_slidervue_type_script_lang_js_ = ({\n name: 'el-color-alpha-slider',\n\n props: {\n color: {\n required: true\n },\n vertical: Boolean\n },\n\n watch: {\n 'color._alpha': function color_alpha() {\n this.update();\n },\n 'color.value': function colorValue() {\n this.update();\n }\n },\n\n methods: {\n handleClick: function handleClick(event) {\n var thumb = this.$refs.thumb;\n var target = event.target;\n\n if (target !== thumb) {\n this.handleDrag(event);\n }\n },\n handleDrag: function handleDrag(event) {\n var rect = this.$el.getBoundingClientRect();\n var thumb = this.$refs.thumb;\n\n\n if (!this.vertical) {\n var left = event.clientX - rect.left;\n left = Math.max(thumb.offsetWidth / 2, left);\n left = Math.min(left, rect.width - thumb.offsetWidth / 2);\n\n this.color.set('alpha', Math.round((left - thumb.offsetWidth / 2) / (rect.width - thumb.offsetWidth) * 100));\n } else {\n var top = event.clientY - rect.top;\n top = Math.max(thumb.offsetHeight / 2, top);\n top = Math.min(top, rect.height - thumb.offsetHeight / 2);\n\n this.color.set('alpha', Math.round((top - thumb.offsetHeight / 2) / (rect.height - thumb.offsetHeight) * 100));\n }\n },\n getThumbLeft: function getThumbLeft() {\n if (this.vertical) return 0;\n var el = this.$el;\n var alpha = this.color._alpha;\n\n if (!el) return 0;\n var thumb = this.$refs.thumb;\n return Math.round(alpha * (el.offsetWidth - thumb.offsetWidth / 2) / 100);\n },\n getThumbTop: function getThumbTop() {\n if (!this.vertical) return 0;\n var el = this.$el;\n var alpha = this.color._alpha;\n\n if (!el) return 0;\n var thumb = this.$refs.thumb;\n return Math.round(alpha * (el.offsetHeight - thumb.offsetHeight / 2) / 100);\n },\n getBackground: function getBackground() {\n if (this.color && this.color.value) {\n var _color$toRgb = this.color.toRgb(),\n r = _color$toRgb.r,\n g = _color$toRgb.g,\n b = _color$toRgb.b;\n\n return 'linear-gradient(to right, rgba(' + r + ', ' + g + ', ' + b + ', 0) 0%, rgba(' + r + ', ' + g + ', ' + b + ', 1) 100%)';\n }\n return null;\n },\n update: function update() {\n this.thumbLeft = this.getThumbLeft();\n this.thumbTop = this.getThumbTop();\n this.background = this.getBackground();\n }\n },\n\n data: function data() {\n return {\n thumbLeft: 0,\n thumbTop: 0,\n background: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n var _$refs = this.$refs,\n bar = _$refs.bar,\n thumb = _$refs.thumb;\n\n\n var dragConfig = {\n drag: function drag(event) {\n _this.handleDrag(event);\n },\n end: function end(event) {\n _this.handleDrag(event);\n }\n };\n\n draggable(bar, dragConfig);\n draggable(thumb, dragConfig);\n this.update();\n }\n});\n// CONCATENATED MODULE: ./packages/color-picker/src/components/alpha-slider.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_alpha_slidervue_type_script_lang_js_ = (alpha_slidervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/color-picker/src/components/alpha-slider.vue\n\n\n\n\n\n/* normalize component */\n\nvar alpha_slider_component = normalizeComponent(\n components_alpha_slidervue_type_script_lang_js_,\n alpha_slidervue_type_template_id_068c66cb_render,\n alpha_slidervue_type_template_id_068c66cb_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var alpha_slider_api; }\nalpha_slider_component.options.__file = \"packages/color-picker/src/components/alpha-slider.vue\"\n/* harmony default export */ var alpha_slider = (alpha_slider_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/predefine.vue?vue&type=template&id=06e03093&\nvar predefinevue_type_template_id_06e03093_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-color-predefine\" }, [\n _c(\n \"div\",\n { staticClass: \"el-color-predefine__colors\" },\n _vm._l(_vm.rgbaColors, function(item, index) {\n return _c(\n \"div\",\n {\n key: _vm.colors[index],\n staticClass: \"el-color-predefine__color-selector\",\n class: { selected: item.selected, \"is-alpha\": item._alpha < 100 },\n on: {\n click: function($event) {\n _vm.handleSelect(index)\n }\n }\n },\n [_c(\"div\", { style: { \"background-color\": item.value } })]\n )\n }),\n 0\n )\n ])\n}\nvar predefinevue_type_template_id_06e03093_staticRenderFns = []\npredefinevue_type_template_id_06e03093_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/color-picker/src/components/predefine.vue?vue&type=template&id=06e03093&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/predefine.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var predefinevue_type_script_lang_js_ = ({\n props: {\n colors: { type: Array, required: true },\n color: { required: true }\n },\n data: function data() {\n return {\n rgbaColors: this.parseColors(this.colors, this.color)\n };\n },\n\n methods: {\n handleSelect: function handleSelect(index) {\n this.color.fromString(this.colors[index]);\n },\n parseColors: function parseColors(colors, color) {\n return colors.map(function (value) {\n var c = new src_color();\n c.enableAlpha = true;\n c.format = 'rgba';\n c.fromString(value);\n c.selected = c.value === color.value;\n return c;\n });\n }\n },\n watch: {\n '$parent.currentColor': function $parentCurrentColor(val) {\n var color = new src_color();\n color.fromString(val);\n\n this.rgbaColors.forEach(function (item) {\n item.selected = color.compare(item);\n });\n },\n colors: function colors(newVal) {\n this.rgbaColors = this.parseColors(newVal, this.color);\n },\n color: function color(newVal) {\n this.rgbaColors = this.parseColors(this.colors, newVal);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/color-picker/src/components/predefine.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_predefinevue_type_script_lang_js_ = (predefinevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/color-picker/src/components/predefine.vue\n\n\n\n\n\n/* normalize component */\n\nvar predefine_component = normalizeComponent(\n components_predefinevue_type_script_lang_js_,\n predefinevue_type_template_id_06e03093_render,\n predefinevue_type_template_id_06e03093_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var predefine_api; }\npredefine_component.options.__file = \"packages/color-picker/src/components/predefine.vue\"\n/* harmony default export */ var predefine = (predefine_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/components/picker-dropdown.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var picker_dropdownvue_type_script_lang_js_ = ({\n name: 'el-color-picker-dropdown',\n\n mixins: [vue_popper_default.a, locale_default.a],\n\n components: {\n SvPanel: sv_panel,\n HueSlider: hue_slider,\n AlphaSlider: alpha_slider,\n ElInput: input_default.a,\n ElButton: button_default.a,\n Predefine: predefine\n },\n\n props: {\n color: {\n required: true\n },\n showAlpha: Boolean,\n predefine: Array\n },\n\n data: function data() {\n return {\n customInput: ''\n };\n },\n\n\n computed: {\n currentColor: function currentColor() {\n var parent = this.$parent;\n return !parent.value && !parent.showPanelColor ? '' : parent.color.value;\n }\n },\n\n methods: {\n confirmValue: function confirmValue() {\n this.$emit('pick');\n },\n handleConfirm: function handleConfirm() {\n this.color.fromString(this.customInput);\n }\n },\n\n mounted: function mounted() {\n this.$parent.popperElm = this.popperElm = this.$el;\n this.referenceElm = this.$parent.$el;\n },\n\n\n watch: {\n showPopper: function showPopper(val) {\n var _this = this;\n\n if (val === true) {\n this.$nextTick(function () {\n var _$refs = _this.$refs,\n sl = _$refs.sl,\n hue = _$refs.hue,\n alpha = _$refs.alpha;\n\n sl && sl.update();\n hue && hue.update();\n alpha && alpha.update();\n });\n }\n },\n\n\n currentColor: {\n immediate: true,\n handler: function handler(val) {\n this.customInput = val;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/color-picker/src/components/picker-dropdown.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_picker_dropdownvue_type_script_lang_js_ = (picker_dropdownvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/color-picker/src/components/picker-dropdown.vue\n\n\n\n\n\n/* normalize component */\n\nvar picker_dropdown_component = normalizeComponent(\n components_picker_dropdownvue_type_script_lang_js_,\n picker_dropdownvue_type_template_id_06601625_render,\n picker_dropdownvue_type_template_id_06601625_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var picker_dropdown_api; }\npicker_dropdown_component.options.__file = \"packages/color-picker/src/components/picker-dropdown.vue\"\n/* harmony default export */ var picker_dropdown = (picker_dropdown_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/color-picker/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ var color_picker_src_mainvue_type_script_lang_js_ = ({\n name: 'ElColorPicker',\n\n mixins: [emitter_default.a],\n\n props: {\n value: String,\n showAlpha: Boolean,\n colorFormat: String,\n disabled: Boolean,\n size: String,\n popperClass: String,\n predefine: Array\n },\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n directives: { Clickoutside: clickoutside_default.a },\n\n computed: {\n displayedColor: function displayedColor() {\n if (!this.value && !this.showPanelColor) {\n return 'transparent';\n }\n\n return this.displayedRgb(this.color, this.showAlpha);\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n colorSize: function colorSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n colorDisabled: function colorDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n }\n },\n\n watch: {\n value: function value(val) {\n if (!val) {\n this.showPanelColor = false;\n } else if (val && val !== this.color.value) {\n this.color.fromString(val);\n }\n },\n\n color: {\n deep: true,\n handler: function handler() {\n this.showPanelColor = true;\n }\n },\n displayedColor: function displayedColor(val) {\n if (!this.showPicker) return;\n var currentValueColor = new src_color({\n enableAlpha: this.showAlpha,\n format: this.colorFormat\n });\n currentValueColor.fromString(this.value);\n\n var currentValueColorRgb = this.displayedRgb(currentValueColor, this.showAlpha);\n if (val !== currentValueColorRgb) {\n this.$emit('active-change', val);\n }\n }\n },\n\n methods: {\n handleTrigger: function handleTrigger() {\n if (this.colorDisabled) return;\n this.showPicker = !this.showPicker;\n },\n confirmValue: function confirmValue() {\n var value = this.color.value;\n this.$emit('input', value);\n this.$emit('change', value);\n this.dispatch('ElFormItem', 'el.form.change', value);\n this.showPicker = false;\n },\n clearValue: function clearValue() {\n this.$emit('input', null);\n this.$emit('change', null);\n if (this.value !== null) {\n this.dispatch('ElFormItem', 'el.form.change', null);\n }\n this.showPanelColor = false;\n this.showPicker = false;\n this.resetColor();\n },\n hide: function hide() {\n this.showPicker = false;\n this.resetColor();\n },\n resetColor: function resetColor() {\n var _this = this;\n\n this.$nextTick(function (_) {\n if (_this.value) {\n _this.color.fromString(_this.value);\n } else {\n _this.showPanelColor = false;\n }\n });\n },\n displayedRgb: function displayedRgb(color, showAlpha) {\n if (!(color instanceof src_color)) {\n throw Error('color should be instance of Color Class');\n }\n\n var _color$toRgb = color.toRgb(),\n r = _color$toRgb.r,\n g = _color$toRgb.g,\n b = _color$toRgb.b;\n\n return showAlpha ? 'rgba(' + r + ', ' + g + ', ' + b + ', ' + color.get('alpha') / 100 + ')' : 'rgb(' + r + ', ' + g + ', ' + b + ')';\n }\n },\n\n mounted: function mounted() {\n var value = this.value;\n if (value) {\n this.color.fromString(value);\n }\n this.popperElm = this.$refs.dropdown.$el;\n },\n data: function data() {\n var color = new src_color({\n enableAlpha: this.showAlpha,\n format: this.colorFormat\n });\n\n return {\n color: color,\n showPicker: false,\n showPanelColor: false\n };\n },\n\n\n components: {\n PickerDropdown: picker_dropdown\n }\n});\n// CONCATENATED MODULE: ./packages/color-picker/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_color_picker_src_mainvue_type_script_lang_js_ = (color_picker_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/color-picker/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar color_picker_src_main_component = normalizeComponent(\n packages_color_picker_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_55c8ade7_render,\n mainvue_type_template_id_55c8ade7_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var color_picker_src_main_api; }\ncolor_picker_src_main_component.options.__file = \"packages/color-picker/src/main.vue\"\n/* harmony default export */ var color_picker_src_main = (color_picker_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/color-picker/index.js\n\n\n/* istanbul ignore next */\ncolor_picker_src_main.install = function (Vue) {\n Vue.component(color_picker_src_main.name, color_picker_src_main);\n};\n\n/* harmony default export */ var color_picker = (color_picker_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/transfer/src/main.vue?vue&type=template&id=5c654dd8&\nvar mainvue_type_template_id_5c654dd8_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"el-transfer\" },\n [\n _c(\n \"transfer-panel\",\n _vm._b(\n {\n ref: \"leftPanel\",\n attrs: {\n data: _vm.sourceData,\n title: _vm.titles[0] || _vm.t(\"el.transfer.titles.0\"),\n \"default-checked\": _vm.leftDefaultChecked,\n placeholder:\n _vm.filterPlaceholder || _vm.t(\"el.transfer.filterPlaceholder\")\n },\n on: { \"checked-change\": _vm.onSourceCheckedChange }\n },\n \"transfer-panel\",\n _vm.$props,\n false\n ),\n [_vm._t(\"left-footer\")],\n 2\n ),\n _c(\n \"div\",\n { staticClass: \"el-transfer__buttons\" },\n [\n _c(\n \"el-button\",\n {\n class: [\n \"el-transfer__button\",\n _vm.hasButtonTexts ? \"is-with-texts\" : \"\"\n ],\n attrs: {\n type: \"primary\",\n disabled: _vm.rightChecked.length === 0\n },\n nativeOn: {\n click: function($event) {\n return _vm.addToLeft($event)\n }\n }\n },\n [\n _c(\"i\", { staticClass: \"el-icon-arrow-left\" }),\n _vm.buttonTexts[0] !== undefined\n ? _c(\"span\", [_vm._v(_vm._s(_vm.buttonTexts[0]))])\n : _vm._e()\n ]\n ),\n _c(\n \"el-button\",\n {\n class: [\n \"el-transfer__button\",\n _vm.hasButtonTexts ? \"is-with-texts\" : \"\"\n ],\n attrs: {\n type: \"primary\",\n disabled: _vm.leftChecked.length === 0\n },\n nativeOn: {\n click: function($event) {\n return _vm.addToRight($event)\n }\n }\n },\n [\n _vm.buttonTexts[1] !== undefined\n ? _c(\"span\", [_vm._v(_vm._s(_vm.buttonTexts[1]))])\n : _vm._e(),\n _c(\"i\", { staticClass: \"el-icon-arrow-right\" })\n ]\n )\n ],\n 1\n ),\n _c(\n \"transfer-panel\",\n _vm._b(\n {\n ref: \"rightPanel\",\n attrs: {\n data: _vm.targetData,\n title: _vm.titles[1] || _vm.t(\"el.transfer.titles.1\"),\n \"default-checked\": _vm.rightDefaultChecked,\n placeholder:\n _vm.filterPlaceholder || _vm.t(\"el.transfer.filterPlaceholder\")\n },\n on: { \"checked-change\": _vm.onTargetCheckedChange }\n },\n \"transfer-panel\",\n _vm.$props,\n false\n ),\n [_vm._t(\"right-footer\")],\n 2\n )\n ],\n 1\n )\n}\nvar mainvue_type_template_id_5c654dd8_staticRenderFns = []\nmainvue_type_template_id_5c654dd8_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/transfer/src/main.vue?vue&type=template&id=5c654dd8&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/transfer/src/transfer-panel.vue?vue&type=template&id=2ddab8bd&\nvar transfer_panelvue_type_template_id_2ddab8bd_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-transfer-panel\" }, [\n _c(\n \"p\",\n { staticClass: \"el-transfer-panel__header\" },\n [\n _c(\n \"el-checkbox\",\n {\n attrs: { indeterminate: _vm.isIndeterminate },\n on: { change: _vm.handleAllCheckedChange },\n model: {\n value: _vm.allChecked,\n callback: function($$v) {\n _vm.allChecked = $$v\n },\n expression: \"allChecked\"\n }\n },\n [\n _vm._v(\"\\n \" + _vm._s(_vm.title) + \"\\n \"),\n _c(\"span\", [_vm._v(_vm._s(_vm.checkedSummary))])\n ]\n )\n ],\n 1\n ),\n _c(\n \"div\",\n {\n class: [\n \"el-transfer-panel__body\",\n _vm.hasFooter ? \"is-with-footer\" : \"\"\n ]\n },\n [\n _vm.filterable\n ? _c(\n \"el-input\",\n {\n staticClass: \"el-transfer-panel__filter\",\n attrs: { size: \"small\", placeholder: _vm.placeholder },\n nativeOn: {\n mouseenter: function($event) {\n _vm.inputHover = true\n },\n mouseleave: function($event) {\n _vm.inputHover = false\n }\n },\n model: {\n value: _vm.query,\n callback: function($$v) {\n _vm.query = $$v\n },\n expression: \"query\"\n }\n },\n [\n _c(\"i\", {\n class: [\"el-input__icon\", \"el-icon-\" + _vm.inputIcon],\n attrs: { slot: \"prefix\" },\n on: { click: _vm.clearQuery },\n slot: \"prefix\"\n })\n ]\n )\n : _vm._e(),\n _c(\n \"el-checkbox-group\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.hasNoMatch && _vm.data.length > 0,\n expression: \"!hasNoMatch && data.length > 0\"\n }\n ],\n staticClass: \"el-transfer-panel__list\",\n class: { \"is-filterable\": _vm.filterable },\n model: {\n value: _vm.checked,\n callback: function($$v) {\n _vm.checked = $$v\n },\n expression: \"checked\"\n }\n },\n _vm._l(_vm.filteredData, function(item) {\n return _c(\n \"el-checkbox\",\n {\n key: item[_vm.keyProp],\n staticClass: \"el-transfer-panel__item\",\n attrs: {\n label: item[_vm.keyProp],\n disabled: item[_vm.disabledProp]\n }\n },\n [_c(\"option-content\", { attrs: { option: item } })],\n 1\n )\n }),\n 1\n ),\n _c(\n \"p\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.hasNoMatch,\n expression: \"hasNoMatch\"\n }\n ],\n staticClass: \"el-transfer-panel__empty\"\n },\n [_vm._v(_vm._s(_vm.t(\"el.transfer.noMatch\")))]\n ),\n _c(\n \"p\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.data.length === 0 && !_vm.hasNoMatch,\n expression: \"data.length === 0 && !hasNoMatch\"\n }\n ],\n staticClass: \"el-transfer-panel__empty\"\n },\n [_vm._v(_vm._s(_vm.t(\"el.transfer.noData\")))]\n )\n ],\n 1\n ),\n _vm.hasFooter\n ? _c(\n \"p\",\n { staticClass: \"el-transfer-panel__footer\" },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e()\n ])\n}\nvar transfer_panelvue_type_template_id_2ddab8bd_staticRenderFns = []\ntransfer_panelvue_type_template_id_2ddab8bd_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/transfer/src/transfer-panel.vue?vue&type=template&id=2ddab8bd&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/transfer/src/transfer-panel.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ var transfer_panelvue_type_script_lang_js_ = ({\n mixins: [locale_default.a],\n\n name: 'ElTransferPanel',\n\n componentName: 'ElTransferPanel',\n\n components: {\n ElCheckboxGroup: checkbox_group_default.a,\n ElCheckbox: checkbox_default.a,\n ElInput: input_default.a,\n OptionContent: {\n props: {\n option: Object\n },\n render: function render(h) {\n var getParent = function getParent(vm) {\n if (vm.$options.componentName === 'ElTransferPanel') {\n return vm;\n } else if (vm.$parent) {\n return getParent(vm.$parent);\n } else {\n return vm;\n }\n };\n var panel = getParent(this);\n var transfer = panel.$parent || panel;\n return panel.renderContent ? panel.renderContent(h, this.option) : transfer.$scopedSlots.default ? transfer.$scopedSlots.default({ option: this.option }) : h('span', [this.option[panel.labelProp] || this.option[panel.keyProp]]);\n }\n }\n },\n\n props: {\n data: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n renderContent: Function,\n placeholder: String,\n title: String,\n filterable: Boolean,\n format: Object,\n filterMethod: Function,\n defaultChecked: Array,\n props: Object\n },\n\n data: function data() {\n return {\n checked: [],\n allChecked: false,\n query: '',\n inputHover: false,\n checkChangeByUser: true\n };\n },\n\n\n watch: {\n checked: function checked(val, oldVal) {\n this.updateAllChecked();\n if (this.checkChangeByUser) {\n var movedKeys = val.concat(oldVal).filter(function (v) {\n return val.indexOf(v) === -1 || oldVal.indexOf(v) === -1;\n });\n this.$emit('checked-change', val, movedKeys);\n } else {\n this.$emit('checked-change', val);\n this.checkChangeByUser = true;\n }\n },\n data: function data() {\n var _this = this;\n\n var checked = [];\n var filteredDataKeys = this.filteredData.map(function (item) {\n return item[_this.keyProp];\n });\n this.checked.forEach(function (item) {\n if (filteredDataKeys.indexOf(item) > -1) {\n checked.push(item);\n }\n });\n this.checkChangeByUser = false;\n this.checked = checked;\n },\n checkableData: function checkableData() {\n this.updateAllChecked();\n },\n\n\n defaultChecked: {\n immediate: true,\n handler: function handler(val, oldVal) {\n var _this2 = this;\n\n if (oldVal && val.length === oldVal.length && val.every(function (item) {\n return oldVal.indexOf(item) > -1;\n })) return;\n var checked = [];\n var checkableDataKeys = this.checkableData.map(function (item) {\n return item[_this2.keyProp];\n });\n val.forEach(function (item) {\n if (checkableDataKeys.indexOf(item) > -1) {\n checked.push(item);\n }\n });\n this.checkChangeByUser = false;\n this.checked = checked;\n }\n }\n },\n\n computed: {\n filteredData: function filteredData() {\n var _this3 = this;\n\n return this.data.filter(function (item) {\n if (typeof _this3.filterMethod === 'function') {\n return _this3.filterMethod(_this3.query, item);\n } else {\n var label = item[_this3.labelProp] || item[_this3.keyProp].toString();\n return label.toLowerCase().indexOf(_this3.query.toLowerCase()) > -1;\n }\n });\n },\n checkableData: function checkableData() {\n var _this4 = this;\n\n return this.filteredData.filter(function (item) {\n return !item[_this4.disabledProp];\n });\n },\n checkedSummary: function checkedSummary() {\n var checkedLength = this.checked.length;\n var dataLength = this.data.length;\n var _format = this.format,\n noChecked = _format.noChecked,\n hasChecked = _format.hasChecked;\n\n if (noChecked && hasChecked) {\n return checkedLength > 0 ? hasChecked.replace(/\\${checked}/g, checkedLength).replace(/\\${total}/g, dataLength) : noChecked.replace(/\\${total}/g, dataLength);\n } else {\n return checkedLength + '/' + dataLength;\n }\n },\n isIndeterminate: function isIndeterminate() {\n var checkedLength = this.checked.length;\n return checkedLength > 0 && checkedLength < this.checkableData.length;\n },\n hasNoMatch: function hasNoMatch() {\n return this.query.length > 0 && this.filteredData.length === 0;\n },\n inputIcon: function inputIcon() {\n return this.query.length > 0 && this.inputHover ? 'circle-close' : 'search';\n },\n labelProp: function labelProp() {\n return this.props.label || 'label';\n },\n keyProp: function keyProp() {\n return this.props.key || 'key';\n },\n disabledProp: function disabledProp() {\n return this.props.disabled || 'disabled';\n },\n hasFooter: function hasFooter() {\n return !!this.$slots.default;\n }\n },\n\n methods: {\n updateAllChecked: function updateAllChecked() {\n var _this5 = this;\n\n var checkableDataKeys = this.checkableData.map(function (item) {\n return item[_this5.keyProp];\n });\n this.allChecked = checkableDataKeys.length > 0 && checkableDataKeys.every(function (item) {\n return _this5.checked.indexOf(item) > -1;\n });\n },\n handleAllCheckedChange: function handleAllCheckedChange(value) {\n var _this6 = this;\n\n this.checked = value ? this.checkableData.map(function (item) {\n return item[_this6.keyProp];\n }) : [];\n },\n clearQuery: function clearQuery() {\n if (this.inputIcon === 'circle-close') {\n this.query = '';\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/transfer/src/transfer-panel.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_transfer_panelvue_type_script_lang_js_ = (transfer_panelvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/transfer/src/transfer-panel.vue\n\n\n\n\n\n/* normalize component */\n\nvar transfer_panel_component = normalizeComponent(\n src_transfer_panelvue_type_script_lang_js_,\n transfer_panelvue_type_template_id_2ddab8bd_render,\n transfer_panelvue_type_template_id_2ddab8bd_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var transfer_panel_api; }\ntransfer_panel_component.options.__file = \"packages/transfer/src/transfer-panel.vue\"\n/* harmony default export */ var transfer_panel = (transfer_panel_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/transfer/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n/* harmony default export */ var transfer_src_mainvue_type_script_lang_js_ = ({\n name: 'ElTransfer',\n\n mixins: [emitter_default.a, locale_default.a, migrating_default.a],\n\n components: {\n TransferPanel: transfer_panel,\n ElButton: button_default.a\n },\n\n props: {\n data: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n titles: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n buttonTexts: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n filterPlaceholder: {\n type: String,\n default: ''\n },\n filterMethod: Function,\n leftDefaultChecked: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n rightDefaultChecked: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n renderContent: Function,\n value: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n format: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n filterable: Boolean,\n props: {\n type: Object,\n default: function _default() {\n return {\n label: 'label',\n key: 'key',\n disabled: 'disabled'\n };\n }\n },\n targetOrder: {\n type: String,\n default: 'original'\n }\n },\n\n data: function data() {\n return {\n leftChecked: [],\n rightChecked: []\n };\n },\n\n\n computed: {\n dataObj: function dataObj() {\n var key = this.props.key;\n return this.data.reduce(function (o, cur) {\n return (o[cur[key]] = cur) && o;\n }, {});\n },\n sourceData: function sourceData() {\n var _this = this;\n\n return this.data.filter(function (item) {\n return _this.value.indexOf(item[_this.props.key]) === -1;\n });\n },\n targetData: function targetData() {\n var _this2 = this;\n\n if (this.targetOrder === 'original') {\n return this.data.filter(function (item) {\n return _this2.value.indexOf(item[_this2.props.key]) > -1;\n });\n } else {\n return this.value.reduce(function (arr, cur) {\n var val = _this2.dataObj[cur];\n if (val) {\n arr.push(val);\n }\n return arr;\n }, []);\n }\n },\n hasButtonTexts: function hasButtonTexts() {\n return this.buttonTexts.length === 2;\n }\n },\n\n watch: {\n value: function value(val) {\n this.dispatch('ElFormItem', 'el.form.change', val);\n }\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'footer-format': 'footer-format is renamed to format.'\n }\n };\n },\n onSourceCheckedChange: function onSourceCheckedChange(val, movedKeys) {\n this.leftChecked = val;\n if (movedKeys === undefined) return;\n this.$emit('left-check-change', val, movedKeys);\n },\n onTargetCheckedChange: function onTargetCheckedChange(val, movedKeys) {\n this.rightChecked = val;\n if (movedKeys === undefined) return;\n this.$emit('right-check-change', val, movedKeys);\n },\n addToLeft: function addToLeft() {\n var currentValue = this.value.slice();\n this.rightChecked.forEach(function (item) {\n var index = currentValue.indexOf(item);\n if (index > -1) {\n currentValue.splice(index, 1);\n }\n });\n this.$emit('input', currentValue);\n this.$emit('change', currentValue, 'left', this.rightChecked);\n },\n addToRight: function addToRight() {\n var _this3 = this;\n\n var currentValue = this.value.slice();\n var itemsToBeMoved = [];\n var key = this.props.key;\n this.data.forEach(function (item) {\n var itemKey = item[key];\n if (_this3.leftChecked.indexOf(itemKey) > -1 && _this3.value.indexOf(itemKey) === -1) {\n itemsToBeMoved.push(itemKey);\n }\n });\n currentValue = this.targetOrder === 'unshift' ? itemsToBeMoved.concat(currentValue) : currentValue.concat(itemsToBeMoved);\n this.$emit('input', currentValue);\n this.$emit('change', currentValue, 'right', this.leftChecked);\n },\n clearQuery: function clearQuery(which) {\n if (which === 'left') {\n this.$refs.leftPanel.query = '';\n } else if (which === 'right') {\n this.$refs.rightPanel.query = '';\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/transfer/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_transfer_src_mainvue_type_script_lang_js_ = (transfer_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/transfer/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar transfer_src_main_component = normalizeComponent(\n packages_transfer_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_5c654dd8_render,\n mainvue_type_template_id_5c654dd8_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var transfer_src_main_api; }\ntransfer_src_main_component.options.__file = \"packages/transfer/src/main.vue\"\n/* harmony default export */ var transfer_src_main = (transfer_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/transfer/index.js\n\n\n/* istanbul ignore next */\ntransfer_src_main.install = function (Vue) {\n Vue.component(transfer_src_main.name, transfer_src_main);\n};\n\n/* harmony default export */ var transfer = (transfer_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/container/src/main.vue?vue&type=template&id=5bf181d4&\nvar mainvue_type_template_id_5bf181d4_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"section\",\n { staticClass: \"el-container\", class: { \"is-vertical\": _vm.isVertical } },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar mainvue_type_template_id_5bf181d4_staticRenderFns = []\nmainvue_type_template_id_5bf181d4_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/container/src/main.vue?vue&type=template&id=5bf181d4&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/container/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var container_src_mainvue_type_script_lang_js_ = ({\n name: 'ElContainer',\n\n componentName: 'ElContainer',\n\n props: {\n direction: String\n },\n\n computed: {\n isVertical: function isVertical() {\n if (this.direction === 'vertical') {\n return true;\n } else if (this.direction === 'horizontal') {\n return false;\n }\n return this.$slots && this.$slots.default ? this.$slots.default.some(function (vnode) {\n var tag = vnode.componentOptions && vnode.componentOptions.tag;\n return tag === 'el-header' || tag === 'el-footer';\n }) : false;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/container/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_container_src_mainvue_type_script_lang_js_ = (container_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/container/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar container_src_main_component = normalizeComponent(\n packages_container_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_5bf181d4_render,\n mainvue_type_template_id_5bf181d4_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var container_src_main_api; }\ncontainer_src_main_component.options.__file = \"packages/container/src/main.vue\"\n/* harmony default export */ var container_src_main = (container_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/container/index.js\n\n\n/* istanbul ignore next */\ncontainer_src_main.install = function (Vue) {\n Vue.component(container_src_main.name, container_src_main);\n};\n\n/* harmony default export */ var packages_container = (container_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/header/src/main.vue?vue&type=template&id=2b296ab2&\nvar mainvue_type_template_id_2b296ab2_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"header\",\n { staticClass: \"el-header\", style: { height: _vm.height } },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar mainvue_type_template_id_2b296ab2_staticRenderFns = []\nmainvue_type_template_id_2b296ab2_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/header/src/main.vue?vue&type=template&id=2b296ab2&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/header/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var header_src_mainvue_type_script_lang_js_ = ({\n name: 'ElHeader',\n\n componentName: 'ElHeader',\n\n props: {\n height: {\n type: String,\n default: '60px'\n }\n }\n});\n// CONCATENATED MODULE: ./packages/header/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_header_src_mainvue_type_script_lang_js_ = (header_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/header/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar header_src_main_component = normalizeComponent(\n packages_header_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_2b296ab2_render,\n mainvue_type_template_id_2b296ab2_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var header_src_main_api; }\nheader_src_main_component.options.__file = \"packages/header/src/main.vue\"\n/* harmony default export */ var header_src_main = (header_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/header/index.js\n\n\n/* istanbul ignore next */\nheader_src_main.install = function (Vue) {\n Vue.component(header_src_main.name, header_src_main);\n};\n\n/* harmony default export */ var header = (header_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/aside/src/main.vue?vue&type=template&id=03411dbf&\nvar mainvue_type_template_id_03411dbf_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"aside\",\n { staticClass: \"el-aside\", style: { width: _vm.width } },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar mainvue_type_template_id_03411dbf_staticRenderFns = []\nmainvue_type_template_id_03411dbf_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/aside/src/main.vue?vue&type=template&id=03411dbf&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/aside/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var aside_src_mainvue_type_script_lang_js_ = ({\n name: 'ElAside',\n\n componentName: 'ElAside',\n\n props: {\n width: {\n type: String,\n default: '300px'\n }\n }\n});\n// CONCATENATED MODULE: ./packages/aside/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_aside_src_mainvue_type_script_lang_js_ = (aside_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/aside/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar aside_src_main_component = normalizeComponent(\n packages_aside_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_03411dbf_render,\n mainvue_type_template_id_03411dbf_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var aside_src_main_api; }\naside_src_main_component.options.__file = \"packages/aside/src/main.vue\"\n/* harmony default export */ var aside_src_main = (aside_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/aside/index.js\n\n\n/* istanbul ignore next */\naside_src_main.install = function (Vue) {\n Vue.component(aside_src_main.name, aside_src_main);\n};\n\n/* harmony default export */ var aside = (aside_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/main/src/main.vue?vue&type=template&id=2a3a7406&\nvar mainvue_type_template_id_2a3a7406_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"main\", { staticClass: \"el-main\" }, [_vm._t(\"default\")], 2)\n}\nvar mainvue_type_template_id_2a3a7406_staticRenderFns = []\nmainvue_type_template_id_2a3a7406_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/main/src/main.vue?vue&type=template&id=2a3a7406&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/main/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var main_src_mainvue_type_script_lang_js_ = ({\n name: 'ElMain',\n componentName: 'ElMain'\n});\n// CONCATENATED MODULE: ./packages/main/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_main_src_mainvue_type_script_lang_js_ = (main_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/main/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar main_src_main_component = normalizeComponent(\n packages_main_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_2a3a7406_render,\n mainvue_type_template_id_2a3a7406_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var main_src_main_api; }\nmain_src_main_component.options.__file = \"packages/main/src/main.vue\"\n/* harmony default export */ var main_src_main = (main_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/main/index.js\n\n\n/* istanbul ignore next */\nmain_src_main.install = function (Vue) {\n Vue.component(main_src_main.name, main_src_main);\n};\n\n/* harmony default export */ var packages_main = (main_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/footer/src/main.vue?vue&type=template&id=80210338&\nvar mainvue_type_template_id_80210338_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"footer\",\n { staticClass: \"el-footer\", style: { height: _vm.height } },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar mainvue_type_template_id_80210338_staticRenderFns = []\nmainvue_type_template_id_80210338_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/footer/src/main.vue?vue&type=template&id=80210338&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/footer/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var footer_src_mainvue_type_script_lang_js_ = ({\n name: 'ElFooter',\n\n componentName: 'ElFooter',\n\n props: {\n height: {\n type: String,\n default: '60px'\n }\n }\n});\n// CONCATENATED MODULE: ./packages/footer/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_footer_src_mainvue_type_script_lang_js_ = (footer_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/footer/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar footer_src_main_component = normalizeComponent(\n packages_footer_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_80210338_render,\n mainvue_type_template_id_80210338_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var footer_src_main_api; }\nfooter_src_main_component.options.__file = \"packages/footer/src/main.vue\"\n/* harmony default export */ var footer_src_main = (footer_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/footer/index.js\n\n\n/* istanbul ignore next */\nfooter_src_main.install = function (Vue) {\n Vue.component(footer_src_main.name, footer_src_main);\n};\n\n/* harmony default export */ var footer = (footer_src_main);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/timeline/src/main.vue?vue&type=script&lang=js&\n\n/* harmony default export */ var timeline_src_mainvue_type_script_lang_js_ = ({\n name: 'ElTimeline',\n\n props: {\n reverse: {\n type: Boolean,\n default: false\n }\n },\n\n provide: function provide() {\n return {\n timeline: this\n };\n },\n render: function render() {\n var h = arguments[0];\n\n var reverse = this.reverse;\n var classes = {\n 'el-timeline': true,\n 'is-reverse': reverse\n };\n var slots = this.$slots.default || [];\n if (reverse) {\n slots = slots.reverse();\n }\n return h(\n 'ul',\n { 'class': classes },\n [slots]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/timeline/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_timeline_src_mainvue_type_script_lang_js_ = (timeline_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/timeline/src/main.vue\nvar main_render, main_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar timeline_src_main_component = normalizeComponent(\n packages_timeline_src_mainvue_type_script_lang_js_,\n main_render,\n main_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var timeline_src_main_api; }\ntimeline_src_main_component.options.__file = \"packages/timeline/src/main.vue\"\n/* harmony default export */ var timeline_src_main = (timeline_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/timeline/index.js\n\n\n/* istanbul ignore next */\ntimeline_src_main.install = function (Vue) {\n Vue.component(timeline_src_main.name, timeline_src_main);\n};\n\n/* harmony default export */ var timeline = (timeline_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/timeline/src/item.vue?vue&type=template&id=61a69e50&\nvar itemvue_type_template_id_61a69e50_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"li\", { staticClass: \"el-timeline-item\" }, [\n _c(\"div\", { staticClass: \"el-timeline-item__tail\" }),\n !_vm.$slots.dot\n ? _c(\n \"div\",\n {\n staticClass: \"el-timeline-item__node\",\n class: [\n \"el-timeline-item__node--\" + (_vm.size || \"\"),\n \"el-timeline-item__node--\" + (_vm.type || \"\")\n ],\n style: {\n backgroundColor: _vm.color\n }\n },\n [\n _vm.icon\n ? _c(\"i\", {\n staticClass: \"el-timeline-item__icon\",\n class: _vm.icon\n })\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm.$slots.dot\n ? _c(\"div\", { staticClass: \"el-timeline-item__dot\" }, [_vm._t(\"dot\")], 2)\n : _vm._e(),\n _c(\"div\", { staticClass: \"el-timeline-item__wrapper\" }, [\n !_vm.hideTimestamp && _vm.placement === \"top\"\n ? _c(\"div\", { staticClass: \"el-timeline-item__timestamp is-top\" }, [\n _vm._v(\"\\n \" + _vm._s(_vm.timestamp) + \"\\n \")\n ])\n : _vm._e(),\n _c(\n \"div\",\n { staticClass: \"el-timeline-item__content\" },\n [_vm._t(\"default\")],\n 2\n ),\n !_vm.hideTimestamp && _vm.placement === \"bottom\"\n ? _c(\"div\", { staticClass: \"el-timeline-item__timestamp is-bottom\" }, [\n _vm._v(\"\\n \" + _vm._s(_vm.timestamp) + \"\\n \")\n ])\n : _vm._e()\n ])\n ])\n}\nvar itemvue_type_template_id_61a69e50_staticRenderFns = []\nitemvue_type_template_id_61a69e50_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/timeline/src/item.vue?vue&type=template&id=61a69e50&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/timeline/src/item.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var timeline_src_itemvue_type_script_lang_js_ = ({\n name: 'ElTimelineItem',\n\n inject: ['timeline'],\n\n props: {\n timestamp: String,\n\n hideTimestamp: {\n type: Boolean,\n default: false\n },\n\n placement: {\n type: String,\n default: 'bottom'\n },\n\n type: String,\n\n color: String,\n\n size: {\n type: String,\n default: 'normal'\n },\n\n icon: String\n }\n});\n// CONCATENATED MODULE: ./packages/timeline/src/item.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_timeline_src_itemvue_type_script_lang_js_ = (timeline_src_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/timeline/src/item.vue\n\n\n\n\n\n/* normalize component */\n\nvar src_item_component = normalizeComponent(\n packages_timeline_src_itemvue_type_script_lang_js_,\n itemvue_type_template_id_61a69e50_render,\n itemvue_type_template_id_61a69e50_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var src_item_api; }\nsrc_item_component.options.__file = \"packages/timeline/src/item.vue\"\n/* harmony default export */ var timeline_src_item = (src_item_component.exports);\n// CONCATENATED MODULE: ./packages/timeline-item/index.js\n\n\n/* istanbul ignore next */\ntimeline_src_item.install = function (Vue) {\n Vue.component(timeline_src_item.name, timeline_src_item);\n};\n\n/* harmony default export */ var timeline_item = (timeline_src_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/link/src/main.vue?vue&type=template&id=01cf3b65&\nvar mainvue_type_template_id_01cf3b65_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"a\",\n _vm._b(\n {\n class: [\n \"el-link\",\n _vm.type ? \"el-link--\" + _vm.type : \"\",\n _vm.disabled && \"is-disabled\",\n _vm.underline && !_vm.disabled && \"is-underline\"\n ],\n attrs: { href: _vm.disabled ? null : _vm.href },\n on: { click: _vm.handleClick }\n },\n \"a\",\n _vm.$attrs,\n false\n ),\n [\n _vm.icon ? _c(\"i\", { class: _vm.icon }) : _vm._e(),\n _vm.$slots.default\n ? _c(\"span\", { staticClass: \"el-link--inner\" }, [_vm._t(\"default\")], 2)\n : _vm._e(),\n _vm.$slots.icon ? [_vm.$slots.icon ? _vm._t(\"icon\") : _vm._e()] : _vm._e()\n ],\n 2\n )\n}\nvar mainvue_type_template_id_01cf3b65_staticRenderFns = []\nmainvue_type_template_id_01cf3b65_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/link/src/main.vue?vue&type=template&id=01cf3b65&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/link/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var link_src_mainvue_type_script_lang_js_ = ({\n name: 'ElLink',\n\n props: {\n type: {\n type: String,\n default: 'default'\n },\n underline: {\n type: Boolean,\n default: true\n },\n disabled: Boolean,\n href: String,\n icon: String\n },\n\n methods: {\n handleClick: function handleClick(event) {\n if (!this.disabled) {\n if (!this.href) {\n this.$emit('click', event);\n }\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/link/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_link_src_mainvue_type_script_lang_js_ = (link_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/link/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar link_src_main_component = normalizeComponent(\n packages_link_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_01cf3b65_render,\n mainvue_type_template_id_01cf3b65_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var link_src_main_api; }\nlink_src_main_component.options.__file = \"packages/link/src/main.vue\"\n/* harmony default export */ var link_src_main = (link_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/link/index.js\n\n\n/* istanbul ignore next */\nlink_src_main.install = function (Vue) {\n Vue.component(link_src_main.name, link_src_main);\n};\n\n/* harmony default export */ var packages_link = (link_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/divider/src/main.vue?vue&type=template&id=7fa02a7e&functional=true&\nvar mainvue_type_template_id_7fa02a7e_functional_true_render = function(_h, _vm) {\n var _c = _vm._c\n return _c(\n \"div\",\n _vm._g(\n _vm._b(\n {\n class: [\n _vm.data.staticClass,\n \"el-divider\",\n \"el-divider--\" + _vm.props.direction\n ]\n },\n \"div\",\n _vm.data.attrs,\n false\n ),\n _vm.listeners\n ),\n [\n _vm.slots().default && _vm.props.direction !== \"vertical\"\n ? _c(\n \"div\",\n { class: [\"el-divider__text\", \"is-\" + _vm.props.contentPosition] },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e()\n ]\n )\n}\nvar mainvue_type_template_id_7fa02a7e_functional_true_staticRenderFns = []\nmainvue_type_template_id_7fa02a7e_functional_true_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/divider/src/main.vue?vue&type=template&id=7fa02a7e&functional=true&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/divider/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var divider_src_mainvue_type_script_lang_js_ = ({\n name: 'ElDivider',\n props: {\n direction: {\n type: String,\n default: 'horizontal',\n validator: function validator(val) {\n return ['horizontal', 'vertical'].indexOf(val) !== -1;\n }\n },\n contentPosition: {\n type: String,\n default: 'center',\n validator: function validator(val) {\n return ['left', 'center', 'right'].indexOf(val) !== -1;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/divider/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_divider_src_mainvue_type_script_lang_js_ = (divider_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/divider/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar divider_src_main_component = normalizeComponent(\n packages_divider_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_7fa02a7e_functional_true_render,\n mainvue_type_template_id_7fa02a7e_functional_true_staticRenderFns,\n true,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var divider_src_main_api; }\ndivider_src_main_component.options.__file = \"packages/divider/src/main.vue\"\n/* harmony default export */ var divider_src_main = (divider_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/divider/index.js\n\n\n/* istanbul ignore next */\ndivider_src_main.install = function (Vue) {\n Vue.component(divider_src_main.name, divider_src_main);\n};\n\n/* harmony default export */ var divider = (divider_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/image/src/main.vue?vue&type=template&id=44d84a7c&\nvar mainvue_type_template_id_44d84a7c_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"el-image\" },\n [\n _vm.loading\n ? _vm._t(\"placeholder\", [\n _c(\"div\", { staticClass: \"el-image__placeholder\" })\n ])\n : _vm.error\n ? _vm._t(\"error\", [\n _c(\"div\", { staticClass: \"el-image__error\" }, [\n _vm._v(_vm._s(_vm.t(\"el.image.error\")))\n ])\n ])\n : _c(\n \"img\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"el-image__inner\",\n class: {\n \"el-image__inner--center\": _vm.alignCenter,\n \"el-image__preview\": _vm.preview\n },\n style: _vm.imageStyle,\n attrs: { src: _vm.src },\n on: { click: _vm.clickHandler }\n },\n \"img\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n )\n ),\n _vm.preview\n ? [\n _vm.showViewer\n ? _c(\"image-viewer\", {\n attrs: {\n \"z-index\": _vm.zIndex,\n \"initial-index\": _vm.imageIndex,\n \"on-close\": _vm.closeViewer,\n \"url-list\": _vm.previewSrcList\n }\n })\n : _vm._e()\n ]\n : _vm._e()\n ],\n 2\n )\n}\nvar mainvue_type_template_id_44d84a7c_staticRenderFns = []\nmainvue_type_template_id_44d84a7c_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/image/src/main.vue?vue&type=template&id=44d84a7c&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/image/src/image-viewer.vue?vue&type=template&id=5e73b307&\nvar image_viewervue_type_template_id_5e73b307_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"transition\", { attrs: { name: \"viewer-fade\" } }, [\n _c(\n \"div\",\n {\n ref: \"el-image-viewer__wrapper\",\n staticClass: \"el-image-viewer__wrapper\",\n style: { \"z-index\": _vm.viewerZIndex },\n attrs: { tabindex: \"-1\" }\n },\n [\n _c(\"div\", {\n staticClass: \"el-image-viewer__mask\",\n on: {\n click: function($event) {\n if ($event.target !== $event.currentTarget) {\n return null\n }\n return _vm.handleMaskClick($event)\n }\n }\n }),\n _c(\n \"span\",\n {\n staticClass: \"el-image-viewer__btn el-image-viewer__close\",\n on: { click: _vm.hide }\n },\n [_c(\"i\", { staticClass: \"el-icon-close\" })]\n ),\n !_vm.isSingle\n ? [\n _c(\n \"span\",\n {\n staticClass: \"el-image-viewer__btn el-image-viewer__prev\",\n class: { \"is-disabled\": !_vm.infinite && _vm.isFirst },\n on: { click: _vm.prev }\n },\n [_c(\"i\", { staticClass: \"el-icon-arrow-left\" })]\n ),\n _c(\n \"span\",\n {\n staticClass: \"el-image-viewer__btn el-image-viewer__next\",\n class: { \"is-disabled\": !_vm.infinite && _vm.isLast },\n on: { click: _vm.next }\n },\n [_c(\"i\", { staticClass: \"el-icon-arrow-right\" })]\n )\n ]\n : _vm._e(),\n _c(\n \"div\",\n { staticClass: \"el-image-viewer__btn el-image-viewer__actions\" },\n [\n _c(\"div\", { staticClass: \"el-image-viewer__actions__inner\" }, [\n _c(\"i\", {\n staticClass: \"el-icon-zoom-out\",\n on: {\n click: function($event) {\n _vm.handleActions(\"zoomOut\")\n }\n }\n }),\n _c(\"i\", {\n staticClass: \"el-icon-zoom-in\",\n on: {\n click: function($event) {\n _vm.handleActions(\"zoomIn\")\n }\n }\n }),\n _c(\"i\", { staticClass: \"el-image-viewer__actions__divider\" }),\n _c(\"i\", { class: _vm.mode.icon, on: { click: _vm.toggleMode } }),\n _c(\"i\", { staticClass: \"el-image-viewer__actions__divider\" }),\n _c(\"i\", {\n staticClass: \"el-icon-refresh-left\",\n on: {\n click: function($event) {\n _vm.handleActions(\"anticlocelise\")\n }\n }\n }),\n _c(\"i\", {\n staticClass: \"el-icon-refresh-right\",\n on: {\n click: function($event) {\n _vm.handleActions(\"clocelise\")\n }\n }\n })\n ])\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"el-image-viewer__canvas\" },\n _vm._l(_vm.urlList, function(url, i) {\n return i === _vm.index\n ? _c(\"img\", {\n key: url,\n ref: \"img\",\n refInFor: true,\n staticClass: \"el-image-viewer__img\",\n style: _vm.imgStyle,\n attrs: { src: _vm.currentImg },\n on: {\n load: _vm.handleImgLoad,\n error: _vm.handleImgError,\n mousedown: _vm.handleMouseDown\n }\n })\n : _vm._e()\n }),\n 0\n )\n ],\n 2\n )\n ])\n}\nvar image_viewervue_type_template_id_5e73b307_staticRenderFns = []\nimage_viewervue_type_template_id_5e73b307_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/image/src/image-viewer.vue?vue&type=template&id=5e73b307&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/image/src/image-viewer.vue?vue&type=script&lang=js&\nvar image_viewervue_type_script_lang_js_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\nvar Mode = {\n CONTAIN: {\n name: 'contain',\n icon: 'el-icon-full-screen'\n },\n ORIGINAL: {\n name: 'original',\n icon: 'el-icon-c-scale-to-original'\n }\n};\n\nvar mousewheelEventName = Object(util_[\"isFirefox\"])() ? 'DOMMouseScroll' : 'mousewheel';\n\n/* harmony default export */ var image_viewervue_type_script_lang_js_ = ({\n name: 'elImageViewer',\n\n props: {\n urlList: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n zIndex: {\n type: Number,\n default: 2000\n },\n onSwitch: {\n type: Function,\n default: function _default() {}\n },\n onClose: {\n type: Function,\n default: function _default() {}\n },\n initialIndex: {\n type: Number,\n default: 0\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n maskClosable: {\n type: Boolean,\n default: true\n }\n },\n\n data: function data() {\n return {\n index: this.initialIndex,\n isShow: false,\n infinite: true,\n loading: false,\n mode: Mode.CONTAIN,\n transform: {\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false\n }\n };\n },\n\n computed: {\n isSingle: function isSingle() {\n return this.urlList.length <= 1;\n },\n isFirst: function isFirst() {\n return this.index === 0;\n },\n isLast: function isLast() {\n return this.index === this.urlList.length - 1;\n },\n currentImg: function currentImg() {\n return this.urlList[this.index];\n },\n imgStyle: function imgStyle() {\n var _transform = this.transform,\n scale = _transform.scale,\n deg = _transform.deg,\n offsetX = _transform.offsetX,\n offsetY = _transform.offsetY,\n enableTransition = _transform.enableTransition;\n\n var style = {\n transform: 'scale(' + scale + ') rotate(' + deg + 'deg)',\n transition: enableTransition ? 'transform .3s' : '',\n 'margin-left': offsetX + 'px',\n 'margin-top': offsetY + 'px'\n };\n if (this.mode === Mode.CONTAIN) {\n style.maxWidth = style.maxHeight = '100%';\n }\n return style;\n },\n viewerZIndex: function viewerZIndex() {\n var nextZIndex = popup_[\"PopupManager\"].nextZIndex();\n return this.zIndex > nextZIndex ? this.zIndex : nextZIndex;\n }\n },\n watch: {\n index: {\n handler: function handler(val) {\n this.reset();\n this.onSwitch(val);\n }\n },\n currentImg: function currentImg(val) {\n var _this = this;\n\n this.$nextTick(function (_) {\n var $img = _this.$refs.img[0];\n if (!$img.complete) {\n _this.loading = true;\n }\n });\n }\n },\n methods: {\n hide: function hide() {\n this.deviceSupportUninstall();\n this.onClose();\n },\n deviceSupportInstall: function deviceSupportInstall() {\n var _this2 = this;\n\n this._keyDownHandler = function (e) {\n e.stopPropagation();\n var keyCode = e.keyCode;\n switch (keyCode) {\n // ESC\n case 27:\n _this2.hide();\n break;\n // SPACE\n case 32:\n _this2.toggleMode();\n break;\n // LEFT_ARROW\n case 37:\n _this2.prev();\n break;\n // UP_ARROW\n case 38:\n _this2.handleActions('zoomIn');\n break;\n // RIGHT_ARROW\n case 39:\n _this2.next();\n break;\n // DOWN_ARROW\n case 40:\n _this2.handleActions('zoomOut');\n break;\n }\n };\n this._mouseWheelHandler = Object(util_[\"rafThrottle\"])(function (e) {\n var delta = e.wheelDelta ? e.wheelDelta : -e.detail;\n if (delta > 0) {\n _this2.handleActions('zoomIn', {\n zoomRate: 0.015,\n enableTransition: false\n });\n } else {\n _this2.handleActions('zoomOut', {\n zoomRate: 0.015,\n enableTransition: false\n });\n }\n });\n Object(dom_[\"on\"])(document, 'keydown', this._keyDownHandler);\n Object(dom_[\"on\"])(document, mousewheelEventName, this._mouseWheelHandler);\n },\n deviceSupportUninstall: function deviceSupportUninstall() {\n Object(dom_[\"off\"])(document, 'keydown', this._keyDownHandler);\n Object(dom_[\"off\"])(document, mousewheelEventName, this._mouseWheelHandler);\n this._keyDownHandler = null;\n this._mouseWheelHandler = null;\n },\n handleImgLoad: function handleImgLoad(e) {\n this.loading = false;\n },\n handleImgError: function handleImgError(e) {\n this.loading = false;\n e.target.alt = '加载失败';\n },\n handleMouseDown: function handleMouseDown(e) {\n var _this3 = this;\n\n if (this.loading || e.button !== 0) return;\n\n var _transform2 = this.transform,\n offsetX = _transform2.offsetX,\n offsetY = _transform2.offsetY;\n\n var startX = e.pageX;\n var startY = e.pageY;\n this._dragHandler = Object(util_[\"rafThrottle\"])(function (ev) {\n _this3.transform.offsetX = offsetX + ev.pageX - startX;\n _this3.transform.offsetY = offsetY + ev.pageY - startY;\n });\n Object(dom_[\"on\"])(document, 'mousemove', this._dragHandler);\n Object(dom_[\"on\"])(document, 'mouseup', function (ev) {\n Object(dom_[\"off\"])(document, 'mousemove', _this3._dragHandler);\n });\n\n e.preventDefault();\n },\n handleMaskClick: function handleMaskClick() {\n if (this.maskClosable) {\n this.hide();\n }\n },\n reset: function reset() {\n this.transform = {\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false\n };\n },\n toggleMode: function toggleMode() {\n if (this.loading) return;\n\n var modeNames = Object.keys(Mode);\n var modeValues = Object.values(Mode);\n var index = modeValues.indexOf(this.mode);\n var nextIndex = (index + 1) % modeNames.length;\n this.mode = Mode[modeNames[nextIndex]];\n this.reset();\n },\n prev: function prev() {\n if (this.isFirst && !this.infinite) return;\n var len = this.urlList.length;\n this.index = (this.index - 1 + len) % len;\n },\n next: function next() {\n if (this.isLast && !this.infinite) return;\n var len = this.urlList.length;\n this.index = (this.index + 1) % len;\n },\n handleActions: function handleActions(action) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.loading) return;\n\n var _zoomRate$rotateDeg$e = image_viewervue_type_script_lang_js_extends({\n zoomRate: 0.2,\n rotateDeg: 90,\n enableTransition: true\n }, options),\n zoomRate = _zoomRate$rotateDeg$e.zoomRate,\n rotateDeg = _zoomRate$rotateDeg$e.rotateDeg,\n enableTransition = _zoomRate$rotateDeg$e.enableTransition;\n\n var transform = this.transform;\n\n switch (action) {\n case 'zoomOut':\n if (transform.scale > 0.2) {\n transform.scale = parseFloat((transform.scale - zoomRate).toFixed(3));\n }\n break;\n case 'zoomIn':\n transform.scale = parseFloat((transform.scale + zoomRate).toFixed(3));\n break;\n case 'clocelise':\n transform.deg += rotateDeg;\n break;\n case 'anticlocelise':\n transform.deg -= rotateDeg;\n break;\n }\n transform.enableTransition = enableTransition;\n }\n },\n mounted: function mounted() {\n this.deviceSupportInstall();\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n // add tabindex then wrapper can be focusable via Javascript\n // focus wrapper so arrow key can't cause inner scroll behavior underneath\n this.$refs['el-image-viewer__wrapper'].focus();\n },\n destroyed: function destroyed() {\n // if appendToBody is true, remove DOM node after destroy\n if (this.appendToBody && this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/image/src/image-viewer.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_image_viewervue_type_script_lang_js_ = (image_viewervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/image/src/image-viewer.vue\n\n\n\n\n\n/* normalize component */\n\nvar image_viewer_component = normalizeComponent(\n src_image_viewervue_type_script_lang_js_,\n image_viewervue_type_template_id_5e73b307_render,\n image_viewervue_type_template_id_5e73b307_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var image_viewer_api; }\nimage_viewer_component.options.__file = \"packages/image/src/image-viewer.vue\"\n/* harmony default export */ var image_viewer = (image_viewer_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/image/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\nvar isSupportObjectFit = function isSupportObjectFit() {\n return document.documentElement.style.objectFit !== undefined;\n};\n\nvar ObjectFit = {\n NONE: 'none',\n CONTAIN: 'contain',\n COVER: 'cover',\n FILL: 'fill',\n SCALE_DOWN: 'scale-down'\n};\n\nvar prevOverflow = '';\n\n/* harmony default export */ var image_src_mainvue_type_script_lang_js_ = ({\n name: 'ElImage',\n\n mixins: [locale_default.a],\n inheritAttrs: false,\n\n components: {\n ImageViewer: image_viewer\n },\n\n props: {\n src: String,\n fit: String,\n lazy: Boolean,\n scrollContainer: {},\n previewSrcList: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n zIndex: {\n type: Number,\n default: 2000\n },\n initialIndex: Number\n },\n\n data: function data() {\n return {\n loading: true,\n error: false,\n show: !this.lazy,\n imageWidth: 0,\n imageHeight: 0,\n showViewer: false\n };\n },\n\n\n computed: {\n imageStyle: function imageStyle() {\n var fit = this.fit;\n\n if (!this.$isServer && fit) {\n return isSupportObjectFit() ? { 'object-fit': fit } : this.getImageStyle(fit);\n }\n return {};\n },\n alignCenter: function alignCenter() {\n return !this.$isServer && !isSupportObjectFit() && this.fit !== ObjectFit.FILL;\n },\n preview: function preview() {\n var previewSrcList = this.previewSrcList;\n\n return Array.isArray(previewSrcList) && previewSrcList.length > 0;\n },\n imageIndex: function imageIndex() {\n var previewIndex = 0;\n var initialIndex = this.initialIndex;\n if (initialIndex >= 0) {\n previewIndex = initialIndex;\n return previewIndex;\n }\n var srcIndex = this.previewSrcList.indexOf(this.src);\n if (srcIndex >= 0) {\n previewIndex = srcIndex;\n return previewIndex;\n }\n return previewIndex;\n }\n },\n\n watch: {\n src: function src(val) {\n this.show && this.loadImage();\n },\n show: function show(val) {\n val && this.loadImage();\n }\n },\n\n mounted: function mounted() {\n if (this.lazy) {\n this.addLazyLoadListener();\n } else {\n this.loadImage();\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.lazy && this.removeLazyLoadListener();\n },\n\n\n methods: {\n loadImage: function loadImage() {\n var _this = this;\n\n if (this.$isServer) return;\n\n // reset status\n this.loading = true;\n this.error = false;\n\n var img = new Image();\n img.onload = function (e) {\n return _this.handleLoad(e, img);\n };\n img.onerror = this.handleError.bind(this);\n\n // bind html attrs\n // so it can behave consistently\n Object.keys(this.$attrs).forEach(function (key) {\n var value = _this.$attrs[key];\n img.setAttribute(key, value);\n });\n img.src = this.src;\n },\n handleLoad: function handleLoad(e, img) {\n this.imageWidth = img.width;\n this.imageHeight = img.height;\n this.loading = false;\n this.error = false;\n },\n handleError: function handleError(e) {\n this.loading = false;\n this.error = true;\n this.$emit('error', e);\n },\n handleLazyLoad: function handleLazyLoad() {\n if (Object(dom_[\"isInContainer\"])(this.$el, this._scrollContainer)) {\n this.show = true;\n this.removeLazyLoadListener();\n }\n },\n addLazyLoadListener: function addLazyLoadListener() {\n if (this.$isServer) return;\n\n var scrollContainer = this.scrollContainer;\n\n var _scrollContainer = null;\n\n if (Object(types_[\"isHtmlElement\"])(scrollContainer)) {\n _scrollContainer = scrollContainer;\n } else if (Object(types_[\"isString\"])(scrollContainer)) {\n _scrollContainer = document.querySelector(scrollContainer);\n } else {\n _scrollContainer = Object(dom_[\"getScrollContainer\"])(this.$el);\n }\n\n if (_scrollContainer) {\n this._scrollContainer = _scrollContainer;\n this._lazyLoadHandler = throttle_default()(200, this.handleLazyLoad);\n Object(dom_[\"on\"])(_scrollContainer, 'scroll', this._lazyLoadHandler);\n this.handleLazyLoad();\n }\n },\n removeLazyLoadListener: function removeLazyLoadListener() {\n var _scrollContainer = this._scrollContainer,\n _lazyLoadHandler = this._lazyLoadHandler;\n\n\n if (this.$isServer || !_scrollContainer || !_lazyLoadHandler) return;\n\n Object(dom_[\"off\"])(_scrollContainer, 'scroll', _lazyLoadHandler);\n this._scrollContainer = null;\n this._lazyLoadHandler = null;\n },\n\n /**\n * simulate object-fit behavior to compatible with IE11 and other browsers which not support object-fit\n */\n getImageStyle: function getImageStyle(fit) {\n var imageWidth = this.imageWidth,\n imageHeight = this.imageHeight;\n var _$el = this.$el,\n containerWidth = _$el.clientWidth,\n containerHeight = _$el.clientHeight;\n\n\n if (!imageWidth || !imageHeight || !containerWidth || !containerHeight) return {};\n\n var imageAspectRatio = imageWidth / imageHeight;\n var containerAspectRatio = containerWidth / containerHeight;\n\n if (fit === ObjectFit.SCALE_DOWN) {\n var isSmaller = imageWidth < containerWidth && imageHeight < containerHeight;\n fit = isSmaller ? ObjectFit.NONE : ObjectFit.CONTAIN;\n }\n\n switch (fit) {\n case ObjectFit.NONE:\n return { width: 'auto', height: 'auto' };\n case ObjectFit.CONTAIN:\n return imageAspectRatio < containerAspectRatio ? { width: 'auto' } : { height: 'auto' };\n case ObjectFit.COVER:\n return imageAspectRatio < containerAspectRatio ? { height: 'auto' } : { width: 'auto' };\n default:\n return {};\n }\n },\n clickHandler: function clickHandler() {\n // don't show viewer when preview is false\n if (!this.preview) {\n return;\n }\n // prevent body scroll\n prevOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n this.showViewer = true;\n },\n closeViewer: function closeViewer() {\n document.body.style.overflow = prevOverflow;\n this.showViewer = false;\n }\n }\n});\n// CONCATENATED MODULE: ./packages/image/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_image_src_mainvue_type_script_lang_js_ = (image_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/image/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar image_src_main_component = normalizeComponent(\n packages_image_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_44d84a7c_render,\n mainvue_type_template_id_44d84a7c_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var image_src_main_api; }\nimage_src_main_component.options.__file = \"packages/image/src/main.vue\"\n/* harmony default export */ var image_src_main = (image_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/image/index.js\n\n\n/* istanbul ignore next */\nimage_src_main.install = function (Vue) {\n Vue.component(image_src_main.name, image_src_main);\n};\n\n/* harmony default export */ var packages_image = (image_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/calendar/src/main.vue?vue&type=template&id=6d9756be&\nvar mainvue_type_template_id_6d9756be_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-calendar\" }, [\n _c(\"div\", { staticClass: \"el-calendar__header\" }, [\n _c(\"div\", { staticClass: \"el-calendar__title\" }, [\n _vm._v(\"\\n \" + _vm._s(_vm.i18nDate) + \"\\n \")\n ]),\n _vm.validatedRange.length === 0\n ? _c(\n \"div\",\n { staticClass: \"el-calendar__button-group\" },\n [\n _c(\n \"el-button-group\",\n [\n _c(\n \"el-button\",\n {\n attrs: { type: \"plain\", size: \"mini\" },\n on: {\n click: function($event) {\n _vm.selectDate(\"prev-month\")\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.t(\"el.datepicker.prevMonth\")) +\n \"\\n \"\n )\n ]\n ),\n _c(\n \"el-button\",\n {\n attrs: { type: \"plain\", size: \"mini\" },\n on: {\n click: function($event) {\n _vm.selectDate(\"today\")\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.t(\"el.datepicker.today\")) +\n \"\\n \"\n )\n ]\n ),\n _c(\n \"el-button\",\n {\n attrs: { type: \"plain\", size: \"mini\" },\n on: {\n click: function($event) {\n _vm.selectDate(\"next-month\")\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.t(\"el.datepicker.nextMonth\")) +\n \"\\n \"\n )\n ]\n )\n ],\n 1\n )\n ],\n 1\n )\n : _vm._e()\n ]),\n _vm.validatedRange.length === 0\n ? _c(\n \"div\",\n { key: \"no-range\", staticClass: \"el-calendar__body\" },\n [\n _c(\"date-table\", {\n attrs: {\n date: _vm.date,\n \"selected-day\": _vm.realSelectedDay,\n \"first-day-of-week\": _vm.realFirstDayOfWeek\n },\n on: { pick: _vm.pickDay }\n })\n ],\n 1\n )\n : _c(\n \"div\",\n { key: \"has-range\", staticClass: \"el-calendar__body\" },\n _vm._l(_vm.validatedRange, function(range, index) {\n return _c(\"date-table\", {\n key: index,\n attrs: {\n date: range[0],\n \"selected-day\": _vm.realSelectedDay,\n range: range,\n \"hide-header\": index !== 0,\n \"first-day-of-week\": _vm.realFirstDayOfWeek\n },\n on: { pick: _vm.pickDay }\n })\n }),\n 1\n )\n ])\n}\nvar mainvue_type_template_id_6d9756be_staticRenderFns = []\nmainvue_type_template_id_6d9756be_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/calendar/src/main.vue?vue&type=template&id=6d9756be&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/date\"\nvar date_ = __nested_webpack_require_8926__(20);\nvar date_default = /*#__PURE__*/__nested_webpack_require_8926__.n(date_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/calendar/src/date-table.vue?vue&type=script&lang=js&\n\n\n\n\n/* harmony default export */ var src_date_tablevue_type_script_lang_js_ = ({\n props: {\n selectedDay: String, // formated date yyyy-MM-dd\n range: {\n type: Array,\n validator: function validator(val) {\n if (!(val && val.length)) return true;\n var start = val[0],\n end = val[1];\n\n return Object(date_util_[\"validateRangeInOneMonth\"])(start, end);\n }\n },\n date: Date,\n hideHeader: Boolean,\n firstDayOfWeek: Number\n },\n\n inject: ['elCalendar'],\n\n methods: {\n toNestedArr: function toNestedArr(days) {\n return Object(date_util_[\"range\"])(days.length / 7).map(function (_, index) {\n var start = index * 7;\n return days.slice(start, start + 7);\n });\n },\n getFormateDate: function getFormateDate(day, type) {\n if (!day || ['prev', 'current', 'next'].indexOf(type) === -1) {\n throw new Error('invalid day or type');\n }\n var prefix = this.curMonthDatePrefix;\n if (type === 'prev') {\n prefix = this.prevMonthDatePrefix;\n } else if (type === 'next') {\n prefix = this.nextMonthDatePrefix;\n }\n day = ('00' + day).slice(-2);\n return prefix + '-' + day;\n },\n getCellClass: function getCellClass(_ref) {\n var text = _ref.text,\n type = _ref.type;\n\n var classes = [type];\n if (type === 'current') {\n var date = this.getFormateDate(text, type);\n if (date === this.selectedDay) {\n classes.push('is-selected');\n }\n if (date === this.formatedToday) {\n classes.push('is-today');\n }\n }\n return classes;\n },\n pickDay: function pickDay(_ref2) {\n var text = _ref2.text,\n type = _ref2.type;\n\n var date = this.getFormateDate(text, type);\n this.$emit('pick', date);\n },\n cellRenderProxy: function cellRenderProxy(_ref3) {\n var text = _ref3.text,\n type = _ref3.type;\n var h = this.$createElement;\n\n var render = this.elCalendar.$scopedSlots.dateCell;\n if (!render) return h('span', [text]);\n\n var day = this.getFormateDate(text, type);\n var date = new Date(day);\n var data = {\n isSelected: this.selectedDay === day,\n type: type + '-month',\n day: day\n };\n return render({ date: date, data: data });\n }\n },\n\n computed: {\n WEEK_DAYS: function WEEK_DAYS() {\n return Object(date_util_[\"getI18nSettings\"])().dayNames;\n },\n prevMonthDatePrefix: function prevMonthDatePrefix() {\n var temp = new Date(this.date.getTime());\n temp.setDate(0);\n return date_default.a.format(temp, 'yyyy-MM');\n },\n curMonthDatePrefix: function curMonthDatePrefix() {\n return date_default.a.format(this.date, 'yyyy-MM');\n },\n nextMonthDatePrefix: function nextMonthDatePrefix() {\n var temp = new Date(this.date.getFullYear(), this.date.getMonth() + 1, 1);\n return date_default.a.format(temp, 'yyyy-MM');\n },\n formatedToday: function formatedToday() {\n return this.elCalendar.formatedToday;\n },\n isInRange: function isInRange() {\n return this.range && this.range.length;\n },\n rows: function rows() {\n var days = [];\n // if range exists, should render days in range.\n if (this.isInRange) {\n var _range = this.range,\n start = _range[0],\n end = _range[1];\n\n var currentMonthRange = Object(date_util_[\"range\"])(end.getDate() - start.getDate() + 1).map(function (_, index) {\n return {\n text: start.getDate() + index,\n type: 'current'\n };\n });\n var remaining = currentMonthRange.length % 7;\n remaining = remaining === 0 ? 0 : 7 - remaining;\n var nextMonthRange = Object(date_util_[\"range\"])(remaining).map(function (_, index) {\n return {\n text: index + 1,\n type: 'next'\n };\n });\n days = currentMonthRange.concat(nextMonthRange);\n } else {\n var date = this.date;\n var firstDay = Object(date_util_[\"getFirstDayOfMonth\"])(date);\n firstDay = firstDay === 0 ? 7 : firstDay;\n var firstDayOfWeek = typeof this.firstDayOfWeek === 'number' ? this.firstDayOfWeek : 1;\n var offset = (7 + firstDay - firstDayOfWeek) % 7;\n var prevMonthDays = Object(date_util_[\"getPrevMonthLastDays\"])(date, offset).map(function (day) {\n return {\n text: day,\n type: 'prev'\n };\n });\n var currentMonthDays = Object(date_util_[\"getMonthDays\"])(date).map(function (day) {\n return {\n text: day,\n type: 'current'\n };\n });\n days = [].concat(prevMonthDays, currentMonthDays);\n var nextMonthDays = Object(date_util_[\"range\"])(42 - days.length).map(function (_, index) {\n return {\n text: index + 1,\n type: 'next'\n };\n });\n days = days.concat(nextMonthDays);\n }\n return this.toNestedArr(days);\n },\n weekDays: function weekDays() {\n var start = this.firstDayOfWeek;\n var WEEK_DAYS = this.WEEK_DAYS;\n\n\n if (typeof start !== 'number' || start === 0) {\n return WEEK_DAYS.slice();\n } else {\n return WEEK_DAYS.slice(start).concat(WEEK_DAYS.slice(0, start));\n }\n }\n },\n\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n\n var thead = this.hideHeader ? null : h('thead', [this.weekDays.map(function (day) {\n return h(\n 'th',\n { key: day },\n [day]\n );\n })]);\n return h(\n 'table',\n {\n 'class': {\n 'el-calendar-table': true,\n 'is-range': this.isInRange\n },\n attrs: { cellspacing: '0',\n cellpadding: '0' }\n },\n [thead, h('tbody', [this.rows.map(function (row, index) {\n return h(\n 'tr',\n {\n 'class': {\n 'el-calendar-table__row': true,\n 'el-calendar-table__row--hide-border': index === 0 && _this.hideHeader\n },\n key: index },\n [row.map(function (cell, key) {\n return h(\n 'td',\n { key: key,\n 'class': _this.getCellClass(cell),\n on: {\n 'click': _this.pickDay.bind(_this, cell)\n }\n },\n [h(\n 'div',\n { 'class': 'el-calendar-day' },\n [_this.cellRenderProxy(cell)]\n )]\n );\n })]\n );\n })])]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/calendar/src/date-table.vue?vue&type=script&lang=js&\n /* harmony default export */ var calendar_src_date_tablevue_type_script_lang_js_ = (src_date_tablevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/calendar/src/date-table.vue\nvar date_table_render, date_table_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar src_date_table_component = normalizeComponent(\n calendar_src_date_tablevue_type_script_lang_js_,\n date_table_render,\n date_table_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var src_date_table_api; }\nsrc_date_table_component.options.__file = \"packages/calendar/src/date-table.vue\"\n/* harmony default export */ var src_date_table = (src_date_table_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/calendar/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\nvar validTypes = ['prev-month', 'today', 'next-month'];\nvar weekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\nvar oneDay = 86400000;\n\n/* harmony default export */ var calendar_src_mainvue_type_script_lang_js_ = ({\n name: 'ElCalendar',\n\n mixins: [locale_default.a],\n\n components: {\n DateTable: src_date_table,\n ElButton: button_default.a,\n ElButtonGroup: button_group_default.a\n },\n\n props: {\n value: [Date, String, Number],\n range: {\n type: Array,\n validator: function validator(range) {\n if (Array.isArray(range)) {\n return range.length === 2 && range.every(function (item) {\n return typeof item === 'string' || typeof item === 'number' || item instanceof Date;\n });\n } else {\n return true;\n }\n }\n },\n firstDayOfWeek: {\n type: Number,\n default: 1\n }\n },\n\n provide: function provide() {\n return {\n elCalendar: this\n };\n },\n\n\n methods: {\n pickDay: function pickDay(day) {\n this.realSelectedDay = day;\n },\n selectDate: function selectDate(type) {\n if (validTypes.indexOf(type) === -1) {\n throw new Error('invalid type ' + type);\n }\n var day = '';\n if (type === 'prev-month') {\n day = this.prevMonthDatePrefix + '-01';\n } else if (type === 'next-month') {\n day = this.nextMonthDatePrefix + '-01';\n } else {\n day = this.formatedToday;\n }\n\n if (day === this.formatedDate) return;\n this.pickDay(day);\n },\n toDate: function toDate(val) {\n if (!val) {\n throw new Error('invalid val');\n }\n return val instanceof Date ? val : new Date(val);\n },\n rangeValidator: function rangeValidator(date, isStart) {\n var firstDayOfWeek = this.realFirstDayOfWeek;\n var expected = isStart ? firstDayOfWeek : firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n var message = (isStart ? 'start' : 'end') + ' of range should be ' + weekDays[expected] + '.';\n if (date.getDay() !== expected) {\n console.warn('[ElementCalendar]', message, 'Invalid range will be ignored.');\n return false;\n }\n return true;\n }\n },\n\n computed: {\n prevMonthDatePrefix: function prevMonthDatePrefix() {\n var temp = new Date(this.date.getTime());\n temp.setDate(0);\n return date_default.a.format(temp, 'yyyy-MM');\n },\n curMonthDatePrefix: function curMonthDatePrefix() {\n return date_default.a.format(this.date, 'yyyy-MM');\n },\n nextMonthDatePrefix: function nextMonthDatePrefix() {\n var temp = new Date(this.date.getFullYear(), this.date.getMonth() + 1, 1);\n return date_default.a.format(temp, 'yyyy-MM');\n },\n formatedDate: function formatedDate() {\n return date_default.a.format(this.date, 'yyyy-MM-dd');\n },\n i18nDate: function i18nDate() {\n var year = this.date.getFullYear();\n var month = this.date.getMonth() + 1;\n return year + ' ' + this.t('el.datepicker.year') + ' ' + this.t('el.datepicker.month' + month);\n },\n formatedToday: function formatedToday() {\n return date_default.a.format(this.now, 'yyyy-MM-dd');\n },\n\n\n realSelectedDay: {\n get: function get() {\n if (!this.value) return this.selectedDay;\n return this.formatedDate;\n },\n set: function set(val) {\n this.selectedDay = val;\n var date = new Date(val);\n this.$emit('input', date);\n }\n },\n\n date: function date() {\n if (!this.value) {\n if (this.realSelectedDay) {\n var d = this.selectedDay.split('-');\n return new Date(d[0], d[1] - 1, d[2]);\n } else if (this.validatedRange.length) {\n return this.validatedRange[0][0];\n }\n return this.now;\n } else {\n return this.toDate(this.value);\n }\n },\n\n\n // if range is valid, we get a two-digit array\n validatedRange: function validatedRange() {\n var _this = this;\n\n var range = this.range;\n if (!range) return [];\n range = range.reduce(function (prev, val, index) {\n var date = _this.toDate(val);\n if (_this.rangeValidator(date, index === 0)) {\n prev = prev.concat(date);\n }\n return prev;\n }, []);\n if (range.length === 2) {\n var _range = range,\n start = _range[0],\n end = _range[1];\n\n if (start > end) {\n console.warn('[ElementCalendar]end time should be greater than start time');\n return [];\n }\n // start time and end time in one month\n if (Object(date_util_[\"validateRangeInOneMonth\"])(start, end)) {\n return [[start, end]];\n }\n var data = [];\n var startDay = new Date(start.getFullYear(), start.getMonth() + 1, 1);\n var lastDay = this.toDate(startDay.getTime() - oneDay);\n if (!Object(date_util_[\"validateRangeInOneMonth\"])(startDay, end)) {\n console.warn('[ElementCalendar]start time and end time interval must not exceed two months');\n return [];\n }\n // 第一个月的时间范围\n data.push([start, lastDay]);\n // 下一月的时间范围,需要计算一下该月的第一个周起始日\n var firstDayOfWeek = this.realFirstDayOfWeek;\n var nextMontFirstDay = startDay.getDay();\n var interval = 0;\n if (nextMontFirstDay !== firstDayOfWeek) {\n if (firstDayOfWeek === 0) {\n interval = 7 - nextMontFirstDay;\n } else {\n interval = firstDayOfWeek - nextMontFirstDay;\n interval = interval > 0 ? interval : 7 + interval;\n }\n }\n startDay = this.toDate(startDay.getTime() + interval * oneDay);\n if (startDay.getDate() < end.getDate()) {\n data.push([startDay, end]);\n }\n return data;\n }\n return [];\n },\n realFirstDayOfWeek: function realFirstDayOfWeek() {\n if (this.firstDayOfWeek < 1 || this.firstDayOfWeek > 6) {\n return 0;\n }\n return Math.floor(this.firstDayOfWeek);\n }\n },\n\n data: function data() {\n return {\n selectedDay: '',\n now: new Date()\n };\n }\n});\n// CONCATENATED MODULE: ./packages/calendar/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_calendar_src_mainvue_type_script_lang_js_ = (calendar_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/calendar/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar calendar_src_main_component = normalizeComponent(\n packages_calendar_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_6d9756be_render,\n mainvue_type_template_id_6d9756be_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var calendar_src_main_api; }\ncalendar_src_main_component.options.__file = \"packages/calendar/src/main.vue\"\n/* harmony default export */ var calendar_src_main = (calendar_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/calendar/index.js\n\n\n/* istanbul ignore next */\ncalendar_src_main.install = function (Vue) {\n Vue.component(calendar_src_main.name, calendar_src_main);\n};\n\n/* harmony default export */ var calendar = (calendar_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/backtop/src/main.vue?vue&type=template&id=257dd4a9&\nvar mainvue_type_template_id_257dd4a9_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"transition\", { attrs: { name: \"el-fade-in\" } }, [\n _vm.visible\n ? _c(\n \"div\",\n {\n staticClass: \"el-backtop\",\n style: {\n right: _vm.styleRight,\n bottom: _vm.styleBottom\n },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.handleClick($event)\n }\n }\n },\n [\n _vm._t(\"default\", [_c(\"el-icon\", { attrs: { name: \"caret-top\" } })])\n ],\n 2\n )\n : _vm._e()\n ])\n}\nvar mainvue_type_template_id_257dd4a9_staticRenderFns = []\nmainvue_type_template_id_257dd4a9_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/backtop/src/main.vue?vue&type=template&id=257dd4a9&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/backtop/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\nvar cubic = function cubic(value) {\n return Math.pow(value, 3);\n};\nvar easeInOutCubic = function easeInOutCubic(value) {\n return value < 0.5 ? cubic(value * 2) / 2 : 1 - cubic((1 - value) * 2) / 2;\n};\n\n/* harmony default export */ var backtop_src_mainvue_type_script_lang_js_ = ({\n name: 'ElBacktop',\n\n props: {\n visibilityHeight: {\n type: Number,\n default: 200\n },\n target: [String],\n right: {\n type: Number,\n default: 40\n },\n bottom: {\n type: Number,\n default: 40\n }\n },\n\n data: function data() {\n return {\n el: null,\n container: null,\n visible: false\n };\n },\n\n\n computed: {\n styleBottom: function styleBottom() {\n return this.bottom + 'px';\n },\n styleRight: function styleRight() {\n return this.right + 'px';\n }\n },\n\n mounted: function mounted() {\n this.init();\n this.throttledScrollHandler = throttle_default()(300, this.onScroll);\n this.container.addEventListener('scroll', this.throttledScrollHandler);\n },\n\n\n methods: {\n init: function init() {\n this.container = document;\n this.el = document.documentElement;\n if (this.target) {\n this.el = document.querySelector(this.target);\n if (!this.el) {\n throw new Error('target is not existed: ' + this.target);\n }\n this.container = this.el;\n }\n },\n onScroll: function onScroll() {\n var scrollTop = this.el.scrollTop;\n this.visible = scrollTop >= this.visibilityHeight;\n },\n handleClick: function handleClick(e) {\n this.scrollToTop();\n this.$emit('click', e);\n },\n scrollToTop: function scrollToTop() {\n var el = this.el;\n var beginTime = Date.now();\n var beginValue = el.scrollTop;\n var rAF = window.requestAnimationFrame || function (func) {\n return setTimeout(func, 16);\n };\n var frameFunc = function frameFunc() {\n var progress = (Date.now() - beginTime) / 500;\n if (progress < 1) {\n el.scrollTop = beginValue * (1 - easeInOutCubic(progress));\n rAF(frameFunc);\n } else {\n el.scrollTop = 0;\n }\n };\n rAF(frameFunc);\n }\n },\n\n beforeDestroy: function beforeDestroy() {\n this.container.removeEventListener('scroll', this.throttledScrollHandler);\n }\n});\n// CONCATENATED MODULE: ./packages/backtop/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_backtop_src_mainvue_type_script_lang_js_ = (backtop_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/backtop/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar backtop_src_main_component = normalizeComponent(\n packages_backtop_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_257dd4a9_render,\n mainvue_type_template_id_257dd4a9_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var backtop_src_main_api; }\nbacktop_src_main_component.options.__file = \"packages/backtop/src/main.vue\"\n/* harmony default export */ var backtop_src_main = (backtop_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/backtop/index.js\n\n\n/* istanbul ignore next */\nbacktop_src_main.install = function (Vue) {\n Vue.component(backtop_src_main.name, backtop_src_main);\n};\n\n/* harmony default export */ var backtop = (backtop_src_main);\n// CONCATENATED MODULE: ./packages/infinite-scroll/src/main.js\n\n\n\n\nvar getStyleComputedProperty = function getStyleComputedProperty(element, property) {\n if (element === window) {\n element = document.documentElement;\n }\n\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n};\n\nvar entries = function entries(obj) {\n return Object.keys(obj || {}).map(function (key) {\n return [key, obj[key]];\n });\n};\n\nvar getPositionSize = function getPositionSize(el, prop) {\n return el === window || el === document ? document.documentElement[prop] : el[prop];\n};\n\nvar getOffsetHeight = function getOffsetHeight(el) {\n return getPositionSize(el, 'offsetHeight');\n};\n\nvar getClientHeight = function getClientHeight(el) {\n return getPositionSize(el, 'clientHeight');\n};\n\nvar scope = 'ElInfiniteScroll';\nvar attributes = {\n delay: {\n type: Number,\n default: 200\n },\n distance: {\n type: Number,\n default: 0\n },\n disabled: {\n type: Boolean,\n default: false\n },\n immediate: {\n type: Boolean,\n default: true\n }\n};\n\nvar main_getScrollOptions = function getScrollOptions(el, vm) {\n if (!Object(types_[\"isHtmlElement\"])(el)) return {};\n\n return entries(attributes).reduce(function (map, _ref) {\n var key = _ref[0],\n option = _ref[1];\n var type = option.type,\n defaultValue = option.default;\n\n var value = el.getAttribute('infinite-scroll-' + key);\n value = Object(types_[\"isUndefined\"])(vm[value]) ? value : vm[value];\n switch (type) {\n case Number:\n value = Number(value);\n value = Number.isNaN(value) ? defaultValue : value;\n break;\n case Boolean:\n value = Object(types_[\"isDefined\"])(value) ? value === 'false' ? false : Boolean(value) : defaultValue;\n break;\n default:\n value = type(value);\n }\n map[key] = value;\n return map;\n }, {});\n};\n\nvar getElementTop = function getElementTop(el) {\n return el.getBoundingClientRect().top;\n};\n\nvar main_handleScroll = function handleScroll(cb) {\n var _scope = this[scope],\n el = _scope.el,\n vm = _scope.vm,\n container = _scope.container,\n observer = _scope.observer;\n\n var _getScrollOptions = main_getScrollOptions(el, vm),\n distance = _getScrollOptions.distance,\n disabled = _getScrollOptions.disabled;\n\n if (disabled) return;\n\n var containerInfo = container.getBoundingClientRect();\n if (!containerInfo.width && !containerInfo.height) return;\n\n var shouldTrigger = false;\n\n if (container === el) {\n // be aware of difference between clientHeight & offsetHeight & window.getComputedStyle().height\n var scrollBottom = container.scrollTop + getClientHeight(container);\n shouldTrigger = container.scrollHeight - scrollBottom <= distance;\n } else {\n var heightBelowTop = getOffsetHeight(el) + getElementTop(el) - getElementTop(container);\n var offsetHeight = getOffsetHeight(container);\n var borderBottom = Number.parseFloat(getStyleComputedProperty(container, 'borderBottomWidth'));\n shouldTrigger = heightBelowTop - offsetHeight + borderBottom <= distance;\n }\n\n if (shouldTrigger && Object(types_[\"isFunction\"])(cb)) {\n cb.call(vm);\n } else if (observer) {\n observer.disconnect();\n this[scope].observer = null;\n }\n};\n\n/* harmony default export */ var infinite_scroll_src_main = ({\n name: 'InfiniteScroll',\n inserted: function inserted(el, binding, vnode) {\n var cb = binding.value;\n\n var vm = vnode.context;\n // only include vertical scroll\n var container = Object(dom_[\"getScrollContainer\"])(el, true);\n\n var _getScrollOptions2 = main_getScrollOptions(el, vm),\n delay = _getScrollOptions2.delay,\n immediate = _getScrollOptions2.immediate;\n\n var onScroll = debounce_default()(delay, main_handleScroll.bind(el, cb));\n\n el[scope] = { el: el, vm: vm, container: container, onScroll: onScroll };\n\n if (container) {\n container.addEventListener('scroll', onScroll);\n\n if (immediate) {\n var observer = el[scope].observer = new MutationObserver(onScroll);\n observer.observe(container, { childList: true, subtree: true });\n onScroll();\n }\n }\n },\n unbind: function unbind(el) {\n var _el$scope = el[scope],\n container = _el$scope.container,\n onScroll = _el$scope.onScroll;\n\n if (container) {\n container.removeEventListener('scroll', onScroll);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/infinite-scroll/index.js\n\n\n/* istanbul ignore next */\ninfinite_scroll_src_main.install = function (Vue) {\n Vue.directive(infinite_scroll_src_main.name, infinite_scroll_src_main);\n};\n\n/* harmony default export */ var infinite_scroll = (infinite_scroll_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/page-header/src/main.vue?vue&type=template&id=5070954c&\nvar mainvue_type_template_id_5070954c_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-page-header\" }, [\n _c(\n \"div\",\n {\n staticClass: \"el-page-header__left\",\n on: {\n click: function($event) {\n _vm.$emit(\"back\")\n }\n }\n },\n [\n _c(\"i\", { staticClass: \"el-icon-back\" }),\n _c(\n \"div\",\n { staticClass: \"el-page-header__title\" },\n [_vm._t(\"title\", [_vm._v(_vm._s(_vm.title))])],\n 2\n )\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"el-page-header__content\" },\n [_vm._t(\"content\", [_vm._v(_vm._s(_vm.content))])],\n 2\n )\n ])\n}\nvar mainvue_type_template_id_5070954c_staticRenderFns = []\nmainvue_type_template_id_5070954c_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/page-header/src/main.vue?vue&type=template&id=5070954c&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/page-header/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var page_header_src_mainvue_type_script_lang_js_ = ({\n name: 'ElPageHeader',\n\n props: {\n title: {\n type: String,\n default: function _default() {\n return Object(lib_locale_[\"t\"])('el.pageHeader.title');\n }\n },\n content: String\n }\n});\n// CONCATENATED MODULE: ./packages/page-header/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_page_header_src_mainvue_type_script_lang_js_ = (page_header_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/page-header/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar page_header_src_main_component = normalizeComponent(\n packages_page_header_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_5070954c_render,\n mainvue_type_template_id_5070954c_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var page_header_src_main_api; }\npage_header_src_main_component.options.__file = \"packages/page-header/src/main.vue\"\n/* harmony default export */ var page_header_src_main = (page_header_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/page-header/index.js\n\n\n/* istanbul ignore next */\npage_header_src_main.install = function (Vue) {\n Vue.component(page_header_src_main.name, page_header_src_main);\n};\n\n/* harmony default export */ var page_header = (page_header_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-panel.vue?vue&type=template&id=34932346&\nvar cascader_panelvue_type_template_id_34932346_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\"el-cascader-panel\", _vm.border && \"is-bordered\"],\n on: { keydown: _vm.handleKeyDown }\n },\n _vm._l(_vm.menus, function(menu, index) {\n return _c(\"cascader-menu\", {\n key: index,\n ref: \"menu\",\n refInFor: true,\n attrs: { index: index, nodes: menu }\n })\n }),\n 1\n )\n}\nvar cascader_panelvue_type_template_id_34932346_staticRenderFns = []\ncascader_panelvue_type_template_id_34932346_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue?vue&type=template&id=34932346&\n\n// EXTERNAL MODULE: external \"element-ui/lib/radio\"\nvar radio_ = __nested_webpack_require_8926__(44);\nvar radio_default = /*#__PURE__*/__nested_webpack_require_8926__.n(radio_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-node.vue?vue&type=script&lang=js&\n\n\n\n\n\n\nvar stopPropagation = function stopPropagation(e) {\n return e.stopPropagation();\n};\n\n/* harmony default export */ var cascader_nodevue_type_script_lang_js_ = ({\n inject: ['panel'],\n\n components: {\n ElCheckbox: checkbox_default.a,\n ElRadio: radio_default.a\n },\n\n props: {\n node: {\n required: true\n },\n nodeId: String\n },\n\n computed: {\n config: function config() {\n return this.panel.config;\n },\n isLeaf: function isLeaf() {\n return this.node.isLeaf;\n },\n isDisabled: function isDisabled() {\n return this.node.isDisabled;\n },\n checkedValue: function checkedValue() {\n return this.panel.checkedValue;\n },\n isChecked: function isChecked() {\n return this.node.isSameNode(this.checkedValue);\n },\n inActivePath: function inActivePath() {\n return this.isInPath(this.panel.activePath);\n },\n inCheckedPath: function inCheckedPath() {\n var _this = this;\n\n if (!this.config.checkStrictly) return false;\n\n return this.panel.checkedNodePaths.some(function (checkedPath) {\n return _this.isInPath(checkedPath);\n });\n },\n value: function value() {\n return this.node.getValueByOption();\n }\n },\n\n methods: {\n handleExpand: function handleExpand() {\n var _this2 = this;\n\n var panel = this.panel,\n node = this.node,\n isDisabled = this.isDisabled,\n config = this.config;\n var multiple = config.multiple,\n checkStrictly = config.checkStrictly;\n\n\n if (!checkStrictly && isDisabled || node.loading) return;\n\n if (config.lazy && !node.loaded) {\n panel.lazyLoad(node, function () {\n // do not use cached leaf value here, invoke this.isLeaf to get new value.\n var isLeaf = _this2.isLeaf;\n\n\n if (!isLeaf) _this2.handleExpand();\n if (multiple) {\n // if leaf sync checked state, else clear checked state\n var checked = isLeaf ? node.checked : false;\n _this2.handleMultiCheckChange(checked);\n }\n });\n } else {\n panel.handleExpand(node);\n }\n },\n handleCheckChange: function handleCheckChange() {\n var panel = this.panel,\n value = this.value,\n node = this.node;\n\n panel.handleCheckChange(value);\n panel.handleExpand(node);\n },\n handleMultiCheckChange: function handleMultiCheckChange(checked) {\n this.node.doCheck(checked);\n this.panel.calculateMultiCheckedValue();\n },\n isInPath: function isInPath(pathNodes) {\n var node = this.node;\n\n var selectedPathNode = pathNodes[node.level - 1] || {};\n return selectedPathNode.uid === node.uid;\n },\n renderPrefix: function renderPrefix(h) {\n var isLeaf = this.isLeaf,\n isChecked = this.isChecked,\n config = this.config;\n var checkStrictly = config.checkStrictly,\n multiple = config.multiple;\n\n\n if (multiple) {\n return this.renderCheckbox(h);\n } else if (checkStrictly) {\n return this.renderRadio(h);\n } else if (isLeaf && isChecked) {\n return this.renderCheckIcon(h);\n }\n\n return null;\n },\n renderPostfix: function renderPostfix(h) {\n var node = this.node,\n isLeaf = this.isLeaf;\n\n\n if (node.loading) {\n return this.renderLoadingIcon(h);\n } else if (!isLeaf) {\n return this.renderExpandIcon(h);\n }\n\n return null;\n },\n renderCheckbox: function renderCheckbox(h) {\n var node = this.node,\n config = this.config,\n isDisabled = this.isDisabled;\n\n var events = {\n on: { change: this.handleMultiCheckChange },\n nativeOn: {}\n };\n\n if (config.checkStrictly) {\n // when every node is selectable, click event should not trigger expand event.\n events.nativeOn.click = stopPropagation;\n }\n\n return h('el-checkbox', external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n value: node.checked,\n indeterminate: node.indeterminate,\n disabled: isDisabled\n }\n }, events]));\n },\n renderRadio: function renderRadio(h) {\n var checkedValue = this.checkedValue,\n value = this.value,\n isDisabled = this.isDisabled;\n\n // to keep same reference if value cause radio's checked state is calculated by reference comparision;\n\n if (Object(util_[\"isEqual\"])(value, checkedValue)) {\n value = checkedValue;\n }\n\n return h(\n 'el-radio',\n {\n attrs: {\n value: checkedValue,\n label: value,\n disabled: isDisabled\n },\n on: {\n 'change': this.handleCheckChange\n },\n nativeOn: {\n 'click': stopPropagation\n }\n },\n [h('span')]\n );\n },\n renderCheckIcon: function renderCheckIcon(h) {\n return h('i', { 'class': 'el-icon-check el-cascader-node__prefix' });\n },\n renderLoadingIcon: function renderLoadingIcon(h) {\n return h('i', { 'class': 'el-icon-loading el-cascader-node__postfix' });\n },\n renderExpandIcon: function renderExpandIcon(h) {\n return h('i', { 'class': 'el-icon-arrow-right el-cascader-node__postfix' });\n },\n renderContent: function renderContent(h) {\n var panel = this.panel,\n node = this.node;\n\n var render = panel.renderLabelFn;\n var vnode = render ? render({ node: node, data: node.data }) : null;\n\n return h(\n 'span',\n { 'class': 'el-cascader-node__label' },\n [vnode || node.label]\n );\n }\n },\n\n render: function render(h) {\n var _this3 = this;\n\n var inActivePath = this.inActivePath,\n inCheckedPath = this.inCheckedPath,\n isChecked = this.isChecked,\n isLeaf = this.isLeaf,\n isDisabled = this.isDisabled,\n config = this.config,\n nodeId = this.nodeId;\n var expandTrigger = config.expandTrigger,\n checkStrictly = config.checkStrictly,\n multiple = config.multiple;\n\n var disabled = !checkStrictly && isDisabled;\n var events = { on: {} };\n\n if (expandTrigger === 'click') {\n events.on.click = this.handleExpand;\n } else {\n events.on.mouseenter = function (e) {\n _this3.handleExpand();\n _this3.$emit('expand', e);\n };\n events.on.focus = function (e) {\n _this3.handleExpand();\n _this3.$emit('expand', e);\n };\n }\n if (isLeaf && !isDisabled && !checkStrictly && !multiple) {\n events.on.click = this.handleCheckChange;\n }\n\n return h(\n 'li',\n external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n role: 'menuitem',\n id: nodeId,\n 'aria-expanded': inActivePath,\n tabindex: disabled ? null : -1\n },\n 'class': {\n 'el-cascader-node': true,\n 'is-selectable': checkStrictly,\n 'in-active-path': inActivePath,\n 'in-checked-path': inCheckedPath,\n 'is-active': isChecked,\n 'is-disabled': disabled\n }\n }, events]),\n [this.renderPrefix(h), this.renderContent(h), this.renderPostfix(h)]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-node.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_nodevue_type_script_lang_js_ = (cascader_nodevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-node.vue\nvar cascader_node_render, cascader_node_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar cascader_node_component = normalizeComponent(\n src_cascader_nodevue_type_script_lang_js_,\n cascader_node_render,\n cascader_node_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_node_api; }\ncascader_node_component.options.__file = \"packages/cascader-panel/src/cascader-node.vue\"\n/* harmony default export */ var cascader_node = (cascader_node_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-menu.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n/* harmony default export */ var cascader_menuvue_type_script_lang_js_ = ({\n name: 'ElCascaderMenu',\n\n mixins: [locale_default.a],\n\n inject: ['panel'],\n\n components: {\n ElScrollbar: scrollbar_default.a,\n CascaderNode: cascader_node\n },\n\n props: {\n nodes: {\n type: Array,\n required: true\n },\n index: Number\n },\n\n data: function data() {\n return {\n activeNode: null,\n hoverTimer: null,\n id: Object(util_[\"generateId\"])()\n };\n },\n\n\n computed: {\n isEmpty: function isEmpty() {\n return !this.nodes.length;\n },\n menuId: function menuId() {\n return 'cascader-menu-' + this.id + '-' + this.index;\n }\n },\n\n methods: {\n handleExpand: function handleExpand(e) {\n this.activeNode = e.target;\n },\n handleMouseMove: function handleMouseMove(e) {\n var activeNode = this.activeNode,\n hoverTimer = this.hoverTimer;\n var hoverZone = this.$refs.hoverZone;\n\n\n if (!activeNode || !hoverZone) return;\n\n if (activeNode.contains(e.target)) {\n clearTimeout(hoverTimer);\n\n var _$el$getBoundingClien = this.$el.getBoundingClientRect(),\n left = _$el$getBoundingClien.left;\n\n var startX = e.clientX - left;\n var _$el = this.$el,\n offsetWidth = _$el.offsetWidth,\n offsetHeight = _$el.offsetHeight;\n\n var top = activeNode.offsetTop;\n var bottom = top + activeNode.offsetHeight;\n\n hoverZone.innerHTML = '\\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M' + startX + ' ' + top + ' L' + offsetWidth + ' 0 V' + top + ' Z\" />\\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M' + startX + ' ' + bottom + ' L' + offsetWidth + ' ' + offsetHeight + ' V' + bottom + ' Z\" />\\n ';\n } else if (!hoverTimer) {\n this.hoverTimer = setTimeout(this.clearHoverZone, this.panel.config.hoverThreshold);\n }\n },\n clearHoverZone: function clearHoverZone() {\n var hoverZone = this.$refs.hoverZone;\n\n if (!hoverZone) return;\n hoverZone.innerHTML = '';\n },\n renderEmptyText: function renderEmptyText(h) {\n return h(\n 'div',\n { 'class': 'el-cascader-menu__empty-text' },\n [this.t('el.cascader.noData')]\n );\n },\n renderNodeList: function renderNodeList(h) {\n var menuId = this.menuId;\n var isHoverMenu = this.panel.isHoverMenu;\n\n var events = { on: {} };\n\n if (isHoverMenu) {\n events.on.expand = this.handleExpand;\n }\n\n var nodes = this.nodes.map(function (node, index) {\n var hasChildren = node.hasChildren;\n\n return h('cascader-node', external_babel_helper_vue_jsx_merge_props_default()([{\n key: node.uid,\n attrs: { node: node,\n 'node-id': menuId + '-' + index,\n 'aria-haspopup': hasChildren,\n 'aria-owns': hasChildren ? menuId : null\n }\n }, events]));\n });\n\n return [].concat(nodes, [isHoverMenu ? h('svg', { ref: 'hoverZone', 'class': 'el-cascader-menu__hover-zone' }) : null]);\n }\n },\n\n render: function render(h) {\n var isEmpty = this.isEmpty,\n menuId = this.menuId;\n\n var events = { nativeOn: {} };\n\n // optimize hover to expand experience (#8010)\n if (this.panel.isHoverMenu) {\n events.nativeOn.mousemove = this.handleMouseMove;\n // events.nativeOn.mouseleave = this.clearHoverZone;\n }\n\n return h(\n 'el-scrollbar',\n external_babel_helper_vue_jsx_merge_props_default()([{\n attrs: {\n tag: 'ul',\n role: 'menu',\n id: menuId,\n\n 'wrap-class': 'el-cascader-menu__wrap',\n 'view-class': {\n 'el-cascader-menu__list': true,\n 'is-empty': isEmpty\n }\n },\n 'class': 'el-cascader-menu' }, events]),\n [isEmpty ? this.renderEmptyText(h) : this.renderNodeList(h)]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_menuvue_type_script_lang_js_ = (cascader_menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-menu.vue\nvar cascader_menu_render, cascader_menu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar cascader_menu_component = normalizeComponent(\n src_cascader_menuvue_type_script_lang_js_,\n cascader_menu_render,\n cascader_menu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_menu_api; }\ncascader_menu_component.options.__file = \"packages/cascader-panel/src/cascader-menu.vue\"\n/* harmony default export */ var cascader_menu = (cascader_menu_component.exports);\n// CONCATENATED MODULE: ./packages/cascader-panel/src/node.js\nvar node_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction src_node_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar uid = 0;\n\nvar src_node_Node = function () {\n function Node(data, config, parentNode) {\n src_node_classCallCheck(this, Node);\n\n this.data = data;\n this.config = config;\n this.parent = parentNode || null;\n this.level = !this.parent ? 1 : this.parent.level + 1;\n this.uid = uid++;\n\n this.initState();\n this.initChildren();\n }\n\n Node.prototype.initState = function initState() {\n var _config = this.config,\n valueKey = _config.value,\n labelKey = _config.label;\n\n\n this.value = this.data[valueKey];\n this.label = this.data[labelKey];\n this.pathNodes = this.calculatePathNodes();\n this.path = this.pathNodes.map(function (node) {\n return node.value;\n });\n this.pathLabels = this.pathNodes.map(function (node) {\n return node.label;\n });\n\n // lazy load\n this.loading = false;\n this.loaded = false;\n };\n\n Node.prototype.initChildren = function initChildren() {\n var _this = this;\n\n var config = this.config;\n\n var childrenKey = config.children;\n var childrenData = this.data[childrenKey];\n this.hasChildren = Array.isArray(childrenData);\n this.children = (childrenData || []).map(function (child) {\n return new Node(child, config, _this);\n });\n };\n\n Node.prototype.calculatePathNodes = function calculatePathNodes() {\n var nodes = [this];\n var parent = this.parent;\n\n while (parent) {\n nodes.unshift(parent);\n parent = parent.parent;\n }\n\n return nodes;\n };\n\n Node.prototype.getPath = function getPath() {\n return this.path;\n };\n\n Node.prototype.getValue = function getValue() {\n return this.value;\n };\n\n Node.prototype.getValueByOption = function getValueByOption() {\n return this.config.emitPath ? this.getPath() : this.getValue();\n };\n\n Node.prototype.getText = function getText(allLevels, separator) {\n return allLevels ? this.pathLabels.join(separator) : this.label;\n };\n\n Node.prototype.isSameNode = function isSameNode(checkedValue) {\n var value = this.getValueByOption();\n return this.config.multiple && Array.isArray(checkedValue) ? checkedValue.some(function (val) {\n return Object(util_[\"isEqual\"])(val, value);\n }) : Object(util_[\"isEqual\"])(checkedValue, value);\n };\n\n Node.prototype.broadcast = function broadcast(event) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var handlerName = 'onParent' + Object(util_[\"capitalize\"])(event);\n\n this.children.forEach(function (child) {\n if (child) {\n // bottom up\n child.broadcast.apply(child, [event].concat(args));\n child[handlerName] && child[handlerName].apply(child, args);\n }\n });\n };\n\n Node.prototype.emit = function emit(event) {\n var parent = this.parent;\n\n var handlerName = 'onChild' + Object(util_[\"capitalize\"])(event);\n if (parent) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n parent[handlerName] && parent[handlerName].apply(parent, args);\n parent.emit.apply(parent, [event].concat(args));\n }\n };\n\n Node.prototype.onParentCheck = function onParentCheck(checked) {\n if (!this.isDisabled) {\n this.setCheckState(checked);\n }\n };\n\n Node.prototype.onChildCheck = function onChildCheck() {\n var children = this.children;\n\n var validChildren = children.filter(function (child) {\n return !child.isDisabled;\n });\n var checked = validChildren.length ? validChildren.every(function (child) {\n return child.checked;\n }) : false;\n\n this.setCheckState(checked);\n };\n\n Node.prototype.setCheckState = function setCheckState(checked) {\n var totalNum = this.children.length;\n var checkedNum = this.children.reduce(function (c, p) {\n var num = p.checked ? 1 : p.indeterminate ? 0.5 : 0;\n return c + num;\n }, 0);\n\n this.checked = checked;\n this.indeterminate = checkedNum !== totalNum && checkedNum > 0;\n };\n\n Node.prototype.syncCheckState = function syncCheckState(checkedValue) {\n var value = this.getValueByOption();\n var checked = this.isSameNode(checkedValue, value);\n\n this.doCheck(checked);\n };\n\n Node.prototype.doCheck = function doCheck(checked) {\n if (this.checked !== checked) {\n if (this.config.checkStrictly) {\n this.checked = checked;\n } else {\n // bottom up to unify the calculation of the indeterminate state\n this.broadcast('check', checked);\n this.setCheckState(checked);\n this.emit('check');\n }\n }\n };\n\n node_createClass(Node, [{\n key: 'isDisabled',\n get: function get() {\n var data = this.data,\n parent = this.parent,\n config = this.config;\n\n var disabledKey = config.disabled;\n var checkStrictly = config.checkStrictly;\n\n return data[disabledKey] || !checkStrictly && parent && parent.isDisabled;\n }\n }, {\n key: 'isLeaf',\n get: function get() {\n var data = this.data,\n loaded = this.loaded,\n hasChildren = this.hasChildren,\n children = this.children;\n var _config2 = this.config,\n lazy = _config2.lazy,\n leafKey = _config2.leaf;\n\n if (lazy) {\n var isLeaf = Object(shared_[\"isDef\"])(data[leafKey]) ? data[leafKey] : loaded ? !children.length : false;\n this.hasChildren = !isLeaf;\n return isLeaf;\n }\n return !hasChildren;\n }\n }]);\n\n return Node;\n}();\n\n/* harmony default export */ var src_node = (src_node_Node);\n// CONCATENATED MODULE: ./packages/cascader-panel/src/store.js\nfunction store_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar flatNodes = function flatNodes(data, leafOnly) {\n return data.reduce(function (res, node) {\n if (node.isLeaf) {\n res.push(node);\n } else {\n !leafOnly && res.push(node);\n res = res.concat(flatNodes(node.children, leafOnly));\n }\n return res;\n }, []);\n};\n\nvar store_Store = function () {\n function Store(data, config) {\n store_classCallCheck(this, Store);\n\n this.config = config;\n this.initNodes(data);\n }\n\n Store.prototype.initNodes = function initNodes(data) {\n var _this = this;\n\n data = Object(util_[\"coerceTruthyValueToArray\"])(data);\n this.nodes = data.map(function (nodeData) {\n return new src_node(nodeData, _this.config);\n });\n this.flattedNodes = this.getFlattedNodes(false, false);\n this.leafNodes = this.getFlattedNodes(true, false);\n };\n\n Store.prototype.appendNode = function appendNode(nodeData, parentNode) {\n var node = new src_node(nodeData, this.config, parentNode);\n var children = parentNode ? parentNode.children : this.nodes;\n\n children.push(node);\n };\n\n Store.prototype.appendNodes = function appendNodes(nodeDataList, parentNode) {\n var _this2 = this;\n\n nodeDataList = Object(util_[\"coerceTruthyValueToArray\"])(nodeDataList);\n nodeDataList.forEach(function (nodeData) {\n return _this2.appendNode(nodeData, parentNode);\n });\n };\n\n Store.prototype.getNodes = function getNodes() {\n return this.nodes;\n };\n\n Store.prototype.getFlattedNodes = function getFlattedNodes(leafOnly) {\n var cached = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var cachedNodes = leafOnly ? this.leafNodes : this.flattedNodes;\n return cached ? cachedNodes : flatNodes(this.nodes, leafOnly);\n };\n\n Store.prototype.getNodeByValue = function getNodeByValue(value) {\n var nodes = this.getFlattedNodes(false, !this.config.lazy).filter(function (node) {\n return Object(util_[\"valueEquals\"])(node.path, value) || node.value === value;\n });\n return nodes && nodes.length ? nodes[0] : null;\n };\n\n return Store;\n}();\n\n/* harmony default export */ var cascader_panel_src_store = (store_Store);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/cascader-panel/src/cascader-panel.vue?vue&type=script&lang=js&\nvar cascader_panelvue_type_script_lang_js_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\nvar cascader_panelvue_type_script_lang_js_KeyCode = aria_utils_default.a.keys;\n\nvar DefaultProps = {\n expandTrigger: 'click', // or hover\n multiple: false,\n checkStrictly: false, // whether all nodes can be selected\n emitPath: true, // wether to emit an array of all levels value in which node is located\n lazy: false,\n lazyLoad: util_[\"noop\"],\n value: 'value',\n label: 'label',\n children: 'children',\n leaf: 'leaf',\n disabled: 'disabled',\n hoverThreshold: 500\n};\n\nvar cascader_panelvue_type_script_lang_js_isLeaf = function isLeaf(el) {\n return !el.getAttribute('aria-owns');\n};\n\nvar getSibling = function getSibling(el, distance) {\n var parentNode = el.parentNode;\n\n if (parentNode) {\n var siblings = parentNode.querySelectorAll('.el-cascader-node[tabindex=\"-1\"]');\n var index = Array.prototype.indexOf.call(siblings, el);\n return siblings[index + distance] || null;\n }\n return null;\n};\n\nvar getMenuIndex = function getMenuIndex(el, distance) {\n if (!el) return;\n var pieces = el.id.split('-');\n return Number(pieces[pieces.length - 2]);\n};\n\nvar focusNode = function focusNode(el) {\n if (!el) return;\n el.focus();\n !cascader_panelvue_type_script_lang_js_isLeaf(el) && el.click();\n};\n\nvar checkNode = function checkNode(el) {\n if (!el) return;\n\n var input = el.querySelector('input');\n if (input) {\n input.click();\n } else if (cascader_panelvue_type_script_lang_js_isLeaf(el)) {\n el.click();\n }\n};\n\n/* harmony default export */ var cascader_panelvue_type_script_lang_js_ = ({\n name: 'ElCascaderPanel',\n\n components: {\n CascaderMenu: cascader_menu\n },\n\n props: {\n value: {},\n options: Array,\n props: Object,\n border: {\n type: Boolean,\n default: true\n },\n renderLabel: Function\n },\n\n provide: function provide() {\n return {\n panel: this\n };\n },\n data: function data() {\n return {\n checkedValue: null,\n checkedNodePaths: [],\n store: [],\n menus: [],\n activePath: [],\n loadCount: 0\n };\n },\n\n\n computed: {\n config: function config() {\n return merge_default()(cascader_panelvue_type_script_lang_js_extends({}, DefaultProps), this.props || {});\n },\n multiple: function multiple() {\n return this.config.multiple;\n },\n checkStrictly: function checkStrictly() {\n return this.config.checkStrictly;\n },\n leafOnly: function leafOnly() {\n return !this.checkStrictly;\n },\n isHoverMenu: function isHoverMenu() {\n return this.config.expandTrigger === 'hover';\n },\n renderLabelFn: function renderLabelFn() {\n return this.renderLabel || this.$scopedSlots.default;\n }\n },\n\n watch: {\n value: function value() {\n this.syncCheckedValue();\n this.checkStrictly && this.calculateCheckedNodePaths();\n },\n\n options: {\n handler: function handler() {\n this.initStore();\n },\n immediate: true,\n deep: true\n },\n checkedValue: function checkedValue(val) {\n if (!Object(util_[\"isEqual\"])(val, this.value)) {\n this.checkStrictly && this.calculateCheckedNodePaths();\n this.$emit('input', val);\n this.$emit('change', val);\n }\n }\n },\n\n mounted: function mounted() {\n if (!this.isEmptyValue(this.value)) {\n this.syncCheckedValue();\n }\n },\n\n\n methods: {\n initStore: function initStore() {\n var config = this.config,\n options = this.options;\n\n if (config.lazy && Object(util_[\"isEmpty\"])(options)) {\n this.lazyLoad();\n } else {\n this.store = new cascader_panel_src_store(options, config);\n this.menus = [this.store.getNodes()];\n this.syncMenuState();\n }\n },\n syncCheckedValue: function syncCheckedValue() {\n var value = this.value,\n checkedValue = this.checkedValue;\n\n if (!Object(util_[\"isEqual\"])(value, checkedValue)) {\n this.activePath = [];\n this.checkedValue = value;\n this.syncMenuState();\n }\n },\n syncMenuState: function syncMenuState() {\n var multiple = this.multiple,\n checkStrictly = this.checkStrictly;\n\n this.syncActivePath();\n multiple && this.syncMultiCheckState();\n checkStrictly && this.calculateCheckedNodePaths();\n this.$nextTick(this.scrollIntoView);\n },\n syncMultiCheckState: function syncMultiCheckState() {\n var _this = this;\n\n var nodes = this.getFlattedNodes(this.leafOnly);\n\n nodes.forEach(function (node) {\n node.syncCheckState(_this.checkedValue);\n });\n },\n isEmptyValue: function isEmptyValue(val) {\n var multiple = this.multiple,\n config = this.config;\n var emitPath = config.emitPath;\n\n if (multiple || emitPath) {\n return Object(util_[\"isEmpty\"])(val);\n }\n return false;\n },\n syncActivePath: function syncActivePath() {\n var _this2 = this;\n\n var store = this.store,\n multiple = this.multiple,\n activePath = this.activePath,\n checkedValue = this.checkedValue;\n\n\n if (!Object(util_[\"isEmpty\"])(activePath)) {\n var nodes = activePath.map(function (node) {\n return _this2.getNodeByValue(node.getValue());\n });\n this.expandNodes(nodes);\n } else if (!this.isEmptyValue(checkedValue)) {\n var value = multiple ? checkedValue[0] : checkedValue;\n var checkedNode = this.getNodeByValue(value) || {};\n var _nodes = (checkedNode.pathNodes || []).slice(0, -1);\n this.expandNodes(_nodes);\n } else {\n this.activePath = [];\n this.menus = [store.getNodes()];\n }\n },\n expandNodes: function expandNodes(nodes) {\n var _this3 = this;\n\n nodes.forEach(function (node) {\n return _this3.handleExpand(node, true /* silent */);\n });\n },\n calculateCheckedNodePaths: function calculateCheckedNodePaths() {\n var _this4 = this;\n\n var checkedValue = this.checkedValue,\n multiple = this.multiple;\n\n var checkedValues = multiple ? Object(util_[\"coerceTruthyValueToArray\"])(checkedValue) : [checkedValue];\n this.checkedNodePaths = checkedValues.map(function (v) {\n var checkedNode = _this4.getNodeByValue(v);\n return checkedNode ? checkedNode.pathNodes : [];\n });\n },\n handleKeyDown: function handleKeyDown(e) {\n var target = e.target,\n keyCode = e.keyCode;\n\n\n switch (keyCode) {\n case cascader_panelvue_type_script_lang_js_KeyCode.up:\n var prev = getSibling(target, -1);\n focusNode(prev);\n break;\n case cascader_panelvue_type_script_lang_js_KeyCode.down:\n var next = getSibling(target, 1);\n focusNode(next);\n break;\n case cascader_panelvue_type_script_lang_js_KeyCode.left:\n var preMenu = this.$refs.menu[getMenuIndex(target) - 1];\n if (preMenu) {\n var expandedNode = preMenu.$el.querySelector('.el-cascader-node[aria-expanded=\"true\"]');\n focusNode(expandedNode);\n }\n break;\n case cascader_panelvue_type_script_lang_js_KeyCode.right:\n var nextMenu = this.$refs.menu[getMenuIndex(target) + 1];\n if (nextMenu) {\n var firstNode = nextMenu.$el.querySelector('.el-cascader-node[tabindex=\"-1\"]');\n focusNode(firstNode);\n }\n break;\n case cascader_panelvue_type_script_lang_js_KeyCode.enter:\n checkNode(target);\n break;\n case cascader_panelvue_type_script_lang_js_KeyCode.esc:\n case cascader_panelvue_type_script_lang_js_KeyCode.tab:\n this.$emit('close');\n break;\n default:\n return;\n }\n },\n handleExpand: function handleExpand(node, silent) {\n var activePath = this.activePath;\n var level = node.level;\n\n var path = activePath.slice(0, level - 1);\n var menus = this.menus.slice(0, level);\n\n if (!node.isLeaf) {\n path.push(node);\n menus.push(node.children);\n }\n\n this.activePath = path;\n this.menus = menus;\n\n if (!silent) {\n var pathValues = path.map(function (node) {\n return node.getValue();\n });\n var activePathValues = activePath.map(function (node) {\n return node.getValue();\n });\n if (!Object(util_[\"valueEquals\"])(pathValues, activePathValues)) {\n this.$emit('active-item-change', pathValues); // Deprecated\n this.$emit('expand-change', pathValues);\n }\n }\n },\n handleCheckChange: function handleCheckChange(value) {\n this.checkedValue = value;\n },\n lazyLoad: function lazyLoad(node, onFullfiled) {\n var _this5 = this;\n\n var config = this.config;\n\n if (!node) {\n node = node || { root: true, level: 0 };\n this.store = new cascader_panel_src_store([], config);\n this.menus = [this.store.getNodes()];\n }\n node.loading = true;\n var resolve = function resolve(dataList) {\n var parent = node.root ? null : node;\n dataList && dataList.length && _this5.store.appendNodes(dataList, parent);\n node.loading = false;\n node.loaded = true;\n\n // dispose default value on lazy load mode\n if (Array.isArray(_this5.checkedValue)) {\n var nodeValue = _this5.checkedValue[_this5.loadCount++];\n var valueKey = _this5.config.value;\n var leafKey = _this5.config.leaf;\n\n if (Array.isArray(dataList) && dataList.filter(function (item) {\n return item[valueKey] === nodeValue;\n }).length > 0) {\n var checkedNode = _this5.store.getNodeByValue(nodeValue);\n\n if (!checkedNode.data[leafKey]) {\n _this5.lazyLoad(checkedNode, function () {\n _this5.handleExpand(checkedNode);\n });\n }\n\n if (_this5.loadCount === _this5.checkedValue.length) {\n _this5.$parent.computePresentText();\n }\n }\n }\n\n onFullfiled && onFullfiled(dataList);\n };\n config.lazyLoad(node, resolve);\n },\n\n\n /**\n * public methods\n */\n calculateMultiCheckedValue: function calculateMultiCheckedValue() {\n this.checkedValue = this.getCheckedNodes(this.leafOnly).map(function (node) {\n return node.getValueByOption();\n });\n },\n scrollIntoView: function scrollIntoView() {\n if (this.$isServer) return;\n\n var menus = this.$refs.menu || [];\n menus.forEach(function (menu) {\n var menuElement = menu.$el;\n if (menuElement) {\n var container = menuElement.querySelector('.el-scrollbar__wrap');\n var activeNode = menuElement.querySelector('.el-cascader-node.is-active') || menuElement.querySelector('.el-cascader-node.in-active-path');\n scroll_into_view_default()(container, activeNode);\n }\n });\n },\n getNodeByValue: function getNodeByValue(val) {\n return this.store.getNodeByValue(val);\n },\n getFlattedNodes: function getFlattedNodes(leafOnly) {\n var cached = !this.config.lazy;\n return this.store.getFlattedNodes(leafOnly, cached);\n },\n getCheckedNodes: function getCheckedNodes(leafOnly) {\n var checkedValue = this.checkedValue,\n multiple = this.multiple;\n\n if (multiple) {\n var nodes = this.getFlattedNodes(leafOnly);\n return nodes.filter(function (node) {\n return node.checked;\n });\n } else {\n return this.isEmptyValue(checkedValue) ? [] : [this.getNodeByValue(checkedValue)];\n }\n },\n clearCheckedNodes: function clearCheckedNodes() {\n var config = this.config,\n leafOnly = this.leafOnly;\n var multiple = config.multiple,\n emitPath = config.emitPath;\n\n if (multiple) {\n this.getCheckedNodes(leafOnly).filter(function (node) {\n return !node.isDisabled;\n }).forEach(function (node) {\n return node.doCheck(false);\n });\n this.calculateMultiCheckedValue();\n } else {\n this.checkedValue = emitPath ? [] : null;\n }\n }\n }\n});\n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_cascader_panelvue_type_script_lang_js_ = (cascader_panelvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/cascader-panel/src/cascader-panel.vue\n\n\n\n\n\n/* normalize component */\n\nvar cascader_panel_component = normalizeComponent(\n src_cascader_panelvue_type_script_lang_js_,\n cascader_panelvue_type_template_id_34932346_render,\n cascader_panelvue_type_template_id_34932346_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var cascader_panel_api; }\ncascader_panel_component.options.__file = \"packages/cascader-panel/src/cascader-panel.vue\"\n/* harmony default export */ var cascader_panel = (cascader_panel_component.exports);\n// CONCATENATED MODULE: ./packages/cascader-panel/index.js\n\n\n/* istanbul ignore next */\ncascader_panel.install = function (Vue) {\n Vue.component(cascader_panel.name, cascader_panel);\n};\n\n/* harmony default export */ var packages_cascader_panel = (cascader_panel);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/avatar/src/main.vue?vue&type=script&lang=js&\n\n/* harmony default export */ var avatar_src_mainvue_type_script_lang_js_ = ({\n name: 'ElAvatar',\n\n props: {\n size: {\n type: [Number, String],\n validator: function validator(val) {\n if (typeof val === 'string') {\n return ['large', 'medium', 'small'].includes(val);\n }\n return typeof val === 'number';\n }\n },\n shape: {\n type: String,\n default: 'circle',\n validator: function validator(val) {\n return ['circle', 'square'].includes(val);\n }\n },\n icon: String,\n src: String,\n alt: String,\n srcSet: String,\n error: Function,\n fit: {\n type: String,\n default: 'cover'\n }\n },\n\n data: function data() {\n return {\n isImageExist: true\n };\n },\n\n\n computed: {\n avatarClass: function avatarClass() {\n var size = this.size,\n icon = this.icon,\n shape = this.shape;\n\n var classList = ['el-avatar'];\n\n if (size && typeof size === 'string') {\n classList.push('el-avatar--' + size);\n }\n\n if (icon) {\n classList.push('el-avatar--icon');\n }\n\n if (shape) {\n classList.push('el-avatar--' + shape);\n }\n\n return classList.join(' ');\n }\n },\n\n methods: {\n handleError: function handleError() {\n var error = this.error;\n\n var errorFlag = error ? error() : undefined;\n if (errorFlag !== false) {\n this.isImageExist = false;\n }\n },\n renderAvatar: function renderAvatar() {\n var h = this.$createElement;\n var icon = this.icon,\n src = this.src,\n alt = this.alt,\n isImageExist = this.isImageExist,\n srcSet = this.srcSet,\n fit = this.fit;\n\n\n if (isImageExist && src) {\n return h('img', {\n attrs: {\n src: src,\n\n alt: alt,\n srcSet: srcSet\n },\n on: {\n 'error': this.handleError\n },\n style: { 'object-fit': fit } });\n }\n\n if (icon) {\n return h('i', { 'class': icon });\n }\n\n return this.$slots.default;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var avatarClass = this.avatarClass,\n size = this.size;\n\n\n var sizeStyle = typeof size === 'number' ? {\n height: size + 'px',\n width: size + 'px',\n lineHeight: size + 'px'\n } : {};\n\n return h(\n 'span',\n { 'class': avatarClass, style: sizeStyle },\n [this.renderAvatar()]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/avatar/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_avatar_src_mainvue_type_script_lang_js_ = (avatar_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/avatar/src/main.vue\nvar src_main_render, src_main_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar avatar_src_main_component = normalizeComponent(\n packages_avatar_src_mainvue_type_script_lang_js_,\n src_main_render,\n src_main_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var avatar_src_main_api; }\navatar_src_main_component.options.__file = \"packages/avatar/src/main.vue\"\n/* harmony default export */ var avatar_src_main = (avatar_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/avatar/index.js\n\n\n/* istanbul ignore next */\navatar_src_main.install = function (Vue) {\n Vue.component(avatar_src_main.name, avatar_src_main);\n};\n\n/* harmony default export */ var avatar = (avatar_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/drawer/src/main.vue?vue&type=template&id=a4885264&\nvar mainvue_type_template_id_a4885264_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n {\n attrs: { name: \"el-drawer-fade\" },\n on: { \"after-enter\": _vm.afterEnter, \"after-leave\": _vm.afterLeave }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-drawer__wrapper\",\n attrs: { tabindex: \"-1\" }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"el-drawer__container\",\n class: _vm.visible && \"el-drawer__open\",\n attrs: { role: \"document\", tabindex: \"-1\" },\n on: {\n click: function($event) {\n if ($event.target !== $event.currentTarget) {\n return null\n }\n return _vm.handleWrapperClick($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n ref: \"drawer\",\n staticClass: \"el-drawer\",\n class: [_vm.direction, _vm.customClass],\n style: _vm.isHorizontal\n ? \"width: \" + _vm.drawerSize\n : \"height: \" + _vm.drawerSize,\n attrs: {\n \"aria-modal\": \"true\",\n \"aria-labelledby\": \"el-drawer__title\",\n \"aria-label\": _vm.title,\n role: \"dialog\",\n tabindex: \"-1\"\n }\n },\n [\n _vm.withHeader\n ? _c(\n \"header\",\n {\n staticClass: \"el-drawer__header\",\n attrs: { id: \"el-drawer__title\" }\n },\n [\n _vm._t(\"title\", [\n _c(\n \"span\",\n { attrs: { role: \"heading\", title: _vm.title } },\n [_vm._v(_vm._s(_vm.title))]\n )\n ]),\n _vm.showClose\n ? _c(\n \"button\",\n {\n staticClass: \"el-drawer__close-btn\",\n attrs: {\n \"aria-label\":\n \"close \" + (_vm.title || \"drawer\"),\n type: \"button\"\n },\n on: { click: _vm.closeDrawer }\n },\n [\n _c(\"i\", {\n staticClass:\n \"el-dialog__close el-icon el-icon-close\"\n })\n ]\n )\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _vm.rendered\n ? _c(\n \"section\",\n { staticClass: \"el-drawer__body\" },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e()\n ]\n )\n ]\n )\n ]\n )\n ]\n )\n}\nvar mainvue_type_template_id_a4885264_staticRenderFns = []\nmainvue_type_template_id_a4885264_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/drawer/src/main.vue?vue&type=template&id=a4885264&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/drawer/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var drawer_src_mainvue_type_script_lang_js_ = ({\n name: 'ElDrawer',\n mixins: [popup_default.a, emitter_default.a],\n props: {\n appendToBody: {\n type: Boolean,\n default: false\n },\n beforeClose: {\n type: Function\n },\n customClass: {\n type: String,\n default: ''\n },\n closeOnPressEscape: {\n type: Boolean,\n default: true\n },\n destroyOnClose: {\n type: Boolean,\n default: false\n },\n modal: {\n type: Boolean,\n default: true\n },\n direction: {\n type: String,\n default: 'rtl',\n validator: function validator(val) {\n return ['ltr', 'rtl', 'ttb', 'btt'].indexOf(val) !== -1;\n }\n },\n modalAppendToBody: {\n type: Boolean,\n default: true\n },\n showClose: {\n type: Boolean,\n default: true\n },\n size: {\n type: [Number, String],\n default: '30%'\n },\n title: {\n type: String,\n default: ''\n },\n visible: {\n type: Boolean\n },\n wrapperClosable: {\n type: Boolean,\n default: true\n },\n withHeader: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n isHorizontal: function isHorizontal() {\n return this.direction === 'rtl' || this.direction === 'ltr';\n },\n drawerSize: function drawerSize() {\n return typeof this.size === 'number' ? this.size + 'px' : this.size;\n }\n },\n data: function data() {\n return {\n closed: false,\n prevActiveElement: null\n };\n },\n\n watch: {\n visible: function visible(val) {\n var _this = this;\n\n if (val) {\n this.closed = false;\n this.$emit('open');\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n this.prevActiveElement = document.activeElement;\n } else {\n if (!this.closed) {\n this.$emit('close');\n if (this.destroyOnClose === true) {\n this.rendered = false;\n }\n }\n this.$nextTick(function () {\n if (_this.prevActiveElement) {\n _this.prevActiveElement.focus();\n }\n });\n }\n }\n },\n methods: {\n afterEnter: function afterEnter() {\n this.$emit('opened');\n },\n afterLeave: function afterLeave() {\n this.$emit('closed');\n },\n hide: function hide(cancel) {\n if (cancel !== false) {\n this.$emit('update:visible', false);\n this.$emit('close');\n if (this.destroyOnClose === true) {\n this.rendered = false;\n }\n this.closed = true;\n }\n },\n handleWrapperClick: function handleWrapperClick() {\n if (this.wrapperClosable) {\n this.closeDrawer();\n }\n },\n closeDrawer: function closeDrawer() {\n if (typeof this.beforeClose === 'function') {\n this.beforeClose(this.hide);\n } else {\n this.hide();\n }\n },\n handleClose: function handleClose() {\n // This method here will be called by PopupManger, when the `closeOnPressEscape` was set to true\n // pressing `ESC` will call this method, and also close the drawer.\n // This method also calls `beforeClose` if there was one.\n this.closeDrawer();\n }\n },\n mounted: function mounted() {\n if (this.visible) {\n this.rendered = true;\n this.open();\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n }\n },\n destroyed: function destroyed() {\n // if appendToBody is true, remove DOM node after destroy\n if (this.appendToBody && this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/drawer/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_drawer_src_mainvue_type_script_lang_js_ = (drawer_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/drawer/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar drawer_src_main_component = normalizeComponent(\n packages_drawer_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_a4885264_render,\n mainvue_type_template_id_a4885264_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var drawer_src_main_api; }\ndrawer_src_main_component.options.__file = \"packages/drawer/src/main.vue\"\n/* harmony default export */ var drawer_src_main = (drawer_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/drawer/index.js\n\n\n/* istanbul ignore next */\ndrawer_src_main.install = function (Vue) {\n Vue.component(drawer_src_main.name, drawer_src_main);\n};\n\n/* harmony default export */ var drawer = (drawer_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/statistic/src/main.vue?vue&type=template&id=76339aa7&\nvar mainvue_type_template_id_76339aa7_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-statistic\" }, [\n _vm.title || _vm.$slots.title\n ? _c(\n \"div\",\n { staticClass: \"head\" },\n [\n _vm._t(\"title\", [\n _c(\"span\", { staticClass: \"title\" }, [\n _vm._v(\"\\n \" + _vm._s(_vm.title) + \"\\n \")\n ])\n ])\n ],\n 2\n )\n : _vm._e(),\n _c(\"div\", { staticClass: \"con\" }, [\n _vm.prefix || _vm.$slots.prefix\n ? _c(\n \"span\",\n { staticClass: \"prefix\" },\n [\n _vm._t(\"prefix\", [\n _vm._v(\"\\n \" + _vm._s(_vm.prefix) + \"\\n \")\n ])\n ],\n 2\n )\n : _vm._e(),\n _c(\n \"span\",\n { staticClass: \"number\", style: _vm.valueStyle },\n [_vm._t(\"formatter\", [_vm._v(\" \" + _vm._s(_vm.disposeValue))])],\n 2\n ),\n _vm.suffix || _vm.$slots.suffix\n ? _c(\n \"span\",\n { staticClass: \"suffix\" },\n [\n _vm._t(\"suffix\", [\n _vm._v(\"\\n \" + _vm._s(_vm.suffix) + \"\\n \")\n ])\n ],\n 2\n )\n : _vm._e()\n ])\n ])\n}\nvar mainvue_type_template_id_76339aa7_staticRenderFns = []\nmainvue_type_template_id_76339aa7_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/statistic/src/main.vue?vue&type=template&id=76339aa7&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/lodash\"\nvar lodash_ = __nested_webpack_require_8926__(28);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/statistic/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var statistic_src_mainvue_type_script_lang_js_ = ({\n name: 'ElStatistic',\n data: function data() {\n return {\n disposeValue: '',\n timeTask: null,\n REFRESH_INTERVAL: 1000 / 30\n };\n },\n\n props: {\n decimalSeparator: {\n type: String,\n default: '.'\n },\n groupSeparator: {\n type: String,\n default: ''\n },\n precision: {\n type: Number,\n default: null\n },\n value: {\n type: [String, Number, Date],\n default: ''\n },\n prefix: {\n type: String,\n default: ''\n },\n suffix: {\n type: String,\n default: ''\n },\n title: {\n type: [String, Number],\n default: ''\n },\n timeIndices: {\n type: Boolean,\n default: false\n },\n valueStyle: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n format: {\n type: String,\n default: 'HH:mm:ss:SSS'\n },\n rate: {\n type: Number,\n default: 1000\n }\n },\n created: function created() {\n this.branch();\n },\n\n watch: {\n value: function value() {\n this.branch();\n },\n groupSeparator: function groupSeparator() {\n this.dispose();\n },\n mulriple: function mulriple() {\n this.dispose();\n }\n },\n methods: {\n branch: function branch() {\n var timeIndices = this.timeIndices,\n countDown = this.countDown,\n dispose = this.dispose;\n\n if (timeIndices) {\n countDown(this.value.valueOf() || this.value);\n } else {\n dispose();\n }\n },\n magnification: function magnification(num) {\n var mulriple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var groupSeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ',';\n\n // magnification factor\n var level = String(mulriple).length;\n return num.replace(new RegExp('(\\\\d)(?=(\\\\d{' + (level - 1) + '})+$)', 'g'), '$1' + groupSeparator);\n },\n dispose: function dispose() {\n var value = this.value,\n rate = this.rate,\n groupSeparator = this.groupSeparator;\n\n if (!Object(lodash_[\"isNumber\"])(value)) return false;\n if (this.precision) {\n value = value.toFixed(this.precision);\n }\n\n var _String$split = String(value).split('.'),\n integer = _String$split[0],\n decimal = _String$split[1];\n // 1000 multiplying power\n\n\n if (groupSeparator) {\n integer = this.magnification(integer, rate, groupSeparator);\n }\n var result = '' + integer + (decimal ? this.decimalSeparator + decimal : '');\n this.disposeValue = result;\n return result;\n },\n diffDate: function diffDate(minuend, subtrahend) {\n return Math.max(minuend - subtrahend, 0);\n },\n suspend: function suspend(isStop) {\n if (isStop) {\n if (this.timeTask) {\n clearInterval(this.timeTask);\n this.timeTask = null;\n }\n } else {\n this.branch();\n }\n return this.disposeValue;\n },\n\n formatTimeStr: function formatTimeStr(time) {\n var format = this.format;\n\n var escapeRegex = /\\[[^\\]]*]/g;\n var keepList = (format.match(escapeRegex) || []).map(function (str) {\n return str.slice(1, -1);\n });\n var timeUnits = [['Y', 1000 * 60 * 60 * 24 * 365], // years\n ['M', 1000 * 60 * 60 * 24 * 30], // months\n ['D', 1000 * 60 * 60 * 24], // days\n ['H', 1000 * 60 * 60], // hours\n ['m', 1000 * 60], // minutes\n ['s', 1000], // seconds\n ['S', 1] // million seconds\n ];\n var formatText = Object(lodash_[\"reduce\"])(timeUnits, function (con, item) {\n var name = item[0];\n return con.replace(new RegExp(name + '+', 'g'), function (match) {\n var sum = Object(lodash_[\"chain\"])(time).divide(item[1]).floor(0).value();\n time -= Object(lodash_[\"multiply\"])(sum, item[1]);\n return Object(lodash_[\"padStart\"])(String(sum), String(match).length, 0);\n });\n }, format);\n var index = 0;\n return formatText.replace(escapeRegex, function () {\n var match = keepList[index];\n index += 1;\n return match;\n });\n },\n stopTime: function stopTime(time) {\n var result = true; // stop\n if (time) {\n this.$emit('change', time);\n result = false;\n } else {\n result = true;\n this.suspend(true);\n this.$emit('finish', true);\n }\n return result;\n },\n countDown: function countDown(timeVlaue) {\n var REFRESH_INTERVAL = this.REFRESH_INTERVAL,\n timeTask = this.timeTask,\n diffDate = this.diffDate,\n formatTimeStr = this.formatTimeStr,\n stopTime = this.stopTime,\n suspend = this.suspend;\n\n if (timeTask) return;\n var than = this;\n this.timeTask = setInterval(function () {\n var diffTiem = diffDate(timeVlaue, Date.now());\n than.disposeValue = formatTimeStr(diffTiem);\n stopTime(diffTiem);\n }, REFRESH_INTERVAL);\n this.$once('hook:beforeDestroy', function () {\n suspend(true);\n });\n }\n }\n});\n// CONCATENATED MODULE: ./packages/statistic/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_statistic_src_mainvue_type_script_lang_js_ = (statistic_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/statistic/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar statistic_src_main_component = normalizeComponent(\n packages_statistic_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_76339aa7_render,\n mainvue_type_template_id_76339aa7_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var statistic_src_main_api; }\nstatistic_src_main_component.options.__file = \"packages/statistic/src/main.vue\"\n/* harmony default export */ var statistic_src_main = (statistic_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/statistic/index.js\n\n\n/* istanbul ignore next */\nstatistic_src_main.install = function (Vue) {\n Vue.component(statistic_src_main.name, statistic_src_main);\n};\n\n/* harmony default export */ var statistic = (statistic_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/popconfirm/src/main.vue?vue&type=template&id=048de730&\nvar mainvue_type_template_id_048de730_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"el-popover\",\n _vm._b(\n {\n attrs: { trigger: \"click\" },\n model: {\n value: _vm.visible,\n callback: function($$v) {\n _vm.visible = $$v\n },\n expression: \"visible\"\n }\n },\n \"el-popover\",\n _vm.$attrs,\n false\n ),\n [\n _c(\"div\", { staticClass: \"el-popconfirm\" }, [\n _c(\"p\", { staticClass: \"el-popconfirm__main\" }, [\n !_vm.hideIcon\n ? _c(\"i\", {\n staticClass: \"el-popconfirm__icon\",\n class: _vm.icon,\n style: { color: _vm.iconColor }\n })\n : _vm._e(),\n _vm._v(\"\\n \" + _vm._s(_vm.title) + \"\\n \")\n ]),\n _c(\n \"div\",\n { staticClass: \"el-popconfirm__action\" },\n [\n _c(\n \"el-button\",\n {\n attrs: { size: \"mini\", type: _vm.cancelButtonType },\n on: { click: _vm.cancel }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.displayCancelButtonText) +\n \"\\n \"\n )\n ]\n ),\n _c(\n \"el-button\",\n {\n attrs: { size: \"mini\", type: _vm.confirmButtonType },\n on: { click: _vm.confirm }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.displayConfirmButtonText) +\n \"\\n \"\n )\n ]\n )\n ],\n 1\n )\n ]),\n _vm._t(\"reference\", null, { slot: \"reference\" })\n ],\n 2\n )\n}\nvar mainvue_type_template_id_048de730_staticRenderFns = []\nmainvue_type_template_id_048de730_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/popconfirm/src/main.vue?vue&type=template&id=048de730&\n\n// EXTERNAL MODULE: external \"element-ui/lib/popover\"\nvar popover_ = __nested_webpack_require_8926__(45);\nvar popover_default = /*#__PURE__*/__nested_webpack_require_8926__.n(popover_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/popconfirm/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var popconfirm_src_mainvue_type_script_lang_js_ = ({\n name: 'ElPopconfirm',\n props: {\n title: {\n type: String\n },\n confirmButtonText: {\n type: String\n },\n cancelButtonText: {\n type: String\n },\n confirmButtonType: {\n type: String,\n default: 'primary'\n },\n cancelButtonType: {\n type: String,\n default: 'text'\n },\n icon: {\n type: String,\n default: 'el-icon-question'\n },\n iconColor: {\n type: String,\n default: '#f90'\n },\n hideIcon: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ElPopover: popover_default.a,\n ElButton: button_default.a\n },\n data: function data() {\n return {\n visible: false\n };\n },\n\n computed: {\n displayConfirmButtonText: function displayConfirmButtonText() {\n return this.confirmButtonText || Object(lib_locale_[\"t\"])('el.popconfirm.confirmButtonText');\n },\n displayCancelButtonText: function displayCancelButtonText() {\n return this.cancelButtonText || Object(lib_locale_[\"t\"])('el.popconfirm.cancelButtonText');\n }\n },\n methods: {\n confirm: function confirm() {\n this.visible = false;\n this.$emit('confirm');\n },\n cancel: function cancel() {\n this.visible = false;\n this.$emit('cancel');\n }\n }\n});\n// CONCATENATED MODULE: ./packages/popconfirm/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_popconfirm_src_mainvue_type_script_lang_js_ = (popconfirm_src_mainvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/popconfirm/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar popconfirm_src_main_component = normalizeComponent(\n packages_popconfirm_src_mainvue_type_script_lang_js_,\n mainvue_type_template_id_048de730_render,\n mainvue_type_template_id_048de730_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var popconfirm_src_main_api; }\npopconfirm_src_main_component.options.__file = \"packages/popconfirm/src/main.vue\"\n/* harmony default export */ var popconfirm_src_main = (popconfirm_src_main_component.exports);\n// CONCATENATED MODULE: ./packages/popconfirm/index.js\n\n\n/* istanbul ignore next */\npopconfirm_src_main.install = function (Vue) {\n Vue.component(popconfirm_src_main.name, popconfirm_src_main);\n};\n\n/* harmony default export */ var popconfirm = (popconfirm_src_main);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/skeleton/src/index.vue?vue&type=template&id=7f659269&\nvar srcvue_type_template_id_7f659269_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _vm.uiLoading\n ? [\n _c(\n \"div\",\n _vm._b(\n { class: [\"el-skeleton\", _vm.animated ? \"is-animated\" : \"\"] },\n \"div\",\n _vm.$attrs,\n false\n ),\n [\n _vm._l(_vm.count, function(i) {\n return [\n _vm.loading\n ? _vm._t(\n \"template\",\n _vm._l(_vm.rows, function(item) {\n return _c(\"el-skeleton-item\", {\n key: i + \"-\" + item,\n class: {\n \"el-skeleton__paragraph\": item !== 1,\n \"is-first\": item === 1,\n \"is-last\": item === _vm.rows && _vm.rows > 1\n },\n attrs: { variant: \"p\" }\n })\n })\n )\n : _vm._e()\n ]\n })\n ],\n 2\n )\n ]\n : [_vm._t(\"default\", null, null, _vm.$attrs)]\n ],\n 2\n )\n}\nvar srcvue_type_template_id_7f659269_staticRenderFns = []\nsrcvue_type_template_id_7f659269_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/skeleton/src/index.vue?vue&type=template&id=7f659269&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/skeleton/src/index.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var skeleton_srcvue_type_script_lang_js_ = ({\n name: 'ElSkeleton',\n props: {\n animated: {\n type: Boolean,\n default: false\n },\n count: {\n type: Number,\n default: 1\n },\n rows: {\n type: Number,\n default: 4\n },\n loading: {\n type: Boolean,\n default: true\n },\n throttle: {\n type: Number,\n default: 0\n }\n },\n watch: {\n loading: {\n handler: function handler(loading) {\n var _this = this;\n\n if (this.throttle <= 0) {\n this.uiLoading = loading;\n return;\n }\n if (loading) {\n clearTimeout(this.timeoutHandle);\n this.timeoutHandle = setTimeout(function () {\n _this.uiLoading = _this.loading;\n }, this.throttle);\n } else {\n this.uiLoading = loading;\n }\n },\n\n immediate: true\n }\n },\n data: function data() {\n return {\n uiLoading: this.throttle <= 0 ? this.loading : false\n };\n }\n});\n// CONCATENATED MODULE: ./packages/skeleton/src/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_skeleton_srcvue_type_script_lang_js_ = (skeleton_srcvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/skeleton/src/index.vue\n\n\n\n\n\n/* normalize component */\n\nvar skeleton_src_component = normalizeComponent(\n packages_skeleton_srcvue_type_script_lang_js_,\n srcvue_type_template_id_7f659269_render,\n srcvue_type_template_id_7f659269_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var skeleton_src_api; }\nskeleton_src_component.options.__file = \"packages/skeleton/src/index.vue\"\n/* harmony default export */ var skeleton_src = (skeleton_src_component.exports);\n// CONCATENATED MODULE: ./packages/skeleton/index.js\n\n\n/* istanbul ignore next */\nskeleton_src.install = function (Vue) {\n Vue.component(skeleton_src.name, skeleton_src);\n};\n\n/* harmony default export */ var skeleton = (skeleton_src);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/skeleton/src/item.vue?vue&type=template&id=4bc8804c&\nvar itemvue_type_template_id_4bc8804c_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { class: [\"el-skeleton__item\", \"el-skeleton__\" + _vm.variant] },\n [_vm.variant === \"image\" ? _c(\"img-placeholder\") : _vm._e()],\n 1\n )\n}\nvar itemvue_type_template_id_4bc8804c_staticRenderFns = []\nitemvue_type_template_id_4bc8804c_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/skeleton/src/item.vue?vue&type=template&id=4bc8804c&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/skeleton/src/img-placeholder.vue?vue&type=template&id=1b2cb5c0&\nvar img_placeholdervue_type_template_id_1b2cb5c0_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n {\n attrs: { viewBox: \"0 0 1024 1024\", xmlns: \"http://www.w3.org/2000/svg\" }\n },\n [\n _c(\"path\", {\n attrs: {\n d:\n \"M64 896V128h896v768H64z m64-128l192-192 116.352 116.352L640 448l256 307.2V192H128v576z m224-480a96 96 0 1 1-0.064 192.064A96 96 0 0 1 352 288z\"\n }\n })\n ]\n )\n}\nvar img_placeholdervue_type_template_id_1b2cb5c0_staticRenderFns = []\nimg_placeholdervue_type_template_id_1b2cb5c0_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/skeleton/src/img-placeholder.vue?vue&type=template&id=1b2cb5c0&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/skeleton/src/img-placeholder.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var img_placeholdervue_type_script_lang_js_ = ({\n name: 'ImgPlaceholder'\n});\n// CONCATENATED MODULE: ./packages/skeleton/src/img-placeholder.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_img_placeholdervue_type_script_lang_js_ = (img_placeholdervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/skeleton/src/img-placeholder.vue\n\n\n\n\n\n/* normalize component */\n\nvar img_placeholder_component = normalizeComponent(\n src_img_placeholdervue_type_script_lang_js_,\n img_placeholdervue_type_template_id_1b2cb5c0_render,\n img_placeholdervue_type_template_id_1b2cb5c0_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var img_placeholder_api; }\nimg_placeholder_component.options.__file = \"packages/skeleton/src/img-placeholder.vue\"\n/* harmony default export */ var img_placeholder = (img_placeholder_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/skeleton/src/item.vue?vue&type=script&lang=js&\nvar _components;\n\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var skeleton_src_itemvue_type_script_lang_js_ = ({\n name: 'ElSkeletonItem',\n props: {\n variant: {\n type: String,\n default: 'text'\n }\n },\n components: (_components = {}, _components[img_placeholder.name] = img_placeholder, _components)\n});\n// CONCATENATED MODULE: ./packages/skeleton/src/item.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_skeleton_src_itemvue_type_script_lang_js_ = (skeleton_src_itemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/skeleton/src/item.vue\n\n\n\n\n\n/* normalize component */\n\nvar skeleton_src_item_component = normalizeComponent(\n packages_skeleton_src_itemvue_type_script_lang_js_,\n itemvue_type_template_id_4bc8804c_render,\n itemvue_type_template_id_4bc8804c_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var skeleton_src_item_api; }\nskeleton_src_item_component.options.__file = \"packages/skeleton/src/item.vue\"\n/* harmony default export */ var skeleton_src_item = (skeleton_src_item_component.exports);\n// CONCATENATED MODULE: ./packages/skeleton-item/index.js\n\n\n/* istanbul ignore next */\nskeleton_src_item.install = function (Vue) {\n Vue.component(skeleton_src_item.name, skeleton_src_item);\n};\n\n/* harmony default export */ var skeleton_item = (skeleton_src_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/empty/src/index.vue?vue&type=template&id=347ced91&\nvar srcvue_type_template_id_347ced91_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-empty\" }, [\n _c(\n \"div\",\n { staticClass: \"el-empty__image\", style: _vm.imageStyle },\n [\n _vm.image\n ? _c(\"img\", {\n attrs: { src: _vm.image, ondragstart: \"return false\" }\n })\n : _vm._t(\"image\", [_c(\"img-empty\")])\n ],\n 2\n ),\n _c(\n \"div\",\n { staticClass: \"el-empty__description\" },\n [\n _vm.$slots.description\n ? _vm._t(\"description\")\n : _c(\"p\", [_vm._v(_vm._s(_vm.emptyDescription))])\n ],\n 2\n ),\n _vm.$slots.default\n ? _c(\"div\", { staticClass: \"el-empty__bottom\" }, [_vm._t(\"default\")], 2)\n : _vm._e()\n ])\n}\nvar srcvue_type_template_id_347ced91_staticRenderFns = []\nsrcvue_type_template_id_347ced91_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/empty/src/index.vue?vue&type=template&id=347ced91&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/empty/src/img-empty.vue?vue&type=template&id=42918b82&\nvar img_emptyvue_type_template_id_42918b82_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n {\n attrs: {\n viewBox: \"0 0 79 86\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\"\n }\n },\n [\n _c(\n \"defs\",\n [\n _c(\n \"linearGradient\",\n {\n attrs: {\n id: \"linearGradient-1-\" + _vm.id,\n x1: \"38.8503086%\",\n y1: \"0%\",\n x2: \"61.1496914%\",\n y2: \"100%\"\n }\n },\n [\n _c(\"stop\", { attrs: { \"stop-color\": \"#FCFCFD\", offset: \"0%\" } }),\n _c(\"stop\", { attrs: { \"stop-color\": \"#EEEFF3\", offset: \"100%\" } })\n ],\n 1\n ),\n _c(\n \"linearGradient\",\n {\n attrs: {\n id: \"linearGradient-2-\" + _vm.id,\n x1: \"0%\",\n y1: \"9.5%\",\n x2: \"100%\",\n y2: \"90.5%\"\n }\n },\n [\n _c(\"stop\", { attrs: { \"stop-color\": \"#FCFCFD\", offset: \"0%\" } }),\n _c(\"stop\", { attrs: { \"stop-color\": \"#E9EBEF\", offset: \"100%\" } })\n ],\n 1\n ),\n _c(\"rect\", {\n attrs: {\n id: \"path-3-\" + _vm.id,\n x: \"0\",\n y: \"0\",\n width: \"17\",\n height: \"36\"\n }\n })\n ],\n 1\n ),\n _c(\n \"g\",\n {\n attrs: {\n id: \"Illustrations\",\n stroke: \"none\",\n \"stroke-width\": \"1\",\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n }\n },\n [\n _c(\n \"g\",\n {\n attrs: {\n id: \"B-type\",\n transform: \"translate(-1268.000000, -535.000000)\"\n }\n },\n [\n _c(\n \"g\",\n {\n attrs: {\n id: \"Group-2\",\n transform: \"translate(1268.000000, 535.000000)\"\n }\n },\n [\n _c(\"path\", {\n attrs: {\n id: \"Oval-Copy-2\",\n d:\n \"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z\",\n fill: \"#F7F8FC\"\n }\n }),\n _c(\"polygon\", {\n attrs: {\n id: \"Rectangle-Copy-14\",\n fill: \"#E5E7E9\",\n transform:\n \"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) \",\n points: \"13 58 53 58 42 45 2 45\"\n }\n }),\n _c(\n \"g\",\n {\n attrs: {\n id: \"Group-Copy\",\n transform:\n \"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)\"\n }\n },\n [\n _c(\"polygon\", {\n attrs: {\n id: \"Rectangle-Copy-10\",\n fill: \"#E5E7E9\",\n transform:\n \"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) \",\n points: \"2.84078316e-14 3 18 3 23 7 5 7\"\n }\n }),\n _c(\"polygon\", {\n attrs: {\n id: \"Rectangle-Copy-11\",\n fill: \"#EDEEF2\",\n points:\n \"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43\"\n }\n }),\n _c(\"rect\", {\n attrs: {\n id: \"Rectangle-Copy-12\",\n fill: \"url(#linearGradient-1-\" + _vm.id + \")\",\n transform:\n \"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) \",\n x: \"38\",\n y: \"7\",\n width: \"17\",\n height: \"36\"\n }\n }),\n _c(\"polygon\", {\n attrs: {\n id: \"Rectangle-Copy-13\",\n fill: \"#F8F9FB\",\n transform:\n \"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) \",\n points:\n \"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12\"\n }\n })\n ]\n ),\n _c(\"rect\", {\n attrs: {\n id: \"Rectangle-Copy-15\",\n fill: \"url(#linearGradient-2-\" + _vm.id + \")\",\n x: \"13\",\n y: \"45\",\n width: \"40\",\n height: \"36\"\n }\n }),\n _c(\n \"g\",\n {\n attrs: {\n id: \"Rectangle-Copy-17\",\n transform: \"translate(53.000000, 45.000000)\"\n }\n },\n [\n _c(\n \"mask\",\n { attrs: { id: \"mask-4-\" + _vm.id, fill: \"white\" } },\n [\n _c(\"use\", {\n attrs: { \"xlink:href\": \"#path-3-\" + _vm.id }\n })\n ]\n ),\n _c(\"use\", {\n attrs: {\n id: \"Mask\",\n fill: \"#E0E3E9\",\n transform:\n \"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) \",\n \"xlink:href\": \"#path-3-\" + _vm.id\n }\n }),\n _c(\"polygon\", {\n attrs: {\n id: \"Rectangle-Copy\",\n fill: \"#D5D7DE\",\n mask: \"url(#mask-4-\" + _vm.id + \")\",\n transform:\n \"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) \",\n points: \"7 0 24 0 20 18 -1.70530257e-13 16\"\n }\n })\n ]\n ),\n _c(\"polygon\", {\n attrs: {\n id: \"Rectangle-Copy-18\",\n fill: \"#F8F9FB\",\n transform:\n \"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) \",\n points: \"62 45 79 45 70 58 53 58\"\n }\n })\n ]\n )\n ]\n )\n ]\n )\n ]\n )\n}\nvar img_emptyvue_type_template_id_42918b82_staticRenderFns = []\nimg_emptyvue_type_template_id_42918b82_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/empty/src/img-empty.vue?vue&type=template&id=42918b82&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/empty/src/img-empty.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar img_emptyvue_type_script_lang_js_id = 0;\n/* harmony default export */ var img_emptyvue_type_script_lang_js_ = ({\n name: 'ImgEmpty',\n data: function data() {\n return {\n id: ++img_emptyvue_type_script_lang_js_id\n };\n }\n});\n// CONCATENATED MODULE: ./packages/empty/src/img-empty.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_img_emptyvue_type_script_lang_js_ = (img_emptyvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/empty/src/img-empty.vue\n\n\n\n\n\n/* normalize component */\n\nvar img_empty_component = normalizeComponent(\n src_img_emptyvue_type_script_lang_js_,\n img_emptyvue_type_template_id_42918b82_render,\n img_emptyvue_type_template_id_42918b82_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var img_empty_api; }\nimg_empty_component.options.__file = \"packages/empty/src/img-empty.vue\"\n/* harmony default export */ var img_empty = (img_empty_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/empty/src/index.vue?vue&type=script&lang=js&\nvar srcvue_type_script_lang_js_components;\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var empty_srcvue_type_script_lang_js_ = ({\n name: 'ElEmpty',\n components: (srcvue_type_script_lang_js_components = {}, srcvue_type_script_lang_js_components[img_empty.name] = img_empty, srcvue_type_script_lang_js_components),\n props: {\n image: {\n type: String,\n default: ''\n },\n imageSize: Number,\n description: {\n type: String,\n default: ''\n }\n },\n computed: {\n emptyDescription: function emptyDescription() {\n return this.description || Object(lib_locale_[\"t\"])('el.empty.description');\n },\n imageStyle: function imageStyle() {\n return {\n width: this.imageSize ? this.imageSize + 'px' : ''\n };\n }\n }\n});\n// CONCATENATED MODULE: ./packages/empty/src/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_empty_srcvue_type_script_lang_js_ = (empty_srcvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/empty/src/index.vue\n\n\n\n\n\n/* normalize component */\n\nvar empty_src_component = normalizeComponent(\n packages_empty_srcvue_type_script_lang_js_,\n srcvue_type_template_id_347ced91_render,\n srcvue_type_template_id_347ced91_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var empty_src_api; }\nempty_src_component.options.__file = \"packages/empty/src/index.vue\"\n/* harmony default export */ var empty_src = (empty_src_component.exports);\n// CONCATENATED MODULE: ./packages/empty/index.js\n\n\nempty_src.install = function (Vue) {\n Vue.component(empty_src.name, empty_src);\n};\n\n/* harmony default export */ var empty = (empty_src);\n// CONCATENATED MODULE: ./packages/descriptions/src/descriptions-row.js\nvar descriptions_row_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n/* harmony default export */ var descriptions_row = ({\n name: 'ElDescriptionsRow',\n props: {\n row: {\n type: Array\n }\n },\n inject: ['elDescriptions'],\n render: function render(h) {\n var elDescriptions = this.elDescriptions;\n\n var row = (this.row || []).map(function (item) {\n return descriptions_row_extends({}, item, {\n label: item.slots.label || item.props.label\n }, ['labelClassName', 'contentClassName', 'labelStyle', 'contentStyle'].reduce(function (res, key) {\n res[key] = item.props[key] || elDescriptions[key];\n return res;\n }, {}));\n });\n if (elDescriptions.direction === 'vertical') {\n return h('tbody', [h(\n 'tr',\n { 'class': 'el-descriptions-row' },\n [row.map(function (item) {\n var _ref;\n\n return h(\n 'th',\n {\n 'class': (_ref = {\n 'el-descriptions-item__cell': true,\n 'el-descriptions-item__label': true,\n 'has-colon': elDescriptions.border ? false : elDescriptions.colon,\n 'is-bordered-label': elDescriptions.border\n }, _ref[item.labelClassName] = true, _ref),\n style: item.labelStyle,\n attrs: { colSpan: item.props.span\n }\n },\n [item.label]\n );\n })]\n ), h(\n 'tr',\n { 'class': 'el-descriptions-row' },\n [row.map(function (item) {\n return h(\n 'td',\n {\n 'class': ['el-descriptions-item__cell', 'el-descriptions-item__content', item.contentClassName],\n style: item.contentStyle,\n attrs: { colSpan: item.props.span\n }\n },\n [item.slots.default]\n );\n })]\n )]);\n }\n if (elDescriptions.border) {\n return h('tbody', [h(\n 'tr',\n { 'class': 'el-descriptions-row' },\n [row.map(function (item) {\n var _ref2;\n\n return [h(\n 'th',\n {\n 'class': (_ref2 = {\n 'el-descriptions-item__cell': true,\n 'el-descriptions-item__label': true,\n 'is-bordered-label': elDescriptions.border\n }, _ref2[item.labelClassName] = true, _ref2),\n style: item.labelStyle,\n attrs: { colSpan: '1'\n }\n },\n [item.label]\n ), h(\n 'td',\n {\n 'class': ['el-descriptions-item__cell', 'el-descriptions-item__content', item.contentClassName],\n style: item.contentStyle,\n attrs: { colSpan: item.props.span * 2 - 1\n }\n },\n [item.slots.default]\n )];\n })]\n )]);\n }\n return h('tbody', [h(\n 'tr',\n { 'class': 'el-descriptions-row' },\n [row.map(function (item) {\n var _ref3;\n\n return h(\n 'td',\n { 'class': 'el-descriptions-item el-descriptions-item__cell', attrs: { colSpan: item.props.span }\n },\n [h(\n 'div',\n { 'class': 'el-descriptions-item__container' },\n [h(\n 'span',\n {\n 'class': (_ref3 = {\n 'el-descriptions-item__label': true,\n 'has-colon': elDescriptions.colon\n }, _ref3[item.labelClassName] = true, _ref3),\n style: item.labelStyle\n },\n [item.label]\n ), h(\n 'span',\n {\n 'class': ['el-descriptions-item__content', item.contentClassName],\n style: item.contentStyle\n },\n [item.slots.default]\n )]\n )]\n );\n })]\n )]);\n }\n});\n// CONCATENATED MODULE: ./packages/descriptions/src/index.js\nvar src_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar src_components;\n\n\n\n\n/* harmony default export */ var descriptions_src = ({\n name: 'ElDescriptions',\n components: (src_components = {}, src_components[descriptions_row.name] = descriptions_row, src_components),\n props: {\n border: {\n type: Boolean,\n default: false\n },\n column: {\n type: Number,\n default: 3\n },\n direction: {\n type: String,\n default: 'horizontal'\n },\n size: {\n type: String\n // validator: isValidComponentSize,\n },\n title: {\n type: String,\n default: ''\n },\n extra: {\n type: String,\n default: ''\n },\n labelStyle: {\n type: Object\n },\n contentStyle: {\n type: Object\n },\n labelClassName: {\n type: String,\n default: ''\n },\n contentClassName: {\n type: String,\n default: ''\n },\n colon: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n descriptionsSize: function descriptionsSize() {\n return this.size || (this.$ELEMENT || {}).size;\n }\n },\n provide: function provide() {\n return {\n elDescriptions: this\n };\n },\n\n methods: {\n getOptionProps: function getOptionProps(vnode) {\n if (vnode.componentOptions) {\n var componentOptions = vnode.componentOptions;\n var _componentOptions$pro = componentOptions.propsData,\n propsData = _componentOptions$pro === undefined ? {} : _componentOptions$pro,\n _componentOptions$Cto = componentOptions.Ctor,\n Ctor = _componentOptions$Cto === undefined ? {} : _componentOptions$Cto;\n\n var props = (Ctor.options || {}).props || {};\n var res = {};\n for (var k in props) {\n var v = props[k];\n var defaultValue = v.default;\n if (defaultValue !== undefined) {\n res[k] = Object(types_[\"isFunction\"])(defaultValue) ? defaultValue.call(vnode) : defaultValue;\n }\n }\n return src_extends({}, res, propsData);\n }\n return {};\n },\n getSlots: function getSlots(vnode) {\n var _this = this;\n\n var componentOptions = vnode.componentOptions || {};\n var children = vnode.children || componentOptions.children || [];\n var slots = {};\n children.forEach(function (child) {\n if (!_this.isEmptyElement(child)) {\n var name = child.data && child.data.slot || 'default';\n slots[name] = slots[name] || [];\n if (child.tag === 'template') {\n slots[name].push(child.children);\n } else {\n slots[name].push(child);\n }\n }\n });\n return src_extends({}, slots);\n },\n isEmptyElement: function isEmptyElement(c) {\n return !(c.tag || c.text && c.text.trim() !== '');\n },\n filledNode: function filledNode(node, span, count) {\n var isLast = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (!node.props) {\n node.props = {};\n }\n if (span > count) {\n node.props.span = count;\n }\n if (isLast) {\n // set the max span, cause of the last td\n node.props.span = count;\n }\n return node;\n },\n getRows: function getRows() {\n var _this2 = this;\n\n var children = (this.$slots.default || []).filter(function (vnode) {\n return vnode.tag && vnode.componentOptions && vnode.componentOptions.Ctor.options.name === 'ElDescriptionsItem';\n });\n var nodes = children.map(function (vnode) {\n return {\n props: _this2.getOptionProps(vnode),\n slots: _this2.getSlots(vnode),\n vnode: vnode\n };\n });\n var rows = [];\n var temp = [];\n var count = this.column;\n\n nodes.forEach(function (node, index) {\n var span = node.props.span || 1;\n\n if (index === children.length - 1) {\n temp.push(_this2.filledNode(node, span, count, true));\n rows.push(temp);\n return;\n }\n\n if (span < count) {\n count -= span;\n temp.push(node);\n } else {\n temp.push(_this2.filledNode(node, span, count));\n rows.push(temp);\n count = _this2.column;\n temp = [];\n }\n });\n\n return rows;\n }\n },\n render: function render() {\n var h = arguments[0];\n var title = this.title,\n extra = this.extra,\n border = this.border,\n descriptionsSize = this.descriptionsSize,\n $slots = this.$slots;\n\n var rows = this.getRows();\n\n return h(\n 'div',\n { 'class': 'el-descriptions' },\n [title || extra || $slots.title || $slots.extra ? h(\n 'div',\n { 'class': 'el-descriptions__header' },\n [h(\n 'div',\n { 'class': 'el-descriptions__title' },\n [$slots.title ? $slots.title : title]\n ), h(\n 'div',\n { 'class': 'el-descriptions__extra' },\n [$slots.extra ? $slots.extra : extra]\n )]\n ) : null, h(\n 'div',\n { 'class': 'el-descriptions__body' },\n [h(\n 'table',\n { 'class': ['el-descriptions__table', { 'is-bordered': border }, descriptionsSize ? 'el-descriptions--' + descriptionsSize : ''] },\n [rows.map(function (row) {\n return h(descriptions_row, {\n attrs: { row: row }\n });\n })]\n )]\n )]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/descriptions/index.js\n\n\n/* istanbul ignore next */\ndescriptions_src.install = function install(Vue) {\n Vue.component(descriptions_src.name, descriptions_src);\n};\n\n/* harmony default export */ var descriptions = (descriptions_src);\n// CONCATENATED MODULE: ./packages/descriptions/src/descriptions-item.js\n/* harmony default export */ var descriptions_item = ({\n name: 'ElDescriptionsItem',\n props: {\n label: {\n type: String,\n default: ''\n },\n span: {\n type: Number,\n default: 1\n },\n contentClassName: {\n type: String,\n default: ''\n },\n contentStyle: {\n type: Object\n },\n labelClassName: {\n type: String,\n default: ''\n },\n labelStyle: {\n type: Object\n }\n },\n render: function render() {\n return null;\n }\n});\n// CONCATENATED MODULE: ./packages/descriptions-item/index.js\n\n\n/* istanbul ignore next */\ndescriptions_item.install = function install(Vue) {\n Vue.component(descriptions_item.name, descriptions_item);\n};\n\n/* harmony default export */ var packages_descriptions_item = (descriptions_item);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/index.vue?vue&type=template&id=3408b139&\nvar srcvue_type_template_id_3408b139_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-result\" }, [\n _c(\n \"div\",\n { staticClass: \"el-result__icon\" },\n [\n _vm._t(\"icon\", [\n _c(_vm.iconElement, { tag: \"component\", class: _vm.iconElement })\n ])\n ],\n 2\n ),\n _vm.title || _vm.$slots.title\n ? _c(\n \"div\",\n { staticClass: \"el-result__title\" },\n [_vm._t(\"title\", [_c(\"p\", [_vm._v(_vm._s(_vm.title))])])],\n 2\n )\n : _vm._e(),\n _vm.subTitle || _vm.$slots.subTitle\n ? _c(\n \"div\",\n { staticClass: \"el-result__subtitle\" },\n [_vm._t(\"subTitle\", [_c(\"p\", [_vm._v(_vm._s(_vm.subTitle))])])],\n 2\n )\n : _vm._e(),\n _vm.$slots.extra\n ? _c(\"div\", { staticClass: \"el-result__extra\" }, [_vm._t(\"extra\")], 2)\n : _vm._e()\n ])\n}\nvar srcvue_type_template_id_3408b139_staticRenderFns = []\nsrcvue_type_template_id_3408b139_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/result/src/index.vue?vue&type=template&id=3408b139&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/icon-success.vue?vue&type=template&id=18119418&\nvar icon_successvue_type_template_id_18119418_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n { attrs: { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\" } },\n [\n _c(\"path\", {\n attrs: {\n d:\n \"M24,4 C35.045695,4 44,12.954305 44,24 C44,35.045695 35.045695,44 24,44 C12.954305,44 4,35.045695 4,24 C4,12.954305 12.954305,4 24,4 Z M34.5548098,16.4485711 C33.9612228,15.8504763 32.9988282,15.8504763 32.4052412,16.4485711 L32.4052412,16.4485711 L21.413757,27.5805811 L21.413757,27.5805811 L21.4034642,27.590855 C21.0097542,27.9781674 20.3766105,27.9729811 19.9892981,27.5792711 L19.9892981,27.5792711 L15.5947588,23.1121428 C15.0011718,22.514048 14.0387772,22.514048 13.4451902,23.1121428 C12.8516033,23.7102376 12.8516033,24.6799409 13.4451902,25.2780357 L13.4451902,25.2780357 L19.6260786,31.5514289 C20.2196656,32.1495237 21.1820602,32.1495237 21.7756472,31.5514289 L21.7756472,31.5514289 L34.5548098,18.614464 C35.1483967,18.0163692 35.1483967,17.0466659 34.5548098,16.4485711 Z\"\n }\n })\n ]\n )\n}\nvar icon_successvue_type_template_id_18119418_staticRenderFns = []\nicon_successvue_type_template_id_18119418_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/result/src/icon-success.vue?vue&type=template&id=18119418&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/icon-success.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var icon_successvue_type_script_lang_js_ = ({\n name: 'IconSuccess'\n});\n// CONCATENATED MODULE: ./packages/result/src/icon-success.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_icon_successvue_type_script_lang_js_ = (icon_successvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/result/src/icon-success.vue\n\n\n\n\n\n/* normalize component */\n\nvar icon_success_component = normalizeComponent(\n src_icon_successvue_type_script_lang_js_,\n icon_successvue_type_template_id_18119418_render,\n icon_successvue_type_template_id_18119418_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var icon_success_api; }\nicon_success_component.options.__file = \"packages/result/src/icon-success.vue\"\n/* harmony default export */ var icon_success = (icon_success_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/icon-error.vue?vue&type=template&id=21199246&\nvar icon_errorvue_type_template_id_21199246_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n { attrs: { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\" } },\n [\n _c(\"path\", {\n attrs: {\n d:\n \"M24,4 C35.045695,4 44,12.954305 44,24 C44,35.045695 35.045695,44 24,44 C12.954305,44 4,35.045695 4,24 C4,12.954305 12.954305,4 24,4 Z M32.57818,15.42182 C32.0157534,14.8593933 31.1038797,14.8593933 30.541453,15.42182 L30.541453,15.42182 L24.0006789,21.9625941 L17.458547,15.42182 C16.8961203,14.8593933 15.9842466,14.8593933 15.42182,15.42182 C14.8593933,15.9842466 14.8593933,16.8961203 15.42182,17.458547 L15.42182,17.458547 L21.9639519,23.9993211 L15.42182,30.541453 C14.8593933,31.1038797 14.8593933,32.0157534 15.42182,32.57818 C15.9842466,33.1406067 16.8961203,33.1406067 17.458547,32.57818 L17.458547,32.57818 L24.0006789,26.0360481 L30.541453,32.57818 C31.1038797,33.1406067 32.0157534,33.1406067 32.57818,32.57818 C33.1406067,32.0157534 33.1406067,31.1038797 32.57818,30.541453 L32.57818,30.541453 L26.0374059,23.9993211 L32.57818,17.458547 C33.1406067,16.8961203 33.1406067,15.9842466 32.57818,15.42182 Z\"\n }\n })\n ]\n )\n}\nvar icon_errorvue_type_template_id_21199246_staticRenderFns = []\nicon_errorvue_type_template_id_21199246_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/result/src/icon-error.vue?vue&type=template&id=21199246&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/icon-error.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var icon_errorvue_type_script_lang_js_ = ({\n name: 'IconError'\n});\n// CONCATENATED MODULE: ./packages/result/src/icon-error.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_icon_errorvue_type_script_lang_js_ = (icon_errorvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/result/src/icon-error.vue\n\n\n\n\n\n/* normalize component */\n\nvar icon_error_component = normalizeComponent(\n src_icon_errorvue_type_script_lang_js_,\n icon_errorvue_type_template_id_21199246_render,\n icon_errorvue_type_template_id_21199246_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var icon_error_api; }\nicon_error_component.options.__file = \"packages/result/src/icon-error.vue\"\n/* harmony default export */ var icon_error = (icon_error_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/icon-warning.vue?vue&type=template&id=46fe8f31&\nvar icon_warningvue_type_template_id_46fe8f31_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n { attrs: { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\" } },\n [\n _c(\"path\", {\n attrs: {\n d:\n \"M24,4 C35.045695,4 44,12.954305 44,24 C44,35.045695 35.045695,44 24,44 C12.954305,44 4,35.045695 4,24 C4,12.954305 12.954305,4 24,4 Z M24,31 C22.8954305,31 22,31.8954305 22,33 C22,34.1045695 22.8954305,35 24,35 C25.1045695,35 26,34.1045695 26,33 C26,31.8954305 25.1045695,31 24,31 Z M24,14 C23.1715729,14 22.5,14.6715729 22.5,15.5 L22.5,15.5 L22.5,27.5 C22.5,28.3284271 23.1715729,29 24,29 C24.8284271,29 25.5,28.3284271 25.5,27.5 L25.5,27.5 L25.5,15.5 C25.5,14.6715729 24.8284271,14 24,14 Z\"\n }\n })\n ]\n )\n}\nvar icon_warningvue_type_template_id_46fe8f31_staticRenderFns = []\nicon_warningvue_type_template_id_46fe8f31_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/result/src/icon-warning.vue?vue&type=template&id=46fe8f31&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/icon-warning.vue?vue&type=script&lang=ts&\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var icon_warningvue_type_script_lang_ts_ = ({\n name: 'IconWarning'\n});\n\n// CONCATENATED MODULE: ./packages/result/src/icon-warning.vue?vue&type=script&lang=ts&\n /* harmony default export */ var src_icon_warningvue_type_script_lang_ts_ = (icon_warningvue_type_script_lang_ts_); \n// CONCATENATED MODULE: ./packages/result/src/icon-warning.vue\n\n\n\n\n\n/* normalize component */\n\nvar icon_warning_component = normalizeComponent(\n src_icon_warningvue_type_script_lang_ts_,\n icon_warningvue_type_template_id_46fe8f31_render,\n icon_warningvue_type_template_id_46fe8f31_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var icon_warning_api; }\nicon_warning_component.options.__file = \"packages/result/src/icon-warning.vue\"\n/* harmony default export */ var icon_warning = (icon_warning_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/icon-info.vue?vue&type=template&id=19e3de69&\nvar icon_infovue_type_template_id_19e3de69_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n { attrs: { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\" } },\n [\n _c(\"path\", {\n attrs: {\n d:\n \"M24,4 C35.045695,4 44,12.954305 44,24 C44,35.045695 35.045695,44 24,44 C12.954305,44 4,35.045695 4,24 C4,12.954305 12.954305,4 24,4 Z M24,19 L21,19 C20.1715729,19 19.5,19.6715729 19.5,20.5 C19.5,21.3284271 20.1715729,22 21,22 L21,22 L22.5,22 L22.5,31 L21,31 C20.1715729,31 19.5,31.6715729 19.5,32.5 C19.5,33.3284271 20.1715729,34 21,34 L21,34 L27,34 C27.8284271,34 28.5,33.3284271 28.5,32.5 C28.5,31.6715729 27.8284271,31 27,31 L27,31 L25.5,31 L25.5,20.5 C25.5,19.6715729 24.8284271,19 24,19 L24,19 Z M24,13 C22.8954305,13 22,13.8954305 22,15 C22,16.1045695 22.8954305,17 24,17 C25.1045695,17 26,16.1045695 26,15 C26,13.8954305 25.1045695,13 24,13 Z\"\n }\n })\n ]\n )\n}\nvar icon_infovue_type_template_id_19e3de69_staticRenderFns = []\nicon_infovue_type_template_id_19e3de69_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/result/src/icon-info.vue?vue&type=template&id=19e3de69&\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/icon-info.vue?vue&type=script&lang=ts&\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var icon_infovue_type_script_lang_ts_ = ({\n name: 'IconInfo'\n});\n\n// CONCATENATED MODULE: ./packages/result/src/icon-info.vue?vue&type=script&lang=ts&\n /* harmony default export */ var src_icon_infovue_type_script_lang_ts_ = (icon_infovue_type_script_lang_ts_); \n// CONCATENATED MODULE: ./packages/result/src/icon-info.vue\n\n\n\n\n\n/* normalize component */\n\nvar icon_info_component = normalizeComponent(\n src_icon_infovue_type_script_lang_ts_,\n icon_infovue_type_template_id_19e3de69_render,\n icon_infovue_type_template_id_19e3de69_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var icon_info_api; }\nicon_info_component.options.__file = \"packages/result/src/icon-info.vue\"\n/* harmony default export */ var icon_info = (icon_info_component.exports);\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/result/src/index.vue?vue&type=script&lang=js&\nvar result_srcvue_type_script_lang_js_components;\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\nvar IconMap = {\n success: 'icon-success',\n warning: 'icon-warning',\n error: 'icon-error',\n info: 'icon-info'\n};\n\n/* harmony default export */ var result_srcvue_type_script_lang_js_ = ({\n name: 'ElResult',\n components: (result_srcvue_type_script_lang_js_components = {}, result_srcvue_type_script_lang_js_components[icon_success.name] = icon_success, result_srcvue_type_script_lang_js_components[icon_error.name] = icon_error, result_srcvue_type_script_lang_js_components[icon_warning.name] = icon_warning, result_srcvue_type_script_lang_js_components[icon_info.name] = icon_info, result_srcvue_type_script_lang_js_components),\n props: {\n title: {\n type: String,\n default: ''\n },\n subTitle: {\n type: String,\n default: ''\n },\n icon: {\n type: String,\n default: 'info'\n }\n },\n computed: {\n iconElement: function iconElement() {\n var icon = this.icon;\n return icon && IconMap[icon] ? IconMap[icon] : 'icon-info';\n }\n }\n});\n// CONCATENATED MODULE: ./packages/result/src/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var packages_result_srcvue_type_script_lang_js_ = (result_srcvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/result/src/index.vue\n\n\n\n\n\n/* normalize component */\n\nvar result_src_component = normalizeComponent(\n packages_result_srcvue_type_script_lang_js_,\n srcvue_type_template_id_3408b139_render,\n srcvue_type_template_id_3408b139_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var result_src_api; }\nresult_src_component.options.__file = \"packages/result/src/index.vue\"\n/* harmony default export */ var result_src = (result_src_component.exports);\n// CONCATENATED MODULE: ./packages/result/index.js\n\n\n/* istanbul ignore next */\nresult_src.install = function (Vue) {\n Vue.component(result_src.name, result_src);\n};\n\n/* harmony default export */ var packages_result = (result_src);\n// CONCATENATED MODULE: ./src/index.js\n/* Automatically generated by './build/bin/build-entry.js' */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar components = [packages_pagination, dialog, packages_autocomplete, packages_dropdown, packages_dropdown_menu, packages_dropdown_item, packages_menu, packages_submenu, packages_menu_item, packages_menu_item_group, packages_input, packages_input_number, packages_radio, packages_radio_group, packages_radio_button, packages_checkbox, packages_checkbox_button, packages_checkbox_group, packages_switch, packages_select, packages_option, packages_option_group, packages_button, packages_button_group, packages_table, packages_table_column, packages_date_picker, packages_time_select, packages_time_picker, popover, packages_tooltip, packages_breadcrumb, packages_breadcrumb_item, packages_form, packages_form_item, packages_tabs, packages_tab_pane, packages_tag, packages_tree, packages_alert, slider, packages_icon, packages_row, packages_col, packages_upload, packages_progress, packages_spinner, badge, card, packages_rate, packages_steps, packages_step, carousel, scrollbar, carousel_item, packages_collapse, packages_collapse_item, packages_cascader, color_picker, transfer, packages_container, header, aside, packages_main, footer, timeline, timeline_item, packages_link, divider, packages_image, calendar, backtop, page_header, packages_cascader_panel, avatar, drawer, statistic, popconfirm, skeleton, skeleton_item, empty, descriptions, packages_descriptions_item, packages_result, collapse_transition_default.a];\n\nvar src_install = function install(Vue) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n lib_locale_default.a.use(opts.locale);\n lib_locale_default.a.i18n(opts.i18n);\n\n components.forEach(function (component) {\n Vue.component(component.name, component);\n });\n\n Vue.use(infinite_scroll);\n Vue.use(packages_loading.directive);\n\n Vue.prototype.$ELEMENT = {\n size: opts.size || '',\n zIndex: opts.zIndex || 2000\n };\n\n Vue.prototype.$loading = packages_loading.service;\n Vue.prototype.$msgbox = message_box;\n Vue.prototype.$alert = message_box.alert;\n Vue.prototype.$confirm = message_box.confirm;\n Vue.prototype.$prompt = message_box.prompt;\n Vue.prototype.$notify = notification;\n Vue.prototype.$message = packages_message;\n};\n\n/* istanbul ignore if */\nif (typeof window !== 'undefined' && window.Vue) {\n src_install(window.Vue);\n}\n\n/* harmony default export */ var src_0 = __nested_webpack_exports__[\"default\"] = ({\n version: '2.15.14',\n locale: lib_locale_default.a.use,\n i18n: lib_locale_default.a.i18n,\n install: src_install,\n CollapseTransition: collapse_transition_default.a,\n Loading: packages_loading,\n Pagination: packages_pagination,\n Dialog: dialog,\n Autocomplete: packages_autocomplete,\n Dropdown: packages_dropdown,\n DropdownMenu: packages_dropdown_menu,\n DropdownItem: packages_dropdown_item,\n Menu: packages_menu,\n Submenu: packages_submenu,\n MenuItem: packages_menu_item,\n MenuItemGroup: packages_menu_item_group,\n Input: packages_input,\n InputNumber: packages_input_number,\n Radio: packages_radio,\n RadioGroup: packages_radio_group,\n RadioButton: packages_radio_button,\n Checkbox: packages_checkbox,\n CheckboxButton: packages_checkbox_button,\n CheckboxGroup: packages_checkbox_group,\n Switch: packages_switch,\n Select: packages_select,\n Option: packages_option,\n OptionGroup: packages_option_group,\n Button: packages_button,\n ButtonGroup: packages_button_group,\n Table: packages_table,\n TableColumn: packages_table_column,\n DatePicker: packages_date_picker,\n TimeSelect: packages_time_select,\n TimePicker: packages_time_picker,\n Popover: popover,\n Tooltip: packages_tooltip,\n MessageBox: message_box,\n Breadcrumb: packages_breadcrumb,\n BreadcrumbItem: packages_breadcrumb_item,\n Form: packages_form,\n FormItem: packages_form_item,\n Tabs: packages_tabs,\n TabPane: packages_tab_pane,\n Tag: packages_tag,\n Tree: packages_tree,\n Alert: packages_alert,\n Notification: notification,\n Slider: slider,\n Icon: packages_icon,\n Row: packages_row,\n Col: packages_col,\n Upload: packages_upload,\n Progress: packages_progress,\n Spinner: packages_spinner,\n Message: packages_message,\n Badge: badge,\n Card: card,\n Rate: packages_rate,\n Steps: packages_steps,\n Step: packages_step,\n Carousel: carousel,\n Scrollbar: scrollbar,\n CarouselItem: carousel_item,\n Collapse: packages_collapse,\n CollapseItem: packages_collapse_item,\n Cascader: packages_cascader,\n ColorPicker: color_picker,\n Transfer: transfer,\n Container: packages_container,\n Header: header,\n Aside: aside,\n Main: packages_main,\n Footer: footer,\n Timeline: timeline,\n TimelineItem: timeline_item,\n Link: packages_link,\n Divider: divider,\n Image: packages_image,\n Calendar: calendar,\n Backtop: backtop,\n InfiniteScroll: infinite_scroll,\n PageHeader: page_header,\n CascaderPanel: packages_cascader_panel,\n Avatar: avatar,\n Drawer: drawer,\n Statistic: statistic,\n Popconfirm: popconfirm,\n Skeleton: skeleton,\n SkeletonItem: skeleton_item,\n Empty: empty,\n Descriptions: descriptions,\n DescriptionsItem: packages_descriptions_item,\n Result: packages_result\n});\n\n/***/ })\n/******/ ])[\"default\"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvZWxlbWVudC11aS5jb21tb24uanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOEJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDhCQUFtQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZUFBZSw4QkFBbUI7QUFDbEMsbURBQW1ELCtCQUErQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0EsaUVBQWlFLGlCQUFpQjtBQUNsRjtBQUNBLDBEQUEwRCxhQUFhO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZ0NBQWdDLDhCQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDhCQUFtQjtBQUM5QixrREFBa0QsZ0NBQWdDO0FBQ2xGLDBFQUEwRSw4QkFBbUIsNEJBQTRCLG9CQUFvQjtBQUM3STtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0Esb0NBQW9DLDRCQUE0QjtBQUNoRSwwQ0FBMEM7QUFDMUMsV0FBVyw4QkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQixrQ0FBa0M7QUFDL0Q7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4QkFBbUIsQ0FBQyw4QkFBbUI7QUFDeEQsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxD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RTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHdCQUF3QjtBQUN0RTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7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QTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsc0JBQXNCO0FBQ2pDO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxxQ0FBcUM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0EsYUFBYSwrQkFBbUI7QUFDaEMsaUNBQWlDLCtCQUFtQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVdBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxnQkFBZ0Isc0NBQXNDOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsK0JBQStCLG1CQUFtQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUseUJBQXlCO0FBQ3BDO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsK0JBQW1CO0FBQ2pDLGtDQUFrQywrQkFBbUI7O0FBRXJEO0FBQ0Esb0JBQW9CLCtCQUFtQjtBQUN2Qyx3Q0FBd0MsK0JBQW1COztBQUUzRDs7Ozs7Ozs7O0FBU0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxnQkFBZ0Isc0NBQXNDOztBQUV0RDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBIQUEwSDtBQUMxSDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLHlFQUF5RTtBQUN6RSx3RUFBd0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFD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Q2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQixZQUFZLFFBQVE7QUFDcEIsWUFBWSxHQUFHO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBLHFGQUFxRixhQUFhO0FBQ2xHO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILDhCQUE4QjtBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsV0FBVywrQkFBbUI7O0FBRTlCOzs7Ozs7O0FBT0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxpQkFBaUIsNkNBQTZDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSx3QkFBd0IsRUFBRTtBQUMxQjtBQUNBLHdCQUF3QixRQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLEVBQUU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsaUJBQWlCO0FBQzVCO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJCQUEyQiwrQkFBbUI7QUFDOUMsK0NBQStDLCtCQUFtQjs7QUFFbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLENBQUM7QUFDRDs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNI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QSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbUJBQW1CO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxrQkFBa0I7QUFDN0I7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLHdDQUF3QztBQUNsRCxVQUFVLHNDQUFzQztBQUNoRCxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0NBQWdDO0FBQ3ZELHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixnQ0FBZ0M7QUFDdkQsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUNBQW1DO0FBQ25DLEtBQUs7QUFDTDtBQUNBLHNFQUFzRTtBQUN0RSxLQUFLO0FBQ0w7QUFDQSxrREFBa0Q7QUFDbEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FB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QTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGdEQUFnRDtBQUNoRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsMEJBQTBCO0FBQ3JDO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsNEJBQTRCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBLHFHQUFxRyxxQkFBcUIsbUJBQW1COztBQUU3STtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsbUJBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsK0JBQW1CO0FBQzlCLCtCQUErQiwrQkFBbUI7O0FBRWxEO0FBQ0Esb0JBQW9CLCtCQUFtQjs7QUFFdkM7QUFDQSx3QkFBd0IsK0JBQW1CO0FBQzNDLDRDQUE0QywrQkFBbUI7O0FBRS9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLHNFQUFzRTtBQUN0RSxLQUFLO0FBQ0w7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILGdCQUFnQixzQ0FBc0M7O0FBRXREO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxNQUFLLElBQUksQ0FBSztBQUN2QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0RBQWtELFFBQVE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLFFBQVE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNEJBQTRCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxtQkFBbUI7QUFDOUI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1FQUFtRSxhQUFhO0FBQ2hGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1CQUFtQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0Esb0RBQW9ELGdCQUFnQixzQkFBc0IsT0FBTywyQkFBMkIsMEJBQTBCLHlEQUF5RCxpQ0FBaUM7Ozs7QUFJaFA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE1BQU07QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMLGlCQUFpQixNQUFNO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsT0FBTztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87O0FBRVA7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Es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QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtB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QTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QixzQkFBc0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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SztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQWVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBOztBQUVBLGVBQWU7O0FBRWY7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUVBQW1FLGVBQWU7QUFDbEY7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0VBQXNFLGVBQWU7QUFDckY7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrQ0FBa0MsMEJBQTBCO0FBQzVELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUMsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLGtCQUFrQjtBQUM3QjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQztBQUNyQztBQUNBO0FB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsYUFBYTtBQUNiLG9CQUFvQjtBQUNwQixtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsZ0JBQWdCLDBCQUEwQjs7QUFFMUMsZ0JBQWdCLHNDQUFzQzs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxTQUFTO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSwwQ0FBMEM7QUFDMUMsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsbUNBQW1DO0FBQ25DLEtBQUs7QUFDTDtBQUNBLHNFQUFzRTtBQUN0RSxLQUFLO0FBQ0w7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMLFFBQVEsaUJBQWlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7OztBQUdMLFFBQVEsaUJBQWlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBSSxZQUFZO0FBQ3ZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxtQkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLHlCQUF5QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLGlCQUFpQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLG9DQUFvQyxtQ0FBbUM7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYix1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esd0JBQXdCLHFCQUFxQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esd0JBQXdCLHFCQUFxQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUUsdUJBQXVCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQVlBO0FBQ0E7O0FBRUEsZ0JBQWdCLHNDQUFzQzs7QUFFdEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLHlGQUF5RixhQUFhO0FBQ3RHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSLGdDQUFnQztBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUix3Q0FBd0MsVUFBVTtBQUNsRDtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsaUJBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx3QkFBd0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYyw4Q0FBOEM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZ0JBQWdCLHNDQUFzQzs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx3Q0FBd0MsU0FBUztBQUNqRCx1REFBdUQsU0FBUztBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxnQkFBZ0I7QUFDaEIsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSx1QkFBdUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxl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O0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0Isa0NBQWtDOztBQUVsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSx3QkFBd0I7QUFDbkM7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsd0JBQXdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLHNCQUFzQiw4Q0FBOEM7QUFDcEUsd0JBQXdCLDJDQUEyQztBQUNuRSwwQkFBMEIsNkNBQTZDO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwyQ0FBMkM7QUFDbkUsMEJBQTBCLDZDQUE2QztBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzQ0FBc0M7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsZ0JBQWdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDJDQUEyQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZ0JBQWdCLDJCQUEyQjs7QUFFM0M7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsdUJBQXVCO0FBQ2xDO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHlCQUF5QjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOERBQThEO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU9BO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLGlCQUFpQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDs7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQU9BO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsY0FBYyxVQUFVO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0MsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhOztBQUViLG9GQUFvRjtBQUNwRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLHNCQUFzQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFNBQVMsdUJBQXVCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLDRCQUE0Qix1Q0FBdUM7QUFDbkUsOEJBQThCLHNDQUFzQztB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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O0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLDRCQUE0QjtBQUN2QztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsaUJBQWlCO0FBQzVCO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQixpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSwrREFBK0Q7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVMsMEJBQTBCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQSxnQ0FBZ0MsK0JBQW1CO0FBQ25ELG9EQUFvRCwrQkFBbUI7O0FBRXZFOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsbURBQW1EO0FBQzdEO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSx1QkFBdUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFPQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLGtDQUFrQyxtQkFBbUI7QUFDckQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EseURBQXlELDRCQUE0Qjs7QUFFckY7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsaUNBQWlDO0FBQ2pDLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLHNCQUFzQjtBQUNqQztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxvQkFBb0I7QUFDL0I7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQyxrQ0FBa0M7QUFDbEM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0Es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QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUEseUNBQXlDLE9BQU87QUFDaEQseUJBQXlCLG1CQUFtQjtBQUM1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLE9BQU87QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQiw0QkFBNEI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwyQ0FBMkMsWUFBWTtBQUN2RCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxPQUFPO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLDRCQUE0QjtBQUM1QixRQUFRO0FBQ1Isd0JBQXdCLDBCQUEwQjtBQUNsRDtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsWUFBWTtBQUN2QyxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSwrR0FBK0cscUJBQXFCLG1CQUFtQjs7QUFFdkosNERBQTRELDBDQUEwQzs7Ozs7QUFLdEc7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQ0FBa0MsWUFBWTtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0EsaUNBQWlDLFlBQVk7QUFDN0M7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCLFlBQVk7QUFDM0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHdCQUF3QjtBQUN4QixLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsUUFBUTtBQUNoRDtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsUUFBUTtBQUM5QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx5Q0FBeUMsT0FBTztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFD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QTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxzQkFBc0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBU0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsdUJBQXVCLFNBQVMsaUJBQWlCLG1CQUFtQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLCtCQUErQiwrQkFBK0IsSUFBSTtBQUNsRTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSx1QkFBdUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLGdFQUFnRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFPQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsMkJBQTJCO0FBQ3RDO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSw0Q0FBNEMsc0NBQXNDLDhEQUE4RDtBQUNoSjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLG1CQUFtQjtBQUM5QjtBQUNBO0FBQ0E7Ozs7Ozs7QUFPQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxnQkFBZ0I7QUFDM0I7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHNCQUFzQixnQ0FBZ0M7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsYUFBYTtBQUNiO0FBQ0EsMEJBQTBCLFNBQVMsMEJBQTBCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNCQUFzQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxpQkFBaUIsTUFBTTtBQUN2QjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsYUFBYTtBQUM1RCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEseURBQXlELDhFQUE4RSw0Q0FBNEM7QUFDbkwsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEscURBQXFELDJFQUEyRSx1Q0FBdUM7QUFDdkssS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGVBQWU7QUFDNUI7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSwwQkFBMEI7QUFDckM7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsa0JBQWtCO0FBQzdCO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxVQUFVLGdFQUFnRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBLG9DQUFvQyxvQ0FBb0M7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw4QkFBOEI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLCtCQUErQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBLDJEQUEyRCxpQkFBaUI7QUFDNUU7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFJLGlCQUFpQjtBQUM1QjtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsaUJBQWlCO0FBQzVCO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsU0FBUztBQUNUO0FBQ0E7QUFDQSxpQ0FBaUMsU0FBUywrQkFBK0I7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGdCQUFnQjtBQUM3QztBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLDZCQUE2QixtQ0FBbUM7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsU0FBUyxnQ0FBZ0M7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGdCQUFnQjtBQUM3QztBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLDZCQUE2QixvQ0FBb0M7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDhCQUE4QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQ0FBaUMsb0NBQW9DO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBLGdCQUFnQiwrQkFBbUI7QUFDbkMsb0NBQW9DLCtCQUFtQjs7QUFFdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLDhCQUE4QjtBQUN6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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLGlCQUFpQjtBQUM1QjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxxQkFBcUI7QUFDaEM7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtB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QUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZ0JBQWdCLHNDQUFzQzs7QUFFdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQsaUVBQWlFO0FBQ2pFLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZ0RBQWdEO0FBQ2hELEtBQUs7QUFDTDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsWUFBWTtBQUNaO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtB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QUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSw0QkFBNEIsRUFBRSxFQUFFLElBQUksYUFBYSxFQUFFO0FBQ25EO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxTQUFTLHdCQUF3QixRQUFRLGdDQUFnQztBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjLGdEQUFnRDtBQUM5RDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZ0JBQWdCO0FBQy9DLHlCQUF5QjtBQUN6QixlQUFlO0FBQ2YsK0JBQStCLG9CQUFvQixvQkFBb0I7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsdUJBQXVCLG9CQUFvQjtBQUM5RTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLGNBQWMsd0NBQXdDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix5Q0FBeUM7QUFDM0Q7QUFDQTtBQUNBLDZCQUE2Qix1Q0FBdUM7QUFDcEUsMEJBQTBCLHlCQUF5QjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDRCQUE0QjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix5QkFBeUI7QUFDcEQsd0JBQXdCO0FBQ3hCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esa0JBQWtCLHdDQUF3QztBQUMxRCxrQkFBa0Isd0NBQXdDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUscUJBQXFCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsdUJBQXVCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxjQUFjO0FBQ2QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSx5QkFBeUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsbUNBQW1DO0FBQ3hEO0FBQ0E7QUFDQSxRQUFRLDJDQUEyQztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQXdEO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsdUJBQXVCLFNBQVMsa0NBQWtDO0FBQ2xFO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0EsY0FBYyw2QkFBNkI7QUFDM0MsYUFBYTtBQUNiLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsc0JBQXNCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVdBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLDRCQUE0QjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBT0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxnQkFBZ0Isc0NBQXNDOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUNBQW1DO0FBQ25DLEtBQUs7QUFDTDtBQUNBLHNFQUFzRTtBQUN0RSxLQUFLO0FBQ0w7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMENBQTBDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU9BO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJJQUEySSxxQkFBcUI7QUFDaEs7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwREFBMEQsUUFBUSwrQkFBK0IsTUFBTSx3Q0FBd0MsTUFBTTtBQUNySixRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLDJCQUEyQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFRQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFJO0FBQ1gsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFD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OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLDBCQUEwQjtBQUNyQztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGdFQUFnRTtBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJ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QUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUseUJBQXlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0NBQXdDLG9CQUFvQjtBQUM1RDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUNBLElBQUksS0FBSyxFQUFFLDJCQUEyQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSw4QkFBOEI7QUFDekM7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsU0FBUyxzQkFBc0I7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSwrQ0FBK0MsU0FBUyxxQkFBcUI7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLDZCQUE2QjtBQUN4QztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsSUFBSTtBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsa0JBQWtCOztBQUVsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQ0FBc0MsZ0NBQWdDO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtCQUErQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxrQkFBa0IsNkJBQTZCO0FBQy9DO0FBQ0E7QUFDQSxZQUFZLHNDQUFzQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsd0NBQXdDO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLGlDQUFpQztBQUM1QztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQSxhQUFhLCtCQUFtQjtBQUNoQyxpQ0FBaUMsK0JBQW1COztBQUVwRDs7Ozs7OztBQU9BO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWMscUNBQXFDO0FBQ25EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHNCQUFzQixtREFBbUQ7QUFDekUsS0FBSztBQUNMO0FBQ0Esc0JBQXNCLHNEQUFzRDtBQUM1RSxLQUFLO0FBQ0w7QUFDQSxzQkFBc0IsMERBQTBEO0FBQ2hGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0MsNkJBQTZCOztBQUVqRTtBQUNBO0FBQ0EsVUFBVSxvQ0FBb0M7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsMEJBQTBCO0FBQ3JDO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFRQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNkVBQTZFLDJJQUEySTtBQUN4TixRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsVUFBVSx5Q0FBeUM7QUFDbkQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVAsd0RBQXdELDJEQUEyRDtBQUNuSDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSwwQkFBMEI7QUFDckM7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELCtEQUErRCx5REFBeUQscUVBQXFFLDZEQUE2RCx3QkFBd0I7O0FBRXJqQiwwREFBMEQsMENBQTBDOzs7OztBQUtwRzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLHVGQUF1RixhQUFhO0FBQ3BHO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2RixlQUFlO0FBQzVHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsdURBQXVELDBDQUEwQzs7Ozs7QUFLakc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EseUZBQXlGLGdCQUFnQixzQkFBc0IsT0FBTywyQkFBMkIsMEJBQTBCLHlEQUF5RCxpQ0FBaUM7O0FBRXJSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFTQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsNkVBQTZFLGlDQUFpQztBQUM5RyxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLDJCQUEyQjtBQUN0QztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsbUJBQW1CLHFCQUFxQjtBQUN4Qzs7QUFFQTtBQUNBLHdCQUF3QixlQUFlO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBLFFBQVEsd0NBQXdDO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLDRCQUE0QjtBQUN2QztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsd0JBQXdCO0FBQ3ZDLFlBQVk7QUFDWixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQ0FBa0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQyx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsU0FBUyxxQ0FBcUM7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DLHdDQUF3QztBQUN4QyxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsZ0NBQWdDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFD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QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsZ0NBQWdDO0FBQzNDO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwyREFBMkQ7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQix1Q0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxzQkFBc0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFL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IndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvZWxlbWVudC11aS5jb21tb24uanM/ZDRjMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9XG4vKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2Rpc3QvXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDQ2KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvZGF0ZS11dGlsXCIpO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvZG9tXCIpO1xuXG4vKioqLyB9KSxcbi8qIDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvdXRpbFwiKTtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL21peGlucy9lbWl0dGVyXCIpO1xuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2xvY2FsZVwiKTtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL3Z1ZS1wb3BwZXJcIik7XG5cbi8qKiovIH0pLFxuLyogNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8qKiovIH0pLFxuLyogNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9tZXJnZVwiKTtcblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL2lucHV0XCIpO1xuXG4vKioqLyB9KSxcbi8qIDkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvbWl4aW5zL21pZ3JhdGluZ1wiKTtcblxuLyoqKi8gfSksXG4vKiAxMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9jbGlja291dHNpZGVcIik7XG5cbi8qKiovIH0pLFxuLyogMTEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvcG9wdXBcIik7XG5cbi8qKiovIH0pLFxuLyogMTIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvbG9jYWxlXCIpO1xuXG4vKioqLyB9KSxcbi8qIDEzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL2J1dHRvblwiKTtcblxuLyoqKi8gfSksXG4vKiAxNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9jaGVja2JveFwiKTtcblxuLyoqKi8gfSksXG4vKiAxNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9yZXNpemUtZXZlbnRcIik7XG5cbi8qKiovIH0pLFxuLyogMTYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvdHlwZXNcIik7XG5cbi8qKiovIH0pLFxuLyogMTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGhyb3R0bGUtZGVib3VuY2UvZGVib3VuY2VcIik7XG5cbi8qKiovIH0pLFxuLyogMTggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvc2Nyb2xsYmFyXCIpO1xuXG4vKioqLyB9KSxcbi8qIDE5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL3NoYXJlZFwiKTtcblxuLyoqKi8gfSksXG4vKiAyMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9kYXRlXCIpO1xuXG4vKioqLyB9KSxcbi8qIDIxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3RyYW5zaXRpb25zL2NvbGxhcHNlLXRyYW5zaXRpb25cIik7XG5cbi8qKiovIH0pLFxuLyogMjIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvdmRvbVwiKTtcblxuLyoqKi8gfSksXG4vKiAyMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9taXhpbnMvZm9jdXNcIik7XG5cbi8qKiovIH0pLFxuLyogMjQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYmFiZWwtaGVscGVyLXZ1ZS1qc3gtbWVyZ2UtcHJvcHNcIik7XG5cbi8qKiovIH0pLFxuLyogMjUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGhyb3R0bGUtZGVib3VuY2UvdGhyb3R0bGVcIik7XG5cbi8qKiovIH0pLFxuLyogMjYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdG9vbHRpcFwiKTtcblxuLyoqKi8gfSksXG4vKiAyNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9zY3JvbGwtaW50by12aWV3XCIpO1xuXG4vKioqLyB9KSxcbi8qIDI4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL2xvZGFzaFwiKTtcblxuLyoqKi8gfSksXG4vKiAyOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9idXR0b24tZ3JvdXBcIik7XG5cbi8qKiovIH0pLFxuLyogMzAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdGFnXCIpO1xuXG4vKioqLyB9KSxcbi8qIDMxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL3Njcm9sbGJhci13aWR0aFwiKTtcblxuLyoqKi8gfSksXG4vKiAzMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9jaGVja2JveC1ncm91cFwiKTtcblxuLyoqKi8gfSksXG4vKiAzMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9hZnRlci1sZWF2ZVwiKTtcblxuLyoqKi8gfSksXG4vKiAzNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9wcm9ncmVzc1wiKTtcblxuLyoqKi8gfSksXG4vKiAzNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9hcmlhLXV0aWxzXCIpO1xuXG4vKioqLyB9KSxcbi8qIDM2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInRocm90dGxlLWRlYm91bmNlXCIpO1xuXG4vKioqLyB9KSxcbi8qIDM3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3NlbGVjdFwiKTtcblxuLyoqKi8gfSksXG4vKiAzOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9vcHRpb25cIik7XG5cbi8qKiovIH0pLFxuLyogMzkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibm9ybWFsaXplLXdoZWVsXCIpO1xuXG4vKioqLyB9KSxcbi8qIDQwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL2FyaWEtZGlhbG9nXCIpO1xuXG4vKioqLyB9KSxcbi8qIDQxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImFzeW5jLXZhbGlkYXRvclwiKTtcblxuLyoqKi8gfSksXG4vKiA0MiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9pbnB1dC1udW1iZXJcIik7XG5cbi8qKiovIH0pLFxuLyogNDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvY2FzY2FkZXItcGFuZWxcIik7XG5cbi8qKiovIH0pLFxuLyogNDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvcmFkaW9cIik7XG5cbi8qKiovIH0pLFxuLyogNDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvcG9wb3ZlclwiKTtcblxuLyoqKi8gfSksXG4vKiA0NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNDcpO1xuXG5cbi8qKiovIH0pLFxuLyogNDcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcGFnaW5hdGlvbi9zcmMvcGFnZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcyNzRmMjY3JlxudmFyIHBhZ2VydnVlX3R5cGVfdGVtcGxhdGVfaWRfNzI3NGYyNjdfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwidWxcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcImVsLXBhZ2VyXCIsIG9uOiB7IGNsaWNrOiBfdm0ub25QYWdlckNsaWNrIH0gfSxcbiAgICBbXG4gICAgICBfdm0ucGFnZUNvdW50ID4gMFxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJsaVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgYWN0aXZlOiBfdm0uY3VycmVudFBhZ2UgPT09IDEsIGRpc2FibGVkOiBfdm0uZGlzYWJsZWQgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtfdm0uX3YoXCIxXCIpXVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5zaG93UHJldk1vcmVcbiAgICAgICAgPyBfYyhcImxpXCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWljb24gbW9yZSBidG4tcXVpY2twcmV2XCIsXG4gICAgICAgICAgICBjbGFzczogW192bS5xdWlja3ByZXZJY29uQ2xhc3MsIHsgZGlzYWJsZWQ6IF92bS5kaXNhYmxlZCB9XSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIG1vdXNlZW50ZXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5vbk1vdXNlZW50ZXIoXCJsZWZ0XCIpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1vdXNlbGVhdmU6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5xdWlja3ByZXZJY29uQ2xhc3MgPSBcImVsLWljb24tbW9yZVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl9sKF92bS5wYWdlcnMsIGZ1bmN0aW9uKHBhZ2VyKSB7XG4gICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICBcImxpXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBwYWdlcixcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgY2xhc3M6IHsgYWN0aXZlOiBfdm0uY3VycmVudFBhZ2UgPT09IHBhZ2VyLCBkaXNhYmxlZDogX3ZtLmRpc2FibGVkIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKHBhZ2VyKSldXG4gICAgICAgIClcbiAgICAgIH0pLFxuICAgICAgX3ZtLnNob3dOZXh0TW9yZVxuICAgICAgICA/IF9jKFwibGlcIiwge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbiBtb3JlIGJ0bi1xdWlja25leHRcIixcbiAgICAgICAgICAgIGNsYXNzOiBbX3ZtLnF1aWNrbmV4dEljb25DbGFzcywgeyBkaXNhYmxlZDogX3ZtLmRpc2FibGVkIH1dLFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgX3ZtLm9uTW91c2VlbnRlcihcInJpZ2h0XCIpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1vdXNlbGVhdmU6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5xdWlja25leHRJY29uQ2xhc3MgPSBcImVsLWljb24tbW9yZVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLnBhZ2VDb3VudCA+IDFcbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZlOiBfdm0uY3VycmVudFBhZ2UgPT09IF92bS5wYWdlQ291bnQsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnBhZ2VDb3VudCkpXVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnBhZ2VydnVlX3R5cGVfdGVtcGxhdGVfaWRfNzI3NGYyNjdfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wYWdpbmF0aW9uL3NyYy9wYWdlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzI3NGYyNjcmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3BhZ2luYXRpb24vc3JjL3BhZ2VyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWdlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFBhZ2VyJyxcblxuICBwcm9wczoge1xuICAgIGN1cnJlbnRQYWdlOiBOdW1iZXIsXG5cbiAgICBwYWdlQ291bnQ6IE51bWJlcixcblxuICAgIHBhZ2VyQ291bnQ6IE51bWJlcixcblxuICAgIGRpc2FibGVkOiBCb29sZWFuXG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICBzaG93UHJldk1vcmU6IGZ1bmN0aW9uIHNob3dQcmV2TW9yZSh2YWwpIHtcbiAgICAgIGlmICghdmFsKSB0aGlzLnF1aWNrcHJldkljb25DbGFzcyA9ICdlbC1pY29uLW1vcmUnO1xuICAgIH0sXG4gICAgc2hvd05leHRNb3JlOiBmdW5jdGlvbiBzaG93TmV4dE1vcmUodmFsKSB7XG4gICAgICBpZiAoIXZhbCkgdGhpcy5xdWlja25leHRJY29uQ2xhc3MgPSAnZWwtaWNvbi1tb3JlJztcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIG9uUGFnZXJDbGljazogZnVuY3Rpb24gb25QYWdlckNsaWNrKGV2ZW50KSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnVUwnIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmV3UGFnZSA9IE51bWJlcihldmVudC50YXJnZXQudGV4dENvbnRlbnQpO1xuICAgICAgdmFyIHBhZ2VDb3VudCA9IHRoaXMucGFnZUNvdW50O1xuICAgICAgdmFyIGN1cnJlbnRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICAgIHZhciBwYWdlckNvdW50T2Zmc2V0ID0gdGhpcy5wYWdlckNvdW50IC0gMjtcblxuICAgICAgaWYgKHRhcmdldC5jbGFzc05hbWUuaW5kZXhPZignbW9yZScpICE9PSAtMSkge1xuICAgICAgICBpZiAodGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdxdWlja3ByZXYnKSAhPT0gLTEpIHtcbiAgICAgICAgICBuZXdQYWdlID0gY3VycmVudFBhZ2UgLSBwYWdlckNvdW50T2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigncXVpY2tuZXh0JykgIT09IC0xKSB7XG4gICAgICAgICAgbmV3UGFnZSA9IGN1cnJlbnRQYWdlICsgcGFnZXJDb3VudE9mZnNldDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghaXNOYU4obmV3UGFnZSkpIHtcbiAgICAgICAgaWYgKG5ld1BhZ2UgPCAxKSB7XG4gICAgICAgICAgbmV3UGFnZSA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3UGFnZSA+IHBhZ2VDb3VudCkge1xuICAgICAgICAgIG5ld1BhZ2UgPSBwYWdlQ291bnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld1BhZ2UgIT09IGN1cnJlbnRQYWdlKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIG5ld1BhZ2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25Nb3VzZWVudGVyOiBmdW5jdGlvbiBvbk1vdXNlZW50ZXIoZGlyZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIHRoaXMucXVpY2twcmV2SWNvbkNsYXNzID0gJ2VsLWljb24tZC1hcnJvdy1sZWZ0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucXVpY2tuZXh0SWNvbkNsYXNzID0gJ2VsLWljb24tZC1hcnJvdy1yaWdodCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgcGFnZXJzOiBmdW5jdGlvbiBwYWdlcnMoKSB7XG4gICAgICB2YXIgcGFnZXJDb3VudCA9IHRoaXMucGFnZXJDb3VudDtcbiAgICAgIHZhciBoYWxmUGFnZXJDb3VudCA9IChwYWdlckNvdW50IC0gMSkgLyAyO1xuXG4gICAgICB2YXIgY3VycmVudFBhZ2UgPSBOdW1iZXIodGhpcy5jdXJyZW50UGFnZSk7XG4gICAgICB2YXIgcGFnZUNvdW50ID0gTnVtYmVyKHRoaXMucGFnZUNvdW50KTtcblxuICAgICAgdmFyIHNob3dQcmV2TW9yZSA9IGZhbHNlO1xuICAgICAgdmFyIHNob3dOZXh0TW9yZSA9IGZhbHNlO1xuXG4gICAgICBpZiAocGFnZUNvdW50ID4gcGFnZXJDb3VudCkge1xuICAgICAgICBpZiAoY3VycmVudFBhZ2UgPiBwYWdlckNvdW50IC0gaGFsZlBhZ2VyQ291bnQpIHtcbiAgICAgICAgICBzaG93UHJldk1vcmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnRQYWdlIDwgcGFnZUNvdW50IC0gaGFsZlBhZ2VyQ291bnQpIHtcbiAgICAgICAgICBzaG93TmV4dE1vcmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBhcnJheSA9IFtdO1xuXG4gICAgICBpZiAoc2hvd1ByZXZNb3JlICYmICFzaG93TmV4dE1vcmUpIHtcbiAgICAgICAgdmFyIHN0YXJ0UGFnZSA9IHBhZ2VDb3VudCAtIChwYWdlckNvdW50IC0gMik7XG4gICAgICAgIGZvciAodmFyIGkgPSBzdGFydFBhZ2U7IGkgPCBwYWdlQ291bnQ7IGkrKykge1xuICAgICAgICAgIGFycmF5LnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXNob3dQcmV2TW9yZSAmJiBzaG93TmV4dE1vcmUpIHtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IHBhZ2VyQ291bnQ7IF9pKyspIHtcbiAgICAgICAgICBhcnJheS5wdXNoKF9pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzaG93UHJldk1vcmUgJiYgc2hvd05leHRNb3JlKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSBNYXRoLmZsb29yKHBhZ2VyQ291bnQgLyAyKSAtIDE7XG4gICAgICAgIGZvciAodmFyIF9pMiA9IGN1cnJlbnRQYWdlIC0gb2Zmc2V0OyBfaTIgPD0gY3VycmVudFBhZ2UgKyBvZmZzZXQ7IF9pMisrKSB7XG4gICAgICAgICAgYXJyYXkucHVzaChfaTIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBfaTMgPSAyOyBfaTMgPCBwYWdlQ291bnQ7IF9pMysrKSB7XG4gICAgICAgICAgYXJyYXkucHVzaChfaTMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2hvd1ByZXZNb3JlID0gc2hvd1ByZXZNb3JlO1xuICAgICAgdGhpcy5zaG93TmV4dE1vcmUgPSBzaG93TmV4dE1vcmU7XG5cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudDogbnVsbCxcbiAgICAgIHNob3dQcmV2TW9yZTogZmFsc2UsXG4gICAgICBzaG93TmV4dE1vcmU6IGZhbHNlLFxuICAgICAgcXVpY2tuZXh0SWNvbkNsYXNzOiAnZWwtaWNvbi1tb3JlJyxcbiAgICAgIHF1aWNrcHJldkljb25DbGFzczogJ2VsLWljb24tbW9yZSdcbiAgICB9O1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcGFnaW5hdGlvbi9zcmMvcGFnZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19wYWdlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChwYWdlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXG4vKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7IGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCkgfVxuICAgICAgOiBpbmplY3RTdHlsZXNcbiAgfVxuXG4gIGlmIChob29rKSB7XG4gICAgaWYgKG9wdGlvbnMuZnVuY3Rpb25hbCkge1xuICAgICAgLy8gZm9yIHRlbXBsYXRlLW9ubHkgaG90LXJlbG9hZCBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcmVuZGVyIGZuIGRvZXNuJ3RcbiAgICAgIC8vIGdvIHRocm91Z2ggdGhlIG5vcm1hbGl6ZXJcbiAgICAgIG9wdGlvbnMuX2luamVjdFN0eWxlcyA9IGhvb2tcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3BhZ2luYXRpb24vc3JjL3BhZ2VyLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX3BhZ2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBwYWdlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzcyNzRmMjY3X3JlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhcGk7IH1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvcGFnaW5hdGlvbi9zcmMvcGFnZXIudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhZ2VyID0gKGNvbXBvbmVudC5leHBvcnRzKTtcbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9zZWxlY3RcIlxudmFyIHNlbGVjdF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTtcbnZhciBzZWxlY3RfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oc2VsZWN0Xyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9vcHRpb25cIlxudmFyIG9wdGlvbl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KTtcbnZhciBvcHRpb25fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4ob3B0aW9uXyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9pbnB1dFwiXG52YXIgaW5wdXRfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbnZhciBpbnB1dF9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihpbnB1dF8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2xvY2FsZVwiXG52YXIgbG9jYWxlXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgbG9jYWxlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGxvY2FsZV8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvdXRpbFwiXG52YXIgdXRpbF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3BhZ2luYXRpb24vc3JjL3BhZ2luYXRpb24uanNcblxuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFnaW5hdGlvbiA9ICh7XG4gIG5hbWU6ICdFbFBhZ2luYXRpb24nLFxuXG4gIHByb3BzOiB7XG4gICAgcGFnZVNpemU6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDEwXG4gICAgfSxcblxuICAgIHNtYWxsOiBCb29sZWFuLFxuXG4gICAgdG90YWw6IE51bWJlcixcblxuICAgIHBhZ2VDb3VudDogTnVtYmVyLFxuXG4gICAgcGFnZXJDb3VudDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZSB8IDApID09PSB2YWx1ZSAmJiB2YWx1ZSA+IDQgJiYgdmFsdWUgPCAyMiAmJiB2YWx1ZSAlIDIgPT09IDE7XG4gICAgICB9LFxuXG4gICAgICBkZWZhdWx0OiA3XG4gICAgfSxcblxuICAgIGN1cnJlbnRQYWdlOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAxXG4gICAgfSxcblxuICAgIGxheW91dDoge1xuICAgICAgZGVmYXVsdDogJ3ByZXYsIHBhZ2VyLCBuZXh0LCBqdW1wZXIsIC0+LCB0b3RhbCdcbiAgICB9LFxuXG4gICAgcGFnZVNpemVzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gWzEwLCAyMCwgMzAsIDQwLCA1MCwgMTAwXTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcG9wcGVyQ2xhc3M6IFN0cmluZyxcblxuICAgIHByZXZUZXh0OiBTdHJpbmcsXG5cbiAgICBuZXh0VGV4dDogU3RyaW5nLFxuXG4gICAgYmFja2dyb3VuZDogQm9vbGVhbixcblxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuXG4gICAgaGlkZU9uU2luZ2xlUGFnZTogQm9vbGVhblxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludGVybmFsQ3VycmVudFBhZ2U6IDEsXG4gICAgICBpbnRlcm5hbFBhZ2VTaXplOiAwLFxuICAgICAgbGFzdEVtaXR0ZWRQYWdlOiAtMSxcbiAgICAgIHVzZXJDaGFuZ2VQYWdlU2l6ZTogZmFsc2VcbiAgICB9O1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGxheW91dCA9IHRoaXMubGF5b3V0O1xuICAgIGlmICghbGF5b3V0KSByZXR1cm4gbnVsbDtcbiAgICBpZiAodGhpcy5oaWRlT25TaW5nbGVQYWdlICYmICghdGhpcy5pbnRlcm5hbFBhZ2VDb3VudCB8fCB0aGlzLmludGVybmFsUGFnZUNvdW50ID09PSAxKSkgcmV0dXJuIG51bGw7XG5cbiAgICB2YXIgdGVtcGxhdGUgPSBoKCdkaXYnLCB7ICdjbGFzcyc6IFsnZWwtcGFnaW5hdGlvbicsIHtcbiAgICAgICAgJ2lzLWJhY2tncm91bmQnOiB0aGlzLmJhY2tncm91bmQsXG4gICAgICAgICdlbC1wYWdpbmF0aW9uLS1zbWFsbCc6IHRoaXMuc21hbGxcbiAgICAgIH1dIH0pO1xuICAgIHZhciBURU1QTEFURV9NQVAgPSB7XG4gICAgICBwcmV2OiBoKCdwcmV2JyksXG4gICAgICBqdW1wZXI6IGgoJ2p1bXBlcicpLFxuICAgICAgcGFnZXI6IGgoJ3BhZ2VyJywge1xuICAgICAgICBhdHRyczogeyBjdXJyZW50UGFnZTogdGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlLCBwYWdlQ291bnQ6IHRoaXMuaW50ZXJuYWxQYWdlQ291bnQsIHBhZ2VyQ291bnQ6IHRoaXMucGFnZXJDb3VudCwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICAnY2hhbmdlJzogdGhpcy5oYW5kbGVDdXJyZW50Q2hhbmdlXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbmV4dDogaCgnbmV4dCcpLFxuICAgICAgc2l6ZXM6IGgoJ3NpemVzJywge1xuICAgICAgICBhdHRyczogeyBwYWdlU2l6ZXM6IHRoaXMucGFnZVNpemVzIH1cbiAgICAgIH0pLFxuICAgICAgc2xvdDogaCgnc2xvdCcsIFt0aGlzLiRzbG90cy5kZWZhdWx0ID8gdGhpcy4kc2xvdHMuZGVmYXVsdCA6ICcnXSksXG4gICAgICB0b3RhbDogaCgndG90YWwnKVxuICAgIH07XG4gICAgdmFyIGNvbXBvbmVudHMgPSBsYXlvdXQuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtLnRyaW0oKTtcbiAgICB9KTtcbiAgICB2YXIgcmlnaHRXcmFwcGVyID0gaCgnZGl2JywgeyAnY2xhc3MnOiAnZWwtcGFnaW5hdGlvbl9fcmlnaHR3cmFwcGVyJyB9KTtcbiAgICB2YXIgaGF2ZVJpZ2h0V3JhcHBlciA9IGZhbHNlO1xuXG4gICAgdGVtcGxhdGUuY2hpbGRyZW4gPSB0ZW1wbGF0ZS5jaGlsZHJlbiB8fCBbXTtcbiAgICByaWdodFdyYXBwZXIuY2hpbGRyZW4gPSByaWdodFdyYXBwZXIuY2hpbGRyZW4gfHwgW107XG4gICAgY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChjb21wbykge1xuICAgICAgaWYgKGNvbXBvID09PSAnLT4nKSB7XG4gICAgICAgIGhhdmVSaWdodFdyYXBwZXIgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaGF2ZVJpZ2h0V3JhcHBlcikge1xuICAgICAgICB0ZW1wbGF0ZS5jaGlsZHJlbi5wdXNoKFRFTVBMQVRFX01BUFtjb21wb10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmlnaHRXcmFwcGVyLmNoaWxkcmVuLnB1c2goVEVNUExBVEVfTUFQW2NvbXBvXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoaGF2ZVJpZ2h0V3JhcHBlcikge1xuICAgICAgdGVtcGxhdGUuY2hpbGRyZW4udW5zaGlmdChyaWdodFdyYXBwZXIpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfSxcblxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBQcmV2OiB7XG4gICAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgICAgIHJldHVybiBoKFxuICAgICAgICAgICdidXR0b24nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuXG4gICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLiRwYXJlbnQuZGlzYWJsZWQgfHwgdGhpcy4kcGFyZW50LmludGVybmFsQ3VycmVudFBhZ2UgPD0gMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdjbGFzcyc6ICdidG4tcHJldicsIG9uOiB7XG4gICAgICAgICAgICAgICdjbGljayc6IHRoaXMuJHBhcmVudC5wcmV2XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdGhpcy4kcGFyZW50LnByZXZUZXh0ID8gaCgnc3BhbicsIFt0aGlzLiRwYXJlbnQucHJldlRleHRdKSA6IGgoJ2knLCB7ICdjbGFzcyc6ICdlbC1pY29uIGVsLWljb24tYXJyb3ctbGVmdCcgfSldXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIE5leHQ6IHtcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICAgICAgcmV0dXJuIGgoXG4gICAgICAgICAgJ2J1dHRvbicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG5cbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuJHBhcmVudC5kaXNhYmxlZCB8fCB0aGlzLiRwYXJlbnQuaW50ZXJuYWxDdXJyZW50UGFnZSA9PT0gdGhpcy4kcGFyZW50LmludGVybmFsUGFnZUNvdW50IHx8IHRoaXMuJHBhcmVudC5pbnRlcm5hbFBhZ2VDb3VudCA9PT0gMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdjbGFzcyc6ICdidG4tbmV4dCcsIG9uOiB7XG4gICAgICAgICAgICAgICdjbGljayc6IHRoaXMuJHBhcmVudC5uZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdGhpcy4kcGFyZW50Lm5leHRUZXh0ID8gaCgnc3BhbicsIFt0aGlzLiRwYXJlbnQubmV4dFRleHRdKSA6IGgoJ2knLCB7ICdjbGFzcyc6ICdlbC1pY29uIGVsLWljb24tYXJyb3ctcmlnaHQnIH0pXVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBTaXplczoge1xuICAgICAgbWl4aW5zOiBbbG9jYWxlX2RlZmF1bHQuYV0sXG5cbiAgICAgIHByb3BzOiB7XG4gICAgICAgIHBhZ2VTaXplczogQXJyYXlcbiAgICAgIH0sXG5cbiAgICAgIHdhdGNoOiB7XG4gICAgICAgIHBhZ2VTaXplczoge1xuICAgICAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0KHV0aWxfW1widmFsdWVFcXVhbHNcIl0pKG5ld1ZhbCwgb2xkVmFsKSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmV3VmFsKSkge1xuICAgICAgICAgICAgICB0aGlzLiRwYXJlbnQuaW50ZXJuYWxQYWdlU2l6ZSA9IG5ld1ZhbC5pbmRleE9mKHRoaXMuJHBhcmVudC5wYWdlU2l6ZSkgPiAtMSA/IHRoaXMuJHBhcmVudC5wYWdlU2l6ZSA6IHRoaXMucGFnZVNpemVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBoKFxuICAgICAgICAgICdzcGFuJyxcbiAgICAgICAgICB7ICdjbGFzcyc6ICdlbC1wYWdpbmF0aW9uX19zaXplcycgfSxcbiAgICAgICAgICBbaChcbiAgICAgICAgICAgICdlbC1zZWxlY3QnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLiRwYXJlbnQuaW50ZXJuYWxQYWdlU2l6ZSxcbiAgICAgICAgICAgICAgICBwb3BwZXJDbGFzczogdGhpcy4kcGFyZW50LnBvcHBlckNsYXNzIHx8ICcnLFxuICAgICAgICAgICAgICAgIHNpemU6ICdtaW5pJyxcblxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLiRwYXJlbnQuZGlzYWJsZWQgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAnaW5wdXQnOiB0aGlzLmhhbmRsZUNoYW5nZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW3RoaXMucGFnZVNpemVzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICByZXR1cm4gaCgnZWwtb3B0aW9uJywge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtICsgX3RoaXMudCgnZWwucGFnaW5hdGlvbi5wYWdlc2l6ZScpIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KV1cbiAgICAgICAgICApXVxuICAgICAgICApO1xuICAgICAgfSxcblxuXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEVsU2VsZWN0OiBzZWxlY3RfZGVmYXVsdC5hLFxuICAgICAgICBFbE9wdGlvbjogb3B0aW9uX2RlZmF1bHQuYVxuICAgICAgfSxcblxuICAgICAgbWV0aG9kczoge1xuICAgICAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZSh2YWwpIHtcbiAgICAgICAgICBpZiAodmFsICE9PSB0aGlzLiRwYXJlbnQuaW50ZXJuYWxQYWdlU2l6ZSkge1xuICAgICAgICAgICAgdGhpcy4kcGFyZW50LmludGVybmFsUGFnZVNpemUgPSB2YWwgPSBwYXJzZUludCh2YWwsIDEwKTtcbiAgICAgICAgICAgIHRoaXMuJHBhcmVudC51c2VyQ2hhbmdlUGFnZVNpemUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRlbWl0KCd1cGRhdGU6cGFnZVNpemUnLCB2YWwpO1xuICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRlbWl0KCdzaXplLWNoYW5nZScsIHZhbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIEp1bXBlcjoge1xuICAgICAgbWl4aW5zOiBbbG9jYWxlX2RlZmF1bHQuYV0sXG5cbiAgICAgIGNvbXBvbmVudHM6IHsgRWxJbnB1dDogaW5wdXRfZGVmYXVsdC5hIH0sXG5cbiAgICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdXNlcklucHV0OiBudWxsXG4gICAgICAgIH07XG4gICAgICB9LFxuXG5cbiAgICAgIHdhdGNoOiB7XG4gICAgICAgICckcGFyZW50LmludGVybmFsQ3VycmVudFBhZ2UnOiBmdW5jdGlvbiAkcGFyZW50SW50ZXJuYWxDdXJyZW50UGFnZSgpIHtcbiAgICAgICAgICB0aGlzLnVzZXJJbnB1dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgaGFuZGxlS2V5dXA6IGZ1bmN0aW9uIGhhbmRsZUtleXVwKF9yZWYpIHtcbiAgICAgICAgICB2YXIga2V5Q29kZSA9IF9yZWYua2V5Q29kZSxcbiAgICAgICAgICAgICAgdGFyZ2V0ID0gX3JlZi50YXJnZXQ7XG5cbiAgICAgICAgICAvLyBDaHJvbWUsIFNhZmFyaSwgRmlyZWZveCB0cmlnZ2VycyBjaGFuZ2UgZXZlbnQgb24gRW50ZXJcbiAgICAgICAgICAvLyBIYWNrIGZvciBJRTogaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9pc3N1ZXMvMTE3MTBcbiAgICAgICAgICAvLyBEcm9wIHRoaXMgbWV0aG9kIHdoZW4gd2Ugbm8gbG9uZ2VyIHN1cHBvcnRzIElFXG4gICAgICAgICAgaWYgKGtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh0YXJnZXQudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaGFuZGxlSW5wdXQ6IGZ1bmN0aW9uIGhhbmRsZUlucHV0KHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy51c2VySW5wdXQgPSB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFuZGxlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UodmFsdWUpIHtcbiAgICAgICAgICB0aGlzLiRwYXJlbnQuaW50ZXJuYWxDdXJyZW50UGFnZSA9IHRoaXMuJHBhcmVudC5nZXRWYWxpZEN1cnJlbnRQYWdlKHZhbHVlKTtcbiAgICAgICAgICB0aGlzLiRwYXJlbnQuZW1pdENoYW5nZSgpO1xuICAgICAgICAgIHRoaXMudXNlcklucHV0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgICAgICByZXR1cm4gaChcbiAgICAgICAgICAnc3BhbicsXG4gICAgICAgICAgeyAnY2xhc3MnOiAnZWwtcGFnaW5hdGlvbl9fanVtcCcgfSxcbiAgICAgICAgICBbdGhpcy50KCdlbC5wYWdpbmF0aW9uLmdvdG8nKSwgaCgnZWwtaW5wdXQnLCB7XG4gICAgICAgICAgICAnY2xhc3MnOiAnZWwtcGFnaW5hdGlvbl9fZWRpdG9yIGlzLWluLXBhZ2luYXRpb24nLFxuICAgICAgICAgICAgYXR0cnM6IHsgbWluOiAxLFxuICAgICAgICAgICAgICBtYXg6IHRoaXMuJHBhcmVudC5pbnRlcm5hbFBhZ2VDb3VudCxcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudXNlcklucHV0ICE9PSBudWxsID8gdGhpcy51c2VySW5wdXQgOiB0aGlzLiRwYXJlbnQuaW50ZXJuYWxDdXJyZW50UGFnZSxcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLiRwYXJlbnQuZGlzYWJsZWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYXRpdmVPbjoge1xuICAgICAgICAgICAgICAna2V5dXAnOiB0aGlzLmhhbmRsZUtleXVwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgJ2lucHV0JzogdGhpcy5oYW5kbGVJbnB1dCxcbiAgICAgICAgICAgICAgJ2NoYW5nZSc6IHRoaXMuaGFuZGxlQ2hhbmdlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksIHRoaXMudCgnZWwucGFnaW5hdGlvbi5wYWdlQ2xhc3NpZmllcicpXVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBUb3RhbDoge1xuICAgICAgbWl4aW5zOiBbbG9jYWxlX2RlZmF1bHQuYV0sXG5cbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLiRwYXJlbnQudG90YWwgPT09ICdudW1iZXInID8gaChcbiAgICAgICAgICAnc3BhbicsXG4gICAgICAgICAgeyAnY2xhc3MnOiAnZWwtcGFnaW5hdGlvbl9fdG90YWwnIH0sXG4gICAgICAgICAgW3RoaXMudCgnZWwucGFnaW5hdGlvbi50b3RhbCcsIHsgdG90YWw6IHRoaXMuJHBhcmVudC50b3RhbCB9KV1cbiAgICAgICAgKSA6ICcnO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBQYWdlcjogcGFnZXJcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlQ3VycmVudENoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ3VycmVudENoYW5nZSh2YWwpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxDdXJyZW50UGFnZSA9IHRoaXMuZ2V0VmFsaWRDdXJyZW50UGFnZSh2YWwpO1xuICAgICAgdGhpcy51c2VyQ2hhbmdlUGFnZVNpemUgPSB0cnVlO1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfSxcbiAgICBwcmV2OiBmdW5jdGlvbiBwcmV2KCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHZhciBuZXdWYWwgPSB0aGlzLmludGVybmFsQ3VycmVudFBhZ2UgLSAxO1xuICAgICAgdGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlID0gdGhpcy5nZXRWYWxpZEN1cnJlbnRQYWdlKG5ld1ZhbCk7XG4gICAgICB0aGlzLiRlbWl0KCdwcmV2LWNsaWNrJywgdGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlKTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIH0sXG4gICAgbmV4dDogZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgICB2YXIgbmV3VmFsID0gdGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlICsgMTtcbiAgICAgIHRoaXMuaW50ZXJuYWxDdXJyZW50UGFnZSA9IHRoaXMuZ2V0VmFsaWRDdXJyZW50UGFnZShuZXdWYWwpO1xuICAgICAgdGhpcy4kZW1pdCgnbmV4dC1jbGljaycsIHRoaXMuaW50ZXJuYWxDdXJyZW50UGFnZSk7XG4gICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9LFxuICAgIGdldFZhbGlkQ3VycmVudFBhZ2U6IGZ1bmN0aW9uIGdldFZhbGlkQ3VycmVudFBhZ2UodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcblxuICAgICAgdmFyIGhhdmVQYWdlQ291bnQgPSB0eXBlb2YgdGhpcy5pbnRlcm5hbFBhZ2VDb3VudCA9PT0gJ251bWJlcic7XG5cbiAgICAgIHZhciByZXNldFZhbHVlID0gdm9pZCAwO1xuICAgICAgaWYgKCFoYXZlUGFnZUNvdW50KSB7XG4gICAgICAgIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPCAxKSByZXNldFZhbHVlID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWx1ZSA8IDEpIHtcbiAgICAgICAgICByZXNldFZhbHVlID0gMTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+IHRoaXMuaW50ZXJuYWxQYWdlQ291bnQpIHtcbiAgICAgICAgICByZXNldFZhbHVlID0gdGhpcy5pbnRlcm5hbFBhZ2VDb3VudDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzZXRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIGlzTmFOKHZhbHVlKSkge1xuICAgICAgICByZXNldFZhbHVlID0gMTtcbiAgICAgIH0gZWxzZSBpZiAocmVzZXRWYWx1ZSA9PT0gMCkge1xuICAgICAgICByZXNldFZhbHVlID0gMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc2V0VmFsdWUgPT09IHVuZGVmaW5lZCA/IHZhbHVlIDogcmVzZXRWYWx1ZTtcbiAgICB9LFxuICAgIGVtaXRDaGFuZ2U6IGZ1bmN0aW9uIGVtaXRDaGFuZ2UoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMyLmludGVybmFsQ3VycmVudFBhZ2UgIT09IF90aGlzMi5sYXN0RW1pdHRlZFBhZ2UgfHwgX3RoaXMyLnVzZXJDaGFuZ2VQYWdlU2l6ZSkge1xuICAgICAgICAgIF90aGlzMi4kZW1pdCgnY3VycmVudC1jaGFuZ2UnLCBfdGhpczIuaW50ZXJuYWxDdXJyZW50UGFnZSk7XG4gICAgICAgICAgX3RoaXMyLmxhc3RFbWl0dGVkUGFnZSA9IF90aGlzMi5pbnRlcm5hbEN1cnJlbnRQYWdlO1xuICAgICAgICAgIF90aGlzMi51c2VyQ2hhbmdlUGFnZVNpemUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgaW50ZXJuYWxQYWdlQ291bnQ6IGZ1bmN0aW9uIGludGVybmFsUGFnZUNvdW50KCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnRvdGFsID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLmludGVybmFsUGFnZVNpemUpKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMucGFnZUNvdW50ID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoMSwgdGhpcy5wYWdlQ291bnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgY3VycmVudFBhZ2U6IHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxDdXJyZW50UGFnZSA9IHRoaXMuZ2V0VmFsaWRDdXJyZW50UGFnZSh2YWwpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBwYWdlU2l6ZToge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2YWwpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTaXplID0gaXNOYU4odmFsKSA/IDEwIDogdmFsO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBpbnRlcm5hbEN1cnJlbnRQYWdlOiB7XG4gICAgICBpbW1lZGlhdGU6IHRydWUsXG4gICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbCkge1xuICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6Y3VycmVudFBhZ2UnLCBuZXdWYWwpO1xuICAgICAgICB0aGlzLmxhc3RFbWl0dGVkUGFnZSA9IC0xO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBpbnRlcm5hbFBhZ2VDb3VudDogZnVuY3Rpb24gaW50ZXJuYWxQYWdlQ291bnQobmV3VmFsKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHZhciBvbGRQYWdlID0gdGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlO1xuICAgICAgaWYgKG5ld1ZhbCA+IDAgJiYgb2xkUGFnZSA9PT0gMCkge1xuICAgICAgICB0aGlzLmludGVybmFsQ3VycmVudFBhZ2UgPSAxO1xuICAgICAgfSBlbHNlIGlmIChvbGRQYWdlID4gbmV3VmFsKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxDdXJyZW50UGFnZSA9IG5ld1ZhbCA9PT0gMCA/IDEgOiBuZXdWYWw7XG4gICAgICAgIHRoaXMudXNlckNoYW5nZVBhZ2VTaXplICYmIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy51c2VyQ2hhbmdlUGFnZVNpemUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wYWdpbmF0aW9uL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnBhZ2luYXRpb24uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChwYWdpbmF0aW9uLm5hbWUsIHBhZ2luYXRpb24pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfcGFnaW5hdGlvbiA9IChwYWdpbmF0aW9uKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGlhbG9nL3NyYy9jb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYwMTQwZTYyJlxudmFyIGNvbXBvbmVudHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYwMTQwZTYyX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInRyYW5zaXRpb25cIixcbiAgICB7XG4gICAgICBhdHRyczogeyBuYW1lOiBcImRpYWxvZy1mYWRlXCIgfSxcbiAgICAgIG9uOiB7IFwiYWZ0ZXItZW50ZXJcIjogX3ZtLmFmdGVyRW50ZXIsIFwiYWZ0ZXItbGVhdmVcIjogX3ZtLmFmdGVyTGVhdmUgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZpc2libGUsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IFwidmlzaWJsZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1kaWFsb2dfX3dyYXBwZXJcIixcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlV3JhcHBlckNsaWNrKCRldmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogX3ZtLmtleSxcbiAgICAgICAgICAgICAgcmVmOiBcImRpYWxvZ1wiLFxuICAgICAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgICAgIFwiZWwtZGlhbG9nXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgXCJpcy1mdWxsc2NyZWVuXCI6IF92bS5mdWxsc2NyZWVuLFxuICAgICAgICAgICAgICAgICAgXCJlbC1kaWFsb2ctLWNlbnRlclwiOiBfdm0uY2VudGVyXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfdm0uY3VzdG9tQ2xhc3NcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgc3R5bGU6IF92bS5zdHlsZSxcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICByb2xlOiBcImRpYWxvZ1wiLFxuICAgICAgICAgICAgICAgIFwiYXJpYS1tb2RhbFwiOiBcInRydWVcIixcbiAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX3ZtLnRpdGxlIHx8IFwiZGlhbG9nXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWRpYWxvZ19faGVhZGVyXCIgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3QoXCJ0aXRsZVwiLCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWRpYWxvZ19fdGl0bGVcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfdm0uc2hvd0Nsb3NlXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1kaWFsb2dfX2hlYWRlcmJ0blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImJ1dHRvblwiLCBcImFyaWEtbGFiZWxcIjogXCJDbG9zZVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGFuZGxlQ2xvc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtZGlhbG9nX19jbG9zZSBlbC1pY29uIGVsLWljb24tY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBfdm0ucmVuZGVyZWRcbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWRpYWxvZ19fYm9keVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSxcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgIF92bS4kc2xvdHMuZm9vdGVyXG4gICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1kaWFsb2dfX2Zvb3RlclwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3QoXCJmb290ZXJcIildLFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgXVxuICAgICAgICAgIClcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIGNvbXBvbmVudHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYwMTQwZTYyX3N0YXRpY1JlbmRlckZucyA9IFtdXG5jb21wb25lbnR2dWVfdHlwZV90ZW1wbGF0ZV9pZF82MDE0MGU2Ml9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RpYWxvZy9zcmMvY29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MDE0MGU2MiZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3BvcHVwXCJcbnZhciBwb3B1cF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcbnZhciBwb3B1cF9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihwb3B1cF8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbWl4aW5zL21pZ3JhdGluZ1wiXG52YXIgbWlncmF0aW5nXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG52YXIgbWlncmF0aW5nX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKG1pZ3JhdGluZ18pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2VtaXR0ZXJcIlxudmFyIGVtaXR0ZXJfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbnZhciBlbWl0dGVyX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGVtaXR0ZXJfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGlhbG9nL3NyYy9jb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbXBvbmVudHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbERpYWxvZycsXG5cbiAgbWl4aW5zOiBbcG9wdXBfZGVmYXVsdC5hLCBlbWl0dGVyX2RlZmF1bHQuYSwgbWlncmF0aW5nX2RlZmF1bHQuYV0sXG5cbiAgcHJvcHM6IHtcbiAgICB0aXRsZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuXG4gICAgbW9kYWw6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcblxuICAgIG1vZGFsQXBwZW5kVG9Cb2R5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG5cbiAgICBhcHBlbmRUb0JvZHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG5cbiAgICBsb2NrU2Nyb2xsOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG5cbiAgICBjbG9zZU9uQ2xpY2tNb2RhbDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuXG4gICAgY2xvc2VPblByZXNzRXNjYXBlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG5cbiAgICBzaG93Q2xvc2U6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcblxuICAgIHdpZHRoOiBTdHJpbmcsXG5cbiAgICBmdWxsc2NyZWVuOiBCb29sZWFuLFxuXG4gICAgY3VzdG9tQ2xhc3M6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcblxuICAgIHRvcDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzE1dmgnXG4gICAgfSxcbiAgICBiZWZvcmVDbG9zZTogRnVuY3Rpb24sXG4gICAgY2VudGVyOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuXG4gICAgZGVzdHJveU9uQ2xvc2U6IEJvb2xlYW5cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjbG9zZWQ6IGZhbHNlLFxuICAgICAga2V5OiAwXG4gICAgfTtcbiAgfSxcblxuXG4gIHdhdGNoOiB7XG4gICAgdmlzaWJsZTogZnVuY3Rpb24gdmlzaWJsZSh2YWwpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy4kZW1pdCgnb3BlbicpO1xuICAgICAgICB0aGlzLiRlbC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnVwZGF0ZVBvcHBlcik7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpcy4kcmVmcy5kaWFsb2cuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvQm9keSkge1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy4kZWwpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnVwZGF0ZVBvcHBlcik7XG4gICAgICAgIGlmICghdGhpcy5jbG9zZWQpIHRoaXMuJGVtaXQoJ2Nsb3NlJyk7XG4gICAgICAgIGlmICh0aGlzLmRlc3Ryb3lPbkNsb3NlKSB7XG4gICAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMua2V5Kys7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZTogZnVuY3Rpb24gc3R5bGUoKSB7XG4gICAgICB2YXIgc3R5bGUgPSB7fTtcbiAgICAgIGlmICghdGhpcy5mdWxsc2NyZWVuKSB7XG4gICAgICAgIHN0eWxlLm1hcmdpblRvcCA9IHRoaXMudG9wO1xuICAgICAgICBpZiAodGhpcy53aWR0aCkge1xuICAgICAgICAgIHN0eWxlLndpZHRoID0gdGhpcy53aWR0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZ2V0TWlncmF0aW5nQ29uZmlnOiBmdW5jdGlvbiBnZXRNaWdyYXRpbmdDb25maWcoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICdzaXplJzogJ3NpemUgaXMgcmVtb3ZlZC4nXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSxcbiAgICBoYW5kbGVXcmFwcGVyQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZVdyYXBwZXJDbGljaygpIHtcbiAgICAgIGlmICghdGhpcy5jbG9zZU9uQ2xpY2tNb2RhbCkgcmV0dXJuO1xuICAgICAgdGhpcy5oYW5kbGVDbG9zZSgpO1xuICAgIH0sXG4gICAgaGFuZGxlQ2xvc2U6IGZ1bmN0aW9uIGhhbmRsZUNsb3NlKCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmJlZm9yZUNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuYmVmb3JlQ2xvc2UodGhpcy5oaWRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGlkZTogZnVuY3Rpb24gaGlkZShjYW5jZWwpIHtcbiAgICAgIGlmIChjYW5jZWwgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTp2aXNpYmxlJywgZmFsc2UpO1xuICAgICAgICB0aGlzLiRlbWl0KCdjbG9zZScpO1xuICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICB1cGRhdGVQb3BwZXI6IGZ1bmN0aW9uIHVwZGF0ZVBvcHBlcigpIHtcbiAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbFNlbGVjdERyb3Bkb3duJywgJ3VwZGF0ZVBvcHBlcicpO1xuICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsRHJvcGRvd25NZW51JywgJ3VwZGF0ZVBvcHBlcicpO1xuICAgIH0sXG4gICAgYWZ0ZXJFbnRlcjogZnVuY3Rpb24gYWZ0ZXJFbnRlcigpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ29wZW5lZCcpO1xuICAgIH0sXG4gICAgYWZ0ZXJMZWF2ZTogZnVuY3Rpb24gYWZ0ZXJMZWF2ZSgpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlZCcpO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgIHRoaXMucmVuZGVyZWQgPSB0cnVlO1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICBpZiAodGhpcy5hcHBlbmRUb0JvZHkpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLiRlbCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCgpIHtcbiAgICAvLyBpZiBhcHBlbmRUb0JvZHkgaXMgdHJ1ZSwgcmVtb3ZlIERPTSBub2RlIGFmdGVyIGRlc3Ryb3lcbiAgICBpZiAodGhpcy5hcHBlbmRUb0JvZHkgJiYgdGhpcy4kZWwgJiYgdGhpcy4kZWwucGFyZW50Tm9kZSkge1xuICAgICAgdGhpcy4kZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLiRlbCk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGlhbG9nL3NyYy9jb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19jb21wb25lbnR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoY29tcG9uZW50dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RpYWxvZy9zcmMvY29tcG9uZW50LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNvbXBvbmVudF9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19jb21wb25lbnR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGNvbXBvbmVudHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYwMTQwZTYyX3JlbmRlcixcbiAgY29tcG9uZW50dnVlX3R5cGVfdGVtcGxhdGVfaWRfNjAxNDBlNjJfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBjb21wb25lbnRfYXBpOyB9XG5jb21wb25lbnRfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9kaWFsb2cvc3JjL2NvbXBvbmVudC52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2NvbXBvbmVudCA9IChjb21wb25lbnRfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kaWFsb2cvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3JjX2NvbXBvbmVudC5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHNyY19jb21wb25lbnQubmFtZSwgc3JjX2NvbXBvbmVudCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkaWFsb2cgPSAoc3JjX2NvbXBvbmVudCk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2F1dG9jb21wbGV0ZS9zcmMvYXV0b2NvbXBsZXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNTJmMmVlNiZcbnZhciBhdXRvY29tcGxldGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xNTJmMmVlNl9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImNsaWNrb3V0c2lkZVwiLFxuICAgICAgICAgIHJhd05hbWU6IFwidi1jbGlja291dHNpZGVcIixcbiAgICAgICAgICB2YWx1ZTogX3ZtLmNsb3NlLFxuICAgICAgICAgIGV4cHJlc3Npb246IFwiY2xvc2VcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtYXV0b2NvbXBsZXRlXCIsXG4gICAgICBhdHRyczoge1xuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJsaXN0Ym94XCIsXG4gICAgICAgIHJvbGU6IFwiY29tYm9ib3hcIixcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IF92bS5zdWdnZXN0aW9uVmlzaWJsZSxcbiAgICAgICAgXCJhcmlhLW93bnNcIjogX3ZtLmlkXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJlbC1pbnB1dFwiLFxuICAgICAgICBfdm0uX2IoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVmOiBcImlucHV0XCIsXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBpbnB1dDogX3ZtLmhhbmRsZUlucHV0LFxuICAgICAgICAgICAgICBjaGFuZ2U6IF92bS5oYW5kbGVDaGFuZ2UsXG4gICAgICAgICAgICAgIGZvY3VzOiBfdm0uaGFuZGxlRm9jdXMsXG4gICAgICAgICAgICAgIGJsdXI6IF92bS5oYW5kbGVCbHVyLFxuICAgICAgICAgICAgICBjbGVhcjogX3ZtLmhhbmRsZUNsZWFyXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmF0aXZlT246IHtcbiAgICAgICAgICAgICAga2V5ZG93bjogW1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwidXBcIiwgMzgsICRldmVudC5rZXksIFtcbiAgICAgICAgICAgICAgICAgICAgICBcIlVwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJBcnJvd1VwXCJcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgIF92bS5oaWdobGlnaHQoX3ZtLmhpZ2hsaWdodGVkSW5kZXggLSAxKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJkb3duXCIsIDQwLCAkZXZlbnQua2V5LCBbXG4gICAgICAgICAgICAgICAgICAgICAgXCJEb3duXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJBcnJvd0Rvd25cIlxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgX3ZtLmhpZ2hsaWdodChfdm0uaGlnaGxpZ2h0ZWRJbmRleCArIDEpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzLCAkZXZlbnQua2V5LCBcIkVudGVyXCIpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlS2V5RW50ZXIoJGV2ZW50KVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJ0YWJcIiwgOSwgJGV2ZW50LmtleSwgXCJUYWJcIilcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5jbG9zZSgkZXZlbnQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImVsLWlucHV0XCIsXG4gICAgICAgICAgW192bS4kcHJvcHMsIF92bS4kYXR0cnNdLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICksXG4gICAgICAgIFtcbiAgICAgICAgICBfdm0uJHNsb3RzLnByZXBlbmRcbiAgICAgICAgICAgID8gX2MoXCJ0ZW1wbGF0ZVwiLCB7IHNsb3Q6IFwicHJlcGVuZFwiIH0sIFtfdm0uX3QoXCJwcmVwZW5kXCIpXSwgMilcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLiRzbG90cy5hcHBlbmRcbiAgICAgICAgICAgID8gX2MoXCJ0ZW1wbGF0ZVwiLCB7IHNsb3Q6IFwiYXBwZW5kXCIgfSwgW192bS5fdChcImFwcGVuZFwiKV0sIDIpXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS4kc2xvdHMucHJlZml4XG4gICAgICAgICAgICA/IF9jKFwidGVtcGxhdGVcIiwgeyBzbG90OiBcInByZWZpeFwiIH0sIFtfdm0uX3QoXCJwcmVmaXhcIildLCAyKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uJHNsb3RzLnN1ZmZpeFxuICAgICAgICAgICAgPyBfYyhcInRlbXBsYXRlXCIsIHsgc2xvdDogXCJzdWZmaXhcIiB9LCBbX3ZtLl90KFwic3VmZml4XCIpXSwgMilcbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKSxcbiAgICAgIF9jKFxuICAgICAgICBcImVsLWF1dG9jb21wbGV0ZS1zdWdnZXN0aW9uc1wiLFxuICAgICAgICB7XG4gICAgICAgICAgcmVmOiBcInN1Z2dlc3Rpb25zXCIsXG4gICAgICAgICAgY2xhc3M6IFtfdm0ucG9wcGVyQ2xhc3MgPyBfdm0ucG9wcGVyQ2xhc3MgOiBcIlwiXSxcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgXCJ2aXNpYmxlLWFycm93XCI6IFwiXCIsXG4gICAgICAgICAgICBcInBvcHBlci1vcHRpb25zXCI6IF92bS5wb3BwZXJPcHRpb25zLFxuICAgICAgICAgICAgXCJhcHBlbmQtdG8tYm9keVwiOiBfdm0ucG9wcGVyQXBwZW5kVG9Cb2R5LFxuICAgICAgICAgICAgcGxhY2VtZW50OiBfdm0ucGxhY2VtZW50LFxuICAgICAgICAgICAgaWQ6IF92bS5pZFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgX3ZtLl9sKF92bS5zdWdnZXN0aW9ucywgZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICBcImxpXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogaW5kZXgsXG4gICAgICAgICAgICAgIGNsYXNzOiB7IGhpZ2hsaWdodGVkOiBfdm0uaGlnaGxpZ2h0ZWRJbmRleCA9PT0gaW5kZXggfSxcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBpZDogX3ZtLmlkICsgXCItaXRlbS1cIiArIGluZGV4LFxuICAgICAgICAgICAgICAgIHJvbGU6IFwib3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IF92bS5oaWdobGlnaHRlZEluZGV4ID09PSBpbmRleFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3QoaXRlbSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5fdChcbiAgICAgICAgICAgICAgICBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgIFwiICsgX3ZtLl9zKGl0ZW1bX3ZtLnZhbHVlS2V5XSkgKyBcIlxcbiAgICAgIFwiKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgeyBpdGVtOiBpdGVtIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApXG4gICAgICAgIH0pLFxuICAgICAgICAwXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBhdXRvY29tcGxldGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xNTJmMmVlNl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuYXV0b2NvbXBsZXRldnVlX3R5cGVfdGVtcGxhdGVfaWRfMTUyZjJlZTZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9hdXRvY29tcGxldGUvc3JjL2F1dG9jb21wbGV0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTUyZjJlZTYmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJ0aHJvdHRsZS1kZWJvdW5jZS9kZWJvdW5jZVwiXG52YXIgZGVib3VuY2VfID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG52YXIgZGVib3VuY2VfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZGVib3VuY2VfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL2NsaWNrb3V0c2lkZVwiXG52YXIgY2xpY2tvdXRzaWRlXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xudmFyIGNsaWNrb3V0c2lkZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjbGlja291dHNpZGVfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9hdXRvY29tcGxldGUvc3JjL2F1dG9jb21wbGV0ZS1zdWdnZXN0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2QxMGRjZjAmXG52YXIgYXV0b2NvbXBsZXRlX3N1Z2dlc3Rpb25zdnVlX3R5cGVfdGVtcGxhdGVfaWRfY2QxMGRjZjBfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwidHJhbnNpdGlvblwiLFxuICAgIHsgYXR0cnM6IHsgbmFtZTogXCJlbC16b29tLWluLXRvcFwiIH0sIG9uOiB7IFwiYWZ0ZXItbGVhdmVcIjogX3ZtLmRvRGVzdHJveSB9IH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dQb3BwZXIsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd1BvcHBlclwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbiBlbC1wb3BwZXJcIixcbiAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgXCJpcy1sb2FkaW5nXCI6ICFfdm0ucGFyZW50LmhpZGVMb2FkaW5nICYmIF92bS5wYXJlbnQubG9hZGluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3R5bGU6IHsgd2lkdGg6IF92bS5kcm9wZG93bldpZHRoIH0sXG4gICAgICAgICAgYXR0cnM6IHsgcm9sZTogXCJyZWdpb25cIiB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZWwtc2Nyb2xsYmFyXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgdGFnOiBcInVsXCIsXG4gICAgICAgICAgICAgICAgXCJ3cmFwLWNsYXNzXCI6IFwiZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb25fX3dyYXBcIixcbiAgICAgICAgICAgICAgICBcInZpZXctY2xhc3NcIjogXCJlbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbl9fbGlzdFwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICFfdm0ucGFyZW50LmhpZGVMb2FkaW5nICYmIF92bS5wYXJlbnQubG9hZGluZ1xuICAgICAgICAgICAgICAgID8gX2MoXCJsaVwiLCBbX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbi1sb2FkaW5nXCIgfSldKVxuICAgICAgICAgICAgICAgIDogX3ZtLl90KFwiZGVmYXVsdFwiKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgIClcbiAgICBdXG4gIClcbn1cbnZhciBhdXRvY29tcGxldGVfc3VnZ2VzdGlvbnN2dWVfdHlwZV90ZW1wbGF0ZV9pZF9jZDEwZGNmMF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuYXV0b2NvbXBsZXRlX3N1Z2dlc3Rpb25zdnVlX3R5cGVfdGVtcGxhdGVfaWRfY2QxMGRjZjBfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9hdXRvY29tcGxldGUvc3JjL2F1dG9jb21wbGV0ZS1zdWdnZXN0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2QxMGRjZjAmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi91dGlscy92dWUtcG9wcGVyXCJcbnZhciB2dWVfcG9wcGVyXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG52YXIgdnVlX3BvcHBlcl9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubih2dWVfcG9wcGVyXyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9zY3JvbGxiYXJcIlxudmFyIHNjcm9sbGJhcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcbnZhciBzY3JvbGxiYXJfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oc2Nyb2xsYmFyXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2F1dG9jb21wbGV0ZS9zcmMvYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYXV0b2NvbXBsZXRlX3N1Z2dlc3Rpb25zdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgY29tcG9uZW50czogeyBFbFNjcm9sbGJhcjogc2Nyb2xsYmFyX2RlZmF1bHQuYSB9LFxuICBtaXhpbnM6IFt2dWVfcG9wcGVyX2RlZmF1bHQuYSwgZW1pdHRlcl9kZWZhdWx0LmFdLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25zJyxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXJlbnQ6IHRoaXMuJHBhcmVudCxcbiAgICAgIGRyb3Bkb3duV2lkdGg6ICcnXG4gICAgfTtcbiAgfSxcblxuXG4gIHByb3BzOiB7XG4gICAgb3B0aW9uczoge1xuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZ3B1QWNjZWxlcmF0aW9uOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgaWQ6IFN0cmluZ1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBzZWxlY3Q6IGZ1bmN0aW9uIHNlbGVjdChpdGVtKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoKCdFbEF1dG9jb21wbGV0ZScsICdpdGVtLWNsaWNrJywgaXRlbSk7XG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7XG4gICAgICBfdGhpcy5wb3BwZXJKUyAmJiBfdGhpcy51cGRhdGVQb3BwZXIoKTtcbiAgICB9KTtcbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLiRwYXJlbnQucG9wcGVyRWxtID0gdGhpcy5wb3BwZXJFbG0gPSB0aGlzLiRlbDtcbiAgICB0aGlzLnJlZmVyZW5jZUVsbSA9IHRoaXMuJHBhcmVudC4kcmVmcy5pbnB1dC4kcmVmcy5pbnB1dCB8fCB0aGlzLiRwYXJlbnQuJHJlZnMuaW5wdXQuJHJlZnMudGV4dGFyZWE7XG4gICAgdGhpcy5yZWZlcmVuY2VMaXN0ID0gdGhpcy4kZWwucXVlcnlTZWxlY3RvcignLmVsLWF1dG9jb21wbGV0ZS1zdWdnZXN0aW9uX19saXN0Jyk7XG4gICAgdGhpcy5yZWZlcmVuY2VMaXN0LnNldEF0dHJpYnV0ZSgncm9sZScsICdsaXN0Ym94Jyk7XG4gICAgdGhpcy5yZWZlcmVuY2VMaXN0LnNldEF0dHJpYnV0ZSgnaWQnLCB0aGlzLmlkKTtcbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHRoaXMuJG9uKCd2aXNpYmxlJywgZnVuY3Rpb24gKHZhbCwgaW5wdXRXaWR0aCkge1xuICAgICAgX3RoaXMyLmRyb3Bkb3duV2lkdGggPSBpbnB1dFdpZHRoICsgJ3B4JztcbiAgICAgIF90aGlzMi5zaG93UG9wcGVyID0gdmFsO1xuICAgIH0pO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYXV0b2NvbXBsZXRlL3NyYy9hdXRvY29tcGxldGUtc3VnZ2VzdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19hdXRvY29tcGxldGVfc3VnZ2VzdGlvbnN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoYXV0b2NvbXBsZXRlX3N1Z2dlc3Rpb25zdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2F1dG9jb21wbGV0ZS9zcmMvYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb25zLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGF1dG9jb21wbGV0ZV9zdWdnZXN0aW9uc19jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19hdXRvY29tcGxldGVfc3VnZ2VzdGlvbnN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGF1dG9jb21wbGV0ZV9zdWdnZXN0aW9uc3Z1ZV90eXBlX3RlbXBsYXRlX2lkX2NkMTBkY2YwX3JlbmRlcixcbiAgYXV0b2NvbXBsZXRlX3N1Z2dlc3Rpb25zdnVlX3R5cGVfdGVtcGxhdGVfaWRfY2QxMGRjZjBfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhdXRvY29tcGxldGVfc3VnZ2VzdGlvbnNfYXBpOyB9XG5hdXRvY29tcGxldGVfc3VnZ2VzdGlvbnNfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9hdXRvY29tcGxldGUvc3JjL2F1dG9jb21wbGV0ZS1zdWdnZXN0aW9ucy52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYXV0b2NvbXBsZXRlX3N1Z2dlc3Rpb25zID0gKGF1dG9jb21wbGV0ZV9zdWdnZXN0aW9uc19jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2ZvY3VzXCJcbnZhciBmb2N1c18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcbnZhciBmb2N1c19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihmb2N1c18pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9hdXRvY29tcGxldGUvc3JjL2F1dG9jb21wbGV0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYXV0b2NvbXBsZXRldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsQXV0b2NvbXBsZXRlJyxcblxuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYSwgZm9jdXNfZGVmYXVsdCgpKCdpbnB1dCcpLCBtaWdyYXRpbmdfZGVmYXVsdC5hXSxcblxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbEF1dG9jb21wbGV0ZScsXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsSW5wdXQ6IGlucHV0X2RlZmF1bHQuYSxcbiAgICBFbEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25zOiBhdXRvY29tcGxldGVfc3VnZ2VzdGlvbnNcbiAgfSxcblxuICBkaXJlY3RpdmVzOiB7IENsaWNrb3V0c2lkZTogY2xpY2tvdXRzaWRlX2RlZmF1bHQuYSB9LFxuXG4gIHByb3BzOiB7XG4gICAgdmFsdWVLZXk6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd2YWx1ZSdcbiAgICB9LFxuICAgIHBvcHBlckNsYXNzOiBTdHJpbmcsXG4gICAgcG9wcGVyT3B0aW9uczogT2JqZWN0LFxuICAgIHBsYWNlaG9sZGVyOiBTdHJpbmcsXG4gICAgY2xlYXJhYmxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIG5hbWU6IFN0cmluZyxcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgdmFsdWU6IFN0cmluZyxcbiAgICBtYXhsZW5ndGg6IE51bWJlcixcbiAgICBtaW5sZW5ndGg6IE51bWJlcixcbiAgICBhdXRvZm9jdXM6IEJvb2xlYW4sXG4gICAgZmV0Y2hTdWdnZXN0aW9uczogRnVuY3Rpb24sXG4gICAgdHJpZ2dlck9uRm9jdXM6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBjdXN0b21JdGVtOiBTdHJpbmcsXG4gICAgc2VsZWN0V2hlblVubWF0Y2hlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwcmVmaXhJY29uOiBTdHJpbmcsXG4gICAgc3VmZml4SWNvbjogU3RyaW5nLFxuICAgIGxhYmVsOiBTdHJpbmcsXG4gICAgZGVib3VuY2U6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDMwMFxuICAgIH0sXG4gICAgcGxhY2VtZW50OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnYm90dG9tLXN0YXJ0J1xuICAgIH0sXG4gICAgaGlkZUxvYWRpbmc6IEJvb2xlYW4sXG4gICAgcG9wcGVyQXBwZW5kVG9Cb2R5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgaGlnaGxpZ2h0Rmlyc3RJdGVtOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2YXRlZDogZmFsc2UsXG4gICAgICBzdWdnZXN0aW9uczogW10sXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IC0xLFxuICAgICAgc3VnZ2VzdGlvbkRpc2FibGVkOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBzdWdnZXN0aW9uVmlzaWJsZTogZnVuY3Rpb24gc3VnZ2VzdGlvblZpc2libGUoKSB7XG4gICAgICB2YXIgc3VnZ2VzdGlvbnMgPSB0aGlzLnN1Z2dlc3Rpb25zO1xuICAgICAgdmFyIGlzVmFsaWREYXRhID0gQXJyYXkuaXNBcnJheShzdWdnZXN0aW9ucykgJiYgc3VnZ2VzdGlvbnMubGVuZ3RoID4gMDtcbiAgICAgIHJldHVybiAoaXNWYWxpZERhdGEgfHwgdGhpcy5sb2FkaW5nKSAmJiB0aGlzLmFjdGl2YXRlZDtcbiAgICB9LFxuICAgIGlkOiBmdW5jdGlvbiBpZCgpIHtcbiAgICAgIHJldHVybiAnZWwtYXV0b2NvbXBsZXRlLScgKyBPYmplY3QodXRpbF9bXCJnZW5lcmF0ZUlkXCJdKSgpO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBzdWdnZXN0aW9uVmlzaWJsZTogZnVuY3Rpb24gc3VnZ2VzdGlvblZpc2libGUodmFsKSB7XG4gICAgICB2YXIgJGlucHV0ID0gdGhpcy5nZXRJbnB1dCgpO1xuICAgICAgaWYgKCRpbnB1dCkge1xuICAgICAgICB0aGlzLmJyb2FkY2FzdCgnRWxBdXRvY29tcGxldGVTdWdnZXN0aW9ucycsICd2aXNpYmxlJywgW3ZhbCwgJGlucHV0Lm9mZnNldFdpZHRoXSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0TWlncmF0aW5nQ29uZmlnOiBmdW5jdGlvbiBnZXRNaWdyYXRpbmdDb25maWcoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICdjdXN0b20taXRlbSc6ICdjdXN0b20taXRlbSBpcyByZW1vdmVkLCB1c2Ugc2NvcGVkIHNsb3QgaW5zdGVhZC4nLFxuICAgICAgICAgICdwcm9wcyc6ICdwcm9wcyBpcyByZW1vdmVkLCB1c2UgdmFsdWUta2V5IGluc3RlYWQuJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0RGF0YTogZnVuY3Rpb24gZ2V0RGF0YShxdWVyeVN0cmluZykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmZldGNoU3VnZ2VzdGlvbnMocXVlcnlTdHJpbmcsIGZ1bmN0aW9uIChzdWdnZXN0aW9ucykge1xuICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChfdGhpcy5zdWdnZXN0aW9uRGlzYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgX3RoaXMuc3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9ucztcbiAgICAgICAgICBfdGhpcy5oaWdobGlnaHRlZEluZGV4ID0gX3RoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtID8gMCA6IC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tFbGVtZW50IEVycm9yXVtBdXRvY29tcGxldGVdYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBoYW5kbGVJbnB1dDogZnVuY3Rpb24gaGFuZGxlSW5wdXQodmFsdWUpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsdWUpO1xuICAgICAgdGhpcy5zdWdnZXN0aW9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIGlmICghdGhpcy50cmlnZ2VyT25Gb2N1cyAmJiAhdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdWdnZXN0aW9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGVib3VuY2VkR2V0RGF0YSh2YWx1ZSk7XG4gICAgfSxcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZSh2YWx1ZSkge1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsdWUpO1xuICAgIH0sXG4gICAgaGFuZGxlRm9jdXM6IGZ1bmN0aW9uIGhhbmRsZUZvY3VzKGV2ZW50KSB7XG4gICAgICB0aGlzLmFjdGl2YXRlZCA9IHRydWU7XG4gICAgICB0aGlzLiRlbWl0KCdmb2N1cycsIGV2ZW50KTtcbiAgICAgIGlmICh0aGlzLnRyaWdnZXJPbkZvY3VzKSB7XG4gICAgICAgIHRoaXMuZGVib3VuY2VkR2V0RGF0YSh0aGlzLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUJsdXI6IGZ1bmN0aW9uIGhhbmRsZUJsdXIoZXZlbnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2JsdXInLCBldmVudCk7XG4gICAgfSxcbiAgICBoYW5kbGVDbGVhcjogZnVuY3Rpb24gaGFuZGxlQ2xlYXIoKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy4kZW1pdCgnY2xlYXInKTtcbiAgICB9LFxuICAgIGNsb3NlOiBmdW5jdGlvbiBjbG9zZShlKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlZCA9IGZhbHNlO1xuICAgIH0sXG4gICAgaGFuZGxlS2V5RW50ZXI6IGZ1bmN0aW9uIGhhbmRsZUtleUVudGVyKGUpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5zdWdnZXN0aW9uVmlzaWJsZSAmJiB0aGlzLmhpZ2hsaWdodGVkSW5kZXggPj0gMCAmJiB0aGlzLmhpZ2hsaWdodGVkSW5kZXggPCB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc3VnZ2VzdGlvbnNbdGhpcy5oaWdobGlnaHRlZEluZGV4XSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0V2hlblVubWF0Y2hlZCkge1xuICAgICAgICB0aGlzLiRlbWl0KCdzZWxlY3QnLCB7IHZhbHVlOiB0aGlzLnZhbHVlIH0pO1xuICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykge1xuICAgICAgICAgIF90aGlzMi5zdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICAgIF90aGlzMi5oaWdobGlnaHRlZEluZGV4ID0gLTE7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0OiBmdW5jdGlvbiBzZWxlY3QoaXRlbSkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgaXRlbVt0aGlzLnZhbHVlS2V5XSk7XG4gICAgICB0aGlzLiRlbWl0KCdzZWxlY3QnLCBpdGVtKTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7XG4gICAgICAgIF90aGlzMy5zdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICBfdGhpczMuaGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBoaWdobGlnaHQ6IGZ1bmN0aW9uIGhpZ2hsaWdodChpbmRleCkge1xuICAgICAgaWYgKCF0aGlzLnN1Z2dlc3Rpb25WaXNpYmxlIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXggPj0gdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgaW5kZXggPSB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICB2YXIgc3VnZ2VzdGlvbiA9IHRoaXMuJHJlZnMuc3VnZ2VzdGlvbnMuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5lbC1hdXRvY29tcGxldGUtc3VnZ2VzdGlvbl9fd3JhcCcpO1xuICAgICAgdmFyIHN1Z2dlc3Rpb25MaXN0ID0gc3VnZ2VzdGlvbi5xdWVyeVNlbGVjdG9yQWxsKCcuZWwtYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb25fX2xpc3QgbGknKTtcblxuICAgICAgdmFyIGhpZ2hsaWdodEl0ZW0gPSBzdWdnZXN0aW9uTGlzdFtpbmRleF07XG4gICAgICB2YXIgc2Nyb2xsVG9wID0gc3VnZ2VzdGlvbi5zY3JvbGxUb3A7XG4gICAgICB2YXIgb2Zmc2V0VG9wID0gaGlnaGxpZ2h0SXRlbS5vZmZzZXRUb3A7XG5cbiAgICAgIGlmIChvZmZzZXRUb3AgKyBoaWdobGlnaHRJdGVtLnNjcm9sbEhlaWdodCA+IHNjcm9sbFRvcCArIHN1Z2dlc3Rpb24uY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgIHN1Z2dlc3Rpb24uc2Nyb2xsVG9wICs9IGhpZ2hsaWdodEl0ZW0uc2Nyb2xsSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG9mZnNldFRvcCA8IHNjcm9sbFRvcCkge1xuICAgICAgICBzdWdnZXN0aW9uLnNjcm9sbFRvcCAtPSBoaWdobGlnaHRJdGVtLnNjcm9sbEhlaWdodDtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgdmFyICRpbnB1dCA9IHRoaXMuZ2V0SW5wdXQoKTtcbiAgICAgICRpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHRoaXMuaWQgKyAnLWl0ZW0tJyArIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCk7XG4gICAgfSxcbiAgICBnZXRJbnB1dDogZnVuY3Rpb24gZ2V0SW5wdXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcmVmcy5pbnB1dC5nZXRJbnB1dCgpO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgIHRoaXMuZGVib3VuY2VkR2V0RGF0YSA9IGRlYm91bmNlX2RlZmF1bHQoKSh0aGlzLmRlYm91bmNlLCB0aGlzLmdldERhdGEpO1xuICAgIHRoaXMuJG9uKCdpdGVtLWNsaWNrJywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIF90aGlzNC5zZWxlY3QoaXRlbSk7XG4gICAgfSk7XG4gICAgdmFyICRpbnB1dCA9IHRoaXMuZ2V0SW5wdXQoKTtcbiAgICAkaW5wdXQuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3RleHRib3gnKTtcbiAgICAkaW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWF1dG9jb21wbGV0ZScsICdsaXN0Jyk7XG4gICAgJGlucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsICdpZCcpO1xuICAgICRpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHRoaXMuaWQgKyAnLWl0ZW0tJyArIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCk7XG4gIH0sXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgdGhpcy4kcmVmcy5zdWdnZXN0aW9ucy4kZGVzdHJveSgpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYXV0b2NvbXBsZXRlL3NyYy9hdXRvY29tcGxldGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19hdXRvY29tcGxldGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoYXV0b2NvbXBsZXRldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2F1dG9jb21wbGV0ZS9zcmMvYXV0b2NvbXBsZXRlLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGF1dG9jb21wbGV0ZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19hdXRvY29tcGxldGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGF1dG9jb21wbGV0ZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzE1MmYyZWU2X3JlbmRlcixcbiAgYXV0b2NvbXBsZXRldnVlX3R5cGVfdGVtcGxhdGVfaWRfMTUyZjJlZTZfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhdXRvY29tcGxldGVfYXBpOyB9XG5hdXRvY29tcGxldGVfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9hdXRvY29tcGxldGUvc3JjL2F1dG9jb21wbGV0ZS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYXV0b2NvbXBsZXRlID0gKGF1dG9jb21wbGV0ZV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2F1dG9jb21wbGV0ZS9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5hdXRvY29tcGxldGUuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChhdXRvY29tcGxldGUubmFtZSwgYXV0b2NvbXBsZXRlKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2F1dG9jb21wbGV0ZSA9IChhdXRvY29tcGxldGUpO1xuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL2J1dHRvblwiXG52YXIgYnV0dG9uXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xudmFyIGJ1dHRvbl9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihidXR0b25fKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL2J1dHRvbi1ncm91cFwiXG52YXIgYnV0dG9uX2dyb3VwXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpO1xudmFyIGJ1dHRvbl9ncm91cF9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihidXR0b25fZ3JvdXBfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZHJvcGRvd24vc3JjL2Ryb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG5cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkcm9wZG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbERyb3Bkb3duJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxEcm9wZG93bicsXG5cbiAgbWl4aW5zOiBbZW1pdHRlcl9kZWZhdWx0LmEsIG1pZ3JhdGluZ19kZWZhdWx0LmFdLFxuXG4gIGRpcmVjdGl2ZXM6IHsgQ2xpY2tvdXRzaWRlOiBjbGlja291dHNpZGVfZGVmYXVsdC5hIH0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsQnV0dG9uOiBidXR0b25fZGVmYXVsdC5hLFxuICAgIEVsQnV0dG9uR3JvdXA6IGJ1dHRvbl9ncm91cF9kZWZhdWx0LmFcbiAgfSxcblxuICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkcm9wZG93bjogdGhpc1xuICAgIH07XG4gIH0sXG5cblxuICBwcm9wczoge1xuICAgIHRyaWdnZXI6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdob3ZlcidcbiAgICB9LFxuICAgIHR5cGU6IFN0cmluZyxcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgc3BsaXRCdXR0b246IEJvb2xlYW4sXG4gICAgaGlkZU9uQ2xpY2s6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBwbGFjZW1lbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdib3R0b20tZW5kJ1xuICAgIH0sXG4gICAgdmlzaWJsZUFycm93OiB7XG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBzaG93VGltZW91dDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMjUwXG4gICAgfSxcbiAgICBoaWRlVGltZW91dDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMTUwXG4gICAgfSxcbiAgICB0YWJpbmRleDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0aW1lb3V0OiBudWxsLFxuICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICB0cmlnZ2VyRWxtOiBudWxsLFxuICAgICAgbWVudUl0ZW1zOiBudWxsLFxuICAgICAgbWVudUl0ZW1zQXJyYXk6IG51bGwsXG4gICAgICBkcm9wZG93bkVsbTogbnVsbCxcbiAgICAgIGZvY3VzaW5nOiBmYWxzZSxcbiAgICAgIGxpc3RJZDogJ2Ryb3Bkb3duLW1lbnUtJyArIE9iamVjdCh1dGlsX1tcImdlbmVyYXRlSWRcIl0pKClcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBkcm9wZG93blNpemU6IGZ1bmN0aW9uIGRyb3Bkb3duU2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7XG4gICAgfVxuICB9LFxuXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy4kb24oJ21lbnUtaXRlbS1jbGljaycsIHRoaXMuaGFuZGxlTWVudUl0ZW1DbGljayk7XG4gIH0sXG5cblxuICB3YXRjaDoge1xuICAgIHZpc2libGU6IGZ1bmN0aW9uIHZpc2libGUodmFsKSB7XG4gICAgICB0aGlzLmJyb2FkY2FzdCgnRWxEcm9wZG93bk1lbnUnLCAndmlzaWJsZScsIHZhbCk7XG4gICAgICB0aGlzLiRlbWl0KCd2aXNpYmxlLWNoYW5nZScsIHZhbCk7XG4gICAgfSxcbiAgICBmb2N1c2luZzogZnVuY3Rpb24gZm9jdXNpbmcodmFsKSB7XG4gICAgICB2YXIgc2VsZkRlZmluZSA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5lbC1kcm9wZG93bi1zZWxmZGVmaW5lJyk7XG4gICAgICBpZiAoc2VsZkRlZmluZSkge1xuICAgICAgICAvLyDoh6rlrprkuYlcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgIHNlbGZEZWZpbmUuY2xhc3NOYW1lICs9ICcgZm9jdXNpbmcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGZEZWZpbmUuY2xhc3NOYW1lID0gc2VsZkRlZmluZS5jbGFzc05hbWUucmVwbGFjZSgnZm9jdXNpbmcnLCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGdldE1pZ3JhdGluZ0NvbmZpZzogZnVuY3Rpb24gZ2V0TWlncmF0aW5nQ29uZmlnKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAnbWVudS1hbGlnbic6ICdtZW51LWFsaWduIGlzIHJlbmFtZWQgdG8gcGxhY2VtZW50LidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuICAgIHNob3c6IGZ1bmN0aW9uIHNob3coKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICB9LCB0aGlzLnRyaWdnZXIgPT09ICdjbGljaycgPyAwIDogdGhpcy5zaG93VGltZW91dCk7XG4gICAgfSxcbiAgICBoaWRlOiBmdW5jdGlvbiBoaWRlKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgICB0aGlzLnJlbW92ZVRhYmluZGV4KCk7XG4gICAgICBpZiAodGhpcy50YWJpbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMucmVzZXRUYWJpbmRleCh0aGlzLnRyaWdnZXJFbG0pO1xuICAgICAgfVxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIH0sIHRoaXMudHJpZ2dlciA9PT0gJ2NsaWNrJyA/IDAgOiB0aGlzLmhpZGVUaW1lb3V0KTtcbiAgICB9LFxuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVUcmlnZ2VyS2V5RG93bjogZnVuY3Rpb24gaGFuZGxlVHJpZ2dlcktleURvd24oZXYpIHtcbiAgICAgIHZhciBrZXlDb2RlID0gZXYua2V5Q29kZTtcbiAgICAgIGlmIChbMzgsIDQwXS5pbmRleE9mKGtleUNvZGUpID4gLTEpIHtcbiAgICAgICAgLy8gdXAvZG93blxuICAgICAgICB0aGlzLnJlbW92ZVRhYmluZGV4KCk7XG4gICAgICAgIHRoaXMucmVzZXRUYWJpbmRleCh0aGlzLm1lbnVJdGVtc1swXSk7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zWzBdLmZvY3VzKCk7XG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSAxMykge1xuICAgICAgICAvLyBzcGFjZSBlbnRlcumAieS4rVxuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrKCk7XG4gICAgICB9IGVsc2UgaWYgKFs5LCAyN10uaW5kZXhPZihrZXlDb2RlKSA+IC0xKSB7XG4gICAgICAgIC8vIHRhYiB8fCBlc2NcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVJdGVtS2V5RG93bjogZnVuY3Rpb24gaGFuZGxlSXRlbUtleURvd24oZXYpIHtcbiAgICAgIHZhciBrZXlDb2RlID0gZXYua2V5Q29kZTtcbiAgICAgIHZhciB0YXJnZXQgPSBldi50YXJnZXQ7XG4gICAgICB2YXIgY3VycmVudEluZGV4ID0gdGhpcy5tZW51SXRlbXNBcnJheS5pbmRleE9mKHRhcmdldCk7XG4gICAgICB2YXIgbWF4ID0gdGhpcy5tZW51SXRlbXNBcnJheS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG5leHRJbmRleCA9IHZvaWQgMDtcbiAgICAgIGlmIChbMzgsIDQwXS5pbmRleE9mKGtleUNvZGUpID4gLTEpIHtcbiAgICAgICAgLy8gdXAvZG93blxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMzgpIHtcbiAgICAgICAgICAvLyB1cFxuICAgICAgICAgIG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCAhPT0gMCA/IGN1cnJlbnRJbmRleCAtIDEgOiAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGRvd25cbiAgICAgICAgICBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggPCBtYXggPyBjdXJyZW50SW5kZXggKyAxIDogbWF4O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlVGFiaW5kZXgoKTtcbiAgICAgICAgdGhpcy5yZXNldFRhYmluZGV4KHRoaXMubWVudUl0ZW1zW25leHRJbmRleF0pO1xuICAgICAgICB0aGlzLm1lbnVJdGVtc1tuZXh0SW5kZXhdLmZvY3VzKCk7XG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSAxMykge1xuICAgICAgICAvLyBlbnRlcumAieS4rVxuICAgICAgICB0aGlzLnRyaWdnZXJFbG1Gb2N1cygpO1xuICAgICAgICB0YXJnZXQuY2xpY2soKTtcbiAgICAgICAgaWYgKHRoaXMuaGlkZU9uQ2xpY2spIHtcbiAgICAgICAgICAvLyBjbGlja+WFs+mXrVxuICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFs5LCAyN10uaW5kZXhPZihrZXlDb2RlKSA+IC0xKSB7XG4gICAgICAgIC8vIHRhYiAvLyBlc2NcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIHRoaXMudHJpZ2dlckVsbUZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICByZXNldFRhYmluZGV4OiBmdW5jdGlvbiByZXNldFRhYmluZGV4KGVsZSkge1xuICAgICAgLy8g5LiL5qyhdGFi5pe257uE5Lu26IGa54Sm5YWD57SgXG4gICAgICB0aGlzLnJlbW92ZVRhYmluZGV4KCk7XG4gICAgICBlbGUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7IC8vIOS4i+asoeacn+acm+eahOiBmueEpuWFg+e0oFxuICAgIH0sXG4gICAgcmVtb3ZlVGFiaW5kZXg6IGZ1bmN0aW9uIHJlbW92ZVRhYmluZGV4KCkge1xuICAgICAgdGhpcy50cmlnZ2VyRWxtLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIHRoaXMubWVudUl0ZW1zQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgaW5pdEFyaWE6IGZ1bmN0aW9uIGluaXRBcmlhKCkge1xuICAgICAgdGhpcy5kcm9wZG93bkVsbS5zZXRBdHRyaWJ1dGUoJ2lkJywgdGhpcy5saXN0SWQpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxtLnNldEF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcsICdsaXN0Jyk7XG4gICAgICB0aGlzLnRyaWdnZXJFbG0uc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgdGhpcy5saXN0SWQpO1xuXG4gICAgICBpZiAoIXRoaXMuc3BsaXRCdXR0b24pIHtcbiAgICAgICAgLy8g6Ieq5a6a5LmJXG4gICAgICAgIHRoaXMudHJpZ2dlckVsbS5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnYnV0dG9uJyk7XG4gICAgICAgIHRoaXMudHJpZ2dlckVsbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgdGhpcy50YWJpbmRleCk7XG4gICAgICAgIHRoaXMudHJpZ2dlckVsbS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgKHRoaXMudHJpZ2dlckVsbS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpICsgJyBlbC1kcm9wZG93bi1zZWxmZGVmaW5lJyk7IC8vIOaOp+WItlxuICAgICAgfVxuICAgIH0sXG4gICAgaW5pdEV2ZW50OiBmdW5jdGlvbiBpbml0RXZlbnQoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIHRyaWdnZXIgPSB0aGlzLnRyaWdnZXIsXG4gICAgICAgICAgc2hvdyA9IHRoaXMuc2hvdyxcbiAgICAgICAgICBoaWRlID0gdGhpcy5oaWRlLFxuICAgICAgICAgIGhhbmRsZUNsaWNrID0gdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgICBzcGxpdEJ1dHRvbiA9IHRoaXMuc3BsaXRCdXR0b24sXG4gICAgICAgICAgaGFuZGxlVHJpZ2dlcktleURvd24gPSB0aGlzLmhhbmRsZVRyaWdnZXJLZXlEb3duLFxuICAgICAgICAgIGhhbmRsZUl0ZW1LZXlEb3duID0gdGhpcy5oYW5kbGVJdGVtS2V5RG93bjtcblxuICAgICAgdGhpcy50cmlnZ2VyRWxtID0gc3BsaXRCdXR0b24gPyB0aGlzLiRyZWZzLnRyaWdnZXIuJGVsIDogdGhpcy4kc2xvdHMuZGVmYXVsdFswXS5lbG07XG5cbiAgICAgIHZhciBkcm9wZG93bkVsbSA9IHRoaXMuZHJvcGRvd25FbG07XG5cbiAgICAgIHRoaXMudHJpZ2dlckVsbS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlVHJpZ2dlcktleURvd24pOyAvLyB0cmlnZ2VyRWxtIGtleWRvd25cbiAgICAgIGRyb3Bkb3duRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVJdGVtS2V5RG93biwgdHJ1ZSk7IC8vIGl0ZW0ga2V5ZG93blxuICAgICAgLy8g5o6n5Yi26Ieq5a6a5LmJ5YWD57Sg55qE5qC35byPXG4gICAgICBpZiAoIXNwbGl0QnV0dG9uKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlckVsbS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczMuZm9jdXNpbmcgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50cmlnZ2VyRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLmZvY3VzaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRyaWdnZXJFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLmZvY3VzaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRyaWdnZXIgPT09ICdob3ZlcicpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBzaG93KTtcbiAgICAgICAgdGhpcy50cmlnZ2VyRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoaWRlKTtcbiAgICAgICAgZHJvcGRvd25FbG0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHNob3cpO1xuICAgICAgICBkcm9wZG93bkVsbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGlkZSk7XG4gICAgICB9IGVsc2UgaWYgKHRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2spO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlTWVudUl0ZW1DbGljazogZnVuY3Rpb24gaGFuZGxlTWVudUl0ZW1DbGljayhjb21tYW5kLCBpbnN0YW5jZSkge1xuICAgICAgaWYgKHRoaXMuaGlkZU9uQ2xpY2spIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLiRlbWl0KCdjb21tYW5kJywgY29tbWFuZCwgaW5zdGFuY2UpO1xuICAgIH0sXG4gICAgdHJpZ2dlckVsbUZvY3VzOiBmdW5jdGlvbiB0cmlnZ2VyRWxtRm9jdXMoKSB7XG4gICAgICB0aGlzLnRyaWdnZXJFbG0uZm9jdXMgJiYgdGhpcy50cmlnZ2VyRWxtLmZvY3VzKCk7XG4gICAgfSxcbiAgICBpbml0RG9tT3BlcmF0aW9uOiBmdW5jdGlvbiBpbml0RG9tT3BlcmF0aW9uKCkge1xuICAgICAgdGhpcy5kcm9wZG93bkVsbSA9IHRoaXMucG9wcGVyRWxtO1xuICAgICAgdGhpcy5tZW51SXRlbXMgPSB0aGlzLmRyb3Bkb3duRWxtLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbdGFiaW5kZXg9Jy0xJ11cIik7XG4gICAgICB0aGlzLm1lbnVJdGVtc0FycmF5ID0gW10uc2xpY2UuY2FsbCh0aGlzLm1lbnVJdGVtcyk7XG5cbiAgICAgIHRoaXMuaW5pdEV2ZW50KCk7XG4gICAgICB0aGlzLmluaXRBcmlhKCk7XG4gICAgfVxuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgIHZhciBoaWRlID0gdGhpcy5oaWRlLFxuICAgICAgICBzcGxpdEJ1dHRvbiA9IHRoaXMuc3BsaXRCdXR0b24sXG4gICAgICAgIHR5cGUgPSB0aGlzLnR5cGUsXG4gICAgICAgIGRyb3Bkb3duU2l6ZSA9IHRoaXMuZHJvcGRvd25TaXplLFxuICAgICAgICBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG5cblxuICAgIHZhciBoYW5kbGVNYWluQnV0dG9uQ2xpY2sgPSBmdW5jdGlvbiBoYW5kbGVNYWluQnV0dG9uQ2xpY2soZXZlbnQpIHtcbiAgICAgIF90aGlzNC4kZW1pdCgnY2xpY2snLCBldmVudCk7XG4gICAgICBoaWRlKCk7XG4gICAgfTtcblxuICAgIHZhciB0cmlnZ2VyRWxtID0gbnVsbDtcbiAgICBpZiAoc3BsaXRCdXR0b24pIHtcbiAgICAgIHRyaWdnZXJFbG0gPSBoKCdlbC1idXR0b24tZ3JvdXAnLCBbaChcbiAgICAgICAgJ2VsLWJ1dHRvbicsXG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyczogeyB0eXBlOiB0eXBlLCBzaXplOiBkcm9wZG93blNpemUsIGRpc2FibGVkOiBkaXNhYmxlZCB9LFxuICAgICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAgICAnY2xpY2snOiBoYW5kbGVNYWluQnV0dG9uQ2xpY2tcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFt0aGlzLiRzbG90cy5kZWZhdWx0XVxuICAgICAgKSwgaChcbiAgICAgICAgJ2VsLWJ1dHRvbicsXG4gICAgICAgIHsgcmVmOiAndHJpZ2dlcicsIGF0dHJzOiB7IHR5cGU6IHR5cGUsIHNpemU6IGRyb3Bkb3duU2l6ZSwgZGlzYWJsZWQ6IGRpc2FibGVkIH0sXG4gICAgICAgICAgJ2NsYXNzJzogJ2VsLWRyb3Bkb3duX19jYXJldC1idXR0b24nIH0sXG4gICAgICAgIFtoKCdpJywgeyAnY2xhc3MnOiAnZWwtZHJvcGRvd25fX2ljb24gZWwtaWNvbi1hcnJvdy1kb3duJyB9KV1cbiAgICAgICldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlckVsbSA9IHRoaXMuJHNsb3RzLmRlZmF1bHQ7XG4gICAgICB2YXIgdm5vZGVEYXRhID0gdHJpZ2dlckVsbVswXS5kYXRhIHx8IHt9O1xuICAgICAgdmFyIF92bm9kZURhdGEkYXR0cnMgPSB2bm9kZURhdGEuYXR0cnMsXG4gICAgICAgICAgYXR0cnMgPSBfdm5vZGVEYXRhJGF0dHJzID09PSB1bmRlZmluZWQgPyB7fSA6IF92bm9kZURhdGEkYXR0cnM7XG5cbiAgICAgIGlmIChkaXNhYmxlZCAmJiAhYXR0cnMuZGlzYWJsZWQpIHtcbiAgICAgICAgYXR0cnMuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB2bm9kZURhdGEuYXR0cnMgPSBhdHRycztcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1lbnVFbG0gPSBkaXNhYmxlZCA/IG51bGwgOiB0aGlzLiRzbG90cy5kcm9wZG93bjtcblxuICAgIHJldHVybiBoKFxuICAgICAgJ2RpdicsXG4gICAgICB7ICdjbGFzcyc6ICdlbC1kcm9wZG93bicsIGRpcmVjdGl2ZXM6IFt7XG4gICAgICAgICAgbmFtZTogJ2NsaWNrb3V0c2lkZScsXG4gICAgICAgICAgdmFsdWU6IGhpZGVcbiAgICAgICAgfV0sXG4gICAgICAgIGF0dHJzOiB7ICdhcmlhLWRpc2FibGVkJzogZGlzYWJsZWQgfVxuICAgICAgfSxcbiAgICAgIFt0cmlnZ2VyRWxtLCBtZW51RWxtXVxuICAgICk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kcm9wZG93bi9zcmMvZHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19kcm9wZG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChkcm9wZG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kcm9wZG93bi9zcmMvZHJvcGRvd24udnVlXG52YXIgZHJvcGRvd25fcmVuZGVyLCBkcm9wZG93bl9zdGF0aWNSZW5kZXJGbnNcblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgZHJvcGRvd25fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfZHJvcGRvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGRyb3Bkb3duX3JlbmRlcixcbiAgZHJvcGRvd25fc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBkcm9wZG93bl9hcGk7IH1cbmRyb3Bkb3duX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZHJvcGRvd24vc3JjL2Ryb3Bkb3duLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkcm9wZG93biA9IChkcm9wZG93bl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Ryb3Bkb3duL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmRyb3Bkb3duLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoZHJvcGRvd24ubmFtZSwgZHJvcGRvd24pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfZHJvcGRvd24gPSAoZHJvcGRvd24pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kcm9wZG93bi9zcmMvZHJvcGRvd24tbWVudS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGRhNmI3MTQmXG52YXIgZHJvcGRvd25fbWVudXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzBkYTZiNzE0X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInRyYW5zaXRpb25cIixcbiAgICB7IGF0dHJzOiB7IG5hbWU6IFwiZWwtem9vbS1pbi10b3BcIiB9LCBvbjogeyBcImFmdGVyLWxlYXZlXCI6IF92bS5kb0Rlc3Ryb3kgfSB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcInVsXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dQb3BwZXIsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd1BvcHBlclwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1kcm9wZG93bi1tZW51IGVsLXBvcHBlclwiLFxuICAgICAgICAgIGNsYXNzOiBbX3ZtLnNpemUgJiYgXCJlbC1kcm9wZG93bi1tZW51LS1cIiArIF92bS5zaXplXVxuICAgICAgICB9LFxuICAgICAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICBdXG4gIClcbn1cbnZhciBkcm9wZG93bl9tZW51dnVlX3R5cGVfdGVtcGxhdGVfaWRfMGRhNmI3MTRfc3RhdGljUmVuZGVyRm5zID0gW11cbmRyb3Bkb3duX21lbnV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wZGE2YjcxNF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi1tZW51LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZGE2YjcxNCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZHJvcGRvd24vc3JjL2Ryb3Bkb3duLW1lbnUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGRyb3Bkb3duX21lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxEcm9wZG93bk1lbnUnLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbERyb3Bkb3duTWVudScsXG5cbiAgbWl4aW5zOiBbdnVlX3BvcHBlcl9kZWZhdWx0LmFdLFxuXG4gIHByb3BzOiB7XG4gICAgdmlzaWJsZUFycm93OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgYXJyb3dPZmZzZXQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2l6ZTogdGhpcy5kcm9wZG93bi5kcm9wZG93blNpemVcbiAgICB9O1xuICB9LFxuXG5cbiAgaW5qZWN0OiBbJ2Ryb3Bkb3duJ10sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy4kb24oJ3VwZGF0ZVBvcHBlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5zaG93UG9wcGVyKSBfdGhpcy51cGRhdGVQb3BwZXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLiRvbigndmlzaWJsZScsIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIF90aGlzLnNob3dQb3BwZXIgPSB2YWw7XG4gICAgfSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5kcm9wZG93bi5wb3BwZXJFbG0gPSB0aGlzLnBvcHBlckVsbSA9IHRoaXMuJGVsO1xuICAgIHRoaXMucmVmZXJlbmNlRWxtID0gdGhpcy5kcm9wZG93bi4kZWw7XG4gICAgLy8gY29tcGF0aWJsZSB3aXRoIDIuNiBuZXcgdi1zbG90IHN5bnRheFxuICAgIC8vIGlzc3VlIGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9pc3N1ZXMvMTQzNDVcbiAgICB0aGlzLmRyb3Bkb3duLmluaXREb21PcGVyYXRpb24oKTtcbiAgfSxcblxuXG4gIHdhdGNoOiB7XG4gICAgJ2Ryb3Bkb3duLnBsYWNlbWVudCc6IHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBsYWNlbWVudCA9IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kcm9wZG93bi9zcmMvZHJvcGRvd24tbWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2Ryb3Bkb3duX21lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoZHJvcGRvd25fbWVudXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kcm9wZG93bi9zcmMvZHJvcGRvd24tbWVudS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBkcm9wZG93bl9tZW51X2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX2Ryb3Bkb3duX21lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGRyb3Bkb3duX21lbnV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wZGE2YjcxNF9yZW5kZXIsXG4gIGRyb3Bkb3duX21lbnV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wZGE2YjcxNF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGRyb3Bkb3duX21lbnVfYXBpOyB9XG5kcm9wZG93bl9tZW51X2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZHJvcGRvd24vc3JjL2Ryb3Bkb3duLW1lbnUudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGRyb3Bkb3duX21lbnUgPSAoZHJvcGRvd25fbWVudV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Ryb3Bkb3duLW1lbnUvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZHJvcGRvd25fbWVudS5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGRyb3Bkb3duX21lbnUubmFtZSwgZHJvcGRvd25fbWVudSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19kcm9wZG93bl9tZW51ID0gKGRyb3Bkb3duX21lbnUpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kcm9wZG93bi9zcmMvZHJvcGRvd24taXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjM1OTEwMmEmXG52YXIgZHJvcGRvd25faXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYzNTkxMDJhX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImxpXCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtZHJvcGRvd24tbWVudV9faXRlbVwiLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgXCJpcy1kaXNhYmxlZFwiOiBfdm0uZGlzYWJsZWQsXG4gICAgICAgIFwiZWwtZHJvcGRvd24tbWVudV9faXRlbS0tZGl2aWRlZFwiOiBfdm0uZGl2aWRlZFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBfdm0uZGlzYWJsZWQsXG4gICAgICAgIHRhYmluZGV4OiBfdm0uZGlzYWJsZWQgPyBudWxsIDogLTFcbiAgICAgIH0sXG4gICAgICBvbjogeyBjbGljazogX3ZtLmhhbmRsZUNsaWNrIH1cbiAgICB9LFxuICAgIFtfdm0uaWNvbiA/IF9jKFwiaVwiLCB7IGNsYXNzOiBfdm0uaWNvbiB9KSA6IF92bS5fZSgpLCBfdm0uX3QoXCJkZWZhdWx0XCIpXSxcbiAgICAyXG4gIClcbn1cbnZhciBkcm9wZG93bl9pdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfNjM1OTEwMmFfc3RhdGljUmVuZGVyRm5zID0gW11cbmRyb3Bkb3duX2l0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF82MzU5MTAyYV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi1pdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MzU5MTAyYSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZHJvcGRvd24vc3JjL2Ryb3Bkb3duLWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZHJvcGRvd25faXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbERyb3Bkb3duSXRlbScsXG5cbiAgbWl4aW5zOiBbZW1pdHRlcl9kZWZhdWx0LmFdLFxuXG4gIHByb3BzOiB7XG4gICAgY29tbWFuZDoge30sXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgZGl2aWRlZDogQm9vbGVhbixcbiAgICBpY29uOiBTdHJpbmdcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsRHJvcGRvd24nLCAnbWVudS1pdGVtLWNsaWNrJywgW3RoaXMuY29tbWFuZCwgdGhpc10pO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi1pdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfZHJvcGRvd25faXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChkcm9wZG93bl9pdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi1pdGVtLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGRyb3Bkb3duX2l0ZW1fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfZHJvcGRvd25faXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgZHJvcGRvd25faXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYzNTkxMDJhX3JlbmRlcixcbiAgZHJvcGRvd25faXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzYzNTkxMDJhX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgZHJvcGRvd25faXRlbV9hcGk7IH1cbmRyb3Bkb3duX2l0ZW1fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9kcm9wZG93bi9zcmMvZHJvcGRvd24taXRlbS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZHJvcGRvd25faXRlbSA9IChkcm9wZG93bl9pdGVtX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZHJvcGRvd24taXRlbS9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5kcm9wZG93bl9pdGVtLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoZHJvcGRvd25faXRlbS5uYW1lLCBkcm9wZG93bl9pdGVtKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2Ryb3Bkb3duX2l0ZW0gPSAoZHJvcGRvd25faXRlbSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy91dGlscy9hcmlhLXV0aWxzLmpzXG52YXIgYXJpYSA9IGFyaWEgfHwge307XG5cbmFyaWEuVXRpbHMgPSBhcmlhLlV0aWxzIHx8IHt9O1xuXG4vKipcbiAqIEBkZXNjIFNldCBmb2N1cyBvbiBkZXNjZW5kYW50IG5vZGVzIHVudGlsIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCBpc1xuICogICAgICAgZm91bmQuXG4gKiBAcGFyYW0gZWxlbWVudFxuICogICAgICAgICAgRE9NIG5vZGUgZm9yIHdoaWNoIHRvIGZpbmQgdGhlIGZpcnN0IGZvY3VzYWJsZSBkZXNjZW5kYW50LlxuICogQHJldHVybnNcbiAqICB0cnVlIGlmIGEgZm9jdXNhYmxlIGVsZW1lbnQgaXMgZm91bmQgYW5kIGZvY3VzIGlzIHNldC5cbiAqL1xuYXJpYS5VdGlscy5mb2N1c0ZpcnN0RGVzY2VuZGFudCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNoaWxkID0gZWxlbWVudC5jaGlsZE5vZGVzW2ldO1xuICAgIGlmIChhcmlhLlV0aWxzLmF0dGVtcHRGb2N1cyhjaGlsZCkgfHwgYXJpYS5VdGlscy5mb2N1c0ZpcnN0RGVzY2VuZGFudChjaGlsZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIEBkZXNjIEZpbmQgdGhlIGxhc3QgZGVzY2VuZGFudCBub2RlIHRoYXQgaXMgZm9jdXNhYmxlLlxuICogQHBhcmFtIGVsZW1lbnRcbiAqICAgICAgICAgIERPTSBub2RlIGZvciB3aGljaCB0byBmaW5kIHRoZSBsYXN0IGZvY3VzYWJsZSBkZXNjZW5kYW50LlxuICogQHJldHVybnNcbiAqICB0cnVlIGlmIGEgZm9jdXNhYmxlIGVsZW1lbnQgaXMgZm91bmQgYW5kIGZvY3VzIGlzIHNldC5cbiAqL1xuXG5hcmlhLlV0aWxzLmZvY3VzTGFzdERlc2NlbmRhbnQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICBmb3IgKHZhciBpID0gZWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGNoaWxkID0gZWxlbWVudC5jaGlsZE5vZGVzW2ldO1xuICAgIGlmIChhcmlhLlV0aWxzLmF0dGVtcHRGb2N1cyhjaGlsZCkgfHwgYXJpYS5VdGlscy5mb2N1c0xhc3REZXNjZW5kYW50KGNoaWxkKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogQGRlc2MgU2V0IEF0dGVtcHQgdG8gc2V0IGZvY3VzIG9uIHRoZSBjdXJyZW50IG5vZGUuXG4gKiBAcGFyYW0gZWxlbWVudFxuICogICAgICAgICAgVGhlIG5vZGUgdG8gYXR0ZW1wdCB0byBmb2N1cyBvbi5cbiAqIEByZXR1cm5zXG4gKiAgdHJ1ZSBpZiBlbGVtZW50IGlzIGZvY3VzZWQuXG4gKi9cbmFyaWEuVXRpbHMuYXR0ZW1wdEZvY3VzID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgaWYgKCFhcmlhLlV0aWxzLmlzRm9jdXNhYmxlKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGFyaWEuVXRpbHMuSWdub3JlVXRpbEZvY3VzQ2hhbmdlcyA9IHRydWU7XG4gIHRyeSB7XG4gICAgZWxlbWVudC5mb2N1cygpO1xuICB9IGNhdGNoIChlKSB7fVxuICBhcmlhLlV0aWxzLklnbm9yZVV0aWxGb2N1c0NoYW5nZXMgPSBmYWxzZTtcbiAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVsZW1lbnQ7XG59O1xuXG5hcmlhLlV0aWxzLmlzRm9jdXNhYmxlID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQudGFiSW5kZXggPiAwIHx8IGVsZW1lbnQudGFiSW5kZXggPT09IDAgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhYkluZGV4JykgIT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlbGVtZW50LmRpc2FibGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoIChlbGVtZW50Lm5vZGVOYW1lKSB7XG4gICAgY2FzZSAnQSc6XG4gICAgICByZXR1cm4gISFlbGVtZW50LmhyZWYgJiYgZWxlbWVudC5yZWwgIT09ICdpZ25vcmUnO1xuICAgIGNhc2UgJ0lOUFVUJzpcbiAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgIT09ICdoaWRkZW4nICYmIGVsZW1lbnQudHlwZSAhPT0gJ2ZpbGUnO1xuICAgIGNhc2UgJ0JVVFRPTic6XG4gICAgY2FzZSAnU0VMRUNUJzpcbiAgICBjYXNlICdURVhUQVJFQSc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIOinpuWPkeS4gOS4quS6i+S7tlxuICogbW91c2VlbnRlciwgbW91c2VsZWF2ZSwgbW91c2VvdmVyLCBrZXl1cCwgY2hhbmdlLCBjbGljayDnrYlcbiAqIEBwYXJhbSAge0VsZW1lbnR9IGVsbVxuICogQHBhcmFtICB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0gIHsqfSBvcHRzXG4gKi9cbmFyaWEuVXRpbHMudHJpZ2dlckV2ZW50ID0gZnVuY3Rpb24gKGVsbSwgbmFtZSkge1xuICB2YXIgZXZlbnROYW1lID0gdm9pZCAwO1xuXG4gIGlmICgvXm1vdXNlfGNsaWNrLy50ZXN0KG5hbWUpKSB7XG4gICAgZXZlbnROYW1lID0gJ01vdXNlRXZlbnRzJztcbiAgfSBlbHNlIGlmICgvXmtleS8udGVzdChuYW1lKSkge1xuICAgIGV2ZW50TmFtZSA9ICdLZXlib2FyZEV2ZW50JztcbiAgfSBlbHNlIHtcbiAgICBldmVudE5hbWUgPSAnSFRNTEV2ZW50cyc7XG4gIH1cbiAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KGV2ZW50TmFtZSk7XG5cbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIG9wdHMgPSBBcnJheShfbGVuID4gMiA/IF9sZW4gLSAyIDogMCksIF9rZXkgPSAyOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgb3B0c1tfa2V5IC0gMl0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBldnQuaW5pdEV2ZW50LmFwcGx5KGV2dCwgW25hbWVdLmNvbmNhdChvcHRzKSk7XG4gIGVsbS5kaXNwYXRjaEV2ZW50ID8gZWxtLmRpc3BhdGNoRXZlbnQoZXZ0KSA6IGVsbS5maXJlRXZlbnQoJ29uJyArIG5hbWUsIGV2dCk7XG5cbiAgcmV0dXJuIGVsbTtcbn07XG5cbmFyaWEuVXRpbHMua2V5cyA9IHtcbiAgdGFiOiA5LFxuICBlbnRlcjogMTMsXG4gIHNwYWNlOiAzMixcbiAgbGVmdDogMzcsXG4gIHVwOiAzOCxcbiAgcmlnaHQ6IDM5LFxuICBkb3duOiA0MCxcbiAgZXNjOiAyN1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYXJpYV91dGlscyA9IChhcmlhLlV0aWxzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3V0aWxzL21lbnUvYXJpYS1zdWJtZW51LmpzXG5cblxudmFyIFN1Yk1lbnUgPSBmdW5jdGlvbiBTdWJNZW51KHBhcmVudCwgZG9tTm9kZSkge1xuICB0aGlzLmRvbU5vZGUgPSBkb21Ob2RlO1xuICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgdGhpcy5zdWJNZW51SXRlbXMgPSBbXTtcbiAgdGhpcy5zdWJJbmRleCA9IDA7XG4gIHRoaXMuaW5pdCgpO1xufTtcblxuU3ViTWVudS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zdWJNZW51SXRlbXMgPSB0aGlzLmRvbU5vZGUucXVlcnlTZWxlY3RvckFsbCgnbGknKTtcbiAgdGhpcy5hZGRMaXN0ZW5lcnMoKTtcbn07XG5cblN1Yk1lbnUucHJvdG90eXBlLmdvdG9TdWJJbmRleCA9IGZ1bmN0aW9uIChpZHgpIHtcbiAgaWYgKGlkeCA9PT0gdGhpcy5zdWJNZW51SXRlbXMubGVuZ3RoKSB7XG4gICAgaWR4ID0gMDtcbiAgfSBlbHNlIGlmIChpZHggPCAwKSB7XG4gICAgaWR4ID0gdGhpcy5zdWJNZW51SXRlbXMubGVuZ3RoIC0gMTtcbiAgfVxuICB0aGlzLnN1Yk1lbnVJdGVtc1tpZHhdLmZvY3VzKCk7XG4gIHRoaXMuc3ViSW5kZXggPSBpZHg7XG59O1xuXG5TdWJNZW51LnByb3RvdHlwZS5hZGRMaXN0ZW5lcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdmFyIGtleXMgPSBhcmlhX3V0aWxzLmtleXM7XG4gIHZhciBwYXJlbnROb2RlID0gdGhpcy5wYXJlbnQuZG9tTm9kZTtcbiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0aGlzLnN1Yk1lbnVJdGVtcywgZnVuY3Rpb24gKGVsKSB7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdmFyIHByZXZEZWYgPSBmYWxzZTtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICBjYXNlIGtleXMuZG93bjpcbiAgICAgICAgICBfdGhpcy5nb3RvU3ViSW5kZXgoX3RoaXMuc3ViSW5kZXggKyAxKTtcbiAgICAgICAgICBwcmV2RGVmID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBrZXlzLnVwOlxuICAgICAgICAgIF90aGlzLmdvdG9TdWJJbmRleChfdGhpcy5zdWJJbmRleCAtIDEpO1xuICAgICAgICAgIHByZXZEZWYgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGtleXMudGFiOlxuICAgICAgICAgIGFyaWFfdXRpbHMudHJpZ2dlckV2ZW50KHBhcmVudE5vZGUsICdtb3VzZWxlYXZlJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Uga2V5cy5lbnRlcjpcbiAgICAgICAgY2FzZSBrZXlzLnNwYWNlOlxuICAgICAgICAgIHByZXZEZWYgPSB0cnVlO1xuICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuY2xpY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2RGVmKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGFyaWFfc3VibWVudSA9IChTdWJNZW51KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3V0aWxzL21lbnUvYXJpYS1tZW51aXRlbS5qc1xuXG5cblxudmFyIE1lbnVJdGVtID0gZnVuY3Rpb24gTWVudUl0ZW0oZG9tTm9kZSkge1xuICB0aGlzLmRvbU5vZGUgPSBkb21Ob2RlO1xuICB0aGlzLnN1Ym1lbnUgPSBudWxsO1xuICB0aGlzLmluaXQoKTtcbn07XG5cbk1lbnVJdGVtLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmRvbU5vZGUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gIHZhciBtZW51Q2hpbGQgPSB0aGlzLmRvbU5vZGUucXVlcnlTZWxlY3RvcignLmVsLW1lbnUnKTtcbiAgaWYgKG1lbnVDaGlsZCkge1xuICAgIHRoaXMuc3VibWVudSA9IG5ldyBhcmlhX3N1Ym1lbnUodGhpcywgbWVudUNoaWxkKTtcbiAgfVxuICB0aGlzLmFkZExpc3RlbmVycygpO1xufTtcblxuTWVudUl0ZW0ucHJvdG90eXBlLmFkZExpc3RlbmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIga2V5cyA9IGFyaWFfdXRpbHMua2V5cztcbiAgdGhpcy5kb21Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgcHJldkRlZiA9IGZhbHNlO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBrZXlzLmRvd246XG4gICAgICAgIGFyaWFfdXRpbHMudHJpZ2dlckV2ZW50KGV2ZW50LmN1cnJlbnRUYXJnZXQsICdtb3VzZWVudGVyJyk7XG4gICAgICAgIF90aGlzLnN1Ym1lbnUgJiYgX3RoaXMuc3VibWVudS5nb3RvU3ViSW5kZXgoMCk7XG4gICAgICAgIHByZXZEZWYgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Uga2V5cy51cDpcbiAgICAgICAgYXJpYV91dGlscy50cmlnZ2VyRXZlbnQoZXZlbnQuY3VycmVudFRhcmdldCwgJ21vdXNlZW50ZXInKTtcbiAgICAgICAgX3RoaXMuc3VibWVudSAmJiBfdGhpcy5zdWJtZW51LmdvdG9TdWJJbmRleChfdGhpcy5zdWJtZW51LnN1Yk1lbnVJdGVtcy5sZW5ndGggLSAxKTtcbiAgICAgICAgcHJldkRlZiA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBrZXlzLnRhYjpcbiAgICAgICAgYXJpYV91dGlscy50cmlnZ2VyRXZlbnQoZXZlbnQuY3VycmVudFRhcmdldCwgJ21vdXNlbGVhdmUnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGtleXMuZW50ZXI6XG4gICAgICBjYXNlIGtleXMuc3BhY2U6XG4gICAgICAgIHByZXZEZWYgPSB0cnVlO1xuICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmNsaWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAocHJldkRlZikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYXJpYV9tZW51aXRlbSA9IChNZW51SXRlbSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy91dGlscy9tZW51L2FyaWEtbWVudWJhci5qc1xuXG5cbnZhciBNZW51ID0gZnVuY3Rpb24gTWVudShkb21Ob2RlKSB7XG4gIHRoaXMuZG9tTm9kZSA9IGRvbU5vZGU7XG4gIHRoaXMuaW5pdCgpO1xufTtcblxuTWVudS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG1lbnVDaGlsZHJlbiA9IHRoaXMuZG9tTm9kZS5jaGlsZE5vZGVzO1xuICBbXS5maWx0ZXIuY2FsbChtZW51Q2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBjaGlsZC5ub2RlVHlwZSA9PT0gMTtcbiAgfSkuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBuZXcgYXJpYV9tZW51aXRlbShjaGlsZCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgfSk7XG59O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYXJpYV9tZW51YmFyID0gKE1lbnUpO1xuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL2RvbVwiXG52YXIgZG9tXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL21lbnUvc3JjL21lbnUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbWVudXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbE1lbnUnLFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgY29tcG9uZW50ID0gaChcbiAgICAgICd1bCcsXG4gICAgICB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgcm9sZTogJ21lbnViYXInXG4gICAgICAgIH0sXG4gICAgICAgIGtleTogK3RoaXMuY29sbGFwc2UsXG4gICAgICAgIHN0eWxlOiB7IGJhY2tncm91bmRDb2xvcjogdGhpcy5iYWNrZ3JvdW5kQ29sb3IgfHwgJycgfSxcbiAgICAgICAgJ2NsYXNzJzoge1xuICAgICAgICAgICdlbC1tZW51LS1ob3Jpem9udGFsJzogdGhpcy5tb2RlID09PSAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgJ2VsLW1lbnUtLWNvbGxhcHNlJzogdGhpcy5jb2xsYXBzZSxcbiAgICAgICAgICBcImVsLW1lbnVcIjogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW3RoaXMuJHNsb3RzLmRlZmF1bHRdXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNvbGxhcHNlVHJhbnNpdGlvbikge1xuICAgICAgcmV0dXJuIGgoJ2VsLW1lbnUtY29sbGFwc2UtdHJhbnNpdGlvbicsIFtjb21wb25lbnRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICB9XG4gIH0sXG5cblxuICBjb21wb25lbnROYW1lOiAnRWxNZW51JyxcblxuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYSwgbWlncmF0aW5nX2RlZmF1bHQuYV0sXG5cbiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcm9vdE1lbnU6IHRoaXNcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcG9uZW50czoge1xuICAgICdlbC1tZW51LWNvbGxhcHNlLXRyYW5zaXRpb24nOiB7XG4gICAgICBmdW5jdGlvbmFsOiB0cnVlLFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoY3JlYXRlRWxlbWVudCwgY29udGV4dCkge1xuICAgICAgICB2YXIgZGF0YSA9IHtcbiAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbW9kZTogJ291dC1pbidcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBiZWZvcmVFbnRlcjogZnVuY3Rpb24gYmVmb3JlRW50ZXIoZWwpIHtcbiAgICAgICAgICAgICAgZWwuc3R5bGUub3BhY2l0eSA9IDAuMjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gZW50ZXIoZWwpIHtcbiAgICAgICAgICAgICAgT2JqZWN0KGRvbV9bXCJhZGRDbGFzc1wiXSkoZWwsICdlbC1vcGFjaXR5LXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgICAgZWwuc3R5bGUub3BhY2l0eSA9IDE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJFbnRlcjogZnVuY3Rpb24gYWZ0ZXJFbnRlcihlbCkge1xuICAgICAgICAgICAgICBPYmplY3QoZG9tX1tcInJlbW92ZUNsYXNzXCJdKShlbCwgJ2VsLW9wYWNpdHktdHJhbnNpdGlvbicpO1xuICAgICAgICAgICAgICBlbC5zdHlsZS5vcGFjaXR5ID0gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYmVmb3JlTGVhdmU6IGZ1bmN0aW9uIGJlZm9yZUxlYXZlKGVsKSB7XG4gICAgICAgICAgICAgIGlmICghZWwuZGF0YXNldCkgZWwuZGF0YXNldCA9IHt9O1xuXG4gICAgICAgICAgICAgIGlmIChPYmplY3QoZG9tX1tcImhhc0NsYXNzXCJdKShlbCwgJ2VsLW1lbnUtLWNvbGxhcHNlJykpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QoZG9tX1tcInJlbW92ZUNsYXNzXCJdKShlbCwgJ2VsLW1lbnUtLWNvbGxhcHNlJyk7XG4gICAgICAgICAgICAgICAgZWwuZGF0YXNldC5vbGRPdmVyZmxvdyA9IGVsLnN0eWxlLm92ZXJmbG93O1xuICAgICAgICAgICAgICAgIGVsLmRhdGFzZXQuc2Nyb2xsV2lkdGggPSBlbC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICBPYmplY3QoZG9tX1tcImFkZENsYXNzXCJdKShlbCwgJ2VsLW1lbnUtLWNvbGxhcHNlJyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0KGRvbV9bXCJhZGRDbGFzc1wiXSkoZWwsICdlbC1tZW51LS1jb2xsYXBzZScpO1xuICAgICAgICAgICAgICAgIGVsLmRhdGFzZXQub2xkT3ZlcmZsb3cgPSBlbC5zdHlsZS5vdmVyZmxvdztcbiAgICAgICAgICAgICAgICBlbC5kYXRhc2V0LnNjcm9sbFdpZHRoID0gZWwuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkoZWwsICdlbC1tZW51LS1jb2xsYXBzZScpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZWwuc3R5bGUud2lkdGggPSBlbC5zY3JvbGxXaWR0aCArICdweCc7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGVhdmU6IGZ1bmN0aW9uIGxlYXZlKGVsKSB7XG4gICAgICAgICAgICAgIE9iamVjdChkb21fW1wiYWRkQ2xhc3NcIl0pKGVsLCAnaG9yaXpvbnRhbC1jb2xsYXBzZS10cmFuc2l0aW9uJyk7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLndpZHRoID0gZWwuZGF0YXNldC5zY3JvbGxXaWR0aCArICdweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudCgndHJhbnNpdGlvbicsIGRhdGEsIGNvbnRleHQuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBwcm9wczoge1xuICAgIG1vZGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd2ZXJ0aWNhbCdcbiAgICB9LFxuICAgIGRlZmF1bHRBY3RpdmU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBkZWZhdWx0T3BlbmVkczogQXJyYXksXG4gICAgdW5pcXVlT3BlbmVkOiBCb29sZWFuLFxuICAgIHJvdXRlcjogQm9vbGVhbixcbiAgICBtZW51VHJpZ2dlcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2hvdmVyJ1xuICAgIH0sXG4gICAgY29sbGFwc2U6IEJvb2xlYW4sXG4gICAgYmFja2dyb3VuZENvbG9yOiBTdHJpbmcsXG4gICAgdGV4dENvbG9yOiBTdHJpbmcsXG4gICAgYWN0aXZlVGV4dENvbG9yOiBTdHJpbmcsXG4gICAgY29sbGFwc2VUcmFuc2l0aW9uOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlSW5kZXg6IHRoaXMuZGVmYXVsdEFjdGl2ZSxcbiAgICAgIG9wZW5lZE1lbnVzOiB0aGlzLmRlZmF1bHRPcGVuZWRzICYmICF0aGlzLmNvbGxhcHNlID8gdGhpcy5kZWZhdWx0T3BlbmVkcy5zbGljZSgwKSA6IFtdLFxuICAgICAgaXRlbXM6IHt9LFxuICAgICAgc3VibWVudXM6IHt9XG4gICAgfTtcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGhvdmVyQmFja2dyb3VuZDogZnVuY3Rpb24gaG92ZXJCYWNrZ3JvdW5kKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYmFja2dyb3VuZENvbG9yID8gdGhpcy5taXhDb2xvcih0aGlzLmJhY2tncm91bmRDb2xvciwgMC4yKSA6ICcnO1xuICAgIH0sXG4gICAgaXNNZW51UG9wdXA6IGZ1bmN0aW9uIGlzTWVudVBvcHVwKCkge1xuICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2hvcml6b250YWwnIHx8IHRoaXMubW9kZSA9PT0gJ3ZlcnRpY2FsJyAmJiB0aGlzLmNvbGxhcHNlO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBkZWZhdWx0QWN0aXZlOiBmdW5jdGlvbiBkZWZhdWx0QWN0aXZlKHZhbHVlKSB7XG4gICAgICBpZiAoIXRoaXMuaXRlbXNbdmFsdWVdKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBudWxsO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVBY3RpdmVJbmRleCh2YWx1ZSk7XG4gICAgfSxcbiAgICBkZWZhdWx0T3BlbmVkczogZnVuY3Rpb24gZGVmYXVsdE9wZW5lZHModmFsdWUpIHtcbiAgICAgIGlmICghdGhpcy5jb2xsYXBzZSkge1xuICAgICAgICB0aGlzLm9wZW5lZE1lbnVzID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBjb2xsYXBzZTogZnVuY3Rpb24gY29sbGFwc2UodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSkgdGhpcy5vcGVuZWRNZW51cyA9IFtdO1xuICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsU3VibWVudScsICd0b2dnbGUtY29sbGFwc2UnLCB2YWx1ZSk7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgdXBkYXRlQWN0aXZlSW5kZXg6IGZ1bmN0aW9uIHVwZGF0ZUFjdGl2ZUluZGV4KHZhbCkge1xuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zW3ZhbF0gfHwgdGhpcy5pdGVtc1t0aGlzLmFjdGl2ZUluZGV4XSB8fCB0aGlzLml0ZW1zW3RoaXMuZGVmYXVsdEFjdGl2ZV07XG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaXRlbS5pbmRleDtcbiAgICAgICAgdGhpcy5pbml0T3BlbmVkTWVudSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRNaWdyYXRpbmdDb25maWc6IGZ1bmN0aW9uIGdldE1pZ3JhdGluZ0NvbmZpZygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgJ3RoZW1lJzogJ3RoZW1lIGlzIHJlbW92ZWQuJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0Q29sb3JDaGFubmVsczogZnVuY3Rpb24gZ2V0Q29sb3JDaGFubmVscyhjb2xvcikge1xuICAgICAgY29sb3IgPSBjb2xvci5yZXBsYWNlKCcjJywgJycpO1xuICAgICAgaWYgKC9eWzAtOWEtZkEtRl17M30kLy50ZXN0KGNvbG9yKSkge1xuICAgICAgICBjb2xvciA9IGNvbG9yLnNwbGl0KCcnKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgY29sb3Iuc3BsaWNlKGksIDAsIGNvbG9yW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBjb2xvciA9IGNvbG9yLmpvaW4oJycpO1xuICAgICAgfVxuICAgICAgaWYgKC9eWzAtOWEtZkEtRl17Nn0kLy50ZXN0KGNvbG9yKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlZDogcGFyc2VJbnQoY29sb3Iuc2xpY2UoMCwgMiksIDE2KSxcbiAgICAgICAgICBncmVlbjogcGFyc2VJbnQoY29sb3Iuc2xpY2UoMiwgNCksIDE2KSxcbiAgICAgICAgICBibHVlOiBwYXJzZUludChjb2xvci5zbGljZSg0LCA2KSwgMTYpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlZDogMjU1LFxuICAgICAgICAgIGdyZWVuOiAyNTUsXG4gICAgICAgICAgYmx1ZTogMjU1XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBtaXhDb2xvcjogZnVuY3Rpb24gbWl4Q29sb3IoY29sb3IsIHBlcmNlbnQpIHtcbiAgICAgIHZhciBfZ2V0Q29sb3JDaGFubmVscyA9IHRoaXMuZ2V0Q29sb3JDaGFubmVscyhjb2xvciksXG4gICAgICAgICAgcmVkID0gX2dldENvbG9yQ2hhbm5lbHMucmVkLFxuICAgICAgICAgIGdyZWVuID0gX2dldENvbG9yQ2hhbm5lbHMuZ3JlZW4sXG4gICAgICAgICAgYmx1ZSA9IF9nZXRDb2xvckNoYW5uZWxzLmJsdWU7XG5cbiAgICAgIGlmIChwZXJjZW50ID4gMCkge1xuICAgICAgICAvLyBzaGFkZSBnaXZlbiBjb2xvclxuICAgICAgICByZWQgKj0gMSAtIHBlcmNlbnQ7XG4gICAgICAgIGdyZWVuICo9IDEgLSBwZXJjZW50O1xuICAgICAgICBibHVlICo9IDEgLSBwZXJjZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGludCBnaXZlbiBjb2xvclxuICAgICAgICByZWQgKz0gKDI1NSAtIHJlZCkgKiBwZXJjZW50O1xuICAgICAgICBncmVlbiArPSAoMjU1IC0gZ3JlZW4pICogcGVyY2VudDtcbiAgICAgICAgYmx1ZSArPSAoMjU1IC0gYmx1ZSkgKiBwZXJjZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuICdyZ2IoJyArIE1hdGgucm91bmQocmVkKSArICcsICcgKyBNYXRoLnJvdW5kKGdyZWVuKSArICcsICcgKyBNYXRoLnJvdW5kKGJsdWUpICsgJyknO1xuICAgIH0sXG4gICAgYWRkSXRlbTogZnVuY3Rpb24gYWRkSXRlbShpdGVtKSB7XG4gICAgICB0aGlzLiRzZXQodGhpcy5pdGVtcywgaXRlbS5pbmRleCwgaXRlbSk7XG4gICAgfSxcbiAgICByZW1vdmVJdGVtOiBmdW5jdGlvbiByZW1vdmVJdGVtKGl0ZW0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLml0ZW1zW2l0ZW0uaW5kZXhdO1xuICAgIH0sXG4gICAgYWRkU3VibWVudTogZnVuY3Rpb24gYWRkU3VibWVudShpdGVtKSB7XG4gICAgICB0aGlzLiRzZXQodGhpcy5zdWJtZW51cywgaXRlbS5pbmRleCwgaXRlbSk7XG4gICAgfSxcbiAgICByZW1vdmVTdWJtZW51OiBmdW5jdGlvbiByZW1vdmVTdWJtZW51KGl0ZW0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnN1Ym1lbnVzW2l0ZW0uaW5kZXhdO1xuICAgIH0sXG4gICAgb3Blbk1lbnU6IGZ1bmN0aW9uIG9wZW5NZW51KGluZGV4LCBpbmRleFBhdGgpIHtcbiAgICAgIHZhciBvcGVuZWRNZW51cyA9IHRoaXMub3BlbmVkTWVudXM7XG4gICAgICBpZiAob3BlbmVkTWVudXMuaW5kZXhPZihpbmRleCkgIT09IC0xKSByZXR1cm47XG4gICAgICAvLyDlsIbkuI3lnKjor6Xoj5zljZXot6/lvoTkuIvnmoTlhbbkvZnoj5zljZXmlLbotbdcbiAgICAgIC8vIGNvbGxhcHNlIGFsbCBtZW51IHRoYXQgYXJlIG5vdCB1bmRlciBjdXJyZW50IG1lbnUgaXRlbVxuICAgICAgaWYgKHRoaXMudW5pcXVlT3BlbmVkKSB7XG4gICAgICAgIHRoaXMub3BlbmVkTWVudXMgPSBvcGVuZWRNZW51cy5maWx0ZXIoZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4UGF0aC5pbmRleE9mKGluZGV4KSAhPT0gLTE7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5vcGVuZWRNZW51cy5wdXNoKGluZGV4KTtcbiAgICB9LFxuICAgIGNsb3NlTWVudTogZnVuY3Rpb24gY2xvc2VNZW51KGluZGV4KSB7XG4gICAgICB2YXIgaSA9IHRoaXMub3BlbmVkTWVudXMuaW5kZXhPZihpbmRleCk7XG4gICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5vcGVuZWRNZW51cy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVTdWJtZW51Q2xpY2s6IGZ1bmN0aW9uIGhhbmRsZVN1Ym1lbnVDbGljayhzdWJtZW51KSB7XG4gICAgICB2YXIgaW5kZXggPSBzdWJtZW51LmluZGV4LFxuICAgICAgICAgIGluZGV4UGF0aCA9IHN1Ym1lbnUuaW5kZXhQYXRoO1xuXG4gICAgICB2YXIgaXNPcGVuZWQgPSB0aGlzLm9wZW5lZE1lbnVzLmluZGV4T2YoaW5kZXgpICE9PSAtMTtcblxuICAgICAgaWYgKGlzT3BlbmVkKSB7XG4gICAgICAgIHRoaXMuY2xvc2VNZW51KGluZGV4KTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2xvc2UnLCBpbmRleCwgaW5kZXhQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Blbk1lbnUoaW5kZXgsIGluZGV4UGF0aCk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ29wZW4nLCBpbmRleCwgaW5kZXhQYXRoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUl0ZW1DbGljazogZnVuY3Rpb24gaGFuZGxlSXRlbUNsaWNrKGl0ZW0pIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBpbmRleCA9IGl0ZW0uaW5kZXgsXG4gICAgICAgICAgaW5kZXhQYXRoID0gaXRlbS5pbmRleFBhdGg7XG5cbiAgICAgIHZhciBvbGRBY3RpdmVJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXg7XG4gICAgICB2YXIgaGFzSW5kZXggPSBpdGVtLmluZGV4ICE9PSBudWxsO1xuXG4gICAgICBpZiAoaGFzSW5kZXgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGl0ZW0uaW5kZXg7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdCcsIGluZGV4LCBpbmRleFBhdGgsIGl0ZW0pO1xuXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnaG9yaXpvbnRhbCcgfHwgdGhpcy5jb2xsYXBzZSkge1xuICAgICAgICB0aGlzLm9wZW5lZE1lbnVzID0gW107XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnJvdXRlciAmJiBoYXNJbmRleCkge1xuICAgICAgICB0aGlzLnJvdXRlVG9JdGVtKGl0ZW0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIF90aGlzLmFjdGl2ZUluZGV4ID0gb2xkQWN0aXZlSW5kZXg7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAvLyB2dWUtcm91dGVyIDMuMS4wKyBwdXNoL3JlcGxhY2UgY2F1c2UgTmF2aWdhdGlvbkR1cGxpY2F0ZWQgZXJyb3IgXG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vRWxlbWVGRS9lbGVtZW50L2lzc3Vlcy8xNzA0NFxuICAgICAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdOYXZpZ2F0aW9uRHVwbGljYXRlZCcpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIOWIneWni+WMluWxleW8gOiPnOWNlVxuICAgIC8vIGluaXRpYWxpemUgb3BlbmVkIG1lbnVcbiAgICBpbml0T3BlbmVkTWVudTogZnVuY3Rpb24gaW5pdE9wZW5lZE1lbnUoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5hY3RpdmVJbmRleDtcbiAgICAgIHZhciBhY3RpdmVJdGVtID0gdGhpcy5pdGVtc1tpbmRleF07XG4gICAgICBpZiAoIWFjdGl2ZUl0ZW0gfHwgdGhpcy5tb2RlID09PSAnaG9yaXpvbnRhbCcgfHwgdGhpcy5jb2xsYXBzZSkgcmV0dXJuO1xuXG4gICAgICB2YXIgaW5kZXhQYXRoID0gYWN0aXZlSXRlbS5pbmRleFBhdGg7XG5cbiAgICAgIC8vIOWxleW8gOivpeiPnOWNlemhueeahOi3r+W+hOS4iuaJgOacieWtkOiPnOWNlVxuICAgICAgLy8gZXhwYW5kIGFsbCBzdWJtZW51cyBvZiB0aGUgbWVudSBpdGVtXG4gICAgICBpbmRleFBhdGguZm9yRWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgdmFyIHN1Ym1lbnUgPSBfdGhpczIuc3VibWVudXNbaW5kZXhdO1xuICAgICAgICBzdWJtZW51ICYmIF90aGlzMi5vcGVuTWVudShpbmRleCwgc3VibWVudS5pbmRleFBhdGgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICByb3V0ZVRvSXRlbTogZnVuY3Rpb24gcm91dGVUb0l0ZW0oaXRlbSwgb25FcnJvcikge1xuICAgICAgdmFyIHJvdXRlID0gaXRlbS5yb3V0ZSB8fCBpdGVtLmluZGV4O1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy4kcm91dGVyLnB1c2gocm91dGUsIGZ1bmN0aW9uICgpIHt9LCBvbkVycm9yKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9wZW46IGZ1bmN0aW9uIG9wZW4oaW5kZXgpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgaW5kZXhQYXRoID0gdGhpcy5zdWJtZW51c1tpbmRleC50b1N0cmluZygpXS5pbmRleFBhdGg7XG5cbiAgICAgIGluZGV4UGF0aC5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7XG4gICAgICAgIHJldHVybiBfdGhpczMub3Blbk1lbnUoaSwgaW5kZXhQYXRoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2xvc2U6IGZ1bmN0aW9uIGNsb3NlKGluZGV4KSB7XG4gICAgICB0aGlzLmNsb3NlTWVudShpbmRleCk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHRoaXMuaW5pdE9wZW5lZE1lbnUoKTtcbiAgICB0aGlzLiRvbignaXRlbS1jbGljaycsIHRoaXMuaGFuZGxlSXRlbUNsaWNrKTtcbiAgICB0aGlzLiRvbignc3VibWVudS1jbGljaycsIHRoaXMuaGFuZGxlU3VibWVudUNsaWNrKTtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIG5ldyBhcmlhX21lbnViYXIodGhpcy4kZWwpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgfVxuICAgIHRoaXMuJHdhdGNoKCdpdGVtcycsIHRoaXMudXBkYXRlQWN0aXZlSW5kZXgpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVudS9zcmMvbWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX21lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAobWVudXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9tZW51L3NyYy9tZW51LnZ1ZVxudmFyIG1lbnVfcmVuZGVyLCBtZW51X3N0YXRpY1JlbmRlckZuc1xuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBtZW51X2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX21lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIG1lbnVfcmVuZGVyLFxuICBtZW51X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgbWVudV9hcGk7IH1cbm1lbnVfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9tZW51L3NyYy9tZW51LnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfbWVudSA9IChtZW51X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVudS9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zcmNfbWVudS5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHNyY19tZW51Lm5hbWUsIHNyY19tZW51KTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX21lbnUgPSAoc3JjX21lbnUpO1xuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3RyYW5zaXRpb25zL2NvbGxhcHNlLXRyYW5zaXRpb25cIlxudmFyIGNvbGxhcHNlX3RyYW5zaXRpb25fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG52YXIgY29sbGFwc2VfdHJhbnNpdGlvbl9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb2xsYXBzZV90cmFuc2l0aW9uXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVudS9zcmMvbWVudS1taXhpbi5qc1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbWVudV9taXhpbiA9ICh7XG4gIGluamVjdDogWydyb290TWVudSddLFxuICBjb21wdXRlZDoge1xuICAgIGluZGV4UGF0aDogZnVuY3Rpb24gaW5kZXhQYXRoKCkge1xuICAgICAgdmFyIHBhdGggPSBbdGhpcy5pbmRleF07XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudC4kb3B0aW9ucy5jb21wb25lbnROYW1lICE9PSAnRWxNZW51Jykge1xuICAgICAgICBpZiAocGFyZW50LmluZGV4KSB7XG4gICAgICAgICAgcGF0aC51bnNoaWZ0KHBhcmVudC5pbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9LFxuICAgIHBhcmVudE1lbnU6IGZ1bmN0aW9uIHBhcmVudE1lbnUoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudCAmJiBbJ0VsTWVudScsICdFbFN1Ym1lbnUnXS5pbmRleE9mKHBhcmVudC4kb3B0aW9ucy5jb21wb25lbnROYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH0sXG4gICAgcGFkZGluZ1N0eWxlOiBmdW5jdGlvbiBwYWRkaW5nU3R5bGUoKSB7XG4gICAgICBpZiAodGhpcy5yb290TWVudS5tb2RlICE9PSAndmVydGljYWwnKSByZXR1cm4ge307XG5cbiAgICAgIHZhciBwYWRkaW5nID0gMjA7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuXG4gICAgICBpZiAodGhpcy5yb290TWVudS5jb2xsYXBzZSkge1xuICAgICAgICBwYWRkaW5nID0gMjA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC4kb3B0aW9ucy5jb21wb25lbnROYW1lICE9PSAnRWxNZW51Jykge1xuICAgICAgICAgIGlmIChwYXJlbnQuJG9wdGlvbnMuY29tcG9uZW50TmFtZSA9PT0gJ0VsU3VibWVudScpIHtcbiAgICAgICAgICAgIHBhZGRpbmcgKz0gMjA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBwYWRkaW5nTGVmdDogcGFkZGluZyArICdweCcgfTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvbWVudS9zcmMvc3VibWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG52YXIgcG9wZXJNaXhpbnMgPSB7XG4gIHByb3BzOiB7XG4gICAgdHJhbnNmb3JtT3JpZ2luOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBvZmZzZXQ6IHZ1ZV9wb3BwZXJfZGVmYXVsdC5hLnByb3BzLm9mZnNldCxcbiAgICBib3VuZGFyaWVzUGFkZGluZzogdnVlX3BvcHBlcl9kZWZhdWx0LmEucHJvcHMuYm91bmRhcmllc1BhZGRpbmcsXG4gICAgcG9wcGVyT3B0aW9uczogdnVlX3BvcHBlcl9kZWZhdWx0LmEucHJvcHMucG9wcGVyT3B0aW9uc1xuICB9LFxuICBkYXRhOiB2dWVfcG9wcGVyX2RlZmF1bHQuYS5kYXRhLFxuICBtZXRob2RzOiB2dWVfcG9wcGVyX2RlZmF1bHQuYS5tZXRob2RzLFxuICBiZWZvcmVEZXN0cm95OiB2dWVfcG9wcGVyX2RlZmF1bHQuYS5iZWZvcmVEZXN0cm95LFxuICBkZWFjdGl2YXRlZDogdnVlX3BvcHBlcl9kZWZhdWx0LmEuZGVhY3RpdmF0ZWRcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN1Ym1lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxTdWJtZW51JyxcblxuICBjb21wb25lbnROYW1lOiAnRWxTdWJtZW51JyxcblxuICBtaXhpbnM6IFttZW51X21peGluLCBlbWl0dGVyX2RlZmF1bHQuYSwgcG9wZXJNaXhpbnNdLFxuXG4gIGNvbXBvbmVudHM6IHsgRWxDb2xsYXBzZVRyYW5zaXRpb246IGNvbGxhcHNlX3RyYW5zaXRpb25fZGVmYXVsdC5hIH0sXG5cbiAgcHJvcHM6IHtcbiAgICBpbmRleDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9LFxuICAgIHNob3dUaW1lb3V0OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAzMDBcbiAgICB9LFxuICAgIGhpZGVUaW1lb3V0OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAzMDBcbiAgICB9LFxuICAgIHBvcHBlckNsYXNzOiBTdHJpbmcsXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgcG9wcGVyQXBwZW5kVG9Cb2R5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvcHBlckpTOiBudWxsLFxuICAgICAgdGltZW91dDogbnVsbCxcbiAgICAgIGl0ZW1zOiB7fSxcbiAgICAgIHN1Ym1lbnVzOiB7fSxcbiAgICAgIG1vdXNlSW5DaGlsZDogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgb3BlbmVkOiBmdW5jdGlvbiBvcGVuZWQodmFsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5pc01lbnVQb3B1cCkge1xuICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykge1xuICAgICAgICAgIF90aGlzLnVwZGF0ZVBvcHBlcigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgLy8gcG9wcGVyIG9wdGlvblxuICAgIGFwcGVuZFRvQm9keTogZnVuY3Rpb24gYXBwZW5kVG9Cb2R5KCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9wcGVyQXBwZW5kVG9Cb2R5ID09PSB1bmRlZmluZWQgPyB0aGlzLmlzRmlyc3RMZXZlbCA6IHRoaXMucG9wcGVyQXBwZW5kVG9Cb2R5O1xuICAgIH0sXG4gICAgbWVudVRyYW5zaXRpb25OYW1lOiBmdW5jdGlvbiBtZW51VHJhbnNpdGlvbk5hbWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb290TWVudS5jb2xsYXBzZSA/ICdlbC16b29tLWluLWxlZnQnIDogJ2VsLXpvb20taW4tdG9wJztcbiAgICB9LFxuICAgIG9wZW5lZDogZnVuY3Rpb24gb3BlbmVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdE1lbnUub3BlbmVkTWVudXMuaW5kZXhPZih0aGlzLmluZGV4KSA+IC0xO1xuICAgIH0sXG4gICAgYWN0aXZlOiBmdW5jdGlvbiBhY3RpdmUoKSB7XG4gICAgICB2YXIgaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgIHZhciBzdWJtZW51cyA9IHRoaXMuc3VibWVudXM7XG4gICAgICB2YXIgaXRlbXMgPSB0aGlzLml0ZW1zO1xuXG4gICAgICBPYmplY3Qua2V5cyhpdGVtcykuZm9yRWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgaWYgKGl0ZW1zW2luZGV4XS5hY3RpdmUpIHtcbiAgICAgICAgICBpc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBPYmplY3Qua2V5cyhzdWJtZW51cykuZm9yRWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgaWYgKHN1Ym1lbnVzW2luZGV4XS5hY3RpdmUpIHtcbiAgICAgICAgICBpc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaXNBY3RpdmU7XG4gICAgfSxcbiAgICBob3ZlckJhY2tncm91bmQ6IGZ1bmN0aW9uIGhvdmVyQmFja2dyb3VuZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RNZW51LmhvdmVyQmFja2dyb3VuZDtcbiAgICB9LFxuICAgIGJhY2tncm91bmRDb2xvcjogZnVuY3Rpb24gYmFja2dyb3VuZENvbG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdE1lbnUuYmFja2dyb3VuZENvbG9yIHx8ICcnO1xuICAgIH0sXG4gICAgYWN0aXZlVGV4dENvbG9yOiBmdW5jdGlvbiBhY3RpdmVUZXh0Q29sb3IoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb290TWVudS5hY3RpdmVUZXh0Q29sb3IgfHwgJyc7XG4gICAgfSxcbiAgICB0ZXh0Q29sb3I6IGZ1bmN0aW9uIHRleHRDb2xvcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RNZW51LnRleHRDb2xvciB8fCAnJztcbiAgICB9LFxuICAgIG1vZGU6IGZ1bmN0aW9uIG1vZGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb290TWVudS5tb2RlO1xuICAgIH0sXG4gICAgaXNNZW51UG9wdXA6IGZ1bmN0aW9uIGlzTWVudVBvcHVwKCkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdE1lbnUuaXNNZW51UG9wdXA7XG4gICAgfSxcbiAgICB0aXRsZVN0eWxlOiBmdW5jdGlvbiB0aXRsZVN0eWxlKCkge1xuICAgICAgaWYgKHRoaXMubW9kZSAhPT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29sb3I6IHRoaXMudGV4dENvbG9yXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBib3JkZXJCb3R0b21Db2xvcjogdGhpcy5hY3RpdmUgPyB0aGlzLnJvb3RNZW51LmFjdGl2ZVRleHRDb2xvciA/IHRoaXMuYWN0aXZlVGV4dENvbG9yIDogJycgOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjb2xvcjogdGhpcy5hY3RpdmUgPyB0aGlzLmFjdGl2ZVRleHRDb2xvciA6IHRoaXMudGV4dENvbG9yXG4gICAgICB9O1xuICAgIH0sXG4gICAgaXNGaXJzdExldmVsOiBmdW5jdGlvbiBpc0ZpcnN0TGV2ZWwoKSB7XG4gICAgICB2YXIgaXNGaXJzdExldmVsID0gdHJ1ZTtcbiAgICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG4gICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudCAhPT0gdGhpcy5yb290TWVudSkge1xuICAgICAgICBpZiAoWydFbFN1Ym1lbnUnLCAnRWxNZW51SXRlbUdyb3VwJ10uaW5kZXhPZihwYXJlbnQuJG9wdGlvbnMuY29tcG9uZW50TmFtZSkgPiAtMSkge1xuICAgICAgICAgIGlzRmlyc3RMZXZlbCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNGaXJzdExldmVsO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUNvbGxhcHNlVG9nZ2xlOiBmdW5jdGlvbiBoYW5kbGVDb2xsYXBzZVRvZ2dsZSh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaW5pdFBvcHBlcigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kb0Rlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFkZEl0ZW06IGZ1bmN0aW9uIGFkZEl0ZW0oaXRlbSkge1xuICAgICAgdGhpcy4kc2V0KHRoaXMuaXRlbXMsIGl0ZW0uaW5kZXgsIGl0ZW0pO1xuICAgIH0sXG4gICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gcmVtb3ZlSXRlbShpdGVtKSB7XG4gICAgICBkZWxldGUgdGhpcy5pdGVtc1tpdGVtLmluZGV4XTtcbiAgICB9LFxuICAgIGFkZFN1Ym1lbnU6IGZ1bmN0aW9uIGFkZFN1Ym1lbnUoaXRlbSkge1xuICAgICAgdGhpcy4kc2V0KHRoaXMuc3VibWVudXMsIGl0ZW0uaW5kZXgsIGl0ZW0pO1xuICAgIH0sXG4gICAgcmVtb3ZlU3VibWVudTogZnVuY3Rpb24gcmVtb3ZlU3VibWVudShpdGVtKSB7XG4gICAgICBkZWxldGUgdGhpcy5zdWJtZW51c1tpdGVtLmluZGV4XTtcbiAgICB9LFxuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIHZhciByb290TWVudSA9IHRoaXMucm9vdE1lbnUsXG4gICAgICAgICAgZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xuXG4gICAgICBpZiAocm9vdE1lbnUubWVudVRyaWdnZXIgPT09ICdob3ZlcicgJiYgcm9vdE1lbnUubW9kZSA9PT0gJ2hvcml6b250YWwnIHx8IHJvb3RNZW51LmNvbGxhcHNlICYmIHJvb3RNZW51Lm1vZGUgPT09ICd2ZXJ0aWNhbCcgfHwgZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNwYXRjaCgnRWxNZW51JywgJ3N1Ym1lbnUtY2xpY2snLCB0aGlzKTtcbiAgICB9LFxuICAgIGhhbmRsZU1vdXNlZW50ZXI6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlZW50ZXIoZXZlbnQpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgc2hvd1RpbWVvdXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRoaXMuc2hvd1RpbWVvdXQ7XG5cblxuICAgICAgaWYgKCEoJ0FjdGl2ZVhPYmplY3QnIGluIHdpbmRvdykgJiYgZXZlbnQudHlwZSA9PT0gJ2ZvY3VzJyAmJiAhZXZlbnQucmVsYXRlZFRhcmdldCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgcm9vdE1lbnUgPSB0aGlzLnJvb3RNZW51LFxuICAgICAgICAgIGRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcblxuICAgICAgaWYgKHJvb3RNZW51Lm1lbnVUcmlnZ2VyID09PSAnY2xpY2snICYmIHJvb3RNZW51Lm1vZGUgPT09ICdob3Jpem9udGFsJyB8fCAhcm9vdE1lbnUuY29sbGFwc2UgJiYgcm9vdE1lbnUubW9kZSA9PT0gJ3ZlcnRpY2FsJyB8fCBkaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmRpc3BhdGNoKCdFbFN1Ym1lbnUnLCAnbW91c2UtZW50ZXItY2hpbGQnKTtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5yb290TWVudS5vcGVuTWVudShfdGhpczIuaW5kZXgsIF90aGlzMi5pbmRleFBhdGgpO1xuICAgICAgfSwgc2hvd1RpbWVvdXQpO1xuXG4gICAgICBpZiAodGhpcy5hcHBlbmRUb0JvZHkpIHtcbiAgICAgICAgdGhpcy4kcGFyZW50LiRlbC5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZWVudGVyJykpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlTW91c2VsZWF2ZTogZnVuY3Rpb24gaGFuZGxlTW91c2VsZWF2ZSgpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgZGVlcERpc3BhdGNoID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgICAgIHZhciByb290TWVudSA9IHRoaXMucm9vdE1lbnU7XG5cbiAgICAgIGlmIChyb290TWVudS5tZW51VHJpZ2dlciA9PT0gJ2NsaWNrJyAmJiByb290TWVudS5tb2RlID09PSAnaG9yaXpvbnRhbCcgfHwgIXJvb3RNZW51LmNvbGxhcHNlICYmIHJvb3RNZW51Lm1vZGUgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNwYXRjaCgnRWxTdWJtZW51JywgJ21vdXNlLWxlYXZlLWNoaWxkJyk7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAhX3RoaXMzLm1vdXNlSW5DaGlsZCAmJiBfdGhpczMucm9vdE1lbnUuY2xvc2VNZW51KF90aGlzMy5pbmRleCk7XG4gICAgICB9LCB0aGlzLmhpZGVUaW1lb3V0KTtcblxuICAgICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5ICYmIGRlZXBEaXNwYXRjaCkge1xuICAgICAgICBpZiAodGhpcy4kcGFyZW50LiRvcHRpb25zLm5hbWUgPT09ICdFbFN1Ym1lbnUnKSB7XG4gICAgICAgICAgdGhpcy4kcGFyZW50LmhhbmRsZU1vdXNlbGVhdmUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVRpdGxlTW91c2VlbnRlcjogZnVuY3Rpb24gaGFuZGxlVGl0bGVNb3VzZWVudGVyKCkge1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2hvcml6b250YWwnICYmICF0aGlzLnJvb3RNZW51LmJhY2tncm91bmRDb2xvcikgcmV0dXJuO1xuICAgICAgdmFyIHRpdGxlID0gdGhpcy4kcmVmc1snc3VibWVudS10aXRsZSddO1xuICAgICAgdGl0bGUgJiYgKHRpdGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMucm9vdE1lbnUuaG92ZXJCYWNrZ3JvdW5kKTtcbiAgICB9LFxuICAgIGhhbmRsZVRpdGxlTW91c2VsZWF2ZTogZnVuY3Rpb24gaGFuZGxlVGl0bGVNb3VzZWxlYXZlKCkge1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2hvcml6b250YWwnICYmICF0aGlzLnJvb3RNZW51LmJhY2tncm91bmRDb2xvcikgcmV0dXJuO1xuICAgICAgdmFyIHRpdGxlID0gdGhpcy4kcmVmc1snc3VibWVudS10aXRsZSddO1xuICAgICAgdGl0bGUgJiYgKHRpdGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMucm9vdE1lbnUuYmFja2dyb3VuZENvbG9yIHx8ICcnKTtcbiAgICB9LFxuICAgIHVwZGF0ZVBsYWNlbWVudDogZnVuY3Rpb24gdXBkYXRlUGxhY2VtZW50KCkge1xuICAgICAgdGhpcy5jdXJyZW50UGxhY2VtZW50ID0gdGhpcy5tb2RlID09PSAnaG9yaXpvbnRhbCcgJiYgdGhpcy5pc0ZpcnN0TGV2ZWwgPyAnYm90dG9tLXN0YXJ0JyA6ICdyaWdodC1zdGFydCc7XG4gICAgfSxcbiAgICBpbml0UG9wcGVyOiBmdW5jdGlvbiBpbml0UG9wcGVyKCkge1xuICAgICAgdGhpcy5yZWZlcmVuY2VFbG0gPSB0aGlzLiRlbDtcbiAgICAgIHRoaXMucG9wcGVyRWxtID0gdGhpcy4kcmVmcy5tZW51O1xuICAgICAgdGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICB0aGlzLiRvbigndG9nZ2xlLWNvbGxhcHNlJywgdGhpcy5oYW5kbGVDb2xsYXBzZVRvZ2dsZSk7XG4gICAgdGhpcy4kb24oJ21vdXNlLWVudGVyLWNoaWxkJywgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXM0Lm1vdXNlSW5DaGlsZCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQoX3RoaXM0LnRpbWVvdXQpO1xuICAgIH0pO1xuICAgIHRoaXMuJG9uKCdtb3VzZS1sZWF2ZS1jaGlsZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzNC5tb3VzZUluQ2hpbGQgPSBmYWxzZTtcbiAgICAgIGNsZWFyVGltZW91dChfdGhpczQudGltZW91dCk7XG4gICAgfSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5wYXJlbnRNZW51LmFkZFN1Ym1lbnUodGhpcyk7XG4gICAgdGhpcy5yb290TWVudS5hZGRTdWJtZW51KHRoaXMpO1xuICAgIHRoaXMuaW5pdFBvcHBlcigpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMucGFyZW50TWVudS5yZW1vdmVTdWJtZW51KHRoaXMpO1xuICAgIHRoaXMucm9vdE1lbnUucmVtb3ZlU3VibWVudSh0aGlzKTtcbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgdmFyIGFjdGl2ZSA9IHRoaXMuYWN0aXZlLFxuICAgICAgICBvcGVuZWQgPSB0aGlzLm9wZW5lZCxcbiAgICAgICAgcGFkZGluZ1N0eWxlID0gdGhpcy5wYWRkaW5nU3R5bGUsXG4gICAgICAgIHRpdGxlU3R5bGUgPSB0aGlzLnRpdGxlU3R5bGUsXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IHRoaXMuYmFja2dyb3VuZENvbG9yLFxuICAgICAgICByb290TWVudSA9IHRoaXMucm9vdE1lbnUsXG4gICAgICAgIGN1cnJlbnRQbGFjZW1lbnQgPSB0aGlzLmN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG1lbnVUcmFuc2l0aW9uTmFtZSA9IHRoaXMubWVudVRyYW5zaXRpb25OYW1lLFxuICAgICAgICBtb2RlID0gdGhpcy5tb2RlLFxuICAgICAgICBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIHBvcHBlckNsYXNzID0gdGhpcy5wb3BwZXJDbGFzcyxcbiAgICAgICAgJHNsb3RzID0gdGhpcy4kc2xvdHMsXG4gICAgICAgIGlzRmlyc3RMZXZlbCA9IHRoaXMuaXNGaXJzdExldmVsO1xuXG5cbiAgICB2YXIgcG9wdXBNZW51ID0gaChcbiAgICAgICd0cmFuc2l0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgYXR0cnM6IHsgbmFtZTogbWVudVRyYW5zaXRpb25OYW1lIH1cbiAgICAgIH0sXG4gICAgICBbaChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHtcbiAgICAgICAgICByZWY6ICdtZW51JyxcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuICAgICAgICAgICAgdmFsdWU6IG9wZW5lZFxuICAgICAgICAgIH1dLFxuXG4gICAgICAgICAgJ2NsYXNzJzogWydlbC1tZW51LS0nICsgbW9kZSwgcG9wcGVyQ2xhc3NdLFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAnbW91c2VlbnRlcic6IGZ1bmN0aW9uIG1vdXNlZW50ZXIoJGV2ZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiBfdGhpczUuaGFuZGxlTW91c2VlbnRlcigkZXZlbnQsIDEwMCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ21vdXNlbGVhdmUnOiBmdW5jdGlvbiBtb3VzZWxlYXZlKCkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXM1LmhhbmRsZU1vdXNlbGVhdmUodHJ1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2ZvY3VzJzogZnVuY3Rpb24gZm9jdXMoJGV2ZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiBfdGhpczUuaGFuZGxlTW91c2VlbnRlcigkZXZlbnQsIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbaChcbiAgICAgICAgICAndWwnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHJvbGU6ICdtZW51J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdjbGFzcyc6IFsnZWwtbWVudSBlbC1tZW51LS1wb3B1cCcsICdlbC1tZW51LS1wb3B1cC0nICsgY3VycmVudFBsYWNlbWVudF0sXG4gICAgICAgICAgICBzdHlsZTogeyBiYWNrZ3JvdW5kQ29sb3I6IHJvb3RNZW51LmJhY2tncm91bmRDb2xvciB8fCAnJyB9IH0sXG4gICAgICAgICAgWyRzbG90cy5kZWZhdWx0XVxuICAgICAgICApXVxuICAgICAgKV1cbiAgICApO1xuXG4gICAgdmFyIGlubGluZU1lbnUgPSBoKCdlbC1jb2xsYXBzZS10cmFuc2l0aW9uJywgW2goXG4gICAgICAndWwnLFxuICAgICAge1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHJvbGU6ICdtZW51J1xuICAgICAgICB9LFxuICAgICAgICAnY2xhc3MnOiAnZWwtbWVudSBlbC1tZW51LS1pbmxpbmUnLFxuICAgICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICAgIG5hbWU6ICdzaG93JyxcbiAgICAgICAgICB2YWx1ZTogb3BlbmVkXG4gICAgICAgIH1dLFxuXG4gICAgICAgIHN0eWxlOiB7IGJhY2tncm91bmRDb2xvcjogcm9vdE1lbnUuYmFja2dyb3VuZENvbG9yIHx8ICcnIH0gfSxcbiAgICAgIFskc2xvdHMuZGVmYXVsdF1cbiAgICApXSk7XG5cbiAgICB2YXIgc3VibWVudVRpdGxlSWNvbiA9IHJvb3RNZW51Lm1vZGUgPT09ICdob3Jpem9udGFsJyAmJiBpc0ZpcnN0TGV2ZWwgfHwgcm9vdE1lbnUubW9kZSA9PT0gJ3ZlcnRpY2FsJyAmJiAhcm9vdE1lbnUuY29sbGFwc2UgPyAnZWwtaWNvbi1hcnJvdy1kb3duJyA6ICdlbC1pY29uLWFycm93LXJpZ2h0JztcblxuICAgIHJldHVybiBoKFxuICAgICAgJ2xpJyxcbiAgICAgIHtcbiAgICAgICAgJ2NsYXNzJzoge1xuICAgICAgICAgICdlbC1zdWJtZW51JzogdHJ1ZSxcbiAgICAgICAgICAnaXMtYWN0aXZlJzogYWN0aXZlLFxuICAgICAgICAgICdpcy1vcGVuZWQnOiBvcGVuZWQsXG4gICAgICAgICAgJ2lzLWRpc2FibGVkJzogZGlzYWJsZWRcbiAgICAgICAgfSxcbiAgICAgICAgYXR0cnM6IHsgcm9sZTogJ21lbnVpdGVtJyxcbiAgICAgICAgICAnYXJpYS1oYXNwb3B1cCc6ICd0cnVlJyxcbiAgICAgICAgICAnYXJpYS1leHBhbmRlZCc6IG9wZW5lZFxuICAgICAgICB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgICdtb3VzZWVudGVyJzogdGhpcy5oYW5kbGVNb3VzZWVudGVyLFxuICAgICAgICAgICdtb3VzZWxlYXZlJzogZnVuY3Rpb24gbW91c2VsZWF2ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczUuaGFuZGxlTW91c2VsZWF2ZShmYWxzZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAnZm9jdXMnOiB0aGlzLmhhbmRsZU1vdXNlZW50ZXJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtoKFxuICAgICAgICAnZGl2JyxcbiAgICAgICAge1xuICAgICAgICAgICdjbGFzcyc6ICdlbC1zdWJtZW51X190aXRsZScsXG4gICAgICAgICAgcmVmOiAnc3VibWVudS10aXRsZScsXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgICdjbGljayc6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgICAgICAnbW91c2VlbnRlcic6IHRoaXMuaGFuZGxlVGl0bGVNb3VzZWVudGVyLFxuICAgICAgICAgICAgJ21vdXNlbGVhdmUnOiB0aGlzLmhhbmRsZVRpdGxlTW91c2VsZWF2ZVxuICAgICAgICAgIH0sXG5cbiAgICAgICAgICBzdHlsZTogW3BhZGRpbmdTdHlsZSwgdGl0bGVTdHlsZSwgeyBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvciB9XVxuICAgICAgICB9LFxuICAgICAgICBbJHNsb3RzLnRpdGxlLCBoKCdpJywgeyAnY2xhc3MnOiBbJ2VsLXN1Ym1lbnVfX2ljb24tYXJyb3cnLCBzdWJtZW51VGl0bGVJY29uXSB9KV1cbiAgICAgICksIHRoaXMuaXNNZW51UG9wdXAgPyBwb3B1cE1lbnUgOiBpbmxpbmVNZW51XVxuICAgICk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9tZW51L3NyYy9zdWJtZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfc3VibWVudXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChzdWJtZW51dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL21lbnUvc3JjL3N1Ym1lbnUudnVlXG52YXIgc3VibWVudV9yZW5kZXIsIHN1Ym1lbnVfc3RhdGljUmVuZGVyRm5zXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHN1Ym1lbnVfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfc3VibWVudXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgc3VibWVudV9yZW5kZXIsXG4gIHN1Ym1lbnVfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBzdWJtZW51X2FwaTsgfVxuc3VibWVudV9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL21lbnUvc3JjL3N1Ym1lbnUudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN1Ym1lbnUgPSAoc3VibWVudV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3N1Ym1lbnUvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3VibWVudS5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHN1Ym1lbnUubmFtZSwgc3VibWVudSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19zdWJtZW51ID0gKHN1Ym1lbnUpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9tZW51L3NyYy9tZW51LWl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJhNWRiZmVhJlxudmFyIG1lbnVfaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJhNWRiZmVhX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImxpXCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtbWVudS1pdGVtXCIsXG4gICAgICBjbGFzczoge1xuICAgICAgICBcImlzLWFjdGl2ZVwiOiBfdm0uYWN0aXZlLFxuICAgICAgICBcImlzLWRpc2FibGVkXCI6IF92bS5kaXNhYmxlZFxuICAgICAgfSxcbiAgICAgIHN0eWxlOiBbXG4gICAgICAgIF92bS5wYWRkaW5nU3R5bGUsXG4gICAgICAgIF92bS5pdGVtU3R5bGUsXG4gICAgICAgIHsgYmFja2dyb3VuZENvbG9yOiBfdm0uYmFja2dyb3VuZENvbG9yIH1cbiAgICAgIF0sXG4gICAgICBhdHRyczogeyByb2xlOiBcIm1lbnVpdGVtXCIsIHRhYmluZGV4OiBcIi0xXCIgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGNsaWNrOiBfdm0uaGFuZGxlQ2xpY2ssXG4gICAgICAgIG1vdXNlZW50ZXI6IF92bS5vbk1vdXNlRW50ZXIsXG4gICAgICAgIGZvY3VzOiBfdm0ub25Nb3VzZUVudGVyLFxuICAgICAgICBibHVyOiBfdm0ub25Nb3VzZUxlYXZlLFxuICAgICAgICBtb3VzZWxlYXZlOiBfdm0ub25Nb3VzZUxlYXZlXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfdm0ucGFyZW50TWVudS4kb3B0aW9ucy5jb21wb25lbnROYW1lID09PSBcIkVsTWVudVwiICYmXG4gICAgICBfdm0ucm9vdE1lbnUuY29sbGFwc2UgJiZcbiAgICAgIF92bS4kc2xvdHMudGl0bGVcbiAgICAgICAgPyBfYyhcImVsLXRvb2x0aXBcIiwgeyBhdHRyczogeyBlZmZlY3Q6IFwiZGFya1wiLCBwbGFjZW1lbnQ6IFwicmlnaHRcIiB9IH0sIFtcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7IGF0dHJzOiB7IHNsb3Q6IFwiY29udGVudFwiIH0sIHNsb3Q6IFwiY29udGVudFwiIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3QoXCJ0aXRsZVwiKV0sXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY1N0eWxlOiB7XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgICAgbGVmdDogXCIwXCIsXG4gICAgICAgICAgICAgICAgICB0b3A6IFwiMFwiLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICBcImJveC1zaXppbmdcIjogXCJib3JkZXItYm94XCIsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiBcIjAgMjBweFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICA6IFtfdm0uX3QoXCJkZWZhdWx0XCIpLCBfdm0uX3QoXCJ0aXRsZVwiKV1cbiAgICBdLFxuICAgIDJcbiAgKVxufVxudmFyIG1lbnVfaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJhNWRiZmVhX3N0YXRpY1JlbmRlckZucyA9IFtdXG5tZW51X2l0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8yYTVkYmZlYV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL21lbnUvc3JjL21lbnUtaXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmE1ZGJmZWEmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi90b29sdGlwXCJcbnZhciB0b29sdGlwXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpO1xudmFyIHRvb2x0aXBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4odG9vbHRpcF8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9tZW51L3NyYy9tZW51LWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1lbnVfaXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbE1lbnVJdGVtJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxNZW51SXRlbScsXG5cbiAgbWl4aW5zOiBbbWVudV9taXhpbiwgZW1pdHRlcl9kZWZhdWx0LmFdLFxuXG4gIGNvbXBvbmVudHM6IHsgRWxUb29sdGlwOiB0b29sdGlwX2RlZmF1bHQuYSB9LFxuXG4gIHByb3BzOiB7XG4gICAgaW5kZXg6IHtcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWwpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHZhbCA9PT0gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJvdXRlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgIGRpc2FibGVkOiBCb29sZWFuXG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgYWN0aXZlOiBmdW5jdGlvbiBhY3RpdmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmRleCA9PT0gdGhpcy5yb290TWVudS5hY3RpdmVJbmRleDtcbiAgICB9LFxuICAgIGhvdmVyQmFja2dyb3VuZDogZnVuY3Rpb24gaG92ZXJCYWNrZ3JvdW5kKCkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdE1lbnUuaG92ZXJCYWNrZ3JvdW5kO1xuICAgIH0sXG4gICAgYmFja2dyb3VuZENvbG9yOiBmdW5jdGlvbiBiYWNrZ3JvdW5kQ29sb3IoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb290TWVudS5iYWNrZ3JvdW5kQ29sb3IgfHwgJyc7XG4gICAgfSxcbiAgICBhY3RpdmVUZXh0Q29sb3I6IGZ1bmN0aW9uIGFjdGl2ZVRleHRDb2xvcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RNZW51LmFjdGl2ZVRleHRDb2xvciB8fCAnJztcbiAgICB9LFxuICAgIHRleHRDb2xvcjogZnVuY3Rpb24gdGV4dENvbG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdE1lbnUudGV4dENvbG9yIHx8ICcnO1xuICAgIH0sXG4gICAgbW9kZTogZnVuY3Rpb24gbW9kZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RNZW51Lm1vZGU7XG4gICAgfSxcbiAgICBpdGVtU3R5bGU6IGZ1bmN0aW9uIGl0ZW1TdHlsZSgpIHtcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgY29sb3I6IHRoaXMuYWN0aXZlID8gdGhpcy5hY3RpdmVUZXh0Q29sb3IgOiB0aGlzLnRleHRDb2xvclxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdob3Jpem9udGFsJyAmJiAhdGhpcy5pc05lc3RlZCkge1xuICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b21Db2xvciA9IHRoaXMuYWN0aXZlID8gdGhpcy5yb290TWVudS5hY3RpdmVUZXh0Q29sb3IgPyB0aGlzLmFjdGl2ZVRleHRDb2xvciA6ICcnIDogJ3RyYW5zcGFyZW50JztcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9LFxuICAgIGlzTmVzdGVkOiBmdW5jdGlvbiBpc05lc3RlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudE1lbnUgIT09IHRoaXMucm9vdE1lbnU7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgb25Nb3VzZUVudGVyOiBmdW5jdGlvbiBvbk1vdXNlRW50ZXIoKSB7XG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnaG9yaXpvbnRhbCcgJiYgIXRoaXMucm9vdE1lbnUuYmFja2dyb3VuZENvbG9yKSByZXR1cm47XG4gICAgICB0aGlzLiRlbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmhvdmVyQmFja2dyb3VuZDtcbiAgICB9LFxuICAgIG9uTW91c2VMZWF2ZTogZnVuY3Rpb24gb25Nb3VzZUxlYXZlKCkge1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2hvcml6b250YWwnICYmICF0aGlzLnJvb3RNZW51LmJhY2tncm91bmRDb2xvcikgcmV0dXJuO1xuICAgICAgdGhpcy4kZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgfSxcbiAgICBoYW5kbGVDbGljazogZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxNZW51JywgJ2l0ZW0tY2xpY2snLCB0aGlzKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2xpY2snLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5wYXJlbnRNZW51LmFkZEl0ZW0odGhpcyk7XG4gICAgdGhpcy5yb290TWVudS5hZGRJdGVtKHRoaXMpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMucGFyZW50TWVudS5yZW1vdmVJdGVtKHRoaXMpO1xuICAgIHRoaXMucm9vdE1lbnUucmVtb3ZlSXRlbSh0aGlzKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL21lbnUvc3JjL21lbnUtaXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX21lbnVfaXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChtZW51X2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVudS9zcmMvbWVudS1pdGVtLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIG1lbnVfaXRlbV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19tZW51X2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIG1lbnVfaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJhNWRiZmVhX3JlbmRlcixcbiAgbWVudV9pdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfMmE1ZGJmZWFfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBtZW51X2l0ZW1fYXBpOyB9XG5tZW51X2l0ZW1fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9tZW51L3NyYy9tZW51LWl0ZW0udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1lbnVfaXRlbSA9IChtZW51X2l0ZW1fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9tZW51LWl0ZW0vaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xubWVudV9pdGVtLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQobWVudV9pdGVtLm5hbWUsIG1lbnVfaXRlbSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19tZW51X2l0ZW0gPSAobWVudV9pdGVtKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvbWVudS9zcmMvbWVudS1pdGVtLWdyb3VwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NDNiN2JkYyZcbnZhciBtZW51X2l0ZW1fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF81NDNiN2JkY19yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJsaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLW1lbnUtaXRlbS1ncm91cFwiIH0sIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLW1lbnUtaXRlbS1ncm91cF9fdGl0bGVcIixcbiAgICAgICAgc3R5bGU6IHsgcGFkZGluZ0xlZnQ6IF92bS5sZXZlbFBhZGRpbmcgKyBcInB4XCIgfVxuICAgICAgfSxcbiAgICAgIFshX3ZtLiRzbG90cy50aXRsZSA/IFtfdm0uX3YoX3ZtLl9zKF92bS50aXRsZSkpXSA6IF92bS5fdChcInRpdGxlXCIpXSxcbiAgICAgIDJcbiAgICApLFxuICAgIF9jKFwidWxcIiwgW192bS5fdChcImRlZmF1bHRcIildLCAyKVxuICBdKVxufVxudmFyIG1lbnVfaXRlbV9ncm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU0M2I3YmRjX3N0YXRpY1JlbmRlckZucyA9IFtdXG5tZW51X2l0ZW1fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF81NDNiN2JkY19yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL21lbnUvc3JjL21lbnUtaXRlbS1ncm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTQzYjdiZGMmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL21lbnUvc3JjL21lbnUtaXRlbS1ncm91cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbWVudV9pdGVtX2dyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsTWVudUl0ZW1Hcm91cCcsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsTWVudUl0ZW1Hcm91cCcsXG5cbiAgaW5qZWN0OiBbJ3Jvb3RNZW51J10sXG4gIHByb3BzOiB7XG4gICAgdGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFkZGluZ0xlZnQ6IDIwXG4gICAgfTtcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGxldmVsUGFkZGluZzogZnVuY3Rpb24gbGV2ZWxQYWRkaW5nKCkge1xuICAgICAgdmFyIHBhZGRpbmcgPSAyMDtcbiAgICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG4gICAgICBpZiAodGhpcy5yb290TWVudS5jb2xsYXBzZSkgcmV0dXJuIDIwO1xuICAgICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQuJG9wdGlvbnMuY29tcG9uZW50TmFtZSAhPT0gJ0VsTWVudScpIHtcbiAgICAgICAgaWYgKHBhcmVudC4kb3B0aW9ucy5jb21wb25lbnROYW1lID09PSAnRWxTdWJtZW51Jykge1xuICAgICAgICAgIHBhZGRpbmcgKz0gMjA7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFkZGluZztcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9tZW51L3NyYy9tZW51LWl0ZW0tZ3JvdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19tZW51X2l0ZW1fZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAobWVudV9pdGVtX2dyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL21lbnUvc3JjL21lbnUtaXRlbS1ncm91cC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBtZW51X2l0ZW1fZ3JvdXBfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfbWVudV9pdGVtX2dyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtZW51X2l0ZW1fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF81NDNiN2JkY19yZW5kZXIsXG4gIG1lbnVfaXRlbV9ncm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU0M2I3YmRjX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgbWVudV9pdGVtX2dyb3VwX2FwaTsgfVxubWVudV9pdGVtX2dyb3VwX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvbWVudS9zcmMvbWVudS1pdGVtLWdyb3VwLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtZW51X2l0ZW1fZ3JvdXAgPSAobWVudV9pdGVtX2dyb3VwX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVudS1pdGVtLWdyb3VwL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbm1lbnVfaXRlbV9ncm91cC5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KG1lbnVfaXRlbV9ncm91cC5uYW1lLCBtZW51X2l0ZW1fZ3JvdXApO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfbWVudV9pdGVtX2dyb3VwID0gKG1lbnVfaXRlbV9ncm91cCk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2lucHV0L3NyYy9pbnB1dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzQzZGQ3NzQmXG52YXIgaW5wdXR2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDNkZDc3NF9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBjbGFzczogW1xuICAgICAgICBfdm0udHlwZSA9PT0gXCJ0ZXh0YXJlYVwiID8gXCJlbC10ZXh0YXJlYVwiIDogXCJlbC1pbnB1dFwiLFxuICAgICAgICBfdm0uaW5wdXRTaXplID8gXCJlbC1pbnB1dC0tXCIgKyBfdm0uaW5wdXRTaXplIDogXCJcIixcbiAgICAgICAge1xuICAgICAgICAgIFwiaXMtZGlzYWJsZWRcIjogX3ZtLmlucHV0RGlzYWJsZWQsXG4gICAgICAgICAgXCJpcy1leGNlZWRcIjogX3ZtLmlucHV0RXhjZWVkLFxuICAgICAgICAgIFwiZWwtaW5wdXQtZ3JvdXBcIjogX3ZtLiRzbG90cy5wcmVwZW5kIHx8IF92bS4kc2xvdHMuYXBwZW5kLFxuICAgICAgICAgIFwiZWwtaW5wdXQtZ3JvdXAtLWFwcGVuZFwiOiBfdm0uJHNsb3RzLmFwcGVuZCxcbiAgICAgICAgICBcImVsLWlucHV0LWdyb3VwLS1wcmVwZW5kXCI6IF92bS4kc2xvdHMucHJlcGVuZCxcbiAgICAgICAgICBcImVsLWlucHV0LS1wcmVmaXhcIjogX3ZtLiRzbG90cy5wcmVmaXggfHwgX3ZtLnByZWZpeEljb24sXG4gICAgICAgICAgXCJlbC1pbnB1dC0tc3VmZml4XCI6XG4gICAgICAgICAgICBfdm0uJHNsb3RzLnN1ZmZpeCB8fFxuICAgICAgICAgICAgX3ZtLnN1ZmZpeEljb24gfHxcbiAgICAgICAgICAgIF92bS5jbGVhcmFibGUgfHxcbiAgICAgICAgICAgIF92bS5zaG93UGFzc3dvcmRcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIG9uOiB7XG4gICAgICAgIG1vdXNlZW50ZXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIF92bS5ob3ZlcmluZyA9IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLmhvdmVyaW5nID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLnR5cGUgIT09IFwidGV4dGFyZWFcIlxuICAgICAgICA/IFtcbiAgICAgICAgICAgIF92bS4kc2xvdHMucHJlcGVuZFxuICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXQtZ3JvdXBfX3ByZXBlbmRcIiB9LFxuICAgICAgICAgICAgICAgICAgW192bS5fdChcInByZXBlbmRcIildLFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS50eXBlICE9PSBcInRleHRhcmVhXCJcbiAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIixcbiAgICAgICAgICAgICAgICAgIF92bS5fYihcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWlucHV0X19pbm5lclwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleDogX3ZtLnRhYmluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogX3ZtLnNob3dQYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IF92bS5wYXNzd29yZFZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0udHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uaW5wdXREaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5OiBfdm0ucmVhZG9ubHksXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IF92bS5hdXRvQ29tcGxldGUgfHwgX3ZtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfdm0ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbnN0YXJ0OiBfdm0uaGFuZGxlQ29tcG9zaXRpb25TdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0aW9udXBkYXRlOiBfdm0uaGFuZGxlQ29tcG9zaXRpb25VcGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbmVuZDogX3ZtLmhhbmRsZUNvbXBvc2l0aW9uRW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IF92bS5oYW5kbGVJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOiBfdm0uaGFuZGxlRm9jdXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBibHVyOiBfdm0uaGFuZGxlQmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICBfdm0uJGF0dHJzLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS4kc2xvdHMucHJlZml4IHx8IF92bS5wcmVmaXhJY29uXG4gICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXRfX3ByZWZpeFwiIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdChcInByZWZpeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnByZWZpeEljb25cbiAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWlucHV0X19pY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBfdm0ucHJlZml4SWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS5nZXRTdWZmaXhWaXNpYmxlKClcbiAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1pbnB1dF9fc3VmZml4XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWlucHV0X19zdWZmaXgtaW5uZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgIV92bS5zaG93Q2xlYXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAhX3ZtLnNob3dQd2RWaXNpYmxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIV92bS5pc1dvcmRMaW1pdFZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdChcInN1ZmZpeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc3VmZml4SWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWlucHV0X19pY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IF92bS5zdWZmaXhJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dDbGVhclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC1pbnB1dF9faWNvbiBlbC1pY29uLWNpcmNsZS1jbG9zZSBlbC1pbnB1dF9fY2xlYXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2Vkb3duOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogX3ZtLmNsZWFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd1B3ZFZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtaW5wdXRfX2ljb24gZWwtaWNvbi12aWV3IGVsLWlucHV0X19jbGVhclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGFuZGxlUGFzc3dvcmRWaXNpYmxlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLmlzV29yZExpbWl0VmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1pbnB1dF9fY291bnRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXRfX2NvdW50LWlubmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS50ZXh0TGVuZ3RoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLnVwcGVyTGltaXQpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfdm0udmFsaWRhdGVTdGF0ZVxuICAgICAgICAgICAgICAgICAgICA/IF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pbnB1dF9faWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFtcImVsLWlucHV0X192YWxpZGF0ZUljb25cIiwgX3ZtLnZhbGlkYXRlSWNvbl1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS4kc2xvdHMuYXBwZW5kXG4gICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1pbnB1dC1ncm91cF9fYXBwZW5kXCIgfSxcbiAgICAgICAgICAgICAgICAgIFtfdm0uX3QoXCJhcHBlbmRcIildLFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgIF1cbiAgICAgICAgOiBfYyhcbiAgICAgICAgICAgIFwidGV4dGFyZWFcIixcbiAgICAgICAgICAgIF92bS5fYihcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZjogXCJ0ZXh0YXJlYVwiLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRleHRhcmVhX19pbm5lclwiLFxuICAgICAgICAgICAgICAgIHN0eWxlOiBfdm0udGV4dGFyZWFTdHlsZSxcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg6IF92bS50YWJpbmRleCxcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uaW5wdXREaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgIHJlYWRvbmx5OiBfdm0ucmVhZG9ubHksXG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IF92bS5hdXRvQ29tcGxldGUgfHwgX3ZtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfdm0ubGFiZWxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbnN0YXJ0OiBfdm0uaGFuZGxlQ29tcG9zaXRpb25TdGFydCxcbiAgICAgICAgICAgICAgICAgIGNvbXBvc2l0aW9udXBkYXRlOiBfdm0uaGFuZGxlQ29tcG9zaXRpb25VcGRhdGUsXG4gICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbmVuZDogX3ZtLmhhbmRsZUNvbXBvc2l0aW9uRW5kLFxuICAgICAgICAgICAgICAgICAgaW5wdXQ6IF92bS5oYW5kbGVJbnB1dCxcbiAgICAgICAgICAgICAgICAgIGZvY3VzOiBfdm0uaGFuZGxlRm9jdXMsXG4gICAgICAgICAgICAgICAgICBibHVyOiBfdm0uaGFuZGxlQmx1cixcbiAgICAgICAgICAgICAgICAgIGNoYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXCJ0ZXh0YXJlYVwiLFxuICAgICAgICAgICAgICBfdm0uJGF0dHJzLFxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICBfdm0uaXNXb3JkTGltaXRWaXNpYmxlICYmIF92bS50eXBlID09PSBcInRleHRhcmVhXCJcbiAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1pbnB1dF9fY291bnRcIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50ZXh0TGVuZ3RoKSArIFwiL1wiICsgX3ZtLl9zKF92bS51cHBlckxpbWl0KSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpXG4gICAgXSxcbiAgICAyXG4gIClcbn1cbnZhciBpbnB1dHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM0M2RkNzc0X3N0YXRpY1JlbmRlckZucyA9IFtdXG5pbnB1dHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM0M2RkNzc0X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvaW5wdXQvc3JjL2lucHV0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDNkZDc3NCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbnB1dC9zcmMvY2FsY1RleHRhcmVhSGVpZ2h0LmpzXG52YXIgaGlkZGVuVGV4dGFyZWEgPSB2b2lkIDA7XG5cbnZhciBISURERU5fU1RZTEUgPSAnXFxuICBoZWlnaHQ6MCAhaW1wb3J0YW50O1xcbiAgdmlzaWJpbGl0eTpoaWRkZW4gIWltcG9ydGFudDtcXG4gIG92ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50O1xcbiAgcG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6LTEwMDAgIWltcG9ydGFudDtcXG4gIHRvcDowICFpbXBvcnRhbnQ7XFxuICByaWdodDowICFpbXBvcnRhbnRcXG4nO1xuXG52YXIgQ09OVEVYVF9TVFlMRSA9IFsnbGV0dGVyLXNwYWNpbmcnLCAnbGluZS1oZWlnaHQnLCAncGFkZGluZy10b3AnLCAncGFkZGluZy1ib3R0b20nLCAnZm9udC1mYW1pbHknLCAnZm9udC13ZWlnaHQnLCAnZm9udC1zaXplJywgJ3RleHQtcmVuZGVyaW5nJywgJ3RleHQtdHJhbnNmb3JtJywgJ3dpZHRoJywgJ3RleHQtaW5kZW50JywgJ3BhZGRpbmctbGVmdCcsICdwYWRkaW5nLXJpZ2h0JywgJ2JvcmRlci13aWR0aCcsICdib3gtc2l6aW5nJ107XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZU5vZGVTdHlsaW5nKHRhcmdldEVsZW1lbnQpIHtcbiAgdmFyIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0RWxlbWVudCk7XG5cbiAgdmFyIGJveFNpemluZyA9IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JveC1zaXppbmcnKTtcblxuICB2YXIgcGFkZGluZ1NpemUgPSBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJykpICsgcGFyc2VGbG9hdChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpKTtcblxuICB2YXIgYm9yZGVyU2l6ZSA9IHBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpKSArIHBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXRvcC13aWR0aCcpKTtcblxuICB2YXIgY29udGV4dFN0eWxlID0gQ09OVEVYVF9TVFlMRS5tYXAoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gbmFtZSArICc6JyArIHN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSk7XG4gIH0pLmpvaW4oJzsnKTtcblxuICByZXR1cm4geyBjb250ZXh0U3R5bGU6IGNvbnRleHRTdHlsZSwgcGFkZGluZ1NpemU6IHBhZGRpbmdTaXplLCBib3JkZXJTaXplOiBib3JkZXJTaXplLCBib3hTaXppbmc6IGJveFNpemluZyB9O1xufVxuXG5mdW5jdGlvbiBjYWxjVGV4dGFyZWFIZWlnaHQodGFyZ2V0RWxlbWVudCkge1xuICB2YXIgbWluUm93cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMTtcbiAgdmFyIG1heFJvd3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IG51bGw7XG5cbiAgaWYgKCFoaWRkZW5UZXh0YXJlYSkge1xuICAgIGhpZGRlblRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhpZGRlblRleHRhcmVhKTtcbiAgfVxuXG4gIHZhciBfY2FsY3VsYXRlTm9kZVN0eWxpbmcgPSBjYWxjdWxhdGVOb2RlU3R5bGluZyh0YXJnZXRFbGVtZW50KSxcbiAgICAgIHBhZGRpbmdTaXplID0gX2NhbGN1bGF0ZU5vZGVTdHlsaW5nLnBhZGRpbmdTaXplLFxuICAgICAgYm9yZGVyU2l6ZSA9IF9jYWxjdWxhdGVOb2RlU3R5bGluZy5ib3JkZXJTaXplLFxuICAgICAgYm94U2l6aW5nID0gX2NhbGN1bGF0ZU5vZGVTdHlsaW5nLmJveFNpemluZyxcbiAgICAgIGNvbnRleHRTdHlsZSA9IF9jYWxjdWxhdGVOb2RlU3R5bGluZy5jb250ZXh0U3R5bGU7XG5cbiAgaGlkZGVuVGV4dGFyZWEuc2V0QXR0cmlidXRlKCdzdHlsZScsIGNvbnRleHRTdHlsZSArICc7JyArIEhJRERFTl9TVFlMRSk7XG4gIGhpZGRlblRleHRhcmVhLnZhbHVlID0gdGFyZ2V0RWxlbWVudC52YWx1ZSB8fCB0YXJnZXRFbGVtZW50LnBsYWNlaG9sZGVyIHx8ICcnO1xuXG4gIHZhciBoZWlnaHQgPSBoaWRkZW5UZXh0YXJlYS5zY3JvbGxIZWlnaHQ7XG4gIHZhciByZXN1bHQgPSB7fTtcblxuICBpZiAoYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICBoZWlnaHQgPSBoZWlnaHQgKyBib3JkZXJTaXplO1xuICB9IGVsc2UgaWYgKGJveFNpemluZyA9PT0gJ2NvbnRlbnQtYm94Jykge1xuICAgIGhlaWdodCA9IGhlaWdodCAtIHBhZGRpbmdTaXplO1xuICB9XG5cbiAgaGlkZGVuVGV4dGFyZWEudmFsdWUgPSAnJztcbiAgdmFyIHNpbmdsZVJvd0hlaWdodCA9IGhpZGRlblRleHRhcmVhLnNjcm9sbEhlaWdodCAtIHBhZGRpbmdTaXplO1xuXG4gIGlmIChtaW5Sb3dzICE9PSBudWxsKSB7XG4gICAgdmFyIG1pbkhlaWdodCA9IHNpbmdsZVJvd0hlaWdodCAqIG1pblJvd3M7XG4gICAgaWYgKGJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgICBtaW5IZWlnaHQgPSBtaW5IZWlnaHQgKyBwYWRkaW5nU2l6ZSArIGJvcmRlclNpemU7XG4gICAgfVxuICAgIGhlaWdodCA9IE1hdGgubWF4KG1pbkhlaWdodCwgaGVpZ2h0KTtcbiAgICByZXN1bHQubWluSGVpZ2h0ID0gbWluSGVpZ2h0ICsgJ3B4JztcbiAgfVxuICBpZiAobWF4Um93cyAhPT0gbnVsbCkge1xuICAgIHZhciBtYXhIZWlnaHQgPSBzaW5nbGVSb3dIZWlnaHQgKiBtYXhSb3dzO1xuICAgIGlmIChib3hTaXppbmcgPT09ICdib3JkZXItYm94Jykge1xuICAgICAgbWF4SGVpZ2h0ID0gbWF4SGVpZ2h0ICsgcGFkZGluZ1NpemUgKyBib3JkZXJTaXplO1xuICAgIH1cbiAgICBoZWlnaHQgPSBNYXRoLm1pbihtYXhIZWlnaHQsIGhlaWdodCk7XG4gIH1cbiAgcmVzdWx0LmhlaWdodCA9IGhlaWdodCArICdweCc7XG4gIGhpZGRlblRleHRhcmVhLnBhcmVudE5vZGUgJiYgaGlkZGVuVGV4dGFyZWEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoaWRkZW5UZXh0YXJlYSk7XG4gIGhpZGRlblRleHRhcmVhID0gbnVsbDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvbWVyZ2VcIlxudmFyIG1lcmdlXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG52YXIgbWVyZ2VfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4obWVyZ2VfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3NoYXJlZFwiXG52YXIgc2hhcmVkXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9pbnB1dC9zcmMvaW5wdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgaW5wdXR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxJbnB1dCcsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsSW5wdXQnLFxuXG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hLCBtaWdyYXRpbmdfZGVmYXVsdC5hXSxcblxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuXG4gIGluamVjdDoge1xuICAgIGVsRm9ybToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGVsRm9ybUl0ZW06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHRhcmVhQ2FsY1N0eWxlOiB7fSxcbiAgICAgIGhvdmVyaW5nOiBmYWxzZSxcbiAgICAgIGZvY3VzZWQ6IGZhbHNlLFxuICAgICAgaXNDb21wb3Npbmc6IGZhbHNlLFxuICAgICAgcGFzc3dvcmRWaXNpYmxlOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICBwcm9wczoge1xuICAgIHZhbHVlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgIHNpemU6IFN0cmluZyxcbiAgICByZXNpemU6IFN0cmluZyxcbiAgICBmb3JtOiBTdHJpbmcsXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgcmVhZG9ubHk6IEJvb2xlYW4sXG4gICAgdHlwZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3RleHQnXG4gICAgfSxcbiAgICBhdXRvc2l6ZToge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgYXV0b2NvbXBsZXRlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnb2ZmJ1xuICAgIH0sXG4gICAgLyoqIEBEZXByZWNhdGVkIGluIG5leHQgbWFqb3IgdmVyc2lvbiAqL1xuICAgIGF1dG9Db21wbGV0ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgICBmYWxzZSAmJiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZUV2ZW50OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgc3VmZml4SWNvbjogU3RyaW5nLFxuICAgIHByZWZpeEljb246IFN0cmluZyxcbiAgICBsYWJlbDogU3RyaW5nLFxuICAgIGNsZWFyYWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBzaG93UGFzc3dvcmQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc2hvd1dvcmRMaW1pdDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB0YWJpbmRleDogU3RyaW5nXG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBfZWxGb3JtSXRlbVNpemU6IGZ1bmN0aW9uIF9lbEZvcm1JdGVtU2l6ZSgpIHtcbiAgICAgIHJldHVybiAodGhpcy5lbEZvcm1JdGVtIHx8IHt9KS5lbEZvcm1JdGVtU2l6ZTtcbiAgICB9LFxuICAgIHZhbGlkYXRlU3RhdGU6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbEZvcm1JdGVtID8gdGhpcy5lbEZvcm1JdGVtLnZhbGlkYXRlU3RhdGUgOiAnJztcbiAgICB9LFxuICAgIG5lZWRTdGF0dXNJY29uOiBmdW5jdGlvbiBuZWVkU3RhdHVzSWNvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmVsRm9ybSA/IHRoaXMuZWxGb3JtLnN0YXR1c0ljb24gOiBmYWxzZTtcbiAgICB9LFxuICAgIHZhbGlkYXRlSWNvbjogZnVuY3Rpb24gdmFsaWRhdGVJY29uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWRhdGluZzogJ2VsLWljb24tbG9hZGluZycsXG4gICAgICAgIHN1Y2Nlc3M6ICdlbC1pY29uLWNpcmNsZS1jaGVjaycsXG4gICAgICAgIGVycm9yOiAnZWwtaWNvbi1jaXJjbGUtY2xvc2UnXG4gICAgICB9W3RoaXMudmFsaWRhdGVTdGF0ZV07XG4gICAgfSxcbiAgICB0ZXh0YXJlYVN0eWxlOiBmdW5jdGlvbiB0ZXh0YXJlYVN0eWxlKCkge1xuICAgICAgcmV0dXJuIG1lcmdlX2RlZmF1bHQoKSh7fSwgdGhpcy50ZXh0YXJlYUNhbGNTdHlsZSwgeyByZXNpemU6IHRoaXMucmVzaXplIH0pO1xuICAgIH0sXG4gICAgaW5wdXRTaXplOiBmdW5jdGlvbiBpbnB1dFNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaXplIHx8IHRoaXMuX2VsRm9ybUl0ZW1TaXplIHx8ICh0aGlzLiRFTEVNRU5UIHx8IHt9KS5zaXplO1xuICAgIH0sXG4gICAgaW5wdXREaXNhYmxlZDogZnVuY3Rpb24gaW5wdXREaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLmVsRm9ybSB8fCB7fSkuZGlzYWJsZWQ7XG4gICAgfSxcbiAgICBuYXRpdmVJbnB1dFZhbHVlOiBmdW5jdGlvbiBuYXRpdmVJbnB1dFZhbHVlKCkge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG51bGwgfHwgdGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkID8gJycgOiBTdHJpbmcodGhpcy52YWx1ZSk7XG4gICAgfSxcbiAgICBzaG93Q2xlYXI6IGZ1bmN0aW9uIHNob3dDbGVhcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsZWFyYWJsZSAmJiAhdGhpcy5pbnB1dERpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5ICYmIHRoaXMubmF0aXZlSW5wdXRWYWx1ZSAmJiAodGhpcy5mb2N1c2VkIHx8IHRoaXMuaG92ZXJpbmcpO1xuICAgIH0sXG4gICAgc2hvd1B3ZFZpc2libGU6IGZ1bmN0aW9uIHNob3dQd2RWaXNpYmxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd1Bhc3N3b3JkICYmICF0aGlzLmlucHV0RGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkgJiYgKCEhdGhpcy5uYXRpdmVJbnB1dFZhbHVlIHx8IHRoaXMuZm9jdXNlZCk7XG4gICAgfSxcbiAgICBpc1dvcmRMaW1pdFZpc2libGU6IGZ1bmN0aW9uIGlzV29yZExpbWl0VmlzaWJsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3dXb3JkTGltaXQgJiYgdGhpcy4kYXR0cnMubWF4bGVuZ3RoICYmICh0aGlzLnR5cGUgPT09ICd0ZXh0JyB8fCB0aGlzLnR5cGUgPT09ICd0ZXh0YXJlYScpICYmICF0aGlzLmlucHV0RGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkgJiYgIXRoaXMuc2hvd1Bhc3N3b3JkO1xuICAgIH0sXG4gICAgdXBwZXJMaW1pdDogZnVuY3Rpb24gdXBwZXJMaW1pdCgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRhdHRycy5tYXhsZW5ndGg7XG4gICAgfSxcbiAgICB0ZXh0TGVuZ3RoOiBmdW5jdGlvbiB0ZXh0TGVuZ3RoKCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMudmFsdWUpLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICh0aGlzLnZhbHVlIHx8ICcnKS5sZW5ndGg7XG4gICAgfSxcbiAgICBpbnB1dEV4Y2VlZDogZnVuY3Rpb24gaW5wdXRFeGNlZWQoKSB7XG4gICAgICAvLyBzaG93IGV4Y2VlZCBzdHlsZSBpZiBsZW5ndGggb2YgaW5pdGlhbCB2YWx1ZSBncmVhdGVyIHRoZW4gbWF4bGVuZ3RoXG4gICAgICByZXR1cm4gdGhpcy5pc1dvcmRMaW1pdFZpc2libGUgJiYgdGhpcy50ZXh0TGVuZ3RoID4gdGhpcy51cHBlckxpbWl0O1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSh2YWwpIHtcbiAgICAgIHRoaXMuJG5leHRUaWNrKHRoaXMucmVzaXplVGV4dGFyZWEpO1xuICAgICAgaWYgKHRoaXMudmFsaWRhdGVFdmVudCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKCdFbEZvcm1JdGVtJywgJ2VsLmZvcm0uY2hhbmdlJywgW3ZhbF0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBuYXRpdmUgaW5wdXQgdmFsdWUgaXMgc2V0IGV4cGxpY2l0bHlcbiAgICAvLyBkbyBub3QgdXNlIHYtbW9kZWwgLyA6dmFsdWUgaW4gdGVtcGxhdGVcbiAgICAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9FbGVtZUZFL2VsZW1lbnQvaXNzdWVzLzE0NTIxXG4gICAgbmF0aXZlSW5wdXRWYWx1ZTogZnVuY3Rpb24gbmF0aXZlSW5wdXRWYWx1ZSgpIHtcbiAgICAgIHRoaXMuc2V0TmF0aXZlSW5wdXRWYWx1ZSgpO1xuICAgIH0sXG5cbiAgICAvLyB3aGVuIGNoYW5nZSBiZXR3ZWVuIDxpbnB1dD4gYW5kIDx0ZXh0YXJlYT4sXG4gICAgLy8gdXBkYXRlIERPTSBkZXBlbmRlbnQgdmFsdWUgYW5kIHN0eWxlc1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9FbGVtZUZFL2VsZW1lbnQvaXNzdWVzLzE0ODU3XG4gICAgdHlwZTogZnVuY3Rpb24gdHlwZSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMuc2V0TmF0aXZlSW5wdXRWYWx1ZSgpO1xuICAgICAgICBfdGhpcy5yZXNpemVUZXh0YXJlYSgpO1xuICAgICAgICBfdGhpcy51cGRhdGVJY29uT2Zmc2V0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGZvY3VzOiBmdW5jdGlvbiBmb2N1cygpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXQoKS5mb2N1cygpO1xuICAgIH0sXG4gICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXQoKS5ibHVyKCk7XG4gICAgfSxcbiAgICBnZXRNaWdyYXRpbmdDb25maWc6IGZ1bmN0aW9uIGdldE1pZ3JhdGluZ0NvbmZpZygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgJ2ljb24nOiAnaWNvbiBpcyByZW1vdmVkLCB1c2Ugc3VmZml4LWljb24gLyBwcmVmaXgtaWNvbiBpbnN0ZWFkLicsXG4gICAgICAgICAgJ29uLWljb24tY2xpY2snOiAnb24taWNvbi1jbGljayBpcyByZW1vdmVkLidcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgJ2NsaWNrJzogJ2NsaWNrIGlzIHJlbW92ZWQuJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sXG4gICAgaGFuZGxlQmx1cjogZnVuY3Rpb24gaGFuZGxlQmx1cihldmVudCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLiRlbWl0KCdibHVyJywgZXZlbnQpO1xuICAgICAgaWYgKHRoaXMudmFsaWRhdGVFdmVudCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKCdFbEZvcm1JdGVtJywgJ2VsLmZvcm0uYmx1cicsIFt0aGlzLnZhbHVlXSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZWxlY3Q6IGZ1bmN0aW9uIHNlbGVjdCgpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXQoKS5zZWxlY3QoKTtcbiAgICB9LFxuICAgIHJlc2l6ZVRleHRhcmVhOiBmdW5jdGlvbiByZXNpemVUZXh0YXJlYSgpIHtcbiAgICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuICAgICAgdmFyIGF1dG9zaXplID0gdGhpcy5hdXRvc2l6ZSxcbiAgICAgICAgICB0eXBlID0gdGhpcy50eXBlO1xuXG4gICAgICBpZiAodHlwZSAhPT0gJ3RleHRhcmVhJykgcmV0dXJuO1xuICAgICAgaWYgKCFhdXRvc2l6ZSkge1xuICAgICAgICB0aGlzLnRleHRhcmVhQ2FsY1N0eWxlID0ge1xuICAgICAgICAgIG1pbkhlaWdodDogY2FsY1RleHRhcmVhSGVpZ2h0KHRoaXMuJHJlZnMudGV4dGFyZWEpLm1pbkhlaWdodFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgbWluUm93cyA9IGF1dG9zaXplLm1pblJvd3M7XG4gICAgICB2YXIgbWF4Um93cyA9IGF1dG9zaXplLm1heFJvd3M7XG5cbiAgICAgIHRoaXMudGV4dGFyZWFDYWxjU3R5bGUgPSBjYWxjVGV4dGFyZWFIZWlnaHQodGhpcy4kcmVmcy50ZXh0YXJlYSwgbWluUm93cywgbWF4Um93cyk7XG4gICAgfSxcbiAgICBzZXROYXRpdmVJbnB1dFZhbHVlOiBmdW5jdGlvbiBzZXROYXRpdmVJbnB1dFZhbHVlKCkge1xuICAgICAgdmFyIGlucHV0ID0gdGhpcy5nZXRJbnB1dCgpO1xuICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuO1xuICAgICAgaWYgKGlucHV0LnZhbHVlID09PSB0aGlzLm5hdGl2ZUlucHV0VmFsdWUpIHJldHVybjtcbiAgICAgIGlucHV0LnZhbHVlID0gdGhpcy5uYXRpdmVJbnB1dFZhbHVlO1xuICAgIH0sXG4gICAgaGFuZGxlRm9jdXM6IGZ1bmN0aW9uIGhhbmRsZUZvY3VzKGV2ZW50KSB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy4kZW1pdCgnZm9jdXMnLCBldmVudCk7XG4gICAgfSxcbiAgICBoYW5kbGVDb21wb3NpdGlvblN0YXJ0OiBmdW5jdGlvbiBoYW5kbGVDb21wb3NpdGlvblN0YXJ0KGV2ZW50KSB7XG4gICAgICB0aGlzLiRlbWl0KCdjb21wb3NpdGlvbnN0YXJ0JywgZXZlbnQpO1xuICAgICAgdGhpcy5pc0NvbXBvc2luZyA9IHRydWU7XG4gICAgfSxcbiAgICBoYW5kbGVDb21wb3NpdGlvblVwZGF0ZTogZnVuY3Rpb24gaGFuZGxlQ29tcG9zaXRpb25VcGRhdGUoZXZlbnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NvbXBvc2l0aW9udXBkYXRlJywgZXZlbnQpO1xuICAgICAgdmFyIHRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICB2YXIgbGFzdENoYXJhY3RlciA9IHRleHRbdGV4dC5sZW5ndGggLSAxXSB8fCAnJztcbiAgICAgIHRoaXMuaXNDb21wb3NpbmcgPSAhT2JqZWN0KHNoYXJlZF9bXCJpc0tvcmVhblwiXSkobGFzdENoYXJhY3Rlcik7XG4gICAgfSxcbiAgICBoYW5kbGVDb21wb3NpdGlvbkVuZDogZnVuY3Rpb24gaGFuZGxlQ29tcG9zaXRpb25FbmQoZXZlbnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NvbXBvc2l0aW9uZW5kJywgZXZlbnQpO1xuICAgICAgaWYgKHRoaXMuaXNDb21wb3NpbmcpIHtcbiAgICAgICAgdGhpcy5pc0NvbXBvc2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhhbmRsZUlucHV0KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUlucHV0OiBmdW5jdGlvbiBoYW5kbGVJbnB1dChldmVudCkge1xuICAgICAgLy8gc2hvdWxkIG5vdCBlbWl0IGlucHV0IGR1cmluZyBjb21wb3NpdGlvblxuICAgICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vRWxlbWVGRS9lbGVtZW50L2lzc3Vlcy8xMDUxNlxuICAgICAgaWYgKHRoaXMuaXNDb21wb3NpbmcpIHJldHVybjtcblxuICAgICAgLy8gaGFjayBmb3IgaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9pc3N1ZXMvODU0OFxuICAgICAgLy8gc2hvdWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgd2hlbiB3ZSBkb24ndCBzdXBwb3J0IElFXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSB0aGlzLm5hdGl2ZUlucHV0VmFsdWUpIHJldHVybjtcblxuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBldmVudC50YXJnZXQudmFsdWUpO1xuXG4gICAgICAvLyBlbnN1cmUgbmF0aXZlIGlucHV0IHZhbHVlIGlzIGNvbnRyb2xsZWRcbiAgICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9pc3N1ZXMvMTI4NTBcbiAgICAgIHRoaXMuJG5leHRUaWNrKHRoaXMuc2V0TmF0aXZlSW5wdXRWYWx1ZSk7XG4gICAgfSxcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldmVudCkge1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB9LFxuICAgIGNhbGNJY29uT2Zmc2V0OiBmdW5jdGlvbiBjYWxjSWNvbk9mZnNldChwbGFjZSkge1xuICAgICAgdmFyIGVsTGlzdCA9IFtdLnNsaWNlLmNhbGwodGhpcy4kZWwucXVlcnlTZWxlY3RvckFsbCgnLmVsLWlucHV0X18nICsgcGxhY2UpIHx8IFtdKTtcbiAgICAgIGlmICghZWxMaXN0Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgdmFyIGVsID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChlbExpc3RbaV0ucGFyZW50Tm9kZSA9PT0gdGhpcy4kZWwpIHtcbiAgICAgICAgICBlbCA9IGVsTGlzdFtpXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgICAgdmFyIHBlbmRhbnRNYXAgPSB7XG4gICAgICAgIHN1ZmZpeDogJ2FwcGVuZCcsXG4gICAgICAgIHByZWZpeDogJ3ByZXBlbmQnXG4gICAgICB9O1xuXG4gICAgICB2YXIgcGVuZGFudCA9IHBlbmRhbnRNYXBbcGxhY2VdO1xuICAgICAgaWYgKHRoaXMuJHNsb3RzW3BlbmRhbnRdKSB7XG4gICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKCcgKyAocGxhY2UgPT09ICdzdWZmaXgnID8gJy0nIDogJycpICsgdGhpcy4kZWwucXVlcnlTZWxlY3RvcignLmVsLWlucHV0LWdyb3VwX18nICsgcGVuZGFudCkub2Zmc2V0V2lkdGggKyAncHgpJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHVwZGF0ZUljb25PZmZzZXQ6IGZ1bmN0aW9uIHVwZGF0ZUljb25PZmZzZXQoKSB7XG4gICAgICB0aGlzLmNhbGNJY29uT2Zmc2V0KCdwcmVmaXgnKTtcbiAgICAgIHRoaXMuY2FsY0ljb25PZmZzZXQoJ3N1ZmZpeCcpO1xuICAgIH0sXG4gICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCAnJyk7XG4gICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCAnJyk7XG4gICAgICB0aGlzLiRlbWl0KCdjbGVhcicpO1xuICAgIH0sXG4gICAgaGFuZGxlUGFzc3dvcmRWaXNpYmxlOiBmdW5jdGlvbiBoYW5kbGVQYXNzd29yZFZpc2libGUoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy5wYXNzd29yZFZpc2libGUgPSAhdGhpcy5wYXNzd29yZFZpc2libGU7XG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5mb2N1cygpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXRJbnB1dDogZnVuY3Rpb24gZ2V0SW5wdXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcmVmcy5pbnB1dCB8fCB0aGlzLiRyZWZzLnRleHRhcmVhO1xuICAgIH0sXG4gICAgZ2V0U3VmZml4VmlzaWJsZTogZnVuY3Rpb24gZ2V0U3VmZml4VmlzaWJsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRzbG90cy5zdWZmaXggfHwgdGhpcy5zdWZmaXhJY29uIHx8IHRoaXMuc2hvd0NsZWFyIHx8IHRoaXMuc2hvd1Bhc3N3b3JkIHx8IHRoaXMuaXNXb3JkTGltaXRWaXNpYmxlIHx8IHRoaXMudmFsaWRhdGVTdGF0ZSAmJiB0aGlzLm5lZWRTdGF0dXNJY29uO1xuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMuJG9uKCdpbnB1dFNlbGVjdCcsIHRoaXMuc2VsZWN0KTtcbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLnNldE5hdGl2ZUlucHV0VmFsdWUoKTtcbiAgICB0aGlzLnJlc2l6ZVRleHRhcmVhKCk7XG4gICAgdGhpcy51cGRhdGVJY29uT2Zmc2V0KCk7XG4gIH0sXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQoKSB7XG4gICAgdGhpcy4kbmV4dFRpY2sodGhpcy51cGRhdGVJY29uT2Zmc2V0KTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2lucHV0L3NyYy9pbnB1dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2lucHV0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGlucHV0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2lucHV0L3NyYy9pbnB1dC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBpbnB1dF9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19pbnB1dHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgaW5wdXR2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDNkZDc3NF9yZW5kZXIsXG4gIGlucHV0dnVlX3R5cGVfdGVtcGxhdGVfaWRfMzQzZGQ3NzRfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBpbnB1dF9hcGk7IH1cbmlucHV0X2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvaW5wdXQvc3JjL2lucHV0LnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfaW5wdXQgPSAoaW5wdXRfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbnB1dC9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zcmNfaW5wdXQuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzcmNfaW5wdXQubmFtZSwgc3JjX2lucHV0KTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2lucHV0ID0gKHNyY19pbnB1dCk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2lucHV0LW51bWJlci9zcmMvaW5wdXQtbnVtYmVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MmY4Y2Y2NiZcbnZhciBpbnB1dF9udW1iZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF80MmY4Y2Y2Nl9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBjbGFzczogW1xuICAgICAgICBcImVsLWlucHV0LW51bWJlclwiLFxuICAgICAgICBfdm0uaW5wdXROdW1iZXJTaXplID8gXCJlbC1pbnB1dC1udW1iZXItLVwiICsgX3ZtLmlucHV0TnVtYmVyU2l6ZSA6IFwiXCIsXG4gICAgICAgIHsgXCJpcy1kaXNhYmxlZFwiOiBfdm0uaW5wdXROdW1iZXJEaXNhYmxlZCB9LFxuICAgICAgICB7IFwiaXMtd2l0aG91dC1jb250cm9sc1wiOiAhX3ZtLmNvbnRyb2xzIH0sXG4gICAgICAgIHsgXCJpcy1jb250cm9scy1yaWdodFwiOiBfdm0uY29udHJvbHNBdFJpZ2h0IH1cbiAgICAgIF0sXG4gICAgICBvbjoge1xuICAgICAgICBkcmFnc3RhcnQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF92bS5jb250cm9sc1xuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInJlcGVhdC1jbGlja1wiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXJlcGVhdC1jbGlja1wiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5kZWNyZWFzZSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiZGVjcmVhc2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXQtbnVtYmVyX19kZWNyZWFzZVwiLFxuICAgICAgICAgICAgICBjbGFzczogeyBcImlzLWRpc2FibGVkXCI6IF92bS5taW5EaXNhYmxlZCB9LFxuICAgICAgICAgICAgICBhdHRyczogeyByb2xlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAga2V5ZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMywgJGV2ZW50LmtleSwgXCJFbnRlclwiKVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmRlY3JlYXNlKCRldmVudClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3M6XG4gICAgICAgICAgICAgICAgICBcImVsLWljb24tXCIgKyAoX3ZtLmNvbnRyb2xzQXRSaWdodCA/IFwiYXJyb3ctZG93blwiIDogXCJtaW51c1wiKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5jb250cm9sc1xuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInJlcGVhdC1jbGlja1wiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXJlcGVhdC1jbGlja1wiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5pbmNyZWFzZSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiaW5jcmVhc2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZVwiLFxuICAgICAgICAgICAgICBjbGFzczogeyBcImlzLWRpc2FibGVkXCI6IF92bS5tYXhEaXNhYmxlZCB9LFxuICAgICAgICAgICAgICBhdHRyczogeyByb2xlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAga2V5ZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMywgJGV2ZW50LmtleSwgXCJFbnRlclwiKVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmluY3JlYXNlKCRldmVudClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IFwiZWwtaWNvbi1cIiArIChfdm0uY29udHJvbHNBdFJpZ2h0ID8gXCJhcnJvdy11cFwiIDogXCJwbHVzXCIpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX2MoXCJlbC1pbnB1dFwiLCB7XG4gICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHZhbHVlOiBfdm0uZGlzcGxheVZhbHVlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgZGlzYWJsZWQ6IF92bS5pbnB1dE51bWJlckRpc2FibGVkLFxuICAgICAgICAgIHNpemU6IF92bS5pbnB1dE51bWJlclNpemUsXG4gICAgICAgICAgbWF4OiBfdm0ubWF4LFxuICAgICAgICAgIG1pbjogX3ZtLm1pbixcbiAgICAgICAgICBuYW1lOiBfdm0ubmFtZSxcbiAgICAgICAgICBsYWJlbDogX3ZtLmxhYmVsXG4gICAgICAgIH0sXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgYmx1cjogX3ZtLmhhbmRsZUJsdXIsXG4gICAgICAgICAgZm9jdXM6IF92bS5oYW5kbGVGb2N1cyxcbiAgICAgICAgICBpbnB1dDogX3ZtLmhhbmRsZUlucHV0LFxuICAgICAgICAgIGNoYW5nZTogX3ZtLmhhbmRsZUlucHV0Q2hhbmdlXG4gICAgICAgIH0sXG4gICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAga2V5ZG93bjogW1xuICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJ1cFwiLCAzOCwgJGV2ZW50LmtleSwgW1wiVXBcIiwgXCJBcnJvd1VwXCJdKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgIHJldHVybiBfdm0uaW5jcmVhc2UoJGV2ZW50KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZG93blwiLCA0MCwgJGV2ZW50LmtleSwgW1xuICAgICAgICAgICAgICAgICAgXCJEb3duXCIsXG4gICAgICAgICAgICAgICAgICBcIkFycm93RG93blwiXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICByZXR1cm4gX3ZtLmRlY3JlYXNlKCRldmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBpbnB1dF9udW1iZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF80MmY4Y2Y2Nl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuaW5wdXRfbnVtYmVydnVlX3R5cGVfdGVtcGxhdGVfaWRfNDJmOGNmNjZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbnB1dC1udW1iZXIvc3JjL2lucHV0LW51bWJlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDJmOGNmNjYmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RpcmVjdGl2ZXMvcmVwZWF0LWNsaWNrLmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciByZXBlYXRfY2xpY2sgPSAoe1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIHZhciBpbnRlcnZhbCA9IG51bGw7XG4gICAgdmFyIHN0YXJ0VGltZSA9IHZvaWQgMDtcbiAgICB2YXIgbWF4SW50ZXJ2YWxzID0gT2JqZWN0KHV0aWxfW1wiaXNNYWNcIl0pKCkgPyAxMDAgOiAyMDA7XG4gICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgcmV0dXJuIHZub2RlLmNvbnRleHRbYmluZGluZy5leHByZXNzaW9uXS5hcHBseSgpO1xuICAgIH07XG4gICAgdmFyIGNsZWFyID0gZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA8IG1heEludGVydmFscykge1xuICAgICAgICBoYW5kbGVyKCk7XG4gICAgICB9XG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgIGludGVydmFsID0gbnVsbDtcbiAgICB9O1xuXG4gICAgT2JqZWN0KGRvbV9bXCJvblwiXSkoZWwsICdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKGUuYnV0dG9uICE9PSAwKSByZXR1cm47XG4gICAgICBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvbmNlXCJdKShkb2N1bWVudCwgJ21vdXNldXAnLCBjbGVhcik7XG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgIGludGVydmFsID0gc2V0SW50ZXJ2YWwoaGFuZGxlciwgbWF4SW50ZXJ2YWxzKTtcbiAgICB9KTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9pbnB1dC1udW1iZXIvc3JjL2lucHV0LW51bWJlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBpbnB1dF9udW1iZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxJbnB1dE51bWJlcicsXG4gIG1peGluczogW2ZvY3VzX2RlZmF1bHQoKSgnaW5wdXQnKV0sXG4gIGluamVjdDoge1xuICAgIGVsRm9ybToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGVsRm9ybUl0ZW06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuICBkaXJlY3RpdmVzOiB7XG4gICAgcmVwZWF0Q2xpY2s6IHJlcGVhdF9jbGlja1xuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgRWxJbnB1dDogaW5wdXRfZGVmYXVsdC5hXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgc3RlcDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMVxuICAgIH0sXG4gICAgc3RlcFN0cmljdGx5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG1heDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogSW5maW5pdHlcbiAgICB9LFxuICAgIG1pbjoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogLUluZmluaXR5XG4gICAgfSxcbiAgICB2YWx1ZToge30sXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgc2l6ZTogU3RyaW5nLFxuICAgIGNvbnRyb2xzOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgY29udHJvbHNQb3NpdGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIG5hbWU6IFN0cmluZyxcbiAgICBsYWJlbDogU3RyaW5nLFxuICAgIHBsYWNlaG9sZGVyOiBTdHJpbmcsXG4gICAgcHJlY2lzaW9uOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWwpIHtcbiAgICAgICAgcmV0dXJuIHZhbCA+PSAwICYmIHZhbCA9PT0gcGFyc2VJbnQodmFsLCAxMCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50VmFsdWU6IDAsXG4gICAgICB1c2VySW5wdXQ6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsdWUpIHtcbiAgICAgICAgdmFyIG5ld1ZhbCA9IHZhbHVlID09PSB1bmRlZmluZWQgPyB2YWx1ZSA6IE51bWJlcih2YWx1ZSk7XG4gICAgICAgIGlmIChuZXdWYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChpc05hTihuZXdWYWwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc3RlcFN0cmljdGx5KSB7XG4gICAgICAgICAgICB2YXIgc3RlcFByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHRoaXMuc3RlcCk7XG4gICAgICAgICAgICB2YXIgcHJlY2lzaW9uRmFjdG9yID0gTWF0aC5wb3coMTAsIHN0ZXBQcmVjaXNpb24pO1xuICAgICAgICAgICAgbmV3VmFsID0gTWF0aC5yb3VuZChuZXdWYWwgLyB0aGlzLnN0ZXApICogcHJlY2lzaW9uRmFjdG9yICogdGhpcy5zdGVwIC8gcHJlY2lzaW9uRmFjdG9yO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnByZWNpc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWwgPSB0aGlzLnRvUHJlY2lzaW9uKG5ld1ZhbCwgdGhpcy5wcmVjaXNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3VmFsID49IHRoaXMubWF4KSBuZXdWYWwgPSB0aGlzLm1heDtcbiAgICAgICAgaWYgKG5ld1ZhbCA8PSB0aGlzLm1pbikgbmV3VmFsID0gdGhpcy5taW47XG4gICAgICAgIHRoaXMuY3VycmVudFZhbHVlID0gbmV3VmFsO1xuICAgICAgICB0aGlzLnVzZXJJbnB1dCA9IG51bGw7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgbmV3VmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgbWluRGlzYWJsZWQ6IGZ1bmN0aW9uIG1pbkRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlY3JlYXNlKHRoaXMudmFsdWUsIHRoaXMuc3RlcCkgPCB0aGlzLm1pbjtcbiAgICB9LFxuICAgIG1heERpc2FibGVkOiBmdW5jdGlvbiBtYXhEaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbmNyZWFzZSh0aGlzLnZhbHVlLCB0aGlzLnN0ZXApID4gdGhpcy5tYXg7XG4gICAgfSxcbiAgICBudW1QcmVjaXNpb246IGZ1bmN0aW9uIG51bVByZWNpc2lvbigpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgc3RlcCA9IHRoaXMuc3RlcCxcbiAgICAgICAgICBnZXRQcmVjaXNpb24gPSB0aGlzLmdldFByZWNpc2lvbixcbiAgICAgICAgICBwcmVjaXNpb24gPSB0aGlzLnByZWNpc2lvbjtcblxuICAgICAgdmFyIHN0ZXBQcmVjaXNpb24gPSBnZXRQcmVjaXNpb24oc3RlcCk7XG4gICAgICBpZiAocHJlY2lzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHN0ZXBQcmVjaXNpb24gPiBwcmVjaXNpb24pIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tFbGVtZW50IFdhcm5dW0lucHV0TnVtYmVyXXByZWNpc2lvbiBzaG91bGQgbm90IGJlIGxlc3MgdGhhbiB0aGUgZGVjaW1hbCBwbGFjZXMgb2Ygc3RlcCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmVjaXNpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoZ2V0UHJlY2lzaW9uKHZhbHVlKSwgc3RlcFByZWNpc2lvbik7XG4gICAgICB9XG4gICAgfSxcbiAgICBjb250cm9sc0F0UmlnaHQ6IGZ1bmN0aW9uIGNvbnRyb2xzQXRSaWdodCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xzICYmIHRoaXMuY29udHJvbHNQb3NpdGlvbiA9PT0gJ3JpZ2h0JztcbiAgICB9LFxuICAgIF9lbEZvcm1JdGVtU2l6ZTogZnVuY3Rpb24gX2VsRm9ybUl0ZW1TaXplKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmVsRm9ybUl0ZW0gfHwge30pLmVsRm9ybUl0ZW1TaXplO1xuICAgIH0sXG4gICAgaW5wdXROdW1iZXJTaXplOiBmdW5jdGlvbiBpbnB1dE51bWJlclNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaXplIHx8IHRoaXMuX2VsRm9ybUl0ZW1TaXplIHx8ICh0aGlzLiRFTEVNRU5UIHx8IHt9KS5zaXplO1xuICAgIH0sXG4gICAgaW5wdXROdW1iZXJEaXNhYmxlZDogZnVuY3Rpb24gaW5wdXROdW1iZXJEaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICEhKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZDtcbiAgICB9LFxuICAgIGRpc3BsYXlWYWx1ZTogZnVuY3Rpb24gZGlzcGxheVZhbHVlKCkge1xuICAgICAgaWYgKHRoaXMudXNlcklucHV0ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJJbnB1dDtcbiAgICAgIH1cblxuICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IHRoaXMuY3VycmVudFZhbHVlO1xuXG4gICAgICBpZiAodHlwZW9mIGN1cnJlbnRWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcFN0cmljdGx5KSB7XG4gICAgICAgICAgdmFyIHN0ZXBQcmVjaXNpb24gPSB0aGlzLmdldFByZWNpc2lvbih0aGlzLnN0ZXApO1xuICAgICAgICAgIHZhciBwcmVjaXNpb25GYWN0b3IgPSBNYXRoLnBvdygxMCwgc3RlcFByZWNpc2lvbik7XG4gICAgICAgICAgY3VycmVudFZhbHVlID0gTWF0aC5yb3VuZChjdXJyZW50VmFsdWUgLyB0aGlzLnN0ZXApICogcHJlY2lzaW9uRmFjdG9yICogdGhpcy5zdGVwIC8gcHJlY2lzaW9uRmFjdG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucHJlY2lzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWUudG9GaXhlZCh0aGlzLnByZWNpc2lvbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICB0b1ByZWNpc2lvbjogZnVuY3Rpb24gdG9QcmVjaXNpb24obnVtLCBwcmVjaXNpb24pIHtcbiAgICAgIGlmIChwcmVjaXNpb24gPT09IHVuZGVmaW5lZCkgcHJlY2lzaW9uID0gdGhpcy5udW1QcmVjaXNpb247XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdChNYXRoLnJvdW5kKG51bSAqIE1hdGgucG93KDEwLCBwcmVjaXNpb24pKSAvIE1hdGgucG93KDEwLCBwcmVjaXNpb24pKTtcbiAgICB9LFxuICAgIGdldFByZWNpc2lvbjogZnVuY3Rpb24gZ2V0UHJlY2lzaW9uKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gICAgICB2YXIgdmFsdWVTdHJpbmcgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgdmFyIGRvdFBvc2l0aW9uID0gdmFsdWVTdHJpbmcuaW5kZXhPZignLicpO1xuICAgICAgdmFyIHByZWNpc2lvbiA9IDA7XG4gICAgICBpZiAoZG90UG9zaXRpb24gIT09IC0xKSB7XG4gICAgICAgIHByZWNpc2lvbiA9IHZhbHVlU3RyaW5nLmxlbmd0aCAtIGRvdFBvc2l0aW9uIC0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmVjaXNpb247XG4gICAgfSxcbiAgICBfaW5jcmVhc2U6IGZ1bmN0aW9uIF9pbmNyZWFzZSh2YWwsIHN0ZXApIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyAmJiB2YWwgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMuY3VycmVudFZhbHVlO1xuXG4gICAgICB2YXIgcHJlY2lzaW9uRmFjdG9yID0gTWF0aC5wb3coMTAsIHRoaXMubnVtUHJlY2lzaW9uKTtcbiAgICAgIC8vIFNvbHZlIHRoZSBhY2N1cmFjeSBwcm9ibGVtIG9mIEpTIGRlY2ltYWwgY2FsY3VsYXRpb24gYnkgY29udmVydGluZyB0aGUgdmFsdWUgdG8gaW50ZWdlci5cbiAgICAgIHJldHVybiB0aGlzLnRvUHJlY2lzaW9uKChwcmVjaXNpb25GYWN0b3IgKiB2YWwgKyBwcmVjaXNpb25GYWN0b3IgKiBzdGVwKSAvIHByZWNpc2lvbkZhY3Rvcik7XG4gICAgfSxcbiAgICBfZGVjcmVhc2U6IGZ1bmN0aW9uIF9kZWNyZWFzZSh2YWwsIHN0ZXApIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyAmJiB2YWwgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMuY3VycmVudFZhbHVlO1xuXG4gICAgICB2YXIgcHJlY2lzaW9uRmFjdG9yID0gTWF0aC5wb3coMTAsIHRoaXMubnVtUHJlY2lzaW9uKTtcblxuICAgICAgcmV0dXJuIHRoaXMudG9QcmVjaXNpb24oKHByZWNpc2lvbkZhY3RvciAqIHZhbCAtIHByZWNpc2lvbkZhY3RvciAqIHN0ZXApIC8gcHJlY2lzaW9uRmFjdG9yKTtcbiAgICB9LFxuICAgIGluY3JlYXNlOiBmdW5jdGlvbiBpbmNyZWFzZSgpIHtcbiAgICAgIGlmICh0aGlzLmlucHV0TnVtYmVyRGlzYWJsZWQgfHwgdGhpcy5tYXhEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZSB8fCAwO1xuICAgICAgdmFyIG5ld1ZhbCA9IHRoaXMuX2luY3JlYXNlKHZhbHVlLCB0aGlzLnN0ZXApO1xuICAgICAgdGhpcy5zZXRDdXJyZW50VmFsdWUobmV3VmFsKTtcbiAgICB9LFxuICAgIGRlY3JlYXNlOiBmdW5jdGlvbiBkZWNyZWFzZSgpIHtcbiAgICAgIGlmICh0aGlzLmlucHV0TnVtYmVyRGlzYWJsZWQgfHwgdGhpcy5taW5EaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZSB8fCAwO1xuICAgICAgdmFyIG5ld1ZhbCA9IHRoaXMuX2RlY3JlYXNlKHZhbHVlLCB0aGlzLnN0ZXApO1xuICAgICAgdGhpcy5zZXRDdXJyZW50VmFsdWUobmV3VmFsKTtcbiAgICB9LFxuICAgIGhhbmRsZUJsdXI6IGZ1bmN0aW9uIGhhbmRsZUJsdXIoZXZlbnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2JsdXInLCBldmVudCk7XG4gICAgfSxcbiAgICBoYW5kbGVGb2N1czogZnVuY3Rpb24gaGFuZGxlRm9jdXMoZXZlbnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2ZvY3VzJywgZXZlbnQpO1xuICAgIH0sXG4gICAgc2V0Q3VycmVudFZhbHVlOiBmdW5jdGlvbiBzZXRDdXJyZW50VmFsdWUobmV3VmFsKSB7XG4gICAgICB2YXIgb2xkVmFsID0gdGhpcy5jdXJyZW50VmFsdWU7XG4gICAgICBpZiAodHlwZW9mIG5ld1ZhbCA9PT0gJ251bWJlcicgJiYgdGhpcy5wcmVjaXNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWwgPSB0aGlzLnRvUHJlY2lzaW9uKG5ld1ZhbCwgdGhpcy5wcmVjaXNpb24pO1xuICAgICAgfVxuICAgICAgaWYgKG5ld1ZhbCA+PSB0aGlzLm1heCkgbmV3VmFsID0gdGhpcy5tYXg7XG4gICAgICBpZiAobmV3VmFsIDw9IHRoaXMubWluKSBuZXdWYWwgPSB0aGlzLm1pbjtcbiAgICAgIGlmIChvbGRWYWwgPT09IG5ld1ZhbCkgcmV0dXJuO1xuICAgICAgdGhpcy51c2VySW5wdXQgPSBudWxsO1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBuZXdWYWwpO1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgbmV3VmFsLCBvbGRWYWwpO1xuICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSBuZXdWYWw7XG4gICAgfSxcbiAgICBoYW5kbGVJbnB1dDogZnVuY3Rpb24gaGFuZGxlSW5wdXQodmFsdWUpIHtcbiAgICAgIHRoaXMudXNlcklucHV0ID0gdmFsdWU7XG4gICAgfSxcbiAgICBoYW5kbGVJbnB1dENoYW5nZTogZnVuY3Rpb24gaGFuZGxlSW5wdXRDaGFuZ2UodmFsdWUpIHtcbiAgICAgIHZhciBuZXdWYWwgPSB2YWx1ZSA9PT0gJycgPyB1bmRlZmluZWQgOiBOdW1iZXIodmFsdWUpO1xuICAgICAgaWYgKCFpc05hTihuZXdWYWwpIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRWYWx1ZShuZXdWYWwpO1xuICAgICAgfVxuICAgICAgdGhpcy51c2VySW5wdXQgPSBudWxsO1xuICAgIH0sXG4gICAgc2VsZWN0OiBmdW5jdGlvbiBzZWxlY3QoKSB7XG4gICAgICB0aGlzLiRyZWZzLmlucHV0LnNlbGVjdCgpO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgaW5uZXJJbnB1dCA9IHRoaXMuJHJlZnMuaW5wdXQuJHJlZnMuaW5wdXQ7XG4gICAgaW5uZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnc3BpbmJ1dHRvbicpO1xuICAgIGlubmVySW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVlbWF4JywgdGhpcy5tYXgpO1xuICAgIGlubmVySW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVlbWluJywgdGhpcy5taW4pO1xuICAgIGlubmVySW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVlbm93JywgdGhpcy5jdXJyZW50VmFsdWUpO1xuICAgIGlubmVySW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJywgdGhpcy5pbnB1dE51bWJlckRpc2FibGVkKTtcbiAgfSxcbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCgpIHtcbiAgICBpZiAoIXRoaXMuJHJlZnMgfHwgIXRoaXMuJHJlZnMuaW5wdXQpIHJldHVybjtcbiAgICB2YXIgaW5uZXJJbnB1dCA9IHRoaXMuJHJlZnMuaW5wdXQuJHJlZnMuaW5wdXQ7XG4gICAgaW5uZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVub3cnLCB0aGlzLmN1cnJlbnRWYWx1ZSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbnB1dC1udW1iZXIvc3JjL2lucHV0LW51bWJlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2lucHV0X251bWJlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChpbnB1dF9udW1iZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvaW5wdXQtbnVtYmVyL3NyYy9pbnB1dC1udW1iZXIudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgaW5wdXRfbnVtYmVyX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX2lucHV0X251bWJlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgaW5wdXRfbnVtYmVydnVlX3R5cGVfdGVtcGxhdGVfaWRfNDJmOGNmNjZfcmVuZGVyLFxuICBpbnB1dF9udW1iZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF80MmY4Y2Y2Nl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGlucHV0X251bWJlcl9hcGk7IH1cbmlucHV0X251bWJlcl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2lucHV0LW51bWJlci9zcmMvaW5wdXQtbnVtYmVyLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBpbnB1dF9udW1iZXIgPSAoaW5wdXRfbnVtYmVyX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvaW5wdXQtbnVtYmVyL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlucHV0X251bWJlci5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGlucHV0X251bWJlci5uYW1lLCBpbnB1dF9udW1iZXIpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfaW5wdXRfbnVtYmVyID0gKGlucHV0X251bWJlcik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjljZDYyNjgmXG52YXIgcmFkaW92dWVfdHlwZV90ZW1wbGF0ZV9pZF82OWNkNjI2OF9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJsYWJlbFwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXJhZGlvXCIsXG4gICAgICBjbGFzczogW1xuICAgICAgICBfdm0uYm9yZGVyICYmIF92bS5yYWRpb1NpemUgPyBcImVsLXJhZGlvLS1cIiArIF92bS5yYWRpb1NpemUgOiBcIlwiLFxuICAgICAgICB7IFwiaXMtZGlzYWJsZWRcIjogX3ZtLmlzRGlzYWJsZWQgfSxcbiAgICAgICAgeyBcImlzLWZvY3VzXCI6IF92bS5mb2N1cyB9LFxuICAgICAgICB7IFwiaXMtYm9yZGVyZWRcIjogX3ZtLmJvcmRlciB9LFxuICAgICAgICB7IFwiaXMtY2hlY2tlZFwiOiBfdm0ubW9kZWwgPT09IF92bS5sYWJlbCB9XG4gICAgICBdLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogXCJyYWRpb1wiLFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBfdm0ubW9kZWwgPT09IF92bS5sYWJlbCxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IF92bS5pc0Rpc2FibGVkLFxuICAgICAgICB0YWJpbmRleDogX3ZtLnRhYkluZGV4XG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAga2V5ZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJzcGFjZVwiLCAzMiwgJGV2ZW50LmtleSwgW1wiIFwiLCBcIlNwYWNlYmFyXCJdKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICB9XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBfdm0ubW9kZWwgPSBfdm0uaXNEaXNhYmxlZCA/IF92bS5tb2RlbCA6IF92bS5sYWJlbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1yYWRpb19faW5wdXRcIixcbiAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgXCJpcy1kaXNhYmxlZFwiOiBfdm0uaXNEaXNhYmxlZCxcbiAgICAgICAgICAgIFwiaXMtY2hlY2tlZFwiOiBfdm0ubW9kZWwgPT09IF92bS5sYWJlbFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXJhZGlvX19pbm5lclwiIH0pLFxuICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubW9kZWwsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJtb2RlbFwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByZWY6IFwicmFkaW9cIixcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXJhZGlvX19vcmlnaW5hbFwiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJyYWRpb1wiLFxuICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLFxuICAgICAgICAgICAgICBuYW1lOiBfdm0ubmFtZSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5pc0Rpc2FibGVkLFxuICAgICAgICAgICAgICB0YWJpbmRleDogXCItMVwiLFxuICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkb21Qcm9wczoge1xuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmxhYmVsLFxuICAgICAgICAgICAgICBjaGVja2VkOiBfdm0uX3EoX3ZtLm1vZGVsLCBfdm0ubGFiZWwpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5mb2N1cyA9IHRydWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYmx1cjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgX3ZtLmZvY3VzID0gZmFsc2VcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY2hhbmdlOiBbXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBfdm0ubW9kZWwgPSBfdm0ubGFiZWxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF92bS5oYW5kbGVDaGFuZ2VcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfYyhcbiAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1yYWRpb19fbGFiZWxcIixcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAga2V5ZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF92bS5fdChcImRlZmF1bHRcIiksXG4gICAgICAgICAgIV92bS4kc2xvdHMuZGVmYXVsdCA/IFtfdm0uX3YoX3ZtLl9zKF92bS5sYWJlbCkpXSA6IF92bS5fZSgpXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICBdXG4gIClcbn1cbnZhciByYWRpb3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzY5Y2Q2MjY4X3N0YXRpY1JlbmRlckZucyA9IFtdXG5yYWRpb3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzY5Y2Q2MjY4X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OWNkNjI2OCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHJhZGlvdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsUmFkaW8nLFxuXG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hXSxcblxuICBpbmplY3Q6IHtcbiAgICBlbEZvcm06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcblxuICAgIGVsRm9ybUl0ZW06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbFJhZGlvJyxcblxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7fSxcbiAgICBsYWJlbDoge30sXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgbmFtZTogU3RyaW5nLFxuICAgIGJvcmRlcjogQm9vbGVhbixcbiAgICBzaXplOiBTdHJpbmdcbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBmb2N1czogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNHcm91cDogZnVuY3Rpb24gaXNHcm91cCgpIHtcbiAgICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG4gICAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgIGlmIChwYXJlbnQuJG9wdGlvbnMuY29tcG9uZW50TmFtZSAhPT0gJ0VsUmFkaW9Hcm91cCcpIHtcbiAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9yYWRpb0dyb3VwID0gcGFyZW50O1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcblxuICAgIG1vZGVsOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNHcm91cCA/IHRoaXMuX3JhZGlvR3JvdXAudmFsdWUgOiB0aGlzLnZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbCkge1xuICAgICAgICBpZiAodGhpcy5pc0dyb3VwKSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxSYWRpb0dyb3VwJywgJ2lucHV0JywgW3ZhbF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiRyZWZzLnJhZGlvICYmICh0aGlzLiRyZWZzLnJhZGlvLmNoZWNrZWQgPSB0aGlzLm1vZGVsID09PSB0aGlzLmxhYmVsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIF9lbEZvcm1JdGVtU2l6ZTogZnVuY3Rpb24gX2VsRm9ybUl0ZW1TaXplKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmVsRm9ybUl0ZW0gfHwge30pLmVsRm9ybUl0ZW1TaXplO1xuICAgIH0sXG4gICAgcmFkaW9TaXplOiBmdW5jdGlvbiByYWRpb1NpemUoKSB7XG4gICAgICB2YXIgdGVtUmFkaW9TaXplID0gdGhpcy5zaXplIHx8IHRoaXMuX2VsRm9ybUl0ZW1TaXplIHx8ICh0aGlzLiRFTEVNRU5UIHx8IHt9KS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXMuaXNHcm91cCA/IHRoaXMuX3JhZGlvR3JvdXAucmFkaW9Hcm91cFNpemUgfHwgdGVtUmFkaW9TaXplIDogdGVtUmFkaW9TaXplO1xuICAgIH0sXG4gICAgaXNEaXNhYmxlZDogZnVuY3Rpb24gaXNEaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzR3JvdXAgPyB0aGlzLl9yYWRpb0dyb3VwLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQgfHwgKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZCA6IHRoaXMuZGlzYWJsZWQgfHwgKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZDtcbiAgICB9LFxuICAgIHRhYkluZGV4OiBmdW5jdGlvbiB0YWJJbmRleCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWQgfHwgdGhpcy5pc0dyb3VwICYmIHRoaXMubW9kZWwgIT09IHRoaXMubGFiZWwgPyAtMSA6IDA7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMuJGVtaXQoJ2NoYW5nZScsIF90aGlzLm1vZGVsKTtcbiAgICAgICAgX3RoaXMuaXNHcm91cCAmJiBfdGhpcy5kaXNwYXRjaCgnRWxSYWRpb0dyb3VwJywgJ2hhbmRsZUNoYW5nZScsIF90aGlzLm1vZGVsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3JhZGlvdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHJhZGlvdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciByYWRpb19jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19yYWRpb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgcmFkaW92dWVfdHlwZV90ZW1wbGF0ZV9pZF82OWNkNjI2OF9yZW5kZXIsXG4gIHJhZGlvdnVlX3R5cGVfdGVtcGxhdGVfaWRfNjljZDYyNjhfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciByYWRpb19hcGk7IH1cbnJhZGlvX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfcmFkaW8gPSAocmFkaW9fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yYWRpby9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zcmNfcmFkaW8uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzcmNfcmFkaW8ubmFtZSwgc3JjX3JhZGlvKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3JhZGlvID0gKHNyY19yYWRpbyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby1ncm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODE4YTcwNGMmXG52YXIgcmFkaW9fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF84MThhNzA0Y19yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgX3ZtLl9lbFRhZyxcbiAgICB7XG4gICAgICB0YWc6IFwiY29tcG9uZW50XCIsXG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1yYWRpby1ncm91cFwiLFxuICAgICAgYXR0cnM6IHsgcm9sZTogXCJyYWRpb2dyb3VwXCIgfSxcbiAgICAgIG9uOiB7IGtleWRvd246IF92bS5oYW5kbGVLZXlkb3duIH1cbiAgICB9LFxuICAgIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSxcbiAgICAyXG4gIClcbn1cbnZhciByYWRpb19ncm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzgxOGE3MDRjX3N0YXRpY1JlbmRlckZucyA9IFtdXG5yYWRpb19ncm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzgxOGE3MDRjX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLWdyb3VwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04MThhNzA0YyZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLWdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG52YXIga2V5Q29kZSA9IE9iamVjdC5mcmVlemUoe1xuICBMRUZUOiAzNyxcbiAgVVA6IDM4LFxuICBSSUdIVDogMzksXG4gIERPV046IDQwXG59KTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHJhZGlvX2dyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsUmFkaW9Hcm91cCcsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsUmFkaW9Hcm91cCcsXG5cbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtSXRlbToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9XG4gIH0sXG5cbiAgbWl4aW5zOiBbZW1pdHRlcl9kZWZhdWx0LmFdLFxuXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHt9LFxuICAgIHNpemU6IFN0cmluZyxcbiAgICBmaWxsOiBTdHJpbmcsXG4gICAgdGV4dENvbG9yOiBTdHJpbmcsXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW5cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIF9lbEZvcm1JdGVtU2l6ZTogZnVuY3Rpb24gX2VsRm9ybUl0ZW1TaXplKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmVsRm9ybUl0ZW0gfHwge30pLmVsRm9ybUl0ZW1TaXplO1xuICAgIH0sXG4gICAgX2VsVGFnOiBmdW5jdGlvbiBfZWxUYWcoKSB7XG4gICAgICB2YXIgdGFnID0gKHRoaXMuJHZub2RlLmRhdGEgfHwge30pLnRhZztcbiAgICAgIGlmICghdGFnIHx8IHRhZyA9PT0gJ2NvbXBvbmVudCcpIHRhZyA9ICdkaXYnO1xuICAgICAgcmV0dXJuIHRhZztcbiAgICB9LFxuICAgIHJhZGlvR3JvdXBTaXplOiBmdW5jdGlvbiByYWRpb0dyb3VwU2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpemUgfHwgdGhpcy5fZWxGb3JtSXRlbVNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7XG4gICAgfVxuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuJG9uKCdoYW5kbGVDaGFuZ2UnLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIF90aGlzLiRlbWl0KCdjaGFuZ2UnLCB2YWx1ZSk7XG4gICAgfSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgLy8g5b2TcmFkaW9Hcm91cOayoeaciem7mOiupOmAiemhueaXtu+8jOesrOS4gOS4quWPr+S7pemAieS4rVRhYuWvvOiIqlxuICAgIHZhciByYWRpb3MgPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCdbdHlwZT1yYWRpb10nKTtcbiAgICB2YXIgZmlyc3RMYWJlbCA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPXJhZGlvXScpWzBdO1xuICAgIGlmICghW10uc29tZS5jYWxsKHJhZGlvcywgZnVuY3Rpb24gKHJhZGlvKSB7XG4gICAgICByZXR1cm4gcmFkaW8uY2hlY2tlZDtcbiAgICB9KSAmJiBmaXJzdExhYmVsKSB7XG4gICAgICBmaXJzdExhYmVsLnRhYkluZGV4ID0gMDtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUtleWRvd246IGZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZSkge1xuICAgICAgLy8g5bem5Y+z5LiK5LiL5oyJ6ZSuIOWPr+S7peWcqHJhZGlv57uE5YaF5YiH5o2i5LiN5ZCM6YCJ6aG5XG4gICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICB2YXIgY2xhc3NOYW1lID0gdGFyZ2V0Lm5vZGVOYW1lID09PSAnSU5QVVQnID8gJ1t0eXBlPXJhZGlvXScgOiAnW3JvbGU9cmFkaW9dJztcbiAgICAgIHZhciByYWRpb3MgPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKGNsYXNzTmFtZSk7XG4gICAgICB2YXIgbGVuZ3RoID0gcmFkaW9zLmxlbmd0aDtcbiAgICAgIHZhciBpbmRleCA9IFtdLmluZGV4T2YuY2FsbChyYWRpb3MsIHRhcmdldCk7XG4gICAgICB2YXIgcm9sZVJhZGlvcyA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPXJhZGlvXScpO1xuICAgICAgc3dpdGNoIChlLmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSBrZXlDb2RlLkxFRlQ6XG4gICAgICAgIGNhc2Uga2V5Q29kZS5VUDpcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJvbGVSYWRpb3NbbGVuZ3RoIC0gMV0uY2xpY2soKTtcbiAgICAgICAgICAgIHJvbGVSYWRpb3NbbGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcm9sZVJhZGlvc1tpbmRleCAtIDFdLmNsaWNrKCk7XG4gICAgICAgICAgICByb2xlUmFkaW9zW2luZGV4IC0gMV0uZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Uga2V5Q29kZS5SSUdIVDpcbiAgICAgICAgY2FzZSBrZXlDb2RlLkRPV046XG4gICAgICAgICAgaWYgKGluZGV4ID09PSBsZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcm9sZVJhZGlvc1swXS5jbGljaygpO1xuICAgICAgICAgICAgcm9sZVJhZGlvc1swXS5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByb2xlUmFkaW9zW2luZGV4ICsgMV0uY2xpY2soKTtcbiAgICAgICAgICAgIHJvbGVSYWRpb3NbaW5kZXggKyAxXS5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKF92YWx1ZSkge1xuICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmNoYW5nZScsIFt0aGlzLnZhbHVlXSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLWdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfcmFkaW9fZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAocmFkaW9fZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLWdyb3VwLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHJhZGlvX2dyb3VwX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX3JhZGlvX2dyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICByYWRpb19ncm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzgxOGE3MDRjX3JlbmRlcixcbiAgcmFkaW9fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF84MThhNzA0Y19zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHJhZGlvX2dyb3VwX2FwaTsgfVxucmFkaW9fZ3JvdXBfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9yYWRpby9zcmMvcmFkaW8tZ3JvdXAudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHJhZGlvX2dyb3VwID0gKHJhZGlvX2dyb3VwX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmFkaW8tZ3JvdXAvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucmFkaW9fZ3JvdXAuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChyYWRpb19ncm91cC5uYW1lLCByYWRpb19ncm91cCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19yYWRpb19ncm91cCA9IChyYWRpb19ncm91cCk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby1idXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4YTc3YTMyJlxudmFyIHJhZGlvX2J1dHRvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzE4YTc3YTMyX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImxhYmVsXCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcmFkaW8tYnV0dG9uXCIsXG4gICAgICBjbGFzczogW1xuICAgICAgICBfdm0uc2l6ZSA/IFwiZWwtcmFkaW8tYnV0dG9uLS1cIiArIF92bS5zaXplIDogXCJcIixcbiAgICAgICAgeyBcImlzLWFjdGl2ZVwiOiBfdm0udmFsdWUgPT09IF92bS5sYWJlbCB9LFxuICAgICAgICB7IFwiaXMtZGlzYWJsZWRcIjogX3ZtLmlzRGlzYWJsZWQgfSxcbiAgICAgICAgeyBcImlzLWZvY3VzXCI6IF92bS5mb2N1cyB9XG4gICAgICBdLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogXCJyYWRpb1wiLFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBfdm0udmFsdWUgPT09IF92bS5sYWJlbCxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IF92bS5pc0Rpc2FibGVkLFxuICAgICAgICB0YWJpbmRleDogX3ZtLnRhYkluZGV4XG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAga2V5ZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJzcGFjZVwiLCAzMiwgJGV2ZW50LmtleSwgW1wiIFwiLCBcIlNwYWNlYmFyXCJdKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICB9XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBfdm0udmFsdWUgPSBfdm0uaXNEaXNhYmxlZCA/IF92bS52YWx1ZSA6IF92bS5sYWJlbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgdmFsdWU6IF92bS52YWx1ZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb246IFwidmFsdWVcIlxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcmFkaW8tYnV0dG9uX19vcmlnLXJhZGlvXCIsXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgdHlwZTogXCJyYWRpb1wiLFxuICAgICAgICAgIG5hbWU6IF92bS5uYW1lLFxuICAgICAgICAgIGRpc2FibGVkOiBfdm0uaXNEaXNhYmxlZCxcbiAgICAgICAgICB0YWJpbmRleDogXCItMVwiLFxuICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIlxuICAgICAgICB9LFxuICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLmxhYmVsLCBjaGVja2VkOiBfdm0uX3EoX3ZtLnZhbHVlLCBfdm0ubGFiZWwpIH0sXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgY2hhbmdlOiBbXG4gICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgX3ZtLnZhbHVlID0gX3ZtLmxhYmVsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3ZtLmhhbmRsZUNoYW5nZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgX3ZtLmZvY3VzID0gdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmx1cjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICBfdm0uZm9jdXMgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBfYyhcbiAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1yYWRpby1idXR0b25fX2lubmVyXCIsXG4gICAgICAgICAgc3R5bGU6IF92bS52YWx1ZSA9PT0gX3ZtLmxhYmVsID8gX3ZtLmFjdGl2ZVN0eWxlIDogbnVsbCxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAga2V5ZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF92bS5fdChcImRlZmF1bHRcIiksXG4gICAgICAgICAgIV92bS4kc2xvdHMuZGVmYXVsdCA/IFtfdm0uX3YoX3ZtLl9zKF92bS5sYWJlbCkpXSA6IF92bS5fZSgpXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICBdXG4gIClcbn1cbnZhciByYWRpb19idXR0b252dWVfdHlwZV90ZW1wbGF0ZV9pZF8xOGE3N2EzMl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxucmFkaW9fYnV0dG9udnVlX3R5cGVfdGVtcGxhdGVfaWRfMThhNzdhMzJfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yYWRpby9zcmMvcmFkaW8tYnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xOGE3N2EzMiZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLWJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcmFkaW9fYnV0dG9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsUmFkaW9CdXR0b24nLFxuXG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hXSxcblxuICBpbmplY3Q6IHtcbiAgICBlbEZvcm06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBlbEZvcm1JdGVtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBwcm9wczoge1xuICAgIGxhYmVsOiB7fSxcbiAgICBkaXNhYmxlZDogQm9vbGVhbixcbiAgICBuYW1lOiBTdHJpbmdcbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9jdXM6IGZhbHNlXG4gICAgfTtcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIHZhbHVlOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JhZGlvR3JvdXAudmFsdWU7XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fcmFkaW9Hcm91cC4kZW1pdCgnaW5wdXQnLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBfcmFkaW9Hcm91cDogZnVuY3Rpb24gX3JhZGlvR3JvdXAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50LiRvcHRpb25zLmNvbXBvbmVudE5hbWUgIT09ICdFbFJhZGlvR3JvdXAnKSB7XG4gICAgICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgYWN0aXZlU3R5bGU6IGZ1bmN0aW9uIGFjdGl2ZVN0eWxlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLl9yYWRpb0dyb3VwLmZpbGwgfHwgJycsXG4gICAgICAgIGJvcmRlckNvbG9yOiB0aGlzLl9yYWRpb0dyb3VwLmZpbGwgfHwgJycsXG4gICAgICAgIGJveFNoYWRvdzogdGhpcy5fcmFkaW9Hcm91cC5maWxsID8gJy0xcHggMCAwIDAgJyArIHRoaXMuX3JhZGlvR3JvdXAuZmlsbCA6ICcnLFxuICAgICAgICBjb2xvcjogdGhpcy5fcmFkaW9Hcm91cC50ZXh0Q29sb3IgfHwgJydcbiAgICAgIH07XG4gICAgfSxcbiAgICBfZWxGb3JtSXRlbVNpemU6IGZ1bmN0aW9uIF9lbEZvcm1JdGVtU2l6ZSgpIHtcbiAgICAgIHJldHVybiAodGhpcy5lbEZvcm1JdGVtIHx8IHt9KS5lbEZvcm1JdGVtU2l6ZTtcbiAgICB9LFxuICAgIHNpemU6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmFkaW9Hcm91cC5yYWRpb0dyb3VwU2l6ZSB8fCB0aGlzLl9lbEZvcm1JdGVtU2l6ZSB8fCAodGhpcy4kRUxFTUVOVCB8fCB7fSkuc2l6ZTtcbiAgICB9LFxuICAgIGlzRGlzYWJsZWQ6IGZ1bmN0aW9uIGlzRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLl9yYWRpb0dyb3VwLmRpc2FibGVkIHx8ICh0aGlzLmVsRm9ybSB8fCB7fSkuZGlzYWJsZWQ7XG4gICAgfSxcbiAgICB0YWJJbmRleDogZnVuY3Rpb24gdGFiSW5kZXgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkIHx8IHRoaXMuX3JhZGlvR3JvdXAgJiYgdGhpcy52YWx1ZSAhPT0gdGhpcy5sYWJlbCA/IC0xIDogMDtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5kaXNwYXRjaCgnRWxSYWRpb0dyb3VwJywgJ2hhbmRsZUNoYW5nZScsIF90aGlzLnZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby1idXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19yYWRpb19idXR0b252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAocmFkaW9fYnV0dG9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby1idXR0b24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgcmFkaW9fYnV0dG9uX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX3JhZGlvX2J1dHRvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgcmFkaW9fYnV0dG9udnVlX3R5cGVfdGVtcGxhdGVfaWRfMThhNzdhMzJfcmVuZGVyLFxuICByYWRpb19idXR0b252dWVfdHlwZV90ZW1wbGF0ZV9pZF8xOGE3N2EzMl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHJhZGlvX2J1dHRvbl9hcGk7IH1cbnJhZGlvX2J1dHRvbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby1idXR0b24udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHJhZGlvX2J1dHRvbiA9IChyYWRpb19idXR0b25fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yYWRpby1idXR0b24vaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucmFkaW9fYnV0dG9uLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQocmFkaW9fYnV0dG9uLm5hbWUsIHJhZGlvX2J1dHRvbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19yYWRpb19idXR0b24gPSAocmFkaW9fYnV0dG9uKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMDM4NzA3NCZcbnZhciBjaGVja2JveHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2QwMzg3MDc0X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImxhYmVsXCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY2hlY2tib3hcIixcbiAgICAgIGNsYXNzOiBbXG4gICAgICAgIF92bS5ib3JkZXIgJiYgX3ZtLmNoZWNrYm94U2l6ZVxuICAgICAgICAgID8gXCJlbC1jaGVja2JveC0tXCIgKyBfdm0uY2hlY2tib3hTaXplXG4gICAgICAgICAgOiBcIlwiLFxuICAgICAgICB7IFwiaXMtZGlzYWJsZWRcIjogX3ZtLmlzRGlzYWJsZWQgfSxcbiAgICAgICAgeyBcImlzLWJvcmRlcmVkXCI6IF92bS5ib3JkZXIgfSxcbiAgICAgICAgeyBcImlzLWNoZWNrZWRcIjogX3ZtLmlzQ2hlY2tlZCB9XG4gICAgICBdLFxuICAgICAgYXR0cnM6IHsgaWQ6IF92bS5pZCB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jaGVja2JveF9faW5wdXRcIixcbiAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgXCJpcy1kaXNhYmxlZFwiOiBfdm0uaXNEaXNhYmxlZCxcbiAgICAgICAgICAgIFwiaXMtY2hlY2tlZFwiOiBfdm0uaXNDaGVja2VkLFxuICAgICAgICAgICAgXCJpcy1pbmRldGVybWluYXRlXCI6IF92bS5pbmRldGVybWluYXRlLFxuICAgICAgICAgICAgXCJpcy1mb2N1c1wiOiBfdm0uZm9jdXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICB0YWJpbmRleDogX3ZtLmluZGV0ZXJtaW5hdGUgPyAwIDogZmFsc2UsXG4gICAgICAgICAgICByb2xlOiBfdm0uaW5kZXRlcm1pbmF0ZSA/IFwiY2hlY2tib3hcIiA6IGZhbHNlLFxuICAgICAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogX3ZtLmluZGV0ZXJtaW5hdGUgPyBcIm1peGVkXCIgOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWNoZWNrYm94X19pbm5lclwiIH0pLFxuICAgICAgICAgIF92bS50cnVlTGFiZWwgfHwgX3ZtLmZhbHNlTGFiZWxcbiAgICAgICAgICAgID8gX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm1vZGVsLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm1vZGVsXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNoZWNrYm94X19vcmlnaW5hbFwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IF92bS5pbmRldGVybWluYXRlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBfdm0ubmFtZSxcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uaXNEaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgIFwidHJ1ZS12YWx1ZVwiOiBfdm0udHJ1ZUxhYmVsLFxuICAgICAgICAgICAgICAgICAgXCJmYWxzZS12YWx1ZVwiOiBfdm0uZmFsc2VMYWJlbFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IEFycmF5LmlzQXJyYXkoX3ZtLm1vZGVsKVxuICAgICAgICAgICAgICAgICAgICA/IF92bS5faShfdm0ubW9kZWwsIG51bGwpID4gLTFcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX3EoX3ZtLm1vZGVsLCBfdm0udHJ1ZUxhYmVsKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZTogW1xuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgJCRhID0gX3ZtLm1vZGVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyBfdm0udHJ1ZUxhYmVsIDogX3ZtLmZhbHNlTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgJCR2ID0gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQkZWwuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkJGkgPCAwICYmIChfdm0ubW9kZWwgPSAkJGEuY29uY2F0KFskJHZdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICQkaSA+IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5tb2RlbCA9ICQkYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsICQkaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoJCRhLnNsaWNlKCQkaSArIDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm1vZGVsID0gJCRjXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQ2hhbmdlXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0uZm9jdXMgPSB0cnVlXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYmx1cjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5mb2N1cyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibW9kZWxcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY2hlY2tib3hfX29yaWdpbmFsXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogX3ZtLmluZGV0ZXJtaW5hdGUgPyBcInRydWVcIiA6IFwiZmFsc2VcIixcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uaXNEaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IF92bS5uYW1lXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkb21Qcm9wczoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IEFycmF5LmlzQXJyYXkoX3ZtLm1vZGVsKVxuICAgICAgICAgICAgICAgICAgICA/IF92bS5faShfdm0ubW9kZWwsIF92bS5sYWJlbCkgPiAtMVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5tb2RlbFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZTogW1xuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgJCRhID0gX3ZtLm1vZGVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgJCR2ID0gX3ZtLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCRlbC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICQkaSA8IDAgJiYgKF92bS5tb2RlbCA9ICQkYS5jb25jYXQoWyQkdl0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJCRpID4gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLm1vZGVsID0gJCRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgJCRpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0ubW9kZWwgPSAkJGNcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVDaGFuZ2VcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBmb2N1czogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5mb2N1cyA9IHRydWVcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBibHVyOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmZvY3VzID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uJHNsb3RzLmRlZmF1bHQgfHwgX3ZtLmxhYmVsXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtY2hlY2tib3hfX2xhYmVsXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl90KFwiZGVmYXVsdFwiKSxcbiAgICAgICAgICAgICAgIV92bS4kc2xvdHMuZGVmYXVsdCA/IFtfdm0uX3YoX3ZtLl9zKF92bS5sYWJlbCkpXSA6IF92bS5fZSgpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF1cbiAgKVxufVxudmFyIGNoZWNrYm94dnVlX3R5cGVfdGVtcGxhdGVfaWRfZDAzODcwNzRfc3RhdGljUmVuZGVyRm5zID0gW11cbmNoZWNrYm94dnVlX3R5cGVfdGVtcGxhdGVfaWRfZDAzODcwNzRfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQwMzg3MDc0JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNoZWNrYm94dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsQ2hlY2tib3gnLFxuXG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hXSxcblxuICBpbmplY3Q6IHtcbiAgICBlbEZvcm06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBlbEZvcm1JdGVtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnROYW1lOiAnRWxDaGVja2JveCcsXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZk1vZGVsOiBmYWxzZSxcbiAgICAgIGZvY3VzOiBmYWxzZSxcbiAgICAgIGlzTGltaXRFeGNlZWRlZDogZmFsc2VcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBtb2RlbDoge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzR3JvdXAgPyB0aGlzLnN0b3JlIDogdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkID8gdGhpcy52YWx1ZSA6IHRoaXMuc2VsZk1vZGVsO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbCkge1xuICAgICAgICBpZiAodGhpcy5pc0dyb3VwKSB7XG4gICAgICAgICAgdGhpcy5pc0xpbWl0RXhjZWVkZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGVja2JveEdyb3VwLm1pbiAhPT0gdW5kZWZpbmVkICYmIHZhbC5sZW5ndGggPCB0aGlzLl9jaGVja2JveEdyb3VwLm1pbiAmJiAodGhpcy5pc0xpbWl0RXhjZWVkZWQgPSB0cnVlKTtcblxuICAgICAgICAgIHRoaXMuX2NoZWNrYm94R3JvdXAubWF4ICE9PSB1bmRlZmluZWQgJiYgdmFsLmxlbmd0aCA+IHRoaXMuX2NoZWNrYm94R3JvdXAubWF4ICYmICh0aGlzLmlzTGltaXRFeGNlZWRlZCA9IHRydWUpO1xuXG4gICAgICAgICAgdGhpcy5pc0xpbWl0RXhjZWVkZWQgPT09IGZhbHNlICYmIHRoaXMuZGlzcGF0Y2goJ0VsQ2hlY2tib3hHcm91cCcsICdpbnB1dCcsIFt2YWxdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbCk7XG4gICAgICAgICAgdGhpcy5zZWxmTW9kZWwgPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgaXNDaGVja2VkOiBmdW5jdGlvbiBpc0NoZWNrZWQoKSB7XG4gICAgICBpZiAoe30udG9TdHJpbmcuY2FsbCh0aGlzLm1vZGVsKSA9PT0gJ1tvYmplY3QgQm9vbGVhbl0nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMubW9kZWwpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLmluZGV4T2YodGhpcy5sYWJlbCkgPiAtMTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlbCAhPT0gbnVsbCAmJiB0aGlzLm1vZGVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwgPT09IHRoaXMudHJ1ZUxhYmVsO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNHcm91cDogZnVuY3Rpb24gaXNHcm91cCgpIHtcbiAgICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG4gICAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgIGlmIChwYXJlbnQuJG9wdGlvbnMuY29tcG9uZW50TmFtZSAhPT0gJ0VsQ2hlY2tib3hHcm91cCcpIHtcbiAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9jaGVja2JveEdyb3VwID0gcGFyZW50O1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBzdG9yZTogZnVuY3Rpb24gc3RvcmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY2hlY2tib3hHcm91cCA/IHRoaXMuX2NoZWNrYm94R3JvdXAudmFsdWUgOiB0aGlzLnZhbHVlO1xuICAgIH0sXG5cblxuICAgIC8qIHVzZWQgdG8gbWFrZSB0aGUgaXNEaXNhYmxlZCBqdWRnbWVudCB1bmRlciBtYXgvbWluIHByb3BzICovXG4gICAgaXNMaW1pdERpc2FibGVkOiBmdW5jdGlvbiBpc0xpbWl0RGlzYWJsZWQoKSB7XG4gICAgICB2YXIgX2NoZWNrYm94R3JvdXAgPSB0aGlzLl9jaGVja2JveEdyb3VwLFxuICAgICAgICAgIG1heCA9IF9jaGVja2JveEdyb3VwLm1heCxcbiAgICAgICAgICBtaW4gPSBfY2hlY2tib3hHcm91cC5taW47XG5cbiAgICAgIHJldHVybiAhIShtYXggfHwgbWluKSAmJiB0aGlzLm1vZGVsLmxlbmd0aCA+PSBtYXggJiYgIXRoaXMuaXNDaGVja2VkIHx8IHRoaXMubW9kZWwubGVuZ3RoIDw9IG1pbiAmJiB0aGlzLmlzQ2hlY2tlZDtcbiAgICB9LFxuICAgIGlzRGlzYWJsZWQ6IGZ1bmN0aW9uIGlzRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5fY2hlY2tib3hHcm91cC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLmVsRm9ybSB8fCB7fSkuZGlzYWJsZWQgfHwgdGhpcy5pc0xpbWl0RGlzYWJsZWQgOiB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLmVsRm9ybSB8fCB7fSkuZGlzYWJsZWQ7XG4gICAgfSxcbiAgICBfZWxGb3JtSXRlbVNpemU6IGZ1bmN0aW9uIF9lbEZvcm1JdGVtU2l6ZSgpIHtcbiAgICAgIHJldHVybiAodGhpcy5lbEZvcm1JdGVtIHx8IHt9KS5lbEZvcm1JdGVtU2l6ZTtcbiAgICB9LFxuICAgIGNoZWNrYm94U2l6ZTogZnVuY3Rpb24gY2hlY2tib3hTaXplKCkge1xuICAgICAgdmFyIHRlbUNoZWNrYm94U2l6ZSA9IHRoaXMuc2l6ZSB8fCB0aGlzLl9lbEZvcm1JdGVtU2l6ZSB8fCAodGhpcy4kRUxFTUVOVCB8fCB7fSkuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzLmlzR3JvdXAgPyB0aGlzLl9jaGVja2JveEdyb3VwLmNoZWNrYm94R3JvdXBTaXplIHx8IHRlbUNoZWNrYm94U2l6ZSA6IHRlbUNoZWNrYm94U2l6ZTtcbiAgICB9XG4gIH0sXG5cbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge30sXG4gICAgbGFiZWw6IHt9LFxuICAgIGluZGV0ZXJtaW5hdGU6IEJvb2xlYW4sXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgY2hlY2tlZDogQm9vbGVhbixcbiAgICBuYW1lOiBTdHJpbmcsXG4gICAgdHJ1ZUxhYmVsOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgIGZhbHNlTGFiZWw6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgaWQ6IFN0cmluZywgLyog5b2TaW5kZXRlcm1pbmF0ZeS4uuecn+aXtu+8jOS4umNvbnRyb2xz5o+Q5L6b55u45YWz6L+e55qEY2hlY2tib3jnmoRpZO+8jOihqOaYjuWFg+e0oOmXtOeahOaOp+WItuWFs+ezuyovXG4gICAgY29udHJvbHM6IFN0cmluZywgLyog5b2TaW5kZXRlcm1pbmF0ZeS4uuecn+aXtu+8jOS4umNvbnRyb2xz5o+Q5L6b55u45YWz6L+e55qEY2hlY2tib3jnmoRpZO+8jOihqOaYjuWFg+e0oOmXtOeahOaOp+WItuWFs+ezuyovXG4gICAgYm9yZGVyOiBCb29sZWFuLFxuICAgIHNpemU6IFN0cmluZ1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBhZGRUb1N0b3JlOiBmdW5jdGlvbiBhZGRUb1N0b3JlKCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbCkgJiYgdGhpcy5tb2RlbC5pbmRleE9mKHRoaXMubGFiZWwpID09PSAtMSkge1xuICAgICAgICB0aGlzLm1vZGVsLnB1c2godGhpcy5sYWJlbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy50cnVlTGFiZWwgfHwgdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKGV2KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5pc0xpbWl0RXhjZWVkZWQpIHJldHVybjtcbiAgICAgIHZhciB2YWx1ZSA9IHZvaWQgMDtcbiAgICAgIGlmIChldi50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICB2YWx1ZSA9IHRoaXMudHJ1ZUxhYmVsID09PSB1bmRlZmluZWQgPyB0cnVlIDogdGhpcy50cnVlTGFiZWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHRoaXMuZmFsc2VMYWJlbCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiB0aGlzLmZhbHNlTGFiZWw7XG4gICAgICB9XG4gICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCB2YWx1ZSwgZXYpO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMuaXNHcm91cCkge1xuICAgICAgICAgIF90aGlzLmRpc3BhdGNoKCdFbENoZWNrYm94R3JvdXAnLCAnY2hhbmdlJywgW190aGlzLl9jaGVja2JveEdyb3VwLnZhbHVlXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMuY2hlY2tlZCAmJiB0aGlzLmFkZFRvU3RvcmUoKTtcbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICAvLyDkuLppbmRldGVybWluYXRl5YWD57SgIOa3u+WKoGFyaWEtY29udHJvbHMg5bGe5oCnXG4gICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgdGhpcy4kZWwuc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgdGhpcy5jb250cm9scyk7XG4gICAgfVxuICB9LFxuXG5cbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoX3ZhbHVlKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoKCdFbEZvcm1JdGVtJywgJ2VsLmZvcm0uY2hhbmdlJywgX3ZhbHVlKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19jaGVja2JveHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChjaGVja2JveHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY2hlY2tib3hfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfY2hlY2tib3h2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGNoZWNrYm94dnVlX3R5cGVfdGVtcGxhdGVfaWRfZDAzODcwNzRfcmVuZGVyLFxuICBjaGVja2JveHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2QwMzg3MDc0X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgY2hlY2tib3hfYXBpOyB9XG5jaGVja2JveF9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2NoZWNrYm94ID0gKGNoZWNrYm94X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3JjX2NoZWNrYm94Lmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoc3JjX2NoZWNrYm94Lm5hbWUsIHNyY19jaGVja2JveCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19jaGVja2JveCA9IChzcmNfY2hlY2tib3gpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gtYnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NzhlOTA2ZSZcbnZhciBjaGVja2JveF9idXR0b252dWVfdHlwZV90ZW1wbGF0ZV9pZF80NzhlOTA2ZV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJsYWJlbFwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNoZWNrYm94LWJ1dHRvblwiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgX3ZtLnNpemUgPyBcImVsLWNoZWNrYm94LWJ1dHRvbi0tXCIgKyBfdm0uc2l6ZSA6IFwiXCIsXG4gICAgICAgIHsgXCJpcy1kaXNhYmxlZFwiOiBfdm0uaXNEaXNhYmxlZCB9LFxuICAgICAgICB7IFwiaXMtY2hlY2tlZFwiOiBfdm0uaXNDaGVja2VkIH0sXG4gICAgICAgIHsgXCJpcy1mb2N1c1wiOiBfdm0uZm9jdXMgfVxuICAgICAgXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogX3ZtLmlzQ2hlY2tlZCxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IF92bS5pc0Rpc2FibGVkXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfdm0udHJ1ZUxhYmVsIHx8IF92bS5mYWxzZUxhYmVsXG4gICAgICAgID8gX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IF92bS5tb2RlbCxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm1vZGVsXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNoZWNrYm94LWJ1dHRvbl9fb3JpZ2luYWxcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgICAgICAgbmFtZTogX3ZtLm5hbWUsXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uaXNEaXNhYmxlZCxcbiAgICAgICAgICAgICAgXCJ0cnVlLXZhbHVlXCI6IF92bS50cnVlTGFiZWwsXG4gICAgICAgICAgICAgIFwiZmFsc2UtdmFsdWVcIjogX3ZtLmZhbHNlTGFiZWxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkb21Qcm9wczoge1xuICAgICAgICAgICAgICBjaGVja2VkOiBBcnJheS5pc0FycmF5KF92bS5tb2RlbClcbiAgICAgICAgICAgICAgICA/IF92bS5faShfdm0ubW9kZWwsIG51bGwpID4gLTFcbiAgICAgICAgICAgICAgICA6IF92bS5fcShfdm0ubW9kZWwsIF92bS50cnVlTGFiZWwpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgY2hhbmdlOiBbXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICB2YXIgJCRhID0gX3ZtLm1vZGVsLFxuICAgICAgICAgICAgICAgICAgICAkJGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gX3ZtLnRydWVMYWJlbCA6IF92bS5mYWxzZUxhYmVsXG4gICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkJHYgPSBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICQkaSA9IF92bS5faSgkJGEsICQkdilcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQkZWwuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICQkaSA8IDAgJiYgKF92bS5tb2RlbCA9ICQkYS5jb25jYXQoWyQkdl0pKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICQkaSA+IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLm1vZGVsID0gJCRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAkJGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoJCRhLnNsaWNlKCQkaSArIDEpKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLm1vZGVsID0gJCRjXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQ2hhbmdlXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBfdm0uZm9jdXMgPSB0cnVlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5mb2N1cyA9IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICA6IF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubW9kZWwsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJtb2RlbFwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jaGVja2JveC1idXR0b25fX29yaWdpbmFsXCIsXG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgIG5hbWU6IF92bS5uYW1lLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmlzRGlzYWJsZWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkb21Qcm9wczoge1xuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmxhYmVsLFxuICAgICAgICAgICAgICBjaGVja2VkOiBBcnJheS5pc0FycmF5KF92bS5tb2RlbClcbiAgICAgICAgICAgICAgICA/IF92bS5faShfdm0ubW9kZWwsIF92bS5sYWJlbCkgPiAtMVxuICAgICAgICAgICAgICAgIDogX3ZtLm1vZGVsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgY2hhbmdlOiBbXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICB2YXIgJCRhID0gX3ZtLm1vZGVsLFxuICAgICAgICAgICAgICAgICAgICAkJGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkJHYgPSBfdm0ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KVxuICAgICAgICAgICAgICAgICAgICBpZiAoJCRlbC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgJCRpIDwgMCAmJiAoX3ZtLm1vZGVsID0gJCRhLmNvbmNhdChbJCR2XSkpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgJCRpID4gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChfdm0ubW9kZWwgPSAkJGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsICQkaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfdm0ubW9kZWwgPSAkJGNcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF92bS5oYW5kbGVDaGFuZ2VcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5mb2N1cyA9IHRydWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYmx1cjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgX3ZtLmZvY3VzID0gZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgX3ZtLiRzbG90cy5kZWZhdWx0IHx8IF92bS5sYWJlbFxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNoZWNrYm94LWJ1dHRvbl9faW5uZXJcIixcbiAgICAgICAgICAgICAgc3R5bGU6IF92bS5pc0NoZWNrZWQgPyBfdm0uYWN0aXZlU3R5bGUgOiBudWxsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW192bS5fdChcImRlZmF1bHRcIiwgW192bS5fdihfdm0uX3MoX3ZtLmxhYmVsKSldKV0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpXG4gICAgXVxuICApXG59XG52YXIgY2hlY2tib3hfYnV0dG9udnVlX3R5cGVfdGVtcGxhdGVfaWRfNDc4ZTkwNmVfc3RhdGljUmVuZGVyRm5zID0gW11cbmNoZWNrYm94X2J1dHRvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQ3OGU5MDZlX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LWJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDc4ZTkwNmUmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC1idXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2hlY2tib3hfYnV0dG9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsQ2hlY2tib3hCdXR0b24nLFxuXG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hXSxcblxuICBpbmplY3Q6IHtcbiAgICBlbEZvcm06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBlbEZvcm1JdGVtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZWxmTW9kZWw6IGZhbHNlLFxuICAgICAgZm9jdXM6IGZhbHNlLFxuICAgICAgaXNMaW1pdEV4Y2VlZGVkOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7fSxcbiAgICBsYWJlbDoge30sXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgY2hlY2tlZDogQm9vbGVhbixcbiAgICBuYW1lOiBTdHJpbmcsXG4gICAgdHJ1ZUxhYmVsOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgIGZhbHNlTGFiZWw6IFtTdHJpbmcsIE51bWJlcl1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBtb2RlbDoge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja2JveEdyb3VwID8gdGhpcy5zdG9yZSA6IHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCA/IHRoaXMudmFsdWUgOiB0aGlzLnNlbGZNb2RlbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMuX2NoZWNrYm94R3JvdXApIHtcbiAgICAgICAgICB0aGlzLmlzTGltaXRFeGNlZWRlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoZWNrYm94R3JvdXAubWluICE9PSB1bmRlZmluZWQgJiYgdmFsLmxlbmd0aCA8IHRoaXMuX2NoZWNrYm94R3JvdXAubWluICYmICh0aGlzLmlzTGltaXRFeGNlZWRlZCA9IHRydWUpO1xuXG4gICAgICAgICAgdGhpcy5fY2hlY2tib3hHcm91cC5tYXggIT09IHVuZGVmaW5lZCAmJiB2YWwubGVuZ3RoID4gdGhpcy5fY2hlY2tib3hHcm91cC5tYXggJiYgKHRoaXMuaXNMaW1pdEV4Y2VlZGVkID0gdHJ1ZSk7XG5cbiAgICAgICAgICB0aGlzLmlzTGltaXRFeGNlZWRlZCA9PT0gZmFsc2UgJiYgdGhpcy5kaXNwYXRjaCgnRWxDaGVja2JveEdyb3VwJywgJ2lucHV0JywgW3ZhbF0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGZNb2RlbCA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBpc0NoZWNrZWQ6IGZ1bmN0aW9uIGlzQ2hlY2tlZCgpIHtcbiAgICAgIGlmICh7fS50b1N0cmluZy5jYWxsKHRoaXMubW9kZWwpID09PSAnW29iamVjdCBCb29sZWFuXScpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwuaW5kZXhPZih0aGlzLmxhYmVsKSA+IC0xO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGVsICE9PSBudWxsICYmIHRoaXMubW9kZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbCA9PT0gdGhpcy50cnVlTGFiZWw7XG4gICAgICB9XG4gICAgfSxcbiAgICBfY2hlY2tib3hHcm91cDogZnVuY3Rpb24gX2NoZWNrYm94R3JvdXAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50LiRvcHRpb25zLmNvbXBvbmVudE5hbWUgIT09ICdFbENoZWNrYm94R3JvdXAnKSB7XG4gICAgICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgc3RvcmU6IGZ1bmN0aW9uIHN0b3JlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrYm94R3JvdXAgPyB0aGlzLl9jaGVja2JveEdyb3VwLnZhbHVlIDogdGhpcy52YWx1ZTtcbiAgICB9LFxuICAgIGFjdGl2ZVN0eWxlOiBmdW5jdGlvbiBhY3RpdmVTdHlsZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5fY2hlY2tib3hHcm91cC5maWxsIHx8ICcnLFxuICAgICAgICBib3JkZXJDb2xvcjogdGhpcy5fY2hlY2tib3hHcm91cC5maWxsIHx8ICcnLFxuICAgICAgICBjb2xvcjogdGhpcy5fY2hlY2tib3hHcm91cC50ZXh0Q29sb3IgfHwgJycsXG4gICAgICAgICdib3gtc2hhZG93JzogJy0xcHggMCAwIDAgJyArIHRoaXMuX2NoZWNrYm94R3JvdXAuZmlsbFxuXG4gICAgICB9O1xuICAgIH0sXG4gICAgX2VsRm9ybUl0ZW1TaXplOiBmdW5jdGlvbiBfZWxGb3JtSXRlbVNpemUoKSB7XG4gICAgICByZXR1cm4gKHRoaXMuZWxGb3JtSXRlbSB8fCB7fSkuZWxGb3JtSXRlbVNpemU7XG4gICAgfSxcbiAgICBzaXplOiBmdW5jdGlvbiBzaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrYm94R3JvdXAuY2hlY2tib3hHcm91cFNpemUgfHwgdGhpcy5fZWxGb3JtSXRlbVNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7XG4gICAgfSxcblxuXG4gICAgLyogdXNlZCB0byBtYWtlIHRoZSBpc0Rpc2FibGVkIGp1ZGdtZW50IHVuZGVyIG1heC9taW4gcHJvcHMgKi9cbiAgICBpc0xpbWl0RGlzYWJsZWQ6IGZ1bmN0aW9uIGlzTGltaXREaXNhYmxlZCgpIHtcbiAgICAgIHZhciBfY2hlY2tib3hHcm91cDIgPSB0aGlzLl9jaGVja2JveEdyb3VwLFxuICAgICAgICAgIG1heCA9IF9jaGVja2JveEdyb3VwMi5tYXgsXG4gICAgICAgICAgbWluID0gX2NoZWNrYm94R3JvdXAyLm1pbjtcblxuICAgICAgcmV0dXJuICEhKG1heCB8fCBtaW4pICYmIHRoaXMubW9kZWwubGVuZ3RoID49IG1heCAmJiAhdGhpcy5pc0NoZWNrZWQgfHwgdGhpcy5tb2RlbC5sZW5ndGggPD0gbWluICYmIHRoaXMuaXNDaGVja2VkO1xuICAgIH0sXG4gICAgaXNEaXNhYmxlZDogZnVuY3Rpb24gaXNEaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jaGVja2JveEdyb3VwID8gdGhpcy5fY2hlY2tib3hHcm91cC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLmVsRm9ybSB8fCB7fSkuZGlzYWJsZWQgfHwgdGhpcy5pc0xpbWl0RGlzYWJsZWQgOiB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLmVsRm9ybSB8fCB7fSkuZGlzYWJsZWQ7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgYWRkVG9TdG9yZTogZnVuY3Rpb24gYWRkVG9TdG9yZSgpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMubW9kZWwpICYmIHRoaXMubW9kZWwuaW5kZXhPZih0aGlzLmxhYmVsKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5tb2RlbC5wdXNoKHRoaXMubGFiZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IHRoaXMudHJ1ZUxhYmVsIHx8IHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldikge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuaXNMaW1pdEV4Y2VlZGVkKSByZXR1cm47XG4gICAgICB2YXIgdmFsdWUgPSB2b2lkIDA7XG4gICAgICBpZiAoZXYudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLnRydWVMYWJlbCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHRoaXMudHJ1ZUxhYmVsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmZhbHNlTGFiZWwgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdGhpcy5mYWxzZUxhYmVsO1xuICAgICAgfVxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsdWUsIGV2KTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLl9jaGVja2JveEdyb3VwKSB7XG4gICAgICAgICAgX3RoaXMuZGlzcGF0Y2goJ0VsQ2hlY2tib3hHcm91cCcsICdjaGFuZ2UnLCBbX3RoaXMuX2NoZWNrYm94R3JvdXAudmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdGhpcy5jaGVja2VkICYmIHRoaXMuYWRkVG9TdG9yZSgpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LWJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2NoZWNrYm94X2J1dHRvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChjaGVja2JveF9idXR0b252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LWJ1dHRvbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBjaGVja2JveF9idXR0b25fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfY2hlY2tib3hfYnV0dG9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBjaGVja2JveF9idXR0b252dWVfdHlwZV90ZW1wbGF0ZV9pZF80NzhlOTA2ZV9yZW5kZXIsXG4gIGNoZWNrYm94X2J1dHRvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQ3OGU5MDZlX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgY2hlY2tib3hfYnV0dG9uX2FwaTsgfVxuY2hlY2tib3hfYnV0dG9uX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LWJ1dHRvbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2hlY2tib3hfYnV0dG9uID0gKGNoZWNrYm94X2J1dHRvbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NoZWNrYm94LWJ1dHRvbi9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jaGVja2JveF9idXR0b24uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChjaGVja2JveF9idXR0b24ubmFtZSwgY2hlY2tib3hfYnV0dG9uKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2NoZWNrYm94X2J1dHRvbiA9IChjaGVja2JveF9idXR0b24pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gtZ3JvdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcyODlhMjkwJlxudmFyIGNoZWNrYm94X2dyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfNzI4OWEyOTBfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY2hlY2tib3gtZ3JvdXBcIixcbiAgICAgIGF0dHJzOiB7IHJvbGU6IFwiZ3JvdXBcIiwgXCJhcmlhLWxhYmVsXCI6IFwiY2hlY2tib3gtZ3JvdXBcIiB9XG4gICAgfSxcbiAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgMlxuICApXG59XG52YXIgY2hlY2tib3hfZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF83Mjg5YTI5MF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuY2hlY2tib3hfZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF83Mjg5YTI5MF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC1ncm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzI4OWEyOTAmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC1ncm91cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjaGVja2JveF9ncm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbENoZWNrYm94R3JvdXAnLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbENoZWNrYm94R3JvdXAnLFxuXG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hXSxcblxuICBpbmplY3Q6IHtcbiAgICBlbEZvcm1JdGVtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7fSxcbiAgICBkaXNhYmxlZDogQm9vbGVhbixcbiAgICBtaW46IE51bWJlcixcbiAgICBtYXg6IE51bWJlcixcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgZmlsbDogU3RyaW5nLFxuICAgIHRleHRDb2xvcjogU3RyaW5nXG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBfZWxGb3JtSXRlbVNpemU6IGZ1bmN0aW9uIF9lbEZvcm1JdGVtU2l6ZSgpIHtcbiAgICAgIHJldHVybiAodGhpcy5lbEZvcm1JdGVtIHx8IHt9KS5lbEZvcm1JdGVtU2l6ZTtcbiAgICB9LFxuICAgIGNoZWNrYm94R3JvdXBTaXplOiBmdW5jdGlvbiBjaGVja2JveEdyb3VwU2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpemUgfHwgdGhpcy5fZWxGb3JtSXRlbVNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKF92YWx1ZSkge1xuICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmNoYW5nZScsIFtfdmFsdWVdKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gtZ3JvdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19jaGVja2JveF9ncm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChjaGVja2JveF9ncm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jaGVja2JveC9zcmMvY2hlY2tib3gtZ3JvdXAudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY2hlY2tib3hfZ3JvdXBfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfY2hlY2tib3hfZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGNoZWNrYm94X2dyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfNzI4OWEyOTBfcmVuZGVyLFxuICBjaGVja2JveF9ncm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzcyODlhMjkwX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgY2hlY2tib3hfZ3JvdXBfYXBpOyB9XG5jaGVja2JveF9ncm91cF9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2NoZWNrYm94L3NyYy9jaGVja2JveC1ncm91cC52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2hlY2tib3hfZ3JvdXAgPSAoY2hlY2tib3hfZ3JvdXBfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jaGVja2JveC1ncm91cC9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jaGVja2JveF9ncm91cC5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGNoZWNrYm94X2dyb3VwLm5hbWUsIGNoZWNrYm94X2dyb3VwKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2NoZWNrYm94X2dyb3VwID0gKGNoZWNrYm94X2dyb3VwKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc3dpdGNoL3NyYy9jb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJkY2Q4ZmJiJlxudmFyIGNvbXBvbmVudHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJkY2Q4ZmJiX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXN3aXRjaFwiLFxuICAgICAgY2xhc3M6IHsgXCJpcy1kaXNhYmxlZFwiOiBfdm0uc3dpdGNoRGlzYWJsZWQsIFwiaXMtY2hlY2tlZFwiOiBfdm0uY2hlY2tlZCB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogXCJzd2l0Y2hcIixcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogX3ZtLmNoZWNrZWQsXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBfdm0uc3dpdGNoRGlzYWJsZWRcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICByZXR1cm4gX3ZtLnN3aXRjaFZhbHVlKCRldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1zd2l0Y2hfX2lucHV0XCIsXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICAgIGlkOiBfdm0uaWQsXG4gICAgICAgICAgbmFtZTogX3ZtLm5hbWUsXG4gICAgICAgICAgXCJ0cnVlLXZhbHVlXCI6IF92bS5hY3RpdmVWYWx1ZSxcbiAgICAgICAgICBcImZhbHNlLXZhbHVlXCI6IF92bS5pbmFjdGl2ZVZhbHVlLFxuICAgICAgICAgIGRpc2FibGVkOiBfdm0uc3dpdGNoRGlzYWJsZWRcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBjaGFuZ2U6IF92bS5oYW5kbGVDaGFuZ2UsXG4gICAgICAgICAga2V5ZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMywgJGV2ZW50LmtleSwgXCJFbnRlclwiKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3ZtLnN3aXRjaFZhbHVlKCRldmVudClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgX3ZtLmluYWN0aXZlSWNvbkNsYXNzIHx8IF92bS5pbmFjdGl2ZVRleHRcbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgICAgIFwiZWwtc3dpdGNoX19sYWJlbFwiLFxuICAgICAgICAgICAgICAgIFwiZWwtc3dpdGNoX19sYWJlbC0tbGVmdFwiLFxuICAgICAgICAgICAgICAgICFfdm0uY2hlY2tlZCA/IFwiaXMtYWN0aXZlXCIgOiBcIlwiXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5pbmFjdGl2ZUljb25DbGFzc1xuICAgICAgICAgICAgICAgID8gX2MoXCJpXCIsIHsgY2xhc3M6IFtfdm0uaW5hY3RpdmVJY29uQ2xhc3NdIH0pXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgIV92bS5pbmFjdGl2ZUljb25DbGFzcyAmJiBfdm0uaW5hY3RpdmVUZXh0XG4gICAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBhdHRyczogeyBcImFyaWEtaGlkZGVuXCI6IF92bS5jaGVja2VkIH0gfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5pbmFjdGl2ZVRleHQpKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX2MoXCJzcGFuXCIsIHtcbiAgICAgICAgcmVmOiBcImNvcmVcIixcbiAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc3dpdGNoX19jb3JlXCIsXG4gICAgICAgIHN0eWxlOiB7IHdpZHRoOiBfdm0uY29yZVdpZHRoICsgXCJweFwiIH1cbiAgICAgIH0pLFxuICAgICAgX3ZtLmFjdGl2ZUljb25DbGFzcyB8fCBfdm0uYWN0aXZlVGV4dFxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgICAgICAgXCJlbC1zd2l0Y2hfX2xhYmVsXCIsXG4gICAgICAgICAgICAgICAgXCJlbC1zd2l0Y2hfX2xhYmVsLS1yaWdodFwiLFxuICAgICAgICAgICAgICAgIF92bS5jaGVja2VkID8gXCJpcy1hY3RpdmVcIiA6IFwiXCJcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLmFjdGl2ZUljb25DbGFzc1xuICAgICAgICAgICAgICAgID8gX2MoXCJpXCIsIHsgY2xhc3M6IFtfdm0uYWN0aXZlSWNvbkNsYXNzXSB9KVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICFfdm0uYWN0aXZlSWNvbkNsYXNzICYmIF92bS5hY3RpdmVUZXh0XG4gICAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBhdHRyczogeyBcImFyaWEtaGlkZGVuXCI6ICFfdm0uY2hlY2tlZCB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uYWN0aXZlVGV4dCkpXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKClcbiAgICBdXG4gIClcbn1cbnZhciBjb21wb25lbnR2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yZGNkOGZiYl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuY29tcG9uZW50dnVlX3R5cGVfdGVtcGxhdGVfaWRfMmRjZDhmYmJfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zd2l0Y2gvc3JjL2NvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmRjZDhmYmImXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3N3aXRjaC9zcmMvY29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3dpdGNoX3NyY19jb21wb25lbnR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxTd2l0Y2gnLFxuICBtaXhpbnM6IFtmb2N1c19kZWZhdWx0KCkoJ2lucHV0JyksIG1pZ3JhdGluZ19kZWZhdWx0LmEsIGVtaXR0ZXJfZGVmYXVsdC5hXSxcbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB3aWR0aDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogNDBcbiAgICB9LFxuICAgIGFjdGl2ZUljb25DbGFzczoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGluYWN0aXZlSWNvbkNsYXNzOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgYWN0aXZlVGV4dDogU3RyaW5nLFxuICAgIGluYWN0aXZlVGV4dDogU3RyaW5nLFxuICAgIGFjdGl2ZUNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgaW5hY3RpdmVDb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGFjdGl2ZVZhbHVlOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgaW5hY3RpdmVWYWx1ZToge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgdmFsaWRhdGVFdmVudDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGlkOiBTdHJpbmdcbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29yZVdpZHRoOiB0aGlzLndpZHRoXG4gICAgfTtcbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICBpZiAoIX5bdGhpcy5hY3RpdmVWYWx1ZSwgdGhpcy5pbmFjdGl2ZVZhbHVlXS5pbmRleE9mKHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMuaW5hY3RpdmVWYWx1ZSk7XG4gICAgfVxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgY2hlY2tlZDogZnVuY3Rpb24gY2hlY2tlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSB0aGlzLmFjdGl2ZVZhbHVlO1xuICAgIH0sXG4gICAgc3dpdGNoRGlzYWJsZWQ6IGZ1bmN0aW9uIHN3aXRjaERpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZDtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgY2hlY2tlZDogZnVuY3Rpb24gY2hlY2tlZCgpIHtcbiAgICAgIHRoaXMuJHJlZnMuaW5wdXQuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUNvbG9yIHx8IHRoaXMuaW5hY3RpdmVDb2xvcikge1xuICAgICAgICB0aGlzLnNldEJhY2tncm91bmRDb2xvcigpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmFsaWRhdGVFdmVudCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKCdFbEZvcm1JdGVtJywgJ2VsLmZvcm0uY2hhbmdlJywgW3RoaXMudmFsdWVdKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldmVudCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIHZhbCA9IHRoaXMuY2hlY2tlZCA/IHRoaXMuaW5hY3RpdmVWYWx1ZSA6IHRoaXMuYWN0aXZlVmFsdWU7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbCk7XG4gICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCB2YWwpO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBzZXQgaW5wdXQncyBjaGVja2VkIHByb3BlcnR5XG4gICAgICAgIC8vIGluIGNhc2UgcGFyZW50IHJlZnVzZXMgdG8gY2hhbmdlIGNvbXBvbmVudCdzIHZhbHVlXG4gICAgICAgIGlmIChfdGhpcy4kcmVmcy5pbnB1dCkge1xuICAgICAgICAgIF90aGlzLiRyZWZzLmlucHV0LmNoZWNrZWQgPSBfdGhpcy5jaGVja2VkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNldEJhY2tncm91bmRDb2xvcjogZnVuY3Rpb24gc2V0QmFja2dyb3VuZENvbG9yKCkge1xuICAgICAgdmFyIG5ld0NvbG9yID0gdGhpcy5jaGVja2VkID8gdGhpcy5hY3RpdmVDb2xvciA6IHRoaXMuaW5hY3RpdmVDb2xvcjtcbiAgICAgIHRoaXMuJHJlZnMuY29yZS5zdHlsZS5ib3JkZXJDb2xvciA9IG5ld0NvbG9yO1xuICAgICAgdGhpcy4kcmVmcy5jb3JlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IG5ld0NvbG9yO1xuICAgIH0sXG4gICAgc3dpdGNoVmFsdWU6IGZ1bmN0aW9uIHN3aXRjaFZhbHVlKCkge1xuICAgICAgIXRoaXMuc3dpdGNoRGlzYWJsZWQgJiYgdGhpcy5oYW5kbGVDaGFuZ2UoKTtcbiAgICB9LFxuICAgIGdldE1pZ3JhdGluZ0NvbmZpZzogZnVuY3Rpb24gZ2V0TWlncmF0aW5nQ29uZmlnKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAnb24tY29sb3InOiAnb24tY29sb3IgaXMgcmVuYW1lZCB0byBhY3RpdmUtY29sb3IuJyxcbiAgICAgICAgICAnb2ZmLWNvbG9yJzogJ29mZi1jb2xvciBpcyByZW5hbWVkIHRvIGluYWN0aXZlLWNvbG9yLicsXG4gICAgICAgICAgJ29uLXRleHQnOiAnb24tdGV4dCBpcyByZW5hbWVkIHRvIGFjdGl2ZS10ZXh0LicsXG4gICAgICAgICAgJ29mZi10ZXh0JzogJ29mZi10ZXh0IGlzIHJlbmFtZWQgdG8gaW5hY3RpdmUtdGV4dC4nLFxuICAgICAgICAgICdvbi12YWx1ZSc6ICdvbi12YWx1ZSBpcyByZW5hbWVkIHRvIGFjdGl2ZS12YWx1ZS4nLFxuICAgICAgICAgICdvZmYtdmFsdWUnOiAnb2ZmLXZhbHVlIGlzIHJlbmFtZWQgdG8gaW5hY3RpdmUtdmFsdWUuJyxcbiAgICAgICAgICAnb24taWNvbi1jbGFzcyc6ICdvbi1pY29uLWNsYXNzIGlzIHJlbmFtZWQgdG8gYWN0aXZlLWljb24tY2xhc3MuJyxcbiAgICAgICAgICAnb2ZmLWljb24tY2xhc3MnOiAnb2ZmLWljb24tY2xhc3MgaXMgcmVuYW1lZCB0byBpbmFjdGl2ZS1pY29uLWNsYXNzLidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgdGhpcy5jb3JlV2lkdGggPSB0aGlzLndpZHRoIHx8IDQwO1xuICAgIGlmICh0aGlzLmFjdGl2ZUNvbG9yIHx8IHRoaXMuaW5hY3RpdmVDb2xvcikge1xuICAgICAgdGhpcy5zZXRCYWNrZ3JvdW5kQ29sb3IoKTtcbiAgICB9XG4gICAgdGhpcy4kcmVmcy5pbnB1dC5jaGVja2VkID0gdGhpcy5jaGVja2VkO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc3dpdGNoL3NyYy9jb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3N3aXRjaF9zcmNfY29tcG9uZW50dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHN3aXRjaF9zcmNfY29tcG9uZW50dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3N3aXRjaC9zcmMvY29tcG9uZW50LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHNyY19jb21wb25lbnRfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19zd2l0Y2hfc3JjX2NvbXBvbmVudHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgY29tcG9uZW50dnVlX3R5cGVfdGVtcGxhdGVfaWRfMmRjZDhmYmJfcmVuZGVyLFxuICBjb21wb25lbnR2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yZGNkOGZiYl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHNyY19jb21wb25lbnRfYXBpOyB9XG5zcmNfY29tcG9uZW50X2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvc3dpdGNoL3NyYy9jb21wb25lbnQudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN3aXRjaF9zcmNfY29tcG9uZW50ID0gKHNyY19jb21wb25lbnRfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zd2l0Y2gvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3dpdGNoX3NyY19jb21wb25lbnQuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzd2l0Y2hfc3JjX2NvbXBvbmVudC5uYW1lLCBzd2l0Y2hfc3JjX2NvbXBvbmVudCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19zd2l0Y2ggPSAoc3dpdGNoX3NyY19jb21wb25lbnQpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGU0YWFkZTYmXG52YXIgc2VsZWN0dnVlX3R5cGVfdGVtcGxhdGVfaWRfMGU0YWFkZTZfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJjbGlja291dHNpZGVcIixcbiAgICAgICAgICByYXdOYW1lOiBcInYtY2xpY2tvdXRzaWRlXCIsXG4gICAgICAgICAgdmFsdWU6IF92bS5oYW5kbGVDbG9zZSxcbiAgICAgICAgICBleHByZXNzaW9uOiBcImhhbmRsZUNsb3NlXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXNlbGVjdFwiLFxuICAgICAgY2xhc3M6IFtfdm0uc2VsZWN0U2l6ZSA/IFwiZWwtc2VsZWN0LS1cIiArIF92bS5zZWxlY3RTaXplIDogXCJcIl0sXG4gICAgICBvbjoge1xuICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgcmV0dXJuIF92bS50b2dnbGVNZW51KCRldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLm11bHRpcGxlXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByZWY6IFwidGFnc1wiLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1zZWxlY3RfX3RhZ3NcIixcbiAgICAgICAgICAgICAgc3R5bGU6IHsgXCJtYXgtd2lkdGhcIjogX3ZtLmlucHV0V2lkdGggLSAzMiArIFwicHhcIiwgd2lkdGg6IFwiMTAwJVwiIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5jb2xsYXBzZVRhZ3MgJiYgX3ZtLnNlbGVjdGVkLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImVsLXRhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NhYmxlOiAhX3ZtLnNlbGVjdERpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IF92bS5jb2xsYXBzZVRhZ1NpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGl0OiBfdm0uc2VsZWN0ZWRbMF0uaGl0U3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpbmZvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXNhYmxlLXRyYW5zaXRpb25zXCI6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGVsZXRlVGFnKCRldmVudCwgX3ZtLnNlbGVjdGVkWzBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtc2VsZWN0X190YWdzLXRleHRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uc2VsZWN0ZWRbMF0uY3VycmVudExhYmVsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3RlZC5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtdGFnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBfdm0uY29sbGFwc2VUYWdTaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImluZm9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXNhYmxlLXRyYW5zaXRpb25zXCI6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1zZWxlY3RfX3RhZ3MtdGV4dFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCIrIFwiICsgX3ZtLl9zKF92bS5zZWxlY3RlZC5sZW5ndGggLSAxKSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAhX3ZtLmNvbGxhcHNlVGFnc1xuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwidHJhbnNpdGlvbi1ncm91cFwiLFxuICAgICAgICAgICAgICAgICAgICB7IG9uOiB7IFwiYWZ0ZXItbGVhdmVcIjogX3ZtLnJlc2V0SW5wdXRIZWlnaHQgfSB9LFxuICAgICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLnNlbGVjdGVkLCBmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC10YWdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBfdm0uZ2V0VmFsdWVLZXkoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2FibGU6ICFfdm0uc2VsZWN0RGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogX3ZtLmNvbGxhcHNlVGFnU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXQ6IGl0ZW0uaGl0U3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpbmZvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXNhYmxlLXRyYW5zaXRpb25zXCI6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGVsZXRlVGFnKCRldmVudCwgaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXNlbGVjdF9fdGFncy10ZXh0XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoaXRlbS5jdXJyZW50TGFiZWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICBfdm0uZmlsdGVyYWJsZVxuICAgICAgICAgICAgICAgID8gX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ucXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1zZWxlY3RfX2lucHV0XCIsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiBbX3ZtLnNlbGVjdFNpemUgPyBcImlzLVwiICsgX3ZtLnNlbGVjdFNpemUgOiBcIlwiXSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICBcImZsZXgtZ3Jvd1wiOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogX3ZtLmlucHV0TGVuZ3RoIC8gKF92bS5pbnB1dFdpZHRoIC0gMzIpICsgXCIlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJtYXgtd2lkdGhcIjogX3ZtLmlucHV0V2lkdGggLSA0MiArIFwicHhcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uc2VsZWN0RGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBfdm0uYXV0b0NvbXBsZXRlIHx8IF92bS5hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5xdWVyeSB9LFxuICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOiBfdm0uaGFuZGxlRm9jdXMsXG4gICAgICAgICAgICAgICAgICAgICAgYmx1cjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uc29mdEZvY3VzID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGtleXVwOiBfdm0ubWFuYWdlUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAga2V5ZG93bjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnJlc2V0SW5wdXRTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZG93blwiLCA0MCwgJGV2ZW50LmtleSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEb3duXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycm93RG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlTmF2aWdhdGUoXCJuZXh0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJ1cFwiLCAzOCwgJGV2ZW50LmtleSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJVcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnJvd1VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVOYXZpZ2F0ZShcInByZXZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmtleUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkVudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5zZWxlY3RPcHRpb24oJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZXNjXCIsIDI3LCAkZXZlbnQua2V5LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkVzY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFc2NhcGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmtleUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRlbGV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzgsIDQ2XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJCYWNrc3BhY2VcIiwgXCJEZWxldGVcIiwgXCJEZWxcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5kZWxldGVQcmV2VGFnKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcInRhYlwiLCA5LCAkZXZlbnQua2V5LCBcIlRhYlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0aW9uc3RhcnQ6IF92bS5oYW5kbGVDb21wb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbnVwZGF0ZTogX3ZtLmhhbmRsZUNvbXBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0aW9uZW5kOiBfdm0uaGFuZGxlQ29tcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ucXVlcnkgPSAkZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRlYm91bmNlZFF1ZXJ5Q2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZWwtaW5wdXRcIixcbiAgICAgICAge1xuICAgICAgICAgIHJlZjogXCJyZWZlcmVuY2VcIixcbiAgICAgICAgICBjbGFzczogeyBcImlzLWZvY3VzXCI6IF92bS52aXNpYmxlIH0sXG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS5jdXJyZW50UGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBuYW1lOiBfdm0ubmFtZSxcbiAgICAgICAgICAgIGlkOiBfdm0uaWQsXG4gICAgICAgICAgICBhdXRvY29tcGxldGU6IF92bS5hdXRvQ29tcGxldGUgfHwgX3ZtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIHNpemU6IF92bS5zZWxlY3RTaXplLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5zZWxlY3REaXNhYmxlZCxcbiAgICAgICAgICAgIHJlYWRvbmx5OiBfdm0ucmVhZG9ubHksXG4gICAgICAgICAgICBcInZhbGlkYXRlLWV2ZW50XCI6IGZhbHNlLFxuICAgICAgICAgICAgdGFiaW5kZXg6IF92bS5tdWx0aXBsZSAmJiBfdm0uZmlsdGVyYWJsZSA/IFwiLTFcIiA6IG51bGxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBmb2N1czogX3ZtLmhhbmRsZUZvY3VzLFxuICAgICAgICAgICAgYmx1cjogX3ZtLmhhbmRsZUJsdXIsXG4gICAgICAgICAgICBpbnB1dDogX3ZtLmRlYm91bmNlZE9uSW5wdXRDaGFuZ2UsXG4gICAgICAgICAgICBjb21wb3NpdGlvbnN0YXJ0OiBfdm0uaGFuZGxlQ29tcG9zaXRpb24sXG4gICAgICAgICAgICBjb21wb3NpdGlvbnVwZGF0ZTogX3ZtLmhhbmRsZUNvbXBvc2l0aW9uLFxuICAgICAgICAgICAgY29tcG9zaXRpb25lbmQ6IF92bS5oYW5kbGVDb21wb3NpdGlvblxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmF0aXZlT246IHtcbiAgICAgICAgICAgIGtleWRvd246IFtcbiAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJkb3duXCIsIDQwLCAkZXZlbnQua2V5LCBbXG4gICAgICAgICAgICAgICAgICAgIFwiRG93blwiLFxuICAgICAgICAgICAgICAgICAgICBcIkFycm93RG93blwiXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICBfdm0uaGFuZGxlTmF2aWdhdGUoXCJuZXh0XCIpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwidXBcIiwgMzgsICRldmVudC5rZXksIFtcbiAgICAgICAgICAgICAgICAgICAgXCJVcFwiLFxuICAgICAgICAgICAgICAgICAgICBcIkFycm93VXBcIlxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgX3ZtLmhhbmRsZU5hdmlnYXRlKFwicHJldlwiKVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzLCAkZXZlbnQua2V5LCBcIkVudGVyXCIpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIHJldHVybiBfdm0uc2VsZWN0T3B0aW9uKCRldmVudClcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlc2NcIiwgMjcsICRldmVudC5rZXksIFtcbiAgICAgICAgICAgICAgICAgICAgXCJFc2NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJFc2NhcGVcIlxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgX3ZtLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcInRhYlwiLCA5LCAkZXZlbnQua2V5LCBcIlRhYlwiKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgX3ZtLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIF92bS5pbnB1dEhvdmVyaW5nID0gdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vdXNlbGVhdmU6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICBfdm0uaW5wdXRIb3ZlcmluZyA9IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgdmFsdWU6IF92bS5zZWxlY3RlZExhYmVsLFxuICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICBfdm0uc2VsZWN0ZWRMYWJlbCA9ICQkdlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VsZWN0ZWRMYWJlbFwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX3ZtLiRzbG90cy5wcmVmaXhcbiAgICAgICAgICAgID8gX2MoXCJ0ZW1wbGF0ZVwiLCB7IHNsb3Q6IFwicHJlZml4XCIgfSwgW192bS5fdChcInByZWZpeFwiKV0sIDIpXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF9jKFwidGVtcGxhdGVcIiwgeyBzbG90OiBcInN1ZmZpeFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogIV92bS5zaG93Q2xvc2UsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIiFzaG93Q2xvc2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgY2xhc3M6IFtcbiAgICAgICAgICAgICAgICBcImVsLXNlbGVjdF9fY2FyZXRcIixcbiAgICAgICAgICAgICAgICBcImVsLWlucHV0X19pY29uXCIsXG4gICAgICAgICAgICAgICAgXCJlbC1pY29uLVwiICsgX3ZtLmljb25DbGFzc1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF92bS5zaG93Q2xvc2VcbiAgICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgIFwiZWwtc2VsZWN0X19jYXJldCBlbC1pbnB1dF9faWNvbiBlbC1pY29uLWNpcmNsZS1jbG9zZVwiLFxuICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5oYW5kbGVDbGVhckNsaWNrIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgXSlcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKSxcbiAgICAgIF9jKFxuICAgICAgICBcInRyYW5zaXRpb25cIixcbiAgICAgICAge1xuICAgICAgICAgIGF0dHJzOiB7IG5hbWU6IFwiZWwtem9vbS1pbi10b3BcIiB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBcImJlZm9yZS1lbnRlclwiOiBfdm0uaGFuZGxlTWVudUVudGVyLFxuICAgICAgICAgICAgXCJhZnRlci1sZWF2ZVwiOiBfdm0uZG9EZXN0cm95XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImVsLXNlbGVjdC1tZW51XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZpc2libGUgJiYgX3ZtLmVtcHR5VGV4dCAhPT0gZmFsc2UsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInZpc2libGUgJiYgZW1wdHlUZXh0ICE9PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZWY6IFwicG9wcGVyXCIsXG4gICAgICAgICAgICAgIGF0dHJzOiB7IFwiYXBwZW5kLXRvLWJvZHlcIjogX3ZtLnBvcHBlckFwcGVuZFRvQm9keSB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImVsLXNjcm9sbGJhclwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5vcHRpb25zLmxlbmd0aCA+IDAgJiYgIV92bS5sb2FkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwib3B0aW9ucy5sZW5ndGggPiAwICYmICFsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIHJlZjogXCJzY3JvbGxiYXJcIixcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiaXMtZW1wdHlcIjpcbiAgICAgICAgICAgICAgICAgICAgICAhX3ZtLmFsbG93Q3JlYXRlICYmXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnF1ZXJ5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLmZpbHRlcmVkT3B0aW9uc0NvdW50ID09PSAwXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBcInVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwid3JhcC1jbGFzc1wiOiBcImVsLXNlbGVjdC1kcm9wZG93bl9fd3JhcFwiLFxuICAgICAgICAgICAgICAgICAgICBcInZpZXctY2xhc3NcIjogXCJlbC1zZWxlY3QtZHJvcGRvd25fX2xpc3RcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX3ZtLnNob3dOZXdPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgPyBfYyhcImVsLW9wdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB2YWx1ZTogX3ZtLnF1ZXJ5LCBjcmVhdGVkOiBcIlwiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgX3ZtLl90KFwiZGVmYXVsdFwiKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBfdm0uZW1wdHlUZXh0ICYmXG4gICAgICAgICAgICAgICghX3ZtLmFsbG93Q3JlYXRlIHx8XG4gICAgICAgICAgICAgICAgX3ZtLmxvYWRpbmcgfHxcbiAgICAgICAgICAgICAgICAoX3ZtLmFsbG93Q3JlYXRlICYmIF92bS5vcHRpb25zLmxlbmd0aCA9PT0gMCkpXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2xvdHMuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICA/IF92bS5fdChcImVtcHR5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgOiBfYyhcInBcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1zZWxlY3QtZHJvcGRvd25fX2VtcHR5XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lbXB0eVRleHQpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzZWxlY3R2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wZTRhYWRlNl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuc2VsZWN0dnVlX3R5cGVfdGVtcGxhdGVfaWRfMGU0YWFkZTZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGU0YWFkZTYmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QtZHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2ODI4NzQ4JlxudmFyIHNlbGVjdF9kcm9wZG93bnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA2ODI4NzQ4X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXNlbGVjdC1kcm9wZG93biBlbC1wb3BwZXJcIixcbiAgICAgIGNsYXNzOiBbeyBcImlzLW11bHRpcGxlXCI6IF92bS4kcGFyZW50Lm11bHRpcGxlIH0sIF92bS5wb3BwZXJDbGFzc10sXG4gICAgICBzdHlsZTogeyBtaW5XaWR0aDogX3ZtLm1pbldpZHRoIH1cbiAgICB9LFxuICAgIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSxcbiAgICAyXG4gIClcbn1cbnZhciBzZWxlY3RfZHJvcGRvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNjgyODc0OF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuc2VsZWN0X2Ryb3Bkb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY4Mjg3NDhfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC1kcm9wZG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDY4Mjg3NDgmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LWRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNlbGVjdF9kcm9wZG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFNlbGVjdERyb3Bkb3duJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxTZWxlY3REcm9wZG93bicsXG5cbiAgbWl4aW5zOiBbdnVlX3BvcHBlcl9kZWZhdWx0LmFdLFxuXG4gIHByb3BzOiB7XG4gICAgcGxhY2VtZW50OiB7XG4gICAgICBkZWZhdWx0OiAnYm90dG9tLXN0YXJ0J1xuICAgIH0sXG5cbiAgICBib3VuZGFyaWVzUGFkZGluZzoge1xuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG5cbiAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBncHVBY2NlbGVyYXRpb246IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcblxuICAgIHZpc2libGVBcnJvdzoge1xuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG5cbiAgICBhcHBlbmRUb0JvZHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1pbldpZHRoOiAnJ1xuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIHBvcHBlckNsYXNzOiBmdW5jdGlvbiBwb3BwZXJDbGFzcygpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQucG9wcGVyQ2xhc3M7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgJyRwYXJlbnQuaW5wdXRXaWR0aCc6IGZ1bmN0aW9uICRwYXJlbnRJbnB1dFdpZHRoKCkge1xuICAgICAgdGhpcy5taW5XaWR0aCA9IHRoaXMuJHBhcmVudC4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyAncHgnO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnJlZmVyZW5jZUVsbSA9IHRoaXMuJHBhcmVudC4kcmVmcy5yZWZlcmVuY2UuJGVsO1xuICAgIHRoaXMuJHBhcmVudC5wb3BwZXJFbG0gPSB0aGlzLnBvcHBlckVsbSA9IHRoaXMuJGVsO1xuICAgIHRoaXMuJG9uKCd1cGRhdGVQb3BwZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuJHBhcmVudC52aXNpYmxlKSBfdGhpcy51cGRhdGVQb3BwZXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLiRvbignZGVzdHJveVBvcHBlcicsIHRoaXMuZGVzdHJveVBvcHBlcik7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC1kcm9wZG93bi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3NlbGVjdF9kcm9wZG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChzZWxlY3RfZHJvcGRvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QtZHJvcGRvd24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgc2VsZWN0X2Ryb3Bkb3duX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX3NlbGVjdF9kcm9wZG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgc2VsZWN0X2Ryb3Bkb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY4Mjg3NDhfcmVuZGVyLFxuICBzZWxlY3RfZHJvcGRvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNjgyODc0OF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHNlbGVjdF9kcm9wZG93bl9hcGk7IH1cbnNlbGVjdF9kcm9wZG93bl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LWRyb3Bkb3duLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzZWxlY3RfZHJvcGRvd24gPSAoc2VsZWN0X2Ryb3Bkb3duX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdhNDRjNjQyJlxudmFyIG9wdGlvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzdhNDRjNjQyX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImxpXCIsXG4gICAge1xuICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICB2YWx1ZTogX3ZtLnZpc2libGUsXG4gICAgICAgICAgZXhwcmVzc2lvbjogXCJ2aXNpYmxlXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXNlbGVjdC1kcm9wZG93bl9faXRlbVwiLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgc2VsZWN0ZWQ6IF92bS5pdGVtU2VsZWN0ZWQsXG4gICAgICAgIFwiaXMtZGlzYWJsZWRcIjogX3ZtLmRpc2FibGVkIHx8IF92bS5ncm91cERpc2FibGVkIHx8IF92bS5saW1pdFJlYWNoZWQsXG4gICAgICAgIGhvdmVyOiBfdm0uaG92ZXJcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBtb3VzZWVudGVyOiBfdm0uaG92ZXJJdGVtLFxuICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgcmV0dXJuIF92bS5zZWxlY3RPcHRpb25DbGljaygkZXZlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtfdm0uX3QoXCJkZWZhdWx0XCIsIFtfYyhcInNwYW5cIiwgW192bS5fdihfdm0uX3MoX3ZtLmN1cnJlbnRMYWJlbCkpXSldKV0sXG4gICAgMlxuICApXG59XG52YXIgb3B0aW9udnVlX3R5cGVfdGVtcGxhdGVfaWRfN2E0NGM2NDJfc3RhdGljUmVuZGVyRm5zID0gW11cbm9wdGlvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzdhNDRjNjQyX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdhNDRjNjQyJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBvcHRpb252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sXG5cbiAgbmFtZTogJ0VsT3B0aW9uJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxPcHRpb24nLFxuXG4gIGluamVjdDogWydzZWxlY3QnXSxcblxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgbGFiZWw6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgY3JlYXRlZDogQm9vbGVhbixcbiAgICBkaXNhYmxlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiAtMSxcbiAgICAgIGdyb3VwRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgIGhpdFN0YXRlOiBmYWxzZSxcbiAgICAgIGhvdmVyOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGlzT2JqZWN0OiBmdW5jdGlvbiBpc09iamVjdCgpIHtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcy52YWx1ZSkudG9Mb3dlckNhc2UoKSA9PT0gJ1tvYmplY3Qgb2JqZWN0XSc7XG4gICAgfSxcbiAgICBjdXJyZW50TGFiZWw6IGZ1bmN0aW9uIGN1cnJlbnRMYWJlbCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhYmVsIHx8ICh0aGlzLmlzT2JqZWN0ID8gJycgOiB0aGlzLnZhbHVlKTtcbiAgICB9LFxuICAgIGN1cnJlbnRWYWx1ZTogZnVuY3Rpb24gY3VycmVudFZhbHVlKCkge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgdGhpcy5sYWJlbCB8fCAnJztcbiAgICB9LFxuICAgIGl0ZW1TZWxlY3RlZDogZnVuY3Rpb24gaXRlbVNlbGVjdGVkKCkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdC5tdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VxdWFsKHRoaXMudmFsdWUsIHRoaXMuc2VsZWN0LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zKHRoaXMuc2VsZWN0LnZhbHVlLCB0aGlzLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpbWl0UmVhY2hlZDogZnVuY3Rpb24gbGltaXRSZWFjaGVkKCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0Lm11bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pdGVtU2VsZWN0ZWQgJiYgKHRoaXMuc2VsZWN0LnZhbHVlIHx8IFtdKS5sZW5ndGggPj0gdGhpcy5zZWxlY3QubXVsdGlwbGVMaW1pdCAmJiB0aGlzLnNlbGVjdC5tdWx0aXBsZUxpbWl0ID4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICBjdXJyZW50TGFiZWw6IGZ1bmN0aW9uIGN1cnJlbnRMYWJlbCgpIHtcbiAgICAgIGlmICghdGhpcy5jcmVhdGVkICYmICF0aGlzLnNlbGVjdC5yZW1vdGUpIHRoaXMuZGlzcGF0Y2goJ0VsU2VsZWN0JywgJ3NldFNlbGVjdGVkJyk7XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsLCBvbGRWYWwpIHtcbiAgICAgIHZhciBfc2VsZWN0ID0gdGhpcy5zZWxlY3QsXG4gICAgICAgICAgcmVtb3RlID0gX3NlbGVjdC5yZW1vdGUsXG4gICAgICAgICAgdmFsdWVLZXkgPSBfc2VsZWN0LnZhbHVlS2V5O1xuXG4gICAgICBpZiAoIXRoaXMuY3JlYXRlZCAmJiAhcmVtb3RlKSB7XG4gICAgICAgIGlmICh2YWx1ZUtleSAmJiAodHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodmFsKSkgPT09ICdvYmplY3QnICYmICh0eXBlb2Ygb2xkVmFsID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvbGRWYWwpKSA9PT0gJ29iamVjdCcgJiYgdmFsW3ZhbHVlS2V5XSA9PT0gb2xkVmFsW3ZhbHVlS2V5XSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BhdGNoKCdFbFNlbGVjdCcsICdzZXRTZWxlY3RlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaXNFcXVhbDogZnVuY3Rpb24gaXNFcXVhbChhLCBiKSB7XG4gICAgICBpZiAoIXRoaXMuaXNPYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdmFsdWVLZXkgPSB0aGlzLnNlbGVjdC52YWx1ZUtleTtcbiAgICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKShhLCB2YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKShiLCB2YWx1ZUtleSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjb250YWluczogZnVuY3Rpb24gY29udGFpbnMoKSB7XG4gICAgICB2YXIgYXJyID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTtcbiAgICAgIHZhciB0YXJnZXQgPSBhcmd1bWVudHNbMV07XG5cbiAgICAgIGlmICghdGhpcy5pc09iamVjdCkge1xuICAgICAgICByZXR1cm4gYXJyICYmIGFyci5pbmRleE9mKHRhcmdldCkgPiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB2YWx1ZUtleSA9IHRoaXMuc2VsZWN0LnZhbHVlS2V5O1xuICAgICAgICByZXR1cm4gYXJyICYmIGFyci5zb21lKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKShpdGVtLCB2YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKSh0YXJnZXQsIHZhbHVlS2V5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVHcm91cERpc2FibGVkOiBmdW5jdGlvbiBoYW5kbGVHcm91cERpc2FibGVkKHZhbCkge1xuICAgICAgdGhpcy5ncm91cERpc2FibGVkID0gdmFsO1xuICAgIH0sXG4gICAgaG92ZXJJdGVtOiBmdW5jdGlvbiBob3Zlckl0ZW0oKSB7XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZ3JvdXBEaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdC5ob3ZlckluZGV4ID0gdGhpcy5zZWxlY3Qub3B0aW9ucy5pbmRleE9mKHRoaXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0T3B0aW9uQ2xpY2s6IGZ1bmN0aW9uIHNlbGVjdE9wdGlvbkNsaWNrKCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgIT09IHRydWUgJiYgdGhpcy5ncm91cERpc2FibGVkICE9PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsU2VsZWN0JywgJ2hhbmRsZU9wdGlvbkNsaWNrJywgW3RoaXMsIHRydWVdKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHF1ZXJ5Q2hhbmdlOiBmdW5jdGlvbiBxdWVyeUNoYW5nZShxdWVyeSkge1xuICAgICAgdGhpcy52aXNpYmxlID0gbmV3IFJlZ0V4cChPYmplY3QodXRpbF9bXCJlc2NhcGVSZWdleHBTdHJpbmdcIl0pKHF1ZXJ5KSwgJ2knKS50ZXN0KHRoaXMuY3VycmVudExhYmVsKSB8fCB0aGlzLmNyZWF0ZWQ7XG4gICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLnNlbGVjdC5maWx0ZXJlZE9wdGlvbnNDb3VudC0tO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMuc2VsZWN0Lm9wdGlvbnMucHVzaCh0aGlzKTtcbiAgICB0aGlzLnNlbGVjdC5jYWNoZWRPcHRpb25zLnB1c2godGhpcyk7XG4gICAgdGhpcy5zZWxlY3Qub3B0aW9uc0NvdW50Kys7XG4gICAgdGhpcy5zZWxlY3QuZmlsdGVyZWRPcHRpb25zQ291bnQrKztcblxuICAgIHRoaXMuJG9uKCdxdWVyeUNoYW5nZScsIHRoaXMucXVlcnlDaGFuZ2UpO1xuICAgIHRoaXMuJG9uKCdoYW5kbGVHcm91cERpc2FibGVkJywgdGhpcy5oYW5kbGVHcm91cERpc2FibGVkKTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB2YXIgX3NlbGVjdDIgPSB0aGlzLnNlbGVjdCxcbiAgICAgICAgc2VsZWN0ZWQgPSBfc2VsZWN0Mi5zZWxlY3RlZCxcbiAgICAgICAgbXVsdGlwbGUgPSBfc2VsZWN0Mi5tdWx0aXBsZTtcblxuICAgIHZhciBzZWxlY3RlZE9wdGlvbnMgPSBtdWx0aXBsZSA/IHNlbGVjdGVkIDogW3NlbGVjdGVkXTtcbiAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdC5jYWNoZWRPcHRpb25zLmluZGV4T2YodGhpcyk7XG4gICAgdmFyIHNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZE9wdGlvbnMuaW5kZXhPZih0aGlzKTtcblxuICAgIC8vIGlmIG9wdGlvbiBpcyBub3Qgc2VsZWN0ZWQsIHJlbW92ZSBpdCBmcm9tIGNhY2hlXG4gICAgaWYgKGluZGV4ID4gLTEgJiYgc2VsZWN0ZWRJbmRleCA8IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0LmNhY2hlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Qub25PcHRpb25EZXN0cm95KHRoaXMuc2VsZWN0Lm9wdGlvbnMuaW5kZXhPZih0aGlzKSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX29wdGlvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChvcHRpb252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgb3B0aW9uX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX29wdGlvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgb3B0aW9udnVlX3R5cGVfdGVtcGxhdGVfaWRfN2E0NGM2NDJfcmVuZGVyLFxuICBvcHRpb252dWVfdHlwZV90ZW1wbGF0ZV9pZF83YTQ0YzY0Ml9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIG9wdGlvbl9hcGk7IH1cbm9wdGlvbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3NlbGVjdC9zcmMvb3B0aW9uLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfb3B0aW9uID0gKG9wdGlvbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdGFnXCJcbnZhciB0YWdfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7XG52YXIgdGFnX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHRhZ18pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvcmVzaXplLWV2ZW50XCJcbnZhciByZXNpemVfZXZlbnRfID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi91dGlscy9zY3JvbGwtaW50by12aWV3XCJcbnZhciBzY3JvbGxfaW50b192aWV3XyA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xudmFyIHNjcm9sbF9pbnRvX3ZpZXdfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oc2Nyb2xsX2ludG9fdmlld18pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NlbGVjdC9zcmMvbmF2aWdhdGlvbi1taXhpbi5qc1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbmF2aWdhdGlvbl9taXhpbiA9ICh7XG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdmVyT3B0aW9uOiAtMVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIG9wdGlvbnNBbGxEaXNhYmxlZDogZnVuY3Rpb24gb3B0aW9uc0FsbERpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLnZpc2libGU7XG4gICAgICB9KS5ldmVyeShmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24uZGlzYWJsZWQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICBob3ZlckluZGV4OiBmdW5jdGlvbiBob3ZlckluZGV4KHZhbCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmIHZhbCA+IC0xKSB7XG4gICAgICAgIHRoaXMuaG92ZXJPcHRpb24gPSB0aGlzLm9wdGlvbnNbdmFsXSB8fCB7fTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgb3B0aW9uLmhvdmVyID0gX3RoaXMuaG92ZXJPcHRpb24gPT09IG9wdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgbmF2aWdhdGVPcHRpb25zOiBmdW5jdGlvbiBuYXZpZ2F0ZU9wdGlvbnMoZGlyZWN0aW9uKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDAgfHwgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCA9PT0gMCkgcmV0dXJuO1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbnNBbGxEaXNhYmxlZCkge1xuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnbmV4dCcpIHtcbiAgICAgICAgICB0aGlzLmhvdmVySW5kZXgrKztcbiAgICAgICAgICBpZiAodGhpcy5ob3ZlckluZGV4ID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhvdmVySW5kZXggPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdwcmV2Jykge1xuICAgICAgICAgIHRoaXMuaG92ZXJJbmRleC0tO1xuICAgICAgICAgIGlmICh0aGlzLmhvdmVySW5kZXggPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmhvdmVySW5kZXggPSB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9wdGlvbiA9IHRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdO1xuICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkID09PSB0cnVlIHx8IG9wdGlvbi5ncm91cERpc2FibGVkID09PSB0cnVlIHx8ICFvcHRpb24udmlzaWJsZSkge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVPcHRpb25zKGRpcmVjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczIuc2Nyb2xsVG9PcHRpb24oX3RoaXMyLmhvdmVyT3B0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hLCBsb2NhbGVfZGVmYXVsdC5hLCBmb2N1c19kZWZhdWx0KCkoJ3JlZmVyZW5jZScpLCBuYXZpZ2F0aW9uX21peGluXSxcblxuICBuYW1lOiAnRWxTZWxlY3QnLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbFNlbGVjdCcsXG5cbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG5cbiAgICBlbEZvcm1JdGVtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnc2VsZWN0JzogdGhpc1xuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIF9lbEZvcm1JdGVtU2l6ZTogZnVuY3Rpb24gX2VsRm9ybUl0ZW1TaXplKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmVsRm9ybUl0ZW0gfHwge30pLmVsRm9ybUl0ZW1TaXplO1xuICAgIH0sXG4gICAgcmVhZG9ubHk6IGZ1bmN0aW9uIHJlYWRvbmx5KCkge1xuICAgICAgcmV0dXJuICF0aGlzLmZpbHRlcmFibGUgfHwgdGhpcy5tdWx0aXBsZSB8fCAhT2JqZWN0KHV0aWxfW1wiaXNJRVwiXSkoKSAmJiAhT2JqZWN0KHV0aWxfW1wiaXNFZGdlXCJdKSgpICYmICF0aGlzLnZpc2libGU7XG4gICAgfSxcbiAgICBzaG93Q2xvc2U6IGZ1bmN0aW9uIHNob3dDbG9zZSgpIHtcbiAgICAgIHZhciBoYXNWYWx1ZSA9IHRoaXMubXVsdGlwbGUgPyBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCA6IHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbHVlICE9PSBudWxsICYmIHRoaXMudmFsdWUgIT09ICcnO1xuICAgICAgdmFyIGNyaXRlcmlhID0gdGhpcy5jbGVhcmFibGUgJiYgIXRoaXMuc2VsZWN0RGlzYWJsZWQgJiYgdGhpcy5pbnB1dEhvdmVyaW5nICYmIGhhc1ZhbHVlO1xuICAgICAgcmV0dXJuIGNyaXRlcmlhO1xuICAgIH0sXG4gICAgaWNvbkNsYXNzOiBmdW5jdGlvbiBpY29uQ2xhc3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW1vdGUgJiYgdGhpcy5maWx0ZXJhYmxlID8gJycgOiB0aGlzLnZpc2libGUgPyAnYXJyb3ctdXAgaXMtcmV2ZXJzZScgOiAnYXJyb3ctdXAnO1xuICAgIH0sXG4gICAgZGVib3VuY2U6IGZ1bmN0aW9uIGRlYm91bmNlKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVtb3RlID8gMzAwIDogMDtcbiAgICB9LFxuICAgIGVtcHR5VGV4dDogZnVuY3Rpb24gZW1wdHlUZXh0KCkge1xuICAgICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nVGV4dCB8fCB0aGlzLnQoJ2VsLnNlbGVjdC5sb2FkaW5nJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5yZW1vdGUgJiYgdGhpcy5xdWVyeSA9PT0gJycgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlICYmIHRoaXMucXVlcnkgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDAgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm5vTWF0Y2hUZXh0IHx8IHRoaXMudCgnZWwuc2VsZWN0Lm5vTWF0Y2gnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm5vRGF0YVRleHQgfHwgdGhpcy50KCdlbC5zZWxlY3Qubm9EYXRhJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgc2hvd05ld09wdGlvbjogZnVuY3Rpb24gc2hvd05ld09wdGlvbigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBoYXNFeGlzdGluZ09wdGlvbiA9IHRoaXMub3B0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gIW9wdGlvbi5jcmVhdGVkO1xuICAgICAgfSkuc29tZShmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24uY3VycmVudExhYmVsID09PSBfdGhpcy5xdWVyeTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyYWJsZSAmJiB0aGlzLmFsbG93Q3JlYXRlICYmIHRoaXMucXVlcnkgIT09ICcnICYmICFoYXNFeGlzdGluZ09wdGlvbjtcbiAgICB9LFxuICAgIHNlbGVjdFNpemU6IGZ1bmN0aW9uIHNlbGVjdFNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaXplIHx8IHRoaXMuX2VsRm9ybUl0ZW1TaXplIHx8ICh0aGlzLiRFTEVNRU5UIHx8IHt9KS5zaXplO1xuICAgIH0sXG4gICAgc2VsZWN0RGlzYWJsZWQ6IGZ1bmN0aW9uIHNlbGVjdERpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZDtcbiAgICB9LFxuICAgIGNvbGxhcHNlVGFnU2l6ZTogZnVuY3Rpb24gY29sbGFwc2VUYWdTaXplKCkge1xuICAgICAgcmV0dXJuIFsnc21hbGwnLCAnbWluaSddLmluZGV4T2YodGhpcy5zZWxlY3RTaXplKSA+IC0xID8gJ21pbmknIDogJ3NtYWxsJztcbiAgICB9LFxuICAgIHByb3BQbGFjZWhvbGRlcjogZnVuY3Rpb24gcHJvcFBsYWNlaG9sZGVyKCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnBsYWNlaG9sZGVyICE9PSAndW5kZWZpbmVkJyA/IHRoaXMucGxhY2Vob2xkZXIgOiB0aGlzLnQoJ2VsLnNlbGVjdC5wbGFjZWhvbGRlcicpO1xuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnRzOiB7XG4gICAgRWxJbnB1dDogaW5wdXRfZGVmYXVsdC5hLFxuICAgIEVsU2VsZWN0TWVudTogc2VsZWN0X2Ryb3Bkb3duLFxuICAgIEVsT3B0aW9uOiBzcmNfb3B0aW9uLFxuICAgIEVsVGFnOiB0YWdfZGVmYXVsdC5hLFxuICAgIEVsU2Nyb2xsYmFyOiBzY3JvbGxiYXJfZGVmYXVsdC5hXG4gIH0sXG5cbiAgZGlyZWN0aXZlczogeyBDbGlja291dHNpZGU6IGNsaWNrb3V0c2lkZV9kZWZhdWx0LmEgfSxcblxuICBwcm9wczoge1xuICAgIG5hbWU6IFN0cmluZyxcbiAgICBpZDogU3RyaW5nLFxuICAgIHZhbHVlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgYXV0b2NvbXBsZXRlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnb2ZmJ1xuICAgIH0sXG4gICAgLyoqIEBEZXByZWNhdGVkIGluIG5leHQgbWFqb3IgdmVyc2lvbiAqL1xuICAgIGF1dG9Db21wbGV0ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgICBmYWxzZSAmJiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBhdXRvbWF0aWNEcm9wZG93bjogQm9vbGVhbixcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgY2xlYXJhYmxlOiBCb29sZWFuLFxuICAgIGZpbHRlcmFibGU6IEJvb2xlYW4sXG4gICAgYWxsb3dDcmVhdGU6IEJvb2xlYW4sXG4gICAgbG9hZGluZzogQm9vbGVhbixcbiAgICBwb3BwZXJDbGFzczogU3RyaW5nLFxuICAgIHJlbW90ZTogQm9vbGVhbixcbiAgICBsb2FkaW5nVGV4dDogU3RyaW5nLFxuICAgIG5vTWF0Y2hUZXh0OiBTdHJpbmcsXG4gICAgbm9EYXRhVGV4dDogU3RyaW5nLFxuICAgIHJlbW90ZU1ldGhvZDogRnVuY3Rpb24sXG4gICAgZmlsdGVyTWV0aG9kOiBGdW5jdGlvbixcbiAgICBtdWx0aXBsZTogQm9vbGVhbixcbiAgICBtdWx0aXBsZUxpbWl0OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBwbGFjZWhvbGRlcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgfSxcbiAgICBkZWZhdWx0Rmlyc3RPcHRpb246IEJvb2xlYW4sXG4gICAgcmVzZXJ2ZUtleXdvcmQ6IEJvb2xlYW4sXG4gICAgdmFsdWVLZXk6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd2YWx1ZSdcbiAgICB9LFxuICAgIGNvbGxhcHNlVGFnczogQm9vbGVhbixcbiAgICBwb3BwZXJBcHBlbmRUb0JvZHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgY2FjaGVkT3B0aW9uczogW10sXG4gICAgICBjcmVhdGVkTGFiZWw6IG51bGwsXG4gICAgICBjcmVhdGVkU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMubXVsdGlwbGUgPyBbXSA6IHt9LFxuICAgICAgaW5wdXRMZW5ndGg6IDIwLFxuICAgICAgaW5wdXRXaWR0aDogMCxcbiAgICAgIGluaXRpYWxJbnB1dEhlaWdodDogMCxcbiAgICAgIGNhY2hlZFBsYWNlSG9sZGVyOiAnJyxcbiAgICAgIG9wdGlvbnNDb3VudDogMCxcbiAgICAgIGZpbHRlcmVkT3B0aW9uc0NvdW50OiAwLFxuICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICBzb2Z0Rm9jdXM6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWRMYWJlbDogJycsXG4gICAgICBob3ZlckluZGV4OiAtMSxcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHByZXZpb3VzUXVlcnk6IG51bGwsXG4gICAgICBpbnB1dEhvdmVyaW5nOiBmYWxzZSxcbiAgICAgIGN1cnJlbnRQbGFjZWhvbGRlcjogJycsXG4gICAgICBtZW51VmlzaWJsZU9uRm9jdXM6IGZhbHNlLFxuICAgICAgaXNPbkNvbXBvc2l0aW9uOiBmYWxzZSxcbiAgICAgIGlzU2lsZW50Qmx1cjogZmFsc2VcbiAgICB9O1xuICB9LFxuXG5cbiAgd2F0Y2g6IHtcbiAgICBzZWxlY3REaXNhYmxlZDogZnVuY3Rpb24gc2VsZWN0RGlzYWJsZWQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIucmVzZXRJbnB1dEhlaWdodCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBwcm9wUGxhY2Vob2xkZXI6IGZ1bmN0aW9uIHByb3BQbGFjZWhvbGRlcih2YWwpIHtcbiAgICAgIHRoaXMuY2FjaGVkUGxhY2VIb2xkZXIgPSB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHZhbDtcbiAgICB9LFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSh2YWwsIG9sZFZhbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5yZXNldElucHV0SGVpZ2h0KCk7XG4gICAgICAgIGlmICh2YWwgJiYgdmFsLmxlbmd0aCA+IDAgfHwgdGhpcy4kcmVmcy5pbnB1dCAmJiB0aGlzLnF1ZXJ5ICE9PSAnJykge1xuICAgICAgICAgIHRoaXMuY3VycmVudFBsYWNlaG9sZGVyID0gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50UGxhY2Vob2xkZXIgPSB0aGlzLmNhY2hlZFBsYWNlSG9sZGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUgJiYgIXRoaXMucmVzZXJ2ZUtleXdvcmQpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUNoYW5nZSh0aGlzLnF1ZXJ5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5zZXRTZWxlY3RlZCgpO1xuICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSAmJiAhdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmlucHV0TGVuZ3RoID0gMjA7XG4gICAgICB9XG4gICAgICBpZiAoIU9iamVjdCh1dGlsX1tcInZhbHVlRXF1YWxzXCJdKSh2YWwsIG9sZFZhbCkpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmNoYW5nZScsIHZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB2aXNpYmxlOiBmdW5jdGlvbiB2aXNpYmxlKHZhbCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGlmICghdmFsKSB7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbFNlbGVjdERyb3Bkb3duJywgJ2Rlc3Ryb3lQb3BwZXInKTtcbiAgICAgICAgaWYgKHRoaXMuJHJlZnMuaW5wdXQpIHtcbiAgICAgICAgICB0aGlzLiRyZWZzLmlucHV0LmJsdXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgIHRoaXMucHJldmlvdXNRdWVyeSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbCA9ICcnO1xuICAgICAgICB0aGlzLmlucHV0TGVuZ3RoID0gMjA7XG4gICAgICAgIHRoaXMubWVudVZpc2libGVPbkZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVzZXRIb3ZlckluZGV4KCk7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoX3RoaXMzLiRyZWZzLmlucHV0ICYmIF90aGlzMy4kcmVmcy5pbnB1dC52YWx1ZSA9PT0gJycgJiYgX3RoaXMzLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgX3RoaXMzLmN1cnJlbnRQbGFjZWhvbGRlciA9IF90aGlzMy5jYWNoZWRQbGFjZUhvbGRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSAmJiB0aGlzLmFsbG93Q3JlYXRlICYmIHRoaXMuY3JlYXRlZFNlbGVjdGVkICYmIHRoaXMuY3JlYXRlZExhYmVsKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbCA9IHRoaXMuY3JlYXRlZExhYmVsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsID0gdGhpcy5zZWxlY3RlZC5jdXJyZW50TGFiZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlKSB0aGlzLnF1ZXJ5ID0gdGhpcy5zZWxlY3RlZExhYmVsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBsYWNlaG9sZGVyID0gdGhpcy5jYWNoZWRQbGFjZUhvbGRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbFNlbGVjdERyb3Bkb3duJywgJ3VwZGF0ZVBvcHBlcicpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMucmVtb3RlID8gJycgOiB0aGlzLnNlbGVjdGVkTGFiZWw7XG4gICAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUNoYW5nZSh0aGlzLnF1ZXJ5KTtcbiAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy4kcmVmcy5pbnB1dC5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbicsICdxdWVyeUNoYW5nZScsICcnKTtcbiAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsT3B0aW9uR3JvdXAnLCAncXVlcnlDaGFuZ2UnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMYWJlbCkge1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHRoaXMuc2VsZWN0ZWRMYWJlbDtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLiRlbWl0KCd2aXNpYmxlLWNoYW5nZScsIHZhbCk7XG4gICAgfSxcbiAgICBvcHRpb25zOiBmdW5jdGlvbiBvcHRpb25zKCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczQuYnJvYWRjYXN0KCdFbFNlbGVjdERyb3Bkb3duJywgJ3VwZGF0ZVBvcHBlcicpO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLnJlc2V0SW5wdXRIZWlnaHQoKTtcbiAgICAgIH1cbiAgICAgIHZhciBpbnB1dHMgPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCcpO1xuICAgICAgaWYgKFtdLmluZGV4T2YuY2FsbChpbnB1dHMsIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpID09PSAtMSkge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgKHRoaXMuZmlsdGVyYWJsZSB8fCB0aGlzLnJlbW90ZSkgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCkge1xuICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdEZpcnN0T3B0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVOYXZpZ2F0ZTogZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUoZGlyZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5pc09uQ29tcG9zaXRpb24pIHJldHVybjtcblxuICAgICAgdGhpcy5uYXZpZ2F0ZU9wdGlvbnMoZGlyZWN0aW9uKTtcbiAgICB9LFxuICAgIGhhbmRsZUNvbXBvc2l0aW9uOiBmdW5jdGlvbiBoYW5kbGVDb21wb3NpdGlvbihldmVudCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHZhciB0ZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb21wb3NpdGlvbmVuZCcpIHtcbiAgICAgICAgdGhpcy5pc09uQ29tcG9zaXRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXM1LmhhbmRsZVF1ZXJ5Q2hhbmdlKHRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBsYXN0Q2hhcmFjdGVyID0gdGV4dFt0ZXh0Lmxlbmd0aCAtIDFdIHx8ICcnO1xuICAgICAgICB0aGlzLmlzT25Db21wb3NpdGlvbiA9ICFPYmplY3Qoc2hhcmVkX1tcImlzS29yZWFuXCJdKShsYXN0Q2hhcmFjdGVyKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVF1ZXJ5Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVRdWVyeUNoYW5nZSh2YWwpIHtcbiAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5wcmV2aW91c1F1ZXJ5ID09PSB2YWwgfHwgdGhpcy5pc09uQ29tcG9zaXRpb24pIHJldHVybjtcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzUXVlcnkgPT09IG51bGwgJiYgKHR5cGVvZiB0aGlzLmZpbHRlck1ldGhvZCA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5yZW1vdGVNZXRob2QgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNRdWVyeSA9IHZhbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5wcmV2aW91c1F1ZXJ5ID0gdmFsO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXM2LnZpc2libGUpIF90aGlzNi5icm9hZGNhc3QoJ0VsU2VsZWN0RHJvcGRvd24nLCAndXBkYXRlUG9wcGVyJyk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaG92ZXJJbmRleCA9IC0xO1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5maWx0ZXJhYmxlKSB7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgbGVuZ3RoID0gX3RoaXM2LiRyZWZzLmlucHV0LnZhbHVlLmxlbmd0aCAqIDE1ICsgMjA7XG4gICAgICAgICAgX3RoaXM2LmlucHV0TGVuZ3RoID0gX3RoaXM2LmNvbGxhcHNlVGFncyA/IE1hdGgubWluKDUwLCBsZW5ndGgpIDogbGVuZ3RoO1xuICAgICAgICAgIF90aGlzNi5tYW5hZ2VQbGFjZWhvbGRlcigpO1xuICAgICAgICAgIF90aGlzNi5yZXNldElucHV0SGVpZ2h0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucmVtb3RlICYmIHR5cGVvZiB0aGlzLnJlbW90ZU1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmhvdmVySW5kZXggPSAtMTtcbiAgICAgICAgdGhpcy5yZW1vdGVNZXRob2QodmFsKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuZmlsdGVyTWV0aG9kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyTWV0aG9kKHZhbCk7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbkdyb3VwJywgJ3F1ZXJ5Q2hhbmdlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc0NvdW50ID0gdGhpcy5vcHRpb25zQ291bnQ7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbicsICdxdWVyeUNoYW5nZScsIHZhbCk7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbkdyb3VwJywgJ3F1ZXJ5Q2hhbmdlJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgKHRoaXMuZmlsdGVyYWJsZSB8fCB0aGlzLnJlbW90ZSkgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCkge1xuICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdEZpcnN0T3B0aW9uKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzY3JvbGxUb09wdGlvbjogZnVuY3Rpb24gc2Nyb2xsVG9PcHRpb24ob3B0aW9uKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gQXJyYXkuaXNBcnJheShvcHRpb24pICYmIG9wdGlvblswXSA/IG9wdGlvblswXS4kZWwgOiBvcHRpb24uJGVsO1xuICAgICAgaWYgKHRoaXMuJHJlZnMucG9wcGVyICYmIHRhcmdldCkge1xuICAgICAgICB2YXIgbWVudSA9IHRoaXMuJHJlZnMucG9wcGVyLiRlbC5xdWVyeVNlbGVjdG9yKCcuZWwtc2VsZWN0LWRyb3Bkb3duX193cmFwJyk7XG4gICAgICAgIHNjcm9sbF9pbnRvX3ZpZXdfZGVmYXVsdCgpKG1lbnUsIHRhcmdldCk7XG4gICAgICB9XG4gICAgICB0aGlzLiRyZWZzLnNjcm9sbGJhciAmJiB0aGlzLiRyZWZzLnNjcm9sbGJhci5oYW5kbGVTY3JvbGwoKTtcbiAgICB9LFxuICAgIGhhbmRsZU1lbnVFbnRlcjogZnVuY3Rpb24gaGFuZGxlTWVudUVudGVyKCkge1xuICAgICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNy5zY3JvbGxUb09wdGlvbihfdGhpczcuc2VsZWN0ZWQpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBlbWl0Q2hhbmdlOiBmdW5jdGlvbiBlbWl0Q2hhbmdlKHZhbCkge1xuICAgICAgaWYgKCFPYmplY3QodXRpbF9bXCJ2YWx1ZUVxdWFsc1wiXSkodGhpcy52YWx1ZSwgdmFsKSkge1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCB2YWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0T3B0aW9uOiBmdW5jdGlvbiBnZXRPcHRpb24odmFsdWUpIHtcbiAgICAgIHZhciBvcHRpb24gPSB2b2lkIDA7XG4gICAgICB2YXIgaXNPYmplY3QgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnRvTG93ZXJDYXNlKCkgPT09ICdbb2JqZWN0IG9iamVjdF0nO1xuICAgICAgdmFyIGlzTnVsbCA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkudG9Mb3dlckNhc2UoKSA9PT0gJ1tvYmplY3QgbnVsbF0nO1xuICAgICAgdmFyIGlzVW5kZWZpbmVkID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS50b0xvd2VyQ2FzZSgpID09PSAnW29iamVjdCB1bmRlZmluZWRdJztcblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMuY2FjaGVkT3B0aW9ucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgY2FjaGVkT3B0aW9uID0gdGhpcy5jYWNoZWRPcHRpb25zW2ldO1xuICAgICAgICB2YXIgaXNFcXVhbCA9IGlzT2JqZWN0ID8gT2JqZWN0KHV0aWxfW1wiZ2V0VmFsdWVCeVBhdGhcIl0pKGNhY2hlZE9wdGlvbi52YWx1ZSwgdGhpcy52YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKSh2YWx1ZSwgdGhpcy52YWx1ZUtleSkgOiBjYWNoZWRPcHRpb24udmFsdWUgPT09IHZhbHVlO1xuICAgICAgICBpZiAoaXNFcXVhbCkge1xuICAgICAgICAgIG9wdGlvbiA9IGNhY2hlZE9wdGlvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbikgcmV0dXJuIG9wdGlvbjtcbiAgICAgIHZhciBsYWJlbCA9ICFpc09iamVjdCAmJiAhaXNOdWxsICYmICFpc1VuZGVmaW5lZCA/IFN0cmluZyh2YWx1ZSkgOiAnJztcbiAgICAgIHZhciBuZXdPcHRpb24gPSB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgY3VycmVudExhYmVsOiBsYWJlbFxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIG5ld09wdGlvbi5oaXRTdGF0ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld09wdGlvbjtcbiAgICB9LFxuICAgIHNldFNlbGVjdGVkOiBmdW5jdGlvbiBzZXRTZWxlY3RlZCgpIHtcbiAgICAgIHZhciBfdGhpczggPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdmFyIG9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uKHRoaXMudmFsdWUpO1xuICAgICAgICBpZiAob3B0aW9uLmNyZWF0ZWQpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZWRMYWJlbCA9IG9wdGlvbi5jdXJyZW50TGFiZWw7XG4gICAgICAgICAgdGhpcy5jcmVhdGVkU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY3JlYXRlZFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsID0gb3B0aW9uLmN1cnJlbnRMYWJlbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IG9wdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSkgdGhpcy5xdWVyeSA9IHRoaXMuc2VsZWN0ZWRMYWJlbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKF90aGlzOC5nZXRPcHRpb24odmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkID0gcmVzdWx0O1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczgucmVzZXRJbnB1dEhlaWdodCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBoYW5kbGVGb2N1czogZnVuY3Rpb24gaGFuZGxlRm9jdXMoZXZlbnQpIHtcbiAgICAgIGlmICghdGhpcy5zb2Z0Rm9jdXMpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b21hdGljRHJvcGRvd24gfHwgdGhpcy5maWx0ZXJhYmxlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSAmJiAhdGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVWaXNpYmxlT25Gb2N1cyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4kZW1pdCgnZm9jdXMnLCBldmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvZnRGb2N1cyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy4kcmVmcy5yZWZlcmVuY2UuYmx1cigpO1xuICAgIH0sXG4gICAgaGFuZGxlQmx1cjogZnVuY3Rpb24gaGFuZGxlQmx1cihldmVudCkge1xuICAgICAgdmFyIF90aGlzOSA9IHRoaXM7XG5cbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXM5LmlzU2lsZW50Qmx1cikge1xuICAgICAgICAgIF90aGlzOS5pc1NpbGVudEJsdXIgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpczkuJGVtaXQoJ2JsdXInLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDUwKTtcbiAgICAgIHRoaXMuc29mdEZvY3VzID0gZmFsc2U7XG4gICAgfSxcbiAgICBoYW5kbGVDbGVhckNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGVhckNsaWNrKGV2ZW50KSB7XG4gICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkKGV2ZW50KTtcbiAgICB9LFxuICAgIGRvRGVzdHJveTogZnVuY3Rpb24gZG9EZXN0cm95KCkge1xuICAgICAgdGhpcy4kcmVmcy5wb3BwZXIgJiYgdGhpcy4kcmVmcy5wb3BwZXIuZG9EZXN0cm95KCk7XG4gICAgfSxcbiAgICBoYW5kbGVDbG9zZTogZnVuY3Rpb24gaGFuZGxlQ2xvc2UoKSB7XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9LFxuICAgIHRvZ2dsZUxhc3RPcHRpb25IaXRTdGF0ZTogZnVuY3Rpb24gdG9nZ2xlTGFzdE9wdGlvbkhpdFN0YXRlKGhpdCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWQpKSByZXR1cm47XG4gICAgICB2YXIgb3B0aW9uID0gdGhpcy5zZWxlY3RlZFt0aGlzLnNlbGVjdGVkLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKCFvcHRpb24pIHJldHVybjtcblxuICAgICAgaWYgKGhpdCA9PT0gdHJ1ZSB8fCBoaXQgPT09IGZhbHNlKSB7XG4gICAgICAgIG9wdGlvbi5oaXRTdGF0ZSA9IGhpdDtcbiAgICAgICAgcmV0dXJuIGhpdDtcbiAgICAgIH1cblxuICAgICAgb3B0aW9uLmhpdFN0YXRlID0gIW9wdGlvbi5oaXRTdGF0ZTtcbiAgICAgIHJldHVybiBvcHRpb24uaGl0U3RhdGU7XG4gICAgfSxcbiAgICBkZWxldGVQcmV2VGFnOiBmdW5jdGlvbiBkZWxldGVQcmV2VGFnKGUpIHtcbiAgICAgIGlmIChlLnRhcmdldC52YWx1ZS5sZW5ndGggPD0gMCAmJiAhdGhpcy50b2dnbGVMYXN0T3B0aW9uSGl0U3RhdGUoKSkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlLnNsaWNlKCk7XG4gICAgICAgIHZhbHVlLnBvcCgpO1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1hbmFnZVBsYWNlaG9sZGVyOiBmdW5jdGlvbiBtYW5hZ2VQbGFjZWhvbGRlcigpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciAhPT0gJycpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGxhY2Vob2xkZXIgPSB0aGlzLiRyZWZzLmlucHV0LnZhbHVlID8gJycgOiB0aGlzLmNhY2hlZFBsYWNlSG9sZGVyO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVzZXRJbnB1dFN0YXRlOiBmdW5jdGlvbiByZXNldElucHV0U3RhdGUoZSkge1xuICAgICAgaWYgKGUua2V5Q29kZSAhPT0gOCkgdGhpcy50b2dnbGVMYXN0T3B0aW9uSGl0U3RhdGUoZmFsc2UpO1xuICAgICAgdGhpcy5pbnB1dExlbmd0aCA9IHRoaXMuJHJlZnMuaW5wdXQudmFsdWUubGVuZ3RoICogMTUgKyAyMDtcbiAgICAgIHRoaXMucmVzZXRJbnB1dEhlaWdodCgpO1xuICAgIH0sXG4gICAgcmVzZXRJbnB1dEhlaWdodDogZnVuY3Rpb24gcmVzZXRJbnB1dEhlaWdodCgpIHtcbiAgICAgIHZhciBfdGhpczEwID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuY29sbGFwc2VUYWdzICYmICF0aGlzLmZpbHRlcmFibGUpIHJldHVybjtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFfdGhpczEwLiRyZWZzLnJlZmVyZW5jZSkgcmV0dXJuO1xuICAgICAgICB2YXIgaW5wdXRDaGlsZE5vZGVzID0gX3RoaXMxMC4kcmVmcy5yZWZlcmVuY2UuJGVsLmNoaWxkTm9kZXM7XG4gICAgICAgIHZhciBpbnB1dCA9IFtdLmZpbHRlci5jYWxsKGlucHV0Q2hpbGROb2RlcywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gaXRlbS50YWdOYW1lID09PSAnSU5QVVQnO1xuICAgICAgICB9KVswXTtcbiAgICAgICAgdmFyIHRhZ3MgPSBfdGhpczEwLiRyZWZzLnRhZ3M7XG4gICAgICAgIHZhciB0YWdzSGVpZ2h0ID0gdGFncyA/IE1hdGgucm91bmQodGFncy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpIDogMDtcbiAgICAgICAgdmFyIHNpemVJbk1hcCA9IF90aGlzMTAuaW5pdGlhbElucHV0SGVpZ2h0IHx8IDQwO1xuICAgICAgICBpbnB1dC5zdHlsZS5oZWlnaHQgPSBfdGhpczEwLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCA/IHNpemVJbk1hcCArICdweCcgOiBNYXRoLm1heCh0YWdzID8gdGFnc0hlaWdodCArICh0YWdzSGVpZ2h0ID4gc2l6ZUluTWFwID8gNiA6IDApIDogMCwgc2l6ZUluTWFwKSArICdweCc7XG4gICAgICAgIGlmIChfdGhpczEwLnZpc2libGUgJiYgX3RoaXMxMC5lbXB0eVRleHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgX3RoaXMxMC5icm9hZGNhc3QoJ0VsU2VsZWN0RHJvcGRvd24nLCAndXBkYXRlUG9wcGVyJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmVzZXRIb3ZlckluZGV4OiBmdW5jdGlvbiByZXNldEhvdmVySW5kZXgoKSB7XG4gICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7XG5cbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIV90aGlzMTEubXVsdGlwbGUpIHtcbiAgICAgICAgICBfdGhpczExLmhvdmVySW5kZXggPSBfdGhpczExLm9wdGlvbnMuaW5kZXhPZihfdGhpczExLnNlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoX3RoaXMxMS5zZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBfdGhpczExLmhvdmVySW5kZXggPSBNYXRoLm1pbi5hcHBseShudWxsLCBfdGhpczExLnNlbGVjdGVkLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMxMS5vcHRpb25zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzMTEuaG92ZXJJbmRleCA9IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMzAwKTtcbiAgICB9LFxuICAgIGhhbmRsZU9wdGlvblNlbGVjdDogZnVuY3Rpb24gaGFuZGxlT3B0aW9uU2VsZWN0KG9wdGlvbiwgYnlDbGljaykge1xuICAgICAgdmFyIF90aGlzMTIgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB2YXIgdmFsdWUgPSAodGhpcy52YWx1ZSB8fCBbXSkuc2xpY2UoKTtcbiAgICAgICAgdmFyIG9wdGlvbkluZGV4ID0gdGhpcy5nZXRWYWx1ZUluZGV4KHZhbHVlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICBpZiAob3B0aW9uSW5kZXggPiAtMSkge1xuICAgICAgICAgIHZhbHVlLnNwbGljZShvcHRpb25JbmRleCwgMSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tdWx0aXBsZUxpbWl0IDw9IDAgfHwgdmFsdWUubGVuZ3RoIDwgdGhpcy5tdWx0aXBsZUxpbWl0KSB7XG4gICAgICAgICAgdmFsdWUucHVzaChvcHRpb24udmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsdWUpO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UodmFsdWUpO1xuICAgICAgICBpZiAob3B0aW9uLmNyZWF0ZWQpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUNoYW5nZSgnJyk7XG4gICAgICAgICAgdGhpcy5pbnB1dExlbmd0aCA9IDIwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUpIHRoaXMuJHJlZnMuaW5wdXQuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0Jywgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5pc1NpbGVudEJsdXIgPSBieUNsaWNrO1xuICAgICAgdGhpcy5zZXRTb2Z0Rm9jdXMoKTtcbiAgICAgIGlmICh0aGlzLnZpc2libGUpIHJldHVybjtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMxMi5zY3JvbGxUb09wdGlvbihvcHRpb24pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBzZXRTb2Z0Rm9jdXM6IGZ1bmN0aW9uIHNldFNvZnRGb2N1cygpIHtcbiAgICAgIHRoaXMuc29mdEZvY3VzID0gdHJ1ZTtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuJHJlZnMuaW5wdXQgfHwgdGhpcy4kcmVmcy5yZWZlcmVuY2U7XG4gICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldFZhbHVlSW5kZXg6IGZ1bmN0aW9uIGdldFZhbHVlSW5kZXgoKSB7XG4gICAgICB2YXIgYXJyID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTtcbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3VtZW50c1sxXTtcblxuICAgICAgdmFyIGlzT2JqZWN0ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS50b0xvd2VyQ2FzZSgpID09PSAnW29iamVjdCBvYmplY3RdJztcbiAgICAgIGlmICghaXNPYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGFyci5pbmRleE9mKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB2YWx1ZUtleSA9IHRoaXMudmFsdWVLZXk7XG4gICAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgICBhcnIuc29tZShmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgICAgICAgIGlmIChPYmplY3QodXRpbF9bXCJnZXRWYWx1ZUJ5UGF0aFwiXSkoaXRlbSwgdmFsdWVLZXkpID09PSBPYmplY3QodXRpbF9bXCJnZXRWYWx1ZUJ5UGF0aFwiXSkodmFsdWUsIHZhbHVlS2V5KSkge1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRvZ2dsZU1lbnU6IGZ1bmN0aW9uIHRvZ2dsZU1lbnUoKSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0RGlzYWJsZWQpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudVZpc2libGVPbkZvY3VzKSB7XG4gICAgICAgICAgdGhpcy5tZW51VmlzaWJsZU9uRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpc2libGUgPSAhdGhpcy52aXNpYmxlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAodGhpcy4kcmVmcy5pbnB1dCB8fCB0aGlzLiRyZWZzLnJlZmVyZW5jZSkuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0T3B0aW9uOiBmdW5jdGlvbiBzZWxlY3RPcHRpb24oKSB7XG4gICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZU1lbnUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNbdGhpcy5ob3ZlckluZGV4XSkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlT3B0aW9uU2VsZWN0KHRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZGVsZXRlU2VsZWN0ZWQ6IGZ1bmN0aW9uIGRlbGV0ZVNlbGVjdGVkKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMubXVsdGlwbGUgPyBbXSA6ICcnO1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWx1ZSk7XG4gICAgICB0aGlzLmVtaXRDaGFuZ2UodmFsdWUpO1xuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICB0aGlzLiRlbWl0KCdjbGVhcicpO1xuICAgIH0sXG4gICAgZGVsZXRlVGFnOiBmdW5jdGlvbiBkZWxldGVUYWcoZXZlbnQsIHRhZykge1xuICAgICAgdmFyIGluZGV4ID0gdGhpcy5zZWxlY3RlZC5pbmRleE9mKHRhZyk7XG4gICAgICBpZiAoaW5kZXggPiAtMSAmJiAhdGhpcy5zZWxlY3REaXNhYmxlZCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlLnNsaWNlKCk7XG4gICAgICAgIHZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsdWUpO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLiRlbWl0KCdyZW1vdmUtdGFnJywgdGFnLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0sXG4gICAgb25JbnB1dENoYW5nZTogZnVuY3Rpb24gb25JbnB1dENoYW5nZSgpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUgJiYgdGhpcy5xdWVyeSAhPT0gdGhpcy5zZWxlY3RlZExhYmVsKSB7XG4gICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlbGVjdGVkTGFiZWw7XG4gICAgICAgIHRoaXMuaGFuZGxlUXVlcnlDaGFuZ2UodGhpcy5xdWVyeSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbk9wdGlvbkRlc3Ryb3k6IGZ1bmN0aW9uIG9uT3B0aW9uRGVzdHJveShpbmRleCkge1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ291bnQtLTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudC0tO1xuICAgICAgICB0aGlzLm9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc2V0SW5wdXRXaWR0aDogZnVuY3Rpb24gcmVzZXRJbnB1dFdpZHRoKCkge1xuICAgICAgdGhpcy5pbnB1dFdpZHRoID0gdGhpcy4kcmVmcy5yZWZlcmVuY2UuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH0sXG4gICAgaGFuZGxlUmVzaXplOiBmdW5jdGlvbiBoYW5kbGVSZXNpemUoKSB7XG4gICAgICB0aGlzLnJlc2V0SW5wdXRXaWR0aCgpO1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHRoaXMucmVzZXRJbnB1dEhlaWdodCgpO1xuICAgIH0sXG4gICAgY2hlY2tEZWZhdWx0Rmlyc3RPcHRpb246IGZ1bmN0aW9uIGNoZWNrRGVmYXVsdEZpcnN0T3B0aW9uKCkge1xuICAgICAgdGhpcy5ob3ZlckluZGV4ID0gLTE7XG4gICAgICAvLyBoaWdobGlnaHQgdGhlIGNyZWF0ZWQgb3B0aW9uXG4gICAgICB2YXIgaGFzQ3JlYXRlZCA9IGZhbHNlO1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMub3B0aW9ucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zW2ldLmNyZWF0ZWQpIHtcbiAgICAgICAgICBoYXNDcmVhdGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmhvdmVySW5kZXggPSBpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaGFzQ3JlYXRlZCkgcmV0dXJuO1xuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSAhPT0gdGhpcy5vcHRpb25zLmxlbmd0aDsgKytfaSkge1xuICAgICAgICB2YXIgb3B0aW9uID0gdGhpcy5vcHRpb25zW19pXTtcbiAgICAgICAgaWYgKHRoaXMucXVlcnkpIHtcbiAgICAgICAgICAvLyBoaWdobGlnaHQgZmlyc3Qgb3B0aW9ucyB0aGF0IHBhc3NlcyB0aGUgZmlsdGVyXG4gICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQgJiYgIW9wdGlvbi5ncm91cERpc2FibGVkICYmIG9wdGlvbi52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmhvdmVySW5kZXggPSBfaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBoaWdobGlnaHQgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvblxuICAgICAgICAgIGlmIChvcHRpb24uaXRlbVNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmhvdmVySW5kZXggPSBfaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0VmFsdWVLZXk6IGZ1bmN0aW9uIGdldFZhbHVlS2V5KGl0ZW0pIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaXRlbS52YWx1ZSkudG9Mb3dlckNhc2UoKSAhPT0gJ1tvYmplY3Qgb2JqZWN0XScpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gT2JqZWN0KHV0aWxfW1wiZ2V0VmFsdWVCeVBhdGhcIl0pKGl0ZW0udmFsdWUsIHRoaXMudmFsdWVLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpczEzID0gdGhpcztcblxuICAgIHRoaXMuY2FjaGVkUGxhY2VIb2xkZXIgPSB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHRoaXMucHJvcFBsYWNlaG9sZGVyO1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIFtdKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgJycpO1xuICAgIH1cblxuICAgIHRoaXMuZGVib3VuY2VkT25JbnB1dENoYW5nZSA9IGRlYm91bmNlX2RlZmF1bHQoKSh0aGlzLmRlYm91bmNlLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczEzLm9uSW5wdXRDaGFuZ2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGVib3VuY2VkUXVlcnlDaGFuZ2UgPSBkZWJvdW5jZV9kZWZhdWx0KCkodGhpcy5kZWJvdW5jZSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzMTMuaGFuZGxlUXVlcnlDaGFuZ2UoZS50YXJnZXQudmFsdWUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kb24oJ2hhbmRsZU9wdGlvbkNsaWNrJywgdGhpcy5oYW5kbGVPcHRpb25TZWxlY3QpO1xuICAgIHRoaXMuJG9uKCdzZXRTZWxlY3RlZCcsIHRoaXMuc2V0U2VsZWN0ZWQpO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpczE0ID0gdGhpcztcblxuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9ICcnO1xuICAgIH1cbiAgICBPYmplY3QocmVzaXplX2V2ZW50X1tcImFkZFJlc2l6ZUxpc3RlbmVyXCJdKSh0aGlzLiRlbCwgdGhpcy5oYW5kbGVSZXNpemUpO1xuXG4gICAgdmFyIHJlZmVyZW5jZSA9IHRoaXMuJHJlZnMucmVmZXJlbmNlO1xuICAgIGlmIChyZWZlcmVuY2UgJiYgcmVmZXJlbmNlLiRlbCkge1xuICAgICAgdmFyIHNpemVNYXAgPSB7XG4gICAgICAgIG1lZGl1bTogMzYsXG4gICAgICAgIHNtYWxsOiAzMixcbiAgICAgICAgbWluaTogMjhcbiAgICAgIH07XG4gICAgICB2YXIgaW5wdXQgPSByZWZlcmVuY2UuJGVsLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICB0aGlzLmluaXRpYWxJbnB1dEhlaWdodCA9IGlucHV0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCB8fCBzaXplTWFwW3RoaXMuc2VsZWN0U2l6ZV07XG4gICAgfVxuICAgIGlmICh0aGlzLnJlbW90ZSAmJiB0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnJlc2V0SW5wdXRIZWlnaHQoKTtcbiAgICB9XG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHJlZmVyZW5jZSAmJiByZWZlcmVuY2UuJGVsKSB7XG4gICAgICAgIF90aGlzMTQuaW5wdXRXaWR0aCA9IHJlZmVyZW5jZS4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZXRTZWxlY3RlZCgpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLmhhbmRsZVJlc2l6ZSkgT2JqZWN0KHJlc2l6ZV9ldmVudF9bXCJyZW1vdmVSZXNpemVMaXN0ZW5lclwiXSkodGhpcy4kZWwsIHRoaXMuaGFuZGxlUmVzaXplKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfc2VsZWN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHNlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBzZWxlY3RfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfc2VsZWN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBzZWxlY3R2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wZTRhYWRlNl9yZW5kZXIsXG4gIHNlbGVjdHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzBlNGFhZGU2X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgc2VsZWN0X2FwaTsgfVxuc2VsZWN0X2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19zZWxlY3QgPSAoc2VsZWN0X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnNyY19zZWxlY3QuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzcmNfc2VsZWN0Lm5hbWUsIHNyY19zZWxlY3QpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfc2VsZWN0ID0gKHNyY19zZWxlY3QpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9vcHRpb24vaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3JjX29wdGlvbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHNyY19vcHRpb24ubmFtZSwgc3JjX29wdGlvbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19vcHRpb24gPSAoc3JjX29wdGlvbik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3NlbGVjdC9zcmMvb3B0aW9uLWdyb3VwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02Njg1ZTVkZSZcbnZhciBvcHRpb25fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF82Njg1ZTVkZV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJ1bFwiLFxuICAgIHtcbiAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgdmFsdWU6IF92bS52aXNpYmxlLFxuICAgICAgICAgIGV4cHJlc3Npb246IFwidmlzaWJsZVwiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1zZWxlY3QtZ3JvdXBfX3dyYXBcIlxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXCJsaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXNlbGVjdC1ncm91cF9fdGl0bGVcIiB9LCBbXG4gICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmxhYmVsKSlcbiAgICAgIF0pLFxuICAgICAgX2MoXCJsaVwiLCBbXG4gICAgICAgIF9jKFwidWxcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1zZWxlY3QtZ3JvdXBcIiB9LCBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sIDIpXG4gICAgICBdKVxuICAgIF1cbiAgKVxufVxudmFyIG9wdGlvbl9ncm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzY2ODVlNWRlX3N0YXRpY1JlbmRlckZucyA9IFtdXG5vcHRpb25fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF82Njg1ZTVkZV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NlbGVjdC9zcmMvb3B0aW9uLWdyb3VwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02Njg1ZTVkZSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24tZ3JvdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBvcHRpb25fZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sXG5cbiAgbmFtZTogJ0VsT3B0aW9uR3JvdXAnLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbE9wdGlvbkdyb3VwJyxcblxuICBwcm9wczoge1xuICAgIGxhYmVsOiBTdHJpbmcsXG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB2aXNpYmxlOiB0cnVlXG4gICAgfTtcbiAgfSxcblxuXG4gIHdhdGNoOiB7XG4gICAgZGlzYWJsZWQ6IGZ1bmN0aW9uIGRpc2FibGVkKHZhbCkge1xuICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsT3B0aW9uJywgJ2hhbmRsZUdyb3VwRGlzYWJsZWQnLCB2YWwpO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgcXVlcnlDaGFuZ2U6IGZ1bmN0aW9uIHF1ZXJ5Q2hhbmdlKCkge1xuICAgICAgdGhpcy52aXNpYmxlID0gdGhpcy4kY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheSh0aGlzLiRjaGlsZHJlbikgJiYgdGhpcy4kY2hpbGRyZW4uc29tZShmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24udmlzaWJsZSA9PT0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMuJG9uKCdxdWVyeUNoYW5nZScsIHRoaXMucXVlcnlDaGFuZ2UpO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmJyb2FkY2FzdCgnRWxPcHRpb24nLCAnaGFuZGxlR3JvdXBEaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQpO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NlbGVjdC9zcmMvb3B0aW9uLWdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfb3B0aW9uX2dyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKG9wdGlvbl9ncm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi1ncm91cC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBvcHRpb25fZ3JvdXBfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfb3B0aW9uX2dyb3VwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBvcHRpb25fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF82Njg1ZTVkZV9yZW5kZXIsXG4gIG9wdGlvbl9ncm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzY2ODVlNWRlX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgb3B0aW9uX2dyb3VwX2FwaTsgfVxub3B0aW9uX2dyb3VwX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24tZ3JvdXAudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG9wdGlvbl9ncm91cCA9IChvcHRpb25fZ3JvdXBfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9vcHRpb24tZ3JvdXAvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xub3B0aW9uX2dyb3VwLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQob3B0aW9uX2dyb3VwLm5hbWUsIG9wdGlvbl9ncm91cCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19vcHRpb25fZ3JvdXAgPSAob3B0aW9uX2dyb3VwKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNhODU5ZmI0JlxudmFyIGJ1dHRvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkX2NhODU5ZmI0X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImJ1dHRvblwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWJ1dHRvblwiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgX3ZtLnR5cGUgPyBcImVsLWJ1dHRvbi0tXCIgKyBfdm0udHlwZSA6IFwiXCIsXG4gICAgICAgIF92bS5idXR0b25TaXplID8gXCJlbC1idXR0b24tLVwiICsgX3ZtLmJ1dHRvblNpemUgOiBcIlwiLFxuICAgICAgICB7XG4gICAgICAgICAgXCJpcy1kaXNhYmxlZFwiOiBfdm0uYnV0dG9uRGlzYWJsZWQsXG4gICAgICAgICAgXCJpcy1sb2FkaW5nXCI6IF92bS5sb2FkaW5nLFxuICAgICAgICAgIFwiaXMtcGxhaW5cIjogX3ZtLnBsYWluLFxuICAgICAgICAgIFwiaXMtcm91bmRcIjogX3ZtLnJvdW5kLFxuICAgICAgICAgIFwiaXMtY2lyY2xlXCI6IF92bS5jaXJjbGVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGRpc2FibGVkOiBfdm0uYnV0dG9uRGlzYWJsZWQgfHwgX3ZtLmxvYWRpbmcsXG4gICAgICAgIGF1dG9mb2N1czogX3ZtLmF1dG9mb2N1cyxcbiAgICAgICAgdHlwZTogX3ZtLm5hdGl2ZVR5cGVcbiAgICAgIH0sXG4gICAgICBvbjogeyBjbGljazogX3ZtLmhhbmRsZUNsaWNrIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF92bS5sb2FkaW5nID8gX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbi1sb2FkaW5nXCIgfSkgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5pY29uICYmICFfdm0ubG9hZGluZyA/IF9jKFwiaVwiLCB7IGNsYXNzOiBfdm0uaWNvbiB9KSA6IF92bS5fZSgpLFxuICAgICAgX3ZtLiRzbG90cy5kZWZhdWx0ID8gX2MoXCJzcGFuXCIsIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwgMikgOiBfdm0uX2UoKVxuICAgIF1cbiAgKVxufVxudmFyIGJ1dHRvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkX2NhODU5ZmI0X3N0YXRpY1JlbmRlckZucyA9IFtdXG5idXR0b252dWVfdHlwZV90ZW1wbGF0ZV9pZF9jYTg1OWZiNF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2J1dHRvbi9zcmMvYnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYTg1OWZiNCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBidXR0b252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxCdXR0b24nLFxuXG4gIGluamVjdDoge1xuICAgIGVsRm9ybToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGVsRm9ybUl0ZW06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgdHlwZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RlZmF1bHQnXG4gICAgfSxcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIG5hdGl2ZVR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdidXR0b24nXG4gICAgfSxcbiAgICBsb2FkaW5nOiBCb29sZWFuLFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIHBsYWluOiBCb29sZWFuLFxuICAgIGF1dG9mb2N1czogQm9vbGVhbixcbiAgICByb3VuZDogQm9vbGVhbixcbiAgICBjaXJjbGU6IEJvb2xlYW5cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIF9lbEZvcm1JdGVtU2l6ZTogZnVuY3Rpb24gX2VsRm9ybUl0ZW1TaXplKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmVsRm9ybUl0ZW0gfHwge30pLmVsRm9ybUl0ZW1TaXplO1xuICAgIH0sXG4gICAgYnV0dG9uU2l6ZTogZnVuY3Rpb24gYnV0dG9uU2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpemUgfHwgdGhpcy5fZWxGb3JtSXRlbVNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7XG4gICAgfSxcbiAgICBidXR0b25EaXNhYmxlZDogZnVuY3Rpb24gYnV0dG9uRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kb3B0aW9ucy5wcm9wc0RhdGEuaGFzT3duUHJvcGVydHkoJ2Rpc2FibGVkJykgPyB0aGlzLmRpc2FibGVkIDogKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZDtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NsaWNrJywgZXZ0KTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9idXR0b24vc3JjL2J1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2J1dHRvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChidXR0b252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgYnV0dG9uX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX2J1dHRvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgYnV0dG9udnVlX3R5cGVfdGVtcGxhdGVfaWRfY2E4NTlmYjRfcmVuZGVyLFxuICBidXR0b252dWVfdHlwZV90ZW1wbGF0ZV9pZF9jYTg1OWZiNF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGJ1dHRvbl9hcGk7IH1cbmJ1dHRvbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2J1dHRvbi9zcmMvYnV0dG9uLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfYnV0dG9uID0gKGJ1dHRvbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2J1dHRvbi9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zcmNfYnV0dG9uLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoc3JjX2J1dHRvbi5uYW1lLCBzcmNfYnV0dG9uKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2J1dHRvbiA9IChzcmNfYnV0dG9uKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24tZ3JvdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNkODY2MWQwJlxudmFyIGJ1dHRvbl9ncm91cHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzNkODY2MWQwX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWJ1dHRvbi1ncm91cFwiIH0sIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwgMilcbn1cbnZhciBidXR0b25fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zZDg2NjFkMF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuYnV0dG9uX2dyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfM2Q4NjYxZDBfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9idXR0b24vc3JjL2J1dHRvbi1ncm91cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2Q4NjYxZDAmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2J1dHRvbi9zcmMvYnV0dG9uLWdyb3VwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBidXR0b25fZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxCdXR0b25Hcm91cCdcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9idXR0b24vc3JjL2J1dHRvbi1ncm91cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2J1dHRvbl9ncm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChidXR0b25fZ3JvdXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYnV0dG9uL3NyYy9idXR0b24tZ3JvdXAudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgYnV0dG9uX2dyb3VwX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX2J1dHRvbl9ncm91cHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgYnV0dG9uX2dyb3VwdnVlX3R5cGVfdGVtcGxhdGVfaWRfM2Q4NjYxZDBfcmVuZGVyLFxuICBidXR0b25fZ3JvdXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zZDg2NjFkMF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGJ1dHRvbl9ncm91cF9hcGk7IH1cbmJ1dHRvbl9ncm91cF9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2J1dHRvbi9zcmMvYnV0dG9uLWdyb3VwLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBidXR0b25fZ3JvdXAgPSAoYnV0dG9uX2dyb3VwX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYnV0dG9uLWdyb3VwL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmJ1dHRvbl9ncm91cC5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGJ1dHRvbl9ncm91cC5uYW1lLCBidXR0b25fZ3JvdXApO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfYnV0dG9uX2dyb3VwID0gKGJ1dHRvbl9ncm91cCk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3RhYmxlL3NyYy90YWJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDkzZmUzNGUmXG52YXIgdGFibGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF80OTNmZTM0ZV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJlbC10YWJsZVwiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiZWwtdGFibGUtLWZpdFwiOiBfdm0uZml0LFxuICAgICAgICAgIFwiZWwtdGFibGUtLXN0cmlwZWRcIjogX3ZtLnN0cmlwZSxcbiAgICAgICAgICBcImVsLXRhYmxlLS1ib3JkZXJcIjogX3ZtLmJvcmRlciB8fCBfdm0uaXNHcm91cCxcbiAgICAgICAgICBcImVsLXRhYmxlLS1oaWRkZW5cIjogX3ZtLmlzSGlkZGVuLFxuICAgICAgICAgIFwiZWwtdGFibGUtLWdyb3VwXCI6IF92bS5pc0dyb3VwLFxuICAgICAgICAgIFwiZWwtdGFibGUtLWZsdWlkLWhlaWdodFwiOiBfdm0ubWF4SGVpZ2h0LFxuICAgICAgICAgIFwiZWwtdGFibGUtLXNjcm9sbGFibGUteFwiOiBfdm0ubGF5b3V0LnNjcm9sbFgsXG4gICAgICAgICAgXCJlbC10YWJsZS0tc2Nyb2xsYWJsZS15XCI6IF92bS5sYXlvdXQuc2Nyb2xsWSxcbiAgICAgICAgICBcImVsLXRhYmxlLS1lbmFibGUtcm93LWhvdmVyXCI6ICFfdm0uc3RvcmUuc3RhdGVzLmlzQ29tcGxleCxcbiAgICAgICAgICBcImVsLXRhYmxlLS1lbmFibGUtcm93LXRyYW5zaXRpb25cIjpcbiAgICAgICAgICAgIChfdm0uc3RvcmUuc3RhdGVzLmRhdGEgfHwgW10pLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgICAgICAgKF92bS5zdG9yZS5zdGF0ZXMuZGF0YSB8fCBbXSkubGVuZ3RoIDwgMTAwXG4gICAgICAgIH0sXG4gICAgICAgIF92bS50YWJsZVNpemUgPyBcImVsLXRhYmxlLS1cIiArIF92bS50YWJsZVNpemUgOiBcIlwiXG4gICAgICBdLFxuICAgICAgb246IHtcbiAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLmhhbmRsZU1vdXNlTGVhdmUoJGV2ZW50KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyByZWY6IFwiaGlkZGVuQ29sdW1uc1wiLCBzdGF0aWNDbGFzczogXCJoaWRkZW4tY29sdW1uc1wiIH0sXG4gICAgICAgIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSxcbiAgICAgICAgMlxuICAgICAgKSxcbiAgICAgIF92bS5zaG93SGVhZGVyXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb3VzZXdoZWVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW91c2V3aGVlbFwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oYW5kbGVIZWFkZXJGb290ZXJNb3VzZXdoZWVsLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJoYW5kbGVIZWFkZXJGb290ZXJNb3VzZXdoZWVsXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlZjogXCJoZWFkZXJXcmFwcGVyXCIsXG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlX19oZWFkZXItd3JhcHBlclwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInRhYmxlLWhlYWRlclwiLCB7XG4gICAgICAgICAgICAgICAgcmVmOiBcInRhYmxlSGVhZGVyXCIsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBfdm0ubGF5b3V0LmJvZHlXaWR0aCA/IF92bS5sYXlvdXQuYm9keVdpZHRoICsgXCJweFwiIDogXCJcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIHN0b3JlOiBfdm0uc3RvcmUsXG4gICAgICAgICAgICAgICAgICBib3JkZXI6IF92bS5ib3JkZXIsXG4gICAgICAgICAgICAgICAgICBcImRlZmF1bHQtc29ydFwiOiBfdm0uZGVmYXVsdFNvcnRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgcmVmOiBcImJvZHlXcmFwcGVyXCIsXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGFibGVfX2JvZHktd3JhcHBlclwiLFxuICAgICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgICBfdm0ubGF5b3V0LnNjcm9sbFhcbiAgICAgICAgICAgICAgPyBcImlzLXNjcm9sbGluZy1cIiArIF92bS5zY3JvbGxQb3NpdGlvblxuICAgICAgICAgICAgICA6IFwiaXMtc2Nyb2xsaW5nLW5vbmVcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3R5bGU6IFtfdm0uYm9keUhlaWdodF1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwidGFibGUtYm9keVwiLCB7XG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICB3aWR0aDogX3ZtLmJvZHlXaWR0aFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IF92bS5jb250ZXh0LFxuICAgICAgICAgICAgICBzdG9yZTogX3ZtLnN0b3JlLFxuICAgICAgICAgICAgICBzdHJpcGU6IF92bS5zdHJpcGUsXG4gICAgICAgICAgICAgIFwicm93LWNsYXNzLW5hbWVcIjogX3ZtLnJvd0NsYXNzTmFtZSxcbiAgICAgICAgICAgICAgXCJyb3ctc3R5bGVcIjogX3ZtLnJvd1N0eWxlLFxuICAgICAgICAgICAgICBoaWdobGlnaHQ6IF92bS5oaWdobGlnaHRDdXJyZW50Um93XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgIV92bS5kYXRhIHx8IF92bS5kYXRhLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJlZjogXCJlbXB0eUJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10YWJsZV9fZW1wdHktYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBfdm0uZW1wdHlCbG9ja1N0eWxlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtdGFibGVfX2VtcHR5LXRleHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl90KFwiZW1wdHlcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmVtcHR5VGV4dCB8fCBfdm0udChcImVsLnRhYmxlLmVtcHR5VGV4dFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS4kc2xvdHMuYXBwZW5kXG4gICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgcmVmOiBcImFwcGVuZFdyYXBwZXJcIixcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlX19hcHBlbmQtd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl90KFwiYXBwZW5kXCIpXSxcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKSxcbiAgICAgIF92bS5zaG93U3VtbWFyeVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZGF0YSAmJiBfdm0uZGF0YS5sZW5ndGggPiAwLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJkYXRhICYmIGRhdGEubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vdXNld2hlZWxcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb3VzZXdoZWVsXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmhhbmRsZUhlYWRlckZvb3Rlck1vdXNld2hlZWwsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImhhbmRsZUhlYWRlckZvb3Rlck1vdXNld2hlZWxcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVmOiBcImZvb3RlcldyYXBwZXJcIixcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGFibGVfX2Zvb3Rlci13cmFwcGVyXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwidGFibGUtZm9vdGVyXCIsIHtcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgd2lkdGg6IF92bS5sYXlvdXQuYm9keVdpZHRoID8gX3ZtLmxheW91dC5ib2R5V2lkdGggKyBcInB4XCIgOiBcIlwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgc3RvcmU6IF92bS5zdG9yZSxcbiAgICAgICAgICAgICAgICAgIGJvcmRlcjogX3ZtLmJvcmRlcixcbiAgICAgICAgICAgICAgICAgIFwic3VtLXRleHRcIjogX3ZtLnN1bVRleHQgfHwgX3ZtLnQoXCJlbC50YWJsZS5zdW1UZXh0XCIpLFxuICAgICAgICAgICAgICAgICAgXCJzdW1tYXJ5LW1ldGhvZFwiOiBfdm0uc3VtbWFyeU1ldGhvZCxcbiAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdC1zb3J0XCI6IF92bS5kZWZhdWx0U29ydFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLmZpeGVkQ29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb3VzZXdoZWVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW91c2V3aGVlbFwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oYW5kbGVGaXhlZE1vdXNld2hlZWwsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImhhbmRsZUZpeGVkTW91c2V3aGVlbFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZWY6IFwiZml4ZWRXcmFwcGVyXCIsXG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlX19maXhlZFwiLFxuICAgICAgICAgICAgICBzdHlsZTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBfdm0ubGF5b3V0LmZpeGVkV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgPyBfdm0ubGF5b3V0LmZpeGVkV2lkdGggKyBcInB4XCJcbiAgICAgICAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfdm0uZml4ZWRIZWlnaHRcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLnNob3dIZWFkZXJcbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVmOiBcImZpeGVkSGVhZGVyV3JhcHBlclwiLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlX19maXhlZC1oZWFkZXItd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInRhYmxlLWhlYWRlclwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IFwiZml4ZWRUYWJsZUhlYWRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IF92bS5ib2R5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZDogXCJsZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogX3ZtLmJvcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IF92bS5zdG9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJlZjogXCJmaXhlZEJvZHlXcmFwcGVyXCIsXG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10YWJsZV9fZml4ZWQtYm9keS13cmFwcGVyXCIsXG4gICAgICAgICAgICAgICAgICBzdHlsZTogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdG9wOiBfdm0ubGF5b3V0LmhlYWRlckhlaWdodCArIFwicHhcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfdm0uZml4ZWRCb2R5SGVpZ2h0XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcInRhYmxlLWJvZHlcIiwge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfdm0uYm9keVdpZHRoXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZml4ZWQ6IFwibGVmdFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBfdm0uc3RvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaXBlOiBfdm0uc3RyaXBlLFxuICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogX3ZtLmhpZ2hsaWdodEN1cnJlbnRSb3csXG4gICAgICAgICAgICAgICAgICAgICAgXCJyb3ctY2xhc3MtbmFtZVwiOiBfdm0ucm93Q2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIFwicm93LXN0eWxlXCI6IF92bS5yb3dTdHlsZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIF92bS4kc2xvdHMuYXBwZW5kXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGFibGVfX2FwcGVuZC1ndXR0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7IGhlaWdodDogX3ZtLmxheW91dC5hcHBlbmRIZWlnaHQgKyBcInB4XCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLnNob3dTdW1tYXJ5XG4gICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZGF0YSAmJiBfdm0uZGF0YS5sZW5ndGggPiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImRhdGEgJiYgZGF0YS5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIHJlZjogXCJmaXhlZEZvb3RlcldyYXBwZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10YWJsZV9fZml4ZWQtZm9vdGVyLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0YWJsZS1mb290ZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IF92bS5ib2R5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZDogXCJsZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogX3ZtLmJvcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzdW0tdGV4dFwiOiBfdm0uc3VtVGV4dCB8fCBfdm0udChcImVsLnRhYmxlLnN1bVRleHRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwic3VtbWFyeS1tZXRob2RcIjogX3ZtLnN1bW1hcnlNZXRob2QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBfdm0uc3RvcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgXVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5yaWdodEZpeGVkQ29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb3VzZXdoZWVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW91c2V3aGVlbFwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oYW5kbGVGaXhlZE1vdXNld2hlZWwsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImhhbmRsZUZpeGVkTW91c2V3aGVlbFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZWY6IFwicmlnaHRGaXhlZFdyYXBwZXJcIixcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGFibGVfX2ZpeGVkLXJpZ2h0XCIsXG4gICAgICAgICAgICAgIHN0eWxlOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgd2lkdGg6IF92bS5sYXlvdXQucmlnaHRGaXhlZFdpZHRoXG4gICAgICAgICAgICAgICAgICAgID8gX3ZtLmxheW91dC5yaWdodEZpeGVkV2lkdGggKyBcInB4XCJcbiAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgcmlnaHQ6IF92bS5sYXlvdXQuc2Nyb2xsWVxuICAgICAgICAgICAgICAgICAgICA/IChfdm0uYm9yZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF92bS5sYXlvdXQuZ3V0dGVyV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLmxheW91dC5ndXR0ZXJXaWR0aCB8fCAwKSArIFwicHhcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF92bS5maXhlZEhlaWdodFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0uc2hvd0hlYWRlclxuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICByZWY6IFwicmlnaHRGaXhlZEhlYWRlcldyYXBwZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10YWJsZV9fZml4ZWQtaGVhZGVyLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0YWJsZS1oZWFkZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBcInJpZ2h0Rml4ZWRUYWJsZUhlYWRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IF92bS5ib2R5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IF92bS5ib3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBfdm0uc3RvcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICByZWY6IFwicmlnaHRGaXhlZEJvZHlXcmFwcGVyXCIsXG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10YWJsZV9fZml4ZWQtYm9keS13cmFwcGVyXCIsXG4gICAgICAgICAgICAgICAgICBzdHlsZTogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdG9wOiBfdm0ubGF5b3V0LmhlYWRlckhlaWdodCArIFwicHhcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfdm0uZml4ZWRCb2R5SGVpZ2h0XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcInRhYmxlLWJvZHlcIiwge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfdm0uYm9keVdpZHRoXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogX3ZtLnN0b3JlLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmlwZTogX3ZtLnN0cmlwZSxcbiAgICAgICAgICAgICAgICAgICAgICBcInJvdy1jbGFzcy1uYW1lXCI6IF92bS5yb3dDbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgXCJyb3ctc3R5bGVcIjogX3ZtLnJvd1N0eWxlLFxuICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogX3ZtLmhpZ2hsaWdodEN1cnJlbnRSb3dcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBfdm0uJHNsb3RzLmFwcGVuZFxuICAgICAgICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlX19hcHBlbmQtZ3V0dGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogeyBoZWlnaHQ6IF92bS5sYXlvdXQuYXBwZW5kSGVpZ2h0ICsgXCJweFwiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5zaG93U3VtbWFyeVxuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmRhdGEgJiYgX3ZtLmRhdGEubGVuZ3RoID4gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJkYXRhICYmIGRhdGEubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICByZWY6IFwicmlnaHRGaXhlZEZvb3RlcldyYXBwZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10YWJsZV9fZml4ZWQtZm9vdGVyLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0YWJsZS1mb290ZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IF92bS5ib2R5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IF92bS5ib3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwic3VtLXRleHRcIjogX3ZtLnN1bVRleHQgfHwgX3ZtLnQoXCJlbC50YWJsZS5zdW1UZXh0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInN1bW1hcnktbWV0aG9kXCI6IF92bS5zdW1tYXJ5TWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogX3ZtLnN0b3JlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfdm0ucmlnaHRGaXhlZENvbHVtbnMubGVuZ3RoID4gMFxuICAgICAgICA/IF9jKFwiZGl2XCIsIHtcbiAgICAgICAgICAgIHJlZjogXCJyaWdodEZpeGVkUGF0Y2hcIixcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlX19maXhlZC1yaWdodC1wYXRjaFwiLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgd2lkdGg6IF92bS5sYXlvdXQuc2Nyb2xsWSA/IF92bS5sYXlvdXQuZ3V0dGVyV2lkdGggKyBcInB4XCIgOiBcIjBcIixcbiAgICAgICAgICAgICAgaGVpZ2h0OiBfdm0ubGF5b3V0LmhlYWRlckhlaWdodCArIFwicHhcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICB2YWx1ZTogX3ZtLnJlc2l6ZVByb3h5VmlzaWJsZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb246IFwicmVzaXplUHJveHlWaXNpYmxlXCJcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlZjogXCJyZXNpemVQcm94eVwiLFxuICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10YWJsZV9fY29sdW1uLXJlc2l6ZS1wcm94eVwiXG4gICAgICB9KVxuICAgIF1cbiAgKVxufVxudmFyIHRhYmxldnVlX3R5cGVfdGVtcGxhdGVfaWRfNDkzZmUzNGVfc3RhdGljUmVuZGVyRm5zID0gW11cbnRhYmxldnVlX3R5cGVfdGVtcGxhdGVfaWRfNDkzZmUzNGVfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJsZS9zcmMvdGFibGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ5M2ZlMzRlJlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvY2hlY2tib3hcIlxudmFyIGNoZWNrYm94XyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpO1xudmFyIGNoZWNrYm94X2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNoZWNrYm94Xyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJ0aHJvdHRsZS1kZWJvdW5jZVwiXG52YXIgZXh0ZXJuYWxfdGhyb3R0bGVfZGVib3VuY2VfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJub3JtYWxpemUtd2hlZWxcIlxudmFyIGV4dGVybmFsX25vcm1hbGl6ZV93aGVlbF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTtcbnZhciBleHRlcm5hbF9ub3JtYWxpemVfd2hlZWxfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZXh0ZXJuYWxfbm9ybWFsaXplX3doZWVsXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL2RpcmVjdGl2ZXMvbW91c2V3aGVlbC5qc1xuXG5cbnZhciBpc0ZpcmVmb3ggPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpID4gLTE7XG5cbnZhciBtb3VzZXdoZWVsX21vdXNld2hlZWwgPSBmdW5jdGlvbiBtb3VzZXdoZWVsKGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihpc0ZpcmVmb3ggPyAnRE9NTW91c2VTY3JvbGwnIDogJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciBub3JtYWxpemVkID0gZXh0ZXJuYWxfbm9ybWFsaXplX3doZWVsX2RlZmF1bHQoKShldmVudCk7XG4gICAgICBjYWxsYmFjayAmJiBjYWxsYmFjay5hcHBseSh0aGlzLCBbZXZlbnQsIG5vcm1hbGl6ZWRdKTtcbiAgICB9KTtcbiAgfVxufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZGlyZWN0aXZlc19tb3VzZXdoZWVsID0gKHtcbiAgYmluZDogZnVuY3Rpb24gYmluZChlbCwgYmluZGluZykge1xuICAgIG1vdXNld2hlZWxfbW91c2V3aGVlbChlbCwgYmluZGluZy52YWx1ZSk7XG4gIH1cbn0pO1xuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcInZ1ZVwiXG52YXIgZXh0ZXJuYWxfdnVlXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG52YXIgZXh0ZXJuYWxfdnVlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGV4dGVybmFsX3Z1ZV8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy91dGlsLmpzXG52YXIgdXRpbF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5cblxudmFyIGdldENlbGwgPSBmdW5jdGlvbiBnZXRDZWxsKGV2ZW50KSB7XG4gIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0O1xuXG4gIHdoaWxlIChjZWxsICYmIGNlbGwudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnSFRNTCcpIHtcbiAgICBpZiAoY2VsbC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdURCcpIHtcbiAgICAgIHJldHVybiBjZWxsO1xuICAgIH1cbiAgICBjZWxsID0gY2VsbC5wYXJlbnROb2RlO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgdXRpbF9pc09iamVjdCA9IGZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogdXRpbF90eXBlb2Yob2JqKSkgPT09ICdvYmplY3QnO1xufTtcblxudmFyIHV0aWxfb3JkZXJCeSA9IGZ1bmN0aW9uIG9yZGVyQnkoYXJyYXksIHNvcnRLZXksIHJldmVyc2UsIHNvcnRNZXRob2QsIHNvcnRCeSkge1xuICBpZiAoIXNvcnRLZXkgJiYgIXNvcnRNZXRob2QgJiYgKCFzb3J0QnkgfHwgQXJyYXkuaXNBcnJheShzb3J0QnkpICYmICFzb3J0QnkubGVuZ3RoKSkge1xuICAgIHJldHVybiBhcnJheTtcbiAgfVxuICBpZiAodHlwZW9mIHJldmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV2ZXJzZSA9IHJldmVyc2UgPT09ICdkZXNjZW5kaW5nJyA/IC0xIDogMTtcbiAgfSBlbHNlIHtcbiAgICByZXZlcnNlID0gcmV2ZXJzZSAmJiByZXZlcnNlIDwgMCA/IC0xIDogMTtcbiAgfVxuICB2YXIgZ2V0S2V5ID0gc29ydE1ldGhvZCA/IG51bGwgOiBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgaWYgKHNvcnRCeSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHNvcnRCeSkpIHtcbiAgICAgICAgc29ydEJ5ID0gW3NvcnRCeV07XG4gICAgICB9XG4gICAgICByZXR1cm4gc29ydEJ5Lm1hcChmdW5jdGlvbiAoYnkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBieSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0KHV0aWxfW1wiZ2V0VmFsdWVCeVBhdGhcIl0pKHZhbHVlLCBieSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGJ5KHZhbHVlLCBpbmRleCwgYXJyYXkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHNvcnRLZXkgIT09ICcka2V5Jykge1xuICAgICAgaWYgKHV0aWxfaXNPYmplY3QodmFsdWUpICYmICckdmFsdWUnIGluIHZhbHVlKSB2YWx1ZSA9IHZhbHVlLiR2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFt1dGlsX2lzT2JqZWN0KHZhbHVlKSA/IE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKSh2YWx1ZSwgc29ydEtleSkgOiB2YWx1ZV07XG4gIH07XG4gIHZhciBjb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZShhLCBiKSB7XG4gICAgaWYgKHNvcnRNZXRob2QpIHtcbiAgICAgIHJldHVybiBzb3J0TWV0aG9kKGEudmFsdWUsIGIudmFsdWUpO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYS5rZXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmIChhLmtleVtpXSA8IGIua2V5W2ldKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChhLmtleVtpXSA+IGIua2V5W2ldKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfTtcbiAgcmV0dXJuIGFycmF5Lm1hcChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgIGtleTogZ2V0S2V5ID8gZ2V0S2V5KHZhbHVlLCBpbmRleCkgOiBudWxsXG4gICAgfTtcbiAgfSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHZhciBvcmRlciA9IGNvbXBhcmUoYSwgYik7XG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgLy8gbWFrZSBzdGFibGUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29ydGluZ19hbGdvcml0aG0jU3RhYmlsaXR5XG4gICAgICBvcmRlciA9IGEuaW5kZXggLSBiLmluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gb3JkZXIgKiByZXZlcnNlO1xuICB9KS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgfSk7XG59O1xuXG52YXIgZ2V0Q29sdW1uQnlJZCA9IGZ1bmN0aW9uIGdldENvbHVtbkJ5SWQodGFibGUsIGNvbHVtbklkKSB7XG4gIHZhciBjb2x1bW4gPSBudWxsO1xuICB0YWJsZS5jb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbS5pZCA9PT0gY29sdW1uSWQpIHtcbiAgICAgIGNvbHVtbiA9IGl0ZW07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvbHVtbjtcbn07XG5cbnZhciBnZXRDb2x1bW5CeUtleSA9IGZ1bmN0aW9uIGdldENvbHVtbkJ5S2V5KHRhYmxlLCBjb2x1bW5LZXkpIHtcbiAgdmFyIGNvbHVtbiA9IG51bGw7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGFibGUuY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gdGFibGUuY29sdW1uc1tpXTtcbiAgICBpZiAoaXRlbS5jb2x1bW5LZXkgPT09IGNvbHVtbktleSkge1xuICAgICAgY29sdW1uID0gaXRlbTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29sdW1uO1xufTtcblxudmFyIGdldENvbHVtbkJ5Q2VsbCA9IGZ1bmN0aW9uIGdldENvbHVtbkJ5Q2VsbCh0YWJsZSwgY2VsbCkge1xuICB2YXIgbWF0Y2hlcyA9IChjZWxsLmNsYXNzTmFtZSB8fCAnJykubWF0Y2goL2VsLXRhYmxlX1teXFxzXSsvZ20pO1xuICBpZiAobWF0Y2hlcykge1xuICAgIHJldHVybiBnZXRDb2x1bW5CeUlkKHRhYmxlLCBtYXRjaGVzWzBdKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBnZXRSb3dJZGVudGl0eSA9IGZ1bmN0aW9uIGdldFJvd0lkZW50aXR5KHJvdywgcm93S2V5KSB7XG4gIGlmICghcm93KSB0aHJvdyBuZXcgRXJyb3IoJ3JvdyBpcyByZXF1aXJlZCB3aGVuIGdldCByb3cgaWRlbnRpdHknKTtcbiAgaWYgKHR5cGVvZiByb3dLZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHJvd0tleS5pbmRleE9mKCcuJykgPCAwKSB7XG4gICAgICByZXR1cm4gcm93W3Jvd0tleV07XG4gICAgfVxuICAgIHZhciBrZXkgPSByb3dLZXkuc3BsaXQoJy4nKTtcbiAgICB2YXIgY3VycmVudCA9IHJvdztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKykge1xuICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5W2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHJvd0tleSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiByb3dLZXkuY2FsbChudWxsLCByb3cpO1xuICB9XG59O1xuXG52YXIgZ2V0S2V5c01hcCA9IGZ1bmN0aW9uIGdldEtleXNNYXAoYXJyYXksIHJvd0tleSkge1xuICB2YXIgYXJyYXlNYXAgPSB7fTtcbiAgKGFycmF5IHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGluZGV4KSB7XG4gICAgYXJyYXlNYXBbZ2V0Um93SWRlbnRpdHkocm93LCByb3dLZXkpXSA9IHsgcm93OiByb3csIGluZGV4OiBpbmRleCB9O1xuICB9KTtcbiAgcmV0dXJuIGFycmF5TWFwO1xufTtcblxuZnVuY3Rpb24gaGFzT3duKG9iaiwga2V5KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xufVxuXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMoZGVmYXVsdHMsIGNvbmZpZykge1xuICB2YXIgb3B0aW9ucyA9IHt9O1xuICB2YXIga2V5ID0gdm9pZCAwO1xuICBmb3IgKGtleSBpbiBkZWZhdWx0cykge1xuICAgIG9wdGlvbnNba2V5XSA9IGRlZmF1bHRzW2tleV07XG4gIH1cbiAgZm9yIChrZXkgaW4gY29uZmlnKSB7XG4gICAgaWYgKGhhc093bihjb25maWcsIGtleSkpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgb3B0aW9uc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiBwYXJzZVdpZHRoKHdpZHRoKSB7XG4gIGlmICh3aWR0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgd2lkdGggPSBwYXJzZUludCh3aWR0aCwgMTApO1xuICAgIGlmIChpc05hTih3aWR0aCkpIHtcbiAgICAgIHdpZHRoID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHdpZHRoO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1pbldpZHRoKG1pbldpZHRoKSB7XG4gIGlmICh0eXBlb2YgbWluV2lkdGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgbWluV2lkdGggPSBwYXJzZVdpZHRoKG1pbldpZHRoKTtcbiAgICBpZiAoaXNOYU4obWluV2lkdGgpKSB7XG4gICAgICBtaW5XaWR0aCA9IDgwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWluV2lkdGg7XG59O1xuXG5mdW5jdGlvbiBwYXJzZUhlaWdodChoZWlnaHQpIHtcbiAgaWYgKHR5cGVvZiBoZWlnaHQgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGhlaWdodDtcbiAgfVxuICBpZiAodHlwZW9mIGhlaWdodCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoL15cXGQrKD86cHgpPyQvLnRlc3QoaGVpZ2h0KSkge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KGhlaWdodCwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaGVpZ2h0O1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlZHV4anMvcmVkdXgvYmxvYi9tYXN0ZXIvc3JjL2NvbXBvc2UuanNcbmZ1bmN0aW9uIGNvbXBvc2UoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBmdW5jcyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGZ1bmNzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaWYgKGZ1bmNzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICByZXR1cm4gYXJnO1xuICAgIH07XG4gIH1cbiAgaWYgKGZ1bmNzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBmdW5jc1swXTtcbiAgfVxuICByZXR1cm4gZnVuY3MucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhKGIuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpKTtcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9nZ2xlUm93U3RhdHVzKHN0YXR1c0Fyciwgcm93LCBuZXdWYWwpIHtcbiAgdmFyIGNoYW5nZWQgPSBmYWxzZTtcbiAgdmFyIGluZGV4ID0gc3RhdHVzQXJyLmluZGV4T2Yocm93KTtcbiAgdmFyIGluY2x1ZGVkID0gaW5kZXggIT09IC0xO1xuXG4gIHZhciBhZGRSb3cgPSBmdW5jdGlvbiBhZGRSb3coKSB7XG4gICAgc3RhdHVzQXJyLnB1c2gocm93KTtcbiAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgfTtcbiAgdmFyIHJlbW92ZVJvdyA9IGZ1bmN0aW9uIHJlbW92ZVJvdygpIHtcbiAgICBzdGF0dXNBcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgfTtcblxuICBpZiAodHlwZW9mIG5ld1ZhbCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgaWYgKG5ld1ZhbCAmJiAhaW5jbHVkZWQpIHtcbiAgICAgIGFkZFJvdygpO1xuICAgIH0gZWxzZSBpZiAoIW5ld1ZhbCAmJiBpbmNsdWRlZCkge1xuICAgICAgcmVtb3ZlUm93KCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChpbmNsdWRlZCkge1xuICAgICAgcmVtb3ZlUm93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFkZFJvdygpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2hhbmdlZDtcbn1cblxuZnVuY3Rpb24gd2Fsa1RyZWVOb2RlKHJvb3QsIGNiKSB7XG4gIHZhciBjaGlsZHJlbktleSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogJ2NoaWxkcmVuJztcbiAgdmFyIGxhenlLZXkgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6ICdoYXNDaGlsZHJlbic7XG5cbiAgdmFyIGlzTmlsID0gZnVuY3Rpb24gaXNOaWwoYXJyYXkpIHtcbiAgICByZXR1cm4gIShBcnJheS5pc0FycmF5KGFycmF5KSAmJiBhcnJheS5sZW5ndGgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIF93YWxrZXIocGFyZW50LCBjaGlsZHJlbiwgbGV2ZWwpIHtcbiAgICBjYihwYXJlbnQsIGNoaWxkcmVuLCBsZXZlbCk7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgaWYgKGl0ZW1bbGF6eUtleV0pIHtcbiAgICAgICAgY2IoaXRlbSwgbnVsbCwgbGV2ZWwgKyAxKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuID0gaXRlbVtjaGlsZHJlbktleV07XG4gICAgICBpZiAoIWlzTmlsKGNoaWxkcmVuKSkge1xuICAgICAgICBfd2Fsa2VyKGl0ZW0sIGNoaWxkcmVuLCBsZXZlbCArIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcm9vdC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKGl0ZW1bbGF6eUtleV0pIHtcbiAgICAgIGNiKGl0ZW0sIG51bGwsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgY2hpbGRyZW4gPSBpdGVtW2NoaWxkcmVuS2V5XTtcbiAgICBpZiAoIWlzTmlsKGNoaWxkcmVuKSkge1xuICAgICAgX3dhbGtlcihpdGVtLCBjaGlsZHJlbiwgMCk7XG4gICAgfVxuICB9KTtcbn1cblxudmFyIG9iamVjdEVxdWFscyA9IGZ1bmN0aW9uIG9iamVjdEVxdWFscyhvYmplY3RBLCBvYmplY3RCKSB7XG4gIC8vIOWPluWvueixoWHlkoxi55qE5bGe5oCn5ZCNXG4gIHZhciBhUHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3RBKTtcbiAgdmFyIGJQcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdEIpO1xuICAvLyDliKTmlq3lsZ7mgKflkI3nmoRsZW5ndGjmmK/lkKbkuIDoh7RcbiAgaWYgKGFQcm9wcy5sZW5ndGggIT09IGJQcm9wcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8g5b6q546v5Y+W5Ye65bGe5oCn5ZCN77yM5YaN5Yik5pat5bGe5oCn5YC85piv5ZCm5LiA6Ie0XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYVByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3BOYW1lID0gYVByb3BzW2ldO1xuICAgIGlmIChvYmplY3RBW3Byb3BOYW1lXSAhPT0gb2JqZWN0Qltwcm9wTmFtZV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJsZS9zcmMvc3RvcmUvZXhwYW5kLmpzXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZXhwYW5kID0gKHtcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGVzOiB7XG4gICAgICAgIGRlZmF1bHRFeHBhbmRBbGw6IGZhbHNlLFxuICAgICAgICBleHBhbmRSb3dzOiBbXVxuICAgICAgfVxuICAgIH07XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgdXBkYXRlRXhwYW5kUm93czogZnVuY3Rpb24gdXBkYXRlRXhwYW5kUm93cygpIHtcbiAgICAgIHZhciBfc3RhdGVzID0gdGhpcy5zdGF0ZXMsXG4gICAgICAgICAgX3N0YXRlcyRkYXRhID0gX3N0YXRlcy5kYXRhLFxuICAgICAgICAgIGRhdGEgPSBfc3RhdGVzJGRhdGEgPT09IHVuZGVmaW5lZCA/IFtdIDogX3N0YXRlcyRkYXRhLFxuICAgICAgICAgIHJvd0tleSA9IF9zdGF0ZXMucm93S2V5LFxuICAgICAgICAgIGRlZmF1bHRFeHBhbmRBbGwgPSBfc3RhdGVzLmRlZmF1bHRFeHBhbmRBbGwsXG4gICAgICAgICAgZXhwYW5kUm93cyA9IF9zdGF0ZXMuZXhwYW5kUm93cztcblxuICAgICAgaWYgKGRlZmF1bHRFeHBhbmRBbGwpIHtcbiAgICAgICAgdGhpcy5zdGF0ZXMuZXhwYW5kUm93cyA9IGRhdGEuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocm93S2V5KSB7XG4gICAgICAgIC8vIFRPRE/vvJrov5nph4znmoTku6PnoIHlj6/ku6XkvJjljJZcbiAgICAgICAgdmFyIGV4cGFuZFJvd3NNYXAgPSBnZXRLZXlzTWFwKGV4cGFuZFJvd3MsIHJvd0tleSk7XG4gICAgICAgIHRoaXMuc3RhdGVzLmV4cGFuZFJvd3MgPSBkYXRhLnJlZHVjZShmdW5jdGlvbiAocHJldiwgcm93KSB7XG4gICAgICAgICAgdmFyIHJvd0lkID0gZ2V0Um93SWRlbnRpdHkocm93LCByb3dLZXkpO1xuICAgICAgICAgIHZhciByb3dJbmZvID0gZXhwYW5kUm93c01hcFtyb3dJZF07XG4gICAgICAgICAgaWYgKHJvd0luZm8pIHtcbiAgICAgICAgICAgIHByZXYucHVzaChyb3cpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgfSwgW10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZXMuZXhwYW5kUm93cyA9IFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgdG9nZ2xlUm93RXhwYW5zaW9uOiBmdW5jdGlvbiB0b2dnbGVSb3dFeHBhbnNpb24ocm93LCBleHBhbmRlZCkge1xuICAgICAgdmFyIGNoYW5nZWQgPSB0b2dnbGVSb3dTdGF0dXModGhpcy5zdGF0ZXMuZXhwYW5kUm93cywgcm93LCBleHBhbmRlZCk7XG4gICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICB0aGlzLnRhYmxlLiRlbWl0KCdleHBhbmQtY2hhbmdlJywgcm93LCB0aGlzLnN0YXRlcy5leHBhbmRSb3dzLnNsaWNlKCkpO1xuICAgICAgICB0aGlzLnNjaGVkdWxlTGF5b3V0KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXRFeHBhbmRSb3dLZXlzOiBmdW5jdGlvbiBzZXRFeHBhbmRSb3dLZXlzKHJvd0tleXMpIHtcbiAgICAgIHRoaXMuYXNzZXJ0Um93S2V5KCk7XG4gICAgICAvLyBUT0RP77ya6L+Z6YeM55qE5Luj56CB5Y+v5Lul5LyY5YyWXG4gICAgICB2YXIgX3N0YXRlczIgPSB0aGlzLnN0YXRlcyxcbiAgICAgICAgICBkYXRhID0gX3N0YXRlczIuZGF0YSxcbiAgICAgICAgICByb3dLZXkgPSBfc3RhdGVzMi5yb3dLZXk7XG5cbiAgICAgIHZhciBrZXlzTWFwID0gZ2V0S2V5c01hcChkYXRhLCByb3dLZXkpO1xuICAgICAgdGhpcy5zdGF0ZXMuZXhwYW5kUm93cyA9IHJvd0tleXMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgdmFyIGluZm8gPSBrZXlzTWFwW2N1cl07XG4gICAgICAgIGlmIChpbmZvKSB7XG4gICAgICAgICAgcHJldi5wdXNoKGluZm8ucm93KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH0sIFtdKTtcbiAgICB9LFxuICAgIGlzUm93RXhwYW5kZWQ6IGZ1bmN0aW9uIGlzUm93RXhwYW5kZWQocm93KSB7XG4gICAgICB2YXIgX3N0YXRlczMgPSB0aGlzLnN0YXRlcyxcbiAgICAgICAgICBfc3RhdGVzMyRleHBhbmRSb3dzID0gX3N0YXRlczMuZXhwYW5kUm93cyxcbiAgICAgICAgICBleHBhbmRSb3dzID0gX3N0YXRlczMkZXhwYW5kUm93cyA9PT0gdW5kZWZpbmVkID8gW10gOiBfc3RhdGVzMyRleHBhbmRSb3dzLFxuICAgICAgICAgIHJvd0tleSA9IF9zdGF0ZXMzLnJvd0tleTtcblxuICAgICAgaWYgKHJvd0tleSkge1xuICAgICAgICB2YXIgZXhwYW5kTWFwID0gZ2V0S2V5c01hcChleHBhbmRSb3dzLCByb3dLZXkpO1xuICAgICAgICByZXR1cm4gISFleHBhbmRNYXBbZ2V0Um93SWRlbnRpdHkocm93LCByb3dLZXkpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBleHBhbmRSb3dzLmluZGV4T2Yocm93KSAhPT0gLTE7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFibGUvc3JjL3N0b3JlL2N1cnJlbnQuanNcblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN0b3JlX2N1cnJlbnQgPSAoe1xuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZXM6IHtcbiAgICAgICAgLy8g5LiN5Y+v5ZON5bqU55qE77yM6K6+572uIGN1cnJlbnRSb3dLZXkg5pe277yMZGF0YSDkuI3kuIDlrprlrZjlnKjvvIzkuZ/orrjml6Dms5Xnrpflh7rmraPnoa7nmoQgY3VycmVudFJvd1xuICAgICAgICAvLyDmioror6XlgLznvJPlrZjkuIDkuIvvvIzlvZPnlKjmiLfngrnlh7vkv67mlLkgY3VycmVudFJvdyDml7bvvIzmioror6XlgLzph43nva7kuLogbnVsbFxuICAgICAgICBfY3VycmVudFJvd0tleTogbnVsbCxcbiAgICAgICAgY3VycmVudFJvdzogbnVsbFxuICAgICAgfVxuICAgIH07XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgc2V0Q3VycmVudFJvd0tleTogZnVuY3Rpb24gc2V0Q3VycmVudFJvd0tleShrZXkpIHtcbiAgICAgIHRoaXMuYXNzZXJ0Um93S2V5KCk7XG4gICAgICB0aGlzLnN0YXRlcy5fY3VycmVudFJvd0tleSA9IGtleTtcbiAgICAgIHRoaXMuc2V0Q3VycmVudFJvd0J5S2V5KGtleSk7XG4gICAgfSxcbiAgICByZXN0b3JlQ3VycmVudFJvd0tleTogZnVuY3Rpb24gcmVzdG9yZUN1cnJlbnRSb3dLZXkoKSB7XG4gICAgICB0aGlzLnN0YXRlcy5fY3VycmVudFJvd0tleSA9IG51bGw7XG4gICAgfSxcbiAgICBzZXRDdXJyZW50Um93QnlLZXk6IGZ1bmN0aW9uIHNldEN1cnJlbnRSb3dCeUtleShrZXkpIHtcbiAgICAgIHZhciBzdGF0ZXMgPSB0aGlzLnN0YXRlcztcbiAgICAgIHZhciBfc3RhdGVzJGRhdGEgPSBzdGF0ZXMuZGF0YSxcbiAgICAgICAgICBkYXRhID0gX3N0YXRlcyRkYXRhID09PSB1bmRlZmluZWQgPyBbXSA6IF9zdGF0ZXMkZGF0YSxcbiAgICAgICAgICByb3dLZXkgPSBzdGF0ZXMucm93S2V5O1xuXG4gICAgICB2YXIgY3VycmVudFJvdyA9IG51bGw7XG4gICAgICBpZiAocm93S2V5KSB7XG4gICAgICAgIGN1cnJlbnRSb3cgPSBPYmplY3QodXRpbF9bXCJhcnJheUZpbmRcIl0pKGRhdGEsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFJvd0lkZW50aXR5KGl0ZW0sIHJvd0tleSkgPT09IGtleTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBzdGF0ZXMuY3VycmVudFJvdyA9IGN1cnJlbnRSb3c7XG4gICAgfSxcbiAgICB1cGRhdGVDdXJyZW50Um93OiBmdW5jdGlvbiB1cGRhdGVDdXJyZW50Um93KGN1cnJlbnRSb3cpIHtcbiAgICAgIHZhciBzdGF0ZXMgPSB0aGlzLnN0YXRlcyxcbiAgICAgICAgICB0YWJsZSA9IHRoaXMudGFibGU7XG5cbiAgICAgIHZhciBvbGRDdXJyZW50Um93ID0gc3RhdGVzLmN1cnJlbnRSb3c7XG4gICAgICBpZiAoY3VycmVudFJvdyAmJiBjdXJyZW50Um93ICE9PSBvbGRDdXJyZW50Um93KSB7XG4gICAgICAgIHN0YXRlcy5jdXJyZW50Um93ID0gY3VycmVudFJvdztcbiAgICAgICAgdGFibGUuJGVtaXQoJ2N1cnJlbnQtY2hhbmdlJywgY3VycmVudFJvdywgb2xkQ3VycmVudFJvdyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghY3VycmVudFJvdyAmJiBvbGRDdXJyZW50Um93KSB7XG4gICAgICAgIHN0YXRlcy5jdXJyZW50Um93ID0gbnVsbDtcbiAgICAgICAgdGFibGUuJGVtaXQoJ2N1cnJlbnQtY2hhbmdlJywgbnVsbCwgb2xkQ3VycmVudFJvdyk7XG4gICAgICB9XG4gICAgfSxcbiAgICB1cGRhdGVDdXJyZW50Um93RGF0YTogZnVuY3Rpb24gdXBkYXRlQ3VycmVudFJvd0RhdGEoKSB7XG4gICAgICB2YXIgc3RhdGVzID0gdGhpcy5zdGF0ZXMsXG4gICAgICAgICAgdGFibGUgPSB0aGlzLnRhYmxlO1xuICAgICAgdmFyIHJvd0tleSA9IHN0YXRlcy5yb3dLZXksXG4gICAgICAgICAgX2N1cnJlbnRSb3dLZXkgPSBzdGF0ZXMuX2N1cnJlbnRSb3dLZXk7XG4gICAgICAvLyBkYXRhIOS4uiBudWxsIOaXtu+8jOino+aehOaXtueahOm7mOiupOWAvOS8muiiq+W/veeVpVxuXG4gICAgICB2YXIgZGF0YSA9IHN0YXRlcy5kYXRhIHx8IFtdO1xuICAgICAgdmFyIG9sZEN1cnJlbnRSb3cgPSBzdGF0ZXMuY3VycmVudFJvdztcblxuICAgICAgLy8g5b2TIGN1cnJlbnRSb3cg5LiN5ZyoIGRhdGEg5Lit5pe25bCd6K+V5pu05paw5pWw5o2uXG4gICAgICBpZiAoZGF0YS5pbmRleE9mKG9sZEN1cnJlbnRSb3cpID09PSAtMSAmJiBvbGRDdXJyZW50Um93KSB7XG4gICAgICAgIGlmIChyb3dLZXkpIHtcbiAgICAgICAgICB2YXIgY3VycmVudFJvd0tleSA9IGdldFJvd0lkZW50aXR5KG9sZEN1cnJlbnRSb3csIHJvd0tleSk7XG4gICAgICAgICAgdGhpcy5zZXRDdXJyZW50Um93QnlLZXkoY3VycmVudFJvd0tleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGVzLmN1cnJlbnRSb3cgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZXMuY3VycmVudFJvdyA9PT0gbnVsbCkge1xuICAgICAgICAgIHRhYmxlLiRlbWl0KCdjdXJyZW50LWNoYW5nZScsIG51bGwsIG9sZEN1cnJlbnRSb3cpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKF9jdXJyZW50Um93S2V5KSB7XG4gICAgICAgIC8vIOaKiuWIneWni+aXtuS4i+iuvue9rueahCByb3dLZXkg6L2s5YyW5oiQIHJvd0RhdGFcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50Um93QnlLZXkoX2N1cnJlbnRSb3dLZXkpO1xuICAgICAgICB0aGlzLnJlc3RvcmVDdXJyZW50Um93S2V5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFibGUvc3JjL3N0b3JlL3RyZWUuanNcbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0cmVlID0gKHtcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGVzOiB7XG4gICAgICAgIC8vIGRlZmF1bHRFeHBhbmRBbGwg5a2Y5Zyo5LqOIGV4cGFuZC5qcyDkuK3vvIzov5nph4zkuI3ph43lpI3mt7vliqBcbiAgICAgICAgLy8g5Zyo5bGV5byA6KGM5Lit77yMZXhwYW5kUm93S2V5cyDkvJrooqvovazljJbmiJAgZXhwYW5kUm93c++8jGV4cGFuZFJvd0tleXMg6L+Z5Liq5bGe5oCn5Y+q5piv6K6w5b2V5LqGIFRyZWVUYWJsZSDooYznmoTlsZXlvIBcbiAgICAgICAgLy8gVE9ETzog5ouG5YiG5Li654us56uL55qEIFRyZWVUYWJsZe+8jOe7n+S4gOeUqOazlVxuICAgICAgICBleHBhbmRSb3dLZXlzOiBbXSxcbiAgICAgICAgdHJlZURhdGE6IHt9LFxuICAgICAgICBpbmRlbnQ6IDE2LFxuICAgICAgICBsYXp5OiBmYWxzZSxcbiAgICAgICAgbGF6eVRyZWVOb2RlTWFwOiB7fSxcbiAgICAgICAgbGF6eUNvbHVtbklkZW50aWZpZXI6ICdoYXNDaGlsZHJlbicsXG4gICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZTogJ2NoaWxkcmVuJ1xuICAgICAgfVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIC8vIOW1jOWFpeWei+eahOaVsOaNru+8jHdhdGNoIOaXoOazleaYr+ajgOa1i+WIsOWPmOWMliBodHRwczovL2dpdGh1Yi5jb20vRWxlbWVGRS9lbGVtZW50L2lzc3Vlcy8xNDk5OFxuICAgIC8vIFRPRE86IOS9v+eUqCBjb21wdXRlZCDop6PlhrPor6Xpl67popjvvIzmmK/lkKbkvJrpgKDmiJDmgKfog73pl67popjvvJ9cbiAgICAvLyBAcmV0dXJuIHsgaWQ6IHsgbGV2ZWwsIGNoaWxkcmVuIH0gfVxuICAgIG5vcm1hbGl6ZWREYXRhOiBmdW5jdGlvbiBub3JtYWxpemVkRGF0YSgpIHtcbiAgICAgIGlmICghdGhpcy5zdGF0ZXMucm93S2V5KSByZXR1cm4ge307XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuc3RhdGVzLmRhdGEgfHwgW107XG4gICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemUoZGF0YSk7XG4gICAgfSxcblxuICAgIC8vIEByZXR1cm4geyBpZDogeyBjaGlsZHJlbiB9IH1cbiAgICAvLyDpkojlr7nmh5LliqDovb3nmoTmg4XlvaLvvIzkuI3lpITnkIbltYzlpZfmlbDmja5cbiAgICBub3JtYWxpemVkTGF6eU5vZGU6IGZ1bmN0aW9uIG5vcm1hbGl6ZWRMYXp5Tm9kZSgpIHtcbiAgICAgIHZhciBfc3RhdGVzID0gdGhpcy5zdGF0ZXMsXG4gICAgICAgICAgcm93S2V5ID0gX3N0YXRlcy5yb3dLZXksXG4gICAgICAgICAgbGF6eVRyZWVOb2RlTWFwID0gX3N0YXRlcy5sYXp5VHJlZU5vZGVNYXAsXG4gICAgICAgICAgbGF6eUNvbHVtbklkZW50aWZpZXIgPSBfc3RhdGVzLmxhenlDb2x1bW5JZGVudGlmaWVyO1xuXG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGxhenlUcmVlTm9kZU1hcCk7XG4gICAgICB2YXIgcmVzID0ge307XG4gICAgICBpZiAoIWtleXMubGVuZ3RoKSByZXR1cm4gcmVzO1xuICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGxhenlUcmVlTm9kZU1hcFtrZXldLmxlbmd0aCkge1xuICAgICAgICAgIHZhciBpdGVtID0geyBjaGlsZHJlbjogW10gfTtcbiAgICAgICAgICBsYXp5VHJlZU5vZGVNYXBba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgICAgIHZhciBjdXJyZW50Um93S2V5ID0gZ2V0Um93SWRlbnRpdHkocm93LCByb3dLZXkpO1xuICAgICAgICAgICAgaXRlbS5jaGlsZHJlbi5wdXNoKGN1cnJlbnRSb3dLZXkpO1xuICAgICAgICAgICAgaWYgKHJvd1tsYXp5Q29sdW1uSWRlbnRpZmllcl0gJiYgIXJlc1tjdXJyZW50Um93S2V5XSkge1xuICAgICAgICAgICAgICByZXNbY3VycmVudFJvd0tleV0gPSB7IGNoaWxkcmVuOiBbXSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlc1trZXldID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIG5vcm1hbGl6ZWREYXRhOiAndXBkYXRlVHJlZURhdGEnLFxuICAgIG5vcm1hbGl6ZWRMYXp5Tm9kZTogJ3VwZGF0ZVRyZWVEYXRhJ1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBub3JtYWxpemU6IGZ1bmN0aW9uIG5vcm1hbGl6ZShkYXRhKSB7XG4gICAgICB2YXIgX3N0YXRlczIgPSB0aGlzLnN0YXRlcyxcbiAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWUgPSBfc3RhdGVzMi5jaGlsZHJlbkNvbHVtbk5hbWUsXG4gICAgICAgICAgbGF6eUNvbHVtbklkZW50aWZpZXIgPSBfc3RhdGVzMi5sYXp5Q29sdW1uSWRlbnRpZmllcixcbiAgICAgICAgICByb3dLZXkgPSBfc3RhdGVzMi5yb3dLZXksXG4gICAgICAgICAgbGF6eSA9IF9zdGF0ZXMyLmxhenk7XG5cbiAgICAgIHZhciByZXMgPSB7fTtcbiAgICAgIHdhbGtUcmVlTm9kZShkYXRhLCBmdW5jdGlvbiAocGFyZW50LCBjaGlsZHJlbiwgbGV2ZWwpIHtcbiAgICAgICAgdmFyIHBhcmVudElkID0gZ2V0Um93SWRlbnRpdHkocGFyZW50LCByb3dLZXkpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICByZXNbcGFyZW50SWRdID0ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAocm93KSB7XG4gICAgICAgICAgICAgIHJldHVybiBnZXRSb3dJZGVudGl0eShyb3csIHJvd0tleSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGxldmVsOiBsZXZlbFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAobGF6eSkge1xuICAgICAgICAgIC8vIOW9kyBjaGlsZHJlbiDkuI3lrZjlnKjkuJQgbGF6eSDkuLogdHJ1Ze+8jOivpeiKgueCueWNs+S4uuaHkuWKoOi9veeahOiKgueCuVxuICAgICAgICAgIHJlc1twYXJlbnRJZF0gPSB7XG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBsYXp5OiB0cnVlLFxuICAgICAgICAgICAgbGV2ZWw6IGxldmVsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSwgY2hpbGRyZW5Db2x1bW5OYW1lLCBsYXp5Q29sdW1uSWRlbnRpZmllcik7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sXG4gICAgdXBkYXRlVHJlZURhdGE6IGZ1bmN0aW9uIHVwZGF0ZVRyZWVEYXRhKCkge1xuICAgICAgdmFyIG5lc3RlZCA9IHRoaXMubm9ybWFsaXplZERhdGE7XG4gICAgICB2YXIgbm9ybWFsaXplZExhenlOb2RlID0gdGhpcy5ub3JtYWxpemVkTGF6eU5vZGU7XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG5lc3RlZCk7XG4gICAgICB2YXIgbmV3VHJlZURhdGEgPSB7fTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIgX3N0YXRlczMgPSB0aGlzLnN0YXRlcyxcbiAgICAgICAgICAgIG9sZFRyZWVEYXRhID0gX3N0YXRlczMudHJlZURhdGEsXG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kQWxsID0gX3N0YXRlczMuZGVmYXVsdEV4cGFuZEFsbCxcbiAgICAgICAgICAgIGV4cGFuZFJvd0tleXMgPSBfc3RhdGVzMy5leHBhbmRSb3dLZXlzLFxuICAgICAgICAgICAgbGF6eSA9IF9zdGF0ZXMzLmxhenk7XG5cbiAgICAgICAgdmFyIHJvb3RMYXp5Um93S2V5cyA9IFtdO1xuICAgICAgICB2YXIgZ2V0RXhwYW5kZWQgPSBmdW5jdGlvbiBnZXRFeHBhbmRlZChvbGRWYWx1ZSwga2V5KSB7XG4gICAgICAgICAgdmFyIGluY2x1ZGVkID0gZGVmYXVsdEV4cGFuZEFsbCB8fCBleHBhbmRSb3dLZXlzICYmIGV4cGFuZFJvd0tleXMuaW5kZXhPZihrZXkpICE9PSAtMTtcbiAgICAgICAgICByZXR1cm4gISEob2xkVmFsdWUgJiYgb2xkVmFsdWUuZXhwYW5kZWQgfHwgaW5jbHVkZWQpO1xuICAgICAgICB9O1xuICAgICAgICAvLyDlkIjlubYgZXhwYW5kZWQg5LiOIGRpc3BsYXnvvIznoa7kv53mlbDmja7liLfmlrDlkI7vvIznirbmgIHkuI3lj5hcbiAgICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICB2YXIgb2xkVmFsdWUgPSBvbGRUcmVlRGF0YVtrZXldO1xuICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IF9leHRlbmRzKHt9LCBuZXN0ZWRba2V5XSk7XG4gICAgICAgICAgbmV3VmFsdWUuZXhwYW5kZWQgPSBnZXRFeHBhbmRlZChvbGRWYWx1ZSwga2V5KTtcbiAgICAgICAgICBpZiAobmV3VmFsdWUubGF6eSkge1xuICAgICAgICAgICAgdmFyIF9yZWYgPSBvbGRWYWx1ZSB8fCB7fSxcbiAgICAgICAgICAgICAgICBfcmVmJGxvYWRlZCA9IF9yZWYubG9hZGVkLFxuICAgICAgICAgICAgICAgIGxvYWRlZCA9IF9yZWYkbG9hZGVkID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IF9yZWYkbG9hZGVkLFxuICAgICAgICAgICAgICAgIF9yZWYkbG9hZGluZyA9IF9yZWYubG9hZGluZyxcbiAgICAgICAgICAgICAgICBsb2FkaW5nID0gX3JlZiRsb2FkaW5nID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IF9yZWYkbG9hZGluZztcblxuICAgICAgICAgICAgbmV3VmFsdWUubG9hZGVkID0gISFsb2FkZWQ7XG4gICAgICAgICAgICBuZXdWYWx1ZS5sb2FkaW5nID0gISFsb2FkaW5nO1xuICAgICAgICAgICAgcm9vdExhenlSb3dLZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV3VHJlZURhdGFba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8g5qC55o2u5oeS5Yqg6L295pWw5o2u5pu05pawIHRyZWVEYXRhXG4gICAgICAgIHZhciBsYXp5S2V5cyA9IE9iamVjdC5rZXlzKG5vcm1hbGl6ZWRMYXp5Tm9kZSk7XG4gICAgICAgIGlmIChsYXp5ICYmIGxhenlLZXlzLmxlbmd0aCAmJiByb290TGF6eVJvd0tleXMubGVuZ3RoKSB7XG4gICAgICAgICAgbGF6eUtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgb2xkVmFsdWUgPSBvbGRUcmVlRGF0YVtrZXldO1xuICAgICAgICAgICAgdmFyIGxhenlOb2RlQ2hpbGRyZW4gPSBub3JtYWxpemVkTGF6eU5vZGVba2V5XS5jaGlsZHJlbjtcbiAgICAgICAgICAgIGlmIChyb290TGF6eVJvd0tleXMuaW5kZXhPZihrZXkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAvLyDmh5LliqDovb3nmoQgcm9vdCDoioLngrnvvIzmm7TmlrDkuIDkuIvljp/mnInnmoTmlbDmja7vvIzljp/mnaXnmoQgY2hpbGRyZW4g5LiA5a6a5piv56m65pWw57uEXG4gICAgICAgICAgICAgIGlmIChuZXdUcmVlRGF0YVtrZXldLmNoaWxkcmVuLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW0VsVGFibGVdY2hpbGRyZW4gbXVzdCBiZSBhbiBlbXB0eSBhcnJheS4nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBuZXdUcmVlRGF0YVtrZXldLmNoaWxkcmVuID0gbGF6eU5vZGVDaGlsZHJlbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHZhciBfcmVmMiA9IG9sZFZhbHVlIHx8IHt9LFxuICAgICAgICAgICAgICAgICAgX3JlZjIkbG9hZGVkID0gX3JlZjIubG9hZGVkLFxuICAgICAgICAgICAgICAgICAgbG9hZGVkID0gX3JlZjIkbG9hZGVkID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IF9yZWYyJGxvYWRlZCxcbiAgICAgICAgICAgICAgICAgIF9yZWYyJGxvYWRpbmcgPSBfcmVmMi5sb2FkaW5nLFxuICAgICAgICAgICAgICAgICAgbG9hZGluZyA9IF9yZWYyJGxvYWRpbmcgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogX3JlZjIkbG9hZGluZztcblxuICAgICAgICAgICAgICBuZXdUcmVlRGF0YVtrZXldID0ge1xuICAgICAgICAgICAgICAgIGxhenk6IHRydWUsXG4gICAgICAgICAgICAgICAgbG9hZGVkOiAhIWxvYWRlZCxcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiAhIWxvYWRpbmcsXG4gICAgICAgICAgICAgICAgZXhwYW5kZWQ6IGdldEV4cGFuZGVkKG9sZFZhbHVlLCBrZXkpLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBsYXp5Tm9kZUNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIGxldmVsOiAnJ1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnN0YXRlcy50cmVlRGF0YSA9IG5ld1RyZWVEYXRhO1xuICAgICAgdGhpcy51cGRhdGVUYWJsZVNjcm9sbFkoKTtcbiAgICB9LFxuICAgIHVwZGF0ZVRyZWVFeHBhbmRLZXlzOiBmdW5jdGlvbiB1cGRhdGVUcmVlRXhwYW5kS2V5cyh2YWx1ZSkge1xuICAgICAgdGhpcy5zdGF0ZXMuZXhwYW5kUm93S2V5cyA9IHZhbHVlO1xuICAgICAgdGhpcy51cGRhdGVUcmVlRGF0YSgpO1xuICAgIH0sXG4gICAgdG9nZ2xlVHJlZUV4cGFuc2lvbjogZnVuY3Rpb24gdG9nZ2xlVHJlZUV4cGFuc2lvbihyb3csIGV4cGFuZGVkKSB7XG4gICAgICB0aGlzLmFzc2VydFJvd0tleSgpO1xuXG4gICAgICB2YXIgX3N0YXRlczQgPSB0aGlzLnN0YXRlcyxcbiAgICAgICAgICByb3dLZXkgPSBfc3RhdGVzNC5yb3dLZXksXG4gICAgICAgICAgdHJlZURhdGEgPSBfc3RhdGVzNC50cmVlRGF0YTtcblxuICAgICAgdmFyIGlkID0gZ2V0Um93SWRlbnRpdHkocm93LCByb3dLZXkpO1xuICAgICAgdmFyIGRhdGEgPSBpZCAmJiB0cmVlRGF0YVtpZF07XG4gICAgICBpZiAoaWQgJiYgZGF0YSAmJiAnZXhwYW5kZWQnIGluIGRhdGEpIHtcbiAgICAgICAgdmFyIG9sZEV4cGFuZGVkID0gZGF0YS5leHBhbmRlZDtcbiAgICAgICAgZXhwYW5kZWQgPSB0eXBlb2YgZXhwYW5kZWQgPT09ICd1bmRlZmluZWQnID8gIWRhdGEuZXhwYW5kZWQgOiBleHBhbmRlZDtcbiAgICAgICAgdHJlZURhdGFbaWRdLmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gICAgICAgIGlmIChvbGRFeHBhbmRlZCAhPT0gZXhwYW5kZWQpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLiRlbWl0KCdleHBhbmQtY2hhbmdlJywgcm93LCBleHBhbmRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVUYWJsZVNjcm9sbFkoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxvYWRPclRvZ2dsZTogZnVuY3Rpb24gbG9hZE9yVG9nZ2xlKHJvdykge1xuICAgICAgdGhpcy5hc3NlcnRSb3dLZXkoKTtcbiAgICAgIHZhciBfc3RhdGVzNSA9IHRoaXMuc3RhdGVzLFxuICAgICAgICAgIGxhenkgPSBfc3RhdGVzNS5sYXp5LFxuICAgICAgICAgIHRyZWVEYXRhID0gX3N0YXRlczUudHJlZURhdGEsXG4gICAgICAgICAgcm93S2V5ID0gX3N0YXRlczUucm93S2V5O1xuXG4gICAgICB2YXIgaWQgPSBnZXRSb3dJZGVudGl0eShyb3csIHJvd0tleSk7XG4gICAgICB2YXIgZGF0YSA9IHRyZWVEYXRhW2lkXTtcbiAgICAgIGlmIChsYXp5ICYmIGRhdGEgJiYgJ2xvYWRlZCcgaW4gZGF0YSAmJiAhZGF0YS5sb2FkZWQpIHtcbiAgICAgICAgdGhpcy5sb2FkRGF0YShyb3csIGlkLCBkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9nZ2xlVHJlZUV4cGFuc2lvbihyb3cpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbG9hZERhdGE6IGZ1bmN0aW9uIGxvYWREYXRhKHJvdywga2V5LCB0cmVlTm9kZSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIGxvYWQgPSB0aGlzLnRhYmxlLmxvYWQ7XG4gICAgICB2YXIgcmF3VHJlZURhdGEgPSB0aGlzLnN0YXRlcy50cmVlRGF0YTtcblxuICAgICAgaWYgKGxvYWQgJiYgIXJhd1RyZWVEYXRhW2tleV0ubG9hZGVkKSB7XG4gICAgICAgIHJhd1RyZWVEYXRhW2tleV0ubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGxvYWQocm93LCB0cmVlTm9kZSwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW0VsVGFibGVdIGRhdGEgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgX3N0YXRlczYgPSBfdGhpcy5zdGF0ZXMsXG4gICAgICAgICAgICAgIGxhenlUcmVlTm9kZU1hcCA9IF9zdGF0ZXM2LmxhenlUcmVlTm9kZU1hcCxcbiAgICAgICAgICAgICAgdHJlZURhdGEgPSBfc3RhdGVzNi50cmVlRGF0YTtcblxuICAgICAgICAgIHRyZWVEYXRhW2tleV0ubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRyZWVEYXRhW2tleV0ubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICB0cmVlRGF0YVtrZXldLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIF90aGlzLiRzZXQobGF6eVRyZWVOb2RlTWFwLCBrZXksIGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfdGhpcy50YWJsZS4kZW1pdCgnZXhwYW5kLWNoYW5nZScsIHJvdywgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy9zdG9yZS93YXRjaGVyLmpzXG5cblxuXG5cblxuXG5cbnZhciB3YXRjaGVyX3NvcnREYXRhID0gZnVuY3Rpb24gc29ydERhdGEoZGF0YSwgc3RhdGVzKSB7XG4gIHZhciBzb3J0aW5nQ29sdW1uID0gc3RhdGVzLnNvcnRpbmdDb2x1bW47XG4gIGlmICghc29ydGluZ0NvbHVtbiB8fCB0eXBlb2Ygc29ydGluZ0NvbHVtbi5zb3J0YWJsZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICByZXR1cm4gdXRpbF9vcmRlckJ5KGRhdGEsIHN0YXRlcy5zb3J0UHJvcCwgc3RhdGVzLnNvcnRPcmRlciwgc29ydGluZ0NvbHVtbi5zb3J0TWV0aG9kLCBzb3J0aW5nQ29sdW1uLnNvcnRCeSk7XG59O1xuXG52YXIgZG9GbGF0dGVuQ29sdW1ucyA9IGZ1bmN0aW9uIGRvRmxhdHRlbkNvbHVtbnMoY29sdW1ucykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgaWYgKGNvbHVtbi5jaGlsZHJlbikge1xuICAgICAgcmVzdWx0LnB1c2guYXBwbHkocmVzdWx0LCBkb0ZsYXR0ZW5Db2x1bW5zKGNvbHVtbi5jaGlsZHJlbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaChjb2x1bW4pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB3YXRjaGVyID0gKGV4dGVybmFsX3Z1ZV9kZWZhdWx0LmEuZXh0ZW5kKHtcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGVzOiB7XG4gICAgICAgIC8vIDMuMCDniYjmnKzlkI7opoHmsYLlv4Xpobvorr7nva7or6XlsZ7mgKdcbiAgICAgICAgcm93S2V5OiBudWxsLFxuXG4gICAgICAgIC8vIOa4suafk+eahOaVsOaNruadpea6kO+8jOaYr+WvuSB0YWJsZSDkuK3nmoQgZGF0YSDov4fmu6TmjpLluo/lkI7nmoTnu5PmnpxcbiAgICAgICAgZGF0YTogW10sXG5cbiAgICAgICAgLy8g5piv5ZCm5YyF5ZCr5Zu65a6a5YiXXG4gICAgICAgIGlzQ29tcGxleDogZmFsc2UsXG5cbiAgICAgICAgLy8g5YiXXG4gICAgICAgIF9jb2x1bW5zOiBbXSwgLy8g5LiN5Y+v5ZON5bqU55qEXG4gICAgICAgIG9yaWdpbkNvbHVtbnM6IFtdLFxuICAgICAgICBjb2x1bW5zOiBbXSxcbiAgICAgICAgZml4ZWRDb2x1bW5zOiBbXSxcbiAgICAgICAgcmlnaHRGaXhlZENvbHVtbnM6IFtdLFxuICAgICAgICBsZWFmQ29sdW1uczogW10sXG4gICAgICAgIGZpeGVkTGVhZkNvbHVtbnM6IFtdLFxuICAgICAgICByaWdodEZpeGVkTGVhZkNvbHVtbnM6IFtdLFxuICAgICAgICBsZWFmQ29sdW1uc0xlbmd0aDogMCxcbiAgICAgICAgZml4ZWRMZWFmQ29sdW1uc0xlbmd0aDogMCxcbiAgICAgICAgcmlnaHRGaXhlZExlYWZDb2x1bW5zTGVuZ3RoOiAwLFxuXG4gICAgICAgIC8vIOmAieaLqVxuICAgICAgICBpc0FsbFNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0aW9uOiBbXSxcbiAgICAgICAgcmVzZXJ2ZVNlbGVjdGlvbjogZmFsc2UsXG4gICAgICAgIHNlbGVjdE9uSW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgICAgIHNlbGVjdGFibGU6IG51bGwsXG5cbiAgICAgICAgLy8g6L+H5rukXG4gICAgICAgIGZpbHRlcnM6IHt9LCAvLyDkuI3lj6/lk43lupTnmoRcbiAgICAgICAgZmlsdGVyZWREYXRhOiBudWxsLFxuXG4gICAgICAgIC8vIOaOkuW6j1xuICAgICAgICBzb3J0aW5nQ29sdW1uOiBudWxsLFxuICAgICAgICBzb3J0UHJvcDogbnVsbCxcbiAgICAgICAgc29ydE9yZGVyOiBudWxsLFxuXG4gICAgICAgIGhvdmVyUm93OiBudWxsXG4gICAgICB9XG4gICAgfTtcbiAgfSxcblxuXG4gIG1peGluczogW2V4cGFuZCwgc3RvcmVfY3VycmVudCwgdHJlZV0sXG5cbiAgbWV0aG9kczoge1xuICAgIC8vIOajgOafpSByb3dLZXkg5piv5ZCm5a2Y5ZyoXG4gICAgYXNzZXJ0Um93S2V5OiBmdW5jdGlvbiBhc3NlcnRSb3dLZXkoKSB7XG4gICAgICB2YXIgcm93S2V5ID0gdGhpcy5zdGF0ZXMucm93S2V5O1xuICAgICAgaWYgKCFyb3dLZXkpIHRocm93IG5ldyBFcnJvcignW0VsVGFibGVdIHByb3Agcm93LWtleSBpcyByZXF1aXJlZCcpO1xuICAgIH0sXG5cblxuICAgIC8vIOabtOaWsOWIl1xuICAgIHVwZGF0ZUNvbHVtbnM6IGZ1bmN0aW9uIHVwZGF0ZUNvbHVtbnMoKSB7XG4gICAgICB2YXIgc3RhdGVzID0gdGhpcy5zdGF0ZXM7XG4gICAgICB2YXIgX2NvbHVtbnMgPSBzdGF0ZXMuX2NvbHVtbnMgfHwgW107XG4gICAgICBzdGF0ZXMuZml4ZWRDb2x1bW5zID0gX2NvbHVtbnMuZmlsdGVyKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5maXhlZCA9PT0gdHJ1ZSB8fCBjb2x1bW4uZml4ZWQgPT09ICdsZWZ0JztcbiAgICAgIH0pO1xuICAgICAgc3RhdGVzLnJpZ2h0Rml4ZWRDb2x1bW5zID0gX2NvbHVtbnMuZmlsdGVyKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5maXhlZCA9PT0gJ3JpZ2h0JztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc3RhdGVzLmZpeGVkQ29sdW1ucy5sZW5ndGggPiAwICYmIF9jb2x1bW5zWzBdICYmIF9jb2x1bW5zWzBdLnR5cGUgPT09ICdzZWxlY3Rpb24nICYmICFfY29sdW1uc1swXS5maXhlZCkge1xuICAgICAgICBfY29sdW1uc1swXS5maXhlZCA9IHRydWU7XG4gICAgICAgIHN0YXRlcy5maXhlZENvbHVtbnMudW5zaGlmdChfY29sdW1uc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBub3RGaXhlZENvbHVtbnMgPSBfY29sdW1ucy5maWx0ZXIoZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgICByZXR1cm4gIWNvbHVtbi5maXhlZDtcbiAgICAgIH0pO1xuICAgICAgc3RhdGVzLm9yaWdpbkNvbHVtbnMgPSBbXS5jb25jYXQoc3RhdGVzLmZpeGVkQ29sdW1ucykuY29uY2F0KG5vdEZpeGVkQ29sdW1ucykuY29uY2F0KHN0YXRlcy5yaWdodEZpeGVkQ29sdW1ucyk7XG5cbiAgICAgIHZhciBsZWFmQ29sdW1ucyA9IGRvRmxhdHRlbkNvbHVtbnMobm90Rml4ZWRDb2x1bW5zKTtcbiAgICAgIHZhciBmaXhlZExlYWZDb2x1bW5zID0gZG9GbGF0dGVuQ29sdW1ucyhzdGF0ZXMuZml4ZWRDb2x1bW5zKTtcbiAgICAgIHZhciByaWdodEZpeGVkTGVhZkNvbHVtbnMgPSBkb0ZsYXR0ZW5Db2x1bW5zKHN0YXRlcy5yaWdodEZpeGVkQ29sdW1ucyk7XG5cbiAgICAgIHN0YXRlcy5sZWFmQ29sdW1uc0xlbmd0aCA9IGxlYWZDb2x1bW5zLmxlbmd0aDtcbiAgICAgIHN0YXRlcy5maXhlZExlYWZDb2x1bW5zTGVuZ3RoID0gZml4ZWRMZWFmQ29sdW1ucy5sZW5ndGg7XG4gICAgICBzdGF0ZXMucmlnaHRGaXhlZExlYWZDb2x1bW5zTGVuZ3RoID0gcmlnaHRGaXhlZExlYWZDb2x1bW5zLmxlbmd0aDtcblxuICAgICAgc3RhdGVzLmNvbHVtbnMgPSBbXS5jb25jYXQoZml4ZWRMZWFmQ29sdW1ucykuY29uY2F0KGxlYWZDb2x1bW5zKS5jb25jYXQocmlnaHRGaXhlZExlYWZDb2x1bW5zKTtcbiAgICAgIHN0YXRlcy5pc0NvbXBsZXggPSBzdGF0ZXMuZml4ZWRDb2x1bW5zLmxlbmd0aCA+IDAgfHwgc3RhdGVzLnJpZ2h0Rml4ZWRDb2x1bW5zLmxlbmd0aCA+IDA7XG4gICAgfSxcblxuXG4gICAgLy8g5pu05pawIERPTVxuICAgIHNjaGVkdWxlTGF5b3V0OiBmdW5jdGlvbiBzY2hlZHVsZUxheW91dChuZWVkVXBkYXRlQ29sdW1ucykge1xuICAgICAgaWYgKG5lZWRVcGRhdGVDb2x1bW5zKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1ucygpO1xuICAgICAgfVxuICAgICAgdGhpcy50YWJsZS5kZWJvdW5jZWRVcGRhdGVMYXlvdXQoKTtcbiAgICB9LFxuXG5cbiAgICAvLyDpgInmi6lcbiAgICBpc1NlbGVjdGVkOiBmdW5jdGlvbiBpc1NlbGVjdGVkKHJvdykge1xuICAgICAgdmFyIF9zdGF0ZXMkc2VsZWN0aW9uID0gdGhpcy5zdGF0ZXMuc2VsZWN0aW9uLFxuICAgICAgICAgIHNlbGVjdGlvbiA9IF9zdGF0ZXMkc2VsZWN0aW9uID09PSB1bmRlZmluZWQgPyBbXSA6IF9zdGF0ZXMkc2VsZWN0aW9uO1xuXG4gICAgICByZXR1cm4gc2VsZWN0aW9uLmluZGV4T2Yocm93KSA+IC0xO1xuICAgIH0sXG4gICAgY2xlYXJTZWxlY3Rpb246IGZ1bmN0aW9uIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgICAgdmFyIHN0YXRlcyA9IHRoaXMuc3RhdGVzO1xuICAgICAgc3RhdGVzLmlzQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHZhciBvbGRTZWxlY3Rpb24gPSBzdGF0ZXMuc2VsZWN0aW9uO1xuICAgICAgaWYgKG9sZFNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgc3RhdGVzLnNlbGVjdGlvbiA9IFtdO1xuICAgICAgICB0aGlzLnRhYmxlLiRlbWl0KCdzZWxlY3Rpb24tY2hhbmdlJywgW10pO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xlYW5TZWxlY3Rpb246IGZ1bmN0aW9uIGNsZWFuU2VsZWN0aW9uKCkge1xuICAgICAgdmFyIHN0YXRlcyA9IHRoaXMuc3RhdGVzO1xuICAgICAgdmFyIGRhdGEgPSBzdGF0ZXMuZGF0YSxcbiAgICAgICAgICByb3dLZXkgPSBzdGF0ZXMucm93S2V5LFxuICAgICAgICAgIHNlbGVjdGlvbiA9IHN0YXRlcy5zZWxlY3Rpb247XG5cbiAgICAgIHZhciBkZWxldGVkID0gdm9pZCAwO1xuICAgICAgaWYgKHJvd0tleSkge1xuICAgICAgICBkZWxldGVkID0gW107XG4gICAgICAgIHZhciBzZWxlY3RlZE1hcCA9IGdldEtleXNNYXAoc2VsZWN0aW9uLCByb3dLZXkpO1xuICAgICAgICB2YXIgZGF0YU1hcCA9IGdldEtleXNNYXAoZGF0YSwgcm93S2V5KTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHNlbGVjdGVkTWFwKSB7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkTWFwLmhhc093blByb3BlcnR5KGtleSkgJiYgIWRhdGFNYXBba2V5XSkge1xuICAgICAgICAgICAgZGVsZXRlZC5wdXNoKHNlbGVjdGVkTWFwW2tleV0ucm93KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZWQgPSBzZWxlY3Rpb24uZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEuaW5kZXhPZihpdGVtKSA9PT0gLTE7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGRlbGV0ZWQubGVuZ3RoKSB7XG4gICAgICAgIHZhciBuZXdTZWxlY3Rpb24gPSBzZWxlY3Rpb24uZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIGRlbGV0ZWQuaW5kZXhPZihpdGVtKSA9PT0gLTE7XG4gICAgICAgIH0pO1xuICAgICAgICBzdGF0ZXMuc2VsZWN0aW9uID0gbmV3U2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnRhYmxlLiRlbWl0KCdzZWxlY3Rpb24tY2hhbmdlJywgbmV3U2VsZWN0aW9uLnNsaWNlKCkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdG9nZ2xlUm93U2VsZWN0aW9uOiBmdW5jdGlvbiB0b2dnbGVSb3dTZWxlY3Rpb24ocm93LCBzZWxlY3RlZCkge1xuICAgICAgdmFyIGVtaXRDaGFuZ2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7XG5cbiAgICAgIHZhciBjaGFuZ2VkID0gdG9nZ2xlUm93U3RhdHVzKHRoaXMuc3RhdGVzLnNlbGVjdGlvbiwgcm93LCBzZWxlY3RlZCk7XG4gICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICB2YXIgbmV3U2VsZWN0aW9uID0gKHRoaXMuc3RhdGVzLnNlbGVjdGlvbiB8fCBbXSkuc2xpY2UoKTtcbiAgICAgICAgLy8g6LCD55SoIEFQSSDkv67mlLnpgInkuK3lgLzvvIzkuI3op6blj5Egc2VsZWN0IOS6i+S7tlxuICAgICAgICBpZiAoZW1pdENoYW5nZSkge1xuICAgICAgICAgIHRoaXMudGFibGUuJGVtaXQoJ3NlbGVjdCcsIG5ld1NlbGVjdGlvbiwgcm93KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYmxlLiRlbWl0KCdzZWxlY3Rpb24tY2hhbmdlJywgbmV3U2VsZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIF90b2dnbGVBbGxTZWxlY3Rpb246IGZ1bmN0aW9uIF90b2dnbGVBbGxTZWxlY3Rpb24oKSB7XG4gICAgICB2YXIgc3RhdGVzID0gdGhpcy5zdGF0ZXM7XG4gICAgICB2YXIgX3N0YXRlcyRkYXRhID0gc3RhdGVzLmRhdGEsXG4gICAgICAgICAgZGF0YSA9IF9zdGF0ZXMkZGF0YSA9PT0gdW5kZWZpbmVkID8gW10gOiBfc3RhdGVzJGRhdGEsXG4gICAgICAgICAgc2VsZWN0aW9uID0gc3RhdGVzLnNlbGVjdGlvbjtcbiAgICAgIC8vIHdoZW4gb25seSBzb21lIHJvd3MgYXJlIHNlbGVjdGVkIChidXQgbm90IGFsbCksIHNlbGVjdCBvciBkZXNlbGVjdCBhbGwgb2YgdGhlbVxuICAgICAgLy8gZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBzZWxlY3RPbkluZGV0ZXJtaW5hdGVcblxuICAgICAgdmFyIHZhbHVlID0gc3RhdGVzLnNlbGVjdE9uSW5kZXRlcm1pbmF0ZSA/ICFzdGF0ZXMuaXNBbGxTZWxlY3RlZCA6ICEoc3RhdGVzLmlzQWxsU2VsZWN0ZWQgfHwgc2VsZWN0aW9uLmxlbmd0aCk7XG4gICAgICBzdGF0ZXMuaXNBbGxTZWxlY3RlZCA9IHZhbHVlO1xuXG4gICAgICB2YXIgc2VsZWN0aW9uQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGluZGV4KSB7XG4gICAgICAgIGlmIChzdGF0ZXMuc2VsZWN0YWJsZSkge1xuICAgICAgICAgIGlmIChzdGF0ZXMuc2VsZWN0YWJsZS5jYWxsKG51bGwsIHJvdywgaW5kZXgpICYmIHRvZ2dsZVJvd1N0YXR1cyhzZWxlY3Rpb24sIHJvdywgdmFsdWUpKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRvZ2dsZVJvd1N0YXR1cyhzZWxlY3Rpb24sIHJvdywgdmFsdWUpKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc2VsZWN0aW9uQ2hhbmdlZCkge1xuICAgICAgICB0aGlzLnRhYmxlLiRlbWl0KCdzZWxlY3Rpb24tY2hhbmdlJywgc2VsZWN0aW9uID8gc2VsZWN0aW9uLnNsaWNlKCkgOiBbXSk7XG4gICAgICB9XG4gICAgICB0aGlzLnRhYmxlLiRlbWl0KCdzZWxlY3QtYWxsJywgc2VsZWN0aW9uKTtcbiAgICB9LFxuICAgIHVwZGF0ZVNlbGVjdGlvbkJ5Um93S2V5OiBmdW5jdGlvbiB1cGRhdGVTZWxlY3Rpb25CeVJvd0tleSgpIHtcbiAgICAgIHZhciBzdGF0ZXMgPSB0aGlzLnN0YXRlcztcbiAgICAgIHZhciBzZWxlY3Rpb24gPSBzdGF0ZXMuc2VsZWN0aW9uLFxuICAgICAgICAgIHJvd0tleSA9IHN0YXRlcy5yb3dLZXksXG4gICAgICAgICAgZGF0YSA9IHN0YXRlcy5kYXRhO1xuXG4gICAgICB2YXIgc2VsZWN0ZWRNYXAgPSBnZXRLZXlzTWFwKHNlbGVjdGlvbiwgcm93S2V5KTtcbiAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIHZhciByb3dJZCA9IGdldFJvd0lkZW50aXR5KHJvdywgcm93S2V5KTtcbiAgICAgICAgdmFyIHJvd0luZm8gPSBzZWxlY3RlZE1hcFtyb3dJZF07XG4gICAgICAgIGlmIChyb3dJbmZvKSB7XG4gICAgICAgICAgc2VsZWN0aW9uW3Jvd0luZm8uaW5kZXhdID0gcm93O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHVwZGF0ZUFsbFNlbGVjdGVkOiBmdW5jdGlvbiB1cGRhdGVBbGxTZWxlY3RlZCgpIHtcbiAgICAgIHZhciBzdGF0ZXMgPSB0aGlzLnN0YXRlcztcbiAgICAgIHZhciBzZWxlY3Rpb24gPSBzdGF0ZXMuc2VsZWN0aW9uLFxuICAgICAgICAgIHJvd0tleSA9IHN0YXRlcy5yb3dLZXksXG4gICAgICAgICAgc2VsZWN0YWJsZSA9IHN0YXRlcy5zZWxlY3RhYmxlO1xuICAgICAgLy8gZGF0YSDkuLogbnVsbCDml7bvvIzop6PmnoTml7bnmoTpu5jorqTlgLzkvJrooqvlv73nlaVcblxuICAgICAgdmFyIGRhdGEgPSBzdGF0ZXMuZGF0YSB8fCBbXTtcbiAgICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzdGF0ZXMuaXNBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBzZWxlY3RlZE1hcCA9IHZvaWQgMDtcbiAgICAgIGlmIChyb3dLZXkpIHtcbiAgICAgICAgc2VsZWN0ZWRNYXAgPSBnZXRLZXlzTWFwKHNlbGVjdGlvbiwgcm93S2V5KTtcbiAgICAgIH1cbiAgICAgIHZhciBpc1NlbGVjdGVkID0gZnVuY3Rpb24gaXNTZWxlY3RlZChyb3cpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkTWFwKSB7XG4gICAgICAgICAgcmV0dXJuICEhc2VsZWN0ZWRNYXBbZ2V0Um93SWRlbnRpdHkocm93LCByb3dLZXkpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uLmluZGV4T2Yocm93KSAhPT0gLTE7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB2YXIgaXNBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgICB2YXIgc2VsZWN0ZWRDb3VudCA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaiA9IGRhdGEubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgIHZhciBpdGVtID0gZGF0YVtpXTtcbiAgICAgICAgdmFyIGlzUm93U2VsZWN0YWJsZSA9IHNlbGVjdGFibGUgJiYgc2VsZWN0YWJsZS5jYWxsKG51bGwsIGl0ZW0sIGkpO1xuICAgICAgICBpZiAoIWlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICBpZiAoIXNlbGVjdGFibGUgfHwgaXNSb3dTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICBpc0FsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZWN0ZWRDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3RlZENvdW50ID09PSAwKSBpc0FsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICBzdGF0ZXMuaXNBbGxTZWxlY3RlZCA9IGlzQWxsU2VsZWN0ZWQ7XG4gICAgfSxcblxuXG4gICAgLy8g6L+H5ruk5LiO5o6S5bqPXG4gICAgdXBkYXRlRmlsdGVyczogZnVuY3Rpb24gdXBkYXRlRmlsdGVycyhjb2x1bW5zLCB2YWx1ZXMpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkge1xuICAgICAgICBjb2x1bW5zID0gW2NvbHVtbnNdO1xuICAgICAgfVxuICAgICAgdmFyIHN0YXRlcyA9IHRoaXMuc3RhdGVzO1xuICAgICAgdmFyIGZpbHRlcnMgPSB7fTtcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sKSB7XG4gICAgICAgIHN0YXRlcy5maWx0ZXJzW2NvbC5pZF0gPSB2YWx1ZXM7XG4gICAgICAgIGZpbHRlcnNbY29sLmNvbHVtbktleSB8fCBjb2wuaWRdID0gdmFsdWVzO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgIH0sXG4gICAgdXBkYXRlU29ydDogZnVuY3Rpb24gdXBkYXRlU29ydChjb2x1bW4sIHByb3AsIG9yZGVyKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZXMuc29ydGluZ0NvbHVtbiAmJiB0aGlzLnN0YXRlcy5zb3J0aW5nQ29sdW1uICE9PSBjb2x1bW4pIHtcbiAgICAgICAgdGhpcy5zdGF0ZXMuc29ydGluZ0NvbHVtbi5vcmRlciA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLnN0YXRlcy5zb3J0aW5nQ29sdW1uID0gY29sdW1uO1xuICAgICAgdGhpcy5zdGF0ZXMuc29ydFByb3AgPSBwcm9wO1xuICAgICAgdGhpcy5zdGF0ZXMuc29ydE9yZGVyID0gb3JkZXI7XG4gICAgfSxcbiAgICBleGVjRmlsdGVyOiBmdW5jdGlvbiBleGVjRmlsdGVyKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIHN0YXRlcyA9IHRoaXMuc3RhdGVzO1xuICAgICAgdmFyIF9kYXRhID0gc3RhdGVzLl9kYXRhLFxuICAgICAgICAgIGZpbHRlcnMgPSBzdGF0ZXMuZmlsdGVycztcblxuICAgICAgdmFyIGRhdGEgPSBfZGF0YTtcblxuICAgICAgT2JqZWN0LmtleXMoZmlsdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uSWQpIHtcbiAgICAgICAgdmFyIHZhbHVlcyA9IHN0YXRlcy5maWx0ZXJzW2NvbHVtbklkXTtcbiAgICAgICAgaWYgKCF2YWx1ZXMgfHwgdmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgICB2YXIgY29sdW1uID0gZ2V0Q29sdW1uQnlJZChfdGhpcy5zdGF0ZXMsIGNvbHVtbklkKTtcbiAgICAgICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZmlsdGVyTWV0aG9kKSB7XG4gICAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuc29tZShmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi5maWx0ZXJNZXRob2QuY2FsbChudWxsLCB2YWx1ZSwgcm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdGF0ZXMuZmlsdGVyZWREYXRhID0gZGF0YTtcbiAgICB9LFxuICAgIGV4ZWNTb3J0OiBmdW5jdGlvbiBleGVjU29ydCgpIHtcbiAgICAgIHZhciBzdGF0ZXMgPSB0aGlzLnN0YXRlcztcbiAgICAgIHN0YXRlcy5kYXRhID0gd2F0Y2hlcl9zb3J0RGF0YShzdGF0ZXMuZmlsdGVyZWREYXRhLCBzdGF0ZXMpO1xuICAgIH0sXG5cblxuICAgIC8vIOagueaNriBmaWx0ZXJzIOS4jiBzb3J0IOWOu+i/h+a7pCBkYXRhXG4gICAgZXhlY1F1ZXJ5OiBmdW5jdGlvbiBleGVjUXVlcnkoaWdub3JlKSB7XG4gICAgICBpZiAoIShpZ25vcmUgJiYgaWdub3JlLmZpbHRlcikpIHtcbiAgICAgICAgdGhpcy5leGVjRmlsdGVyKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmV4ZWNTb3J0KCk7XG4gICAgfSxcbiAgICBjbGVhckZpbHRlcjogZnVuY3Rpb24gY2xlYXJGaWx0ZXIoY29sdW1uS2V5cykge1xuICAgICAgdmFyIHN0YXRlcyA9IHRoaXMuc3RhdGVzO1xuICAgICAgdmFyIF90YWJsZSQkcmVmcyA9IHRoaXMudGFibGUuJHJlZnMsXG4gICAgICAgICAgdGFibGVIZWFkZXIgPSBfdGFibGUkJHJlZnMudGFibGVIZWFkZXIsXG4gICAgICAgICAgZml4ZWRUYWJsZUhlYWRlciA9IF90YWJsZSQkcmVmcy5maXhlZFRhYmxlSGVhZGVyLFxuICAgICAgICAgIHJpZ2h0Rml4ZWRUYWJsZUhlYWRlciA9IF90YWJsZSQkcmVmcy5yaWdodEZpeGVkVGFibGVIZWFkZXI7XG5cblxuICAgICAgdmFyIHBhbmVscyA9IHt9O1xuICAgICAgaWYgKHRhYmxlSGVhZGVyKSBwYW5lbHMgPSBtZXJnZV9kZWZhdWx0KCkocGFuZWxzLCB0YWJsZUhlYWRlci5maWx0ZXJQYW5lbHMpO1xuICAgICAgaWYgKGZpeGVkVGFibGVIZWFkZXIpIHBhbmVscyA9IG1lcmdlX2RlZmF1bHQoKShwYW5lbHMsIGZpeGVkVGFibGVIZWFkZXIuZmlsdGVyUGFuZWxzKTtcbiAgICAgIGlmIChyaWdodEZpeGVkVGFibGVIZWFkZXIpIHBhbmVscyA9IG1lcmdlX2RlZmF1bHQoKShwYW5lbHMsIHJpZ2h0Rml4ZWRUYWJsZUhlYWRlci5maWx0ZXJQYW5lbHMpO1xuXG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHBhbmVscyk7XG4gICAgICBpZiAoIWtleXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgIGlmICh0eXBlb2YgY29sdW1uS2V5cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sdW1uS2V5cyA9IFtjb2x1bW5LZXlzXTtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29sdW1uS2V5cykpIHtcbiAgICAgICAgdmFyIGNvbHVtbnMgPSBjb2x1bW5LZXlzLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIGdldENvbHVtbkJ5S2V5KHN0YXRlcywga2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgdmFyIGNvbHVtbiA9IGNvbHVtbnMuZmluZChmdW5jdGlvbiAoY29sKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sLmlkID09PSBrZXk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgLy8gVE9ETzog5LyY5YyW6L+Z6YeM55qE5Luj56CBXG4gICAgICAgICAgICBwYW5lbHNba2V5XS5maWx0ZXJlZFZhbHVlID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb21taXQoJ2ZpbHRlckNoYW5nZScsIHtcbiAgICAgICAgICBjb2x1bW46IGNvbHVtbnMsXG4gICAgICAgICAgdmFsdWVzOiBbXSxcbiAgICAgICAgICBzaWxlbnQ6IHRydWUsXG4gICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIC8vIFRPRE86IOS8mOWMlui/memHjOeahOS7o+eggVxuICAgICAgICAgIHBhbmVsc1trZXldLmZpbHRlcmVkVmFsdWUgPSBbXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RhdGVzLmZpbHRlcnMgPSB7fTtcbiAgICAgICAgdGhpcy5jb21taXQoJ2ZpbHRlckNoYW5nZScsIHtcbiAgICAgICAgICBjb2x1bW46IHt9LFxuICAgICAgICAgIHZhbHVlczogW10sXG4gICAgICAgICAgc2lsZW50OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xlYXJTb3J0OiBmdW5jdGlvbiBjbGVhclNvcnQoKSB7XG4gICAgICB2YXIgc3RhdGVzID0gdGhpcy5zdGF0ZXM7XG4gICAgICBpZiAoIXN0YXRlcy5zb3J0aW5nQ29sdW1uKSByZXR1cm47XG5cbiAgICAgIHRoaXMudXBkYXRlU29ydChudWxsLCBudWxsLCBudWxsKTtcbiAgICAgIHRoaXMuY29tbWl0KCdjaGFuZ2VTb3J0Q29uZGl0aW9uJywge1xuICAgICAgICBzaWxlbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH0sXG5cblxuICAgIC8vIOmAgumFjeWxgu+8jGV4cGFuZC1yb3cta2V5cyDlnKggRXhwYW5kIOS4jiBUcmVlVGFibGUg5Lit6YO95pyJ5L2/55SoXG4gICAgc2V0RXhwYW5kUm93S2V5c0FkYXB0ZXI6IGZ1bmN0aW9uIHNldEV4cGFuZFJvd0tleXNBZGFwdGVyKHZhbCkge1xuICAgICAgLy8g6L+Z6YeM5Lya6Kem5Y+R6aKd5aSW55qE6K6h566X77yM5L2G5Li65LqG5YW85a655oCn77yM5pqC5pe26L+Z5LmI5YGaXG4gICAgICB0aGlzLnNldEV4cGFuZFJvd0tleXModmFsKTtcbiAgICAgIHRoaXMudXBkYXRlVHJlZUV4cGFuZEtleXModmFsKTtcbiAgICB9LFxuXG5cbiAgICAvLyDlsZXlvIDooYzkuI4gVHJlZVRhYmxlIOmDveimgeS9v+eUqFxuICAgIHRvZ2dsZVJvd0V4cGFuc2lvbkFkYXB0ZXI6IGZ1bmN0aW9uIHRvZ2dsZVJvd0V4cGFuc2lvbkFkYXB0ZXIocm93LCBleHBhbmRlZCkge1xuICAgICAgdmFyIGhhc0V4cGFuZENvbHVtbiA9IHRoaXMuc3RhdGVzLmNvbHVtbnMuc29tZShmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgdHlwZSA9IF9yZWYudHlwZTtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09ICdleHBhbmQnO1xuICAgICAgfSk7XG4gICAgICBpZiAoaGFzRXhwYW5kQ29sdW1uKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlUm93RXhwYW5zaW9uKHJvdywgZXhwYW5kZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2dnbGVUcmVlRXhwYW5zaW9uKHJvdywgZXhwYW5kZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSkpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJsZS9zcmMvc3RvcmUvaW5kZXguanNcblxuXG5cblxud2F0Y2hlci5wcm90b3R5cGUubXV0YXRpb25zID0ge1xuICBzZXREYXRhOiBmdW5jdGlvbiBzZXREYXRhKHN0YXRlcywgZGF0YSkge1xuICAgIHZhciBkYXRhSW5zdGFuY2VDaGFuZ2VkID0gc3RhdGVzLl9kYXRhICE9PSBkYXRhO1xuICAgIHN0YXRlcy5fZGF0YSA9IGRhdGE7XG5cbiAgICB0aGlzLmV4ZWNRdWVyeSgpO1xuICAgIC8vIOaVsOaNruWPmOWMlu+8jOabtOaWsOmDqOWIhuaVsOaNruOAglxuICAgIC8vIOayoeacieS9v+eUqCBjb21wdXRlZO+8jOiAjOaYr+aJi+WKqOabtOaWsOmDqOWIhuaVsOaNriBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlL2lzc3Vlcy82NjYwI2lzc3VlY29tbWVudC0zMzE0MTcxNDBcbiAgICB0aGlzLnVwZGF0ZUN1cnJlbnRSb3dEYXRhKCk7XG4gICAgdGhpcy51cGRhdGVFeHBhbmRSb3dzKCk7XG4gICAgaWYgKHN0YXRlcy5yZXNlcnZlU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLmFzc2VydFJvd0tleSgpO1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb25CeVJvd0tleSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGF0YUluc3RhbmNlQ2hhbmdlZCkge1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsZWFuU2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQWxsU2VsZWN0ZWQoKTtcblxuICAgIHRoaXMudXBkYXRlVGFibGVTY3JvbGxZKCk7XG4gIH0sXG4gIGluc2VydENvbHVtbjogZnVuY3Rpb24gaW5zZXJ0Q29sdW1uKHN0YXRlcywgY29sdW1uLCBpbmRleCwgcGFyZW50KSB7XG4gICAgdmFyIGFycmF5ID0gc3RhdGVzLl9jb2x1bW5zO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGFycmF5ID0gcGFyZW50LmNoaWxkcmVuO1xuICAgICAgaWYgKCFhcnJheSkgYXJyYXkgPSBwYXJlbnQuY2hpbGRyZW4gPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluZGV4ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAwLCBjb2x1bW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnJheS5wdXNoKGNvbHVtbik7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnc2VsZWN0aW9uJykge1xuICAgICAgc3RhdGVzLnNlbGVjdGFibGUgPSBjb2x1bW4uc2VsZWN0YWJsZTtcbiAgICAgIHN0YXRlcy5yZXNlcnZlU2VsZWN0aW9uID0gY29sdW1uLnJlc2VydmVTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGUuJHJlYWR5KSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbnMoKTsgLy8gaGFjayBmb3IgZHluYW1pY3MgaW5zZXJ0IGNvbHVtblxuICAgICAgdGhpcy5zY2hlZHVsZUxheW91dCgpO1xuICAgIH1cbiAgfSxcbiAgcmVtb3ZlQ29sdW1uOiBmdW5jdGlvbiByZW1vdmVDb2x1bW4oc3RhdGVzLCBjb2x1bW4sIHBhcmVudCkge1xuICAgIHZhciBhcnJheSA9IHN0YXRlcy5fY29sdW1ucztcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBhcnJheSA9IHBhcmVudC5jaGlsZHJlbjtcbiAgICAgIGlmICghYXJyYXkpIGFycmF5ID0gcGFyZW50LmNoaWxkcmVuID0gW107XG4gICAgfVxuICAgIGlmIChhcnJheSkge1xuICAgICAgYXJyYXkuc3BsaWNlKGFycmF5LmluZGV4T2YoY29sdW1uKSwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGUuJHJlYWR5KSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbnMoKTsgLy8gaGFjayBmb3IgZHluYW1pY3MgcmVtb3ZlIGNvbHVtblxuICAgICAgdGhpcy5zY2hlZHVsZUxheW91dCgpO1xuICAgIH1cbiAgfSxcbiAgc29ydDogZnVuY3Rpb24gc29ydChzdGF0ZXMsIG9wdGlvbnMpIHtcbiAgICB2YXIgcHJvcCA9IG9wdGlvbnMucHJvcCxcbiAgICAgICAgb3JkZXIgPSBvcHRpb25zLm9yZGVyLFxuICAgICAgICBpbml0ID0gb3B0aW9ucy5pbml0O1xuXG4gICAgaWYgKHByb3ApIHtcbiAgICAgIHZhciBjb2x1bW4gPSBPYmplY3QodXRpbF9bXCJhcnJheUZpbmRcIl0pKHN0YXRlcy5jb2x1bW5zLCBmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4ucHJvcGVydHkgPT09IHByb3A7XG4gICAgICB9KTtcbiAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAgICAgY29sdW1uLm9yZGVyID0gb3JkZXI7XG4gICAgICAgIHRoaXMudXBkYXRlU29ydChjb2x1bW4sIHByb3AsIG9yZGVyKTtcbiAgICAgICAgdGhpcy5jb21taXQoJ2NoYW5nZVNvcnRDb25kaXRpb24nLCB7IGluaXQ6IGluaXQgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjaGFuZ2VTb3J0Q29uZGl0aW9uOiBmdW5jdGlvbiBjaGFuZ2VTb3J0Q29uZGl0aW9uKHN0YXRlcywgb3B0aW9ucykge1xuICAgIC8vIOS/ruWkjSBwciBodHRwczovL2dpdGh1Yi5jb20vRWxlbWVGRS9lbGVtZW50L3B1bGwvMTUwMTIg5a+86Ie055qEIGJ1Z1xuICAgIHZhciBjb2x1bW4gPSBzdGF0ZXMuc29ydGluZ0NvbHVtbixcbiAgICAgICAgcHJvcCA9IHN0YXRlcy5zb3J0UHJvcCxcbiAgICAgICAgb3JkZXIgPSBzdGF0ZXMuc29ydE9yZGVyO1xuXG4gICAgaWYgKG9yZGVyID09PSBudWxsKSB7XG4gICAgICBzdGF0ZXMuc29ydGluZ0NvbHVtbiA9IG51bGw7XG4gICAgICBzdGF0ZXMuc29ydFByb3AgPSBudWxsO1xuICAgIH1cbiAgICB2YXIgaW5nb3JlID0geyBmaWx0ZXI6IHRydWUgfTtcbiAgICB0aGlzLmV4ZWNRdWVyeShpbmdvcmUpO1xuXG4gICAgaWYgKCFvcHRpb25zIHx8ICEob3B0aW9ucy5zaWxlbnQgfHwgb3B0aW9ucy5pbml0KSkge1xuICAgICAgdGhpcy50YWJsZS4kZW1pdCgnc29ydC1jaGFuZ2UnLCB7XG4gICAgICAgIGNvbHVtbjogY29sdW1uLFxuICAgICAgICBwcm9wOiBwcm9wLFxuICAgICAgICBvcmRlcjogb3JkZXJcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVGFibGVTY3JvbGxZKCk7XG4gIH0sXG4gIGZpbHRlckNoYW5nZTogZnVuY3Rpb24gZmlsdGVyQ2hhbmdlKHN0YXRlcywgb3B0aW9ucykge1xuICAgIHZhciBjb2x1bW4gPSBvcHRpb25zLmNvbHVtbixcbiAgICAgICAgdmFsdWVzID0gb3B0aW9ucy52YWx1ZXMsXG4gICAgICAgIHNpbGVudCA9IG9wdGlvbnMuc2lsZW50O1xuXG4gICAgdmFyIG5ld0ZpbHRlcnMgPSB0aGlzLnVwZGF0ZUZpbHRlcnMoY29sdW1uLCB2YWx1ZXMpO1xuXG4gICAgdGhpcy5leGVjUXVlcnkoKTtcblxuICAgIGlmICghc2lsZW50KSB7XG4gICAgICB0aGlzLnRhYmxlLiRlbWl0KCdmaWx0ZXItY2hhbmdlJywgbmV3RmlsdGVycyk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVUYWJsZVNjcm9sbFkoKTtcbiAgfSxcbiAgdG9nZ2xlQWxsU2VsZWN0aW9uOiBmdW5jdGlvbiB0b2dnbGVBbGxTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy50b2dnbGVBbGxTZWxlY3Rpb24oKTtcbiAgfSxcbiAgcm93U2VsZWN0ZWRDaGFuZ2VkOiBmdW5jdGlvbiByb3dTZWxlY3RlZENoYW5nZWQoc3RhdGVzLCByb3cpIHtcbiAgICB0aGlzLnRvZ2dsZVJvd1NlbGVjdGlvbihyb3cpO1xuICAgIHRoaXMudXBkYXRlQWxsU2VsZWN0ZWQoKTtcbiAgfSxcbiAgc2V0SG92ZXJSb3c6IGZ1bmN0aW9uIHNldEhvdmVyUm93KHN0YXRlcywgcm93KSB7XG4gICAgc3RhdGVzLmhvdmVyUm93ID0gcm93O1xuICB9LFxuICBzZXRDdXJyZW50Um93OiBmdW5jdGlvbiBzZXRDdXJyZW50Um93KHN0YXRlcywgcm93KSB7XG4gICAgdGhpcy51cGRhdGVDdXJyZW50Um93KHJvdyk7XG4gIH1cbn07XG5cbndhdGNoZXIucHJvdG90eXBlLmNvbW1pdCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciBtdXRhdGlvbnMgPSB0aGlzLm11dGF0aW9ucztcbiAgaWYgKG11dGF0aW9uc1tuYW1lXSkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgbXV0YXRpb25zW25hbWVdLmFwcGx5KHRoaXMsIFt0aGlzLnN0YXRlc10uY29uY2F0KGFyZ3MpKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbiBub3QgZm91bmQ6ICcgKyBuYW1lKTtcbiAgfVxufTtcblxud2F0Y2hlci5wcm90b3R5cGUudXBkYXRlVGFibGVTY3JvbGxZID0gZnVuY3Rpb24gKCkge1xuICBleHRlcm5hbF92dWVfZGVmYXVsdC5hLm5leHRUaWNrKHRoaXMudGFibGUudXBkYXRlU2Nyb2xsWSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfc3RvcmUgPSAod2F0Y2hlcik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy9zdG9yZS9oZWxwZXIuanNcblxuXG5cbmZ1bmN0aW9uIGNyZWF0ZVN0b3JlKHRhYmxlKSB7XG4gIHZhciBpbml0aWFsU3RhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gIGlmICghdGFibGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhYmxlIGlzIHJlcXVpcmVkLicpO1xuICB9XG5cbiAgdmFyIHN0b3JlID0gbmV3IHNyY19zdG9yZSgpO1xuICBzdG9yZS50YWJsZSA9IHRhYmxlO1xuICAvLyBmaXggaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9pc3N1ZXMvMTQwNzVcbiAgLy8gcmVsYXRlZCBwciBodHRwczovL2dpdGh1Yi5jb20vRWxlbWVGRS9lbGVtZW50L3B1bGwvMTQxNDZcbiAgc3RvcmUudG9nZ2xlQWxsU2VsZWN0aW9uID0gZGVib3VuY2VfZGVmYXVsdCgpKDEwLCBzdG9yZS5fdG9nZ2xlQWxsU2VsZWN0aW9uKTtcbiAgT2JqZWN0LmtleXMoaW5pdGlhbFN0YXRlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBzdG9yZS5zdGF0ZXNba2V5XSA9IGluaXRpYWxTdGF0ZVtrZXldO1xuICB9KTtcbiAgcmV0dXJuIHN0b3JlO1xufVxuXG5mdW5jdGlvbiBtYXBTdGF0ZXMobWFwcGVyKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgT2JqZWN0LmtleXMobWFwcGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgdmFsdWUgPSBtYXBwZXJba2V5XTtcbiAgICB2YXIgZm4gPSB2b2lkIDA7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZuID0gZnVuY3Rpb24gZm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlc1t2YWx1ZV07XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmbiA9IGZ1bmN0aW9uIGZuKCkge1xuICAgICAgICByZXR1cm4gdmFsdWUuY2FsbCh0aGlzLCB0aGlzLnN0b3JlLnN0YXRlcyk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdpbnZhbGlkIHZhbHVlIHR5cGUnKTtcbiAgICB9XG4gICAgaWYgKGZuKSB7XG4gICAgICByZXNba2V5XSA9IGZuO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXM7XG59O1xuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3Njcm9sbGJhci13aWR0aFwiXG52YXIgc2Nyb2xsYmFyX3dpZHRoXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpO1xudmFyIHNjcm9sbGJhcl93aWR0aF9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihzY3JvbGxiYXJfd2lkdGhfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJsZS9zcmMvdGFibGUtbGF5b3V0LmpzXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5cblxuXG5cbnZhciB0YWJsZV9sYXlvdXRfVGFibGVMYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRhYmxlTGF5b3V0KG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGFibGVMYXlvdXQpO1xuXG4gICAgdGhpcy5vYnNlcnZlcnMgPSBbXTtcbiAgICB0aGlzLnRhYmxlID0gbnVsbDtcbiAgICB0aGlzLnN0b3JlID0gbnVsbDtcbiAgICB0aGlzLmNvbHVtbnMgPSBudWxsO1xuICAgIHRoaXMuZml0ID0gdHJ1ZTtcbiAgICB0aGlzLnNob3dIZWFkZXIgPSB0cnVlO1xuXG4gICAgdGhpcy5oZWlnaHQgPSBudWxsO1xuICAgIHRoaXMuc2Nyb2xsWCA9IGZhbHNlO1xuICAgIHRoaXMuc2Nyb2xsWSA9IGZhbHNlO1xuICAgIHRoaXMuYm9keVdpZHRoID0gbnVsbDtcbiAgICB0aGlzLmZpeGVkV2lkdGggPSBudWxsO1xuICAgIHRoaXMucmlnaHRGaXhlZFdpZHRoID0gbnVsbDtcbiAgICB0aGlzLnRhYmxlSGVpZ2h0ID0gbnVsbDtcbiAgICB0aGlzLmhlYWRlckhlaWdodCA9IDQ0OyAvLyBUYWJsZSBIZWFkZXIgSGVpZ2h0XG4gICAgdGhpcy5hcHBlbmRIZWlnaHQgPSAwOyAvLyBBcHBlbmQgU2xvdCBIZWlnaHRcbiAgICB0aGlzLmZvb3RlckhlaWdodCA9IDQ0OyAvLyBUYWJsZSBGb290ZXIgSGVpZ2h0XG4gICAgdGhpcy52aWV3cG9ydEhlaWdodCA9IG51bGw7IC8vIFRhYmxlIEhlaWdodCAtIFNjcm9sbCBCYXIgSGVpZ2h0XG4gICAgdGhpcy5ib2R5SGVpZ2h0ID0gbnVsbDsgLy8gVGFibGUgSGVpZ2h0IC0gVGFibGUgSGVhZGVyIEhlaWdodFxuICAgIHRoaXMuZml4ZWRCb2R5SGVpZ2h0ID0gbnVsbDsgLy8gVGFibGUgSGVpZ2h0IC0gVGFibGUgSGVhZGVyIEhlaWdodCAtIFNjcm9sbCBCYXIgSGVpZ2h0XG4gICAgdGhpcy5ndXR0ZXJXaWR0aCA9IHNjcm9sbGJhcl93aWR0aF9kZWZhdWx0KCkoKTtcblxuICAgIGZvciAodmFyIG5hbWUgaW4gb3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgdGhpc1tuYW1lXSA9IG9wdGlvbnNbbmFtZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRhYmxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RhYmxlIGlzIHJlcXVpcmVkIGZvciBUYWJsZSBMYXlvdXQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnN0b3JlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3N0b3JlIGlzIHJlcXVpcmVkIGZvciBUYWJsZSBMYXlvdXQnKTtcbiAgICB9XG4gIH1cblxuICBUYWJsZUxheW91dC5wcm90b3R5cGUudXBkYXRlU2Nyb2xsWSA9IGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbFkoKSB7XG4gICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0O1xuICAgIGlmIChoZWlnaHQgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICB2YXIgYm9keVdyYXBwZXIgPSB0aGlzLnRhYmxlLmJvZHlXcmFwcGVyO1xuICAgIGlmICh0aGlzLnRhYmxlLiRlbCAmJiBib2R5V3JhcHBlcikge1xuICAgICAgdmFyIGJvZHkgPSBib2R5V3JhcHBlci5xdWVyeVNlbGVjdG9yKCcuZWwtdGFibGVfX2JvZHknKTtcbiAgICAgIHZhciBwcmV2U2Nyb2xsWSA9IHRoaXMuc2Nyb2xsWTtcbiAgICAgIHZhciBzY3JvbGxZID0gYm9keS5vZmZzZXRIZWlnaHQgPiB0aGlzLmJvZHlIZWlnaHQ7XG4gICAgICB0aGlzLnNjcm9sbFkgPSBzY3JvbGxZO1xuICAgICAgcmV0dXJuIHByZXZTY3JvbGxZICE9PSBzY3JvbGxZO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgVGFibGVMYXlvdXQucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uIHNldEhlaWdodCh2YWx1ZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgcHJvcCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJ2hlaWdodCc7XG5cbiAgICBpZiAoZXh0ZXJuYWxfdnVlX2RlZmF1bHQuYS5wcm90b3R5cGUuJGlzU2VydmVyKSByZXR1cm47XG4gICAgdmFyIGVsID0gdGhpcy50YWJsZS4kZWw7XG4gICAgdmFsdWUgPSBwYXJzZUhlaWdodCh2YWx1ZSk7XG4gICAgdGhpcy5oZWlnaHQgPSB2YWx1ZTtcblxuICAgIGlmICghZWwgJiYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSkgcmV0dXJuIGV4dGVybmFsX3Z1ZV9kZWZhdWx0LmEubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnNldEhlaWdodCh2YWx1ZSwgcHJvcCk7XG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgZWwuc3R5bGVbcHJvcF0gPSB2YWx1ZSArICdweCc7XG4gICAgICB0aGlzLnVwZGF0ZUVsc0hlaWdodCgpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgZWwuc3R5bGVbcHJvcF0gPSB2YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlRWxzSGVpZ2h0KCk7XG4gICAgfVxuICB9O1xuXG4gIFRhYmxlTGF5b3V0LnByb3RvdHlwZS5zZXRNYXhIZWlnaHQgPSBmdW5jdGlvbiBzZXRNYXhIZWlnaHQodmFsdWUpIHtcbiAgICB0aGlzLnNldEhlaWdodCh2YWx1ZSwgJ21heC1oZWlnaHQnKTtcbiAgfTtcblxuICBUYWJsZUxheW91dC5wcm90b3R5cGUuZ2V0RmxhdHRlbkNvbHVtbnMgPSBmdW5jdGlvbiBnZXRGbGF0dGVuQ29sdW1ucygpIHtcbiAgICB2YXIgZmxhdHRlbkNvbHVtbnMgPSBbXTtcbiAgICB2YXIgY29sdW1ucyA9IHRoaXMudGFibGUuY29sdW1ucztcbiAgICBjb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgaWYgKGNvbHVtbi5pc0NvbHVtbkdyb3VwKSB7XG4gICAgICAgIGZsYXR0ZW5Db2x1bW5zLnB1c2guYXBwbHkoZmxhdHRlbkNvbHVtbnMsIGNvbHVtbi5jb2x1bW5zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsYXR0ZW5Db2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmbGF0dGVuQ29sdW1ucztcbiAgfTtcblxuICBUYWJsZUxheW91dC5wcm90b3R5cGUudXBkYXRlRWxzSGVpZ2h0ID0gZnVuY3Rpb24gdXBkYXRlRWxzSGVpZ2h0KCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgaWYgKCF0aGlzLnRhYmxlLiRyZWFkeSkgcmV0dXJuIGV4dGVybmFsX3Z1ZV9kZWZhdWx0LmEubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzMi51cGRhdGVFbHNIZWlnaHQoKTtcbiAgICB9KTtcbiAgICB2YXIgX3RhYmxlJCRyZWZzID0gdGhpcy50YWJsZS4kcmVmcyxcbiAgICAgICAgaGVhZGVyV3JhcHBlciA9IF90YWJsZSQkcmVmcy5oZWFkZXJXcmFwcGVyLFxuICAgICAgICBhcHBlbmRXcmFwcGVyID0gX3RhYmxlJCRyZWZzLmFwcGVuZFdyYXBwZXIsXG4gICAgICAgIGZvb3RlcldyYXBwZXIgPSBfdGFibGUkJHJlZnMuZm9vdGVyV3JhcHBlcjtcblxuICAgIHRoaXMuYXBwZW5kSGVpZ2h0ID0gYXBwZW5kV3JhcHBlciA/IGFwcGVuZFdyYXBwZXIub2Zmc2V0SGVpZ2h0IDogMDtcblxuICAgIGlmICh0aGlzLnNob3dIZWFkZXIgJiYgIWhlYWRlcldyYXBwZXIpIHJldHVybjtcblxuICAgIC8vIGZpeCBpc3N1ZSAoaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9wdWxsLzE2OTU2KVxuICAgIHZhciBoZWFkZXJUckVsbSA9IGhlYWRlcldyYXBwZXIgPyBoZWFkZXJXcmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJy5lbC10YWJsZV9faGVhZGVyIHRyJykgOiBudWxsO1xuICAgIHZhciBub25lSGVhZGVyID0gdGhpcy5oZWFkZXJEaXNwbGF5Tm9uZShoZWFkZXJUckVsbSk7XG5cbiAgICB2YXIgaGVhZGVySGVpZ2h0ID0gdGhpcy5oZWFkZXJIZWlnaHQgPSAhdGhpcy5zaG93SGVhZGVyID8gMCA6IGhlYWRlcldyYXBwZXIub2Zmc2V0SGVpZ2h0O1xuICAgIGlmICh0aGlzLnNob3dIZWFkZXIgJiYgIW5vbmVIZWFkZXIgJiYgaGVhZGVyV3JhcHBlci5vZmZzZXRXaWR0aCA+IDAgJiYgKHRoaXMudGFibGUuY29sdW1ucyB8fCBbXSkubGVuZ3RoID4gMCAmJiBoZWFkZXJIZWlnaHQgPCAyKSB7XG4gICAgICByZXR1cm4gZXh0ZXJuYWxfdnVlX2RlZmF1bHQuYS5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIudXBkYXRlRWxzSGVpZ2h0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdmFyIHRhYmxlSGVpZ2h0ID0gdGhpcy50YWJsZUhlaWdodCA9IHRoaXMudGFibGUuJGVsLmNsaWVudEhlaWdodDtcbiAgICB2YXIgZm9vdGVySGVpZ2h0ID0gdGhpcy5mb290ZXJIZWlnaHQgPSBmb290ZXJXcmFwcGVyID8gZm9vdGVyV3JhcHBlci5vZmZzZXRIZWlnaHQgOiAwO1xuICAgIGlmICh0aGlzLmhlaWdodCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5ib2R5SGVpZ2h0ID0gdGFibGVIZWlnaHQgLSBoZWFkZXJIZWlnaHQgLSBmb290ZXJIZWlnaHQgKyAoZm9vdGVyV3JhcHBlciA/IDEgOiAwKTtcbiAgICB9XG4gICAgdGhpcy5maXhlZEJvZHlIZWlnaHQgPSB0aGlzLnNjcm9sbFggPyB0aGlzLmJvZHlIZWlnaHQgLSB0aGlzLmd1dHRlcldpZHRoIDogdGhpcy5ib2R5SGVpZ2h0O1xuXG4gICAgdmFyIG5vRGF0YSA9ICEodGhpcy5zdG9yZS5zdGF0ZXMuZGF0YSAmJiB0aGlzLnN0b3JlLnN0YXRlcy5kYXRhLmxlbmd0aCk7XG4gICAgdGhpcy52aWV3cG9ydEhlaWdodCA9IHRoaXMuc2Nyb2xsWCA/IHRhYmxlSGVpZ2h0IC0gKG5vRGF0YSA/IDAgOiB0aGlzLmd1dHRlcldpZHRoKSA6IHRhYmxlSGVpZ2h0O1xuICAgIHRoaXMudXBkYXRlU2Nyb2xsWSgpO1xuICAgIHRoaXMubm90aWZ5T2JzZXJ2ZXJzKCdzY3JvbGxhYmxlJyk7XG4gIH07XG5cbiAgVGFibGVMYXlvdXQucHJvdG90eXBlLmhlYWRlckRpc3BsYXlOb25lID0gZnVuY3Rpb24gaGVhZGVyRGlzcGxheU5vbmUoZWxtKSB7XG4gICAgaWYgKCFlbG0pIHJldHVybiB0cnVlO1xuICAgIHZhciBoZWFkZXJDaGlsZCA9IGVsbTtcbiAgICB3aGlsZSAoaGVhZGVyQ2hpbGQudGFnTmFtZSAhPT0gJ0RJVicpIHtcbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGhlYWRlckNoaWxkKS5kaXNwbGF5ID09PSAnbm9uZScpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBoZWFkZXJDaGlsZCA9IGhlYWRlckNoaWxkLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBUYWJsZUxheW91dC5wcm90b3R5cGUudXBkYXRlQ29sdW1uc1dpZHRoID0gZnVuY3Rpb24gdXBkYXRlQ29sdW1uc1dpZHRoKCkge1xuICAgIGlmIChleHRlcm5hbF92dWVfZGVmYXVsdC5hLnByb3RvdHlwZS4kaXNTZXJ2ZXIpIHJldHVybjtcbiAgICB2YXIgZml0ID0gdGhpcy5maXQ7XG4gICAgdmFyIGJvZHlXaWR0aCA9IHRoaXMudGFibGUuJGVsLmNsaWVudFdpZHRoO1xuICAgIHZhciBib2R5TWluV2lkdGggPSAwO1xuXG4gICAgdmFyIGZsYXR0ZW5Db2x1bW5zID0gdGhpcy5nZXRGbGF0dGVuQ29sdW1ucygpO1xuICAgIHZhciBmbGV4Q29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zLmZpbHRlcihmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGNvbHVtbi53aWR0aCAhPT0gJ251bWJlcic7XG4gICAgfSk7XG5cbiAgICBmbGF0dGVuQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgIC8vIENsZWFuIHRob3NlIGNvbHVtbnMgd2hvc2Ugd2lkdGggY2hhbmdlZCBmcm9tIGZsZXggdG8gdW5mbGV4XG4gICAgICBpZiAodHlwZW9mIGNvbHVtbi53aWR0aCA9PT0gJ251bWJlcicgJiYgY29sdW1uLnJlYWxXaWR0aCkgY29sdW1uLnJlYWxXaWR0aCA9IG51bGw7XG4gICAgfSk7XG5cbiAgICBpZiAoZmxleENvbHVtbnMubGVuZ3RoID4gMCAmJiBmaXQpIHtcbiAgICAgIGZsYXR0ZW5Db2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgICBib2R5TWluV2lkdGggKz0gY29sdW1uLndpZHRoIHx8IGNvbHVtbi5taW5XaWR0aCB8fCA4MDtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgc2Nyb2xsWVdpZHRoID0gdGhpcy5zY3JvbGxZID8gdGhpcy5ndXR0ZXJXaWR0aCA6IDA7XG5cbiAgICAgIGlmIChib2R5TWluV2lkdGggPD0gYm9keVdpZHRoIC0gc2Nyb2xsWVdpZHRoKSB7XG4gICAgICAgIC8vIERPTidUIEhBVkUgU0NST0xMIEJBUlxuICAgICAgICB0aGlzLnNjcm9sbFggPSBmYWxzZTtcblxuICAgICAgICB2YXIgdG90YWxGbGV4V2lkdGggPSBib2R5V2lkdGggLSBzY3JvbGxZV2lkdGggLSBib2R5TWluV2lkdGg7XG5cbiAgICAgICAgaWYgKGZsZXhDb2x1bW5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGZsZXhDb2x1bW5zWzBdLnJlYWxXaWR0aCA9IChmbGV4Q29sdW1uc1swXS5taW5XaWR0aCB8fCA4MCkgKyB0b3RhbEZsZXhXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgYWxsQ29sdW1uc1dpZHRoID0gZmxleENvbHVtbnMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2ICsgKGNvbHVtbi5taW5XaWR0aCB8fCA4MCk7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgdmFyIGZsZXhXaWR0aFBlclBpeGVsID0gdG90YWxGbGV4V2lkdGggLyBhbGxDb2x1bW5zV2lkdGg7XG4gICAgICAgICAgdmFyIG5vbmVGaXJzdFdpZHRoID0gMDtcblxuICAgICAgICAgIGZsZXhDb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbiwgaW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGZsZXhXaWR0aCA9IE1hdGguZmxvb3IoKGNvbHVtbi5taW5XaWR0aCB8fCA4MCkgKiBmbGV4V2lkdGhQZXJQaXhlbCk7XG4gICAgICAgICAgICBub25lRmlyc3RXaWR0aCArPSBmbGV4V2lkdGg7XG4gICAgICAgICAgICBjb2x1bW4ucmVhbFdpZHRoID0gKGNvbHVtbi5taW5XaWR0aCB8fCA4MCkgKyBmbGV4V2lkdGg7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBmbGV4Q29sdW1uc1swXS5yZWFsV2lkdGggPSAoZmxleENvbHVtbnNbMF0ubWluV2lkdGggfHwgODApICsgdG90YWxGbGV4V2lkdGggLSBub25lRmlyc3RXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSEFWRSBIT1JJWk9OVEFMIFNDUk9MTCBCQVJcbiAgICAgICAgdGhpcy5zY3JvbGxYID0gdHJ1ZTtcbiAgICAgICAgZmxleENvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgICAgICAgY29sdW1uLnJlYWxXaWR0aCA9IGNvbHVtbi5taW5XaWR0aDtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYm9keVdpZHRoID0gTWF0aC5tYXgoYm9keU1pbldpZHRoLCBib2R5V2lkdGgpO1xuICAgICAgdGhpcy50YWJsZS5yZXNpemVTdGF0ZS53aWR0aCA9IHRoaXMuYm9keVdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGF0dGVuQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgaWYgKCFjb2x1bW4ud2lkdGggJiYgIWNvbHVtbi5taW5XaWR0aCkge1xuICAgICAgICAgIGNvbHVtbi5yZWFsV2lkdGggPSA4MDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW4ucmVhbFdpZHRoID0gY29sdW1uLndpZHRoIHx8IGNvbHVtbi5taW5XaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJvZHlNaW5XaWR0aCArPSBjb2x1bW4ucmVhbFdpZHRoO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNjcm9sbFggPSBib2R5TWluV2lkdGggPiBib2R5V2lkdGg7XG5cbiAgICAgIHRoaXMuYm9keVdpZHRoID0gYm9keU1pbldpZHRoO1xuICAgIH1cblxuICAgIHZhciBmaXhlZENvbHVtbnMgPSB0aGlzLnN0b3JlLnN0YXRlcy5maXhlZENvbHVtbnM7XG5cbiAgICBpZiAoZml4ZWRDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBmaXhlZFdpZHRoID0gMDtcbiAgICAgIGZpeGVkQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgZml4ZWRXaWR0aCArPSBjb2x1bW4ucmVhbFdpZHRoIHx8IGNvbHVtbi53aWR0aDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmZpeGVkV2lkdGggPSBmaXhlZFdpZHRoO1xuICAgIH1cblxuICAgIHZhciByaWdodEZpeGVkQ29sdW1ucyA9IHRoaXMuc3RvcmUuc3RhdGVzLnJpZ2h0Rml4ZWRDb2x1bW5zO1xuICAgIGlmIChyaWdodEZpeGVkQ29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgcmlnaHRGaXhlZFdpZHRoID0gMDtcbiAgICAgIHJpZ2h0Rml4ZWRDb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgICByaWdodEZpeGVkV2lkdGggKz0gY29sdW1uLnJlYWxXaWR0aCB8fCBjb2x1bW4ud2lkdGg7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yaWdodEZpeGVkV2lkdGggPSByaWdodEZpeGVkV2lkdGg7XG4gICAgfVxuXG4gICAgdGhpcy5ub3RpZnlPYnNlcnZlcnMoJ2NvbHVtbnMnKTtcbiAgfTtcblxuICBUYWJsZUxheW91dC5wcm90b3R5cGUuYWRkT2JzZXJ2ZXIgPSBmdW5jdGlvbiBhZGRPYnNlcnZlcihvYnNlcnZlcikge1xuICAgIHRoaXMub2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICB9O1xuXG4gIFRhYmxlTGF5b3V0LnByb3RvdHlwZS5yZW1vdmVPYnNlcnZlciA9IGZ1bmN0aW9uIHJlbW92ZU9ic2VydmVyKG9ic2VydmVyKSB7XG4gICAgdmFyIGluZGV4ID0gdGhpcy5vYnNlcnZlcnMuaW5kZXhPZihvYnNlcnZlcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5vYnNlcnZlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH07XG5cbiAgVGFibGVMYXlvdXQucHJvdG90eXBlLm5vdGlmeU9ic2VydmVycyA9IGZ1bmN0aW9uIG5vdGlmeU9ic2VydmVycyhldmVudCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdmFyIG9ic2VydmVycyA9IHRoaXMub2JzZXJ2ZXJzO1xuICAgIG9ic2VydmVycy5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgc3dpdGNoIChldmVudCkge1xuICAgICAgICBjYXNlICdjb2x1bW5zJzpcbiAgICAgICAgICBvYnNlcnZlci5vbkNvbHVtbnNDaGFuZ2UoX3RoaXMzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2Nyb2xsYWJsZSc6XG4gICAgICAgICAgb2JzZXJ2ZXIub25TY3JvbGxhYmxlQ2hhbmdlKF90aGlzMyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYWJsZSBMYXlvdXQgZG9uXFwndCBoYXZlIGV2ZW50ICcgKyBldmVudCArICcuJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIFRhYmxlTGF5b3V0O1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0YWJsZV9sYXlvdXQgPSAodGFibGVfbGF5b3V0X1RhYmxlTGF5b3V0KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFibGUvc3JjL2xheW91dC1vYnNlcnZlci5qc1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbGF5b3V0X29ic2VydmVyID0gKHtcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLnRhYmxlTGF5b3V0LmFkZE9ic2VydmVyKHRoaXMpO1xuICB9LFxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCgpIHtcbiAgICB0aGlzLnRhYmxlTGF5b3V0LnJlbW92ZU9ic2VydmVyKHRoaXMpO1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICB0YWJsZUxheW91dDogZnVuY3Rpb24gdGFibGVMYXlvdXQoKSB7XG4gICAgICB2YXIgbGF5b3V0ID0gdGhpcy5sYXlvdXQ7XG4gICAgICBpZiAoIWxheW91dCAmJiB0aGlzLnRhYmxlKSB7XG4gICAgICAgIGxheW91dCA9IHRoaXMudGFibGUubGF5b3V0O1xuICAgICAgfVxuICAgICAgaWYgKCFsYXlvdXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gbm90IGZpbmQgdGFibGUgbGF5b3V0LicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxheW91dDtcbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLm9uQ29sdW1uc0NoYW5nZSh0aGlzLnRhYmxlTGF5b3V0KTtcbiAgICB0aGlzLm9uU2Nyb2xsYWJsZUNoYW5nZSh0aGlzLnRhYmxlTGF5b3V0KTtcbiAgfSxcbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCgpIHtcbiAgICBpZiAodGhpcy5fX3VwZGF0ZWRfXykgcmV0dXJuO1xuICAgIHRoaXMub25Db2x1bW5zQ2hhbmdlKHRoaXMudGFibGVMYXlvdXQpO1xuICAgIHRoaXMub25TY3JvbGxhYmxlQ2hhbmdlKHRoaXMudGFibGVMYXlvdXQpO1xuICAgIHRoaXMuX191cGRhdGVkX18gPSB0cnVlO1xuICB9LFxuXG5cbiAgbWV0aG9kczoge1xuICAgIG9uQ29sdW1uc0NoYW5nZTogZnVuY3Rpb24gb25Db2x1bW5zQ2hhbmdlKGxheW91dCkge1xuICAgICAgdmFyIGNvbHMgPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCdjb2xncm91cCA+IGNvbCcpO1xuICAgICAgaWYgKCFjb2xzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgdmFyIGZsYXR0ZW5Db2x1bW5zID0gbGF5b3V0LmdldEZsYXR0ZW5Db2x1bW5zKCk7XG4gICAgICB2YXIgY29sdW1uc01hcCA9IHt9O1xuICAgICAgZmxhdHRlbkNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgICAgIGNvbHVtbnNNYXBbY29sdW1uLmlkXSA9IGNvbHVtbjtcbiAgICAgIH0pO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSBjb2xzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICB2YXIgY29sID0gY29sc1tpXTtcbiAgICAgICAgdmFyIG5hbWUgPSBjb2wuZ2V0QXR0cmlidXRlKCduYW1lJyk7XG4gICAgICAgIHZhciBjb2x1bW4gPSBjb2x1bW5zTWFwW25hbWVdO1xuICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgICAgY29sLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBjb2x1bW4ucmVhbFdpZHRoIHx8IGNvbHVtbi53aWR0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG9uU2Nyb2xsYWJsZUNoYW5nZTogZnVuY3Rpb24gb25TY3JvbGxhYmxlQ2hhbmdlKGxheW91dCkge1xuICAgICAgdmFyIGNvbHMgPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCdjb2xncm91cCA+IGNvbFtuYW1lPWd1dHRlcl0nKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gY29scy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgdmFyIGNvbCA9IGNvbHNbaV07XG4gICAgICAgIGNvbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgbGF5b3V0LnNjcm9sbFkgPyBsYXlvdXQuZ3V0dGVyV2lkdGggOiAnMCcpO1xuICAgICAgfVxuICAgICAgdmFyIHRocyA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoLmd1dHRlcicpO1xuICAgICAgZm9yICh2YXIgX2kgPSAwLCBfaiA9IHRocy5sZW5ndGg7IF9pIDwgX2o7IF9pKyspIHtcbiAgICAgICAgdmFyIHRoID0gdGhzW19pXTtcbiAgICAgICAgdGguc3R5bGUud2lkdGggPSBsYXlvdXQuc2Nyb2xsWSA/IGxheW91dC5ndXR0ZXJXaWR0aCArICdweCcgOiAnMCc7XG4gICAgICAgIHRoLnN0eWxlLmRpc3BsYXkgPSBsYXlvdXQuc2Nyb2xsWSA/ICcnIDogJ25vbmUnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy90YWJsZS1yb3cuanNcbnZhciB0YWJsZV9yb3dfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGFibGVfcm93ID0gKHtcbiAgbmFtZTogJ0VsVGFibGVSb3cnLFxuICBwcm9wczogWydjb2x1bW5zJywgJ3JvdycsICdpbmRleCcsICdpc1NlbGVjdGVkJywgJ2lzRXhwYW5kZWQnLCAnc3RvcmUnLCAnY29udGV4dCcsICdmaXJzdERlZmF1bHRDb2x1bW5JbmRleCcsICd0cmVlUm93RGF0YScsICd0cmVlSW5kZW50JywgJ2NvbHVtbnNIaWRkZW4nLCAnZ2V0U3BhbicsICdnZXRDb2xzcGFuUmVhbFdpZHRoJywgJ2dldENlbGxTdHlsZScsICdnZXRDZWxsQ2xhc3MnLCAnaGFuZGxlQ2VsbE1vdXNlTGVhdmUnLCAnaGFuZGxlQ2VsbE1vdXNlRW50ZXInLCAnZml4ZWQnXSxcbiAgY29tcG9uZW50czoge1xuICAgIEVsQ2hlY2tib3g6IGNoZWNrYm94X2RlZmF1bHQuYVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGggPSBhcmd1bWVudHNbMF07XG4gICAgdmFyIGNvbHVtbnMgPSB0aGlzLmNvbHVtbnMsXG4gICAgICAgIHJvdyA9IHRoaXMucm93LFxuICAgICAgICAkaW5kZXggPSB0aGlzLmluZGV4LFxuICAgICAgICBzdG9yZSA9IHRoaXMuc3RvcmUsXG4gICAgICAgIGNvbnRleHQgPSB0aGlzLmNvbnRleHQsXG4gICAgICAgIGZpcnN0RGVmYXVsdENvbHVtbkluZGV4ID0gdGhpcy5maXJzdERlZmF1bHRDb2x1bW5JbmRleCxcbiAgICAgICAgdHJlZVJvd0RhdGEgPSB0aGlzLnRyZWVSb3dEYXRhLFxuICAgICAgICB0cmVlSW5kZW50ID0gdGhpcy50cmVlSW5kZW50LFxuICAgICAgICBfY29sdW1uc0hpZGRlbiA9IHRoaXMuY29sdW1uc0hpZGRlbixcbiAgICAgICAgY29sdW1uc0hpZGRlbiA9IF9jb2x1bW5zSGlkZGVuID09PSB1bmRlZmluZWQgPyBbXSA6IF9jb2x1bW5zSGlkZGVuLFxuICAgICAgICBpc1NlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkLFxuICAgICAgICBpc0V4cGFuZGVkID0gdGhpcy5pc0V4cGFuZGVkO1xuXG5cbiAgICByZXR1cm4gaCgndHInLCBbY29sdW1ucy5tYXAoZnVuY3Rpb24gKGNvbHVtbiwgY2VsbEluZGV4KSB7XG4gICAgICB2YXIgX2dldFNwYW4gPSBfdGhpcy5nZXRTcGFuKHJvdywgY29sdW1uLCAkaW5kZXgsIGNlbGxJbmRleCksXG4gICAgICAgICAgcm93c3BhbiA9IF9nZXRTcGFuLnJvd3NwYW4sXG4gICAgICAgICAgY29sc3BhbiA9IF9nZXRTcGFuLmNvbHNwYW47XG5cbiAgICAgIGlmICghcm93c3BhbiB8fCAhY29sc3Bhbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBjb2x1bW5EYXRhID0gdGFibGVfcm93X2V4dGVuZHMoe30sIGNvbHVtbik7XG4gICAgICBjb2x1bW5EYXRhLnJlYWxXaWR0aCA9IF90aGlzLmdldENvbHNwYW5SZWFsV2lkdGgoY29sdW1ucywgY29sc3BhbiwgY2VsbEluZGV4KTtcbiAgICAgIHZhciBkYXRhID0ge1xuICAgICAgICBzdG9yZTogc3RvcmUsXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgIGlzRXhwYW5kZWQ6IGlzRXhwYW5kZWQsXG4gICAgICAgIF9zZWxmOiBjb250ZXh0LFxuICAgICAgICBjb2x1bW46IGNvbHVtbkRhdGEsXG4gICAgICAgIHJvdzogcm93LFxuICAgICAgICAkaW5kZXg6ICRpbmRleFxuICAgICAgfTtcbiAgICAgIGlmIChjZWxsSW5kZXggPT09IGZpcnN0RGVmYXVsdENvbHVtbkluZGV4ICYmIHRyZWVSb3dEYXRhKSB7XG4gICAgICAgIGRhdGEudHJlZU5vZGUgPSB7XG4gICAgICAgICAgaW5kZW50OiB0cmVlUm93RGF0YS5sZXZlbCAqIHRyZWVJbmRlbnQsXG4gICAgICAgICAgbGV2ZWw6IHRyZWVSb3dEYXRhLmxldmVsXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0eXBlb2YgdHJlZVJvd0RhdGEuZXhwYW5kZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgIGRhdGEudHJlZU5vZGUuZXhwYW5kZWQgPSB0cmVlUm93RGF0YS5leHBhbmRlZDtcbiAgICAgICAgICAvLyDooajmmI7mmK/mh5LliqDovb1cbiAgICAgICAgICBpZiAoJ2xvYWRpbmcnIGluIHRyZWVSb3dEYXRhKSB7XG4gICAgICAgICAgICBkYXRhLnRyZWVOb2RlLmxvYWRpbmcgPSB0cmVlUm93RGF0YS5sb2FkaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJ25vTGF6eUNoaWxkcmVuJyBpbiB0cmVlUm93RGF0YSkge1xuICAgICAgICAgICAgZGF0YS50cmVlTm9kZS5ub0xhenlDaGlsZHJlbiA9IHRyZWVSb3dEYXRhLm5vTGF6eUNoaWxkcmVuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGgoXG4gICAgICAgICd0ZCcsXG4gICAgICAgIHtcbiAgICAgICAgICBzdHlsZTogX3RoaXMuZ2V0Q2VsbFN0eWxlKCRpbmRleCwgY2VsbEluZGV4LCByb3csIGNvbHVtbiksXG4gICAgICAgICAgJ2NsYXNzJzogX3RoaXMuZ2V0Q2VsbENsYXNzKCRpbmRleCwgY2VsbEluZGV4LCByb3csIGNvbHVtbiksXG4gICAgICAgICAgYXR0cnM6IHsgcm93c3Bhbjogcm93c3BhbixcbiAgICAgICAgICAgIGNvbHNwYW46IGNvbHNwYW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAnbW91c2VlbnRlcic6IGZ1bmN0aW9uIG1vdXNlZW50ZXIoJGV2ZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVDZWxsTW91c2VFbnRlcigkZXZlbnQsIHJvdyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ21vdXNlbGVhdmUnOiBfdGhpcy5oYW5kbGVDZWxsTW91c2VMZWF2ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW2NvbHVtbi5yZW5kZXJDZWxsLmNhbGwoX3RoaXMuX3JlbmRlclByb3h5LCBfdGhpcy4kY3JlYXRlRWxlbWVudCwgZGF0YSwgY29sdW1uc0hpZGRlbltjZWxsSW5kZXhdKV1cbiAgICAgICk7XG4gICAgfSldKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy90YWJsZS1ib2R5LmpzXG52YXIgdGFibGVfYm9keV90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG52YXIgdGFibGVfYm9keV9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuXG5cblxuXG5cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0YWJsZV9ib2R5ID0gKHtcbiAgbmFtZTogJ0VsVGFibGVCb2R5JyxcblxuICBtaXhpbnM6IFtsYXlvdXRfb2JzZXJ2ZXJdLFxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBFbENoZWNrYm94OiBjaGVja2JveF9kZWZhdWx0LmEsXG4gICAgRWxUb29sdGlwOiB0b29sdGlwX2RlZmF1bHQuYSxcbiAgICBUYWJsZVJvdzogdGFibGVfcm93XG4gIH0sXG5cbiAgcHJvcHM6IHtcbiAgICBzdG9yZToge1xuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9LFxuICAgIHN0cmlwZTogQm9vbGVhbixcbiAgICBjb250ZXh0OiB7fSxcbiAgICByb3dDbGFzc05hbWU6IFtTdHJpbmcsIEZ1bmN0aW9uXSxcbiAgICByb3dTdHlsZTogW09iamVjdCwgRnVuY3Rpb25dLFxuICAgIGZpeGVkOiBTdHJpbmcsXG4gICAgaGlnaGxpZ2h0OiBCb29sZWFuXG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSB8fCBbXTtcbiAgICByZXR1cm4gaChcbiAgICAgICd0YWJsZScsXG4gICAgICB7XG4gICAgICAgICdjbGFzcyc6ICdlbC10YWJsZV9fYm9keScsXG4gICAgICAgIGF0dHJzOiB7IGNlbGxzcGFjaW5nOiAnMCcsXG4gICAgICAgICAgY2VsbHBhZGRpbmc6ICcwJyxcbiAgICAgICAgICBib3JkZXI6ICcwJyB9XG4gICAgICB9LFxuICAgICAgW2goJ2NvbGdyb3VwJywgW3RoaXMuY29sdW1ucy5tYXAoZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgICByZXR1cm4gaCgnY29sJywge1xuICAgICAgICAgIGF0dHJzOiB7IG5hbWU6IGNvbHVtbi5pZCB9LFxuICAgICAgICAgIGtleTogY29sdW1uLmlkIH0pO1xuICAgICAgfSldKSwgaCgndGJvZHknLCBbZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcm93KSB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KF90aGlzLndyYXBwZWRSb3dSZW5kZXIocm93LCBhY2MubGVuZ3RoKSk7XG4gICAgICB9LCBbXSksIGgoJ2VsLXRvb2x0aXAnLCB7XG4gICAgICAgIGF0dHJzOiB7IGVmZmVjdDogdGhpcy50YWJsZS50b29sdGlwRWZmZWN0LCBwbGFjZW1lbnQ6ICd0b3AnLCBjb250ZW50OiB0aGlzLnRvb2x0aXBDb250ZW50IH0sXG4gICAgICAgIHJlZjogJ3Rvb2x0aXAnIH0pXSldXG4gICAgKTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB0YWJsZV9ib2R5X2V4dGVuZHMoe1xuICAgIHRhYmxlOiBmdW5jdGlvbiB0YWJsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQ7XG4gICAgfVxuICB9LCBtYXBTdGF0ZXMoe1xuICAgIGRhdGE6ICdkYXRhJyxcbiAgICBjb2x1bW5zOiAnY29sdW1ucycsXG4gICAgdHJlZUluZGVudDogJ2luZGVudCcsXG4gICAgbGVmdEZpeGVkTGVhZkNvdW50OiAnZml4ZWRMZWFmQ29sdW1uc0xlbmd0aCcsXG4gICAgcmlnaHRGaXhlZExlYWZDb3VudDogJ3JpZ2h0Rml4ZWRMZWFmQ29sdW1uc0xlbmd0aCcsXG4gICAgY29sdW1uc0NvdW50OiBmdW5jdGlvbiBjb2x1bW5zQ291bnQoc3RhdGVzKSB7XG4gICAgICByZXR1cm4gc3RhdGVzLmNvbHVtbnMubGVuZ3RoO1xuICAgIH0sXG4gICAgbGVmdEZpeGVkQ291bnQ6IGZ1bmN0aW9uIGxlZnRGaXhlZENvdW50KHN0YXRlcykge1xuICAgICAgcmV0dXJuIHN0YXRlcy5maXhlZENvbHVtbnMubGVuZ3RoO1xuICAgIH0sXG4gICAgcmlnaHRGaXhlZENvdW50OiBmdW5jdGlvbiByaWdodEZpeGVkQ291bnQoc3RhdGVzKSB7XG4gICAgICByZXR1cm4gc3RhdGVzLnJpZ2h0Rml4ZWRDb2x1bW5zLmxlbmd0aDtcbiAgICB9LFxuICAgIGhhc0V4cGFuZENvbHVtbjogZnVuY3Rpb24gaGFzRXhwYW5kQ29sdW1uKHN0YXRlcykge1xuICAgICAgcmV0dXJuIHN0YXRlcy5jb2x1bW5zLnNvbWUoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIHR5cGUgPSBfcmVmLnR5cGU7XG4gICAgICAgIHJldHVybiB0eXBlID09PSAnZXhwYW5kJztcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIHtcbiAgICBjb2x1bW5zSGlkZGVuOiBmdW5jdGlvbiBjb2x1bW5zSGlkZGVuKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbHVtbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4sIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBfdGhpczIuaXNDb2x1bW5IaWRkZW4oaW5kZXgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBmaXJzdERlZmF1bHRDb2x1bW5JbmRleDogZnVuY3Rpb24gZmlyc3REZWZhdWx0Q29sdW1uSW5kZXgoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0KHV0aWxfW1wiYXJyYXlGaW5kSW5kZXhcIl0pKHRoaXMuY29sdW1ucywgZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgIHZhciB0eXBlID0gX3JlZjIudHlwZTtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09ICdkZWZhdWx0JztcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksXG5cbiAgd2F0Y2g6IHtcbiAgICAvLyBkb24ndCB0cmlnZ2VyIGdldHRlciBvZiBjdXJyZW50Um93IGluIGdldENlbGxDbGFzcy4gc2VlIGh0dHBzOi8vanNmaWRkbGUubmV0L29lMmI0aHF0L1xuICAgIC8vIHVwZGF0ZSBET00gbWFudWFsbHkuIHNlZSBodHRwczovL2dpdGh1Yi5jb20vRWxlbWVGRS9lbGVtZW50L3B1bGwvMTM5NTQvZmlsZXMjZGlmZi05YjQ1MGMwMGQwYTlkZWMwZmZhZDVhMzE3Njk3MmU0MFxuICAgICdzdG9yZS5zdGF0ZXMuaG92ZXJSb3cnOiBmdW5jdGlvbiBzdG9yZVN0YXRlc0hvdmVyUm93KG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLnN0b3JlLnN0YXRlcy5pc0NvbXBsZXggfHwgdGhpcy4kaXNTZXJ2ZXIpIHJldHVybjtcbiAgICAgIHZhciByYWYgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO1xuICAgICAgaWYgKCFyYWYpIHtcbiAgICAgICAgcmFmID0gZnVuY3Rpb24gcmFmKGZuKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZm4sIDE2KTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJhZihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciByb3dzID0gX3RoaXMzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCcuZWwtdGFibGVfX3JvdycpO1xuICAgICAgICB2YXIgb2xkUm93ID0gcm93c1tvbGRWYWxdO1xuICAgICAgICB2YXIgbmV3Um93ID0gcm93c1tuZXdWYWxdO1xuICAgICAgICBpZiAob2xkUm93KSB7XG4gICAgICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkob2xkUm93LCAnaG92ZXItcm93Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1Jvdykge1xuICAgICAgICAgIE9iamVjdChkb21fW1wiYWRkQ2xhc3NcIl0pKG5ld1JvdywgJ2hvdmVyLXJvdycpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9vbHRpcENvbnRlbnQ6ICcnXG4gICAgfTtcbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLmFjdGl2YXRlVG9vbHRpcCA9IGRlYm91bmNlX2RlZmF1bHQoKSg1MCwgZnVuY3Rpb24gKHRvb2x0aXApIHtcbiAgICAgIHJldHVybiB0b29sdGlwLmhhbmRsZVNob3dQb3BwZXIoKTtcbiAgICB9KTtcbiAgfSxcblxuXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRLZXlPZlJvdzogZnVuY3Rpb24gZ2V0S2V5T2ZSb3cocm93LCBpbmRleCkge1xuICAgICAgdmFyIHJvd0tleSA9IHRoaXMudGFibGUucm93S2V5O1xuICAgICAgaWYgKHJvd0tleSkge1xuICAgICAgICByZXR1cm4gZ2V0Um93SWRlbnRpdHkocm93LCByb3dLZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH0sXG4gICAgaXNDb2x1bW5IaWRkZW46IGZ1bmN0aW9uIGlzQ29sdW1uSGlkZGVuKGluZGV4KSB7XG4gICAgICBpZiAodGhpcy5maXhlZCA9PT0gdHJ1ZSB8fCB0aGlzLmZpeGVkID09PSAnbGVmdCcpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID49IHRoaXMubGVmdEZpeGVkTGVhZkNvdW50O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmZpeGVkID09PSAncmlnaHQnKSB7XG4gICAgICAgIHJldHVybiBpbmRleCA8IHRoaXMuY29sdW1uc0NvdW50IC0gdGhpcy5yaWdodEZpeGVkTGVhZkNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGluZGV4IDwgdGhpcy5sZWZ0Rml4ZWRMZWFmQ291bnQgfHwgaW5kZXggPj0gdGhpcy5jb2x1bW5zQ291bnQgLSB0aGlzLnJpZ2h0Rml4ZWRMZWFmQ291bnQ7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRTcGFuOiBmdW5jdGlvbiBnZXRTcGFuKHJvdywgY29sdW1uLCByb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICAgIHZhciByb3dzcGFuID0gMTtcbiAgICAgIHZhciBjb2xzcGFuID0gMTtcbiAgICAgIHZhciBmbiA9IHRoaXMudGFibGUuc3Bhbk1ldGhvZDtcbiAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGZuKHtcbiAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXG4gICAgICAgICAgY29sdW1uSW5kZXg6IGNvbHVtbkluZGV4XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgcm93c3BhbiA9IHJlc3VsdFswXTtcbiAgICAgICAgICBjb2xzcGFuID0gcmVzdWx0WzFdO1xuICAgICAgICB9IGVsc2UgaWYgKCh0eXBlb2YgcmVzdWx0ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogdGFibGVfYm9keV90eXBlb2YocmVzdWx0KSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgcm93c3BhbiA9IHJlc3VsdC5yb3dzcGFuO1xuICAgICAgICAgIGNvbHNwYW4gPSByZXN1bHQuY29sc3BhbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgcm93c3Bhbjogcm93c3BhbiwgY29sc3BhbjogY29sc3BhbiB9O1xuICAgIH0sXG4gICAgZ2V0Um93U3R5bGU6IGZ1bmN0aW9uIGdldFJvd1N0eWxlKHJvdywgcm93SW5kZXgpIHtcbiAgICAgIHZhciByb3dTdHlsZSA9IHRoaXMudGFibGUucm93U3R5bGU7XG4gICAgICBpZiAodHlwZW9mIHJvd1N0eWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiByb3dTdHlsZS5jYWxsKG51bGwsIHtcbiAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICByb3dJbmRleDogcm93SW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcm93U3R5bGUgfHwgbnVsbDtcbiAgICB9LFxuICAgIGdldFJvd0NsYXNzOiBmdW5jdGlvbiBnZXRSb3dDbGFzcyhyb3csIHJvd0luZGV4KSB7XG4gICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5zdG9yZS5zdGF0ZXMuc2VsZWN0aW9uO1xuICAgICAgdmFyIGNsYXNzZXMgPSBbJ2VsLXRhYmxlX19yb3cnXTtcbiAgICAgIGlmICh0aGlzLnRhYmxlLmhpZ2hsaWdodEN1cnJlbnRSb3cgJiYgcm93ID09PSB0aGlzLnN0b3JlLnN0YXRlcy5jdXJyZW50Um93KSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnY3VycmVudC1yb3cnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudGFibGUuaGlnaGxpZ2h0U2VsZWN0aW9uUm93KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0aW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKG9iamVjdEVxdWFscyhyb3csIHNlbGVjdGlvbltpXSkpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc2VsZWN0aW9uLXJvdycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc3RyaXBlICYmIHJvd0luZGV4ICUgMiA9PT0gMSkge1xuICAgICAgICBjbGFzc2VzLnB1c2goJ2VsLXRhYmxlX19yb3ctLXN0cmlwZWQnKTtcbiAgICAgIH1cbiAgICAgIHZhciByb3dDbGFzc05hbWUgPSB0aGlzLnRhYmxlLnJvd0NsYXNzTmFtZTtcbiAgICAgIGlmICh0eXBlb2Ygcm93Q2xhc3NOYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICBjbGFzc2VzLnB1c2gocm93Q2xhc3NOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJvd0NsYXNzTmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjbGFzc2VzLnB1c2gocm93Q2xhc3NOYW1lLmNhbGwobnVsbCwge1xuICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleFxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnN0b3JlLnN0YXRlcy5leHBhbmRSb3dzLmluZGV4T2Yocm93KSA+IC0xKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnZXhwYW5kZWQnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfSxcbiAgICBnZXRDZWxsU3R5bGU6IGZ1bmN0aW9uIGdldENlbGxTdHlsZShyb3dJbmRleCwgY29sdW1uSW5kZXgsIHJvdywgY29sdW1uKSB7XG4gICAgICB2YXIgY2VsbFN0eWxlID0gdGhpcy50YWJsZS5jZWxsU3R5bGU7XG4gICAgICBpZiAodHlwZW9mIGNlbGxTdHlsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gY2VsbFN0eWxlLmNhbGwobnVsbCwge1xuICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXgsXG4gICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgY29sdW1uOiBjb2x1bW5cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2VsbFN0eWxlO1xuICAgIH0sXG4gICAgZ2V0Q2VsbENsYXNzOiBmdW5jdGlvbiBnZXRDZWxsQ2xhc3Mocm93SW5kZXgsIGNvbHVtbkluZGV4LCByb3csIGNvbHVtbikge1xuICAgICAgdmFyIGNsYXNzZXMgPSBbY29sdW1uLmlkLCBjb2x1bW4uYWxpZ24sIGNvbHVtbi5jbGFzc05hbWVdO1xuXG4gICAgICBpZiAodGhpcy5pc0NvbHVtbkhpZGRlbihjb2x1bW5JbmRleCkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdpcy1oaWRkZW4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNlbGxDbGFzc05hbWUgPSB0aGlzLnRhYmxlLmNlbGxDbGFzc05hbWU7XG4gICAgICBpZiAodHlwZW9mIGNlbGxDbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChjZWxsQ2xhc3NOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNlbGxDbGFzc05hbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKGNlbGxDbGFzc05hbWUuY2FsbChudWxsLCB7XG4gICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxuICAgICAgICAgIGNvbHVtbkluZGV4OiBjb2x1bW5JbmRleCxcbiAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICBjb2x1bW46IGNvbHVtblxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIGNsYXNzZXMucHVzaCgnZWwtdGFibGVfX2NlbGwnKTtcblxuICAgICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICAgIH0sXG4gICAgZ2V0Q29sc3BhblJlYWxXaWR0aDogZnVuY3Rpb24gZ2V0Q29sc3BhblJlYWxXaWR0aChjb2x1bW5zLCBjb2xzcGFuLCBpbmRleCkge1xuICAgICAgaWYgKGNvbHNwYW4gPCAxKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5zW2luZGV4XS5yZWFsV2lkdGg7XG4gICAgICB9XG4gICAgICB2YXIgd2lkdGhBcnIgPSBjb2x1bW5zLm1hcChmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgICAgdmFyIHJlYWxXaWR0aCA9IF9yZWYzLnJlYWxXaWR0aDtcbiAgICAgICAgcmV0dXJuIHJlYWxXaWR0aDtcbiAgICAgIH0pLnNsaWNlKGluZGV4LCBpbmRleCArIGNvbHNwYW4pO1xuICAgICAgcmV0dXJuIHdpZHRoQXJyLnJlZHVjZShmdW5jdGlvbiAoYWNjLCB3aWR0aCkge1xuICAgICAgICByZXR1cm4gYWNjICsgd2lkdGg7XG4gICAgICB9LCAtMSk7XG4gICAgfSxcbiAgICBoYW5kbGVDZWxsTW91c2VFbnRlcjogZnVuY3Rpb24gaGFuZGxlQ2VsbE1vdXNlRW50ZXIoZXZlbnQsIHJvdykge1xuICAgICAgdmFyIHRhYmxlID0gdGhpcy50YWJsZTtcbiAgICAgIHZhciBjZWxsID0gZ2V0Q2VsbChldmVudCk7XG5cbiAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgIHZhciBjb2x1bW4gPSBnZXRDb2x1bW5CeUNlbGwodGFibGUsIGNlbGwpO1xuICAgICAgICB2YXIgaG92ZXJTdGF0ZSA9IHRhYmxlLmhvdmVyU3RhdGUgPSB7IGNlbGw6IGNlbGwsIGNvbHVtbjogY29sdW1uLCByb3c6IHJvdyB9O1xuICAgICAgICB0YWJsZS4kZW1pdCgnY2VsbC1tb3VzZS1lbnRlcicsIGhvdmVyU3RhdGUucm93LCBob3ZlclN0YXRlLmNvbHVtbiwgaG92ZXJTdGF0ZS5jZWxsLCBldmVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIOWIpOaWreaYr+WQpnRleHQtb3ZlcmZsb3csIOWmguaenOaYr+WwseaYvuekunRvb2x0aXBcbiAgICAgIHZhciBjZWxsQ2hpbGQgPSBldmVudC50YXJnZXQucXVlcnlTZWxlY3RvcignLmNlbGwnKTtcbiAgICAgIGlmICghKE9iamVjdChkb21fW1wiaGFzQ2xhc3NcIl0pKGNlbGxDaGlsZCwgJ2VsLXRvb2x0aXAnKSAmJiBjZWxsQ2hpbGQuY2hpbGROb2Rlcy5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIHVzZSByYW5nZSB3aWR0aCBpbnN0ZWFkIG9mIHNjcm9sbFdpZHRoIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB0ZXh0IGlzIG92ZXJmbG93aW5nXG4gICAgICAvLyB0byBhZGRyZXNzIGEgcG90ZW50aWFsIEZpcmVGb3ggYnVnOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0NTQzI2MzXG4gICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgcmFuZ2Uuc2V0U3RhcnQoY2VsbENoaWxkLCAwKTtcbiAgICAgIHJhbmdlLnNldEVuZChjZWxsQ2hpbGQsIGNlbGxDaGlsZC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICB2YXIgcmFuZ2VXaWR0aCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgdmFyIHBhZGRpbmcgPSAocGFyc2VJbnQoT2JqZWN0KGRvbV9bXCJnZXRTdHlsZVwiXSkoY2VsbENoaWxkLCAncGFkZGluZ0xlZnQnKSwgMTApIHx8IDApICsgKHBhcnNlSW50KE9iamVjdChkb21fW1wiZ2V0U3R5bGVcIl0pKGNlbGxDaGlsZCwgJ3BhZGRpbmdSaWdodCcpLCAxMCkgfHwgMCk7XG4gICAgICBpZiAoKHJhbmdlV2lkdGggKyBwYWRkaW5nID4gY2VsbENoaWxkLm9mZnNldFdpZHRoIHx8IGNlbGxDaGlsZC5zY3JvbGxXaWR0aCA+IGNlbGxDaGlsZC5vZmZzZXRXaWR0aCkgJiYgdGhpcy4kcmVmcy50b29sdGlwKSB7XG4gICAgICAgIHZhciB0b29sdGlwID0gdGhpcy4kcmVmcy50b29sdGlwO1xuICAgICAgICAvLyBUT0RPIOS8muW8lei1t+aVtOS4qiBUYWJsZSDnmoTph43mlrDmuLLmn5PvvIzpnIDopoHkvJjljJZcbiAgICAgICAgdGhpcy50b29sdGlwQ29udGVudCA9IGNlbGwuaW5uZXJUZXh0IHx8IGNlbGwudGV4dENvbnRlbnQ7XG4gICAgICAgIHRvb2x0aXAucmVmZXJlbmNlRWxtID0gY2VsbDtcbiAgICAgICAgdG9vbHRpcC4kcmVmcy5wb3BwZXIgJiYgKHRvb2x0aXAuJHJlZnMucG9wcGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpO1xuICAgICAgICB0b29sdGlwLmRvRGVzdHJveSgpO1xuICAgICAgICB0b29sdGlwLnNldEV4cGVjdGVkU3RhdGUodHJ1ZSk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVUb29sdGlwKHRvb2x0aXApO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlQ2VsbE1vdXNlTGVhdmU6IGZ1bmN0aW9uIGhhbmRsZUNlbGxNb3VzZUxlYXZlKGV2ZW50KSB7XG4gICAgICB2YXIgdG9vbHRpcCA9IHRoaXMuJHJlZnMudG9vbHRpcDtcbiAgICAgIGlmICh0b29sdGlwKSB7XG4gICAgICAgIHRvb2x0aXAuc2V0RXhwZWN0ZWRTdGF0ZShmYWxzZSk7XG4gICAgICAgIHRvb2x0aXAuaGFuZGxlQ2xvc2VQb3BwZXIoKTtcbiAgICAgIH1cbiAgICAgIHZhciBjZWxsID0gZ2V0Q2VsbChldmVudCk7XG4gICAgICBpZiAoIWNlbGwpIHJldHVybjtcblxuICAgICAgdmFyIG9sZEhvdmVyU3RhdGUgPSB0aGlzLnRhYmxlLmhvdmVyU3RhdGUgfHwge307XG4gICAgICB0aGlzLnRhYmxlLiRlbWl0KCdjZWxsLW1vdXNlLWxlYXZlJywgb2xkSG92ZXJTdGF0ZS5yb3csIG9sZEhvdmVyU3RhdGUuY29sdW1uLCBvbGRIb3ZlclN0YXRlLmNlbGwsIGV2ZW50KTtcbiAgICB9LFxuXG5cbiAgICBoYW5kbGVNb3VzZUVudGVyOiBkZWJvdW5jZV9kZWZhdWx0KCkoMzAsIGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgdGhpcy5zdG9yZS5jb21taXQoJ3NldEhvdmVyUm93JywgaW5kZXgpO1xuICAgIH0pLFxuXG4gICAgaGFuZGxlTW91c2VMZWF2ZTogZGVib3VuY2VfZGVmYXVsdCgpKDMwLCBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnN0b3JlLmNvbW1pdCgnc2V0SG92ZXJSb3cnLCBudWxsKTtcbiAgICB9KSxcblxuICAgIGhhbmRsZUNvbnRleHRNZW51OiBmdW5jdGlvbiBoYW5kbGVDb250ZXh0TWVudShldmVudCwgcm93KSB7XG4gICAgICB0aGlzLmhhbmRsZUV2ZW50KGV2ZW50LCByb3csICdjb250ZXh0bWVudScpO1xuICAgIH0sXG4gICAgaGFuZGxlRG91YmxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZURvdWJsZUNsaWNrKGV2ZW50LCByb3cpIHtcbiAgICAgIHRoaXMuaGFuZGxlRXZlbnQoZXZlbnQsIHJvdywgJ2RibGNsaWNrJyk7XG4gICAgfSxcbiAgICBoYW5kbGVDbGljazogZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQsIHJvdykge1xuICAgICAgdGhpcy5zdG9yZS5jb21taXQoJ3NldEN1cnJlbnRSb3cnLCByb3cpO1xuICAgICAgdGhpcy5oYW5kbGVFdmVudChldmVudCwgcm93LCAnY2xpY2snKTtcbiAgICB9LFxuICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbiBoYW5kbGVFdmVudChldmVudCwgcm93LCBuYW1lKSB7XG4gICAgICB2YXIgdGFibGUgPSB0aGlzLnRhYmxlO1xuICAgICAgdmFyIGNlbGwgPSBnZXRDZWxsKGV2ZW50KTtcbiAgICAgIHZhciBjb2x1bW4gPSB2b2lkIDA7XG4gICAgICBpZiAoY2VsbCkge1xuICAgICAgICBjb2x1bW4gPSBnZXRDb2x1bW5CeUNlbGwodGFibGUsIGNlbGwpO1xuICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgICAgdGFibGUuJGVtaXQoJ2NlbGwtJyArIG5hbWUsIHJvdywgY29sdW1uLCBjZWxsLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRhYmxlLiRlbWl0KCdyb3ctJyArIG5hbWUsIHJvdywgY29sdW1uLCBldmVudCk7XG4gICAgfSxcbiAgICByb3dSZW5kZXI6IGZ1bmN0aW9uIHJvd1JlbmRlcihyb3csICRpbmRleCwgdHJlZVJvd0RhdGEpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICB2YXIgaCA9IHRoaXMuJGNyZWF0ZUVsZW1lbnQ7XG4gICAgICB2YXIgdHJlZUluZGVudCA9IHRoaXMudHJlZUluZGVudCxcbiAgICAgICAgICBjb2x1bW5zID0gdGhpcy5jb2x1bW5zLFxuICAgICAgICAgIGZpcnN0RGVmYXVsdENvbHVtbkluZGV4ID0gdGhpcy5maXJzdERlZmF1bHRDb2x1bW5JbmRleDtcblxuICAgICAgdmFyIHJvd0NsYXNzZXMgPSB0aGlzLmdldFJvd0NsYXNzKHJvdywgJGluZGV4KTtcbiAgICAgIHZhciBkaXNwbGF5ID0gdHJ1ZTtcbiAgICAgIGlmICh0cmVlUm93RGF0YSkge1xuICAgICAgICByb3dDbGFzc2VzLnB1c2goJ2VsLXRhYmxlX19yb3ctLWxldmVsLScgKyB0cmVlUm93RGF0YS5sZXZlbCk7XG4gICAgICAgIGRpc3BsYXkgPSB0cmVlUm93RGF0YS5kaXNwbGF5O1xuICAgICAgfVxuICAgICAgLy8g5oyH5LukIHYtc2hvdyDkvJropobnm5Ygcm93LXN0eWxlIOS4rSBkaXNwbGF5XG4gICAgICAvLyDkvb/nlKggOnN0eWxlIOS7o+abvyB2LXNob3cgaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9pc3N1ZXMvMTY5OTVcbiAgICAgIHZhciBkaXNwbGF5U3R5bGUgPSBkaXNwbGF5ID8gbnVsbCA6IHtcbiAgICAgICAgZGlzcGxheTogJ25vbmUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGgodGFibGVfcm93LCB7XG4gICAgICAgIHN0eWxlOiBbZGlzcGxheVN0eWxlLCB0aGlzLmdldFJvd1N0eWxlKHJvdywgJGluZGV4KV0sXG4gICAgICAgICdjbGFzcyc6IHJvd0NsYXNzZXMsXG4gICAgICAgIGtleTogdGhpcy5nZXRLZXlPZlJvdyhyb3csICRpbmRleCksXG4gICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAgJ2RibGNsaWNrJzogZnVuY3Rpb24gZGJsY2xpY2soJGV2ZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXM0LmhhbmRsZURvdWJsZUNsaWNrKCRldmVudCwgcm93KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICdjbGljayc6IGZ1bmN0aW9uIGNsaWNrKCRldmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzNC5oYW5kbGVDbGljaygkZXZlbnQsIHJvdyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAnY29udGV4dG1lbnUnOiBmdW5jdGlvbiBjb250ZXh0bWVudSgkZXZlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczQuaGFuZGxlQ29udGV4dE1lbnUoJGV2ZW50LCByb3cpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgJ21vdXNlZW50ZXInOiBmdW5jdGlvbiBtb3VzZWVudGVyKF8pIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczQuaGFuZGxlTW91c2VFbnRlcigkaW5kZXgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgJ21vdXNlbGVhdmUnOiB0aGlzLmhhbmRsZU1vdXNlTGVhdmVcbiAgICAgICAgfSxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLFxuICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgIGluZGV4OiAkaW5kZXgsXG4gICAgICAgICAgc3RvcmU6IHRoaXMuc3RvcmUsXG4gICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0IHx8IHRoaXMudGFibGUuJHZub2RlLmNvbnRleHQsXG4gICAgICAgICAgZmlyc3REZWZhdWx0Q29sdW1uSW5kZXg6IGZpcnN0RGVmYXVsdENvbHVtbkluZGV4LFxuICAgICAgICAgIHRyZWVSb3dEYXRhOiB0cmVlUm93RGF0YSxcbiAgICAgICAgICB0cmVlSW5kZW50OiB0cmVlSW5kZW50LFxuICAgICAgICAgIGNvbHVtbnNIaWRkZW46IHRoaXMuY29sdW1uc0hpZGRlbixcbiAgICAgICAgICBnZXRTcGFuOiB0aGlzLmdldFNwYW4sXG4gICAgICAgICAgZ2V0Q29sc3BhblJlYWxXaWR0aDogdGhpcy5nZXRDb2xzcGFuUmVhbFdpZHRoLFxuICAgICAgICAgIGdldENlbGxTdHlsZTogdGhpcy5nZXRDZWxsU3R5bGUsXG4gICAgICAgICAgZ2V0Q2VsbENsYXNzOiB0aGlzLmdldENlbGxDbGFzcyxcbiAgICAgICAgICBoYW5kbGVDZWxsTW91c2VFbnRlcjogdGhpcy5oYW5kbGVDZWxsTW91c2VFbnRlcixcbiAgICAgICAgICBoYW5kbGVDZWxsTW91c2VMZWF2ZTogdGhpcy5oYW5kbGVDZWxsTW91c2VMZWF2ZSxcbiAgICAgICAgICBpc1NlbGVjdGVkOiB0aGlzLnN0b3JlLmlzU2VsZWN0ZWQocm93KSxcbiAgICAgICAgICBpc0V4cGFuZGVkOiB0aGlzLnN0b3JlLnN0YXRlcy5leHBhbmRSb3dzLmluZGV4T2Yocm93KSA+IC0xLFxuICAgICAgICAgIGZpeGVkOiB0aGlzLmZpeGVkXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgd3JhcHBlZFJvd1JlbmRlcjogZnVuY3Rpb24gd3JhcHBlZFJvd1JlbmRlcihyb3csICRpbmRleCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHZhciBoID0gdGhpcy4kY3JlYXRlRWxlbWVudDtcblxuICAgICAgdmFyIHN0b3JlID0gdGhpcy5zdG9yZTtcbiAgICAgIHZhciBpc1Jvd0V4cGFuZGVkID0gc3RvcmUuaXNSb3dFeHBhbmRlZCxcbiAgICAgICAgICBhc3NlcnRSb3dLZXkgPSBzdG9yZS5hc3NlcnRSb3dLZXk7XG4gICAgICB2YXIgX3N0b3JlJHN0YXRlcyA9IHN0b3JlLnN0YXRlcyxcbiAgICAgICAgICB0cmVlRGF0YSA9IF9zdG9yZSRzdGF0ZXMudHJlZURhdGEsXG4gICAgICAgICAgbGF6eVRyZWVOb2RlTWFwID0gX3N0b3JlJHN0YXRlcy5sYXp5VHJlZU5vZGVNYXAsXG4gICAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lID0gX3N0b3JlJHN0YXRlcy5jaGlsZHJlbkNvbHVtbk5hbWUsXG4gICAgICAgICAgcm93S2V5ID0gX3N0b3JlJHN0YXRlcy5yb3dLZXk7XG5cbiAgICAgIGlmICh0aGlzLmhhc0V4cGFuZENvbHVtbiAmJiBpc1Jvd0V4cGFuZGVkKHJvdykpIHtcbiAgICAgICAgdmFyIHJlbmRlckV4cGFuZGVkID0gdGhpcy50YWJsZS5yZW5kZXJFeHBhbmRlZDtcbiAgICAgICAgdmFyIHRyID0gdGhpcy5yb3dSZW5kZXIocm93LCAkaW5kZXgpO1xuICAgICAgICBpZiAoIXJlbmRlckV4cGFuZGVkKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW0VsZW1lbnQgRXJyb3JdcmVuZGVyRXhwYW5kZWQgaXMgcmVxdWlyZWQuJyk7XG4gICAgICAgICAgcmV0dXJuIHRyO1xuICAgICAgICB9XG4gICAgICAgIC8vIOS9v+eUqOS6jOe7tOaVsOe7hO+8jOmBv+WFjeS/ruaUuSAkaW5kZXhcbiAgICAgICAgcmV0dXJuIFtbdHIsIGgoXG4gICAgICAgICAgJ3RyJyxcbiAgICAgICAgICB7IGtleTogJ2V4cGFuZGVkLXJvd19fJyArIHRyLmtleSB9LFxuICAgICAgICAgIFtoKFxuICAgICAgICAgICAgJ3RkJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHsgY29sc3BhbjogdGhpcy5jb2x1bW5zQ291bnQgfSxcbiAgICAgICAgICAgICAgJ2NsYXNzJzogJ2VsLXRhYmxlX19jZWxsIGVsLXRhYmxlX19leHBhbmRlZC1jZWxsJyB9LFxuICAgICAgICAgICAgW3JlbmRlckV4cGFuZGVkKHRoaXMuJGNyZWF0ZUVsZW1lbnQsIHsgcm93OiByb3csICRpbmRleDogJGluZGV4LCBzdG9yZTogdGhpcy5zdG9yZSB9KV1cbiAgICAgICAgICApXVxuICAgICAgICApXV07XG4gICAgICB9IGVsc2UgaWYgKE9iamVjdC5rZXlzKHRyZWVEYXRhKS5sZW5ndGgpIHtcbiAgICAgICAgYXNzZXJ0Um93S2V5KCk7XG4gICAgICAgIC8vIFRyZWVUYWJsZSDml7bvvIxyb3dLZXkg5b+F6aG755Sx55So5oi36K6+5a6a77yM5LiN5L2/55SoIGdldEtleU9mUm93IOiuoeeul1xuICAgICAgICAvLyDlnKjosIPnlKggcm93UmVuZGVyIOWHveaVsOaXtu+8jOS7jeeEtuS8muiuoeeulyByb3dLZXnvvIzkuI3lpKrlpb3nmoTmk43kvZxcbiAgICAgICAgdmFyIGtleSA9IGdldFJvd0lkZW50aXR5KHJvdywgcm93S2V5KTtcbiAgICAgICAgdmFyIGN1ciA9IHRyZWVEYXRhW2tleV07XG4gICAgICAgIHZhciB0cmVlUm93RGF0YSA9IG51bGw7XG4gICAgICAgIGlmIChjdXIpIHtcbiAgICAgICAgICB0cmVlUm93RGF0YSA9IHtcbiAgICAgICAgICAgIGV4cGFuZGVkOiBjdXIuZXhwYW5kZWQsXG4gICAgICAgICAgICBsZXZlbDogY3VyLmxldmVsLFxuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXIubGF6eSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGN1ci5sb2FkZWQgPT09ICdib29sZWFuJyAmJiBjdXIubG9hZGVkKSB7XG4gICAgICAgICAgICAgIHRyZWVSb3dEYXRhLm5vTGF6eUNoaWxkcmVuID0gIShjdXIuY2hpbGRyZW4gJiYgY3VyLmNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cmVlUm93RGF0YS5sb2FkaW5nID0gY3VyLmxvYWRpbmc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciB0bXAgPSBbdGhpcy5yb3dSZW5kZXIocm93LCAkaW5kZXgsIHRyZWVSb3dEYXRhKV07XG4gICAgICAgIC8vIOa4suafk+W1jOWll+aVsOaNrlxuICAgICAgICBpZiAoY3VyKSB7XG4gICAgICAgICAgLy8gY3VycmVudFJvdyDorrDlvZXnmoTmmK8gaW5kZXjvvIzmiYDku6Xov5jpnIDkuLvliqjlop7liqAgVHJlZVRhYmxlIOeahCBpbmRleFxuICAgICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgICB2YXIgdHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShjaGlsZHJlbiwgcGFyZW50KSB7XG4gICAgICAgICAgICBpZiAoIShjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGggJiYgcGFyZW50KSkgcmV0dXJuO1xuICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAvLyDniLboioLngrnnmoQgZGlzcGxheSDnirbmgIHlvbHlk43lrZDoioLngrnnmoTmmL7npLrnirbmgIFcbiAgICAgICAgICAgICAgdmFyIGlubmVyVHJlZVJvd0RhdGEgPSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogcGFyZW50LmRpc3BsYXkgJiYgcGFyZW50LmV4cGFuZGVkLFxuICAgICAgICAgICAgICAgIGxldmVsOiBwYXJlbnQubGV2ZWwgKyAxXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHZhciBjaGlsZEtleSA9IGdldFJvd0lkZW50aXR5KG5vZGUsIHJvd0tleSk7XG4gICAgICAgICAgICAgIGlmIChjaGlsZEtleSA9PT0gdW5kZWZpbmVkIHx8IGNoaWxkS2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmb3IgbmVzdGVkIGRhdGEgaXRlbSwgcm93LWtleSBpcyByZXF1aXJlZC4nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjdXIgPSB0YWJsZV9ib2R5X2V4dGVuZHMoe30sIHRyZWVEYXRhW2NoaWxkS2V5XSk7XG4gICAgICAgICAgICAgIC8vIOWvueS6juW9k+WJjeiKgueCue+8jOWIhuaIkOacieaXoOWtkOiKgueCueS4pOenjeaDheWGteOAglxuICAgICAgICAgICAgICAvLyDlpoLmnpzljIXlkKvlrZDoioLngrnnmoTvvIzorr7nva4gZXhwYW5kZWQg5bGe5oCn44CCXG4gICAgICAgICAgICAgIC8vIOWvueS6juWug+WtkOiKgueCueeahCBkaXNwbGF5IOWxnuaAp+eUseWug+acrOi6q+eahCBleHBhbmRlZCDkuI4gZGlzcGxheSDlhbHlkIzlhrPlrprjgIJcbiAgICAgICAgICAgICAgaWYgKGN1cikge1xuICAgICAgICAgICAgICAgIGlubmVyVHJlZVJvd0RhdGEuZXhwYW5kZWQgPSBjdXIuZXhwYW5kZWQ7XG4gICAgICAgICAgICAgICAgLy8g5oeS5Yqg6L2955qE5p+Q5Lqb6IqC54K577yMbGV2ZWwg5pyq55+lXG4gICAgICAgICAgICAgICAgY3VyLmxldmVsID0gY3VyLmxldmVsIHx8IGlubmVyVHJlZVJvd0RhdGEubGV2ZWw7XG4gICAgICAgICAgICAgICAgY3VyLmRpc3BsYXkgPSAhIShjdXIuZXhwYW5kZWQgJiYgaW5uZXJUcmVlUm93RGF0YS5kaXNwbGF5KTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGN1ci5sYXp5ID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3VyLmxvYWRlZCA9PT0gJ2Jvb2xlYW4nICYmIGN1ci5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJUcmVlUm93RGF0YS5ub0xhenlDaGlsZHJlbiA9ICEoY3VyLmNoaWxkcmVuICYmIGN1ci5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaW5uZXJUcmVlUm93RGF0YS5sb2FkaW5nID0gY3VyLmxvYWRpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgdG1wLnB1c2goX3RoaXM1LnJvd1JlbmRlcihub2RlLCAkaW5kZXggKyBpLCBpbm5lclRyZWVSb3dEYXRhKSk7XG4gICAgICAgICAgICAgIGlmIChjdXIpIHtcbiAgICAgICAgICAgICAgICB2YXIgX25vZGVzID0gbGF6eVRyZWVOb2RlTWFwW2NoaWxkS2V5XSB8fCBub2RlW2NoaWxkcmVuQ29sdW1uTmFtZV07XG4gICAgICAgICAgICAgICAgdHJhdmVyc2UoX25vZGVzLCBjdXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIOWvueS6jiByb290IOiKgueCue+8jGRpc3BsYXkg5LiA5a6a5Li6IHRydWVcbiAgICAgICAgICBjdXIuZGlzcGxheSA9IHRydWU7XG4gICAgICAgICAgdmFyIG5vZGVzID0gbGF6eVRyZWVOb2RlTWFwW2tleV0gfHwgcm93W2NoaWxkcmVuQ29sdW1uTmFtZV07XG4gICAgICAgICAgdHJhdmVyc2Uobm9kZXMsIGN1cik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRtcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvd1JlbmRlcihyb3csICRpbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdGFibGUvc3JjL2ZpbHRlci1wYW5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2YyYzkxOWYmXG52YXIgZmlsdGVyX3BhbmVsdnVlX3R5cGVfdGVtcGxhdGVfaWRfN2YyYzkxOWZfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwidHJhbnNpdGlvblwiLCB7IGF0dHJzOiB7IG5hbWU6IFwiZWwtem9vbS1pbi10b3BcIiB9IH0sIFtcbiAgICBfdm0ubXVsdGlwbGVcbiAgICAgID8gX2MoXG4gICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImNsaWNrb3V0c2lkZVwiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1jbGlja291dHNpZGVcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmhhbmRsZU91dHNpZGVDbGljayxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImhhbmRsZU91dHNpZGVDbGlja1wiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd1BvcHBlcixcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dQb3BwZXJcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGFibGUtZmlsdGVyXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlLWZpbHRlcl9fY29udGVudFwiIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZWwtc2Nyb2xsYmFyXCIsXG4gICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IFwid3JhcC1jbGFzc1wiOiBcImVsLXRhYmxlLWZpbHRlcl9fd3JhcFwiIH0gfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJlbC1jaGVja2JveC1ncm91cFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlLWZpbHRlcl9fY2hlY2tib3gtZ3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZmlsdGVyZWRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5maWx0ZXJlZFZhbHVlID0gJCR2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiZmlsdGVyZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLmZpbHRlcnMsIGZ1bmN0aW9uKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImVsLWNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiBmaWx0ZXIudmFsdWUsIGF0dHJzOiB7IGxhYmVsOiBmaWx0ZXIudmFsdWUgfSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhmaWx0ZXIudGV4dCkpXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlLWZpbHRlcl9fYm90dG9tXCIgfSwgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiB7IFwiaXMtZGlzYWJsZWRcIjogX3ZtLmZpbHRlcmVkVmFsdWUubGVuZ3RoID09PSAwIH0sXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBkaXNhYmxlZDogX3ZtLmZpbHRlcmVkVmFsdWUubGVuZ3RoID09PSAwIH0sXG4gICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmhhbmRsZUNvbmZpcm0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJlbC50YWJsZS5jb25maXJtRmlsdGVyXCIpKSldXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF9jKFwiYnV0dG9uXCIsIHsgb246IHsgY2xpY2s6IF92bS5oYW5kbGVSZXNldCB9IH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwiZWwudGFibGUucmVzZXRGaWx0ZXJcIikpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdXG4gICAgICAgIClcbiAgICAgIDogX2MoXG4gICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImNsaWNrb3V0c2lkZVwiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1jbGlja291dHNpZGVcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmhhbmRsZU91dHNpZGVDbGljayxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImhhbmRsZU91dHNpZGVDbGlja1wiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd1BvcHBlcixcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dQb3BwZXJcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGFibGUtZmlsdGVyXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcInVsXCIsXG4gICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtdGFibGUtZmlsdGVyX19saXN0XCIgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJsaVwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10YWJsZS1maWx0ZXJfX2xpc3QtaXRlbVwiLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICAgICAgICAgIFwiaXMtYWN0aXZlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uZmlsdGVyVmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmZpbHRlclZhbHVlID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZVNlbGVjdChudWxsKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwiZWwudGFibGUuY2xlYXJGaWx0ZXJcIikpKV1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIF92bS5fbChfdm0uZmlsdGVycywgZnVuY3Rpb24oZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogZmlsdGVyLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRhYmxlLWZpbHRlcl9fbGlzdC1pdGVtXCIsXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpcy1hY3RpdmVcIjogX3ZtLmlzQWN0aXZlKGZpbHRlcikgfSxcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBsYWJlbDogZmlsdGVyLnZhbHVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZVNlbGVjdChmaWx0ZXIudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhmaWx0ZXIudGV4dCkpXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdXG4gICAgICAgIClcbiAgXSlcbn1cbnZhciBmaWx0ZXJfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF83ZjJjOTE5Zl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuZmlsdGVyX3BhbmVsdnVlX3R5cGVfdGVtcGxhdGVfaWRfN2YyYzkxOWZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJsZS9zcmMvZmlsdGVyLXBhbmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjJjOTE5ZiZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJsZS9zcmMvZHJvcGRvd24uanNcblxudmFyIGRyb3Bkb3ducyA9IFtdO1xuXG4hZXh0ZXJuYWxfdnVlX2RlZmF1bHQuYS5wcm90b3R5cGUuJGlzU2VydmVyICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGRyb3Bkb3ducy5mb3JFYWNoKGZ1bmN0aW9uIChkcm9wZG93bikge1xuICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgaWYgKCFkcm9wZG93biB8fCAhZHJvcGRvd24uJGVsKSByZXR1cm47XG4gICAgaWYgKHRhcmdldCA9PT0gZHJvcGRvd24uJGVsIHx8IGRyb3Bkb3duLiRlbC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyb3Bkb3duLmhhbmRsZU91dHNpZGVDbGljayAmJiBkcm9wZG93bi5oYW5kbGVPdXRzaWRlQ2xpY2soZXZlbnQpO1xuICB9KTtcbn0pO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfZHJvcGRvd24gPSAoe1xuICBvcGVuOiBmdW5jdGlvbiBvcGVuKGluc3RhbmNlKSB7XG4gICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICBkcm9wZG93bnMucHVzaChpbnN0YW5jZSk7XG4gICAgfVxuICB9LFxuICBjbG9zZTogZnVuY3Rpb24gY2xvc2UoaW5zdGFuY2UpIHtcbiAgICB2YXIgaW5kZXggPSBkcm9wZG93bnMuaW5kZXhPZihpbnN0YW5jZSk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgZHJvcGRvd25zLnNwbGljZShpbnN0YW5jZSwgMSk7XG4gICAgfVxuICB9XG59KTtcbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9jaGVja2JveC1ncm91cFwiXG52YXIgY2hlY2tib3hfZ3JvdXBfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMik7XG52YXIgY2hlY2tib3hfZ3JvdXBfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY2hlY2tib3hfZ3JvdXBfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdGFibGUvc3JjL2ZpbHRlci1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZmlsdGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsVGFibGVGaWx0ZXJQYW5lbCcsXG5cbiAgbWl4aW5zOiBbdnVlX3BvcHBlcl9kZWZhdWx0LmEsIGxvY2FsZV9kZWZhdWx0LmFdLFxuXG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBDbGlja291dHNpZGU6IGNsaWNrb3V0c2lkZV9kZWZhdWx0LmFcbiAgfSxcblxuICBjb21wb25lbnRzOiB7XG4gICAgRWxDaGVja2JveDogY2hlY2tib3hfZGVmYXVsdC5hLFxuICAgIEVsQ2hlY2tib3hHcm91cDogY2hlY2tib3hfZ3JvdXBfZGVmYXVsdC5hLFxuICAgIEVsU2Nyb2xsYmFyOiBzY3JvbGxiYXJfZGVmYXVsdC5hXG4gIH0sXG5cbiAgcHJvcHM6IHtcbiAgICBwbGFjZW1lbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdib3R0b20tZW5kJ1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaXNBY3RpdmU6IGZ1bmN0aW9uIGlzQWN0aXZlKGZpbHRlcikge1xuICAgICAgcmV0dXJuIGZpbHRlci52YWx1ZSA9PT0gdGhpcy5maWx0ZXJWYWx1ZTtcbiAgICB9LFxuICAgIGhhbmRsZU91dHNpZGVDbGljazogZnVuY3Rpb24gaGFuZGxlT3V0c2lkZUNsaWNrKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLnNob3dQb3BwZXIgPSBmYWxzZTtcbiAgICAgIH0sIDE2KTtcbiAgICB9LFxuICAgIGhhbmRsZUNvbmZpcm06IGZ1bmN0aW9uIGhhbmRsZUNvbmZpcm0oKSB7XG4gICAgICB0aGlzLmNvbmZpcm1GaWx0ZXIodGhpcy5maWx0ZXJlZFZhbHVlKTtcbiAgICAgIHRoaXMuaGFuZGxlT3V0c2lkZUNsaWNrKCk7XG4gICAgfSxcbiAgICBoYW5kbGVSZXNldDogZnVuY3Rpb24gaGFuZGxlUmVzZXQoKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWUgPSBbXTtcbiAgICAgIHRoaXMuY29uZmlybUZpbHRlcih0aGlzLmZpbHRlcmVkVmFsdWUpO1xuICAgICAgdGhpcy5oYW5kbGVPdXRzaWRlQ2xpY2soKTtcbiAgICB9LFxuICAgIGhhbmRsZVNlbGVjdDogZnVuY3Rpb24gaGFuZGxlU2VsZWN0KGZpbHRlclZhbHVlKSB7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlID0gZmlsdGVyVmFsdWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZmlsdGVyVmFsdWUgIT09ICd1bmRlZmluZWQnICYmIGZpbHRlclZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuY29uZmlybUZpbHRlcih0aGlzLmZpbHRlcmVkVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25maXJtRmlsdGVyKFtdKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYW5kbGVPdXRzaWRlQ2xpY2soKTtcbiAgICB9LFxuICAgIGNvbmZpcm1GaWx0ZXI6IGZ1bmN0aW9uIGNvbmZpcm1GaWx0ZXIoZmlsdGVyZWRWYWx1ZSkge1xuICAgICAgdGhpcy50YWJsZS5zdG9yZS5jb21taXQoJ2ZpbHRlckNoYW5nZScsIHtcbiAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgdmFsdWVzOiBmaWx0ZXJlZFZhbHVlXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFibGUuc3RvcmUudXBkYXRlQWxsU2VsZWN0ZWQoKTtcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFibGU6IG51bGwsXG4gICAgICBjZWxsOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB7XG4gICAgZmlsdGVyczogZnVuY3Rpb24gZmlsdGVycygpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbHVtbiAmJiB0aGlzLmNvbHVtbi5maWx0ZXJzO1xuICAgIH0sXG5cblxuICAgIGZpbHRlclZhbHVlOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmNvbHVtbi5maWx0ZXJlZFZhbHVlIHx8IFtdKVswXTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJlZFZhbHVlKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZS5zcGxpY2UoMCwgMSwgdmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkVmFsdWUuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBmaWx0ZXJlZFZhbHVlOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmZpbHRlcmVkVmFsdWUgfHwgW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbikge1xuICAgICAgICAgIHRoaXMuY29sdW1uLmZpbHRlcmVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBtdWx0aXBsZTogZnVuY3Rpb24gbXVsdGlwbGUoKSB7XG4gICAgICBpZiAodGhpcy5jb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmZpbHRlck11bHRpcGxlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9LFxuXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICB0aGlzLnBvcHBlckVsbSA9IHRoaXMuJGVsO1xuICAgIHRoaXMucmVmZXJlbmNlRWxtID0gdGhpcy5jZWxsO1xuICAgIHRoaXMudGFibGUuYm9keVdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnVwZGF0ZVBvcHBlcigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kd2F0Y2goJ3Nob3dQb3BwZXInLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmIChfdGhpczIuY29sdW1uKSBfdGhpczIuY29sdW1uLmZpbHRlck9wZW5lZCA9IHZhbHVlO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHNyY19kcm9wZG93bi5vcGVuKF90aGlzMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzcmNfZHJvcGRvd24uY2xvc2UoX3RoaXMyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHNob3dQb3BwZXI6IGZ1bmN0aW9uIHNob3dQb3BwZXIodmFsKSB7XG4gICAgICBpZiAodmFsID09PSB0cnVlICYmIHBhcnNlSW50KHRoaXMucG9wcGVySlMuX3BvcHBlci5zdHlsZS56SW5kZXgsIDEwKSA8IHBvcHVwX1tcIlBvcHVwTWFuYWdlclwiXS56SW5kZXgpIHtcbiAgICAgICAgdGhpcy5wb3BwZXJKUy5fcG9wcGVyLnN0eWxlLnpJbmRleCA9IHBvcHVwX1tcIlBvcHVwTWFuYWdlclwiXS5uZXh0WkluZGV4KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFibGUvc3JjL2ZpbHRlci1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2ZpbHRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChmaWx0ZXJfcGFuZWx2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFibGUvc3JjL2ZpbHRlci1wYW5lbC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBmaWx0ZXJfcGFuZWxfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfZmlsdGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBmaWx0ZXJfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF83ZjJjOTE5Zl9yZW5kZXIsXG4gIGZpbHRlcl9wYW5lbHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzdmMmM5MTlmX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgZmlsdGVyX3BhbmVsX2FwaTsgfVxuZmlsdGVyX3BhbmVsX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvdGFibGUvc3JjL2ZpbHRlci1wYW5lbC52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZmlsdGVyX3BhbmVsID0gKGZpbHRlcl9wYW5lbF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy90YWJsZS1oZWFkZXIuanNcbnZhciB0YWJsZV9oZWFkZXJfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cblxuXG5cblxuXG5cblxudmFyIGdldEFsbENvbHVtbnMgPSBmdW5jdGlvbiBnZXRBbGxDb2x1bW5zKGNvbHVtbnMpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBjb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbikge1xuICAgIGlmIChjb2x1bW4uY2hpbGRyZW4pIHtcbiAgICAgIHJlc3VsdC5wdXNoKGNvbHVtbik7XG4gICAgICByZXN1bHQucHVzaC5hcHBseShyZXN1bHQsIGdldEFsbENvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKGNvbHVtbik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBjb252ZXJ0VG9Sb3dzID0gZnVuY3Rpb24gY29udmVydFRvUm93cyhvcmlnaW5Db2x1bW5zKSB7XG4gIHZhciBtYXhMZXZlbCA9IDE7XG4gIHZhciB0cmF2ZXJzZSA9IGZ1bmN0aW9uIHRyYXZlcnNlKGNvbHVtbiwgcGFyZW50KSB7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgY29sdW1uLmxldmVsID0gcGFyZW50LmxldmVsICsgMTtcbiAgICAgIGlmIChtYXhMZXZlbCA8IGNvbHVtbi5sZXZlbCkge1xuICAgICAgICBtYXhMZXZlbCA9IGNvbHVtbi5sZXZlbDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbHVtbi5jaGlsZHJlbikge1xuICAgICAgdmFyIGNvbFNwYW4gPSAwO1xuICAgICAgY29sdW1uLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKHN1YkNvbHVtbikge1xuICAgICAgICB0cmF2ZXJzZShzdWJDb2x1bW4sIGNvbHVtbik7XG4gICAgICAgIGNvbFNwYW4gKz0gc3ViQ29sdW1uLmNvbFNwYW47XG4gICAgICB9KTtcbiAgICAgIGNvbHVtbi5jb2xTcGFuID0gY29sU3BhbjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1uLmNvbFNwYW4gPSAxO1xuICAgIH1cbiAgfTtcblxuICBvcmlnaW5Db2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbikge1xuICAgIGNvbHVtbi5sZXZlbCA9IDE7XG4gICAgdHJhdmVyc2UoY29sdW1uKTtcbiAgfSk7XG5cbiAgdmFyIHJvd3MgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXhMZXZlbDsgaSsrKSB7XG4gICAgcm93cy5wdXNoKFtdKTtcbiAgfVxuXG4gIHZhciBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhvcmlnaW5Db2x1bW5zKTtcblxuICBhbGxDb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbikge1xuICAgIGlmICghY29sdW1uLmNoaWxkcmVuKSB7XG4gICAgICBjb2x1bW4ucm93U3BhbiA9IG1heExldmVsIC0gY29sdW1uLmxldmVsICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1uLnJvd1NwYW4gPSAxO1xuICAgIH1cbiAgICByb3dzW2NvbHVtbi5sZXZlbCAtIDFdLnB1c2goY29sdW1uKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJvd3M7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0YWJsZV9oZWFkZXIgPSAoe1xuICBuYW1lOiAnRWxUYWJsZUhlYWRlcicsXG5cbiAgbWl4aW5zOiBbbGF5b3V0X29ic2VydmVyXSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBvcmlnaW5Db2x1bW5zID0gdGhpcy5zdG9yZS5zdGF0ZXMub3JpZ2luQ29sdW1ucztcbiAgICB2YXIgY29sdW1uUm93cyA9IGNvbnZlcnRUb1Jvd3Mob3JpZ2luQ29sdW1ucywgdGhpcy5jb2x1bW5zKTtcbiAgICAvLyDmmK/lkKbmi6XmnInlpJrnuqfooajlpLRcbiAgICB2YXIgaXNHcm91cCA9IGNvbHVtblJvd3MubGVuZ3RoID4gMTtcbiAgICBpZiAoaXNHcm91cCkgdGhpcy4kcGFyZW50LmlzR3JvdXAgPSB0cnVlO1xuICAgIHJldHVybiBoKFxuICAgICAgJ3RhYmxlJyxcbiAgICAgIHtcbiAgICAgICAgJ2NsYXNzJzogJ2VsLXRhYmxlX19oZWFkZXInLFxuICAgICAgICBhdHRyczogeyBjZWxsc3BhY2luZzogJzAnLFxuICAgICAgICAgIGNlbGxwYWRkaW5nOiAnMCcsXG4gICAgICAgICAgYm9yZGVyOiAnMCcgfVxuICAgICAgfSxcbiAgICAgIFtoKCdjb2xncm91cCcsIFt0aGlzLmNvbHVtbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGgoJ2NvbCcsIHtcbiAgICAgICAgICBhdHRyczogeyBuYW1lOiBjb2x1bW4uaWQgfSxcbiAgICAgICAgICBrZXk6IGNvbHVtbi5pZCB9KTtcbiAgICAgIH0pLCB0aGlzLmhhc0d1dHRlciA/IGgoJ2NvbCcsIHtcbiAgICAgICAgYXR0cnM6IHsgbmFtZTogJ2d1dHRlcicgfVxuICAgICAgfSkgOiAnJ10pLCBoKFxuICAgICAgICAndGhlYWQnLFxuICAgICAgICB7ICdjbGFzcyc6IFt7ICdpcy1ncm91cCc6IGlzR3JvdXAsICdoYXMtZ3V0dGVyJzogdGhpcy5oYXNHdXR0ZXIgfV0gfSxcbiAgICAgICAgW3RoaXMuX2woY29sdW1uUm93cywgZnVuY3Rpb24gKGNvbHVtbnMsIHJvd0luZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIGgoXG4gICAgICAgICAgICAndHInLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdHlsZTogX3RoaXMuZ2V0SGVhZGVyUm93U3R5bGUocm93SW5kZXgpLFxuICAgICAgICAgICAgICAnY2xhc3MnOiBfdGhpcy5nZXRIZWFkZXJSb3dDbGFzcyhyb3dJbmRleClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbY29sdW1ucy5tYXAoZnVuY3Rpb24gKGNvbHVtbiwgY2VsbEluZGV4KSB7XG4gICAgICAgICAgICAgIHJldHVybiBoKFxuICAgICAgICAgICAgICAgICd0aCcsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sc3BhbjogY29sdW1uLmNvbFNwYW4sXG4gICAgICAgICAgICAgICAgICAgIHJvd3NwYW46IGNvbHVtbi5yb3dTcGFuXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgJ21vdXNlbW92ZSc6IGZ1bmN0aW9uIG1vdXNlbW92ZSgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuaGFuZGxlTW91c2VNb3ZlKCRldmVudCwgY29sdW1uKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ21vdXNlb3V0JzogX3RoaXMuaGFuZGxlTW91c2VPdXQsXG4gICAgICAgICAgICAgICAgICAgICdtb3VzZWRvd24nOiBmdW5jdGlvbiBtb3VzZWRvd24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmhhbmRsZU1vdXNlRG93bigkZXZlbnQsIGNvbHVtbik7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICdjbGljayc6IGZ1bmN0aW9uIGNsaWNrKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVIZWFkZXJDbGljaygkZXZlbnQsIGNvbHVtbik7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICdjb250ZXh0bWVudSc6IGZ1bmN0aW9uIGNvbnRleHRtZW51KCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVIZWFkZXJDb250ZXh0TWVudSgkZXZlbnQsIGNvbHVtbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBfdGhpcy5nZXRIZWFkZXJDZWxsU3R5bGUocm93SW5kZXgsIGNlbGxJbmRleCwgY29sdW1ucywgY29sdW1uKSxcbiAgICAgICAgICAgICAgICAgICdjbGFzcyc6IF90aGlzLmdldEhlYWRlckNlbGxDbGFzcyhyb3dJbmRleCwgY2VsbEluZGV4LCBjb2x1bW5zLCBjb2x1bW4pLFxuICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4uaWQgfSxcbiAgICAgICAgICAgICAgICBbaChcbiAgICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgICAgeyAnY2xhc3MnOiBbJ2NlbGwnLCBjb2x1bW4uZmlsdGVyZWRWYWx1ZSAmJiBjb2x1bW4uZmlsdGVyZWRWYWx1ZS5sZW5ndGggPiAwID8gJ2hpZ2hsaWdodCcgOiAnJywgY29sdW1uLmxhYmVsQ2xhc3NOYW1lXSB9LFxuICAgICAgICAgICAgICAgICAgW2NvbHVtbi5yZW5kZXJIZWFkZXIgPyBjb2x1bW4ucmVuZGVySGVhZGVyLmNhbGwoX3RoaXMuX3JlbmRlclByb3h5LCBoLCB7IGNvbHVtbjogY29sdW1uLCAkaW5kZXg6IGNlbGxJbmRleCwgc3RvcmU6IF90aGlzLnN0b3JlLCBfc2VsZjogX3RoaXMuJHBhcmVudC4kdm5vZGUuY29udGV4dCB9KSA6IGNvbHVtbi5sYWJlbCwgY29sdW1uLnNvcnRhYmxlID8gaChcbiAgICAgICAgICAgICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzJzogJ2NhcmV0LXdyYXBwZXInLFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnY2xpY2snOiBmdW5jdGlvbiBjbGljaygkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmhhbmRsZVNvcnRDbGljaygkZXZlbnQsIGNvbHVtbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbaCgnaScsIHsgJ2NsYXNzJzogJ3NvcnQtY2FyZXQgYXNjZW5kaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWNrJzogZnVuY3Rpb24gY2xpY2soJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVTb3J0Q2xpY2soJGV2ZW50LCBjb2x1bW4sICdhc2NlbmRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLCBoKCdpJywgeyAnY2xhc3MnOiAnc29ydC1jYXJldCBkZXNjZW5kaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWNrJzogZnVuY3Rpb24gY2xpY2soJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVTb3J0Q2xpY2soJGV2ZW50LCBjb2x1bW4sICdkZXNjZW5kaW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KV1cbiAgICAgICAgICAgICAgICAgICkgOiAnJywgY29sdW1uLmZpbHRlcmFibGUgPyBoKFxuICAgICAgICAgICAgICAgICAgICAnc3BhbicsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAnY2xhc3MnOiAnZWwtdGFibGVfX2NvbHVtbi1maWx0ZXItdHJpZ2dlcicsXG4gICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjbGljayc6IGZ1bmN0aW9uIGNsaWNrKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuaGFuZGxlRmlsdGVyQ2xpY2soJGV2ZW50LCBjb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW2goJ2knLCB7ICdjbGFzcyc6IFsnZWwtaWNvbi1hcnJvdy1kb3duJywgY29sdW1uLmZpbHRlck9wZW5lZCA/ICdlbC1pY29uLWFycm93LXVwJyA6ICcnXSB9KV1cbiAgICAgICAgICAgICAgICAgICkgOiAnJ11cbiAgICAgICAgICAgICAgICApXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksIF90aGlzLmhhc0d1dHRlciA/IGgoJ3RoJywgeyAnY2xhc3MnOiAnZWwtdGFibGVfX2NlbGwgZ3V0dGVyJyB9KSA6ICcnXVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXVxuICAgICAgKV1cbiAgICApO1xuICB9LFxuXG5cbiAgcHJvcHM6IHtcbiAgICBmaXhlZDogU3RyaW5nLFxuICAgIHN0b3JlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgYm9yZGVyOiBCb29sZWFuLFxuICAgIGRlZmF1bHRTb3J0OiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcm9wOiAnJyxcbiAgICAgICAgICBvcmRlcjogJydcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsQ2hlY2tib3g6IGNoZWNrYm94X2RlZmF1bHQuYVxuICB9LFxuXG4gIGNvbXB1dGVkOiB0YWJsZV9oZWFkZXJfZXh0ZW5kcyh7XG4gICAgdGFibGU6IGZ1bmN0aW9uIHRhYmxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudDtcbiAgICB9LFxuICAgIGhhc0d1dHRlcjogZnVuY3Rpb24gaGFzR3V0dGVyKCkge1xuICAgICAgcmV0dXJuICF0aGlzLmZpeGVkICYmIHRoaXMudGFibGVMYXlvdXQuZ3V0dGVyV2lkdGg7XG4gICAgfVxuICB9LCBtYXBTdGF0ZXMoe1xuICAgIGNvbHVtbnM6ICdjb2x1bW5zJyxcbiAgICBpc0FsbFNlbGVjdGVkOiAnaXNBbGxTZWxlY3RlZCcsXG4gICAgbGVmdEZpeGVkTGVhZkNvdW50OiAnZml4ZWRMZWFmQ29sdW1uc0xlbmd0aCcsXG4gICAgcmlnaHRGaXhlZExlYWZDb3VudDogJ3JpZ2h0Rml4ZWRMZWFmQ29sdW1uc0xlbmd0aCcsXG4gICAgY29sdW1uc0NvdW50OiBmdW5jdGlvbiBjb2x1bW5zQ291bnQoc3RhdGVzKSB7XG4gICAgICByZXR1cm4gc3RhdGVzLmNvbHVtbnMubGVuZ3RoO1xuICAgIH0sXG4gICAgbGVmdEZpeGVkQ291bnQ6IGZ1bmN0aW9uIGxlZnRGaXhlZENvdW50KHN0YXRlcykge1xuICAgICAgcmV0dXJuIHN0YXRlcy5maXhlZENvbHVtbnMubGVuZ3RoO1xuICAgIH0sXG4gICAgcmlnaHRGaXhlZENvdW50OiBmdW5jdGlvbiByaWdodEZpeGVkQ291bnQoc3RhdGVzKSB7XG4gICAgICByZXR1cm4gc3RhdGVzLnJpZ2h0Rml4ZWRDb2x1bW5zLmxlbmd0aDtcbiAgICB9XG4gIH0pKSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMuZmlsdGVyUGFuZWxzID0ge307XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAvLyBuZXh0VGljayDmmK/mnInlv4XopoHnmoQgaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9wdWxsLzExMzExXG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9kZWZhdWx0U29ydCA9IF90aGlzMi5kZWZhdWx0U29ydCxcbiAgICAgICAgICBwcm9wID0gX2RlZmF1bHRTb3J0LnByb3AsXG4gICAgICAgICAgb3JkZXIgPSBfZGVmYXVsdFNvcnQub3JkZXI7XG5cbiAgICAgIHZhciBpbml0ID0gdHJ1ZTtcbiAgICAgIF90aGlzMi5zdG9yZS5jb21taXQoJ3NvcnQnLCB7IHByb3A6IHByb3AsIG9yZGVyOiBvcmRlciwgaW5pdDogaW5pdCB9KTtcbiAgICB9KTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB2YXIgcGFuZWxzID0gdGhpcy5maWx0ZXJQYW5lbHM7XG4gICAgZm9yICh2YXIgcHJvcCBpbiBwYW5lbHMpIHtcbiAgICAgIGlmIChwYW5lbHMuaGFzT3duUHJvcGVydHkocHJvcCkgJiYgcGFuZWxzW3Byb3BdKSB7XG4gICAgICAgIHBhbmVsc1twcm9wXS4kZGVzdHJveSh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgaXNDZWxsSGlkZGVuOiBmdW5jdGlvbiBpc0NlbGxIaWRkZW4oaW5kZXgsIGNvbHVtbnMpIHtcbiAgICAgIHZhciBzdGFydCA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGV4OyBpKyspIHtcbiAgICAgICAgc3RhcnQgKz0gY29sdW1uc1tpXS5jb2xTcGFuO1xuICAgICAgfVxuICAgICAgdmFyIGFmdGVyID0gc3RhcnQgKyBjb2x1bW5zW2luZGV4XS5jb2xTcGFuIC0gMTtcbiAgICAgIGlmICh0aGlzLmZpeGVkID09PSB0cnVlIHx8IHRoaXMuZml4ZWQgPT09ICdsZWZ0Jykge1xuICAgICAgICByZXR1cm4gYWZ0ZXIgPj0gdGhpcy5sZWZ0Rml4ZWRMZWFmQ291bnQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZml4ZWQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0IDwgdGhpcy5jb2x1bW5zQ291bnQgLSB0aGlzLnJpZ2h0Rml4ZWRMZWFmQ291bnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYWZ0ZXIgPCB0aGlzLmxlZnRGaXhlZExlYWZDb3VudCB8fCBzdGFydCA+PSB0aGlzLmNvbHVtbnNDb3VudCAtIHRoaXMucmlnaHRGaXhlZExlYWZDb3VudDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldEhlYWRlclJvd1N0eWxlOiBmdW5jdGlvbiBnZXRIZWFkZXJSb3dTdHlsZShyb3dJbmRleCkge1xuICAgICAgdmFyIGhlYWRlclJvd1N0eWxlID0gdGhpcy50YWJsZS5oZWFkZXJSb3dTdHlsZTtcbiAgICAgIGlmICh0eXBlb2YgaGVhZGVyUm93U3R5bGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGhlYWRlclJvd1N0eWxlLmNhbGwobnVsbCwgeyByb3dJbmRleDogcm93SW5kZXggfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGVhZGVyUm93U3R5bGU7XG4gICAgfSxcbiAgICBnZXRIZWFkZXJSb3dDbGFzczogZnVuY3Rpb24gZ2V0SGVhZGVyUm93Q2xhc3Mocm93SW5kZXgpIHtcbiAgICAgIHZhciBjbGFzc2VzID0gW107XG5cbiAgICAgIHZhciBoZWFkZXJSb3dDbGFzc05hbWUgPSB0aGlzLnRhYmxlLmhlYWRlclJvd0NsYXNzTmFtZTtcbiAgICAgIGlmICh0eXBlb2YgaGVhZGVyUm93Q2xhc3NOYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICBjbGFzc2VzLnB1c2goaGVhZGVyUm93Q2xhc3NOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGhlYWRlclJvd0NsYXNzTmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjbGFzc2VzLnB1c2goaGVhZGVyUm93Q2xhc3NOYW1lLmNhbGwobnVsbCwgeyByb3dJbmRleDogcm93SW5kZXggfSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgfSxcbiAgICBnZXRIZWFkZXJDZWxsU3R5bGU6IGZ1bmN0aW9uIGdldEhlYWRlckNlbGxTdHlsZShyb3dJbmRleCwgY29sdW1uSW5kZXgsIHJvdywgY29sdW1uKSB7XG4gICAgICB2YXIgaGVhZGVyQ2VsbFN0eWxlID0gdGhpcy50YWJsZS5oZWFkZXJDZWxsU3R5bGU7XG4gICAgICBpZiAodHlwZW9mIGhlYWRlckNlbGxTdHlsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gaGVhZGVyQ2VsbFN0eWxlLmNhbGwobnVsbCwge1xuICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXgsXG4gICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgY29sdW1uOiBjb2x1bW5cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGVhZGVyQ2VsbFN0eWxlO1xuICAgIH0sXG4gICAgZ2V0SGVhZGVyQ2VsbENsYXNzOiBmdW5jdGlvbiBnZXRIZWFkZXJDZWxsQ2xhc3Mocm93SW5kZXgsIGNvbHVtbkluZGV4LCByb3csIGNvbHVtbikge1xuICAgICAgdmFyIGNsYXNzZXMgPSBbY29sdW1uLmlkLCBjb2x1bW4ub3JkZXIsIGNvbHVtbi5oZWFkZXJBbGlnbiwgY29sdW1uLmNsYXNzTmFtZSwgY29sdW1uLmxhYmVsQ2xhc3NOYW1lXTtcblxuICAgICAgaWYgKHJvd0luZGV4ID09PSAwICYmIHRoaXMuaXNDZWxsSGlkZGVuKGNvbHVtbkluZGV4LCByb3cpKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnaXMtaGlkZGVuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghY29sdW1uLmNoaWxkcmVuKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnaXMtbGVhZicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnaXMtc29ydGFibGUnKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGhlYWRlckNlbGxDbGFzc05hbWUgPSB0aGlzLnRhYmxlLmhlYWRlckNlbGxDbGFzc05hbWU7XG4gICAgICBpZiAodHlwZW9mIGhlYWRlckNlbGxDbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChoZWFkZXJDZWxsQ2xhc3NOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGhlYWRlckNlbGxDbGFzc05hbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKGhlYWRlckNlbGxDbGFzc05hbWUuY2FsbChudWxsLCB7XG4gICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxuICAgICAgICAgIGNvbHVtbkluZGV4OiBjb2x1bW5JbmRleCxcbiAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICBjb2x1bW46IGNvbHVtblxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIGNsYXNzZXMucHVzaCgnZWwtdGFibGVfX2NlbGwnKTtcblxuICAgICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICAgIH0sXG4gICAgdG9nZ2xlQWxsU2VsZWN0aW9uOiBmdW5jdGlvbiB0b2dnbGVBbGxTZWxlY3Rpb24oKSB7XG4gICAgICB0aGlzLnN0b3JlLmNvbW1pdCgndG9nZ2xlQWxsU2VsZWN0aW9uJyk7XG4gICAgfSxcbiAgICBoYW5kbGVGaWx0ZXJDbGljazogZnVuY3Rpb24gaGFuZGxlRmlsdGVyQ2xpY2soZXZlbnQsIGNvbHVtbikge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgdmFyIGNlbGwgPSB0YXJnZXQudGFnTmFtZSA9PT0gJ1RIJyA/IHRhcmdldCA6IHRhcmdldC5wYXJlbnROb2RlO1xuICAgICAgaWYgKE9iamVjdChkb21fW1wiaGFzQ2xhc3NcIl0pKGNlbGwsICdub2NsaWNrJykpIHJldHVybjtcbiAgICAgIGNlbGwgPSBjZWxsLnF1ZXJ5U2VsZWN0b3IoJy5lbC10YWJsZV9fY29sdW1uLWZpbHRlci10cmlnZ2VyJykgfHwgY2VsbDtcbiAgICAgIHZhciB0YWJsZSA9IHRoaXMuJHBhcmVudDtcblxuICAgICAgdmFyIGZpbHRlclBhbmVsID0gdGhpcy5maWx0ZXJQYW5lbHNbY29sdW1uLmlkXTtcblxuICAgICAgaWYgKGZpbHRlclBhbmVsICYmIGNvbHVtbi5maWx0ZXJPcGVuZWQpIHtcbiAgICAgICAgZmlsdGVyUGFuZWwuc2hvd1BvcHBlciA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghZmlsdGVyUGFuZWwpIHtcbiAgICAgICAgZmlsdGVyUGFuZWwgPSBuZXcgZXh0ZXJuYWxfdnVlX2RlZmF1bHQuYShmaWx0ZXJfcGFuZWwpO1xuICAgICAgICB0aGlzLmZpbHRlclBhbmVsc1tjb2x1bW4uaWRdID0gZmlsdGVyUGFuZWw7XG4gICAgICAgIGlmIChjb2x1bW4uZmlsdGVyUGxhY2VtZW50KSB7XG4gICAgICAgICAgZmlsdGVyUGFuZWwucGxhY2VtZW50ID0gY29sdW1uLmZpbHRlclBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJQYW5lbC50YWJsZSA9IHRhYmxlO1xuICAgICAgICBmaWx0ZXJQYW5lbC5jZWxsID0gY2VsbDtcbiAgICAgICAgZmlsdGVyUGFuZWwuY29sdW1uID0gY29sdW1uO1xuICAgICAgICAhdGhpcy4kaXNTZXJ2ZXIgJiYgZmlsdGVyUGFuZWwuJG1vdW50KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcbiAgICAgIH1cblxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZpbHRlclBhbmVsLnNob3dQb3BwZXIgPSB0cnVlO1xuICAgICAgfSwgMTYpO1xuICAgIH0sXG4gICAgaGFuZGxlSGVhZGVyQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUhlYWRlckNsaWNrKGV2ZW50LCBjb2x1bW4pIHtcbiAgICAgIGlmICghY29sdW1uLmZpbHRlcnMgJiYgY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU29ydENsaWNrKGV2ZW50LCBjb2x1bW4pO1xuICAgICAgfSBlbHNlIGlmIChjb2x1bW4uZmlsdGVyYWJsZSAmJiAhY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyQ2xpY2soZXZlbnQsIGNvbHVtbik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJHBhcmVudC4kZW1pdCgnaGVhZGVyLWNsaWNrJywgY29sdW1uLCBldmVudCk7XG4gICAgfSxcbiAgICBoYW5kbGVIZWFkZXJDb250ZXh0TWVudTogZnVuY3Rpb24gaGFuZGxlSGVhZGVyQ29udGV4dE1lbnUoZXZlbnQsIGNvbHVtbikge1xuICAgICAgdGhpcy4kcGFyZW50LiRlbWl0KCdoZWFkZXItY29udGV4dG1lbnUnLCBjb2x1bW4sIGV2ZW50KTtcbiAgICB9LFxuICAgIGhhbmRsZU1vdXNlRG93bjogZnVuY3Rpb24gaGFuZGxlTW91c2VEb3duKGV2ZW50LCBjb2x1bW4pIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy4kaXNTZXJ2ZXIpIHJldHVybjtcbiAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgY29sdW1uLmNoaWxkcmVuLmxlbmd0aCA+IDApIHJldHVybjtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHRoaXMuZHJhZ2dpbmdDb2x1bW4gJiYgdGhpcy5ib3JkZXIpIHtcbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG5cbiAgICAgICAgdGhpcy4kcGFyZW50LnJlc2l6ZVByb3h5VmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgdmFyIHRhYmxlID0gdGhpcy4kcGFyZW50O1xuICAgICAgICB2YXIgdGFibGVFbCA9IHRhYmxlLiRlbDtcbiAgICAgICAgdmFyIHRhYmxlTGVmdCA9IHRhYmxlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgdmFyIGNvbHVtbkVsID0gdGhpcy4kZWwucXVlcnlTZWxlY3RvcigndGguJyArIGNvbHVtbi5pZCk7XG4gICAgICAgIHZhciBjb2x1bW5SZWN0ID0gY29sdW1uRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHZhciBtaW5MZWZ0ID0gY29sdW1uUmVjdC5sZWZ0IC0gdGFibGVMZWZ0ICsgMzA7XG5cbiAgICAgICAgT2JqZWN0KGRvbV9bXCJhZGRDbGFzc1wiXSkoY29sdW1uRWwsICdub2NsaWNrJyk7XG5cbiAgICAgICAgdGhpcy5kcmFnU3RhdGUgPSB7XG4gICAgICAgICAgc3RhcnRNb3VzZUxlZnQ6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgc3RhcnRMZWZ0OiBjb2x1bW5SZWN0LnJpZ2h0IC0gdGFibGVMZWZ0LFxuICAgICAgICAgIHN0YXJ0Q29sdW1uTGVmdDogY29sdW1uUmVjdC5sZWZ0IC0gdGFibGVMZWZ0LFxuICAgICAgICAgIHRhYmxlTGVmdDogdGFibGVMZWZ0XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHJlc2l6ZVByb3h5ID0gdGFibGUuJHJlZnMucmVzaXplUHJveHk7XG4gICAgICAgIHJlc2l6ZVByb3h5LnN0eWxlLmxlZnQgPSB0aGlzLmRyYWdTdGF0ZS5zdGFydExlZnQgKyAncHgnO1xuXG4gICAgICAgIGRvY3VtZW50Lm9uc2VsZWN0c3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGhhbmRsZU1vdXNlTW92ZSA9IGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShldmVudCkge1xuICAgICAgICAgIHZhciBkZWx0YUxlZnQgPSBldmVudC5jbGllbnRYIC0gX3RoaXMzLmRyYWdTdGF0ZS5zdGFydE1vdXNlTGVmdDtcbiAgICAgICAgICB2YXIgcHJveHlMZWZ0ID0gX3RoaXMzLmRyYWdTdGF0ZS5zdGFydExlZnQgKyBkZWx0YUxlZnQ7XG5cbiAgICAgICAgICByZXNpemVQcm94eS5zdHlsZS5sZWZ0ID0gTWF0aC5tYXgobWluTGVmdCwgcHJveHlMZWZ0KSArICdweCc7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGhhbmRsZU1vdXNlVXAgPSBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKCkge1xuICAgICAgICAgIGlmIChfdGhpczMuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIHZhciBfZHJhZ1N0YXRlID0gX3RoaXMzLmRyYWdTdGF0ZSxcbiAgICAgICAgICAgICAgICBzdGFydENvbHVtbkxlZnQgPSBfZHJhZ1N0YXRlLnN0YXJ0Q29sdW1uTGVmdCxcbiAgICAgICAgICAgICAgICBzdGFydExlZnQgPSBfZHJhZ1N0YXRlLnN0YXJ0TGVmdDtcblxuICAgICAgICAgICAgdmFyIGZpbmFsTGVmdCA9IHBhcnNlSW50KHJlc2l6ZVByb3h5LnN0eWxlLmxlZnQsIDEwKTtcbiAgICAgICAgICAgIHZhciBjb2x1bW5XaWR0aCA9IGZpbmFsTGVmdCAtIHN0YXJ0Q29sdW1uTGVmdDtcbiAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IGNvbHVtbi5yZWFsV2lkdGggPSBjb2x1bW5XaWR0aDtcbiAgICAgICAgICAgIHRhYmxlLiRlbWl0KCdoZWFkZXItZHJhZ2VuZCcsIGNvbHVtbi53aWR0aCwgc3RhcnRMZWZ0IC0gc3RhcnRDb2x1bW5MZWZ0LCBjb2x1bW4sIGV2ZW50KTtcblxuICAgICAgICAgICAgX3RoaXMzLnN0b3JlLnNjaGVkdWxlTGF5b3V0KCk7XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJyc7XG4gICAgICAgICAgICBfdGhpczMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIF90aGlzMy5kcmFnZ2luZ0NvbHVtbiA9IG51bGw7XG4gICAgICAgICAgICBfdGhpczMuZHJhZ1N0YXRlID0ge307XG5cbiAgICAgICAgICAgIHRhYmxlLnJlc2l6ZVByb3h5VmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZU1vdXNlTW92ZSk7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU1vdXNlVXApO1xuICAgICAgICAgIGRvY3VtZW50Lm9uc2VsZWN0c3RhcnQgPSBudWxsO1xuICAgICAgICAgIGRvY3VtZW50Lm9uZHJhZ3N0YXJ0ID0gbnVsbDtcblxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkoY29sdW1uRWwsICdub2NsaWNrJyk7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlTW91c2VNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU1vdXNlVXApO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlTW91c2VNb3ZlOiBmdW5jdGlvbiBoYW5kbGVNb3VzZU1vdmUoZXZlbnQsIGNvbHVtbikge1xuICAgICAgaWYgKGNvbHVtbi5jaGlsZHJlbiAmJiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoID4gMCkgcmV0dXJuO1xuICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgIHdoaWxlICh0YXJnZXQgJiYgdGFyZ2V0LnRhZ05hbWUgIT09ICdUSCcpIHtcbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghY29sdW1uIHx8ICFjb2x1bW4ucmVzaXphYmxlKSByZXR1cm47XG5cbiAgICAgIGlmICghdGhpcy5kcmFnZ2luZyAmJiB0aGlzLmJvcmRlcikge1xuICAgICAgICB2YXIgcmVjdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICB2YXIgYm9keVN0eWxlID0gZG9jdW1lbnQuYm9keS5zdHlsZTtcbiAgICAgICAgaWYgKHJlY3Qud2lkdGggPiAxMiAmJiByZWN0LnJpZ2h0IC0gZXZlbnQucGFnZVggPCA4KSB7XG4gICAgICAgICAgYm9keVN0eWxlLmN1cnNvciA9ICdjb2wtcmVzaXplJztcbiAgICAgICAgICBpZiAoT2JqZWN0KGRvbV9bXCJoYXNDbGFzc1wiXSkodGFyZ2V0LCAnaXMtc29ydGFibGUnKSkge1xuICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmN1cnNvciA9ICdjb2wtcmVzaXplJztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5kcmFnZ2luZ0NvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgIGJvZHlTdHlsZS5jdXJzb3IgPSAnJztcbiAgICAgICAgICBpZiAoT2JqZWN0KGRvbV9bXCJoYXNDbGFzc1wiXSkodGFyZ2V0LCAnaXMtc29ydGFibGUnKSkge1xuICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5kcmFnZ2luZ0NvbHVtbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZU1vdXNlT3V0OiBmdW5jdGlvbiBoYW5kbGVNb3VzZU91dCgpIHtcbiAgICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnJztcbiAgICB9LFxuICAgIHRvZ2dsZU9yZGVyOiBmdW5jdGlvbiB0b2dnbGVPcmRlcihfcmVmKSB7XG4gICAgICB2YXIgb3JkZXIgPSBfcmVmLm9yZGVyLFxuICAgICAgICAgIHNvcnRPcmRlcnMgPSBfcmVmLnNvcnRPcmRlcnM7XG5cbiAgICAgIGlmIChvcmRlciA9PT0gJycpIHJldHVybiBzb3J0T3JkZXJzWzBdO1xuICAgICAgdmFyIGluZGV4ID0gc29ydE9yZGVycy5pbmRleE9mKG9yZGVyIHx8IG51bGwpO1xuICAgICAgcmV0dXJuIHNvcnRPcmRlcnNbaW5kZXggPiBzb3J0T3JkZXJzLmxlbmd0aCAtIDIgPyAwIDogaW5kZXggKyAxXTtcbiAgICB9LFxuICAgIGhhbmRsZVNvcnRDbGljazogZnVuY3Rpb24gaGFuZGxlU29ydENsaWNrKGV2ZW50LCBjb2x1bW4sIGdpdmVuT3JkZXIpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdmFyIG9yZGVyID0gY29sdW1uLm9yZGVyID09PSBnaXZlbk9yZGVyID8gbnVsbCA6IGdpdmVuT3JkZXIgfHwgdGhpcy50b2dnbGVPcmRlcihjb2x1bW4pO1xuXG4gICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgd2hpbGUgKHRhcmdldCAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RIJykge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQudGFnTmFtZSA9PT0gJ1RIJykge1xuICAgICAgICBpZiAoT2JqZWN0KGRvbV9bXCJoYXNDbGFzc1wiXSkodGFyZ2V0LCAnbm9jbGljaycpKSB7XG4gICAgICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkodGFyZ2V0LCAnbm9jbGljaycpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWNvbHVtbi5zb3J0YWJsZSkgcmV0dXJuO1xuXG4gICAgICB2YXIgc3RhdGVzID0gdGhpcy5zdG9yZS5zdGF0ZXM7XG4gICAgICB2YXIgc29ydFByb3AgPSBzdGF0ZXMuc29ydFByb3A7XG4gICAgICB2YXIgc29ydE9yZGVyID0gdm9pZCAwO1xuICAgICAgdmFyIHNvcnRpbmdDb2x1bW4gPSBzdGF0ZXMuc29ydGluZ0NvbHVtbjtcblxuICAgICAgaWYgKHNvcnRpbmdDb2x1bW4gIT09IGNvbHVtbiB8fCBzb3J0aW5nQ29sdW1uID09PSBjb2x1bW4gJiYgc29ydGluZ0NvbHVtbi5vcmRlciA9PT0gbnVsbCkge1xuICAgICAgICBpZiAoc29ydGluZ0NvbHVtbikge1xuICAgICAgICAgIHNvcnRpbmdDb2x1bW4ub3JkZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlcy5zb3J0aW5nQ29sdW1uID0gY29sdW1uO1xuICAgICAgICBzb3J0UHJvcCA9IGNvbHVtbi5wcm9wZXJ0eTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFvcmRlcikge1xuICAgICAgICBzb3J0T3JkZXIgPSBjb2x1bW4ub3JkZXIgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc29ydE9yZGVyID0gY29sdW1uLm9yZGVyID0gb3JkZXI7XG4gICAgICB9XG5cbiAgICAgIHN0YXRlcy5zb3J0UHJvcCA9IHNvcnRQcm9wO1xuICAgICAgc3RhdGVzLnNvcnRPcmRlciA9IHNvcnRPcmRlcjtcblxuICAgICAgdGhpcy5zdG9yZS5jb21taXQoJ2NoYW5nZVNvcnRDb25kaXRpb24nKTtcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZHJhZ2dpbmdDb2x1bW46IG51bGwsXG4gICAgICBkcmFnZ2luZzogZmFsc2UsXG4gICAgICBkcmFnU3RhdGU6IHt9XG4gICAgfTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy90YWJsZS1mb290ZXIuanNcbnZhciB0YWJsZV9mb290ZXJfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRhYmxlX2Zvb3RlciA9ICh7XG4gIG5hbWU6ICdFbFRhYmxlRm9vdGVyJyxcblxuICBtaXhpbnM6IFtsYXlvdXRfb2JzZXJ2ZXJdLFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHN1bXMgPSBbXTtcbiAgICBpZiAodGhpcy5zdW1tYXJ5TWV0aG9kKSB7XG4gICAgICBzdW1zID0gdGhpcy5zdW1tYXJ5TWV0aG9kKHsgY29sdW1uczogdGhpcy5jb2x1bW5zLCBkYXRhOiB0aGlzLnN0b3JlLnN0YXRlcy5kYXRhIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uLCBpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICBzdW1zW2luZGV4XSA9IF90aGlzLnN1bVRleHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZXMgPSBfdGhpcy5zdG9yZS5zdGF0ZXMuZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGl0ZW1bY29sdW1uLnByb3BlcnR5XSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHJlY2lzaW9ucyA9IFtdO1xuICAgICAgICB2YXIgbm90TnVtYmVyID0gdHJ1ZTtcbiAgICAgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIG5vdE51bWJlciA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGRlY2ltYWwgPSAoJycgKyB2YWx1ZSkuc3BsaXQoJy4nKVsxXTtcbiAgICAgICAgICAgIHByZWNpc2lvbnMucHVzaChkZWNpbWFsID8gZGVjaW1hbC5sZW5ndGggOiAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHJlY2lzaW9uID0gTWF0aC5tYXguYXBwbHkobnVsbCwgcHJlY2lzaW9ucyk7XG4gICAgICAgIGlmICghbm90TnVtYmVyKSB7XG4gICAgICAgICAgc3Vtc1tpbmRleF0gPSB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBOdW1iZXIoY3Vycik7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCgocHJldiArIGN1cnIpLnRvRml4ZWQoTWF0aC5taW4ocHJlY2lzaW9uLCAyMCkpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1bXNbaW5kZXhdID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBoKFxuICAgICAgJ3RhYmxlJyxcbiAgICAgIHtcbiAgICAgICAgJ2NsYXNzJzogJ2VsLXRhYmxlX19mb290ZXInLFxuICAgICAgICBhdHRyczogeyBjZWxsc3BhY2luZzogJzAnLFxuICAgICAgICAgIGNlbGxwYWRkaW5nOiAnMCcsXG4gICAgICAgICAgYm9yZGVyOiAnMCcgfVxuICAgICAgfSxcbiAgICAgIFtoKCdjb2xncm91cCcsIFt0aGlzLmNvbHVtbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGgoJ2NvbCcsIHtcbiAgICAgICAgICBhdHRyczogeyBuYW1lOiBjb2x1bW4uaWQgfSxcbiAgICAgICAgICBrZXk6IGNvbHVtbi5pZCB9KTtcbiAgICAgIH0pLCB0aGlzLmhhc0d1dHRlciA/IGgoJ2NvbCcsIHtcbiAgICAgICAgYXR0cnM6IHsgbmFtZTogJ2d1dHRlcicgfVxuICAgICAgfSkgOiAnJ10pLCBoKFxuICAgICAgICAndGJvZHknLFxuICAgICAgICB7ICdjbGFzcyc6IFt7ICdoYXMtZ3V0dGVyJzogdGhpcy5oYXNHdXR0ZXIgfV0gfSxcbiAgICAgICAgW2goJ3RyJywgW3RoaXMuY29sdW1ucy5tYXAoZnVuY3Rpb24gKGNvbHVtbiwgY2VsbEluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIGgoXG4gICAgICAgICAgICAndGQnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBrZXk6IGNlbGxJbmRleCxcbiAgICAgICAgICAgICAgYXR0cnM6IHsgY29sc3BhbjogY29sdW1uLmNvbFNwYW4sXG4gICAgICAgICAgICAgICAgcm93c3BhbjogY29sdW1uLnJvd1NwYW5cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ2NsYXNzJzogW10uY29uY2F0KF90aGlzLmdldFJvd0NsYXNzZXMoY29sdW1uLCBjZWxsSW5kZXgpLCBbJ2VsLXRhYmxlX19jZWxsJ10pIH0sXG4gICAgICAgICAgICBbaChcbiAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgIHsgJ2NsYXNzJzogWydjZWxsJywgY29sdW1uLmxhYmVsQ2xhc3NOYW1lXSB9LFxuICAgICAgICAgICAgICBbc3Vtc1tjZWxsSW5kZXhdXVxuICAgICAgICAgICAgKV1cbiAgICAgICAgICApO1xuICAgICAgICB9KSwgdGhpcy5oYXNHdXR0ZXIgPyBoKCd0aCcsIHsgJ2NsYXNzJzogJ2VsLXRhYmxlX19jZWxsIGd1dHRlcicgfSkgOiAnJ10pXVxuICAgICAgKV1cbiAgICApO1xuICB9LFxuXG5cbiAgcHJvcHM6IHtcbiAgICBmaXhlZDogU3RyaW5nLFxuICAgIHN0b3JlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgc3VtbWFyeU1ldGhvZDogRnVuY3Rpb24sXG4gICAgc3VtVGV4dDogU3RyaW5nLFxuICAgIGJvcmRlcjogQm9vbGVhbixcbiAgICBkZWZhdWx0U29ydDoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJvcDogJycsXG4gICAgICAgICAgb3JkZXI6ICcnXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGNvbXB1dGVkOiB0YWJsZV9mb290ZXJfZXh0ZW5kcyh7XG4gICAgdGFibGU6IGZ1bmN0aW9uIHRhYmxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudDtcbiAgICB9LFxuICAgIGhhc0d1dHRlcjogZnVuY3Rpb24gaGFzR3V0dGVyKCkge1xuICAgICAgcmV0dXJuICF0aGlzLmZpeGVkICYmIHRoaXMudGFibGVMYXlvdXQuZ3V0dGVyV2lkdGg7XG4gICAgfVxuICB9LCBtYXBTdGF0ZXMoe1xuICAgIGNvbHVtbnM6ICdjb2x1bW5zJyxcbiAgICBpc0FsbFNlbGVjdGVkOiAnaXNBbGxTZWxlY3RlZCcsXG4gICAgbGVmdEZpeGVkTGVhZkNvdW50OiAnZml4ZWRMZWFmQ29sdW1uc0xlbmd0aCcsXG4gICAgcmlnaHRGaXhlZExlYWZDb3VudDogJ3JpZ2h0Rml4ZWRMZWFmQ29sdW1uc0xlbmd0aCcsXG4gICAgY29sdW1uc0NvdW50OiBmdW5jdGlvbiBjb2x1bW5zQ291bnQoc3RhdGVzKSB7XG4gICAgICByZXR1cm4gc3RhdGVzLmNvbHVtbnMubGVuZ3RoO1xuICAgIH0sXG4gICAgbGVmdEZpeGVkQ291bnQ6IGZ1bmN0aW9uIGxlZnRGaXhlZENvdW50KHN0YXRlcykge1xuICAgICAgcmV0dXJuIHN0YXRlcy5maXhlZENvbHVtbnMubGVuZ3RoO1xuICAgIH0sXG4gICAgcmlnaHRGaXhlZENvdW50OiBmdW5jdGlvbiByaWdodEZpeGVkQ291bnQoc3RhdGVzKSB7XG4gICAgICByZXR1cm4gc3RhdGVzLnJpZ2h0Rml4ZWRDb2x1bW5zLmxlbmd0aDtcbiAgICB9XG4gIH0pKSxcblxuICBtZXRob2RzOiB7XG4gICAgaXNDZWxsSGlkZGVuOiBmdW5jdGlvbiBpc0NlbGxIaWRkZW4oaW5kZXgsIGNvbHVtbnMsIGNvbHVtbikge1xuICAgICAgaWYgKHRoaXMuZml4ZWQgPT09IHRydWUgfHwgdGhpcy5maXhlZCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIHJldHVybiBpbmRleCA+PSB0aGlzLmxlZnRGaXhlZExlYWZDb3VudDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maXhlZCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICB2YXIgYmVmb3JlID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRleDsgaSsrKSB7XG4gICAgICAgICAgYmVmb3JlICs9IGNvbHVtbnNbaV0uY29sU3BhbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmVmb3JlIDwgdGhpcy5jb2x1bW5zQ291bnQgLSB0aGlzLnJpZ2h0Rml4ZWRMZWFmQ291bnQ7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmZpeGVkICYmIGNvbHVtbi5maXhlZCkge1xuICAgICAgICAvLyBoaWRlIGNlbGwgd2hlbiBmb290ZXIgaW5zdGFuY2UgaXMgbm90IGZpeGVkIGFuZCBjb2x1bW4gaXMgZml4ZWRcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaW5kZXggPCB0aGlzLmxlZnRGaXhlZENvdW50IHx8IGluZGV4ID49IHRoaXMuY29sdW1uc0NvdW50IC0gdGhpcy5yaWdodEZpeGVkQ291bnQ7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRSb3dDbGFzc2VzOiBmdW5jdGlvbiBnZXRSb3dDbGFzc2VzKGNvbHVtbiwgY2VsbEluZGV4KSB7XG4gICAgICB2YXIgY2xhc3NlcyA9IFtjb2x1bW4uaWQsIGNvbHVtbi5hbGlnbiwgY29sdW1uLmxhYmVsQ2xhc3NOYW1lXTtcbiAgICAgIGlmIChjb2x1bW4uY2xhc3NOYW1lKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChjb2x1bW4uY2xhc3NOYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzQ2VsbEhpZGRlbihjZWxsSW5kZXgsIHRoaXMuY29sdW1ucywgY29sdW1uKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2goJ2lzLWhpZGRlbicpO1xuICAgICAgfVxuICAgICAgaWYgKCFjb2x1bW4uY2hpbGRyZW4pIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdpcy1sZWFmJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdGFibGUvc3JjL3RhYmxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbnZhciB0YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciB0YWJsZUlkU2VlZCA9IDE7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsVGFibGUnLFxuXG4gIG1peGluczogW2xvY2FsZV9kZWZhdWx0LmEsIG1pZ3JhdGluZ19kZWZhdWx0LmFdLFxuXG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBNb3VzZXdoZWVsOiBkaXJlY3RpdmVzX21vdXNld2hlZWxcbiAgfSxcblxuICBwcm9wczoge1xuICAgIGRhdGE6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc2l6ZTogU3RyaW5nLFxuXG4gICAgd2lkdGg6IFtTdHJpbmcsIE51bWJlcl0sXG5cbiAgICBoZWlnaHQ6IFtTdHJpbmcsIE51bWJlcl0sXG5cbiAgICBtYXhIZWlnaHQ6IFtTdHJpbmcsIE51bWJlcl0sXG5cbiAgICBmaXQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcblxuICAgIHN0cmlwZTogQm9vbGVhbixcblxuICAgIGJvcmRlcjogQm9vbGVhbixcblxuICAgIHJvd0tleTogW1N0cmluZywgRnVuY3Rpb25dLFxuXG4gICAgY29udGV4dDoge30sXG5cbiAgICBzaG93SGVhZGVyOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG5cbiAgICBzaG93U3VtbWFyeTogQm9vbGVhbixcblxuICAgIHN1bVRleHQ6IFN0cmluZyxcblxuICAgIHN1bW1hcnlNZXRob2Q6IEZ1bmN0aW9uLFxuXG4gICAgcm93Q2xhc3NOYW1lOiBbU3RyaW5nLCBGdW5jdGlvbl0sXG5cbiAgICByb3dTdHlsZTogW09iamVjdCwgRnVuY3Rpb25dLFxuXG4gICAgY2VsbENsYXNzTmFtZTogW1N0cmluZywgRnVuY3Rpb25dLFxuXG4gICAgY2VsbFN0eWxlOiBbT2JqZWN0LCBGdW5jdGlvbl0sXG5cbiAgICBoZWFkZXJSb3dDbGFzc05hbWU6IFtTdHJpbmcsIEZ1bmN0aW9uXSxcblxuICAgIGhlYWRlclJvd1N0eWxlOiBbT2JqZWN0LCBGdW5jdGlvbl0sXG5cbiAgICBoZWFkZXJDZWxsQ2xhc3NOYW1lOiBbU3RyaW5nLCBGdW5jdGlvbl0sXG5cbiAgICBoZWFkZXJDZWxsU3R5bGU6IFtPYmplY3QsIEZ1bmN0aW9uXSxcblxuICAgIGhpZ2hsaWdodEN1cnJlbnRSb3c6IEJvb2xlYW4sXG5cbiAgICBoaWdobGlnaHRTZWxlY3Rpb25Sb3c6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG5cbiAgICBjdXJyZW50Um93S2V5OiBbU3RyaW5nLCBOdW1iZXJdLFxuXG4gICAgZW1wdHlUZXh0OiBTdHJpbmcsXG5cbiAgICBleHBhbmRSb3dLZXlzOiBBcnJheSxcblxuICAgIGRlZmF1bHRFeHBhbmRBbGw6IEJvb2xlYW4sXG5cbiAgICBkZWZhdWx0U29ydDogT2JqZWN0LFxuXG4gICAgdG9vbHRpcEVmZmVjdDogU3RyaW5nLFxuXG4gICAgc3Bhbk1ldGhvZDogRnVuY3Rpb24sXG5cbiAgICBzZWxlY3RPbkluZGV0ZXJtaW5hdGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcblxuICAgIGluZGVudDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMTZcbiAgICB9LFxuXG4gICAgdHJlZVByb3BzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoYXNDaGlsZHJlbjogJ2hhc0NoaWxkcmVuJyxcbiAgICAgICAgICBjaGlsZHJlbjogJ2NoaWxkcmVuJ1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBsYXp5OiBCb29sZWFuLFxuXG4gICAgbG9hZDogRnVuY3Rpb25cbiAgfSxcblxuICBjb21wb25lbnRzOiB7XG4gICAgVGFibGVIZWFkZXI6IHRhYmxlX2hlYWRlcixcbiAgICBUYWJsZUZvb3RlcjogdGFibGVfZm9vdGVyLFxuICAgIFRhYmxlQm9keTogdGFibGVfYm9keSxcbiAgICBFbENoZWNrYm94OiBjaGVja2JveF9kZWZhdWx0LmFcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZ2V0TWlncmF0aW5nQ29uZmlnOiBmdW5jdGlvbiBnZXRNaWdyYXRpbmdDb25maWcoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICBleHBhbmQ6ICdleHBhbmQgaXMgcmVuYW1lZCB0byBleHBhbmQtY2hhbmdlJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sXG4gICAgc2V0Q3VycmVudFJvdzogZnVuY3Rpb24gc2V0Q3VycmVudFJvdyhyb3cpIHtcbiAgICAgIHRoaXMuc3RvcmUuY29tbWl0KCdzZXRDdXJyZW50Um93Jywgcm93KTtcbiAgICB9LFxuICAgIHRvZ2dsZVJvd1NlbGVjdGlvbjogZnVuY3Rpb24gdG9nZ2xlUm93U2VsZWN0aW9uKHJvdywgc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc3RvcmUudG9nZ2xlUm93U2VsZWN0aW9uKHJvdywgc2VsZWN0ZWQsIGZhbHNlKTtcbiAgICAgIHRoaXMuc3RvcmUudXBkYXRlQWxsU2VsZWN0ZWQoKTtcbiAgICB9LFxuICAgIHRvZ2dsZVJvd0V4cGFuc2lvbjogZnVuY3Rpb24gdG9nZ2xlUm93RXhwYW5zaW9uKHJvdywgZXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuc3RvcmUudG9nZ2xlUm93RXhwYW5zaW9uQWRhcHRlcihyb3csIGV4cGFuZGVkKTtcbiAgICB9LFxuICAgIGNsZWFyU2VsZWN0aW9uOiBmdW5jdGlvbiBjbGVhclNlbGVjdGlvbigpIHtcbiAgICAgIHRoaXMuc3RvcmUuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9LFxuICAgIGNsZWFyRmlsdGVyOiBmdW5jdGlvbiBjbGVhckZpbHRlcihjb2x1bW5LZXlzKSB7XG4gICAgICB0aGlzLnN0b3JlLmNsZWFyRmlsdGVyKGNvbHVtbktleXMpO1xuICAgIH0sXG4gICAgY2xlYXJTb3J0OiBmdW5jdGlvbiBjbGVhclNvcnQoKSB7XG4gICAgICB0aGlzLnN0b3JlLmNsZWFyU29ydCgpO1xuICAgIH0sXG4gICAgaGFuZGxlTW91c2VMZWF2ZTogZnVuY3Rpb24gaGFuZGxlTW91c2VMZWF2ZSgpIHtcbiAgICAgIHRoaXMuc3RvcmUuY29tbWl0KCdzZXRIb3ZlclJvdycsIG51bGwpO1xuICAgICAgaWYgKHRoaXMuaG92ZXJTdGF0ZSkgdGhpcy5ob3ZlclN0YXRlID0gbnVsbDtcbiAgICB9LFxuICAgIHVwZGF0ZVNjcm9sbFk6IGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbFkoKSB7XG4gICAgICB2YXIgY2hhbmdlZCA9IHRoaXMubGF5b3V0LnVwZGF0ZVNjcm9sbFkoKTtcbiAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgIHRoaXMubGF5b3V0Lm5vdGlmeU9ic2VydmVycygnc2Nyb2xsYWJsZScpO1xuICAgICAgICB0aGlzLmxheW91dC51cGRhdGVDb2x1bW5zV2lkdGgoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUZpeGVkTW91c2V3aGVlbDogZnVuY3Rpb24gaGFuZGxlRml4ZWRNb3VzZXdoZWVsKGV2ZW50LCBkYXRhKSB7XG4gICAgICB2YXIgYm9keVdyYXBwZXIgPSB0aGlzLmJvZHlXcmFwcGVyO1xuICAgICAgaWYgKE1hdGguYWJzKGRhdGEuc3BpblkpID4gMCkge1xuICAgICAgICB2YXIgY3VycmVudFNjcm9sbFRvcCA9IGJvZHlXcmFwcGVyLnNjcm9sbFRvcDtcbiAgICAgICAgaWYgKGRhdGEucGl4ZWxZIDwgMCAmJiBjdXJyZW50U2Nyb2xsVG9wICE9PSAwKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5waXhlbFkgPiAwICYmIGJvZHlXcmFwcGVyLnNjcm9sbEhlaWdodCAtIGJvZHlXcmFwcGVyLmNsaWVudEhlaWdodCA+IGN1cnJlbnRTY3JvbGxUb3ApIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGJvZHlXcmFwcGVyLnNjcm9sbFRvcCArPSBNYXRoLmNlaWwoZGF0YS5waXhlbFkgLyA1KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJvZHlXcmFwcGVyLnNjcm9sbExlZnQgKz0gTWF0aC5jZWlsKGRhdGEucGl4ZWxYIC8gNSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVIZWFkZXJGb290ZXJNb3VzZXdoZWVsOiBmdW5jdGlvbiBoYW5kbGVIZWFkZXJGb290ZXJNb3VzZXdoZWVsKGV2ZW50LCBkYXRhKSB7XG4gICAgICB2YXIgcGl4ZWxYID0gZGF0YS5waXhlbFgsXG4gICAgICAgICAgcGl4ZWxZID0gZGF0YS5waXhlbFk7XG5cbiAgICAgIGlmIChNYXRoLmFicyhwaXhlbFgpID49IE1hdGguYWJzKHBpeGVsWSkpIHtcbiAgICAgICAgdGhpcy5ib2R5V3JhcHBlci5zY3JvbGxMZWZ0ICs9IGRhdGEucGl4ZWxYIC8gNTtcbiAgICAgIH1cbiAgICB9LFxuXG5cbiAgICAvLyBUT0RPIOS9v+eUqCBDU1MgdHJhbnNmb3JtXG4gICAgc3luY1Bvc3Rpb246IGZ1bmN0aW9uIHN5bmNQb3N0aW9uKCkge1xuICAgICAgdmFyIF9ib2R5V3JhcHBlciA9IHRoaXMuYm9keVdyYXBwZXIsXG4gICAgICAgICAgc2Nyb2xsTGVmdCA9IF9ib2R5V3JhcHBlci5zY3JvbGxMZWZ0LFxuICAgICAgICAgIHNjcm9sbFRvcCA9IF9ib2R5V3JhcHBlci5zY3JvbGxUb3AsXG4gICAgICAgICAgb2Zmc2V0V2lkdGggPSBfYm9keVdyYXBwZXIub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgc2Nyb2xsV2lkdGggPSBfYm9keVdyYXBwZXIuc2Nyb2xsV2lkdGg7XG4gICAgICB2YXIgXyRyZWZzID0gdGhpcy4kcmVmcyxcbiAgICAgICAgICBoZWFkZXJXcmFwcGVyID0gXyRyZWZzLmhlYWRlcldyYXBwZXIsXG4gICAgICAgICAgZm9vdGVyV3JhcHBlciA9IF8kcmVmcy5mb290ZXJXcmFwcGVyLFxuICAgICAgICAgIGZpeGVkQm9keVdyYXBwZXIgPSBfJHJlZnMuZml4ZWRCb2R5V3JhcHBlcixcbiAgICAgICAgICByaWdodEZpeGVkQm9keVdyYXBwZXIgPSBfJHJlZnMucmlnaHRGaXhlZEJvZHlXcmFwcGVyO1xuXG4gICAgICBpZiAoaGVhZGVyV3JhcHBlcikgaGVhZGVyV3JhcHBlci5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICAgIGlmIChmb290ZXJXcmFwcGVyKSBmb290ZXJXcmFwcGVyLnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgICAgaWYgKGZpeGVkQm9keVdyYXBwZXIpIGZpeGVkQm9keVdyYXBwZXIuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICAgICAgaWYgKHJpZ2h0Rml4ZWRCb2R5V3JhcHBlcikgcmlnaHRGaXhlZEJvZHlXcmFwcGVyLnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICAgIHZhciBtYXhTY3JvbGxMZWZ0UG9zaXRpb24gPSBzY3JvbGxXaWR0aCAtIG9mZnNldFdpZHRoIC0gMTtcbiAgICAgIGlmIChzY3JvbGxMZWZ0ID49IG1heFNjcm9sbExlZnRQb3NpdGlvbikge1xuICAgICAgICB0aGlzLnNjcm9sbFBvc2l0aW9uID0gJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSBpZiAoc2Nyb2xsTGVmdCA9PT0gMCkge1xuICAgICAgICB0aGlzLnNjcm9sbFBvc2l0aW9uID0gJ2xlZnQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zY3JvbGxQb3NpdGlvbiA9ICdtaWRkbGUnO1xuICAgICAgfVxuICAgIH0sXG5cblxuICAgIHRocm90dGxlU3luY1Bvc3Rpb246IE9iamVjdChleHRlcm5hbF90aHJvdHRsZV9kZWJvdW5jZV9bXCJ0aHJvdHRsZVwiXSkoMTYsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuc3luY1Bvc3Rpb24oKTtcbiAgICB9KSxcblxuICAgIG9uU2Nyb2xsOiBmdW5jdGlvbiBvblNjcm9sbChldnQpIHtcbiAgICAgIHZhciByYWYgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO1xuICAgICAgaWYgKCFyYWYpIHtcbiAgICAgICAgdGhpcy50aHJvdHRsZVN5bmNQb3N0aW9uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByYWYodGhpcy5zeW5jUG9zdGlvbik7XG4gICAgICB9XG4gICAgfSxcbiAgICBiaW5kRXZlbnRzOiBmdW5jdGlvbiBiaW5kRXZlbnRzKCkge1xuICAgICAgdGhpcy5ib2R5V3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICBpZiAodGhpcy5maXQpIHtcbiAgICAgICAgT2JqZWN0KHJlc2l6ZV9ldmVudF9bXCJhZGRSZXNpemVMaXN0ZW5lclwiXSkodGhpcy4kZWwsIHRoaXMucmVzaXplTGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdW5iaW5kRXZlbnRzOiBmdW5jdGlvbiB1bmJpbmRFdmVudHMoKSB7XG4gICAgICB0aGlzLmJvZHlXcmFwcGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGlmICh0aGlzLmZpdCkge1xuICAgICAgICBPYmplY3QocmVzaXplX2V2ZW50X1tcInJlbW92ZVJlc2l6ZUxpc3RlbmVyXCJdKSh0aGlzLiRlbCwgdGhpcy5yZXNpemVMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgfSxcbiAgICByZXNpemVMaXN0ZW5lcjogZnVuY3Rpb24gcmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICBpZiAoIXRoaXMuJHJlYWR5KSByZXR1cm47XG4gICAgICB2YXIgc2hvdWxkVXBkYXRlTGF5b3V0ID0gZmFsc2U7XG4gICAgICB2YXIgZWwgPSB0aGlzLiRlbDtcbiAgICAgIHZhciBfcmVzaXplU3RhdGUgPSB0aGlzLnJlc2l6ZVN0YXRlLFxuICAgICAgICAgIG9sZFdpZHRoID0gX3Jlc2l6ZVN0YXRlLndpZHRoLFxuICAgICAgICAgIG9sZEhlaWdodCA9IF9yZXNpemVTdGF0ZS5oZWlnaHQ7XG5cblxuICAgICAgdmFyIHdpZHRoID0gZWwub2Zmc2V0V2lkdGg7XG4gICAgICBpZiAob2xkV2lkdGggIT09IHdpZHRoKSB7XG4gICAgICAgIHNob3VsZFVwZGF0ZUxheW91dCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBoZWlnaHQgPSBlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICBpZiAoKHRoaXMuaGVpZ2h0IHx8IHRoaXMuc2hvdWxkVXBkYXRlSGVpZ2h0KSAmJiBvbGRIZWlnaHQgIT09IGhlaWdodCkge1xuICAgICAgICBzaG91bGRVcGRhdGVMYXlvdXQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkVXBkYXRlTGF5b3V0KSB7XG4gICAgICAgIHRoaXMucmVzaXplU3RhdGUud2lkdGggPSB3aWR0aDtcbiAgICAgICAgdGhpcy5yZXNpemVTdGF0ZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIHRoaXMuZG9MYXlvdXQoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRvTGF5b3V0OiBmdW5jdGlvbiBkb0xheW91dCgpIHtcbiAgICAgIGlmICh0aGlzLnNob3VsZFVwZGF0ZUhlaWdodCkge1xuICAgICAgICB0aGlzLmxheW91dC51cGRhdGVFbHNIZWlnaHQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGF5b3V0LnVwZGF0ZUNvbHVtbnNXaWR0aCgpO1xuICAgIH0sXG4gICAgc29ydDogZnVuY3Rpb24gc29ydChwcm9wLCBvcmRlcikge1xuICAgICAgdGhpcy5zdG9yZS5jb21taXQoJ3NvcnQnLCB7IHByb3A6IHByb3AsIG9yZGVyOiBvcmRlciB9KTtcbiAgICB9LFxuICAgIHRvZ2dsZUFsbFNlbGVjdGlvbjogZnVuY3Rpb24gdG9nZ2xlQWxsU2VsZWN0aW9uKCkge1xuICAgICAgdGhpcy5zdG9yZS5jb21taXQoJ3RvZ2dsZUFsbFNlbGVjdGlvbicpO1xuICAgIH1cbiAgfSxcblxuICBjb21wdXRlZDogdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19leHRlbmRzKHtcbiAgICB0YWJsZVNpemU6IGZ1bmN0aW9uIHRhYmxlU2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7XG4gICAgfSxcbiAgICBib2R5V3JhcHBlcjogZnVuY3Rpb24gYm9keVdyYXBwZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcmVmcy5ib2R5V3JhcHBlcjtcbiAgICB9LFxuICAgIHNob3VsZFVwZGF0ZUhlaWdodDogZnVuY3Rpb24gc2hvdWxkVXBkYXRlSGVpZ2h0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGVpZ2h0IHx8IHRoaXMubWF4SGVpZ2h0IHx8IHRoaXMuZml4ZWRDb2x1bW5zLmxlbmd0aCA+IDAgfHwgdGhpcy5yaWdodEZpeGVkQ29sdW1ucy5sZW5ndGggPiAwO1xuICAgIH0sXG4gICAgYm9keVdpZHRoOiBmdW5jdGlvbiBib2R5V2lkdGgoKSB7XG4gICAgICB2YXIgX2xheW91dCA9IHRoaXMubGF5b3V0LFxuICAgICAgICAgIGJvZHlXaWR0aCA9IF9sYXlvdXQuYm9keVdpZHRoLFxuICAgICAgICAgIHNjcm9sbFkgPSBfbGF5b3V0LnNjcm9sbFksXG4gICAgICAgICAgZ3V0dGVyV2lkdGggPSBfbGF5b3V0Lmd1dHRlcldpZHRoO1xuXG4gICAgICByZXR1cm4gYm9keVdpZHRoID8gYm9keVdpZHRoIC0gKHNjcm9sbFkgPyBndXR0ZXJXaWR0aCA6IDApICsgJ3B4JyA6ICcnO1xuICAgIH0sXG4gICAgYm9keUhlaWdodDogZnVuY3Rpb24gYm9keUhlaWdodCgpIHtcbiAgICAgIHZhciBfbGF5b3V0MiA9IHRoaXMubGF5b3V0LFxuICAgICAgICAgIF9sYXlvdXQyJGhlYWRlckhlaWdodCA9IF9sYXlvdXQyLmhlYWRlckhlaWdodCxcbiAgICAgICAgICBoZWFkZXJIZWlnaHQgPSBfbGF5b3V0MiRoZWFkZXJIZWlnaHQgPT09IHVuZGVmaW5lZCA/IDAgOiBfbGF5b3V0MiRoZWFkZXJIZWlnaHQsXG4gICAgICAgICAgYm9keUhlaWdodCA9IF9sYXlvdXQyLmJvZHlIZWlnaHQsXG4gICAgICAgICAgX2xheW91dDIkZm9vdGVySGVpZ2h0ID0gX2xheW91dDIuZm9vdGVySGVpZ2h0LFxuICAgICAgICAgIGZvb3RlckhlaWdodCA9IF9sYXlvdXQyJGZvb3RlckhlaWdodCA9PT0gdW5kZWZpbmVkID8gMCA6IF9sYXlvdXQyJGZvb3RlckhlaWdodDtcblxuICAgICAgaWYgKHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVpZ2h0OiBib2R5SGVpZ2h0ID8gYm9keUhlaWdodCArICdweCcgOiAnJ1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1heEhlaWdodCkge1xuICAgICAgICB2YXIgbWF4SGVpZ2h0ID0gcGFyc2VIZWlnaHQodGhpcy5tYXhIZWlnaHQpO1xuICAgICAgICBpZiAodHlwZW9mIG1heEhlaWdodCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ21heC1oZWlnaHQnOiBtYXhIZWlnaHQgLSBmb290ZXJIZWlnaHQgLSAodGhpcy5zaG93SGVhZGVyID8gaGVhZGVySGVpZ2h0IDogMCkgKyAncHgnXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG4gICAgZml4ZWRCb2R5SGVpZ2h0OiBmdW5jdGlvbiBmaXhlZEJvZHlIZWlnaHQoKSB7XG4gICAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMubGF5b3V0LmZpeGVkQm9keUhlaWdodCA/IHRoaXMubGF5b3V0LmZpeGVkQm9keUhlaWdodCArICdweCcgOiAnJ1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1heEhlaWdodCkge1xuICAgICAgICB2YXIgbWF4SGVpZ2h0ID0gcGFyc2VIZWlnaHQodGhpcy5tYXhIZWlnaHQpO1xuICAgICAgICBpZiAodHlwZW9mIG1heEhlaWdodCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBtYXhIZWlnaHQgPSB0aGlzLmxheW91dC5zY3JvbGxYID8gbWF4SGVpZ2h0IC0gdGhpcy5sYXlvdXQuZ3V0dGVyV2lkdGggOiBtYXhIZWlnaHQ7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0hlYWRlcikge1xuICAgICAgICAgICAgbWF4SGVpZ2h0IC09IHRoaXMubGF5b3V0LmhlYWRlckhlaWdodDtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWF4SGVpZ2h0IC09IHRoaXMubGF5b3V0LmZvb3RlckhlaWdodDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ21heC1oZWlnaHQnOiBtYXhIZWlnaHQgKyAncHgnXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG4gICAgZml4ZWRIZWlnaHQ6IGZ1bmN0aW9uIGZpeGVkSGVpZ2h0KCkge1xuICAgICAgaWYgKHRoaXMubWF4SGVpZ2h0KSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dTdW1tYXJ5KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJvdHRvbTogMFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBib3R0b206IHRoaXMubGF5b3V0LnNjcm9sbFggJiYgdGhpcy5kYXRhLmxlbmd0aCA/IHRoaXMubGF5b3V0Lmd1dHRlcldpZHRoICsgJ3B4JyA6ICcnXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zaG93U3VtbWFyeSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMubGF5b3V0LnRhYmxlSGVpZ2h0ID8gdGhpcy5sYXlvdXQudGFibGVIZWlnaHQgKyAncHgnIDogJydcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmxheW91dC52aWV3cG9ydEhlaWdodCA/IHRoaXMubGF5b3V0LnZpZXdwb3J0SGVpZ2h0ICsgJ3B4JyA6ICcnXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBlbXB0eUJsb2NrU3R5bGU6IGZ1bmN0aW9uIGVtcHR5QmxvY2tTdHlsZSgpIHtcbiAgICAgIGlmICh0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgaWYgKHRoaXMubGF5b3V0LmFwcGVuZEhlaWdodCkge1xuICAgICAgICBoZWlnaHQgPSAnY2FsYygxMDAlIC0gJyArIHRoaXMubGF5b3V0LmFwcGVuZEhlaWdodCArICdweCknO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHRoaXMuYm9keVdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9XG4gIH0sIG1hcFN0YXRlcyh7XG4gICAgc2VsZWN0aW9uOiAnc2VsZWN0aW9uJyxcbiAgICBjb2x1bW5zOiAnY29sdW1ucycsXG4gICAgdGFibGVEYXRhOiAnZGF0YScsXG4gICAgZml4ZWRDb2x1bW5zOiAnZml4ZWRDb2x1bW5zJyxcbiAgICByaWdodEZpeGVkQ29sdW1uczogJ3JpZ2h0Rml4ZWRDb2x1bW5zJ1xuICB9KSksXG5cbiAgd2F0Y2g6IHtcbiAgICBoZWlnaHQ6IHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy5sYXlvdXQuc2V0SGVpZ2h0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgbWF4SGVpZ2h0OiB7XG4gICAgICBpbW1lZGlhdGU6IHRydWUsXG4gICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHZhbHVlKSB7XG4gICAgICAgIHRoaXMubGF5b3V0LnNldE1heEhlaWdodCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGN1cnJlbnRSb3dLZXk6IHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsdWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvd0tleSkgcmV0dXJuO1xuICAgICAgICB0aGlzLnN0b3JlLnNldEN1cnJlbnRSb3dLZXkodmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICBpbW1lZGlhdGU6IHRydWUsXG4gICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuY29tbWl0KCdzZXREYXRhJywgdmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBleHBhbmRSb3dLZXlzOiB7XG4gICAgICBpbW1lZGlhdGU6IHRydWUsXG4gICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbCkge1xuICAgICAgICBpZiAobmV3VmFsKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5zZXRFeHBhbmRSb3dLZXlzQWRhcHRlcihuZXdWYWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMudGFibGVJZCA9ICdlbC10YWJsZV8nICsgdGFibGVJZFNlZWQrKztcbiAgICB0aGlzLmRlYm91bmNlZFVwZGF0ZUxheW91dCA9IE9iamVjdChleHRlcm5hbF90aHJvdHRsZV9kZWJvdW5jZV9bXCJkZWJvdW5jZVwiXSkoNTAsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5kb0xheW91dCgpO1xuICAgIH0pO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgdGhpcy5iaW5kRXZlbnRzKCk7XG4gICAgdGhpcy5zdG9yZS51cGRhdGVDb2x1bW5zKCk7XG4gICAgdGhpcy5kb0xheW91dCgpO1xuXG4gICAgdGhpcy5yZXNpemVTdGF0ZSA9IHtcbiAgICAgIHdpZHRoOiB0aGlzLiRlbC5vZmZzZXRXaWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy4kZWwub2Zmc2V0SGVpZ2h0XG4gICAgfTtcblxuICAgIC8vIGluaXQgZmlsdGVyc1xuICAgIHRoaXMuc3RvcmUuc3RhdGVzLmNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgICBpZiAoY29sdW1uLmZpbHRlcmVkVmFsdWUgJiYgY29sdW1uLmZpbHRlcmVkVmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIF90aGlzMi5zdG9yZS5jb21taXQoJ2ZpbHRlckNoYW5nZScsIHtcbiAgICAgICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgICAgICB2YWx1ZXM6IGNvbHVtbi5maWx0ZXJlZFZhbHVlLFxuICAgICAgICAgIHNpbGVudDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuJHJlYWR5ID0gdHJ1ZTtcbiAgfSxcbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgdGhpcy51bmJpbmRFdmVudHMoKTtcbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICB2YXIgX3RyZWVQcm9wcyA9IHRoaXMudHJlZVByb3BzLFxuICAgICAgICBfdHJlZVByb3BzJGhhc0NoaWxkcmUgPSBfdHJlZVByb3BzLmhhc0NoaWxkcmVuLFxuICAgICAgICBoYXNDaGlsZHJlbiA9IF90cmVlUHJvcHMkaGFzQ2hpbGRyZSA9PT0gdW5kZWZpbmVkID8gJ2hhc0NoaWxkcmVuJyA6IF90cmVlUHJvcHMkaGFzQ2hpbGRyZSxcbiAgICAgICAgX3RyZWVQcm9wcyRjaGlsZHJlbiA9IF90cmVlUHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIGNoaWxkcmVuID0gX3RyZWVQcm9wcyRjaGlsZHJlbiA9PT0gdW5kZWZpbmVkID8gJ2NoaWxkcmVuJyA6IF90cmVlUHJvcHMkY2hpbGRyZW47XG5cbiAgICB0aGlzLnN0b3JlID0gY3JlYXRlU3RvcmUodGhpcywge1xuICAgICAgcm93S2V5OiB0aGlzLnJvd0tleSxcbiAgICAgIGRlZmF1bHRFeHBhbmRBbGw6IHRoaXMuZGVmYXVsdEV4cGFuZEFsbCxcbiAgICAgIHNlbGVjdE9uSW5kZXRlcm1pbmF0ZTogdGhpcy5zZWxlY3RPbkluZGV0ZXJtaW5hdGUsXG4gICAgICAvLyBUcmVlVGFibGUg55qE55u45YWz6YWN572uXG4gICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgbGF6eTogdGhpcy5sYXp5LFxuICAgICAgbGF6eUNvbHVtbklkZW50aWZpZXI6IGhhc0NoaWxkcmVuLFxuICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lOiBjaGlsZHJlblxuICAgIH0pO1xuICAgIHZhciBsYXlvdXQgPSBuZXcgdGFibGVfbGF5b3V0KHtcbiAgICAgIHN0b3JlOiB0aGlzLnN0b3JlLFxuICAgICAgdGFibGU6IHRoaXMsXG4gICAgICBmaXQ6IHRoaXMuZml0LFxuICAgICAgc2hvd0hlYWRlcjogdGhpcy5zaG93SGVhZGVyXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxheW91dDogbGF5b3V0LFxuICAgICAgaXNIaWRkZW46IGZhbHNlLFxuICAgICAgcmVuZGVyRXhwYW5kZWQ6IG51bGwsXG4gICAgICByZXNpemVQcm94eVZpc2libGU6IGZhbHNlLFxuICAgICAgcmVzaXplU3RhdGU6IHtcbiAgICAgICAgd2lkdGg6IG51bGwsXG4gICAgICAgIGhlaWdodDogbnVsbFxuICAgICAgfSxcbiAgICAgIC8vIOaYr+WQpuaLpeacieWkmue6p+ihqOWktFxuICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICBzY3JvbGxQb3NpdGlvbjogJ2xlZnQnXG4gICAgfTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy90YWJsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHRhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy90YWJsZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB0YWJsZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY190YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdGFibGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF80OTNmZTM0ZV9yZW5kZXIsXG4gIHRhYmxldnVlX3R5cGVfdGVtcGxhdGVfaWRfNDkzZmUzNGVfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciB0YWJsZV9hcGk7IH1cbnRhYmxlX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvdGFibGUvc3JjL3RhYmxlLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfdGFibGUgPSAodGFibGVfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJsZS9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zcmNfdGFibGUuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzcmNfdGFibGUubmFtZSwgc3JjX3RhYmxlKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3RhYmxlID0gKHNyY190YWJsZSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYmxlL3NyYy9jb25maWcuanNcblxuXG52YXIgY2VsbFN0YXJ0cyA9IHtcbiAgZGVmYXVsdDoge1xuICAgIG9yZGVyOiAnJ1xuICB9LFxuICBzZWxlY3Rpb246IHtcbiAgICB3aWR0aDogNDgsXG4gICAgbWluV2lkdGg6IDQ4LFxuICAgIHJlYWxXaWR0aDogNDgsXG4gICAgb3JkZXI6ICcnLFxuICAgIGNsYXNzTmFtZTogJ2VsLXRhYmxlLWNvbHVtbi0tc2VsZWN0aW9uJ1xuICB9LFxuICBleHBhbmQ6IHtcbiAgICB3aWR0aDogNDgsXG4gICAgbWluV2lkdGg6IDQ4LFxuICAgIHJlYWxXaWR0aDogNDgsXG4gICAgb3JkZXI6ICcnXG4gIH0sXG4gIGluZGV4OiB7XG4gICAgd2lkdGg6IDQ4LFxuICAgIG1pbldpZHRoOiA0OCxcbiAgICByZWFsV2lkdGg6IDQ4LFxuICAgIG9yZGVyOiAnJ1xuICB9XG59O1xuXG4vLyDov5nkupvpgInpobnkuI3lupTor6Xooqvopobnm5ZcbnZhciBjZWxsRm9yY2VkID0ge1xuICBzZWxlY3Rpb246IHtcbiAgICByZW5kZXJIZWFkZXI6IGZ1bmN0aW9uIHJlbmRlckhlYWRlcihoLCBfcmVmKSB7XG4gICAgICB2YXIgc3RvcmUgPSBfcmVmLnN0b3JlO1xuXG4gICAgICByZXR1cm4gaCgnZWwtY2hlY2tib3gnLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgZGlzYWJsZWQ6IHN0b3JlLnN0YXRlcy5kYXRhICYmIHN0b3JlLnN0YXRlcy5kYXRhLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICBpbmRldGVybWluYXRlOiBzdG9yZS5zdGF0ZXMuc2VsZWN0aW9uLmxlbmd0aCA+IDAgJiYgIXRoaXMuaXNBbGxTZWxlY3RlZCxcblxuICAgICAgICAgIHZhbHVlOiB0aGlzLmlzQWxsU2VsZWN0ZWQgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICAnaW5wdXQnOiB0aGlzLnRvZ2dsZUFsbFNlbGVjdGlvblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJlbmRlckNlbGw6IGZ1bmN0aW9uIHJlbmRlckNlbGwoaCwgX3JlZjIpIHtcbiAgICAgIHZhciByb3cgPSBfcmVmMi5yb3csXG4gICAgICAgICAgY29sdW1uID0gX3JlZjIuY29sdW1uLFxuICAgICAgICAgIGlzU2VsZWN0ZWQgPSBfcmVmMi5pc1NlbGVjdGVkLFxuICAgICAgICAgIHN0b3JlID0gX3JlZjIuc3RvcmUsXG4gICAgICAgICAgJGluZGV4ID0gX3JlZjIuJGluZGV4O1xuXG4gICAgICByZXR1cm4gaCgnZWwtY2hlY2tib3gnLCB7XG4gICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAgJ2NsaWNrJzogZnVuY3Rpb24gY2xpY2soZXZlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgdmFsdWU6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAgZGlzYWJsZWQ6IGNvbHVtbi5zZWxlY3RhYmxlID8gIWNvbHVtbi5zZWxlY3RhYmxlLmNhbGwobnVsbCwgcm93LCAkaW5kZXgpIDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICAnaW5wdXQnOiBmdW5jdGlvbiBpbnB1dCgpIHtcbiAgICAgICAgICAgIHN0b3JlLmNvbW1pdCgncm93U2VsZWN0ZWRDaGFuZ2VkJywgcm93KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc29ydGFibGU6IGZhbHNlLFxuICAgIHJlc2l6YWJsZTogZmFsc2VcbiAgfSxcbiAgaW5kZXg6IHtcbiAgICByZW5kZXJIZWFkZXI6IGZ1bmN0aW9uIHJlbmRlckhlYWRlcihoLCBfcmVmMykge1xuICAgICAgdmFyIGNvbHVtbiA9IF9yZWYzLmNvbHVtbjtcblxuICAgICAgcmV0dXJuIGNvbHVtbi5sYWJlbCB8fCAnIyc7XG4gICAgfSxcbiAgICByZW5kZXJDZWxsOiBmdW5jdGlvbiByZW5kZXJDZWxsKGgsIF9yZWY0KSB7XG4gICAgICB2YXIgJGluZGV4ID0gX3JlZjQuJGluZGV4LFxuICAgICAgICAgIGNvbHVtbiA9IF9yZWY0LmNvbHVtbjtcblxuICAgICAgdmFyIGkgPSAkaW5kZXggKyAxO1xuICAgICAgdmFyIGluZGV4ID0gY29sdW1uLmluZGV4O1xuXG4gICAgICBpZiAodHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBpID0gJGluZGV4ICsgaW5kZXg7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpID0gaW5kZXgoJGluZGV4KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGgoJ2RpdicsIFtpXSk7XG4gICAgfSxcbiAgICBzb3J0YWJsZTogZmFsc2VcbiAgfSxcbiAgZXhwYW5kOiB7XG4gICAgcmVuZGVySGVhZGVyOiBmdW5jdGlvbiByZW5kZXJIZWFkZXIoaCwgX3JlZjUpIHtcbiAgICAgIHZhciBjb2x1bW4gPSBfcmVmNS5jb2x1bW47XG5cbiAgICAgIHJldHVybiBjb2x1bW4ubGFiZWwgfHwgJyc7XG4gICAgfSxcbiAgICByZW5kZXJDZWxsOiBmdW5jdGlvbiByZW5kZXJDZWxsKGgsIF9yZWY2KSB7XG4gICAgICB2YXIgcm93ID0gX3JlZjYucm93LFxuICAgICAgICAgIHN0b3JlID0gX3JlZjYuc3RvcmUsXG4gICAgICAgICAgaXNFeHBhbmRlZCA9IF9yZWY2LmlzRXhwYW5kZWQ7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gWydlbC10YWJsZV9fZXhwYW5kLWljb24nXTtcbiAgICAgIGlmIChpc0V4cGFuZGVkKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnZWwtdGFibGVfX2V4cGFuZC1pY29uLS1leHBhbmRlZCcpO1xuICAgICAgfVxuICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBzdG9yZS50b2dnbGVSb3dFeHBhbnNpb24ocm93KTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gaChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHsgJ2NsYXNzJzogY2xhc3NlcyxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgJ2NsaWNrJzogY2FsbGJhY2tcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtoKCdpJywgeyAnY2xhc3MnOiAnZWwtaWNvbiBlbC1pY29uLWFycm93LXJpZ2h0JyB9KV1cbiAgICAgICk7XG4gICAgfSxcbiAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgcmVzaXphYmxlOiBmYWxzZSxcbiAgICBjbGFzc05hbWU6ICdlbC10YWJsZV9fZXhwYW5kLWNvbHVtbidcbiAgfVxufTtcblxuZnVuY3Rpb24gZGVmYXVsdFJlbmRlckNlbGwoaCwgX3JlZjcpIHtcbiAgdmFyIHJvdyA9IF9yZWY3LnJvdyxcbiAgICAgIGNvbHVtbiA9IF9yZWY3LmNvbHVtbixcbiAgICAgICRpbmRleCA9IF9yZWY3LiRpbmRleDtcblxuICB2YXIgcHJvcGVydHkgPSBjb2x1bW4ucHJvcGVydHk7XG4gIHZhciB2YWx1ZSA9IHByb3BlcnR5ICYmIE9iamVjdCh1dGlsX1tcImdldFByb3BCeVBhdGhcIl0pKHJvdywgcHJvcGVydHkpLnY7XG4gIGlmIChjb2x1bW4gJiYgY29sdW1uLmZvcm1hdHRlcikge1xuICAgIHJldHVybiBjb2x1bW4uZm9ybWF0dGVyKHJvdywgY29sdW1uLCB2YWx1ZSwgJGluZGV4KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHRyZWVDZWxsUHJlZml4KGgsIF9yZWY4KSB7XG4gIHZhciByb3cgPSBfcmVmOC5yb3csXG4gICAgICB0cmVlTm9kZSA9IF9yZWY4LnRyZWVOb2RlLFxuICAgICAgc3RvcmUgPSBfcmVmOC5zdG9yZTtcblxuICBpZiAoIXRyZWVOb2RlKSByZXR1cm4gbnVsbDtcbiAgdmFyIGVsZSA9IFtdO1xuICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbiBjYWxsYmFjayhlKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBzdG9yZS5sb2FkT3JUb2dnbGUocm93KTtcbiAgfTtcbiAgaWYgKHRyZWVOb2RlLmluZGVudCkge1xuICAgIGVsZS5wdXNoKGgoJ3NwYW4nLCB7ICdjbGFzcyc6ICdlbC10YWJsZV9faW5kZW50Jywgc3R5bGU6IHsgJ3BhZGRpbmctbGVmdCc6IHRyZWVOb2RlLmluZGVudCArICdweCcgfSB9KSk7XG4gIH1cbiAgaWYgKHR5cGVvZiB0cmVlTm9kZS5leHBhbmRlZCA9PT0gJ2Jvb2xlYW4nICYmICF0cmVlTm9kZS5ub0xhenlDaGlsZHJlbikge1xuICAgIHZhciBleHBhbmRDbGFzc2VzID0gWydlbC10YWJsZV9fZXhwYW5kLWljb24nLCB0cmVlTm9kZS5leHBhbmRlZCA/ICdlbC10YWJsZV9fZXhwYW5kLWljb24tLWV4cGFuZGVkJyA6ICcnXTtcbiAgICB2YXIgaWNvbkNsYXNzZXMgPSBbJ2VsLWljb24tYXJyb3ctcmlnaHQnXTtcbiAgICBpZiAodHJlZU5vZGUubG9hZGluZykge1xuICAgICAgaWNvbkNsYXNzZXMgPSBbJ2VsLWljb24tbG9hZGluZyddO1xuICAgIH1cbiAgICBlbGUucHVzaChoKFxuICAgICAgJ2RpdicsXG4gICAgICB7ICdjbGFzcyc6IGV4cGFuZENsYXNzZXMsXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgJ2NsaWNrJzogY2FsbGJhY2tcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtoKCdpJywgeyAnY2xhc3MnOiBpY29uQ2xhc3NlcyB9KV1cbiAgICApKTtcbiAgfSBlbHNlIHtcbiAgICBlbGUucHVzaChoKCdzcGFuJywgeyAnY2xhc3MnOiAnZWwtdGFibGVfX3BsYWNlaG9sZGVyJyB9KSk7XG4gIH1cbiAgcmV0dXJuIGVsZTtcbn1cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFibGUvc3JjL3RhYmxlLWNvbHVtbi5qc1xudmFyIHRhYmxlX2NvbHVtbl9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuXG5cblxuXG52YXIgY29sdW1uSWRTZWVkID0gMTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGFibGVfY29sdW1uID0gKHtcbiAgbmFtZTogJ0VsVGFibGVDb2x1bW4nLFxuXG4gIHByb3BzOiB7XG4gICAgdHlwZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RlZmF1bHQnXG4gICAgfSxcbiAgICBsYWJlbDogU3RyaW5nLFxuICAgIGNsYXNzTmFtZTogU3RyaW5nLFxuICAgIGxhYmVsQ2xhc3NOYW1lOiBTdHJpbmcsXG4gICAgcHJvcGVydHk6IFN0cmluZyxcbiAgICBwcm9wOiBTdHJpbmcsXG4gICAgd2lkdGg6IHt9LFxuICAgIG1pbldpZHRoOiB7fSxcbiAgICByZW5kZXJIZWFkZXI6IEZ1bmN0aW9uLFxuICAgIHNvcnRhYmxlOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBzb3J0TWV0aG9kOiBGdW5jdGlvbixcbiAgICBzb3J0Qnk6IFtTdHJpbmcsIEZ1bmN0aW9uLCBBcnJheV0sXG4gICAgcmVzaXphYmxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgY29sdW1uS2V5OiBTdHJpbmcsXG4gICAgYWxpZ246IFN0cmluZyxcbiAgICBoZWFkZXJBbGlnbjogU3RyaW5nLFxuICAgIHNob3dUb29sdGlwV2hlbk92ZXJmbG93OiBCb29sZWFuLFxuICAgIHNob3dPdmVyZmxvd1Rvb2x0aXA6IEJvb2xlYW4sXG4gICAgZml4ZWQ6IFtCb29sZWFuLCBTdHJpbmddLFxuICAgIGZvcm1hdHRlcjogRnVuY3Rpb24sXG4gICAgc2VsZWN0YWJsZTogRnVuY3Rpb24sXG4gICAgcmVzZXJ2ZVNlbGVjdGlvbjogQm9vbGVhbixcbiAgICBmaWx0ZXJNZXRob2Q6IEZ1bmN0aW9uLFxuICAgIGZpbHRlcmVkVmFsdWU6IEFycmF5LFxuICAgIGZpbHRlcnM6IEFycmF5LFxuICAgIGZpbHRlclBsYWNlbWVudDogU3RyaW5nLFxuICAgIGZpbHRlck11bHRpcGxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgaW5kZXg6IFtOdW1iZXIsIEZ1bmN0aW9uXSxcbiAgICBzb3J0T3JkZXJzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gWydhc2NlbmRpbmcnLCAnZGVzY2VuZGluZycsIG51bGxdO1xuICAgICAgfSxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gdmFsLmV2ZXJ5KGZ1bmN0aW9uIChvcmRlcikge1xuICAgICAgICAgIHJldHVybiBbJ2FzY2VuZGluZycsICdkZXNjZW5kaW5nJywgbnVsbF0uaW5kZXhPZihvcmRlcikgPiAtMTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzU3ViQ29sdW1uOiBmYWxzZSxcbiAgICAgIGNvbHVtbnM6IFtdXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB7XG4gICAgb3duZXI6IGZ1bmN0aW9uIG93bmVyKCkge1xuICAgICAgdmFyIHBhcmVudCA9IHRoaXMuJHBhcmVudDtcbiAgICAgIHdoaWxlIChwYXJlbnQgJiYgIXBhcmVudC50YWJsZUlkKSB7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9LFxuICAgIGNvbHVtbk9yVGFibGVQYXJlbnQ6IGZ1bmN0aW9uIGNvbHVtbk9yVGFibGVQYXJlbnQoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudCAmJiAhcGFyZW50LnRhYmxlSWQgJiYgIXBhcmVudC5jb2x1bW5JZCkge1xuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfSxcbiAgICByZWFsV2lkdGg6IGZ1bmN0aW9uIHJlYWxXaWR0aCgpIHtcbiAgICAgIHJldHVybiBwYXJzZVdpZHRoKHRoaXMud2lkdGgpO1xuICAgIH0sXG4gICAgcmVhbE1pbldpZHRoOiBmdW5jdGlvbiByZWFsTWluV2lkdGgoKSB7XG4gICAgICByZXR1cm4gcGFyc2VNaW5XaWR0aCh0aGlzLm1pbldpZHRoKTtcbiAgICB9LFxuICAgIHJlYWxBbGlnbjogZnVuY3Rpb24gcmVhbEFsaWduKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWxpZ24gPyAnaXMtJyArIHRoaXMuYWxpZ24gOiBudWxsO1xuICAgIH0sXG4gICAgcmVhbEhlYWRlckFsaWduOiBmdW5jdGlvbiByZWFsSGVhZGVyQWxpZ24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5oZWFkZXJBbGlnbiA/ICdpcy0nICsgdGhpcy5oZWFkZXJBbGlnbiA6IHRoaXMucmVhbEFsaWduO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZ2V0UHJvcHNEYXRhOiBmdW5jdGlvbiBnZXRQcm9wc0RhdGEoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcHJvcHMgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgcHJvcHNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9wcy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXIpKSB7XG4gICAgICAgICAgY3VyLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgcHJldltrZXldID0gX3RoaXNba2V5XTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH0sIHt9KTtcbiAgICB9LFxuICAgIGdldENvbHVtbkVsSW5kZXg6IGZ1bmN0aW9uIGdldENvbHVtbkVsSW5kZXgoY2hpbGRyZW4sIGNoaWxkKSB7XG4gICAgICByZXR1cm4gW10uaW5kZXhPZi5jYWxsKGNoaWxkcmVuLCBjaGlsZCk7XG4gICAgfSxcbiAgICBzZXRDb2x1bW5XaWR0aDogZnVuY3Rpb24gc2V0Q29sdW1uV2lkdGgoY29sdW1uKSB7XG4gICAgICBpZiAodGhpcy5yZWFsV2lkdGgpIHtcbiAgICAgICAgY29sdW1uLndpZHRoID0gdGhpcy5yZWFsV2lkdGg7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZWFsTWluV2lkdGgpIHtcbiAgICAgICAgY29sdW1uLm1pbldpZHRoID0gdGhpcy5yZWFsTWluV2lkdGg7XG4gICAgICB9XG4gICAgICBpZiAoIWNvbHVtbi5taW5XaWR0aCkge1xuICAgICAgICBjb2x1bW4ubWluV2lkdGggPSA4MDtcbiAgICAgIH1cbiAgICAgIGNvbHVtbi5yZWFsV2lkdGggPSBjb2x1bW4ud2lkdGggPT09IHVuZGVmaW5lZCA/IGNvbHVtbi5taW5XaWR0aCA6IGNvbHVtbi53aWR0aDtcbiAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfSxcbiAgICBzZXRDb2x1bW5Gb3JjZWRQcm9wczogZnVuY3Rpb24gc2V0Q29sdW1uRm9yY2VkUHJvcHMoY29sdW1uKSB7XG4gICAgICAvLyDlr7nkuo7nibnlrprnsbvlnovnmoQgY29sdW1u77yM5p+Q5Lqb5bGe5oCn5LiN5YWB6K646K6+572uXG4gICAgICB2YXIgdHlwZSA9IGNvbHVtbi50eXBlO1xuICAgICAgdmFyIHNvdXJjZSA9IGNlbGxGb3JjZWRbdHlwZV0gfHwge307XG4gICAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgdmFyIHZhbHVlID0gc291cmNlW3Byb3BdO1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbHVtbltwcm9wXSA9IHByb3AgPT09ICdjbGFzc05hbWUnID8gY29sdW1uW3Byb3BdICsgJyAnICsgdmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29sdW1uO1xuICAgIH0sXG4gICAgc2V0Q29sdW1uUmVuZGVyczogZnVuY3Rpb24gc2V0Q29sdW1uUmVuZGVycyhjb2x1bW4pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgaCA9IHRoaXMuJGNyZWF0ZUVsZW1lbnQ7XG5cbiAgICAgIC8vIHJlbmRlckhlYWRlciDlsZ7mgKfkuI3mjqjojZDkvb/nlKjjgIJcbiAgICAgIGlmICh0aGlzLnJlbmRlckhlYWRlcikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tFbGVtZW50IFdhcm5dW1RhYmxlQ29sdW1uXUNvbXBhcmluZyB0byByZW5kZXItaGVhZGVyLCBzY29wZWQtc2xvdCBoZWFkZXIgaXMgZWFzaWVyIHRvIHVzZS4gV2UgcmVjb21tZW5kIHVzZXJzIHRvIHVzZSBzY29wZWQtc2xvdCBoZWFkZXIuJyk7XG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlICE9PSAnc2VsZWN0aW9uJykge1xuICAgICAgICBjb2x1bW4ucmVuZGVySGVhZGVyID0gZnVuY3Rpb24gKGgsIHNjb3BlKSB7XG4gICAgICAgICAgdmFyIHJlbmRlckhlYWRlciA9IF90aGlzMi4kc2NvcGVkU2xvdHMuaGVhZGVyO1xuICAgICAgICAgIHJldHVybiByZW5kZXJIZWFkZXIgPyByZW5kZXJIZWFkZXIoc2NvcGUpIDogY29sdW1uLmxhYmVsO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgb3JpZ2luUmVuZGVyQ2VsbCA9IGNvbHVtbi5yZW5kZXJDZWxsO1xuICAgICAgLy8gVE9ETzog6L+Z6YeM55qE5a6e546w6LCD5pW0XG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdleHBhbmQnKSB7XG4gICAgICAgIC8vIOWvueS6juWxleW8gOihjO+8jHJlbmRlckNlbGwg5LiN5YWB6K646YWN572u55qE44CC5Zyo5LiK5LiA5q2l5Lit5bey57uP6K6+572u6L+H77yM6L+Z6YeM6ZyA6KaB566A5Y2V5bCB6KOF5LiA5LiL44CCXG4gICAgICAgIGNvbHVtbi5yZW5kZXJDZWxsID0gZnVuY3Rpb24gKGgsIGRhdGEpIHtcbiAgICAgICAgICByZXR1cm4gaChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyAnY2xhc3MnOiAnY2VsbCcgfSxcbiAgICAgICAgICAgIFtvcmlnaW5SZW5kZXJDZWxsKGgsIGRhdGEpXVxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub3duZXIucmVuZGVyRXhwYW5kZWQgPSBmdW5jdGlvbiAoaCwgZGF0YSkge1xuICAgICAgICAgIHJldHVybiBfdGhpczIuJHNjb3BlZFNsb3RzLmRlZmF1bHQgPyBfdGhpczIuJHNjb3BlZFNsb3RzLmRlZmF1bHQoZGF0YSkgOiBfdGhpczIuJHNsb3RzLmRlZmF1bHQ7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcmlnaW5SZW5kZXJDZWxsID0gb3JpZ2luUmVuZGVyQ2VsbCB8fCBkZWZhdWx0UmVuZGVyQ2VsbDtcbiAgICAgICAgLy8g5a+5IHJlbmRlckNlbGwg6L+b6KGM5YyF6KOFXG4gICAgICAgIGNvbHVtbi5yZW5kZXJDZWxsID0gZnVuY3Rpb24gKGgsIGRhdGEpIHtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBudWxsO1xuICAgICAgICAgIGlmIChfdGhpczIuJHNjb3BlZFNsb3RzLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMyLiRzY29wZWRTbG90cy5kZWZhdWx0KGRhdGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGlsZHJlbiA9IG9yaWdpblJlbmRlckNlbGwoaCwgZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBwcmVmaXggPSB0cmVlQ2VsbFByZWZpeChoLCBkYXRhKTtcbiAgICAgICAgICB2YXIgcHJvcHMgPSB7XG4gICAgICAgICAgICBjbGFzczogJ2NlbGwnLFxuICAgICAgICAgICAgc3R5bGU6IHt9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoY29sdW1uLnNob3dPdmVyZmxvd1Rvb2x0aXApIHtcbiAgICAgICAgICAgIHByb3BzLmNsYXNzICs9ICcgZWwtdG9vbHRpcCc7XG4gICAgICAgICAgICBwcm9wcy5zdHlsZSA9IHsgd2lkdGg6IChkYXRhLmNvbHVtbi5yZWFsV2lkdGggfHwgZGF0YS5jb2x1bW4ud2lkdGgpIC0gMSArICdweCcgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGgoXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgW3ByZWZpeCwgY2hpbGRyZW5dXG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfSxcbiAgICByZWdpc3Rlck5vcm1hbFdhdGNoZXJzOiBmdW5jdGlvbiByZWdpc3Rlck5vcm1hbFdhdGNoZXJzKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBwcm9wcyA9IFsnbGFiZWwnLCAncHJvcGVydHknLCAnZmlsdGVycycsICdmaWx0ZXJNdWx0aXBsZScsICdzb3J0YWJsZScsICdpbmRleCcsICdmb3JtYXR0ZXInLCAnY2xhc3NOYW1lJywgJ2xhYmVsQ2xhc3NOYW1lJywgJ3Nob3dPdmVyZmxvd1Rvb2x0aXAnXTtcbiAgICAgIC8vIOS4gOS6m+WxnuaAp+WFt+acieWIq+WQjVxuICAgICAgdmFyIGFsaWFzZXMgPSB7XG4gICAgICAgIHByb3A6ICdwcm9wZXJ0eScsXG4gICAgICAgIHJlYWxBbGlnbjogJ2FsaWduJyxcbiAgICAgICAgcmVhbEhlYWRlckFsaWduOiAnaGVhZGVyQWxpZ24nLFxuICAgICAgICByZWFsV2lkdGg6ICd3aWR0aCdcbiAgICAgIH07XG4gICAgICB2YXIgYWxsQWxpYXNlcyA9IHByb3BzLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3VyKSB7XG4gICAgICAgIHByZXZbY3VyXSA9IGN1cjtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9LCBhbGlhc2VzKTtcblxuICAgICAgT2JqZWN0LmtleXMoYWxsQWxpYXNlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBjb2x1bW5LZXkgPSBhbGlhc2VzW2tleV07XG5cbiAgICAgICAgX3RoaXMzLiR3YXRjaChrZXksIGZ1bmN0aW9uIChuZXdWYWwpIHtcbiAgICAgICAgICBfdGhpczMuY29sdW1uQ29uZmlnW2NvbHVtbktleV0gPSBuZXdWYWw7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICByZWdpc3RlckNvbXBsZXhXYXRjaGVyczogZnVuY3Rpb24gcmVnaXN0ZXJDb21wbGV4V2F0Y2hlcnMoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgdmFyIHByb3BzID0gWydmaXhlZCddO1xuICAgICAgdmFyIGFsaWFzZXMgPSB7XG4gICAgICAgIHJlYWxXaWR0aDogJ3dpZHRoJyxcbiAgICAgICAgcmVhbE1pbldpZHRoOiAnbWluV2lkdGgnXG4gICAgICB9O1xuICAgICAgdmFyIGFsbEFsaWFzZXMgPSBwcm9wcy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICBwcmV2W2N1cl0gPSBjdXI7XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSwgYWxpYXNlcyk7XG5cbiAgICAgIE9iamVjdC5rZXlzKGFsbEFsaWFzZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgY29sdW1uS2V5ID0gYWxpYXNlc1trZXldO1xuXG4gICAgICAgIF90aGlzNC4kd2F0Y2goa2V5LCBmdW5jdGlvbiAobmV3VmFsKSB7XG4gICAgICAgICAgX3RoaXM0LmNvbHVtbkNvbmZpZ1tjb2x1bW5LZXldID0gbmV3VmFsO1xuICAgICAgICAgIHZhciB1cGRhdGVDb2x1bW5zID0gY29sdW1uS2V5ID09PSAnZml4ZWQnO1xuICAgICAgICAgIF90aGlzNC5vd25lci5zdG9yZS5zY2hlZHVsZUxheW91dCh1cGRhdGVDb2x1bW5zKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsQ2hlY2tib3g6IGNoZWNrYm94X2RlZmF1bHQuYVxuICB9LFxuXG4gIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gYmVmb3JlQ3JlYXRlKCkge1xuICAgIHRoaXMucm93ID0ge307XG4gICAgdGhpcy5jb2x1bW4gPSB7fTtcbiAgICB0aGlzLiRpbmRleCA9IDA7XG4gICAgdGhpcy5jb2x1bW5JZCA9ICcnO1xuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLmNvbHVtbk9yVGFibGVQYXJlbnQ7XG4gICAgdGhpcy5pc1N1YkNvbHVtbiA9IHRoaXMub3duZXIgIT09IHBhcmVudDtcbiAgICB0aGlzLmNvbHVtbklkID0gKHBhcmVudC50YWJsZUlkIHx8IHBhcmVudC5jb2x1bW5JZCkgKyAnX2NvbHVtbl8nICsgY29sdW1uSWRTZWVkKys7XG5cbiAgICB2YXIgdHlwZSA9IHRoaXMudHlwZSB8fCAnZGVmYXVsdCc7XG4gICAgdmFyIHNvcnRhYmxlID0gdGhpcy5zb3J0YWJsZSA9PT0gJycgPyB0cnVlIDogdGhpcy5zb3J0YWJsZTtcbiAgICB2YXIgZGVmYXVsdHMgPSB0YWJsZV9jb2x1bW5fZXh0ZW5kcyh7fSwgY2VsbFN0YXJ0c1t0eXBlXSwge1xuICAgICAgaWQ6IHRoaXMuY29sdW1uSWQsXG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgcHJvcGVydHk6IHRoaXMucHJvcCB8fCB0aGlzLnByb3BlcnR5LFxuICAgICAgYWxpZ246IHRoaXMucmVhbEFsaWduLFxuICAgICAgaGVhZGVyQWxpZ246IHRoaXMucmVhbEhlYWRlckFsaWduLFxuICAgICAgc2hvd092ZXJmbG93VG9vbHRpcDogdGhpcy5zaG93T3ZlcmZsb3dUb29sdGlwIHx8IHRoaXMuc2hvd1Rvb2x0aXBXaGVuT3ZlcmZsb3csXG4gICAgICAvLyBmaWx0ZXIg55u45YWz5bGe5oCnXG4gICAgICBmaWx0ZXJhYmxlOiB0aGlzLmZpbHRlcnMgfHwgdGhpcy5maWx0ZXJNZXRob2QsXG4gICAgICBmaWx0ZXJlZFZhbHVlOiBbXSxcbiAgICAgIGZpbHRlclBsYWNlbWVudDogJycsXG4gICAgICBpc0NvbHVtbkdyb3VwOiBmYWxzZSxcbiAgICAgIGZpbHRlck9wZW5lZDogZmFsc2UsXG4gICAgICAvLyBzb3J0IOebuOWFs+WxnuaAp1xuICAgICAgc29ydGFibGU6IHNvcnRhYmxlLFxuICAgICAgLy8gaW5kZXgg5YiXXG4gICAgICBpbmRleDogdGhpcy5pbmRleFxuICAgIH0pO1xuXG4gICAgdmFyIGJhc2ljUHJvcHMgPSBbJ2NvbHVtbktleScsICdsYWJlbCcsICdjbGFzc05hbWUnLCAnbGFiZWxDbGFzc05hbWUnLCAndHlwZScsICdyZW5kZXJIZWFkZXInLCAnZm9ybWF0dGVyJywgJ2ZpeGVkJywgJ3Jlc2l6YWJsZSddO1xuICAgIHZhciBzb3J0UHJvcHMgPSBbJ3NvcnRNZXRob2QnLCAnc29ydEJ5JywgJ3NvcnRPcmRlcnMnXTtcbiAgICB2YXIgc2VsZWN0UHJvcHMgPSBbJ3NlbGVjdGFibGUnLCAncmVzZXJ2ZVNlbGVjdGlvbiddO1xuICAgIHZhciBmaWx0ZXJQcm9wcyA9IFsnZmlsdGVyTWV0aG9kJywgJ2ZpbHRlcnMnLCAnZmlsdGVyTXVsdGlwbGUnLCAnZmlsdGVyT3BlbmVkJywgJ2ZpbHRlcmVkVmFsdWUnLCAnZmlsdGVyUGxhY2VtZW50J107XG5cbiAgICB2YXIgY29sdW1uID0gdGhpcy5nZXRQcm9wc0RhdGEoYmFzaWNQcm9wcywgc29ydFByb3BzLCBzZWxlY3RQcm9wcywgZmlsdGVyUHJvcHMpO1xuICAgIGNvbHVtbiA9IG1lcmdlT3B0aW9ucyhkZWZhdWx0cywgY29sdW1uKTtcblxuICAgIC8vIOazqOaEjyBjb21wb3NlIOS4reWHveaVsOaJp+ihjOeahOmhuuW6j+aYr+S7juWPs+WIsOW3plxuICAgIHZhciBjaGFpbnMgPSBjb21wb3NlKHRoaXMuc2V0Q29sdW1uUmVuZGVycywgdGhpcy5zZXRDb2x1bW5XaWR0aCwgdGhpcy5zZXRDb2x1bW5Gb3JjZWRQcm9wcyk7XG4gICAgY29sdW1uID0gY2hhaW5zKGNvbHVtbik7XG5cbiAgICB0aGlzLmNvbHVtbkNvbmZpZyA9IGNvbHVtbjtcblxuICAgIC8vIOazqOWGjCB3YXRjaGVyXG4gICAgdGhpcy5yZWdpc3Rlck5vcm1hbFdhdGNoZXJzKCk7XG4gICAgdGhpcy5yZWdpc3RlckNvbXBsZXhXYXRjaGVycygpO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBvd25lciA9IHRoaXMub3duZXI7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuY29sdW1uT3JUYWJsZVBhcmVudDtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmlzU3ViQ29sdW1uID8gcGFyZW50LiRlbC5jaGlsZHJlbiA6IHBhcmVudC4kcmVmcy5oaWRkZW5Db2x1bW5zLmNoaWxkcmVuO1xuICAgIHZhciBjb2x1bW5JbmRleCA9IHRoaXMuZ2V0Q29sdW1uRWxJbmRleChjaGlsZHJlbiwgdGhpcy4kZWwpO1xuXG4gICAgb3duZXIuc3RvcmUuY29tbWl0KCdpbnNlcnRDb2x1bW4nLCB0aGlzLmNvbHVtbkNvbmZpZywgY29sdW1uSW5kZXgsIHRoaXMuaXNTdWJDb2x1bW4gPyBwYXJlbnQuY29sdW1uQ29uZmlnIDogbnVsbCk7XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIGlmICghdGhpcy4kcGFyZW50KSByZXR1cm47XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuJHBhcmVudDtcbiAgICB0aGlzLm93bmVyLnN0b3JlLmNvbW1pdCgncmVtb3ZlQ29sdW1uJywgdGhpcy5jb2x1bW5Db25maWcsIHRoaXMuaXNTdWJDb2x1bW4gPyBwYXJlbnQuY29sdW1uQ29uZmlnIDogbnVsbCk7XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICAvLyBzbG90cyDkuZ/opoHmuLLmn5PvvIzpnIDopoHorqHnrpflkIjlubbooajlpLRcbiAgICByZXR1cm4gaCgnZGl2JywgdGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJsZS1jb2x1bW4vaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudGFibGVfY29sdW1uLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodGFibGVfY29sdW1uLm5hbWUsIHRhYmxlX2NvbHVtbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc190YWJsZV9jb2x1bW4gPSAodGFibGVfY29sdW1uKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BpY2tlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzlhZTA2OWYmXG52YXIgcGlja2VydnVlX3R5cGVfdGVtcGxhdGVfaWRfNzlhZTA2OWZfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuICFfdm0ucmFuZ2VkXG4gICAgPyBfYyhcbiAgICAgICAgXCJlbC1pbnB1dFwiLFxuICAgICAgICBfdm0uX2IoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJjbGlja291dHNpZGVcIixcbiAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtY2xpY2tvdXRzaWRlXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oYW5kbGVDbG9zZSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImhhbmRsZUNsb3NlXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlZjogXCJyZWZlcmVuY2VcIixcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWRhdGUtZWRpdG9yXCIsXG4gICAgICAgICAgICBjbGFzczogXCJlbC1kYXRlLWVkaXRvci0tXCIgKyBfdm0udHlwZSxcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHJlYWRvbmx5OlxuICAgICAgICAgICAgICAgICFfdm0uZWRpdGFibGUgfHxcbiAgICAgICAgICAgICAgICBfdm0ucmVhZG9ubHkgfHxcbiAgICAgICAgICAgICAgICBfdm0udHlwZSA9PT0gXCJkYXRlc1wiIHx8XG4gICAgICAgICAgICAgICAgX3ZtLnR5cGUgPT09IFwid2Vla1wiIHx8XG4gICAgICAgICAgICAgICAgX3ZtLnR5cGUgPT09IFwieWVhcnNcIiB8fFxuICAgICAgICAgICAgICAgIF92bS50eXBlID09PSBcIm1vbnRoc1wiLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLnBpY2tlckRpc2FibGVkLFxuICAgICAgICAgICAgICBzaXplOiBfdm0ucGlja2VyU2l6ZSxcbiAgICAgICAgICAgICAgbmFtZTogX3ZtLm5hbWUsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0uZGlzcGxheVZhbHVlLFxuICAgICAgICAgICAgICB2YWxpZGF0ZUV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIGZvY3VzOiBfdm0uaGFuZGxlRm9jdXMsXG4gICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoX3ZtLnVzZXJJbnB1dCA9IHZhbHVlKVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjaGFuZ2U6IF92bS5oYW5kbGVDaGFuZ2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYXRpdmVPbjoge1xuICAgICAgICAgICAgICBrZXlkb3duOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmhhbmRsZUtleWRvd24oJGV2ZW50KVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtb3VzZWVudGVyOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmhhbmRsZU1vdXNlRW50ZXIoJGV2ZW50KVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtb3VzZWxlYXZlOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBfdm0uc2hvd0Nsb3NlID0gZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJlbC1pbnB1dFwiLFxuICAgICAgICAgIF92bS5maXJzdElucHV0SWQsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwiaVwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pbnB1dF9faWNvblwiLFxuICAgICAgICAgICAgY2xhc3M6IF92bS50cmlnZ2VyQ2xhc3MsXG4gICAgICAgICAgICBhdHRyczogeyBzbG90OiBcInByZWZpeFwiIH0sXG4gICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmhhbmRsZUZvY3VzIH0sXG4gICAgICAgICAgICBzbG90OiBcInByZWZpeFwiXG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLmhhdmVUcmlnZ2VyXG4gICAgICAgICAgICA/IF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXRfX2ljb25cIixcbiAgICAgICAgICAgICAgICBjbGFzczogW192bS5zaG93Q2xvc2UgPyBcIlwiICsgX3ZtLmNsZWFySWNvbiA6IFwiXCJdLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNsb3Q6IFwic3VmZml4XCIgfSxcbiAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmhhbmRsZUNsaWNrSWNvbiB9LFxuICAgICAgICAgICAgICAgIHNsb3Q6IFwic3VmZml4XCJcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXVxuICAgICAgKVxuICAgIDogX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwiY2xpY2tvdXRzaWRlXCIsXG4gICAgICAgICAgICAgIHJhd05hbWU6IFwidi1jbGlja291dHNpZGVcIixcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS5oYW5kbGVDbG9zZSxcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJoYW5kbGVDbG9zZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICByZWY6IFwicmVmZXJlbmNlXCIsXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtZGF0ZS1lZGl0b3IgZWwtcmFuZ2UtZWRpdG9yIGVsLWlucHV0X19pbm5lclwiLFxuICAgICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgICBcImVsLWRhdGUtZWRpdG9yLS1cIiArIF92bS50eXBlLFxuICAgICAgICAgICAgX3ZtLnBpY2tlclNpemUgPyBcImVsLXJhbmdlLWVkaXRvci0tXCIgKyBfdm0ucGlja2VyU2l6ZSA6IFwiXCIsXG4gICAgICAgICAgICBfdm0ucGlja2VyRGlzYWJsZWQgPyBcImlzLWRpc2FibGVkXCIgOiBcIlwiLFxuICAgICAgICAgICAgX3ZtLnBpY2tlclZpc2libGUgPyBcImlzLWFjdGl2ZVwiIDogXCJcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGNsaWNrOiBfdm0uaGFuZGxlUmFuZ2VDbGljayxcbiAgICAgICAgICAgIG1vdXNlZW50ZXI6IF92bS5oYW5kbGVNb3VzZUVudGVyLFxuICAgICAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIF92bS5zaG93Q2xvc2UgPSBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtleWRvd246IF92bS5oYW5kbGVLZXlkb3duXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgIGNsYXNzOiBbXCJlbC1pbnB1dF9faWNvblwiLCBcImVsLXJhbmdlX19pY29uXCIsIF92bS50cmlnZ2VyQ2xhc3NdXG4gICAgICAgICAgfSksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImlucHV0XCIsXG4gICAgICAgICAgICBfdm0uX2IoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1yYW5nZS1pbnB1dFwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnN0YXJ0UGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLnBpY2tlckRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgcmVhZG9ubHk6ICFfdm0uZWRpdGFibGUgfHwgX3ZtLnJlYWRvbmx5LFxuICAgICAgICAgICAgICAgICAgbmFtZTogX3ZtLm5hbWUgJiYgX3ZtLm5hbWVbMF1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0uZGlzcGxheVZhbHVlICYmIF92bS5kaXNwbGF5VmFsdWVbMF0gfSxcbiAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgaW5wdXQ6IF92bS5oYW5kbGVTdGFydElucHV0LFxuICAgICAgICAgICAgICAgICAgY2hhbmdlOiBfdm0uaGFuZGxlU3RhcnRDaGFuZ2UsXG4gICAgICAgICAgICAgICAgICBmb2N1czogX3ZtLmhhbmRsZUZvY3VzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBcImlucHV0XCIsXG4gICAgICAgICAgICAgIF92bS5maXJzdElucHV0SWQsXG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3QoXCJyYW5nZS1zZXBhcmF0b3JcIiwgW1xuICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtcmFuZ2Utc2VwYXJhdG9yXCIgfSwgW1xuICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5yYW5nZVNlcGFyYXRvcikpXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgICAgX3ZtLl9iKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcmFuZ2UtaW5wdXRcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS5lbmRQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0ucGlja2VyRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICByZWFkb25seTogIV92bS5lZGl0YWJsZSB8fCBfdm0ucmVhZG9ubHksXG4gICAgICAgICAgICAgICAgICBuYW1lOiBfdm0ubmFtZSAmJiBfdm0ubmFtZVsxXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5kaXNwbGF5VmFsdWUgJiYgX3ZtLmRpc3BsYXlWYWx1ZVsxXSB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBpbnB1dDogX3ZtLmhhbmRsZUVuZElucHV0LFxuICAgICAgICAgICAgICAgICAgY2hhbmdlOiBfdm0uaGFuZGxlRW5kQ2hhbmdlLFxuICAgICAgICAgICAgICAgICAgZm9jdXM6IF92bS5oYW5kbGVGb2N1c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgICAgICBfdm0uc2Vjb25kSW5wdXRJZCxcbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5oYXZlVHJpZ2dlclxuICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWlucHV0X19pY29uIGVsLXJhbmdlX19jbG9zZS1pY29uXCIsXG4gICAgICAgICAgICAgICAgY2xhc3M6IFtfdm0uc2hvd0Nsb3NlID8gXCJcIiArIF92bS5jbGVhckljb24gOiBcIlwiXSxcbiAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmhhbmRsZUNsaWNrSWNvbiB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgIClcbn1cbnZhciBwaWNrZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF83OWFlMDY5Zl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxucGlja2VydnVlX3R5cGVfdGVtcGxhdGVfaWRfNzlhZTA2OWZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGlja2VyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OWFlMDY5ZiZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL2RhdGUtdXRpbFwiXG52YXIgZGF0ZV91dGlsXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9waWNrZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cblxuXG5cbnZhciBOZXdQb3BwZXIgPSB7XG4gIHByb3BzOiB7XG4gICAgYXBwZW5kVG9Cb2R5OiB2dWVfcG9wcGVyX2RlZmF1bHQuYS5wcm9wcy5hcHBlbmRUb0JvZHksXG4gICAgb2Zmc2V0OiB2dWVfcG9wcGVyX2RlZmF1bHQuYS5wcm9wcy5vZmZzZXQsXG4gICAgYm91bmRhcmllc1BhZGRpbmc6IHZ1ZV9wb3BwZXJfZGVmYXVsdC5hLnByb3BzLmJvdW5kYXJpZXNQYWRkaW5nLFxuICAgIGFycm93T2Zmc2V0OiB2dWVfcG9wcGVyX2RlZmF1bHQuYS5wcm9wcy5hcnJvd09mZnNldCxcbiAgICB0cmFuc2Zvcm1PcmlnaW46IHZ1ZV9wb3BwZXJfZGVmYXVsdC5hLnByb3BzLnRyYW5zZm9ybU9yaWdpblxuICB9LFxuICBtZXRob2RzOiB2dWVfcG9wcGVyX2RlZmF1bHQuYS5tZXRob2RzLFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiBtZXJnZV9kZWZhdWx0KCkoeyB2aXNpYmxlQXJyb3c6IHRydWUgfSwgdnVlX3BvcHBlcl9kZWZhdWx0LmEuZGF0YSk7XG4gIH0sXG5cbiAgYmVmb3JlRGVzdHJveTogdnVlX3BvcHBlcl9kZWZhdWx0LmEuYmVmb3JlRGVzdHJveVxufTtcblxudmFyIERFRkFVTFRfRk9STUFUUyA9IHtcbiAgZGF0ZTogJ3l5eXktTU0tZGQnLFxuICBtb250aDogJ3l5eXktTU0nLFxuICBtb250aHM6ICd5eXl5LU1NJyxcbiAgZGF0ZXRpbWU6ICd5eXl5LU1NLWRkIEhIOm1tOnNzJyxcbiAgdGltZTogJ0hIOm1tOnNzJyxcbiAgd2VlazogJ3l5eXl3V1cnLFxuICB0aW1lcmFuZ2U6ICdISDptbTpzcycsXG4gIGRhdGVyYW5nZTogJ3l5eXktTU0tZGQnLFxuICBtb250aHJhbmdlOiAneXl5eS1NTScsXG4gIGRhdGV0aW1lcmFuZ2U6ICd5eXl5LU1NLWRkIEhIOm1tOnNzJyxcbiAgeWVhcjogJ3l5eXknLFxuICB5ZWFyczogJ3l5eXknXG59O1xudmFyIEhBVkVfVFJJR0dFUl9UWVBFUyA9IFsnZGF0ZScsICdkYXRldGltZScsICd0aW1lJywgJ3RpbWUtc2VsZWN0JywgJ3dlZWsnLCAnbW9udGgnLCAneWVhcicsICdkYXRlcmFuZ2UnLCAnbW9udGhyYW5nZScsICd0aW1lcmFuZ2UnLCAnZGF0ZXRpbWVyYW5nZScsICdkYXRlcycsICdtb250aHMnLCAneWVhcnMnXTtcbnZhciBwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX0ZPUk1BVFRFUiA9IGZ1bmN0aW9uIERBVEVfRk9STUFUVEVSKHZhbHVlLCBmb3JtYXQpIHtcbiAgaWYgKGZvcm1hdCA9PT0gJ3RpbWVzdGFtcCcpIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcImZvcm1hdERhdGVcIl0pKHZhbHVlLCBmb3JtYXQpO1xufTtcbnZhciBwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX1BBUlNFUiA9IGZ1bmN0aW9uIERBVEVfUEFSU0VSKHRleHQsIGZvcm1hdCkge1xuICBpZiAoZm9ybWF0ID09PSAndGltZXN0YW1wJykgcmV0dXJuIG5ldyBEYXRlKE51bWJlcih0ZXh0KSk7XG4gIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcInBhcnNlRGF0ZVwiXSkodGV4dCwgZm9ybWF0KTtcbn07XG52YXIgUkFOR0VfRk9STUFUVEVSID0gZnVuY3Rpb24gUkFOR0VfRk9STUFUVEVSKHZhbHVlLCBmb3JtYXQpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMikge1xuICAgIHZhciBzdGFydCA9IHZhbHVlWzBdO1xuICAgIHZhciBlbmQgPSB2YWx1ZVsxXTtcblxuICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgIHJldHVybiBbcGlja2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfREFURV9GT1JNQVRURVIoc3RhcnQsIGZvcm1hdCksIHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0RBVEVfRk9STUFUVEVSKGVuZCwgZm9ybWF0KV07XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn07XG52YXIgUkFOR0VfUEFSU0VSID0gZnVuY3Rpb24gUkFOR0VfUEFSU0VSKGFycmF5LCBmb3JtYXQsIHNlcGFyYXRvcikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXkpKSB7XG4gICAgYXJyYXkgPSBhcnJheS5zcGxpdChzZXBhcmF0b3IpO1xuICB9XG4gIGlmIChhcnJheS5sZW5ndGggPT09IDIpIHtcbiAgICB2YXIgcmFuZ2UxID0gYXJyYXlbMF07XG4gICAgdmFyIHJhbmdlMiA9IGFycmF5WzFdO1xuXG4gICAgcmV0dXJuIFtwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX1BBUlNFUihyYW5nZTEsIGZvcm1hdCksIHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0RBVEVfUEFSU0VSKHJhbmdlMiwgZm9ybWF0KV07XG4gIH1cbiAgcmV0dXJuIFtdO1xufTtcbnZhciBUWVBFX1ZBTFVFX1JFU09MVkVSX01BUCA9IHtcbiAgZGVmYXVsdDoge1xuICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gZm9ybWF0dGVyKHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG4gICAgICByZXR1cm4gJycgKyB2YWx1ZTtcbiAgICB9LFxuICAgIHBhcnNlcjogZnVuY3Rpb24gcGFyc2VyKHRleHQpIHtcbiAgICAgIGlmICh0ZXh0ID09PSB1bmRlZmluZWQgfHwgdGV4dCA9PT0gJycpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICB9LFxuICB3ZWVrOiB7XG4gICAgZm9ybWF0dGVyOiBmdW5jdGlvbiBmb3JtYXR0ZXIodmFsdWUsIGZvcm1hdCkge1xuICAgICAgdmFyIHdlZWsgPSBPYmplY3QoZGF0ZV91dGlsX1tcImdldFdlZWtOdW1iZXJcIl0pKHZhbHVlKTtcbiAgICAgIHZhciBtb250aCA9IHZhbHVlLmdldE1vbnRoKCk7XG4gICAgICB2YXIgdHJ1ZURhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICBpZiAod2VlayA9PT0gMSAmJiBtb250aCA9PT0gMTEpIHtcbiAgICAgICAgdHJ1ZURhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHRydWVEYXRlLnNldERhdGUodHJ1ZURhdGUuZ2V0RGF0ZSgpICsgMyAtICh0cnVlRGF0ZS5nZXREYXkoKSArIDYpICUgNyk7XG4gICAgICB9XG4gICAgICB2YXIgZGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wiZm9ybWF0RGF0ZVwiXSkodHJ1ZURhdGUsIGZvcm1hdCk7XG5cbiAgICAgIGRhdGUgPSAvV1cvLnRlc3QoZGF0ZSkgPyBkYXRlLnJlcGxhY2UoL1dXLywgd2VlayA8IDEwID8gJzAnICsgd2VlayA6IHdlZWspIDogZGF0ZS5yZXBsYWNlKC9XLywgd2Vlayk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9LFxuICAgIHBhcnNlcjogZnVuY3Rpb24gcGFyc2VyKHRleHQsIGZvcm1hdCkge1xuICAgICAgLy8gcGFyc2UgYXMgaWYgYSBub3JtYWwgZGF0ZVxuICAgICAgcmV0dXJuIFRZUEVfVkFMVUVfUkVTT0xWRVJfTUFQLmRhdGUucGFyc2VyKHRleHQsIGZvcm1hdCk7XG4gICAgfVxuICB9LFxuICBkYXRlOiB7XG4gICAgZm9ybWF0dGVyOiBwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX0ZPUk1BVFRFUixcbiAgICBwYXJzZXI6IHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0RBVEVfUEFSU0VSXG4gIH0sXG4gIGRhdGV0aW1lOiB7XG4gICAgZm9ybWF0dGVyOiBwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX0ZPUk1BVFRFUixcbiAgICBwYXJzZXI6IHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0RBVEVfUEFSU0VSXG4gIH0sXG4gIGRhdGVyYW5nZToge1xuICAgIGZvcm1hdHRlcjogUkFOR0VfRk9STUFUVEVSLFxuICAgIHBhcnNlcjogUkFOR0VfUEFSU0VSXG4gIH0sXG4gIG1vbnRocmFuZ2U6IHtcbiAgICBmb3JtYXR0ZXI6IFJBTkdFX0ZPUk1BVFRFUixcbiAgICBwYXJzZXI6IFJBTkdFX1BBUlNFUlxuICB9LFxuICBkYXRldGltZXJhbmdlOiB7XG4gICAgZm9ybWF0dGVyOiBSQU5HRV9GT1JNQVRURVIsXG4gICAgcGFyc2VyOiBSQU5HRV9QQVJTRVJcbiAgfSxcbiAgdGltZXJhbmdlOiB7XG4gICAgZm9ybWF0dGVyOiBSQU5HRV9GT1JNQVRURVIsXG4gICAgcGFyc2VyOiBSQU5HRV9QQVJTRVJcbiAgfSxcbiAgdGltZToge1xuICAgIGZvcm1hdHRlcjogcGlja2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfREFURV9GT1JNQVRURVIsXG4gICAgcGFyc2VyOiBwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX1BBUlNFUlxuICB9LFxuICBtb250aDoge1xuICAgIGZvcm1hdHRlcjogcGlja2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfREFURV9GT1JNQVRURVIsXG4gICAgcGFyc2VyOiBwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX1BBUlNFUlxuICB9LFxuICB5ZWFyOiB7XG4gICAgZm9ybWF0dGVyOiBwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX0ZPUk1BVFRFUixcbiAgICBwYXJzZXI6IHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0RBVEVfUEFSU0VSXG4gIH0sXG4gIG51bWJlcjoge1xuICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gZm9ybWF0dGVyKHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG4gICAgICByZXR1cm4gJycgKyB2YWx1ZTtcbiAgICB9LFxuICAgIHBhcnNlcjogZnVuY3Rpb24gcGFyc2VyKHRleHQpIHtcbiAgICAgIHZhciByZXN1bHQgPSBOdW1iZXIodGV4dCk7XG5cbiAgICAgIGlmICghaXNOYU4odGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZGF0ZXM6IHtcbiAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uIGZvcm1hdHRlcih2YWx1ZSwgZm9ybWF0KSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgIHJldHVybiBwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX0ZPUk1BVFRFUihkYXRlLCBmb3JtYXQpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBwYXJzZXI6IGZ1bmN0aW9uIHBhcnNlcih2YWx1ZSwgZm9ybWF0KSB7XG4gICAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS5zcGxpdCgnLCAnKSA6IHZhbHVlKS5tYXAoZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZSA6IHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0RBVEVfUEFSU0VSKGRhdGUsIGZvcm1hdCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG1vbnRoczoge1xuICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gZm9ybWF0dGVyKHZhbHVlLCBmb3JtYXQpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0RBVEVfRk9STUFUVEVSKGRhdGUsIGZvcm1hdCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHBhcnNlcjogZnVuY3Rpb24gcGFyc2VyKHZhbHVlLCBmb3JtYXQpIHtcbiAgICAgIHJldHVybiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlLnNwbGl0KCcsICcpIDogdmFsdWUpLm1hcChmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICByZXR1cm4gZGF0ZSBpbnN0YW5jZW9mIERhdGUgPyBkYXRlIDogcGlja2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfREFURV9QQVJTRVIoZGF0ZSwgZm9ybWF0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgeWVhcnM6IHtcbiAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uIGZvcm1hdHRlcih2YWx1ZSwgZm9ybWF0KSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgIHJldHVybiBwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19EQVRFX0ZPUk1BVFRFUihkYXRlLCBmb3JtYXQpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBwYXJzZXI6IGZ1bmN0aW9uIHBhcnNlcih2YWx1ZSwgZm9ybWF0KSB7XG4gICAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS5zcGxpdCgnLCAnKSA6IHZhbHVlKS5tYXAoZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZSA6IHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0RBVEVfUEFSU0VSKGRhdGUsIGZvcm1hdCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG52YXIgUExBQ0VNRU5UX01BUCA9IHtcbiAgbGVmdDogJ2JvdHRvbS1zdGFydCcsXG4gIGNlbnRlcjogJ2JvdHRvbScsXG4gIHJpZ2h0OiAnYm90dG9tLWVuZCdcbn07XG5cbnZhciBwYXJzZUFzRm9ybWF0QW5kVHlwZSA9IGZ1bmN0aW9uIHBhcnNlQXNGb3JtYXRBbmRUeXBlKHZhbHVlLCBjdXN0b21Gb3JtYXQsIHR5cGUpIHtcbiAgdmFyIHJhbmdlU2VwYXJhdG9yID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAnLSc7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gIHZhciBwYXJzZXIgPSAoVFlQRV9WQUxVRV9SRVNPTFZFUl9NQVBbdHlwZV0gfHwgVFlQRV9WQUxVRV9SRVNPTFZFUl9NQVBbJ2RlZmF1bHQnXSkucGFyc2VyO1xuICB2YXIgZm9ybWF0ID0gY3VzdG9tRm9ybWF0IHx8IERFRkFVTFRfRk9STUFUU1t0eXBlXTtcbiAgcmV0dXJuIHBhcnNlcih2YWx1ZSwgZm9ybWF0LCByYW5nZVNlcGFyYXRvcik7XG59O1xuXG52YXIgZm9ybWF0QXNGb3JtYXRBbmRUeXBlID0gZnVuY3Rpb24gZm9ybWF0QXNGb3JtYXRBbmRUeXBlKHZhbHVlLCBjdXN0b21Gb3JtYXQsIHR5cGUpIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gIHZhciBmb3JtYXR0ZXIgPSAoVFlQRV9WQUxVRV9SRVNPTFZFUl9NQVBbdHlwZV0gfHwgVFlQRV9WQUxVRV9SRVNPTFZFUl9NQVBbJ2RlZmF1bHQnXSkuZm9ybWF0dGVyO1xuICB2YXIgZm9ybWF0ID0gY3VzdG9tRm9ybWF0IHx8IERFRkFVTFRfRk9STUFUU1t0eXBlXTtcbiAgcmV0dXJuIGZvcm1hdHRlcih2YWx1ZSwgZm9ybWF0KTtcbn07XG5cbi8qXG4gKiBDb25zaWRlcnM6XG4gKiAgIDEuIERhdGUgb2JqZWN0XG4gKiAgIDIuIGRhdGUgc3RyaW5nXG4gKiAgIDMuIGFycmF5IG9mIDEgb3IgMlxuICovXG52YXIgdmFsdWVFcXVhbHMgPSBmdW5jdGlvbiB2YWx1ZUVxdWFscyhhLCBiKSB7XG4gIC8vIGNvbnNpZGVycyBEYXRlIG9iamVjdCBhbmQgc3RyaW5nXG4gIHZhciBkYXRlRXF1YWxzID0gZnVuY3Rpb24gZGF0ZUVxdWFscyhhLCBiKSB7XG4gICAgdmFyIGFJc0RhdGUgPSBhIGluc3RhbmNlb2YgRGF0ZTtcbiAgICB2YXIgYklzRGF0ZSA9IGIgaW5zdGFuY2VvZiBEYXRlO1xuICAgIGlmIChhSXNEYXRlICYmIGJJc0RhdGUpIHtcbiAgICAgIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG4gICAgfVxuICAgIGlmICghYUlzRGF0ZSAmJiAhYklzRGF0ZSkge1xuICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICB2YXIgYUlzQXJyYXkgPSBhIGluc3RhbmNlb2YgQXJyYXk7XG4gIHZhciBiSXNBcnJheSA9IGIgaW5zdGFuY2VvZiBBcnJheTtcbiAgaWYgKGFJc0FycmF5ICYmIGJJc0FycmF5KSB7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gYS5ldmVyeShmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBkYXRlRXF1YWxzKGl0ZW0sIGJbaW5kZXhdKTtcbiAgICB9KTtcbiAgfVxuICBpZiAoIWFJc0FycmF5ICYmICFiSXNBcnJheSkge1xuICAgIHJldHVybiBkYXRlRXF1YWxzKGEsIGIpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbnZhciBpc1N0cmluZyA9IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdmFsIGluc3RhbmNlb2YgU3RyaW5nO1xufTtcblxudmFyIHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX3ZhbGlkYXRvciA9IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWwpIHtcbiAgLy8gZWl0aGVyOiBTdHJpbmcsIEFycmF5IG9mIFN0cmluZywgbnVsbCAvIHVuZGVmaW5lZFxuICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8IGlzU3RyaW5nKHZhbCkgfHwgQXJyYXkuaXNBcnJheSh2YWwpICYmIHZhbC5sZW5ndGggPT09IDIgJiYgdmFsLmV2ZXJ5KGlzU3RyaW5nKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hLCBOZXdQb3BwZXJdLFxuXG4gIGluamVjdDoge1xuICAgIGVsRm9ybToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGVsRm9ybUl0ZW06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgc2l6ZTogU3RyaW5nLFxuICAgIGZvcm1hdDogU3RyaW5nLFxuICAgIHZhbHVlRm9ybWF0OiBTdHJpbmcsXG4gICAgcmVhZG9ubHk6IEJvb2xlYW4sXG4gICAgcGxhY2Vob2xkZXI6IFN0cmluZyxcbiAgICBzdGFydFBsYWNlaG9sZGVyOiBTdHJpbmcsXG4gICAgZW5kUGxhY2Vob2xkZXI6IFN0cmluZyxcbiAgICBwcmVmaXhJY29uOiBTdHJpbmcsXG4gICAgY2xlYXJJY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnZWwtaWNvbi1jaXJjbGUtY2xvc2UnXG4gICAgfSxcbiAgICBuYW1lOiB7XG4gICAgICBkZWZhdWx0OiAnJyxcbiAgICAgIHZhbGlkYXRvcjogcGlja2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfdmFsaWRhdG9yXG4gICAgfSxcbiAgICBkaXNhYmxlZDogQm9vbGVhbixcbiAgICBjbGVhcmFibGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBpZDoge1xuICAgICAgZGVmYXVsdDogJycsXG4gICAgICB2YWxpZGF0b3I6IHBpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX3ZhbGlkYXRvclxuICAgIH0sXG4gICAgcG9wcGVyQ2xhc3M6IFN0cmluZyxcbiAgICBlZGl0YWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGFsaWduOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnbGVmdCdcbiAgICB9LFxuICAgIHZhbHVlOiB7fSxcbiAgICBkZWZhdWx0VmFsdWU6IHt9LFxuICAgIGRlZmF1bHRUaW1lOiB7fSxcbiAgICByYW5nZVNlcGFyYXRvcjoge1xuICAgICAgZGVmYXVsdDogJy0nXG4gICAgfSxcbiAgICBwaWNrZXJPcHRpb25zOiB7fSxcbiAgICB1bmxpbmtQYW5lbHM6IEJvb2xlYW4sXG4gICAgdmFsaWRhdGVFdmVudDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50czogeyBFbElucHV0OiBpbnB1dF9kZWZhdWx0LmEgfSxcblxuICBkaXJlY3RpdmVzOiB7IENsaWNrb3V0c2lkZTogY2xpY2tvdXRzaWRlX2RlZmF1bHQuYSB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBpY2tlclZpc2libGU6IGZhbHNlLFxuICAgICAgc2hvd0Nsb3NlOiBmYWxzZSxcbiAgICAgIHVzZXJJbnB1dDogbnVsbCxcbiAgICAgIHZhbHVlT25PcGVuOiBudWxsLCAvLyB2YWx1ZSB3aGVuIHBpY2tlciBvcGVucywgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBlbWl0IGNoYW5nZVxuICAgICAgdW53YXRjaFBpY2tlck9wdGlvbnM6IG51bGxcbiAgICB9O1xuICB9LFxuXG5cbiAgd2F0Y2g6IHtcbiAgICBwaWNrZXJWaXNpYmxlOiBmdW5jdGlvbiBwaWNrZXJWaXNpYmxlKHZhbCkge1xuICAgICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5waWNrZXJEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKHZhbCkge1xuICAgICAgICB0aGlzLnNob3dQaWNrZXIoKTtcbiAgICAgICAgdGhpcy52YWx1ZU9uT3BlbiA9IEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyBbXS5jb25jYXQodGhpcy52YWx1ZSkgOiB0aGlzLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWRlUGlja2VyKCk7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy51c2VySW5wdXQgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZUV2ZW50KSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmJsdXInKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiRlbWl0KCdibHVyJywgdGhpcyk7XG4gICAgICAgIHRoaXMuYmx1cigpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBwYXJzZWRWYWx1ZToge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMucGlja2VyKSB7XG4gICAgICAgICAgdGhpcy5waWNrZXIudmFsdWUgPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGRlZmF1bHRWYWx1ZTogZnVuY3Rpb24gZGVmYXVsdFZhbHVlKHZhbCkge1xuICAgICAgLy8gTk9URTogc2hvdWxkIGV2ZW50dWFsbHkgbW92ZSB0byBqc3ggc3R5bGUgcGlja2VyICsgcGFuZWwgP1xuICAgICAgaWYgKHRoaXMucGlja2VyKSB7XG4gICAgICAgIHRoaXMucGlja2VyLmRlZmF1bHRWYWx1ZSA9IHZhbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSh2YWwsIG9sZFZhbCkge1xuICAgICAgaWYgKCF2YWx1ZUVxdWFscyh2YWwsIG9sZFZhbCkgJiYgIXRoaXMucGlja2VyVmlzaWJsZSAmJiB0aGlzLnZhbGlkYXRlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmNoYW5nZScsIHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgcmFuZ2VkOiBmdW5jdGlvbiByYW5nZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy50eXBlLmluZGV4T2YoJ3JhbmdlJykgPiAtMTtcbiAgICB9LFxuICAgIHJlZmVyZW5jZTogZnVuY3Rpb24gcmVmZXJlbmNlKCkge1xuICAgICAgdmFyIHJlZmVyZW5jZSA9IHRoaXMuJHJlZnMucmVmZXJlbmNlO1xuICAgICAgcmV0dXJuIHJlZmVyZW5jZS4kZWwgfHwgcmVmZXJlbmNlO1xuICAgIH0sXG4gICAgcmVmSW5wdXQ6IGZ1bmN0aW9uIHJlZklucHV0KCkge1xuICAgICAgaWYgKHRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBbXS5zbGljZS5jYWxsKHRoaXMucmVmZXJlbmNlLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0JykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0sXG4gICAgdmFsdWVJc0VtcHR5OiBmdW5jdGlvbiB2YWx1ZUlzRW1wdHkoKSB7XG4gICAgICB2YXIgdmFsID0gdGhpcy52YWx1ZTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHZhbC5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh2YWxbaV0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgdHJpZ2dlckNsYXNzOiBmdW5jdGlvbiB0cmlnZ2VyQ2xhc3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcmVmaXhJY29uIHx8ICh0aGlzLnR5cGUuaW5kZXhPZigndGltZScpICE9PSAtMSA/ICdlbC1pY29uLXRpbWUnIDogJ2VsLWljb24tZGF0ZScpO1xuICAgIH0sXG4gICAgc2VsZWN0aW9uTW9kZTogZnVuY3Rpb24gc2VsZWN0aW9uTW9kZSgpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykge1xuICAgICAgICByZXR1cm4gJ3dlZWsnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgICAgcmV0dXJuICdtb250aCc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XG4gICAgICAgIHJldHVybiAneWVhcic7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGVzJykge1xuICAgICAgICByZXR1cm4gJ2RhdGVzJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnbW9udGhzJykge1xuICAgICAgICByZXR1cm4gJ21vbnRocyc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXJzJykge1xuICAgICAgICByZXR1cm4gJ3llYXJzJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdkYXknO1xuICAgIH0sXG4gICAgaGF2ZVRyaWdnZXI6IGZ1bmN0aW9uIGhhdmVUcmlnZ2VyKCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnNob3dUcmlnZ2VyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG93VHJpZ2dlcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBIQVZFX1RSSUdHRVJfVFlQRVMuaW5kZXhPZih0aGlzLnR5cGUpICE9PSAtMTtcbiAgICB9LFxuICAgIGRpc3BsYXlWYWx1ZTogZnVuY3Rpb24gZGlzcGxheVZhbHVlKCkge1xuICAgICAgdmFyIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0QXNGb3JtYXRBbmRUeXBlKHRoaXMucGFyc2VkVmFsdWUsIHRoaXMuZm9ybWF0LCB0aGlzLnR5cGUsIHRoaXMucmFuZ2VTZXBhcmF0b3IpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy51c2VySW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy51c2VySW5wdXRbMF0gfHwgZm9ybWF0dGVkVmFsdWUgJiYgZm9ybWF0dGVkVmFsdWVbMF0gfHwgJycsIHRoaXMudXNlcklucHV0WzFdIHx8IGZvcm1hdHRlZFZhbHVlICYmIGZvcm1hdHRlZFZhbHVlWzFdIHx8ICcnXTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy51c2VySW5wdXQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlcklucHV0O1xuICAgICAgfSBlbHNlIGlmIChmb3JtYXR0ZWRWYWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSAnZGF0ZXMnIHx8IHRoaXMudHlwZSA9PT0gJ3llYXJzJyB8fCB0aGlzLnR5cGUgPT09ICdtb250aHMnID8gZm9ybWF0dGVkVmFsdWUuam9pbignLCAnKSA6IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGFyc2VkVmFsdWU6IGZ1bmN0aW9uIHBhcnNlZFZhbHVlKCkge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlKSByZXR1cm4gdGhpcy52YWx1ZTsgLy8gY29tcG9uZW50IHZhbHVlIGlzIG5vdCBzZXRcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd0aW1lLXNlbGVjdCcpIHJldHVybiB0aGlzLnZhbHVlOyAvLyB0aW1lLXNlbGVjdCBkb2VzIG5vdCByZXF1aXJlIHBhcnNpbmcsIHRoaXMgbWlnaHQgY2hhbmdlIGluIG5leHQgbWFqb3IgdmVyc2lvblxuXG4gICAgICB2YXIgdmFsdWVJc0RhdGVPYmplY3QgPSBPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZU9iamVjdFwiXSkodGhpcy52YWx1ZSkgfHwgQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmV2ZXJ5KGRhdGVfdXRpbF9bXCJpc0RhdGVPYmplY3RcIl0pO1xuICAgICAgaWYgKHZhbHVlSXNEYXRlT2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy52YWx1ZUZvcm1hdCkge1xuICAgICAgICByZXR1cm4gcGFyc2VBc0Zvcm1hdEFuZFR5cGUodGhpcy52YWx1ZSwgdGhpcy52YWx1ZUZvcm1hdCwgdGhpcy50eXBlLCB0aGlzLnJhbmdlU2VwYXJhdG9yKSB8fCB0aGlzLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyBOT1RFOiBkZWFsIHdpdGggY29tbW9uIGJ1dCBpbmNvcnJlY3QgdXNhZ2UsIHNob3VsZCByZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uXG4gICAgICAvLyB1c2VyIG1pZ2h0IHByb3ZpZGUgc3RyaW5nIC8gdGltZXN0YW1wIHdpdGhvdXQgdmFsdWUtZm9ybWF0LCBjb2VyY2UgdGhlbSBpbnRvIGRhdGUgKG9yIGFycmF5IG9mIGRhdGUpXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSA/IHRoaXMudmFsdWUubWFwKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbCk7XG4gICAgICB9KSA6IG5ldyBEYXRlKHRoaXMudmFsdWUpO1xuICAgIH0sXG4gICAgX2VsRm9ybUl0ZW1TaXplOiBmdW5jdGlvbiBfZWxGb3JtSXRlbVNpemUoKSB7XG4gICAgICByZXR1cm4gKHRoaXMuZWxGb3JtSXRlbSB8fCB7fSkuZWxGb3JtSXRlbVNpemU7XG4gICAgfSxcbiAgICBwaWNrZXJTaXplOiBmdW5jdGlvbiBwaWNrZXJTaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZSB8fCB0aGlzLl9lbEZvcm1JdGVtU2l6ZSB8fCAodGhpcy4kRUxFTUVOVCB8fCB7fSkuc2l6ZTtcbiAgICB9LFxuICAgIHBpY2tlckRpc2FibGVkOiBmdW5jdGlvbiBwaWNrZXJEaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLmVsRm9ybSB8fCB7fSkuZGlzYWJsZWQ7XG4gICAgfSxcbiAgICBmaXJzdElucHV0SWQ6IGZ1bmN0aW9uIGZpcnN0SW5wdXRJZCgpIHtcbiAgICAgIHZhciBvYmogPSB7fTtcbiAgICAgIHZhciBpZCA9IHZvaWQgMDtcbiAgICAgIGlmICh0aGlzLnJhbmdlZCkge1xuICAgICAgICBpZCA9IHRoaXMuaWQgJiYgdGhpcy5pZFswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlkID0gdGhpcy5pZDtcbiAgICAgIH1cbiAgICAgIGlmIChpZCkgb2JqLmlkID0gaWQ7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG4gICAgc2Vjb25kSW5wdXRJZDogZnVuY3Rpb24gc2Vjb25kSW5wdXRJZCgpIHtcbiAgICAgIHZhciBvYmogPSB7fTtcbiAgICAgIHZhciBpZCA9IHZvaWQgMDtcbiAgICAgIGlmICh0aGlzLnJhbmdlZCkge1xuICAgICAgICBpZCA9IHRoaXMuaWQgJiYgdGhpcy5pZFsxXTtcbiAgICAgIH1cbiAgICAgIGlmIChpZCkgb2JqLmlkID0gaWQ7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIC8vIHZ1ZS1wb3BwZXJcbiAgICB0aGlzLnBvcHBlck9wdGlvbnMgPSB7XG4gICAgICBib3VuZGFyaWVzUGFkZGluZzogMCxcbiAgICAgIGdwdUFjY2VsZXJhdGlvbjogZmFsc2VcbiAgICB9O1xuICAgIHRoaXMucGxhY2VtZW50ID0gUExBQ0VNRU5UX01BUFt0aGlzLmFsaWduXSB8fCBQTEFDRU1FTlRfTUFQLmxlZnQ7XG5cbiAgICB0aGlzLiRvbignZmllbGRSZXNldCcsIHRoaXMuaGFuZGxlRmllbGRSZXNldCk7XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgaWYgKCF0aGlzLnJhbmdlZCkge1xuICAgICAgICB0aGlzLiRyZWZzLnJlZmVyZW5jZS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oYW5kbGVGb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgIHRoaXMucmVmSW5wdXQuZm9yRWFjaChmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LmJsdXIoKTtcbiAgICAgIH0pO1xuICAgIH0sXG5cblxuICAgIC8vIHtwYXJzZSwgZm9ybWF0VG99IFZhbHVlIGRlYWxzIG1hcHMgY29tcG9uZW50IHZhbHVlIHdpdGggaW50ZXJuYWwgRGF0ZVxuICAgIHBhcnNlVmFsdWU6IGZ1bmN0aW9uIHBhcnNlVmFsdWUodmFsdWUpIHtcbiAgICAgIHZhciBpc1BhcnNlZCA9IE9iamVjdChkYXRlX3V0aWxfW1wiaXNEYXRlT2JqZWN0XCJdKSh2YWx1ZSkgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkoZGF0ZV91dGlsX1tcImlzRGF0ZU9iamVjdFwiXSk7XG4gICAgICBpZiAodGhpcy52YWx1ZUZvcm1hdCAmJiAhaXNQYXJzZWQpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlQXNGb3JtYXRBbmRUeXBlKHZhbHVlLCB0aGlzLnZhbHVlRm9ybWF0LCB0aGlzLnR5cGUsIHRoaXMucmFuZ2VTZXBhcmF0b3IpIHx8IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgZm9ybWF0VG9WYWx1ZTogZnVuY3Rpb24gZm9ybWF0VG9WYWx1ZShkYXRlKSB7XG4gICAgICB2YXIgaXNGb3JtYXR0YWJsZSA9IE9iamVjdChkYXRlX3V0aWxfW1wiaXNEYXRlT2JqZWN0XCJdKShkYXRlKSB8fCBBcnJheS5pc0FycmF5KGRhdGUpICYmIGRhdGUuZXZlcnkoZGF0ZV91dGlsX1tcImlzRGF0ZU9iamVjdFwiXSk7XG4gICAgICBpZiAodGhpcy52YWx1ZUZvcm1hdCAmJiBpc0Zvcm1hdHRhYmxlKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXRBc0Zvcm1hdEFuZFR5cGUoZGF0ZSwgdGhpcy52YWx1ZUZvcm1hdCwgdGhpcy50eXBlLCB0aGlzLnJhbmdlU2VwYXJhdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgIH0sXG5cblxuICAgIC8vIHtwYXJzZSwgZm9ybWF0VG99IFN0cmluZyBkZWFscyB3aXRoIHVzZXIgaW5wdXRcbiAgICBwYXJzZVN0cmluZzogZnVuY3Rpb24gcGFyc2VTdHJpbmcodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB0aGlzLnR5cGUgOiB0aGlzLnR5cGUucmVwbGFjZSgncmFuZ2UnLCAnJyk7XG4gICAgICByZXR1cm4gcGFyc2VBc0Zvcm1hdEFuZFR5cGUodmFsdWUsIHRoaXMuZm9ybWF0LCB0eXBlKTtcbiAgICB9LFxuICAgIGZvcm1hdFRvU3RyaW5nOiBmdW5jdGlvbiBmb3JtYXRUb1N0cmluZyh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHRoaXMudHlwZSA6IHRoaXMudHlwZS5yZXBsYWNlKCdyYW5nZScsICcnKTtcbiAgICAgIHJldHVybiBmb3JtYXRBc0Zvcm1hdEFuZFR5cGUodmFsdWUsIHRoaXMuZm9ybWF0LCB0eXBlKTtcbiAgICB9LFxuICAgIGhhbmRsZU1vdXNlRW50ZXI6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlRW50ZXIoKSB7XG4gICAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLnBpY2tlckRpc2FibGVkKSByZXR1cm47XG4gICAgICBpZiAoIXRoaXMudmFsdWVJc0VtcHR5ICYmIHRoaXMuY2xlYXJhYmxlKSB7XG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKCkge1xuICAgICAgaWYgKHRoaXMudXNlcklucHV0KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMucGFyc2VTdHJpbmcodGhpcy5kaXNwbGF5VmFsdWUpO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnBpY2tlci52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdElucHV0KHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudXNlcklucHV0ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnVzZXJJbnB1dCA9PT0gJycpIHtcbiAgICAgICAgdGhpcy5lbWl0SW5wdXQobnVsbCk7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZShudWxsKTtcbiAgICAgICAgdGhpcy51c2VySW5wdXQgPSBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlU3RhcnRJbnB1dDogZnVuY3Rpb24gaGFuZGxlU3RhcnRJbnB1dChldmVudCkge1xuICAgICAgaWYgKHRoaXMudXNlcklucHV0KSB7XG4gICAgICAgIHRoaXMudXNlcklucHV0ID0gW2V2ZW50LnRhcmdldC52YWx1ZSwgdGhpcy51c2VySW5wdXRbMV1dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51c2VySW5wdXQgPSBbZXZlbnQudGFyZ2V0LnZhbHVlLCBudWxsXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUVuZElucHV0OiBmdW5jdGlvbiBoYW5kbGVFbmRJbnB1dChldmVudCkge1xuICAgICAgaWYgKHRoaXMudXNlcklucHV0KSB7XG4gICAgICAgIHRoaXMudXNlcklucHV0ID0gW3RoaXMudXNlcklucHV0WzBdLCBldmVudC50YXJnZXQudmFsdWVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51c2VySW5wdXQgPSBbbnVsbCwgZXZlbnQudGFyZ2V0LnZhbHVlXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVN0YXJ0Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTdGFydENoYW5nZShldmVudCkge1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy5wYXJzZVN0cmluZyh0aGlzLnVzZXJJbnB1dCAmJiB0aGlzLnVzZXJJbnB1dFswXSk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy51c2VySW5wdXQgPSBbdGhpcy5mb3JtYXRUb1N0cmluZyh2YWx1ZSksIHRoaXMuZGlzcGxheVZhbHVlWzFdXTtcbiAgICAgICAgdmFyIG5ld1ZhbHVlID0gW3ZhbHVlLCB0aGlzLnBpY2tlci52YWx1ZSAmJiB0aGlzLnBpY2tlci52YWx1ZVsxXV07XG4gICAgICAgIHRoaXMucGlja2VyLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRWYWx1ZShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLmVtaXRJbnB1dChuZXdWYWx1ZSk7XG4gICAgICAgICAgdGhpcy51c2VySW5wdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVFbmRDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUVuZENoYW5nZShldmVudCkge1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy5wYXJzZVN0cmluZyh0aGlzLnVzZXJJbnB1dCAmJiB0aGlzLnVzZXJJbnB1dFsxXSk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy51c2VySW5wdXQgPSBbdGhpcy5kaXNwbGF5VmFsdWVbMF0sIHRoaXMuZm9ybWF0VG9TdHJpbmcodmFsdWUpXTtcbiAgICAgICAgdmFyIG5ld1ZhbHVlID0gW3RoaXMucGlja2VyLnZhbHVlICYmIHRoaXMucGlja2VyLnZhbHVlWzBdLCB2YWx1ZV07XG4gICAgICAgIHRoaXMucGlja2VyLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRWYWx1ZShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLmVtaXRJbnB1dChuZXdWYWx1ZSk7XG4gICAgICAgICAgdGhpcy51c2VySW5wdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDbGlja0ljb246IGZ1bmN0aW9uIGhhbmRsZUNsaWNrSWNvbihldmVudCkge1xuICAgICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5waWNrZXJEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMuc2hvd0Nsb3NlKSB7XG4gICAgICAgIHRoaXMudmFsdWVPbk9wZW4gPSB0aGlzLnZhbHVlO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5lbWl0SW5wdXQobnVsbCk7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZShudWxsKTtcbiAgICAgICAgdGhpcy5zaG93Q2xvc2UgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMucGlja2VyICYmIHR5cGVvZiB0aGlzLnBpY2tlci5oYW5kbGVDbGVhciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRoaXMucGlja2VyLmhhbmRsZUNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGlja2VyVmlzaWJsZSA9ICF0aGlzLnBpY2tlclZpc2libGU7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDbG9zZTogZnVuY3Rpb24gaGFuZGxlQ2xvc2UoKSB7XG4gICAgICBpZiAoIXRoaXMucGlja2VyVmlzaWJsZSkgcmV0dXJuO1xuICAgICAgdGhpcy5waWNrZXJWaXNpYmxlID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlcycgfHwgdGhpcy50eXBlID09PSAneWVhcnMnIHx8IHRoaXMudHlwZSA9PT0gJ21vbnRocycpIHtcbiAgICAgICAgLy8gcmVzdG9yZSB0byBmb3JtZXIgdmFsdWVcbiAgICAgICAgdmFyIG9sZFZhbHVlID0gcGFyc2VBc0Zvcm1hdEFuZFR5cGUodGhpcy52YWx1ZU9uT3BlbiwgdGhpcy52YWx1ZUZvcm1hdCwgdGhpcy50eXBlLCB0aGlzLnJhbmdlU2VwYXJhdG9yKSB8fCB0aGlzLnZhbHVlT25PcGVuO1xuICAgICAgICB0aGlzLmVtaXRJbnB1dChvbGRWYWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVGaWVsZFJlc2V0OiBmdW5jdGlvbiBoYW5kbGVGaWVsZFJlc2V0KGluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy51c2VySW5wdXQgPSBpbml0aWFsVmFsdWUgPT09ICcnID8gbnVsbCA6IGluaXRpYWxWYWx1ZTtcbiAgICB9LFxuICAgIGhhbmRsZUZvY3VzOiBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgIHZhciB0eXBlID0gdGhpcy50eXBlO1xuXG4gICAgICBpZiAoSEFWRV9UUklHR0VSX1RZUEVTLmluZGV4T2YodHlwZSkgIT09IC0xICYmICF0aGlzLnBpY2tlclZpc2libGUpIHtcbiAgICAgICAgdGhpcy5waWNrZXJWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuJGVtaXQoJ2ZvY3VzJywgdGhpcyk7XG4gICAgfSxcbiAgICBoYW5kbGVLZXlkb3duOiBmdW5jdGlvbiBoYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG5cbiAgICAgIC8vIEVTQ1xuICAgICAgaWYgKGtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgIHRoaXMucGlja2VyVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUYWJcbiAgICAgIGlmIChrZXlDb2RlID09PSA5KSB7XG4gICAgICAgIGlmICghdGhpcy5yYW5nZWQpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSgpO1xuICAgICAgICAgIHRoaXMucGlja2VyVmlzaWJsZSA9IHRoaXMucGlja2VyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1c2VyIG1heSBjaGFuZ2UgZm9jdXMgYmV0d2VlbiB0d28gaW5wdXRcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChfdGhpcy5yZWZJbnB1dC5pbmRleE9mKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpID09PSAtMSkge1xuICAgICAgICAgICAgICBfdGhpcy5waWNrZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgIF90aGlzLmJsdXIoKTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBFbnRlclxuICAgICAgaWYgKGtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgIGlmICh0aGlzLnVzZXJJbnB1dCA9PT0gJycgfHwgdGhpcy5pc1ZhbGlkVmFsdWUodGhpcy5wYXJzZVN0cmluZyh0aGlzLmRpc3BsYXlWYWx1ZSkpKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UoKTtcbiAgICAgICAgICB0aGlzLnBpY2tlclZpc2libGUgPSB0aGlzLnBpY2tlci52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5ibHVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgdXNlciBpcyB0eXBpbmcsIGRvIG5vdCBsZXQgcGlja2VyIGhhbmRsZSBrZXkgaW5wdXRcbiAgICAgIGlmICh0aGlzLnVzZXJJbnB1dCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBkZWxlZ2F0ZSBvdGhlciBrZXlzIHRvIHBhbmVsXG4gICAgICBpZiAodGhpcy5waWNrZXIgJiYgdGhpcy5waWNrZXIuaGFuZGxlS2V5ZG93bikge1xuICAgICAgICB0aGlzLnBpY2tlci5oYW5kbGVLZXlkb3duKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVJhbmdlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZVJhbmdlQ2xpY2soKSB7XG4gICAgICB2YXIgdHlwZSA9IHRoaXMudHlwZTtcblxuICAgICAgaWYgKEhBVkVfVFJJR0dFUl9UWVBFUy5pbmRleE9mKHR5cGUpICE9PSAtMSAmJiAhdGhpcy5waWNrZXJWaXNpYmxlKSB7XG4gICAgICAgIHRoaXMucGlja2VyVmlzaWJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLiRlbWl0KCdmb2N1cycsIHRoaXMpO1xuICAgIH0sXG4gICAgaGlkZVBpY2tlcjogZnVuY3Rpb24gaGlkZVBpY2tlcigpIHtcbiAgICAgIGlmICh0aGlzLnBpY2tlcikge1xuICAgICAgICB0aGlzLnBpY2tlci5yZXNldFZpZXcgJiYgdGhpcy5waWNrZXIucmVzZXRWaWV3KCk7XG4gICAgICAgIHRoaXMucGlja2VyVmlzaWJsZSA9IHRoaXMucGlja2VyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kZXN0cm95UG9wcGVyKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzaG93UGlja2VyOiBmdW5jdGlvbiBzaG93UGlja2VyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuICAgICAgaWYgKCF0aGlzLnBpY2tlcikge1xuICAgICAgICB0aGlzLm1vdW50UGlja2VyKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnBpY2tlclZpc2libGUgPSB0aGlzLnBpY2tlci52aXNpYmxlID0gdHJ1ZTtcblxuICAgICAgdGhpcy51cGRhdGVQb3BwZXIoKTtcblxuICAgICAgdGhpcy5waWNrZXIudmFsdWUgPSB0aGlzLnBhcnNlZFZhbHVlO1xuICAgICAgdGhpcy5waWNrZXIucmVzZXRWaWV3ICYmIHRoaXMucGlja2VyLnJlc2V0VmlldygpO1xuXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5waWNrZXIuYWRqdXN0U3Bpbm5lcnMgJiYgX3RoaXMyLnBpY2tlci5hZGp1c3RTcGlubmVycygpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBtb3VudFBpY2tlcjogZnVuY3Rpb24gbW91bnRQaWNrZXIoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdGhpcy5waWNrZXIgPSBuZXcgZXh0ZXJuYWxfdnVlX2RlZmF1bHQuYSh0aGlzLnBhbmVsKS4kbW91bnQoKTtcbiAgICAgIHRoaXMucGlja2VyLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlO1xuICAgICAgdGhpcy5waWNrZXIuZGVmYXVsdFRpbWUgPSB0aGlzLmRlZmF1bHRUaW1lO1xuICAgICAgdGhpcy5waWNrZXIucG9wcGVyQ2xhc3MgPSB0aGlzLnBvcHBlckNsYXNzO1xuICAgICAgdGhpcy5wb3BwZXJFbG0gPSB0aGlzLnBpY2tlci4kZWw7XG4gICAgICB0aGlzLnBpY2tlci53aWR0aCA9IHRoaXMucmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgdGhpcy5waWNrZXIuc2hvd1RpbWUgPSB0aGlzLnR5cGUgPT09ICdkYXRldGltZScgfHwgdGhpcy50eXBlID09PSAnZGF0ZXRpbWVyYW5nZSc7XG4gICAgICB0aGlzLnBpY2tlci5zZWxlY3Rpb25Nb2RlID0gdGhpcy5zZWxlY3Rpb25Nb2RlO1xuICAgICAgdGhpcy5waWNrZXIudW5saW5rUGFuZWxzID0gdGhpcy51bmxpbmtQYW5lbHM7XG4gICAgICB0aGlzLnBpY2tlci5hcnJvd0NvbnRyb2wgPSB0aGlzLmFycm93Q29udHJvbCB8fCB0aGlzLnRpbWVBcnJvd0NvbnRyb2wgfHwgZmFsc2U7XG4gICAgICB0aGlzLiR3YXRjaCgnZm9ybWF0JywgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICBfdGhpczMucGlja2VyLmZvcm1hdCA9IGZvcm1hdDtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgdXBkYXRlT3B0aW9ucyA9IGZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnMoKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gX3RoaXMzLnBpY2tlck9wdGlvbnM7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zZWxlY3RhYmxlUmFuZ2UpIHtcbiAgICAgICAgICB2YXIgcmFuZ2VzID0gb3B0aW9ucy5zZWxlY3RhYmxlUmFuZ2U7XG4gICAgICAgICAgdmFyIHBhcnNlciA9IFRZUEVfVkFMVUVfUkVTT0xWRVJfTUFQLmRhdGV0aW1lcmFuZ2UucGFyc2VyO1xuICAgICAgICAgIHZhciBmb3JtYXQgPSBERUZBVUxUX0ZPUk1BVFMudGltZXJhbmdlO1xuXG4gICAgICAgICAgcmFuZ2VzID0gQXJyYXkuaXNBcnJheShyYW5nZXMpID8gcmFuZ2VzIDogW3Jhbmdlc107XG4gICAgICAgICAgX3RoaXMzLnBpY2tlci5zZWxlY3RhYmxlUmFuZ2UgPSByYW5nZXMubWFwKGZ1bmN0aW9uIChyYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlcihyYW5nZSwgZm9ybWF0LCBfdGhpczMucmFuZ2VTZXBhcmF0b3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShvcHRpb24pICYmXG4gICAgICAgICAgLy8g5b+955WlIHRpbWUtcGlja2VyIOeahOivpemFjee9rumhuVxuICAgICAgICAgIG9wdGlvbiAhPT0gJ3NlbGVjdGFibGVSYW5nZScpIHtcbiAgICAgICAgICAgIF90aGlzMy5waWNrZXJbb3B0aW9uXSA9IG9wdGlvbnNbb3B0aW9uXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBtYWluIGZvcm1hdCBtdXN0IHByZXZhaWwgb3ZlciB1bmRvY3VtZW50ZWQgcGlja2VyT3B0aW9ucy5mb3JtYXRcbiAgICAgICAgaWYgKF90aGlzMy5mb3JtYXQpIHtcbiAgICAgICAgICBfdGhpczMucGlja2VyLmZvcm1hdCA9IF90aGlzMy5mb3JtYXQ7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB1cGRhdGVPcHRpb25zKCk7XG4gICAgICB0aGlzLnVud2F0Y2hQaWNrZXJPcHRpb25zID0gdGhpcy4kd2F0Y2goJ3BpY2tlck9wdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB1cGRhdGVPcHRpb25zKCk7XG4gICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICB0aGlzLiRlbC5hcHBlbmRDaGlsZCh0aGlzLnBpY2tlci4kZWwpO1xuICAgICAgdGhpcy5waWNrZXIucmVzZXRWaWV3ICYmIHRoaXMucGlja2VyLnJlc2V0VmlldygpO1xuXG4gICAgICB0aGlzLnBpY2tlci4kb24oJ2RvZGVzdHJveScsIHRoaXMuZG9EZXN0cm95KTtcbiAgICAgIHRoaXMucGlja2VyLiRvbigncGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnO1xuICAgICAgICB2YXIgdmlzaWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2U7XG5cbiAgICAgICAgX3RoaXMzLnVzZXJJbnB1dCA9IG51bGw7XG4gICAgICAgIF90aGlzMy5waWNrZXJWaXNpYmxlID0gX3RoaXMzLnBpY2tlci52aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgX3RoaXMzLmVtaXRJbnB1dChkYXRlKTtcbiAgICAgICAgX3RoaXMzLnBpY2tlci5yZXNldFZpZXcgJiYgX3RoaXMzLnBpY2tlci5yZXNldFZpZXcoKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnBpY2tlci4kb24oJ3NlbGVjdC1yYW5nZScsIGZ1bmN0aW9uIChzdGFydCwgZW5kLCBwb3MpIHtcbiAgICAgICAgaWYgKF90aGlzMy5yZWZJbnB1dC5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgICAgaWYgKCFwb3MgfHwgcG9zID09PSAnbWluJykge1xuICAgICAgICAgIF90aGlzMy5yZWZJbnB1dFswXS5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTtcbiAgICAgICAgICBfdGhpczMucmVmSW5wdXRbMF0uZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChwb3MgPT09ICdtYXgnKSB7XG4gICAgICAgICAgX3RoaXMzLnJlZklucHV0WzFdLnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgICAgICAgIF90aGlzMy5yZWZJbnB1dFsxXS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHVubW91bnRQaWNrZXI6IGZ1bmN0aW9uIHVubW91bnRQaWNrZXIoKSB7XG4gICAgICBpZiAodGhpcy5waWNrZXIpIHtcbiAgICAgICAgdGhpcy5waWNrZXIuJGRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5waWNrZXIuJG9mZigpO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMudW53YXRjaFBpY2tlck9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0aGlzLnVud2F0Y2hQaWNrZXJPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5waWNrZXIuJGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5waWNrZXIuJGVsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVtaXRDaGFuZ2U6IGZ1bmN0aW9uIGVtaXRDaGFuZ2UodmFsKSB7XG4gICAgICAvLyBkZXRlcm1pbmUgdXNlciByZWFsIGNoYW5nZSBvbmx5XG4gICAgICBpZiAoIXZhbHVlRXF1YWxzKHZhbCwgdGhpcy52YWx1ZU9uT3BlbikpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsKTtcbiAgICAgICAgdGhpcy52YWx1ZU9uT3BlbiA9IHZhbDtcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVFdmVudCkge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsRm9ybUl0ZW0nLCAnZWwuZm9ybS5jaGFuZ2UnLCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBlbWl0SW5wdXQ6IGZ1bmN0aW9uIGVtaXRJbnB1dCh2YWwpIHtcbiAgICAgIHZhciBmb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdFRvVmFsdWUodmFsKTtcbiAgICAgIGlmICghdmFsdWVFcXVhbHModGhpcy52YWx1ZSwgZm9ybWF0dGVkKSkge1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIGZvcm1hdHRlZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpc1ZhbGlkVmFsdWU6IGZ1bmN0aW9uIGlzVmFsaWRWYWx1ZSh2YWx1ZSkge1xuICAgICAgaWYgKCF0aGlzLnBpY2tlcikge1xuICAgICAgICB0aGlzLm1vdW50UGlja2VyKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5waWNrZXIuaXNWYWxpZFZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAmJiB0aGlzLnBpY2tlci5pc1ZhbGlkVmFsdWUodmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BpY2tlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3BpY2tlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChwaWNrZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BpY2tlci52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBwaWNrZXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfcGlja2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBwaWNrZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF83OWFlMDY5Zl9yZW5kZXIsXG4gIHBpY2tlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzc5YWUwNjlmX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgcGlja2VyX2FwaTsgfVxucGlja2VyX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BpY2tlci52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGlja2VyID0gKHBpY2tlcl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9wYW5lbC9kYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNDQwZDRlYSZcbnZhciBkYXRldnVlX3R5cGVfdGVtcGxhdGVfaWRfMjQ0MGQ0ZWFfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwidHJhbnNpdGlvblwiLFxuICAgIHtcbiAgICAgIGF0dHJzOiB7IG5hbWU6IFwiZWwtem9vbS1pbi10b3BcIiB9LFxuICAgICAgb246IHsgXCJhZnRlci1lbnRlclwiOiBfdm0uaGFuZGxlRW50ZXIsIFwiYWZ0ZXItbGVhdmVcIjogX3ZtLmhhbmRsZUxlYXZlIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS52aXNpYmxlLFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInZpc2libGVcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcGlja2VyLXBhbmVsIGVsLWRhdGUtcGlja2VyIGVsLXBvcHBlclwiLFxuICAgICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiaGFzLXNpZGViYXJcIjogX3ZtLiRzbG90cy5zaWRlYmFyIHx8IF92bS5zaG9ydGN1dHMsXG4gICAgICAgICAgICAgIFwiaGFzLXRpbWVcIjogX3ZtLnNob3dUaW1lXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3ZtLnBvcHBlckNsYXNzXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1waWNrZXItcGFuZWxfX2JvZHktd3JhcHBlclwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5fdChcInNpZGViYXJcIiksXG4gICAgICAgICAgICAgIF92bS5zaG9ydGN1dHNcbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLXBpY2tlci1wYW5lbF9fc2lkZWJhclwiIH0sXG4gICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uc2hvcnRjdXRzLCBmdW5jdGlvbihzaG9ydGN1dCwga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXBpY2tlci1wYW5lbF9fc2hvcnRjdXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJidXR0b25cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVTaG9ydGN1dENsaWNrKHNob3J0Y3V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKHNob3J0Y3V0LnRleHQpKV1cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1waWNrZXItcGFuZWxfX2JvZHlcIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLnNob3dUaW1lXG4gICAgICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtZGF0ZS1waWNrZXJfX3RpbWUtaGVhZGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWRhdGUtcGlja2VyX19lZGl0b3Itd3JhcFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZWwtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJlbC5kYXRlcGlja2VyLnNlbGVjdERhdGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZpc2libGVEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF92bS51c2VySW5wdXREYXRlID0gdmFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogX3ZtLmhhbmRsZVZpc2libGVEYXRlQ2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcImNsaWNrb3V0c2lkZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LWNsaWNrb3V0c2lkZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oYW5kbGVUaW1lUGlja0Nsb3NlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJoYW5kbGVUaW1lUGlja0Nsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWRhdGUtcGlja2VyX19lZGl0b3Itd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImVsLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IFwiaW5wdXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwiZWwuZGF0ZXBpY2tlci5zZWxlY3RUaW1lXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS52aXNpYmxlVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnRpbWVQaWNrZXJWaXNpYmxlID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfdm0udXNlcklucHV0VGltZSA9IHZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IF92bS5oYW5kbGVWaXNpYmxlVGltZUNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGltZS1waWNrZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogXCJ0aW1lcGlja2VyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZS1hcnJvdy1jb250cm9sXCI6IF92bS5hcnJvd0NvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBfdm0udGltZVBpY2tlclZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrOiBfdm0uaGFuZGxlVGltZVBpY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VudGVkOiBfdm0ucHJveHlUaW1lUGlja2VyRGF0YVByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5jdXJyZW50VmlldyAhPT0gXCJ0aW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImN1cnJlbnRWaWV3ICE9PSAndGltZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtZGF0ZS1waWNrZXJfX2hlYWRlclwiLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICAgICAgICAgIFwiZWwtZGF0ZS1waWNrZXJfX2hlYWRlci0tYm9yZGVyZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5jdXJyZW50VmlldyA9PT0gXCJ5ZWFyXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5jdXJyZW50VmlldyA9PT0gXCJtb250aFwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1kYXRlLXBpY2tlcl9fcHJldi1idG4gZWwtaWNvbi1kLWFycm93LWxlZnRcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfdm0udChcImVsLmRhdGVwaWNrZXIucHJldlllYXJcIilcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ucHJldlllYXIgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJidXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY3VycmVudFZpZXcgPT09IFwiZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImN1cnJlbnRWaWV3ID09PSAnZGF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICBcImVsLXBpY2tlci1wYW5lbF9faWNvbi1idG4gZWwtZGF0ZS1waWNrZXJfX3ByZXYtYnRuIGVsLWljb24tYXJyb3ctbGVmdFwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF92bS50KFwiZWwuZGF0ZXBpY2tlci5wcmV2TW9udGhcIilcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ucHJldk1vbnRoIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWRhdGUtcGlja2VyX19oZWFkZXItbGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHJvbGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uc2hvd1llYXJQaWNrZXIgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnllYXJMYWJlbCkpXVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY3VycmVudFZpZXcgPT09IFwiZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiY3VycmVudFZpZXcgPT09ICdkYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1kYXRlLXBpY2tlcl9faGVhZGVyLWxhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogeyBhY3RpdmU6IF92bS5jdXJyZW50VmlldyA9PT0gXCJtb250aFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyByb2xlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnNob3dNb250aFBpY2tlciB9XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0udChcImVsLmRhdGVwaWNrZXIubW9udGhcIiArIChfdm0ubW9udGggKyAxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBfYyhcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICBcImVsLXBpY2tlci1wYW5lbF9faWNvbi1idG4gZWwtZGF0ZS1waWNrZXJfX25leHQtYnRuIGVsLWljb24tZC1hcnJvdy1yaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF92bS50KFwiZWwuZGF0ZXBpY2tlci5uZXh0WWVhclwiKVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5uZXh0WWVhciB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5jdXJyZW50VmlldyA9PT0gXCJkYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiY3VycmVudFZpZXcgPT09ICdkYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1kYXRlLXBpY2tlcl9fbmV4dC1idG4gZWwtaWNvbi1hcnJvdy1yaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF92bS50KFwiZWwuZGF0ZXBpY2tlci5uZXh0TW9udGhcIilcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ubmV4dE1vbnRoIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtcGlja2VyLXBhbmVsX19jb250ZW50XCIgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJkYXRlLXRhYmxlXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmN1cnJlbnRWaWV3ID09PSBcImRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjdXJyZW50VmlldyA9PT0gJ2RhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInNlbGVjdGlvbi1tb2RlXCI6IF92bS5zZWxlY3Rpb25Nb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmaXJzdC1kYXktb2Ytd2Vla1wiOiBfdm0uZmlyc3REYXlPZldlZWssXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0LXZhbHVlXCI6IF92bS5kZWZhdWx0VmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgRGF0ZShfdm0uZGVmYXVsdFZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBfdm0uZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY2VsbC1jbGFzcy1uYW1lXCI6IF92bS5jZWxsQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXNhYmxlZC1kYXRlXCI6IF92bS5kaXNhYmxlZERhdGVcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IHBpY2s6IF92bS5oYW5kbGVEYXRlUGljayB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInllYXItdGFibGVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY3VycmVudFZpZXcgPT09IFwieWVhclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImN1cnJlbnRWaWV3ID09PSAneWVhcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2VsZWN0aW9uLW1vZGVcIjogX3ZtLnNlbGVjdGlvbk1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0LXZhbHVlXCI6IF92bS5kZWZhdWx0VmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgRGF0ZShfdm0uZGVmYXVsdFZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBfdm0uZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlzYWJsZWQtZGF0ZVwiOiBfdm0uZGlzYWJsZWREYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBvbjogeyBwaWNrOiBfdm0uaGFuZGxlWWVhclBpY2sgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJtb250aC10YWJsZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5jdXJyZW50VmlldyA9PT0gXCJtb250aFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImN1cnJlbnRWaWV3ID09PSAnbW9udGgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInNlbGVjdGlvbi1tb2RlXCI6IF92bS5zZWxlY3Rpb25Nb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdC12YWx1ZVwiOiBfdm0uZGVmYXVsdFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IERhdGUoX3ZtLmRlZmF1bHRWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogX3ZtLmRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpc2FibGVkLWRhdGVcIjogX3ZtLmRpc2FibGVkRGF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHsgcGljazogX3ZtLmhhbmRsZU1vbnRoUGljayB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmZvb3RlclZpc2libGUgJiZcbiAgICAgICAgICAgICAgICAgICAgKF92bS5jdXJyZW50VmlldyA9PT0gXCJkYXRlXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uY3VycmVudFZpZXcgPT09IFwibW9udGhcIiB8fFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5jdXJyZW50VmlldyA9PT0gXCJ5ZWFyXCIpLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjpcbiAgICAgICAgICAgICAgICAgICAgXCJmb290ZXJWaXNpYmxlICYmIChjdXJyZW50VmlldyA9PT0gJ2RhdGUnIHx8IGN1cnJlbnRWaWV3ID09PSAnbW9udGgnIHx8IGN1cnJlbnRWaWV3ID09PSAneWVhcicpXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXBpY2tlci1wYW5lbF9fZm9vdGVyXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiZWwtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3Rpb25Nb2RlICE9PSBcImRhdGVzXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3Rpb25Nb2RlICE9PSBcIm1vbnRoc1wiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VsZWN0aW9uTW9kZSAhPT0gXCJ5ZWFyc1wiLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgICAgICAgICBcInNlbGVjdGlvbk1vZGUgIT09ICdkYXRlcycgJiYgc2VsZWN0aW9uTW9kZSAhPT0gJ21vbnRocycgJiYgc2VsZWN0aW9uTW9kZSAhPT0gJ3llYXJzJ1wiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1waWNrZXItcGFuZWxfX2xpbmstYnRuXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBzaXplOiBcIm1pbmlcIiwgdHlwZTogXCJ0ZXh0XCIgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uY2hhbmdlVG9Ob3cgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0udChcImVsLmRhdGVwaWNrZXIubm93XCIpKSArXG4gICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICBcIlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJlbC1idXR0b25cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1waWNrZXItcGFuZWxfX2xpbmstYnRuXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBwbGFpbjogXCJcIiwgc2l6ZTogXCJtaW5pXCIgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uY29uZmlybSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS50KFwiZWwuZGF0ZXBpY2tlci5jb25maXJtXCIpKSArXG4gICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICBcIlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIF1cbiAgICAgIClcbiAgICBdXG4gIClcbn1cbnZhciBkYXRldnVlX3R5cGVfdGVtcGxhdGVfaWRfMjQ0MGQ0ZWFfc3RhdGljUmVuZGVyRm5zID0gW11cbmRhdGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yNDQwZDRlYV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9wYW5lbC9kYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNDQwZDRlYSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvdGltZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2Q5MzkwODkmXG52YXIgdGltZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzNkOTM5MDg5X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInRyYW5zaXRpb25cIixcbiAgICB7XG4gICAgICBhdHRyczogeyBuYW1lOiBcImVsLXpvb20taW4tdG9wXCIgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiYWZ0ZXItbGVhdmVcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLiRlbWl0KFwiZG9kZXN0cm95XCIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS52aXNpYmxlLFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInZpc2libGVcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1wYW5lbCBlbC1wb3BwZXJcIixcbiAgICAgICAgICBjbGFzczogX3ZtLnBvcHBlckNsYXNzXG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtcGFuZWxfX2NvbnRlbnRcIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJoYXMtc2Vjb25kc1wiOiBfdm0uc2hvd1NlY29uZHMgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJ0aW1lLXNwaW5uZXJcIiwge1xuICAgICAgICAgICAgICAgIHJlZjogXCJzcGlubmVyXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIFwiYXJyb3ctY29udHJvbFwiOiBfdm0udXNlQXJyb3csXG4gICAgICAgICAgICAgICAgICBcInNob3ctc2Vjb25kc1wiOiBfdm0uc2hvd1NlY29uZHMsXG4gICAgICAgICAgICAgICAgICBcImFtLXBtLW1vZGVcIjogX3ZtLmFtUG1Nb2RlLFxuICAgICAgICAgICAgICAgICAgZGF0ZTogX3ZtLmRhdGVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2U6IF92bS5oYW5kbGVDaGFuZ2UsXG4gICAgICAgICAgICAgICAgICBcInNlbGVjdC1yYW5nZVwiOiBfdm0uc2V0U2VsZWN0aW9uUmFuZ2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgICksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC10aW1lLXBhbmVsX19mb290ZXJcIiB9LCBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtcGFuZWxfX2J0biBjYW5jZWxcIixcbiAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5oYW5kbGVDYW5jZWwgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcImVsLmRhdGVwaWNrZXIuY2FuY2VsXCIpKSldXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10aW1lLXBhbmVsX19idG5cIixcbiAgICAgICAgICAgICAgICBjbGFzczogeyBjb25maXJtOiAhX3ZtLmRpc2FibGVkIH0sXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJidXR0b25cIiB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVDb25maXJtKClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwiZWwuZGF0ZXBpY2tlci5jb25maXJtXCIpKSldXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIHRpbWV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zZDkzOTA4OV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxudGltZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzNkOTM5MDg5X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNkOTM5MDg5JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9iYXNpYy90aW1lLXNwaW5uZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFmYWNhZGViJlxudmFyIHRpbWVfc3Bpbm5lcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzFmYWNhZGViX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lclwiLFxuICAgICAgY2xhc3M6IHsgXCJoYXMtc2Vjb25kc1wiOiBfdm0uc2hvd1NlY29uZHMgfVxuICAgIH0sXG4gICAgW1xuICAgICAgIV92bS5hcnJvd0NvbnRyb2xcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJlbC1zY3JvbGxiYXJcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZjogXCJob3Vyc1wiLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lcl9fd3JhcHBlclwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBcIndyYXAtc3R5bGVcIjogXCJtYXgtaGVpZ2h0OiBpbmhlcml0O1wiLFxuICAgICAgICAgICAgICAgICAgXCJ2aWV3LWNsYXNzXCI6IFwiZWwtdGltZS1zcGlubmVyX19saXN0XCIsXG4gICAgICAgICAgICAgICAgICBub3Jlc2l6ZTogXCJcIixcbiAgICAgICAgICAgICAgICAgIHRhZzogXCJ1bFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBuYXRpdmVPbjoge1xuICAgICAgICAgICAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5lbWl0U2VsZWN0UmFuZ2UoXCJob3Vyc1wiKVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG1vdXNlbW92ZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5hZGp1c3RDdXJyZW50U3Bpbm5lcihcImhvdXJzXCIpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBfdm0uX2woX3ZtLmhvdXJzTGlzdCwgZnVuY3Rpb24oZGlzYWJsZWQsIGhvdXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICBcImxpXCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogaG91cixcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1zcGlubmVyX19pdGVtXCIsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7IGFjdGl2ZTogaG91ciA9PT0gX3ZtLmhvdXJzLCBkaXNhYmxlZDogZGlzYWJsZWQgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQ2xpY2soXCJob3Vyc1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBob3VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgKFwiMFwiICsgKF92bS5hbVBtTW9kZSA/IGhvdXIgJSAxMiB8fCAxMiA6IGhvdXIpKS5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApICsgX3ZtLl9zKF92bS5hbVBtKGhvdXIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImVsLXNjcm9sbGJhclwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVmOiBcIm1pbnV0ZXNcIixcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10aW1lLXNwaW5uZXJfX3dyYXBwZXJcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgXCJ3cmFwLXN0eWxlXCI6IFwibWF4LWhlaWdodDogaW5oZXJpdDtcIixcbiAgICAgICAgICAgICAgICAgIFwidmlldy1jbGFzc1wiOiBcImVsLXRpbWUtc3Bpbm5lcl9fbGlzdFwiLFxuICAgICAgICAgICAgICAgICAgbm9yZXNpemU6IFwiXCIsXG4gICAgICAgICAgICAgICAgICB0YWc6IFwidWxcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbmF0aXZlT246IHtcbiAgICAgICAgICAgICAgICAgIG1vdXNlZW50ZXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0uZW1pdFNlbGVjdFJhbmdlKFwibWludXRlc1wiKVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG1vdXNlbW92ZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5hZGp1c3RDdXJyZW50U3Bpbm5lcihcIm1pbnV0ZXNcIilcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF92bS5fbChfdm0ubWludXRlc0xpc3QsIGZ1bmN0aW9uKGVuYWJsZWQsIGtleSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lcl9faXRlbVwiLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczogeyBhY3RpdmU6IGtleSA9PT0gX3ZtLm1pbnV0ZXMsIGRpc2FibGVkOiAhZW5hYmxlZCB9LFxuICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVDbGljayhcIm1pbnV0ZXNcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoKFwiMFwiICsga2V5KS5zbGljZSgtMikpKV1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZWwtc2Nyb2xsYmFyXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dTZWNvbmRzLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dTZWNvbmRzXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlZjogXCJzZWNvbmRzXCIsXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1zcGlubmVyX193cmFwcGVyXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIFwid3JhcC1zdHlsZVwiOiBcIm1heC1oZWlnaHQ6IGluaGVyaXQ7XCIsXG4gICAgICAgICAgICAgICAgICBcInZpZXctY2xhc3NcIjogXCJlbC10aW1lLXNwaW5uZXJfX2xpc3RcIixcbiAgICAgICAgICAgICAgICAgIG5vcmVzaXplOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgdGFnOiBcInVsXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAgICAgICAgICBtb3VzZWVudGVyOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmVtaXRTZWxlY3RSYW5nZShcInNlY29uZHNcIilcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBtb3VzZW1vdmU6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0uYWRqdXN0Q3VycmVudFNwaW5uZXIoXCJzZWNvbmRzXCIpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBfdm0uX2woNjAsIGZ1bmN0aW9uKHNlY29uZCwga2V5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgXCJsaVwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1zcGlubmVyX19pdGVtXCIsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7IGFjdGl2ZToga2V5ID09PSBfdm0uc2Vjb25kcyB9LFxuICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVDbGljayhcInNlY29uZHNcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoKFwiMFwiICsga2V5KS5zbGljZSgtMikpKV1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApXG4gICAgICAgICAgXVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLmFycm93Q29udHJvbFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1zcGlubmVyX193cmFwcGVyIGlzLWFycm93XCIsXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIG1vdXNlZW50ZXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0uZW1pdFNlbGVjdFJhbmdlKFwiaG91cnNcIilcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJyZXBlYXQtY2xpY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtcmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5kZWNyZWFzZSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImRlY3JlYXNlXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lcl9fYXJyb3cgZWwtaWNvbi1hcnJvdy11cFwiXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwicmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXJlcGVhdC1jbGlja1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uaW5jcmVhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJpbmNyZWFzZVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10aW1lLXNwaW5uZXJfX2Fycm93IGVsLWljb24tYXJyb3ctZG93blwiXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcInVsXCIsXG4gICAgICAgICAgICAgICAgICB7IHJlZjogXCJob3Vyc1wiLCBzdGF0aWNDbGFzczogXCJlbC10aW1lLXNwaW5uZXJfX2xpc3RcIiB9LFxuICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5hcnJvd0hvdXJMaXN0LCBmdW5jdGlvbihob3VyLCBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lcl9faXRlbVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBob3VyID09PSBfdm0uaG91cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uaG91cnNMaXN0W2hvdXJdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIgKyAoX3ZtLmFtUG1Nb2RlID8gaG91ciAlIDEyIHx8IDEyIDogaG91cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zbGljZSgtMikgKyBfdm0uYW1QbShob3VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lcl9fd3JhcHBlciBpcy1hcnJvd1wiLFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBtb3VzZWVudGVyOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmVtaXRTZWxlY3RSYW5nZShcIm1pbnV0ZXNcIilcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJyZXBlYXQtY2xpY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtcmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5kZWNyZWFzZSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImRlY3JlYXNlXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lcl9fYXJyb3cgZWwtaWNvbi1hcnJvdy11cFwiXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwicmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXJlcGVhdC1jbGlja1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uaW5jcmVhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJpbmNyZWFzZVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10aW1lLXNwaW5uZXJfX2Fycm93IGVsLWljb24tYXJyb3ctZG93blwiXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcInVsXCIsXG4gICAgICAgICAgICAgICAgICB7IHJlZjogXCJtaW51dGVzXCIsIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lcl9fbGlzdFwiIH0sXG4gICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLmFycm93TWludXRlTGlzdCwgZnVuY3Rpb24obWludXRlLCBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lcl9faXRlbVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHsgYWN0aXZlOiBtaW51dGUgPT09IF92bS5taW51dGVzIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChcIjBcIiArIG1pbnV0ZSkuc2xpY2UoLTIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfdm0uc2hvd1NlY29uZHNcbiAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtc3Bpbm5lcl9fd3JhcHBlciBpcy1hcnJvd1wiLFxuICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIG1vdXNlZW50ZXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVtaXRTZWxlY3RSYW5nZShcInNlY29uZHNcIilcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInJlcGVhdC1jbGlja1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtcmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZGVjcmVhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiZGVjcmVhc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1zcGlubmVyX19hcnJvdyBlbC1pY29uLWFycm93LXVwXCJcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInJlcGVhdC1jbGlja1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtcmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uaW5jcmVhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiaW5jcmVhc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1zcGlubmVyX19hcnJvdyBlbC1pY29uLWFycm93LWRvd25cIlxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ1bFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgcmVmOiBcInNlY29uZHNcIiwgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1zcGlubmVyX19saXN0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLmFycm93U2Vjb25kTGlzdCwgZnVuY3Rpb24oc2Vjb25kLCBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsaVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1zcGlubmVyX19pdGVtXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHsgYWN0aXZlOiBzZWNvbmQgPT09IF92bS5zZWNvbmRzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKFwiMFwiICsgc2Vjb25kKS5zbGljZSgtMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgIF1cbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgdGltZV9zcGlubmVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMWZhY2FkZWJfc3RhdGljUmVuZGVyRm5zID0gW11cbnRpbWVfc3Bpbm5lcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzFmYWNhZGViX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL2Jhc2ljL3RpbWUtc3Bpbm5lci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWZhY2FkZWImXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9iYXNpYy90aW1lLXNwaW5uZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRpbWVfc3Bpbm5lcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIGNvbXBvbmVudHM6IHsgRWxTY3JvbGxiYXI6IHNjcm9sbGJhcl9kZWZhdWx0LmEgfSxcblxuICBkaXJlY3RpdmVzOiB7XG4gICAgcmVwZWF0Q2xpY2s6IHJlcGVhdF9jbGlja1xuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgZGF0ZToge30sXG4gICAgZGVmYXVsdFZhbHVlOiB7fSwgLy8gcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2VcbiAgICBzaG93U2Vjb25kczoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGFycm93Q29udHJvbDogQm9vbGVhbixcbiAgICBhbVBtTW9kZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJycgLy8gJ2EnOiBhbS9wbTsgJ0EnOiBBTS9QTVxuICAgIH1cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGhvdXJzOiBmdW5jdGlvbiBob3VycygpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGUuZ2V0SG91cnMoKTtcbiAgICB9LFxuICAgIG1pbnV0ZXM6IGZ1bmN0aW9uIG1pbnV0ZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlLmdldE1pbnV0ZXMoKTtcbiAgICB9LFxuICAgIHNlY29uZHM6IGZ1bmN0aW9uIHNlY29uZHMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlLmdldFNlY29uZHMoKTtcbiAgICB9LFxuICAgIGhvdXJzTGlzdDogZnVuY3Rpb24gaG91cnNMaXN0KCkge1xuICAgICAgcmV0dXJuIE9iamVjdChkYXRlX3V0aWxfW1wiZ2V0UmFuZ2VIb3Vyc1wiXSkodGhpcy5zZWxlY3RhYmxlUmFuZ2UpO1xuICAgIH0sXG4gICAgbWludXRlc0xpc3Q6IGZ1bmN0aW9uIG1pbnV0ZXNMaXN0KCkge1xuICAgICAgcmV0dXJuIE9iamVjdChkYXRlX3V0aWxfW1wiZ2V0UmFuZ2VNaW51dGVzXCJdKSh0aGlzLnNlbGVjdGFibGVSYW5nZSwgdGhpcy5ob3Vycyk7XG4gICAgfSxcbiAgICBhcnJvd0hvdXJMaXN0OiBmdW5jdGlvbiBhcnJvd0hvdXJMaXN0KCkge1xuICAgICAgdmFyIGhvdXJzID0gdGhpcy5ob3VycztcbiAgICAgIHJldHVybiBbaG91cnMgPiAwID8gaG91cnMgLSAxIDogdW5kZWZpbmVkLCBob3VycywgaG91cnMgPCAyMyA/IGhvdXJzICsgMSA6IHVuZGVmaW5lZF07XG4gICAgfSxcbiAgICBhcnJvd01pbnV0ZUxpc3Q6IGZ1bmN0aW9uIGFycm93TWludXRlTGlzdCgpIHtcbiAgICAgIHZhciBtaW51dGVzID0gdGhpcy5taW51dGVzO1xuICAgICAgcmV0dXJuIFttaW51dGVzID4gMCA/IG1pbnV0ZXMgLSAxIDogdW5kZWZpbmVkLCBtaW51dGVzLCBtaW51dGVzIDwgNTkgPyBtaW51dGVzICsgMSA6IHVuZGVmaW5lZF07XG4gICAgfSxcbiAgICBhcnJvd1NlY29uZExpc3Q6IGZ1bmN0aW9uIGFycm93U2Vjb25kTGlzdCgpIHtcbiAgICAgIHZhciBzZWNvbmRzID0gdGhpcy5zZWNvbmRzO1xuICAgICAgcmV0dXJuIFtzZWNvbmRzID4gMCA/IHNlY29uZHMgLSAxIDogdW5kZWZpbmVkLCBzZWNvbmRzLCBzZWNvbmRzIDwgNTkgPyBzZWNvbmRzICsgMSA6IHVuZGVmaW5lZF07XG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGFibGVSYW5nZTogW10sXG4gICAgICBjdXJyZW50U2Nyb2xsYmFyOiBudWxsXG4gICAgfTtcbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgIV90aGlzLmFycm93Q29udHJvbCAmJiBfdGhpcy5iaW5kU2Nyb2xsRXZlbnQoKTtcbiAgICB9KTtcbiAgfSxcblxuXG4gIG1ldGhvZHM6IHtcbiAgICBpbmNyZWFzZTogZnVuY3Rpb24gaW5jcmVhc2UoKSB7XG4gICAgICB0aGlzLnNjcm9sbERvd24oMSk7XG4gICAgfSxcbiAgICBkZWNyZWFzZTogZnVuY3Rpb24gZGVjcmVhc2UoKSB7XG4gICAgICB0aGlzLnNjcm9sbERvd24oLTEpO1xuICAgIH0sXG4gICAgbW9kaWZ5RGF0ZUZpZWxkOiBmdW5jdGlvbiBtb2RpZnlEYXRlRmllbGQodHlwZSwgdmFsdWUpIHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdob3Vycyc6XG4gICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlUaW1lXCJdKSh0aGlzLmRhdGUsIHZhbHVlLCB0aGlzLm1pbnV0ZXMsIHRoaXMuc2Vjb25kcykpO2JyZWFrO1xuICAgICAgICBjYXNlICdtaW51dGVzJzpcbiAgICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBPYmplY3QoZGF0ZV91dGlsX1tcIm1vZGlmeVRpbWVcIl0pKHRoaXMuZGF0ZSwgdGhpcy5ob3VycywgdmFsdWUsIHRoaXMuc2Vjb25kcykpO2JyZWFrO1xuICAgICAgICBjYXNlICdzZWNvbmRzJzpcbiAgICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBPYmplY3QoZGF0ZV91dGlsX1tcIm1vZGlmeVRpbWVcIl0pKHRoaXMuZGF0ZSwgdGhpcy5ob3VycywgdGhpcy5taW51dGVzLCB2YWx1ZSkpO2JyZWFrO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKHR5cGUsIF9yZWYpIHtcbiAgICAgIHZhciB2YWx1ZSA9IF9yZWYudmFsdWUsXG4gICAgICAgICAgZGlzYWJsZWQgPSBfcmVmLmRpc2FibGVkO1xuXG4gICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMubW9kaWZ5RGF0ZUZpZWxkKHR5cGUsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5lbWl0U2VsZWN0UmFuZ2UodHlwZSk7XG4gICAgICAgIHRoaXMuYWRqdXN0U3Bpbm5lcih0eXBlLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBlbWl0U2VsZWN0UmFuZ2U6IGZ1bmN0aW9uIGVtaXRTZWxlY3RSYW5nZSh0eXBlKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2hvdXJzJykge1xuICAgICAgICB0aGlzLiRlbWl0KCdzZWxlY3QtcmFuZ2UnLCAwLCAyKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ21pbnV0ZXMnKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdC1yYW5nZScsIDMsIDUpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnc2Vjb25kcycpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnc2VsZWN0LXJhbmdlJywgNiwgOCk7XG4gICAgICB9XG4gICAgICB0aGlzLmN1cnJlbnRTY3JvbGxiYXIgPSB0eXBlO1xuICAgIH0sXG4gICAgYmluZFNjcm9sbEV2ZW50OiBmdW5jdGlvbiBiaW5kU2Nyb2xsRXZlbnQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGJpbmRGdW5jdGlvbiA9IGZ1bmN0aW9uIGJpbmRGdW5jdGlvbih0eXBlKSB7XG4gICAgICAgIF90aGlzMi4kcmVmc1t0eXBlXS53cmFwLm9uc2Nyb2xsID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAvLyBUT0RPOiBzY3JvbGwgaXMgZW1pdHRlZCB3aGVuIHNldCBzY3JvbGxUb3AgcHJvZ3JhbWF0aWNhbGx5XG4gICAgICAgICAgLy8gc2hvdWxkIGZpbmQgYmV0dGVyIHNvbHV0aW9ucyBpbiB0aGUgZnV0dXJlIVxuICAgICAgICAgIF90aGlzMi5oYW5kbGVTY3JvbGwodHlwZSwgZSk7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgYmluZEZ1bmN0aW9uKCdob3VycycpO1xuICAgICAgYmluZEZ1bmN0aW9uKCdtaW51dGVzJyk7XG4gICAgICBiaW5kRnVuY3Rpb24oJ3NlY29uZHMnKTtcbiAgICB9LFxuICAgIGhhbmRsZVNjcm9sbDogZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKHR5cGUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IE1hdGgubWluKE1hdGgucm91bmQoKHRoaXMuJHJlZnNbdHlwZV0ud3JhcC5zY3JvbGxUb3AgLSAodGhpcy5zY3JvbGxCYXJIZWlnaHQodHlwZSkgKiAwLjUgLSAxMCkgLyB0aGlzLnR5cGVJdGVtSGVpZ2h0KHR5cGUpICsgMykgLyB0aGlzLnR5cGVJdGVtSGVpZ2h0KHR5cGUpKSwgdHlwZSA9PT0gJ2hvdXJzJyA/IDIzIDogNTkpO1xuICAgICAgdGhpcy5tb2RpZnlEYXRlRmllbGQodHlwZSwgdmFsdWUpO1xuICAgIH0sXG5cblxuICAgIC8vIE5PVEU6IHVzZWQgYnkgZGF0ZXRpbWUgLyBkYXRlLXJhbmdlIHBhbmVsXG4gICAgLy8gICAgICAgcmVuYW1lZCBmcm9tIGFkanVzdFNjcm9sbFRvcFxuICAgIC8vICAgICAgIHNob3VsZCB0cnkgdG8gcmVmYWN0b3J5IGl0XG4gICAgYWRqdXN0U3Bpbm5lcnM6IGZ1bmN0aW9uIGFkanVzdFNwaW5uZXJzKCkge1xuICAgICAgdGhpcy5hZGp1c3RTcGlubmVyKCdob3VycycsIHRoaXMuaG91cnMpO1xuICAgICAgdGhpcy5hZGp1c3RTcGlubmVyKCdtaW51dGVzJywgdGhpcy5taW51dGVzKTtcbiAgICAgIHRoaXMuYWRqdXN0U3Bpbm5lcignc2Vjb25kcycsIHRoaXMuc2Vjb25kcyk7XG4gICAgfSxcbiAgICBhZGp1c3RDdXJyZW50U3Bpbm5lcjogZnVuY3Rpb24gYWRqdXN0Q3VycmVudFNwaW5uZXIodHlwZSkge1xuICAgICAgdGhpcy5hZGp1c3RTcGlubmVyKHR5cGUsIHRoaXNbdHlwZV0pO1xuICAgIH0sXG4gICAgYWRqdXN0U3Bpbm5lcjogZnVuY3Rpb24gYWRqdXN0U3Bpbm5lcih0eXBlLCB2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuYXJyb3dDb250cm9sKSByZXR1cm47XG4gICAgICB2YXIgZWwgPSB0aGlzLiRyZWZzW3R5cGVdLndyYXA7XG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gTWF0aC5tYXgoMCwgdmFsdWUgKiB0aGlzLnR5cGVJdGVtSGVpZ2h0KHR5cGUpKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNjcm9sbERvd246IGZ1bmN0aW9uIHNjcm9sbERvd24oc3RlcCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5jdXJyZW50U2Nyb2xsYmFyKSB7XG4gICAgICAgIHRoaXMuZW1pdFNlbGVjdFJhbmdlKCdob3VycycpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGFiZWwgPSB0aGlzLmN1cnJlbnRTY3JvbGxiYXI7XG4gICAgICB2YXIgaG91cnNMaXN0ID0gdGhpcy5ob3Vyc0xpc3Q7XG4gICAgICB2YXIgbm93ID0gdGhpc1tsYWJlbF07XG5cbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTY3JvbGxiYXIgPT09ICdob3VycycpIHtcbiAgICAgICAgdmFyIHRvdGFsID0gTWF0aC5hYnMoc3RlcCk7XG4gICAgICAgIHN0ZXAgPSBzdGVwID4gMCA/IDEgOiAtMTtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGhvdXJzTGlzdC5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSAmJiB0b3RhbCkge1xuICAgICAgICAgIG5vdyA9IChub3cgKyBzdGVwICsgaG91cnNMaXN0Lmxlbmd0aCkgJSBob3Vyc0xpc3QubGVuZ3RoO1xuICAgICAgICAgIGlmIChob3Vyc0xpc3Rbbm93XSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRvdGFsLS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhvdXJzTGlzdFtub3ddKSByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub3cgPSAobm93ICsgc3RlcCArIDYwKSAlIDYwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1vZGlmeURhdGVGaWVsZChsYWJlbCwgbm93KTtcbiAgICAgIHRoaXMuYWRqdXN0U3Bpbm5lcihsYWJlbCwgbm93KTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMy5lbWl0U2VsZWN0UmFuZ2UoX3RoaXMzLmN1cnJlbnRTY3JvbGxiYXIpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBhbVBtOiBmdW5jdGlvbiBhbVBtKGhvdXIpIHtcbiAgICAgIHZhciBzaG91bGRTaG93QW1QbSA9IHRoaXMuYW1QbU1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2EnO1xuICAgICAgaWYgKCFzaG91bGRTaG93QW1QbSkgcmV0dXJuICcnO1xuICAgICAgdmFyIGlzQ2FwaXRhbCA9IHRoaXMuYW1QbU1vZGUgPT09ICdBJztcbiAgICAgIHZhciBjb250ZW50ID0gaG91ciA8IDEyID8gJyBhbScgOiAnIHBtJztcbiAgICAgIGlmIChpc0NhcGl0YWwpIGNvbnRlbnQgPSBjb250ZW50LnRvVXBwZXJDYXNlKCk7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9LFxuICAgIHR5cGVJdGVtSGVpZ2h0OiBmdW5jdGlvbiB0eXBlSXRlbUhlaWdodCh0eXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcmVmc1t0eXBlXS4kZWwucXVlcnlTZWxlY3RvcignbGknKS5vZmZzZXRIZWlnaHQ7XG4gICAgfSxcbiAgICBzY3JvbGxCYXJIZWlnaHQ6IGZ1bmN0aW9uIHNjcm9sbEJhckhlaWdodCh0eXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcmVmc1t0eXBlXS4kZWwub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9iYXNpYy90aW1lLXNwaW5uZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJhc2ljX3RpbWVfc3Bpbm5lcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh0aW1lX3NwaW5uZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL2Jhc2ljL3RpbWUtc3Bpbm5lci52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB0aW1lX3NwaW5uZXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBiYXNpY190aW1lX3NwaW5uZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHRpbWVfc3Bpbm5lcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzFmYWNhZGViX3JlbmRlcixcbiAgdGltZV9zcGlubmVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMWZhY2FkZWJfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciB0aW1lX3NwaW5uZXJfYXBpOyB9XG50aW1lX3NwaW5uZXJfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvYmFzaWMvdGltZS1zcGlubmVyLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0aW1lX3NwaW5uZXIgPSAodGltZV9zcGlubmVyX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9wYW5lbC90aW1lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRpbWV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBtaXhpbnM6IFtsb2NhbGVfZGVmYXVsdC5hXSxcblxuICBjb21wb25lbnRzOiB7XG4gICAgVGltZVNwaW5uZXI6IHRpbWVfc3Bpbm5lclxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgdmlzaWJsZTogQm9vbGVhbixcbiAgICB0aW1lQXJyb3dDb250cm9sOiBCb29sZWFuXG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICB2aXNpYmxlOiBmdW5jdGlvbiB2aXNpYmxlKHZhbCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHZhbCkge1xuICAgICAgICB0aGlzLm9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy4kcmVmcy5zcGlubmVyLmVtaXRTZWxlY3RSYW5nZSgnaG91cnMnKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5lZWRJbml0QWRqdXN0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShuZXdWYWwpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgZGF0ZSA9IHZvaWQgMDtcbiAgICAgIGlmIChuZXdWYWwgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIGRhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcImxpbWl0VGltZVJhbmdlXCJdKShuZXdWYWwsIHRoaXMuc2VsZWN0YWJsZVJhbmdlLCB0aGlzLmZvcm1hdCk7XG4gICAgICB9IGVsc2UgaWYgKCFuZXdWYWwpIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZGVmYXVsdFZhbHVlID8gbmV3IERhdGUodGhpcy5kZWZhdWx0VmFsdWUpIDogbmV3IERhdGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRlID0gZGF0ZTtcbiAgICAgIGlmICh0aGlzLnZpc2libGUgJiYgdGhpcy5uZWVkSW5pdEFkanVzdCkge1xuICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykge1xuICAgICAgICAgIHJldHVybiBfdGhpczIuYWRqdXN0U3Bpbm5lcnMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubmVlZEluaXRBZGp1c3QgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNlbGVjdGFibGVSYW5nZTogZnVuY3Rpb24gc2VsZWN0YWJsZVJhbmdlKHZhbCkge1xuICAgICAgdGhpcy4kcmVmcy5zcGlubmVyLnNlbGVjdGFibGVSYW5nZSA9IHZhbDtcbiAgICB9LFxuICAgIGRlZmF1bHRWYWx1ZTogZnVuY3Rpb24gZGVmYXVsdFZhbHVlKHZhbCkge1xuICAgICAgaWYgKCFPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5kYXRlID0gdmFsID8gbmV3IERhdGUodmFsKSA6IG5ldyBEYXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvcHBlckNsYXNzOiAnJyxcbiAgICAgIGZvcm1hdDogJ0hIOm1tOnNzJyxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICBvbGRWYWx1ZTogbmV3IERhdGUoKSxcbiAgICAgIHNlbGVjdGFibGVSYW5nZTogW10sXG4gICAgICBzZWxlY3Rpb25SYW5nZTogWzAsIDJdLFxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgYXJyb3dDb250cm9sOiBmYWxzZSxcbiAgICAgIG5lZWRJbml0QWRqdXN0OiB0cnVlXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB7XG4gICAgc2hvd1NlY29uZHM6IGZ1bmN0aW9uIHNob3dTZWNvbmRzKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmZvcm1hdCB8fCAnJykuaW5kZXhPZignc3MnKSAhPT0gLTE7XG4gICAgfSxcbiAgICB1c2VBcnJvdzogZnVuY3Rpb24gdXNlQXJyb3coKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NvbnRyb2wgfHwgdGhpcy50aW1lQXJyb3dDb250cm9sIHx8IGZhbHNlO1xuICAgIH0sXG4gICAgYW1QbU1vZGU6IGZ1bmN0aW9uIGFtUG1Nb2RlKCkge1xuICAgICAgaWYgKCh0aGlzLmZvcm1hdCB8fCAnJykuaW5kZXhPZignQScpICE9PSAtMSkgcmV0dXJuICdBJztcbiAgICAgIGlmICgodGhpcy5mb3JtYXQgfHwgJycpLmluZGV4T2YoJ2EnKSAhPT0gLTEpIHJldHVybiAnYSc7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVDYW5jZWw6IGZ1bmN0aW9uIGhhbmRsZUNhbmNlbCgpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ3BpY2snLCB0aGlzLm9sZFZhbHVlLCBmYWxzZSk7XG4gICAgfSxcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShkYXRlKSB7XG4gICAgICAvLyB0aGlzLnZpc2libGUgYXZvaWRzIGVkZ2UgY2FzZXMsIHdoZW4gdXNlIHNjcm9sbHMgZHVyaW5nIHBhbmVsIGNsb3NpbmcgYW5pbWF0aW9uXG4gICAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wiY2xlYXJNaWxsaXNlY29uZHNcIl0pKGRhdGUpO1xuICAgICAgICAvLyBpZiBkYXRlIGlzIG91dCBvZiByYW5nZSwgZG8gbm90IGVtaXRcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZFZhbHVlKHRoaXMuZGF0ZSkpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdwaWNrJywgdGhpcy5kYXRlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgc2V0U2VsZWN0aW9uUmFuZ2U6IGZ1bmN0aW9uIHNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdC1yYW5nZScsIHN0YXJ0LCBlbmQpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25SYW5nZSA9IFtzdGFydCwgZW5kXTtcbiAgICB9LFxuICAgIGhhbmRsZUNvbmZpcm06IGZ1bmN0aW9uIGhhbmRsZUNvbmZpcm0oKSB7XG4gICAgICB2YXIgdmlzaWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZmFsc2U7XG4gICAgICB2YXIgZmlyc3QgPSBhcmd1bWVudHNbMV07XG5cbiAgICAgIGlmIChmaXJzdCkgcmV0dXJuO1xuICAgICAgdmFyIGRhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcImNsZWFyTWlsbGlzZWNvbmRzXCJdKShPYmplY3QoZGF0ZV91dGlsX1tcImxpbWl0VGltZVJhbmdlXCJdKSh0aGlzLmRhdGUsIHRoaXMuc2VsZWN0YWJsZVJhbmdlLCB0aGlzLmZvcm1hdCkpO1xuICAgICAgdGhpcy4kZW1pdCgncGljaycsIGRhdGUsIHZpc2libGUsIGZpcnN0KTtcbiAgICB9LFxuICAgIGhhbmRsZUtleWRvd246IGZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZXZlbnQpIHtcbiAgICAgIHZhciBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICAgIHZhciBtYXBwaW5nID0geyAzODogLTEsIDQwOiAxLCAzNzogLTEsIDM5OiAxIH07XG5cbiAgICAgIC8vIExlZnQgb3IgUmlnaHRcbiAgICAgIGlmIChrZXlDb2RlID09PSAzNyB8fCBrZXlDb2RlID09PSAzOSkge1xuICAgICAgICB2YXIgc3RlcCA9IG1hcHBpbmdba2V5Q29kZV07XG4gICAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uUmFuZ2Uoc3RlcCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVXAgb3IgRG93blxuICAgICAgaWYgKGtleUNvZGUgPT09IDM4IHx8IGtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgIHZhciBfc3RlcCA9IG1hcHBpbmdba2V5Q29kZV07XG4gICAgICAgIHRoaXMuJHJlZnMuc3Bpbm5lci5zY3JvbGxEb3duKF9zdGVwKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNWYWxpZFZhbHVlOiBmdW5jdGlvbiBpc1ZhbGlkVmFsdWUoZGF0ZSkge1xuICAgICAgcmV0dXJuIE9iamVjdChkYXRlX3V0aWxfW1widGltZVdpdGhpblJhbmdlXCJdKShkYXRlLCB0aGlzLnNlbGVjdGFibGVSYW5nZSwgdGhpcy5mb3JtYXQpO1xuICAgIH0sXG4gICAgYWRqdXN0U3Bpbm5lcnM6IGZ1bmN0aW9uIGFkanVzdFNwaW5uZXJzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHJlZnMuc3Bpbm5lci5hZGp1c3RTcGlubmVycygpO1xuICAgIH0sXG4gICAgY2hhbmdlU2VsZWN0aW9uUmFuZ2U6IGZ1bmN0aW9uIGNoYW5nZVNlbGVjdGlvblJhbmdlKHN0ZXApIHtcbiAgICAgIHZhciBsaXN0ID0gWzAsIDNdLmNvbmNhdCh0aGlzLnNob3dTZWNvbmRzID8gWzZdIDogW10pO1xuICAgICAgdmFyIG1hcHBpbmcgPSBbJ2hvdXJzJywgJ21pbnV0ZXMnXS5jb25jYXQodGhpcy5zaG93U2Vjb25kcyA/IFsnc2Vjb25kcyddIDogW10pO1xuICAgICAgdmFyIGluZGV4ID0gbGlzdC5pbmRleE9mKHRoaXMuc2VsZWN0aW9uUmFuZ2VbMF0pO1xuICAgICAgdmFyIG5leHQgPSAoaW5kZXggKyBzdGVwICsgbGlzdC5sZW5ndGgpICUgbGlzdC5sZW5ndGg7XG4gICAgICB0aGlzLiRyZWZzLnNwaW5uZXIuZW1pdFNlbGVjdFJhbmdlKG1hcHBpbmdbbmV4dF0pO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzMy5oYW5kbGVDb25maXJtKHRydWUsIHRydWUpO1xuICAgIH0pO1xuICAgIHRoaXMuJGVtaXQoJ21vdW50ZWQnKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9wYW5lbC90aW1lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYW5lbF90aW1ldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHRpbWV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdGltZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhbmVsX3RpbWV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHRpbWV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zZDkzOTA4OV9yZW5kZXIsXG4gIHRpbWV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zZDkzOTA4OV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHRpbWVfYXBpOyB9XG50aW1lX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhbmVsX3RpbWUgPSAodGltZV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9iYXNpYy95ZWFyLXRhYmxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jODZhYjVlMCZcbnZhciB5ZWFyX3RhYmxldnVlX3R5cGVfdGVtcGxhdGVfaWRfYzg2YWI1ZTBfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwidGFibGVcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcImVsLXllYXItdGFibGVcIiwgb246IHsgY2xpY2s6IF92bS5oYW5kbGVZZWFyVGFibGVDbGljayB9IH0sXG4gICAgW1xuICAgICAgX2MoXCJ0Ym9keVwiLCBbXG4gICAgICAgIF9jKFwidHJcIiwgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJhdmFpbGFibGVcIixcbiAgICAgICAgICAgICAgY2xhc3M6IF92bS5nZXRDZWxsU3R5bGUoX3ZtLnN0YXJ0WWVhciArIDApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW19jKFwiYVwiLCB7IHN0YXRpY0NsYXNzOiBcImNlbGxcIiB9LCBbX3ZtLl92KF92bS5fcyhfdm0uc3RhcnRZZWFyKSldKV1cbiAgICAgICAgICApLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJhdmFpbGFibGVcIixcbiAgICAgICAgICAgICAgY2xhc3M6IF92bS5nZXRDZWxsU3R5bGUoX3ZtLnN0YXJ0WWVhciArIDEpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImFcIiwgeyBzdGF0aWNDbGFzczogXCJjZWxsXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnN0YXJ0WWVhciArIDEpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcInRkXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImF2YWlsYWJsZVwiLFxuICAgICAgICAgICAgICBjbGFzczogX3ZtLmdldENlbGxTdHlsZShfdm0uc3RhcnRZZWFyICsgMilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwiYVwiLCB7IHN0YXRpY0NsYXNzOiBcImNlbGxcIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uc3RhcnRZZWFyICsgMikpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidGRcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhaWxhYmxlXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiBfdm0uZ2V0Q2VsbFN0eWxlKF92bS5zdGFydFllYXIgKyAzKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJhXCIsIHsgc3RhdGljQ2xhc3M6IFwiY2VsbFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5zdGFydFllYXIgKyAzKSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIF0pLFxuICAgICAgICBfYyhcInRyXCIsIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidGRcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhaWxhYmxlXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiBfdm0uZ2V0Q2VsbFN0eWxlKF92bS5zdGFydFllYXIgKyA0KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJhXCIsIHsgc3RhdGljQ2xhc3M6IFwiY2VsbFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5zdGFydFllYXIgKyA0KSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJhdmFpbGFibGVcIixcbiAgICAgICAgICAgICAgY2xhc3M6IF92bS5nZXRDZWxsU3R5bGUoX3ZtLnN0YXJ0WWVhciArIDUpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImFcIiwgeyBzdGF0aWNDbGFzczogXCJjZWxsXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnN0YXJ0WWVhciArIDUpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcInRkXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImF2YWlsYWJsZVwiLFxuICAgICAgICAgICAgICBjbGFzczogX3ZtLmdldENlbGxTdHlsZShfdm0uc3RhcnRZZWFyICsgNilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwiYVwiLCB7IHN0YXRpY0NsYXNzOiBcImNlbGxcIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uc3RhcnRZZWFyICsgNikpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidGRcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhaWxhYmxlXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiBfdm0uZ2V0Q2VsbFN0eWxlKF92bS5zdGFydFllYXIgKyA3KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJhXCIsIHsgc3RhdGljQ2xhc3M6IFwiY2VsbFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5zdGFydFllYXIgKyA3KSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIF0pLFxuICAgICAgICBfYyhcInRyXCIsIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidGRcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhaWxhYmxlXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiBfdm0uZ2V0Q2VsbFN0eWxlKF92bS5zdGFydFllYXIgKyA4KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJhXCIsIHsgc3RhdGljQ2xhc3M6IFwiY2VsbFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5zdGFydFllYXIgKyA4KSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJhdmFpbGFibGVcIixcbiAgICAgICAgICAgICAgY2xhc3M6IF92bS5nZXRDZWxsU3R5bGUoX3ZtLnN0YXJ0WWVhciArIDkpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImFcIiwgeyBzdGF0aWNDbGFzczogXCJjZWxsXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnN0YXJ0WWVhciArIDkpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICAgICAgX2MoXCJ0ZFwiKSxcbiAgICAgICAgICBfYyhcInRkXCIpXG4gICAgICAgIF0pXG4gICAgICBdKVxuICAgIF1cbiAgKVxufVxudmFyIHllYXJfdGFibGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF9jODZhYjVlMF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxueWVhcl90YWJsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2M4NmFiNWUwX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL2Jhc2ljL3llYXItdGFibGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM4NmFiNWUwJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvYmFzaWMveWVhci10YWJsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxudmFyIHllYXJfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19kYXRlc0luWWVhciA9IGZ1bmN0aW9uIGRhdGVzSW5ZZWFyKHllYXIpIHtcbiAgdmFyIG51bU9mRGF5cyA9IE9iamVjdChkYXRlX3V0aWxfW1wiZ2V0RGF5Q291bnRPZlllYXJcIl0pKHllYXIpO1xuICB2YXIgZmlyc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgcmV0dXJuIE9iamVjdChkYXRlX3V0aWxfW1wicmFuZ2VcIl0pKG51bU9mRGF5cykubWFwKGZ1bmN0aW9uIChuKSB7XG4gICAgcmV0dXJuIE9iamVjdChkYXRlX3V0aWxfW1wibmV4dERhdGVcIl0pKGZpcnN0RGF5LCBuKTtcbiAgfSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB5ZWFyX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgcHJvcHM6IHtcbiAgICBkaXNhYmxlZERhdGU6IHt9LFxuICAgIHZhbHVlOiB7fSxcbiAgICBkZWZhdWx0VmFsdWU6IHtcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICAvLyBudWxsIG9yIHZhbGlkIERhdGUgT2JqZWN0XG4gICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsIGluc3RhbmNlb2YgRGF0ZSAmJiBPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSkodmFsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRhdGU6IHt9LFxuICAgIHNlbGVjdGlvbk1vZGU6IHt9XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBzdGFydFllYXI6IGZ1bmN0aW9uIHN0YXJ0WWVhcigpIHtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpIC8gMTApICogMTA7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRDZWxsU3R5bGU6IGZ1bmN0aW9uIGdldENlbGxTdHlsZSh5ZWFyKSB7XG4gICAgICB2YXIgc3R5bGUgPSB7fTtcbiAgICAgIHZhciB0b2RheSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgIHN0eWxlLmRpc2FibGVkID0gdHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlID09PSAnZnVuY3Rpb24nID8geWVhcl90YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2RhdGVzSW5ZZWFyKHllYXIpLmV2ZXJ5KHRoaXMuZGlzYWJsZWREYXRlKSA6IGZhbHNlO1xuICAgICAgc3R5bGUuY3VycmVudCA9IE9iamVjdCh1dGlsX1tcImFycmF5RmluZEluZGV4XCJdKShPYmplY3QodXRpbF9bXCJjb2VyY2VUcnV0aHlWYWx1ZVRvQXJyYXlcIl0pKHRoaXMudmFsdWUpLCBmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyO1xuICAgICAgfSkgPj0gMDtcbiAgICAgIHN0eWxlLnRvZGF5ID0gdG9kYXkuZ2V0RnVsbFllYXIoKSA9PT0geWVhcjtcbiAgICAgIHN0eWxlLmRlZmF1bHQgPSB0aGlzLmRlZmF1bHRWYWx1ZSAmJiB0aGlzLmRlZmF1bHRWYWx1ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyO1xuXG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfSxcbiAgICBoYW5kbGVZZWFyVGFibGVDbGljazogZnVuY3Rpb24gaGFuZGxlWWVhclRhYmxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdBJykge1xuICAgICAgICBpZiAoT2JqZWN0KGRvbV9bXCJoYXNDbGFzc1wiXSkodGFyZ2V0LnBhcmVudE5vZGUsICdkaXNhYmxlZCcpKSByZXR1cm47XG4gICAgICAgIHZhciB5ZWFyID0gdGFyZ2V0LnRleHRDb250ZW50IHx8IHRhcmdldC5pbm5lclRleHQ7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICd5ZWFycycpIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlIHx8IFtdO1xuICAgICAgICAgIHZhciBpZHggPSBPYmplY3QodXRpbF9bXCJhcnJheUZpbmRJbmRleFwiXSkodmFsdWUsIGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID09PSBOdW1iZXIoeWVhcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdmFyIG5ld1ZhbHVlID0gaWR4ID4gLTEgPyBbXS5jb25jYXQodmFsdWUuc2xpY2UoMCwgaWR4KSwgdmFsdWUuc2xpY2UoaWR4ICsgMSkpIDogW10uY29uY2F0KHZhbHVlLCBbbmV3IERhdGUoeWVhcildKTtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdwaWNrJywgbmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ3BpY2snLCBOdW1iZXIoeWVhcikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL2Jhc2ljL3llYXItdGFibGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJhc2ljX3llYXJfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoeWVhcl90YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvYmFzaWMveWVhci10YWJsZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB5ZWFyX3RhYmxlX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgYmFzaWNfeWVhcl90YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgeWVhcl90YWJsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2M4NmFiNWUwX3JlbmRlcixcbiAgeWVhcl90YWJsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2M4NmFiNWUwX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgeWVhcl90YWJsZV9hcGk7IH1cbnllYXJfdGFibGVfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvYmFzaWMveWVhci10YWJsZS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgeWVhcl90YWJsZSA9ICh5ZWFyX3RhYmxlX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL2Jhc2ljL21vbnRoLXRhYmxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NTRkNGY0MiZcbnZhciBtb250aF90YWJsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzY1NGQ0ZjQyX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInRhYmxlXCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtbW9udGgtdGFibGVcIixcbiAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGFuZGxlTW9udGhUYWJsZUNsaWNrLCBtb3VzZW1vdmU6IF92bS5oYW5kbGVNb3VzZU1vdmUgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwidGJvZHlcIixcbiAgICAgICAgX3ZtLl9sKF92bS5yb3dzLCBmdW5jdGlvbihyb3csIGtleSkge1xuICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgIFwidHJcIixcbiAgICAgICAgICAgIHsga2V5OiBrZXkgfSxcbiAgICAgICAgICAgIF92bS5fbChyb3csIGZ1bmN0aW9uKGNlbGwsIGtleSkge1xuICAgICAgICAgICAgICByZXR1cm4gX2MoXCJ0ZFwiLCB7IGtleToga2V5LCBjbGFzczogX3ZtLmdldENlbGxTdHlsZShjZWxsKSB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJhXCIsIHsgc3RhdGljQ2xhc3M6IFwiY2VsbFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS50KFwiZWwuZGF0ZXBpY2tlci5tb250aHMuXCIgKyBfdm0ubW9udGhzW2NlbGwudGV4dF0pXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIDBcbiAgICAgICAgICApXG4gICAgICAgIH0pLFxuICAgICAgICAwXG4gICAgICApXG4gICAgXVxuICApXG59XG52YXIgbW9udGhfdGFibGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF82NTRkNGY0Ml9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubW9udGhfdGFibGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF82NTRkNGY0Ml9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9iYXNpYy9tb250aC10YWJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjU0ZDRmNDImXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9iYXNpYy9tb250aC10YWJsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cbnZhciBtb250aF90YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2RhdGVzSW5Nb250aCA9IGZ1bmN0aW9uIGRhdGVzSW5Nb250aCh5ZWFyLCBtb250aCkge1xuICB2YXIgbnVtT2ZEYXlzID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJnZXREYXlDb3VudE9mTW9udGhcIl0pKHllYXIsIG1vbnRoKTtcbiAgdmFyIGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJyYW5nZVwiXSkobnVtT2ZEYXlzKS5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0RGF0ZVwiXSkoZmlyc3REYXksIG4pO1xuICB9KTtcbn07XG5cbnZhciBjbGVhckRhdGUgPSBmdW5jdGlvbiBjbGVhckRhdGUoZGF0ZSkge1xuICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkpO1xufTtcblxudmFyIGdldE1vbnRoVGltZXN0YW1wID0gZnVuY3Rpb24gZ2V0TW9udGhUaW1lc3RhbXAodGltZSkge1xuICBpZiAodHlwZW9mIHRpbWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB0aW1lID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBjbGVhckRhdGUobmV3IERhdGUodGltZSkpLmdldFRpbWUoKTtcbiAgfSBlbHNlIGlmICh0aW1lIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBjbGVhckRhdGUodGltZSkuZ2V0VGltZSgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBOYU47XG4gIH1cbn07XG5cbi8vIHJlbW92ZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IHNhdGlzZmllcyBgcHJlZGAgZnJvbSBhcnJcbi8vIHJldHVybiBhIG5ldyBhcnJheSBpZiBtb2RpZmljYXRpb24gb2NjdXJzXG4vLyByZXR1cm4gdGhlIG9yaWdpbmFsIGFycmF5IG90aGVyd2lzZVxudmFyIG1vbnRoX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfcmVtb3ZlRnJvbUFycmF5ID0gZnVuY3Rpb24gcmVtb3ZlRnJvbUFycmF5KGFyciwgcHJlZCkge1xuICB2YXIgaWR4ID0gdHlwZW9mIHByZWQgPT09ICdmdW5jdGlvbicgPyBPYmplY3QodXRpbF9bXCJhcnJheUZpbmRJbmRleFwiXSkoYXJyLCBwcmVkKSA6IGFyci5pbmRleE9mKHByZWQpO1xuICByZXR1cm4gaWR4ID49IDAgPyBbXS5jb25jYXQoYXJyLnNsaWNlKDAsIGlkeCksIGFyci5zbGljZShpZHggKyAxKSkgOiBhcnI7XG59O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbW9udGhfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBwcm9wczoge1xuICAgIGRpc2FibGVkRGF0ZToge30sXG4gICAgdmFsdWU6IHt9LFxuICAgIHNlbGVjdGlvbk1vZGU6IHtcbiAgICAgIGRlZmF1bHQ6ICdtb250aCdcbiAgICB9LFxuICAgIG1pbkRhdGU6IHt9LFxuXG4gICAgbWF4RGF0ZToge30sXG4gICAgZGVmYXVsdFZhbHVlOiB7XG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWwpIHtcbiAgICAgICAgLy8gbnVsbCBvciB2YWxpZCBEYXRlIE9iamVjdFxuICAgICAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IE9iamVjdChkYXRlX3V0aWxfW1wiaXNEYXRlXCJdKSh2YWwpIHx8IEFycmF5LmlzQXJyYXkodmFsKSAmJiB2YWwuZXZlcnkoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkYXRlOiB7fSxcbiAgICByYW5nZVN0YXRlOiB7XG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbmREYXRlOiBudWxsLFxuICAgICAgICAgIHNlbGVjdGluZzogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbWl4aW5zOiBbbG9jYWxlX2RlZmF1bHQuYV0sXG5cbiAgd2F0Y2g6IHtcbiAgICAncmFuZ2VTdGF0ZS5lbmREYXRlJzogZnVuY3Rpb24gcmFuZ2VTdGF0ZUVuZERhdGUobmV3VmFsKSB7XG4gICAgICB0aGlzLm1hcmtSYW5nZSh0aGlzLm1pbkRhdGUsIG5ld1ZhbCk7XG4gICAgfSxcbiAgICBtaW5EYXRlOiBmdW5jdGlvbiBtaW5EYXRlKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICBpZiAoZ2V0TW9udGhUaW1lc3RhbXAobmV3VmFsKSAhPT0gZ2V0TW9udGhUaW1lc3RhbXAob2xkVmFsKSkge1xuICAgICAgICB0aGlzLm1hcmtSYW5nZSh0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBtYXhEYXRlOiBmdW5jdGlvbiBtYXhEYXRlKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICBpZiAoZ2V0TW9udGhUaW1lc3RhbXAobmV3VmFsKSAhPT0gZ2V0TW9udGhUaW1lc3RhbXAob2xkVmFsKSkge1xuICAgICAgICB0aGlzLm1hcmtSYW5nZSh0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vbnRoczogWydqYW4nLCAnZmViJywgJ21hcicsICdhcHInLCAnbWF5JywgJ2p1bicsICdqdWwnLCAnYXVnJywgJ3NlcCcsICdvY3QnLCAnbm92JywgJ2RlYyddLFxuICAgICAgdGFibGVSb3dzOiBbW10sIFtdLCBbXV0sXG4gICAgICBsYXN0Um93OiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgY2VsbE1hdGNoZXNEYXRlOiBmdW5jdGlvbiBjZWxsTWF0Y2hlc0RhdGUoY2VsbCwgZGF0ZSkge1xuICAgICAgdmFyIHZhbHVlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkgPT09IHZhbHVlLmdldEZ1bGxZZWFyKCkgJiYgTnVtYmVyKGNlbGwudGV4dCkgPT09IHZhbHVlLmdldE1vbnRoKCk7XG4gICAgfSxcbiAgICBnZXRDZWxsU3R5bGU6IGZ1bmN0aW9uIGdldENlbGxTdHlsZShjZWxsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgc3R5bGUgPSB7fTtcbiAgICAgIHZhciB5ZWFyID0gdGhpcy5kYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgdmFyIG1vbnRoID0gY2VsbC50ZXh0O1xuICAgICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlID8gQXJyYXkuaXNBcnJheSh0aGlzLmRlZmF1bHRWYWx1ZSkgPyB0aGlzLmRlZmF1bHRWYWx1ZSA6IFt0aGlzLmRlZmF1bHRWYWx1ZV0gOiBbXTtcbiAgICAgIHN0eWxlLmRpc2FibGVkID0gdHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlID09PSAnZnVuY3Rpb24nID8gbW9udGhfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19kYXRlc0luTW9udGgoeWVhciwgbW9udGgpLmV2ZXJ5KHRoaXMuZGlzYWJsZWREYXRlKSA6IGZhbHNlO1xuICAgICAgc3R5bGUuY3VycmVudCA9IE9iamVjdCh1dGlsX1tcImFycmF5RmluZEluZGV4XCJdKShPYmplY3QodXRpbF9bXCJjb2VyY2VUcnV0aHlWYWx1ZVRvQXJyYXlcIl0pKHRoaXMudmFsdWUpLCBmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGg7XG4gICAgICB9KSA+PSAwO1xuICAgICAgc3R5bGUudG9kYXkgPSB0b2RheS5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmIHRvZGF5LmdldE1vbnRoKCkgPT09IG1vbnRoO1xuICAgICAgc3R5bGUuZGVmYXVsdCA9IGRlZmF1bHRWYWx1ZS5zb21lKGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5jZWxsTWF0Y2hlc0RhdGUoY2VsbCwgZGF0ZSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNlbGwuaW5SYW5nZSkge1xuICAgICAgICBzdHlsZVsnaW4tcmFuZ2UnXSA9IHRydWU7XG5cbiAgICAgICAgaWYgKGNlbGwuc3RhcnQpIHtcbiAgICAgICAgICBzdHlsZVsnc3RhcnQtZGF0ZSddID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjZWxsLmVuZCkge1xuICAgICAgICAgIHN0eWxlWydlbmQtZGF0ZSddID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH0sXG4gICAgZ2V0TW9udGhPZkNlbGw6IGZ1bmN0aW9uIGdldE1vbnRoT2ZDZWxsKG1vbnRoKSB7XG4gICAgICB2YXIgeWVhciA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcbiAgICB9LFxuICAgIG1hcmtSYW5nZTogZnVuY3Rpb24gbWFya1JhbmdlKG1pbkRhdGUsIG1heERhdGUpIHtcbiAgICAgIG1pbkRhdGUgPSBnZXRNb250aFRpbWVzdGFtcChtaW5EYXRlKTtcbiAgICAgIG1heERhdGUgPSBnZXRNb250aFRpbWVzdGFtcChtYXhEYXRlKSB8fCBtaW5EYXRlO1xuICAgICAgdmFyIF9yZWYgPSBbTWF0aC5taW4obWluRGF0ZSwgbWF4RGF0ZSksIE1hdGgubWF4KG1pbkRhdGUsIG1heERhdGUpXTtcbiAgICAgIG1pbkRhdGUgPSBfcmVmWzBdO1xuICAgICAgbWF4RGF0ZSA9IF9yZWZbMV07XG5cbiAgICAgIHZhciByb3dzID0gdGhpcy5yb3dzO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGsgPSByb3dzLmxlbmd0aDsgaSA8IGs7IGkrKykge1xuICAgICAgICB2YXIgcm93ID0gcm93c1tpXTtcbiAgICAgICAgZm9yICh2YXIgaiA9IDAsIGwgPSByb3cubGVuZ3RoOyBqIDwgbDsgaisrKSB7XG5cbiAgICAgICAgICB2YXIgY2VsbCA9IHJvd1tqXTtcbiAgICAgICAgICB2YXIgaW5kZXggPSBpICogNCArIGo7XG4gICAgICAgICAgdmFyIHRpbWUgPSBuZXcgRGF0ZSh0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSwgaW5kZXgpLmdldFRpbWUoKTtcblxuICAgICAgICAgIGNlbGwuaW5SYW5nZSA9IG1pbkRhdGUgJiYgdGltZSA+PSBtaW5EYXRlICYmIHRpbWUgPD0gbWF4RGF0ZTtcbiAgICAgICAgICBjZWxsLnN0YXJ0ID0gbWluRGF0ZSAmJiB0aW1lID09PSBtaW5EYXRlO1xuICAgICAgICAgIGNlbGwuZW5kID0gbWF4RGF0ZSAmJiB0aW1lID09PSBtYXhEYXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVNb3VzZU1vdmU6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShldmVudCkge1xuICAgICAgaWYgKCF0aGlzLnJhbmdlU3RhdGUuc2VsZWN0aW5nKSByZXR1cm47XG5cbiAgICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdBJykge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgICAgfVxuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnRElWJykge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICAgIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gJ1REJykgcmV0dXJuO1xuXG4gICAgICB2YXIgcm93ID0gdGFyZ2V0LnBhcmVudE5vZGUucm93SW5kZXg7XG4gICAgICB2YXIgY29sdW1uID0gdGFyZ2V0LmNlbGxJbmRleDtcbiAgICAgIC8vIGNhbiBub3Qgc2VsZWN0IGRpc2FibGVkIGRhdGVcbiAgICAgIGlmICh0aGlzLnJvd3Nbcm93XVtjb2x1bW5dLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAgIC8vIG9ubHkgdXBkYXRlIHJhbmdlU3RhdGUgd2hlbiBtb3VzZSBtb3ZlcyB0byBhIG5ldyBjZWxsXG4gICAgICAvLyB0aGlzIGF2b2lkcyBmcmVxdWVudCBEYXRlIG9iamVjdCBjcmVhdGlvbiBhbmQgaW1wcm92ZXMgcGVyZm9ybWFuY2VcbiAgICAgIGlmIChyb3cgIT09IHRoaXMubGFzdFJvdyB8fCBjb2x1bW4gIT09IHRoaXMubGFzdENvbHVtbikge1xuICAgICAgICB0aGlzLmxhc3RSb3cgPSByb3c7XG4gICAgICAgIHRoaXMubGFzdENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlcmFuZ2UnLCB7XG4gICAgICAgICAgbWluRGF0ZTogdGhpcy5taW5EYXRlLFxuICAgICAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZSxcbiAgICAgICAgICByYW5nZVN0YXRlOiB7XG4gICAgICAgICAgICBzZWxlY3Rpbmc6IHRydWUsXG4gICAgICAgICAgICBlbmREYXRlOiB0aGlzLmdldE1vbnRoT2ZDZWxsKHJvdyAqIDQgKyBjb2x1bW4pXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZU1vbnRoVGFibGVDbGljazogZnVuY3Rpb24gaGFuZGxlTW9udGhUYWJsZUNsaWNrKGV2ZW50KSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnQScpIHtcbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0RJVicpIHtcbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgIT09ICdURCcpIHJldHVybjtcbiAgICAgIGlmIChPYmplY3QoZG9tX1tcImhhc0NsYXNzXCJdKSh0YXJnZXQsICdkaXNhYmxlZCcpKSByZXR1cm47XG4gICAgICB2YXIgY29sdW1uID0gdGFyZ2V0LmNlbGxJbmRleDtcbiAgICAgIHZhciByb3cgPSB0YXJnZXQucGFyZW50Tm9kZS5yb3dJbmRleDtcbiAgICAgIHZhciBtb250aCA9IHJvdyAqIDQgKyBjb2x1bW47XG4gICAgICB2YXIgbmV3RGF0ZSA9IHRoaXMuZ2V0TW9udGhPZkNlbGwobW9udGgpO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBpZiAoIXRoaXMucmFuZ2VTdGF0ZS5zZWxlY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdwaWNrJywgeyBtaW5EYXRlOiBuZXdEYXRlLCBtYXhEYXRlOiBudWxsIH0pO1xuICAgICAgICAgIHRoaXMucmFuZ2VTdGF0ZS5zZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChuZXdEYXRlID49IHRoaXMubWluRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy4kZW1pdCgncGljaycsIHsgbWluRGF0ZTogdGhpcy5taW5EYXRlLCBtYXhEYXRlOiBuZXdEYXRlIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdwaWNrJywgeyBtaW5EYXRlOiBuZXdEYXRlLCBtYXhEYXRlOiB0aGlzLm1pbkRhdGUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmFuZ2VTdGF0ZS5zZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtb250aHMnKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUgfHwgW107XG4gICAgICAgIHZhciB5ZWFyID0gdGhpcy5kYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IE9iamVjdCh1dGlsX1tcImFycmF5RmluZEluZGV4XCJdKSh2YWx1ZSwgZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGg7XG4gICAgICAgIH0pID49IDAgPyBtb250aF90YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX3JlbW92ZUZyb21BcnJheSh2YWx1ZSwgZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPT09IG5ld0RhdGUuZ2V0VGltZSgpO1xuICAgICAgICB9KSA6IFtdLmNvbmNhdCh2YWx1ZSwgW25ld0RhdGVdKTtcbiAgICAgICAgdGhpcy4kZW1pdCgncGljaycsIG5ld1ZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3BpY2snLCBtb250aCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgcm93czogZnVuY3Rpb24gcm93cygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAvLyBUT0RPOiByZWZhY3Rvcnkgcm93cyAvIGdldENlbGxDbGFzc2VzXG4gICAgICB2YXIgcm93cyA9IHRoaXMudGFibGVSb3dzO1xuICAgICAgdmFyIGRpc2FibGVkRGF0ZSA9IHRoaXMuZGlzYWJsZWREYXRlO1xuICAgICAgdmFyIHNlbGVjdGVkRGF0ZSA9IFtdO1xuICAgICAgdmFyIG5vdyA9IGdldE1vbnRoVGltZXN0YW1wKG5ldyBEYXRlKCkpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICB2YXIgcm93ID0gcm93c1tpXTtcblxuICAgICAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChqKSB7XG4gICAgICAgICAgdmFyIGNlbGwgPSByb3dbal07XG4gICAgICAgICAgaWYgKCFjZWxsKSB7XG4gICAgICAgICAgICBjZWxsID0geyByb3c6IGksIGNvbHVtbjogaiwgdHlwZTogJ25vcm1hbCcsIGluUmFuZ2U6IGZhbHNlLCBzdGFydDogZmFsc2UsIGVuZDogZmFsc2UgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjZWxsLnR5cGUgPSAnbm9ybWFsJztcblxuICAgICAgICAgIHZhciBpbmRleCA9IGkgKiA0ICsgajtcbiAgICAgICAgICB2YXIgdGltZSA9IG5ldyBEYXRlKF90aGlzMi5kYXRlLmdldEZ1bGxZZWFyKCksIGluZGV4KS5nZXRUaW1lKCk7XG4gICAgICAgICAgY2VsbC5pblJhbmdlID0gdGltZSA+PSBnZXRNb250aFRpbWVzdGFtcChfdGhpczIubWluRGF0ZSkgJiYgdGltZSA8PSBnZXRNb250aFRpbWVzdGFtcChfdGhpczIubWF4RGF0ZSk7XG4gICAgICAgICAgY2VsbC5zdGFydCA9IF90aGlzMi5taW5EYXRlICYmIHRpbWUgPT09IGdldE1vbnRoVGltZXN0YW1wKF90aGlzMi5taW5EYXRlKTtcbiAgICAgICAgICBjZWxsLmVuZCA9IF90aGlzMi5tYXhEYXRlICYmIHRpbWUgPT09IGdldE1vbnRoVGltZXN0YW1wKF90aGlzMi5tYXhEYXRlKTtcbiAgICAgICAgICB2YXIgaXNUb2RheSA9IHRpbWUgPT09IG5vdztcblxuICAgICAgICAgIGlmIChpc1RvZGF5KSB7XG4gICAgICAgICAgICBjZWxsLnR5cGUgPSAndG9kYXknO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjZWxsLnRleHQgPSBpbmRleDtcbiAgICAgICAgICB2YXIgY2VsbERhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcbiAgICAgICAgICBjZWxsLmRpc2FibGVkID0gdHlwZW9mIGRpc2FibGVkRGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkaXNhYmxlZERhdGUoY2VsbERhdGUpO1xuICAgICAgICAgIGNlbGwuc2VsZWN0ZWQgPSBPYmplY3QodXRpbF9bXCJhcnJheUZpbmRcIl0pKHNlbGVjdGVkRGF0ZSwgZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldFRpbWUoKSA9PT0gY2VsbERhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgX3RoaXMyLiRzZXQocm93LCBqLCBjZWxsKTtcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKykge1xuICAgICAgICAgIF9sb29wKGopO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcm93cztcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvYmFzaWMvbW9udGgtdGFibGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJhc2ljX21vbnRoX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKG1vbnRoX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9iYXNpYy9tb250aC10YWJsZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBtb250aF90YWJsZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIGJhc2ljX21vbnRoX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtb250aF90YWJsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzY1NGQ0ZjQyX3JlbmRlcixcbiAgbW9udGhfdGFibGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF82NTRkNGY0Ml9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIG1vbnRoX3RhYmxlX2FwaTsgfVxubW9udGhfdGFibGVfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvYmFzaWMvbW9udGgtdGFibGUudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1vbnRoX3RhYmxlID0gKG1vbnRoX3RhYmxlX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL2Jhc2ljL2RhdGUtdGFibGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkMWYzMzQxJlxudmFyIGRhdGVfdGFibGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF81ZDFmMzM0MV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJ0YWJsZVwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWRhdGUtdGFibGVcIixcbiAgICAgIGNsYXNzOiB7IFwiaXMtd2Vlay1tb2RlXCI6IF92bS5zZWxlY3Rpb25Nb2RlID09PSBcIndlZWtcIiB9LFxuICAgICAgYXR0cnM6IHsgY2VsbHNwYWNpbmc6IFwiMFwiLCBjZWxscGFkZGluZzogXCIwXCIgfSxcbiAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGFuZGxlQ2xpY2ssIG1vdXNlbW92ZTogX3ZtLmhhbmRsZU1vdXNlTW92ZSB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJ0Ym9keVwiLFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcInRyXCIsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5zaG93V2Vla051bWJlclxuICAgICAgICAgICAgICAgID8gX2MoXCJ0aFwiLCBbX3ZtLl92KF92bS5fcyhfdm0udChcImVsLmRhdGVwaWNrZXIud2Vla1wiKSkpXSlcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICBfdm0uX2woX3ZtLldFRUtTLCBmdW5jdGlvbih3ZWVrLCBrZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2MoXCJ0aFwiLCB7IGtleToga2V5IH0sIFtcbiAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJlbC5kYXRlcGlja2VyLndlZWtzLlwiICsgd2VlaykpKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl9sKF92bS5yb3dzLCBmdW5jdGlvbihyb3csIGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICBcInRyXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1kYXRlLXRhYmxlX19yb3dcIixcbiAgICAgICAgICAgICAgICBjbGFzczogeyBjdXJyZW50OiBfdm0uaXNXZWVrQWN0aXZlKHJvd1sxXSkgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBfdm0uX2wocm93LCBmdW5jdGlvbihjZWxsLCBrZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2MoXCJ0ZFwiLCB7IGtleToga2V5LCBjbGFzczogX3ZtLmdldENlbGxDbGFzc2VzKGNlbGwpIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgICAgXCIgKyBfdm0uX3MoY2VsbC50ZXh0KSArIFwiXFxuICAgICAgICBcIilcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICBdLFxuICAgICAgICAyXG4gICAgICApXG4gICAgXVxuICApXG59XG52YXIgZGF0ZV90YWJsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVkMWYzMzQxX3N0YXRpY1JlbmRlckZucyA9IFtdXG5kYXRlX3RhYmxldnVlX3R5cGVfdGVtcGxhdGVfaWRfNWQxZjMzNDFfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvYmFzaWMvZGF0ZS10YWJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQxZjMzNDEmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9iYXNpYy9kYXRlLXRhYmxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG52YXIgX1dFRUtTID0gWydzdW4nLCAnbW9uJywgJ3R1ZScsICd3ZWQnLCAndGh1JywgJ2ZyaScsICdzYXQnXTtcbnZhciBkYXRlX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfZ2V0RGF0ZVRpbWVzdGFtcCA9IGZ1bmN0aW9uIGdldERhdGVUaW1lc3RhbXAodGltZSkge1xuICBpZiAodHlwZW9mIHRpbWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB0aW1lID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcImNsZWFyVGltZVwiXSkobmV3IERhdGUodGltZSkpLmdldFRpbWUoKTtcbiAgfSBlbHNlIGlmICh0aW1lIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcImNsZWFyVGltZVwiXSkodGltZSkuZ2V0VGltZSgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBOYU47XG4gIH1cbn07XG5cbi8vIHJlbW92ZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IHNhdGlzZmllcyBgcHJlZGAgZnJvbSBhcnJcbi8vIHJldHVybiBhIG5ldyBhcnJheSBpZiBtb2RpZmljYXRpb24gb2NjdXJzXG4vLyByZXR1cm4gdGhlIG9yaWdpbmFsIGFycmF5IG90aGVyd2lzZVxudmFyIGRhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19yZW1vdmVGcm9tQXJyYXkgPSBmdW5jdGlvbiByZW1vdmVGcm9tQXJyYXkoYXJyLCBwcmVkKSB7XG4gIHZhciBpZHggPSB0eXBlb2YgcHJlZCA9PT0gJ2Z1bmN0aW9uJyA/IE9iamVjdCh1dGlsX1tcImFycmF5RmluZEluZGV4XCJdKShhcnIsIHByZWQpIDogYXJyLmluZGV4T2YocHJlZCk7XG4gIHJldHVybiBpZHggPj0gMCA/IFtdLmNvbmNhdChhcnIuc2xpY2UoMCwgaWR4KSwgYXJyLnNsaWNlKGlkeCArIDEpKSA6IGFycjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGRhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBtaXhpbnM6IFtsb2NhbGVfZGVmYXVsdC5hXSxcblxuICBwcm9wczoge1xuICAgIGZpcnN0RGF5T2ZXZWVrOiB7XG4gICAgICBkZWZhdWx0OiA3LFxuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgIHJldHVybiB2YWwgPj0gMSAmJiB2YWwgPD0gNztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgdmFsdWU6IHt9LFxuXG4gICAgZGVmYXVsdFZhbHVlOiB7XG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWwpIHtcbiAgICAgICAgLy8gZWl0aGVyOiBudWxsLCB2YWxpZCBEYXRlIG9iamVjdCwgQXJyYXkgb2YgdmFsaWQgRGF0ZSBvYmplY3RzXG4gICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgT2JqZWN0KGRhdGVfdXRpbF9bXCJpc0RhdGVcIl0pKHZhbCkgfHwgQXJyYXkuaXNBcnJheSh2YWwpICYmIHZhbC5ldmVyeShkYXRlX3V0aWxfW1wiaXNEYXRlXCJdKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZGF0ZToge30sXG5cbiAgICBzZWxlY3Rpb25Nb2RlOiB7XG4gICAgICBkZWZhdWx0OiAnZGF5J1xuICAgIH0sXG5cbiAgICBzaG93V2Vla051bWJlcjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcblxuICAgIGRpc2FibGVkRGF0ZToge30sXG5cbiAgICBjZWxsQ2xhc3NOYW1lOiB7fSxcblxuICAgIG1pbkRhdGU6IHt9LFxuXG4gICAgbWF4RGF0ZToge30sXG5cbiAgICByYW5nZVN0YXRlOiB7XG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbmREYXRlOiBudWxsLFxuICAgICAgICAgIHNlbGVjdGluZzogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBvZmZzZXREYXk6IGZ1bmN0aW9uIG9mZnNldERheSgpIHtcbiAgICAgIHZhciB3ZWVrID0gdGhpcy5maXJzdERheU9mV2VlaztcbiAgICAgIC8vIOWRqOaXpeS4uueVjOmZkO+8jOW3puWPs+WBj+enu+eahOWkqeaVsO+8jDMyMTc2NTQg5L6L5aaC5ZGo5LiA5bCx5pivIC0x77yM55uu55qE5piv6LCD5pW05YmN5Lik6KGM5pel5pyf55qE5L2N572uXG4gICAgICByZXR1cm4gd2VlayA+IDMgPyA3IC0gd2VlayA6IC13ZWVrO1xuICAgIH0sXG4gICAgV0VFS1M6IGZ1bmN0aW9uIFdFRUtTKCkge1xuICAgICAgdmFyIHdlZWsgPSB0aGlzLmZpcnN0RGF5T2ZXZWVrO1xuICAgICAgcmV0dXJuIF9XRUVLUy5jb25jYXQoX1dFRUtTKS5zbGljZSh3ZWVrLCB3ZWVrICsgNyk7XG4gICAgfSxcbiAgICB5ZWFyOiBmdW5jdGlvbiB5ZWFyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIH0sXG4gICAgbW9udGg6IGZ1bmN0aW9uIG1vbnRoKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZS5nZXRNb250aCgpO1xuICAgIH0sXG4gICAgc3RhcnREYXRlOiBmdW5jdGlvbiBzdGFydERhdGUoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJnZXRTdGFydERhdGVPZk1vbnRoXCJdKSh0aGlzLnllYXIsIHRoaXMubW9udGgpO1xuICAgIH0sXG4gICAgcm93czogZnVuY3Rpb24gcm93cygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIFRPRE86IHJlZmFjdG9yeSByb3dzIC8gZ2V0Q2VsbENsYXNzZXNcbiAgICAgIHZhciBkYXRlID0gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCAxKTtcbiAgICAgIHZhciBkYXkgPSBPYmplY3QoZGF0ZV91dGlsX1tcImdldEZpcnN0RGF5T2ZNb250aFwiXSkoZGF0ZSk7IC8vIGRheSBvZiBmaXJzdCBkYXlcbiAgICAgIHZhciBkYXRlQ291bnRPZk1vbnRoID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJnZXREYXlDb3VudE9mTW9udGhcIl0pKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpKTtcbiAgICAgIHZhciBkYXRlQ291bnRPZkxhc3RNb250aCA9IE9iamVjdChkYXRlX3V0aWxfW1wiZ2V0RGF5Q291bnRPZk1vbnRoXCJdKShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSA9PT0gMCA/IDExIDogZGF0ZS5nZXRNb250aCgpIC0gMSk7XG5cbiAgICAgIGRheSA9IGRheSA9PT0gMCA/IDcgOiBkYXk7XG5cbiAgICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldERheTtcbiAgICAgIHZhciByb3dzID0gdGhpcy50YWJsZVJvd3M7XG4gICAgICB2YXIgY291bnQgPSAxO1xuXG4gICAgICB2YXIgc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGU7XG4gICAgICB2YXIgZGlzYWJsZWREYXRlID0gdGhpcy5kaXNhYmxlZERhdGU7XG4gICAgICB2YXIgY2VsbENsYXNzTmFtZSA9IHRoaXMuY2VsbENsYXNzTmFtZTtcbiAgICAgIHZhciBzZWxlY3RlZERhdGUgPSB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdkYXRlcycgPyBPYmplY3QodXRpbF9bXCJjb2VyY2VUcnV0aHlWYWx1ZVRvQXJyYXlcIl0pKHRoaXMudmFsdWUpIDogW107XG4gICAgICB2YXIgbm93ID0gZGF0ZV90YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2dldERhdGVUaW1lc3RhbXAobmV3IERhdGUoKSk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XG4gICAgICAgIHZhciByb3cgPSByb3dzW2ldO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dXZWVrTnVtYmVyKSB7XG4gICAgICAgICAgaWYgKCFyb3dbMF0pIHtcbiAgICAgICAgICAgIHJvd1swXSA9IHsgdHlwZTogJ3dlZWsnLCB0ZXh0OiBPYmplY3QoZGF0ZV91dGlsX1tcImdldFdlZWtOdW1iZXJcIl0pKE9iamVjdChkYXRlX3V0aWxfW1wibmV4dERhdGVcIl0pKHN0YXJ0RGF0ZSwgaSAqIDcgKyAxKSkgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChqKSB7XG4gICAgICAgICAgdmFyIGNlbGwgPSByb3dbX3RoaXMuc2hvd1dlZWtOdW1iZXIgPyBqICsgMSA6IGpdO1xuICAgICAgICAgIGlmICghY2VsbCkge1xuICAgICAgICAgICAgY2VsbCA9IHsgcm93OiBpLCBjb2x1bW46IGosIHR5cGU6ICdub3JtYWwnLCBpblJhbmdlOiBmYWxzZSwgc3RhcnQ6IGZhbHNlLCBlbmQ6IGZhbHNlIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2VsbC50eXBlID0gJ25vcm1hbCc7XG5cbiAgICAgICAgICB2YXIgaW5kZXggPSBpICogNyArIGo7XG4gICAgICAgICAgdmFyIHRpbWUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHREYXRlXCJdKShzdGFydERhdGUsIGluZGV4IC0gb2Zmc2V0KS5nZXRUaW1lKCk7XG4gICAgICAgICAgY2VsbC5pblJhbmdlID0gdGltZSA+PSBkYXRlX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfZ2V0RGF0ZVRpbWVzdGFtcChfdGhpcy5taW5EYXRlKSAmJiB0aW1lIDw9IGRhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19nZXREYXRlVGltZXN0YW1wKF90aGlzLm1heERhdGUpO1xuICAgICAgICAgIGNlbGwuc3RhcnQgPSBfdGhpcy5taW5EYXRlICYmIHRpbWUgPT09IGRhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19nZXREYXRlVGltZXN0YW1wKF90aGlzLm1pbkRhdGUpO1xuICAgICAgICAgIGNlbGwuZW5kID0gX3RoaXMubWF4RGF0ZSAmJiB0aW1lID09PSBkYXRlX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfZ2V0RGF0ZVRpbWVzdGFtcChfdGhpcy5tYXhEYXRlKTtcbiAgICAgICAgICB2YXIgaXNUb2RheSA9IHRpbWUgPT09IG5vdztcblxuICAgICAgICAgIGlmIChpc1RvZGF5KSB7XG4gICAgICAgICAgICBjZWxsLnR5cGUgPSAndG9kYXknO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpID49IDAgJiYgaSA8PSAxKSB7XG4gICAgICAgICAgICB2YXIgbnVtYmVyT2ZEYXlzRnJvbVByZXZpb3VzTW9udGggPSBkYXkgKyBvZmZzZXQgPCAwID8gNyArIGRheSArIG9mZnNldCA6IGRheSArIG9mZnNldDtcblxuICAgICAgICAgICAgaWYgKGogKyBpICogNyA+PSBudW1iZXJPZkRheXNGcm9tUHJldmlvdXNNb250aCkge1xuICAgICAgICAgICAgICBjZWxsLnRleHQgPSBjb3VudCsrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2VsbC50ZXh0ID0gZGF0ZUNvdW50T2ZMYXN0TW9udGggLSAobnVtYmVyT2ZEYXlzRnJvbVByZXZpb3VzTW9udGggLSBqICUgNykgKyAxICsgaSAqIDc7XG4gICAgICAgICAgICAgIGNlbGwudHlwZSA9ICdwcmV2LW1vbnRoJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNvdW50IDw9IGRhdGVDb3VudE9mTW9udGgpIHtcbiAgICAgICAgICAgICAgY2VsbC50ZXh0ID0gY291bnQrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNlbGwudGV4dCA9IGNvdW50KysgLSBkYXRlQ291bnRPZk1vbnRoO1xuICAgICAgICAgICAgICBjZWxsLnR5cGUgPSAnbmV4dC1tb250aCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGNlbGxEYXRlID0gbmV3IERhdGUodGltZSk7XG4gICAgICAgICAgY2VsbC5kaXNhYmxlZCA9IHR5cGVvZiBkaXNhYmxlZERhdGUgPT09ICdmdW5jdGlvbicgJiYgZGlzYWJsZWREYXRlKGNlbGxEYXRlKTtcbiAgICAgICAgICBjZWxsLnNlbGVjdGVkID0gT2JqZWN0KHV0aWxfW1wiYXJyYXlGaW5kXCJdKShzZWxlY3RlZERhdGUsIGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPT09IGNlbGxEYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjZWxsLmN1c3RvbUNsYXNzID0gdHlwZW9mIGNlbGxDbGFzc05hbWUgPT09ICdmdW5jdGlvbicgJiYgY2VsbENsYXNzTmFtZShjZWxsRGF0ZSk7XG4gICAgICAgICAgX3RoaXMuJHNldChyb3csIF90aGlzLnNob3dXZWVrTnVtYmVyID8gaiArIDEgOiBqLCBjZWxsKTtcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDc7IGorKykge1xuICAgICAgICAgIF9sb29wKGopO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3dlZWsnKSB7XG4gICAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5zaG93V2Vla051bWJlciA/IDEgOiAwO1xuICAgICAgICAgIHZhciBlbmQgPSB0aGlzLnNob3dXZWVrTnVtYmVyID8gNyA6IDY7XG4gICAgICAgICAgdmFyIGlzV2Vla0FjdGl2ZSA9IHRoaXMuaXNXZWVrQWN0aXZlKHJvd1tzdGFydCArIDFdKTtcblxuICAgICAgICAgIHJvd1tzdGFydF0uaW5SYW5nZSA9IGlzV2Vla0FjdGl2ZTtcbiAgICAgICAgICByb3dbc3RhcnRdLnN0YXJ0ID0gaXNXZWVrQWN0aXZlO1xuICAgICAgICAgIHJvd1tlbmRdLmluUmFuZ2UgPSBpc1dlZWtBY3RpdmU7XG4gICAgICAgICAgcm93W2VuZF0uZW5kID0gaXNXZWVrQWN0aXZlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByb3dzO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgICdyYW5nZVN0YXRlLmVuZERhdGUnOiBmdW5jdGlvbiByYW5nZVN0YXRlRW5kRGF0ZShuZXdWYWwpIHtcbiAgICAgIHRoaXMubWFya1JhbmdlKHRoaXMubWluRGF0ZSwgbmV3VmFsKTtcbiAgICB9LFxuICAgIG1pbkRhdGU6IGZ1bmN0aW9uIG1pbkRhdGUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChkYXRlX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfZ2V0RGF0ZVRpbWVzdGFtcChuZXdWYWwpICE9PSBkYXRlX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfZ2V0RGF0ZVRpbWVzdGFtcChvbGRWYWwpKSB7XG4gICAgICAgIHRoaXMubWFya1JhbmdlKHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1heERhdGU6IGZ1bmN0aW9uIG1heERhdGUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChkYXRlX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfZ2V0RGF0ZVRpbWVzdGFtcChuZXdWYWwpICE9PSBkYXRlX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfZ2V0RGF0ZVRpbWVzdGFtcChvbGRWYWwpKSB7XG4gICAgICAgIHRoaXMubWFya1JhbmdlKHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFibGVSb3dzOiBbW10sIFtdLCBbXSwgW10sIFtdLCBbXV0sXG4gICAgICBsYXN0Um93OiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgY2VsbE1hdGNoZXNEYXRlOiBmdW5jdGlvbiBjZWxsTWF0Y2hlc0RhdGUoY2VsbCwgZGF0ZSkge1xuICAgICAgdmFyIHZhbHVlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICByZXR1cm4gdGhpcy55ZWFyID09PSB2YWx1ZS5nZXRGdWxsWWVhcigpICYmIHRoaXMubW9udGggPT09IHZhbHVlLmdldE1vbnRoKCkgJiYgTnVtYmVyKGNlbGwudGV4dCkgPT09IHZhbHVlLmdldERhdGUoKTtcbiAgICB9LFxuICAgIGdldENlbGxDbGFzc2VzOiBmdW5jdGlvbiBnZXRDZWxsQ2xhc3NlcyhjZWxsKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHNlbGVjdGlvbk1vZGUgPSB0aGlzLnNlbGVjdGlvbk1vZGU7XG4gICAgICB2YXIgZGVmYXVsdFZhbHVlID0gdGhpcy5kZWZhdWx0VmFsdWUgPyBBcnJheS5pc0FycmF5KHRoaXMuZGVmYXVsdFZhbHVlKSA/IHRoaXMuZGVmYXVsdFZhbHVlIDogW3RoaXMuZGVmYXVsdFZhbHVlXSA6IFtdO1xuXG4gICAgICB2YXIgY2xhc3NlcyA9IFtdO1xuICAgICAgaWYgKChjZWxsLnR5cGUgPT09ICdub3JtYWwnIHx8IGNlbGwudHlwZSA9PT0gJ3RvZGF5JykgJiYgIWNlbGwuZGlzYWJsZWQpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdhdmFpbGFibGUnKTtcbiAgICAgICAgaWYgKGNlbGwudHlwZSA9PT0gJ3RvZGF5Jykge1xuICAgICAgICAgIGNsYXNzZXMucHVzaCgndG9kYXknKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKGNlbGwudHlwZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjZWxsLnR5cGUgPT09ICdub3JtYWwnICYmIGRlZmF1bHRWYWx1ZS5zb21lKGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIuY2VsbE1hdGNoZXNEYXRlKGNlbGwsIGRhdGUpO1xuICAgICAgfSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdkZWZhdWx0Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3Rpb25Nb2RlID09PSAnZGF5JyAmJiAoY2VsbC50eXBlID09PSAnbm9ybWFsJyB8fCBjZWxsLnR5cGUgPT09ICd0b2RheScpICYmIHRoaXMuY2VsbE1hdGNoZXNEYXRlKGNlbGwsIHRoaXMudmFsdWUpKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnY3VycmVudCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2VsbC5pblJhbmdlICYmIChjZWxsLnR5cGUgPT09ICdub3JtYWwnIHx8IGNlbGwudHlwZSA9PT0gJ3RvZGF5JyB8fCB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICd3ZWVrJykpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdpbi1yYW5nZScpO1xuXG4gICAgICAgIGlmIChjZWxsLnN0YXJ0KSB7XG4gICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzdGFydC1kYXRlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2VsbC5lbmQpIHtcbiAgICAgICAgICBjbGFzc2VzLnB1c2goJ2VuZC1kYXRlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNlbGwuZGlzYWJsZWQpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdkaXNhYmxlZCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2VsbC5zZWxlY3RlZCkge1xuICAgICAgICBjbGFzc2VzLnB1c2goJ3NlbGVjdGVkJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjZWxsLmN1c3RvbUNsYXNzKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChjZWxsLmN1c3RvbUNsYXNzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICAgIH0sXG4gICAgZ2V0RGF0ZU9mQ2VsbDogZnVuY3Rpb24gZ2V0RGF0ZU9mQ2VsbChyb3csIGNvbHVtbikge1xuICAgICAgdmFyIG9mZnNldEZyb21TdGFydCA9IHJvdyAqIDcgKyAoY29sdW1uIC0gKHRoaXMuc2hvd1dlZWtOdW1iZXIgPyAxIDogMCkpIC0gdGhpcy5vZmZzZXREYXk7XG4gICAgICByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0RGF0ZVwiXSkodGhpcy5zdGFydERhdGUsIG9mZnNldEZyb21TdGFydCk7XG4gICAgfSxcbiAgICBpc1dlZWtBY3RpdmU6IGZ1bmN0aW9uIGlzV2Vla0FjdGl2ZShjZWxsKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnd2VlaycpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBuZXdEYXRlID0gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCAxKTtcbiAgICAgIHZhciB5ZWFyID0gbmV3RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgdmFyIG1vbnRoID0gbmV3RGF0ZS5nZXRNb250aCgpO1xuXG4gICAgICBpZiAoY2VsbC50eXBlID09PSAncHJldi1tb250aCcpIHtcbiAgICAgICAgbmV3RGF0ZS5zZXRNb250aChtb250aCA9PT0gMCA/IDExIDogbW9udGggLSAxKTtcbiAgICAgICAgbmV3RGF0ZS5zZXRGdWxsWWVhcihtb250aCA9PT0gMCA/IHllYXIgLSAxIDogeWVhcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjZWxsLnR5cGUgPT09ICduZXh0LW1vbnRoJykge1xuICAgICAgICBuZXdEYXRlLnNldE1vbnRoKG1vbnRoID09PSAxMSA/IDAgOiBtb250aCArIDEpO1xuICAgICAgICBuZXdEYXRlLnNldEZ1bGxZZWFyKG1vbnRoID09PSAxMSA/IHllYXIgKyAxIDogeWVhcik7XG4gICAgICB9XG5cbiAgICAgIG5ld0RhdGUuc2V0RGF0ZShwYXJzZUludChjZWxsLnRleHQsIDEwKSk7XG5cbiAgICAgIGlmIChPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdmFyIGRheU9mZnNldCA9ICh0aGlzLnZhbHVlLmdldERheSgpIC0gdGhpcy5maXJzdERheU9mV2VlayArIDcpICUgNyAtIDE7XG4gICAgICAgIHZhciB3ZWVrRGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wicHJldkRhdGVcIl0pKHRoaXMudmFsdWUsIGRheU9mZnNldCk7XG4gICAgICAgIHJldHVybiB3ZWVrRGF0ZS5nZXRUaW1lKCkgPT09IG5ld0RhdGUuZ2V0VGltZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgbWFya1JhbmdlOiBmdW5jdGlvbiBtYXJrUmFuZ2UobWluRGF0ZSwgbWF4RGF0ZSkge1xuICAgICAgbWluRGF0ZSA9IGRhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19nZXREYXRlVGltZXN0YW1wKG1pbkRhdGUpO1xuICAgICAgbWF4RGF0ZSA9IGRhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19nZXREYXRlVGltZXN0YW1wKG1heERhdGUpIHx8IG1pbkRhdGU7XG4gICAgICB2YXIgX3JlZiA9IFtNYXRoLm1pbihtaW5EYXRlLCBtYXhEYXRlKSwgTWF0aC5tYXgobWluRGF0ZSwgbWF4RGF0ZSldO1xuICAgICAgbWluRGF0ZSA9IF9yZWZbMF07XG4gICAgICBtYXhEYXRlID0gX3JlZlsxXTtcblxuXG4gICAgICB2YXIgc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGU7XG4gICAgICB2YXIgcm93cyA9IHRoaXMucm93cztcbiAgICAgIGZvciAodmFyIGkgPSAwLCBrID0gcm93cy5sZW5ndGg7IGkgPCBrOyBpKyspIHtcbiAgICAgICAgdmFyIHJvdyA9IHJvd3NbaV07XG4gICAgICAgIGZvciAodmFyIGogPSAwLCBsID0gcm93Lmxlbmd0aDsgaiA8IGw7IGorKykge1xuICAgICAgICAgIGlmICh0aGlzLnNob3dXZWVrTnVtYmVyICYmIGogPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgdmFyIF9jZWxsID0gcm93W2pdO1xuICAgICAgICAgIHZhciBpbmRleCA9IGkgKiA3ICsgaiArICh0aGlzLnNob3dXZWVrTnVtYmVyID8gLTEgOiAwKTtcbiAgICAgICAgICB2YXIgdGltZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibmV4dERhdGVcIl0pKHN0YXJ0RGF0ZSwgaW5kZXggLSB0aGlzLm9mZnNldERheSkuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgX2NlbGwuaW5SYW5nZSA9IG1pbkRhdGUgJiYgdGltZSA+PSBtaW5EYXRlICYmIHRpbWUgPD0gbWF4RGF0ZTtcbiAgICAgICAgICBfY2VsbC5zdGFydCA9IG1pbkRhdGUgJiYgdGltZSA9PT0gbWluRGF0ZTtcbiAgICAgICAgICBfY2VsbC5lbmQgPSBtYXhEYXRlICYmIHRpbWUgPT09IG1heERhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZU1vdXNlTW92ZTogZnVuY3Rpb24gaGFuZGxlTW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMucmFuZ2VTdGF0ZS5zZWxlY3RpbmcpIHJldHVybjtcblxuICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ1NQQU4nKSB7XG4gICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdESVYnKSB7XG4gICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlO1xuICAgICAgfVxuICAgICAgaWYgKHRhcmdldC50YWdOYW1lICE9PSAnVEQnKSByZXR1cm47XG5cbiAgICAgIHZhciByb3cgPSB0YXJnZXQucGFyZW50Tm9kZS5yb3dJbmRleCAtIDE7XG4gICAgICB2YXIgY29sdW1uID0gdGFyZ2V0LmNlbGxJbmRleDtcblxuICAgICAgLy8gY2FuIG5vdCBzZWxlY3QgZGlzYWJsZWQgZGF0ZVxuICAgICAgaWYgKHRoaXMucm93c1tyb3ddW2NvbHVtbl0uZGlzYWJsZWQpIHJldHVybjtcblxuICAgICAgLy8gb25seSB1cGRhdGUgcmFuZ2VTdGF0ZSB3aGVuIG1vdXNlIG1vdmVzIHRvIGEgbmV3IGNlbGxcbiAgICAgIC8vIHRoaXMgYXZvaWRzIGZyZXF1ZW50IERhdGUgb2JqZWN0IGNyZWF0aW9uIGFuZCBpbXByb3ZlcyBwZXJmb3JtYW5jZVxuICAgICAgaWYgKHJvdyAhPT0gdGhpcy5sYXN0Um93IHx8IGNvbHVtbiAhPT0gdGhpcy5sYXN0Q29sdW1uKSB7XG4gICAgICAgIHRoaXMubGFzdFJvdyA9IHJvdztcbiAgICAgICAgdGhpcy5sYXN0Q29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VyYW5nZScsIHtcbiAgICAgICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICAgICAgbWF4RGF0ZTogdGhpcy5tYXhEYXRlLFxuICAgICAgICAgIHJhbmdlU3RhdGU6IHtcbiAgICAgICAgICAgIHNlbGVjdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGVuZERhdGU6IHRoaXMuZ2V0RGF0ZU9mQ2VsbChyb3csIGNvbHVtbilcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnU1BBTicpIHtcbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0RJVicpIHtcbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gJ1REJykgcmV0dXJuO1xuXG4gICAgICB2YXIgcm93ID0gdGFyZ2V0LnBhcmVudE5vZGUucm93SW5kZXggLSAxO1xuICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3dlZWsnID8gMSA6IHRhcmdldC5jZWxsSW5kZXg7XG4gICAgICB2YXIgY2VsbCA9IHRoaXMucm93c1tyb3ddW2NvbHVtbl07XG5cbiAgICAgIGlmIChjZWxsLmRpc2FibGVkIHx8IGNlbGwudHlwZSA9PT0gJ3dlZWsnKSByZXR1cm47XG5cbiAgICAgIHZhciBuZXdEYXRlID0gdGhpcy5nZXREYXRlT2ZDZWxsKHJvdywgY29sdW1uKTtcblxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBpZiAoIXRoaXMucmFuZ2VTdGF0ZS5zZWxlY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdwaWNrJywgeyBtaW5EYXRlOiBuZXdEYXRlLCBtYXhEYXRlOiBudWxsIH0pO1xuICAgICAgICAgIHRoaXMucmFuZ2VTdGF0ZS5zZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChuZXdEYXRlID49IHRoaXMubWluRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy4kZW1pdCgncGljaycsIHsgbWluRGF0ZTogdGhpcy5taW5EYXRlLCBtYXhEYXRlOiBuZXdEYXRlIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdwaWNrJywgeyBtaW5EYXRlOiBuZXdEYXRlLCBtYXhEYXRlOiB0aGlzLm1pbkRhdGUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmFuZ2VTdGF0ZS5zZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdkYXknKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3BpY2snLCBuZXdEYXRlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnd2VlaycpIHtcbiAgICAgICAgdmFyIHdlZWtOdW1iZXIgPSBPYmplY3QoZGF0ZV91dGlsX1tcImdldFdlZWtOdW1iZXJcIl0pKG5ld0RhdGUpO1xuICAgICAgICB2YXIgdmFsdWUgPSBuZXdEYXRlLmdldEZ1bGxZZWFyKCkgKyAndycgKyB3ZWVrTnVtYmVyO1xuICAgICAgICB0aGlzLiRlbWl0KCdwaWNrJywge1xuICAgICAgICAgIHllYXI6IG5ld0RhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICB3ZWVrOiB3ZWVrTnVtYmVyLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBkYXRlOiBuZXdEYXRlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdkYXRlcycpIHtcbiAgICAgICAgdmFyIF92YWx1ZSA9IHRoaXMudmFsdWUgfHwgW107XG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IGNlbGwuc2VsZWN0ZWQgPyBkYXRlX3RhYmxldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfcmVtb3ZlRnJvbUFycmF5KF92YWx1ZSwgZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPT09IG5ld0RhdGUuZ2V0VGltZSgpO1xuICAgICAgICB9KSA6IFtdLmNvbmNhdChfdmFsdWUsIFtuZXdEYXRlXSk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3BpY2snLCBuZXdWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL2Jhc2ljL2RhdGUtdGFibGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJhc2ljX2RhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoZGF0ZV90YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvYmFzaWMvZGF0ZS10YWJsZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBkYXRlX3RhYmxlX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgYmFzaWNfZGF0ZV90YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgZGF0ZV90YWJsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVkMWYzMzQxX3JlbmRlcixcbiAgZGF0ZV90YWJsZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVkMWYzMzQxX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgZGF0ZV90YWJsZV9hcGk7IH1cbmRhdGVfdGFibGVfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvYmFzaWMvZGF0ZS10YWJsZS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZGF0ZV90YWJsZSA9IChkYXRlX3RhYmxlX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9wYW5lbC9kYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGRhdGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBtaXhpbnM6IFtsb2NhbGVfZGVmYXVsdC5hXSxcblxuICBkaXJlY3RpdmVzOiB7IENsaWNrb3V0c2lkZTogY2xpY2tvdXRzaWRlX2RlZmF1bHQuYSB9LFxuXG4gIHdhdGNoOiB7XG4gICAgc2hvd1RpbWU6IGZ1bmN0aW9uIHNob3dUaW1lKHZhbCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIXZhbCkgcmV0dXJuO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHtcbiAgICAgICAgdmFyIGlucHV0RWxtID0gX3RoaXMuJHJlZnMuaW5wdXQuJGVsO1xuICAgICAgICBpZiAoaW5wdXRFbG0pIHtcbiAgICAgICAgICBfdGhpcy5waWNrZXJXaWR0aCA9IGlucHV0RWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICsgMTA7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKHZhbCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ2RhdGVzJyAmJiB0aGlzLnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbW9udGhzJyAmJiB0aGlzLnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAneWVhcnMnICYmIHRoaXMudmFsdWUpIHJldHVybjtcbiAgICAgIGlmIChPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSkodmFsKSkge1xuICAgICAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRlID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRlZmF1bHRWYWx1ZTogZnVuY3Rpb24gZGVmYXVsdFZhbHVlKHZhbCkge1xuICAgICAgaWYgKCFPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5kYXRlID0gdmFsID8gbmV3IERhdGUodmFsKSA6IG5ldyBEYXRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0aW1lUGlja2VyVmlzaWJsZTogZnVuY3Rpb24gdGltZVBpY2tlclZpc2libGUodmFsKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKHZhbCkgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMyLiRyZWZzLnRpbWVwaWNrZXIuYWRqdXN0U3Bpbm5lcnMoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc2VsZWN0aW9uTW9kZTogZnVuY3Rpb24gc2VsZWN0aW9uTW9kZShuZXdWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgPT09ICdtb250aCcpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXcgIT09ICd5ZWFyJyB8fCB0aGlzLmN1cnJlbnRWaWV3ICE9PSAnbW9udGgnKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50VmlldyA9ICdtb250aCc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobmV3VmFsID09PSAnZGF0ZXMnKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSAnZGF0ZSc7XG4gICAgICB9IGVsc2UgaWYgKG5ld1ZhbCA9PT0gJ3llYXJzJykge1xuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3ID0gJ3llYXInO1xuICAgICAgfSBlbHNlIGlmIChuZXdWYWwgPT09ICdtb250aHMnKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSAnbW9udGgnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgcHJveHlUaW1lUGlja2VyRGF0YVByb3BlcnRpZXM6IGZ1bmN0aW9uIHByb3h5VGltZVBpY2tlckRhdGFQcm9wZXJ0aWVzKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBmb3JtYXQgPSBmdW5jdGlvbiBmb3JtYXQodGltZUZvcm1hdCkge1xuICAgICAgICBfdGhpczMuJHJlZnMudGltZXBpY2tlci5mb3JtYXQgPSB0aW1lRm9ybWF0O1xuICAgICAgfTtcbiAgICAgIHZhciB2YWx1ZSA9IGZ1bmN0aW9uIHZhbHVlKF92YWx1ZSkge1xuICAgICAgICBfdGhpczMuJHJlZnMudGltZXBpY2tlci52YWx1ZSA9IF92YWx1ZTtcbiAgICAgIH07XG4gICAgICB2YXIgZGF0ZSA9IGZ1bmN0aW9uIGRhdGUoX2RhdGUpIHtcbiAgICAgICAgX3RoaXMzLiRyZWZzLnRpbWVwaWNrZXIuZGF0ZSA9IF9kYXRlO1xuICAgICAgfTtcbiAgICAgIHZhciBzZWxlY3RhYmxlUmFuZ2UgPSBmdW5jdGlvbiBzZWxlY3RhYmxlUmFuZ2UoX3NlbGVjdGFibGVSYW5nZSkge1xuICAgICAgICBfdGhpczMuJHJlZnMudGltZXBpY2tlci5zZWxlY3RhYmxlUmFuZ2UgPSBfc2VsZWN0YWJsZVJhbmdlO1xuICAgICAgfTtcblxuICAgICAgdGhpcy4kd2F0Y2goJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgdGhpcy4kd2F0Y2goJ2RhdGUnLCBkYXRlKTtcbiAgICAgIHRoaXMuJHdhdGNoKCdzZWxlY3RhYmxlUmFuZ2UnLCBzZWxlY3RhYmxlUmFuZ2UpO1xuXG4gICAgICBmb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIHZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgZGF0ZSh0aGlzLmRhdGUpO1xuICAgICAgc2VsZWN0YWJsZVJhbmdlKHRoaXMuc2VsZWN0YWJsZVJhbmdlKTtcbiAgICB9LFxuICAgIGhhbmRsZUNsZWFyOiBmdW5jdGlvbiBoYW5kbGVDbGVhcigpIHtcbiAgICAgIHRoaXMuZGF0ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKCk7XG4gICAgICB0aGlzLiRlbWl0KCdwaWNrJywgbnVsbCk7XG4gICAgfSxcbiAgICBlbWl0OiBmdW5jdGlvbiBlbWl0KHZhbHVlKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRoaXMuJGVtaXQuYXBwbHkodGhpcywgWydwaWNrJywgdmFsdWVdLmNvbmNhdChhcmdzKSk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhciBkYXRlcyA9IHZhbHVlLm1hcChmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQuc2hvd1RpbWUgPyBPYmplY3QoZGF0ZV91dGlsX1tcImNsZWFyTWlsbGlzZWNvbmRzXCJdKShkYXRlKSA6IE9iamVjdChkYXRlX3V0aWxfW1wiY2xlYXJUaW1lXCJdKShkYXRlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuJGVtaXQuYXBwbHkodGhpcywgWydwaWNrJywgZGF0ZXNdLmNvbmNhdChhcmdzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRlbWl0LmFwcGx5KHRoaXMsIFsncGljaycsIHRoaXMuc2hvd1RpbWUgPyBPYmplY3QoZGF0ZV91dGlsX1tcImNsZWFyTWlsbGlzZWNvbmRzXCJdKSh2YWx1ZSkgOiBPYmplY3QoZGF0ZV91dGlsX1tcImNsZWFyVGltZVwiXSkodmFsdWUpXS5jb25jYXQoYXJncykpO1xuICAgICAgfVxuICAgICAgdGhpcy51c2VySW5wdXREYXRlID0gbnVsbDtcbiAgICAgIHRoaXMudXNlcklucHV0VGltZSA9IG51bGw7XG4gICAgfSxcblxuXG4gICAgLy8gcmVzZXREYXRlKCkge1xuICAgIC8vICAgdGhpcy5kYXRlID0gbmV3IERhdGUodGhpcy5kYXRlKTtcbiAgICAvLyB9LFxuXG4gICAgc2hvd01vbnRoUGlja2VyOiBmdW5jdGlvbiBzaG93TW9udGhQaWNrZXIoKSB7XG4gICAgICB0aGlzLmN1cnJlbnRWaWV3ID0gJ21vbnRoJztcbiAgICB9LFxuICAgIHNob3dZZWFyUGlja2VyOiBmdW5jdGlvbiBzaG93WWVhclBpY2tlcigpIHtcbiAgICAgIHRoaXMuY3VycmVudFZpZXcgPSAneWVhcic7XG4gICAgfSxcblxuXG4gICAgLy8gWFhYOiDmsqHnlKjliLBcbiAgICAvLyBoYW5kbGVMYWJlbENsaWNrKCkge1xuICAgIC8vICAgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09ICdkYXRlJykge1xuICAgIC8vICAgICB0aGlzLnNob3dNb250aFBpY2tlcigpO1xuICAgIC8vICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSAnbW9udGgnKSB7XG4gICAgLy8gICAgIHRoaXMuc2hvd1llYXJQaWNrZXIoKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9LFxuXG4gICAgcHJldk1vbnRoOiBmdW5jdGlvbiBwcmV2TW9udGgoKSB7XG4gICAgICB0aGlzLmRhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcInByZXZNb250aFwiXSkodGhpcy5kYXRlKTtcbiAgICB9LFxuICAgIG5leHRNb250aDogZnVuY3Rpb24gbmV4dE1vbnRoKCkge1xuICAgICAgdGhpcy5kYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0TW9udGhcIl0pKHRoaXMuZGF0ZSk7XG4gICAgfSxcbiAgICBwcmV2WWVhcjogZnVuY3Rpb24gcHJldlllYXIoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gJ3llYXInKSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wicHJldlllYXJcIl0pKHRoaXMuZGF0ZSwgMTApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJwcmV2WWVhclwiXSkodGhpcy5kYXRlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG5leHRZZWFyOiBmdW5jdGlvbiBuZXh0WWVhcigpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSAneWVhcicpIHtcbiAgICAgICAgdGhpcy5kYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0WWVhclwiXSkodGhpcy5kYXRlLCAxMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRZZWFyXCJdKSh0aGlzLmRhdGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlU2hvcnRjdXRDbGljazogZnVuY3Rpb24gaGFuZGxlU2hvcnRjdXRDbGljayhzaG9ydGN1dCkge1xuICAgICAgaWYgKHNob3J0Y3V0Lm9uQ2xpY2spIHtcbiAgICAgICAgc2hvcnRjdXQub25DbGljayh0aGlzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVRpbWVQaWNrOiBmdW5jdGlvbiBoYW5kbGVUaW1lUGljayh2YWx1ZSwgdmlzaWJsZSwgZmlyc3QpIHtcbiAgICAgIGlmIChPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSkodmFsdWUpKSB7XG4gICAgICAgIHZhciBuZXdEYXRlID0gdGhpcy52YWx1ZSA/IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5VGltZVwiXSkodGhpcy52YWx1ZSwgdmFsdWUuZ2V0SG91cnMoKSwgdmFsdWUuZ2V0TWludXRlcygpLCB2YWx1ZS5nZXRTZWNvbmRzKCkpIDogT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlXaXRoVGltZVN0cmluZ1wiXSkodGhpcy5nZXREZWZhdWx0VmFsdWUoKSwgdGhpcy5kZWZhdWx0VGltZSk7XG4gICAgICAgIHRoaXMuZGF0ZSA9IG5ld0RhdGU7XG4gICAgICAgIHRoaXMuZW1pdCh0aGlzLmRhdGUsIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbWl0KHZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgdGhpcy50aW1lUGlja2VyVmlzaWJsZSA9IHZpc2libGU7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVUaW1lUGlja0Nsb3NlOiBmdW5jdGlvbiBoYW5kbGVUaW1lUGlja0Nsb3NlKCkge1xuICAgICAgdGhpcy50aW1lUGlja2VyVmlzaWJsZSA9IGZhbHNlO1xuICAgIH0sXG4gICAgaGFuZGxlTW9udGhQaWNrOiBmdW5jdGlvbiBoYW5kbGVNb250aFBpY2sobW9udGgpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtb250aCcpIHtcbiAgICAgICAgdGhpcy5kYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlEYXRlXCJdKSh0aGlzLmRhdGUsIHRoaXMueWVhciwgbW9udGgsIDEpO1xuICAgICAgICB0aGlzLmVtaXQodGhpcy5kYXRlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbW9udGhzJykge1xuICAgICAgICB0aGlzLmVtaXQobW9udGgsIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJjaGFuZ2VZZWFyTW9udGhBbmRDbGFtcERhdGVcIl0pKHRoaXMuZGF0ZSwgdGhpcy55ZWFyLCBtb250aCk7XG4gICAgICAgIC8vIFRPRE86IHNob3VsZCBlbWl0IGludGVybWVkaWF0ZSB2YWx1ZSA/P1xuICAgICAgICAvLyB0aGlzLmVtaXQodGhpcy5kYXRlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VmlldyA9ICdkYXRlJztcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZURhdGVQaWNrOiBmdW5jdGlvbiBoYW5kbGVEYXRlUGljayh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ2RheScpIHtcbiAgICAgICAgdmFyIG5ld0RhdGUgPSB0aGlzLnZhbHVlID8gT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlEYXRlXCJdKSh0aGlzLnZhbHVlLCB2YWx1ZS5nZXRGdWxsWWVhcigpLCB2YWx1ZS5nZXRNb250aCgpLCB2YWx1ZS5nZXREYXRlKCkpIDogT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlXaXRoVGltZVN0cmluZ1wiXSkodmFsdWUsIHRoaXMuZGVmYXVsdFRpbWUpO1xuICAgICAgICAvLyBjaGFuZ2UgZGVmYXVsdCB0aW1lIHdoaWxlIG91dCBvZiBzZWxlY3RhYmxlUmFuZ2VcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrRGF0ZVdpdGhpblJhbmdlKG5ld0RhdGUpKSB7XG4gICAgICAgICAgbmV3RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5RGF0ZVwiXSkodGhpcy5zZWxlY3RhYmxlUmFuZ2VbMF1bMF0sIHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRlID0gbmV3RGF0ZTtcbiAgICAgICAgdGhpcy5lbWl0KHRoaXMuZGF0ZSwgdGhpcy5zaG93VGltZSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3dlZWsnKSB7XG4gICAgICAgIHRoaXMuZW1pdCh2YWx1ZS5kYXRlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnZGF0ZXMnKSB7XG4gICAgICAgIHRoaXMuZW1pdCh2YWx1ZSwgdHJ1ZSk7IC8vIHNldCBmYWxzZSB0byBrZWVwIHBhbmVsIG9wZW5cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVllYXJQaWNrOiBmdW5jdGlvbiBoYW5kbGVZZWFyUGljayh5ZWFyKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAneWVhcicpIHtcbiAgICAgICAgdGhpcy5kYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlEYXRlXCJdKSh0aGlzLmRhdGUsIHllYXIsIDAsIDEpO1xuICAgICAgICB0aGlzLmVtaXQodGhpcy5kYXRlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAneWVhcnMnKSB7XG4gICAgICAgIHRoaXMuZW1pdCh5ZWFyLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wiY2hhbmdlWWVhck1vbnRoQW5kQ2xhbXBEYXRlXCJdKSh0aGlzLmRhdGUsIHllYXIsIHRoaXMubW9udGgpO1xuICAgICAgICAvLyBUT0RPOiBzaG91bGQgZW1pdCBpbnRlcm1lZGlhdGUgdmFsdWUgPz9cbiAgICAgICAgLy8gdGhpcy5lbWl0KHRoaXMuZGF0ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSAnbW9udGgnO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2hhbmdlVG9Ob3c6IGZ1bmN0aW9uIGNoYW5nZVRvTm93KCkge1xuICAgICAgLy8gTk9URTogbm90IGEgcGVybWFuZW50IHNvbHV0aW9uXG4gICAgICAvLyAgICAgICBjb25zaWRlciBkaXNhYmxlIFwibm93XCIgYnV0dG9uIGluIHRoZSBmdXR1cmVcbiAgICAgIGlmICgoIXRoaXMuZGlzYWJsZWREYXRlIHx8ICF0aGlzLmRpc2FibGVkRGF0ZShuZXcgRGF0ZSgpKSkgJiYgdGhpcy5jaGVja0RhdGVXaXRoaW5SYW5nZShuZXcgRGF0ZSgpKSkge1xuICAgICAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmVtaXQodGhpcy5kYXRlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNvbmZpcm06IGZ1bmN0aW9uIGNvbmZpcm0oKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnZGF0ZXMnIHx8IHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ21vbnRocycgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAneWVhcnMnKSB7XG4gICAgICAgIHRoaXMuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHZhbHVlIHdlcmUgZW1pdHRlZCBpbiBoYW5kbGV7RGF0ZSxUaW1lfVBpY2ssIG5vdGhpbmcgdG8gdXBkYXRlIGhlcmVcbiAgICAgICAgLy8gZGVhbCB3aXRoIHRoZSBzY2VuYXJpbyB3aGVyZTogdXNlciBvcGVucyB0aGUgcGlja2VyLCB0aGVuIGNvbmZpcm0gd2l0aG91dCBkb2luZyBhbnl0aGluZ1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5V2l0aFRpbWVTdHJpbmdcIl0pKHRoaXMuZ2V0RGVmYXVsdFZhbHVlKCksIHRoaXMuZGVmYXVsdFRpbWUpO1xuICAgICAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7IC8vIHJlZnJlc2ggZGF0ZVxuICAgICAgICB0aGlzLmVtaXQodmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVzZXRWaWV3OiBmdW5jdGlvbiByZXNldFZpZXcoKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbW9udGgnIHx8IHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ21vbnRocycpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VmlldyA9ICdtb250aCc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3llYXInIHx8IHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3llYXJzJykge1xuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3ID0gJ3llYXInO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VmlldyA9ICdkYXRlJztcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUVudGVyOiBmdW5jdGlvbiBoYW5kbGVFbnRlcigpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bik7XG4gICAgfSxcbiAgICBoYW5kbGVMZWF2ZTogZnVuY3Rpb24gaGFuZGxlTGVhdmUoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdkb2Rlc3Ryb3knKTtcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bik7XG4gICAgfSxcbiAgICBoYW5kbGVLZXlkb3duOiBmdW5jdGlvbiBoYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgICB2YXIga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgICB2YXIgbGlzdCA9IFszOCwgNDAsIDM3LCAzOV07XG4gICAgICBpZiAodGhpcy52aXNpYmxlICYmICF0aGlzLnRpbWVQaWNrZXJWaXNpYmxlKSB7XG4gICAgICAgIGlmIChsaXN0LmluZGV4T2Yoa2V5Q29kZSkgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVLZXlDb250cm9sKGtleUNvZGUpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDEzICYmIHRoaXMudXNlcklucHV0RGF0ZSA9PT0gbnVsbCAmJiB0aGlzLnVzZXJJbnB1dFRpbWUgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBFbnRlclxuICAgICAgICAgIHRoaXMuZW1pdCh0aGlzLmRhdGUsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlS2V5Q29udHJvbDogZnVuY3Rpb24gaGFuZGxlS2V5Q29udHJvbChrZXlDb2RlKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHtcbiAgICAgICAgJ3llYXInOiB7XG4gICAgICAgICAgMzg6IC00LCA0MDogNCwgMzc6IC0xLCAzOTogMSwgb2Zmc2V0OiBmdW5jdGlvbiBvZmZzZXQoZGF0ZSwgc3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgc3RlcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnbW9udGgnOiB7XG4gICAgICAgICAgMzg6IC00LCA0MDogNCwgMzc6IC0xLCAzOTogMSwgb2Zmc2V0OiBmdW5jdGlvbiBvZmZzZXQoZGF0ZSwgc3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgc3RlcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnd2Vlayc6IHtcbiAgICAgICAgICAzODogLTEsIDQwOiAxLCAzNzogLTEsIDM5OiAxLCBvZmZzZXQ6IGZ1bmN0aW9uIG9mZnNldChkYXRlLCBzdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgc3RlcCAqIDcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ2RheSc6IHtcbiAgICAgICAgICAzODogLTcsIDQwOiA3LCAzNzogLTEsIDM5OiAxLCBvZmZzZXQ6IGZ1bmN0aW9uIG9mZnNldChkYXRlLCBzdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgc3RlcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdmFyIG1vZGUgPSB0aGlzLnNlbGVjdGlvbk1vZGU7XG4gICAgICB2YXIgeWVhciA9IDMuMTUzNmUxMDtcbiAgICAgIHZhciBub3cgPSB0aGlzLmRhdGUuZ2V0VGltZSgpO1xuICAgICAgdmFyIG5ld0RhdGUgPSBuZXcgRGF0ZSh0aGlzLmRhdGUuZ2V0VGltZSgpKTtcbiAgICAgIHdoaWxlIChNYXRoLmFicyhub3cgLSBuZXdEYXRlLmdldFRpbWUoKSkgPD0geWVhcikge1xuICAgICAgICB2YXIgbWFwID0gbWFwcGluZ1ttb2RlXTtcbiAgICAgICAgbWFwLm9mZnNldChuZXdEYXRlLCBtYXBba2V5Q29kZV0pO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlID09PSAnZnVuY3Rpb24nICYmIHRoaXMuZGlzYWJsZWREYXRlKG5ld0RhdGUpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRlID0gbmV3RGF0ZTtcbiAgICAgICAgdGhpcy4kZW1pdCgncGljaycsIG5ld0RhdGUsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVZpc2libGVUaW1lQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVWaXNpYmxlVGltZUNoYW5nZSh2YWx1ZSkge1xuICAgICAgdmFyIHRpbWUgPSBPYmplY3QoZGF0ZV91dGlsX1tcInBhcnNlRGF0ZVwiXSkodmFsdWUsIHRoaXMudGltZUZvcm1hdCk7XG4gICAgICBpZiAodGltZSAmJiB0aGlzLmNoZWNrRGF0ZVdpdGhpblJhbmdlKHRpbWUpKSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5RGF0ZVwiXSkodGltZSwgdGhpcy55ZWFyLCB0aGlzLm1vbnRoLCB0aGlzLm1vbnRoRGF0ZSk7XG4gICAgICAgIHRoaXMudXNlcklucHV0VGltZSA9IG51bGw7XG4gICAgICAgIHRoaXMuJHJlZnMudGltZXBpY2tlci52YWx1ZSA9IHRoaXMuZGF0ZTtcbiAgICAgICAgdGhpcy50aW1lUGlja2VyVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVtaXQodGhpcy5kYXRlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVZpc2libGVEYXRlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVWaXNpYmxlRGF0ZUNoYW5nZSh2YWx1ZSkge1xuICAgICAgdmFyIGRhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcInBhcnNlRGF0ZVwiXSkodmFsdWUsIHRoaXMuZGF0ZUZvcm1hdCk7XG4gICAgICBpZiAoZGF0ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlID09PSAnZnVuY3Rpb24nICYmIHRoaXMuZGlzYWJsZWREYXRlKGRhdGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5VGltZVwiXSkoZGF0ZSwgdGhpcy5kYXRlLmdldEhvdXJzKCksIHRoaXMuZGF0ZS5nZXRNaW51dGVzKCksIHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCkpO1xuICAgICAgICB0aGlzLnVzZXJJbnB1dERhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2V0VmlldygpO1xuICAgICAgICB0aGlzLmVtaXQodGhpcy5kYXRlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGlzVmFsaWRWYWx1ZTogZnVuY3Rpb24gaXNWYWxpZFZhbHVlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgJiYgIWlzTmFOKHZhbHVlKSAmJiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlID09PSAnZnVuY3Rpb24nID8gIXRoaXMuZGlzYWJsZWREYXRlKHZhbHVlKSA6IHRydWUpICYmIHRoaXMuY2hlY2tEYXRlV2l0aGluUmFuZ2UodmFsdWUpO1xuICAgIH0sXG4gICAgZ2V0RGVmYXVsdFZhbHVlOiBmdW5jdGlvbiBnZXREZWZhdWx0VmFsdWUoKSB7XG4gICAgICAvLyBpZiBkZWZhdWx0LXZhbHVlIGlzIHNldCwgcmV0dXJuIGl0XG4gICAgICAvLyBvdGhlcndpc2UsIHJldHVybiBub3cgKHRoZSBtb21lbnQgdGhpcyBtZXRob2QgZ2V0cyBjYWxsZWQpXG4gICAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWUgPyBuZXcgRGF0ZSh0aGlzLmRlZmF1bHRWYWx1ZSkgOiBuZXcgRGF0ZSgpO1xuICAgIH0sXG4gICAgY2hlY2tEYXRlV2l0aGluUmFuZ2U6IGZ1bmN0aW9uIGNoZWNrRGF0ZVdpdGhpblJhbmdlKGRhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGVSYW5nZS5sZW5ndGggPiAwID8gT2JqZWN0KGRhdGVfdXRpbF9bXCJ0aW1lV2l0aGluUmFuZ2VcIl0pKGRhdGUsIHRoaXMuc2VsZWN0YWJsZVJhbmdlLCB0aGlzLmZvcm1hdCB8fCAnSEg6bW06c3MnKSA6IHRydWU7XG4gICAgfVxuICB9LFxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBUaW1lUGlja2VyOiBwYW5lbF90aW1lLCBZZWFyVGFibGU6IHllYXJfdGFibGUsIE1vbnRoVGFibGU6IG1vbnRoX3RhYmxlLCBEYXRlVGFibGU6IGRhdGVfdGFibGUsIEVsSW5wdXQ6IGlucHV0X2RlZmF1bHQuYSwgRWxCdXR0b246IGJ1dHRvbl9kZWZhdWx0LmFcbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3BwZXJDbGFzczogJycsXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdmFsdWU6ICcnLFxuICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLCAvLyB1c2UgZ2V0RGVmYXVsdFZhbHVlKCkgZm9yIHRpbWUgY29tcHV0YXRpb25cbiAgICAgIGRlZmF1bHRUaW1lOiBudWxsLFxuICAgICAgc2hvd1RpbWU6IGZhbHNlLFxuICAgICAgc2VsZWN0aW9uTW9kZTogJ2RheScsXG4gICAgICBzaG9ydGN1dHM6ICcnLFxuICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICBjdXJyZW50VmlldzogJ2RhdGUnLFxuICAgICAgZGlzYWJsZWREYXRlOiAnJyxcbiAgICAgIGNlbGxDbGFzc05hbWU6ICcnLFxuICAgICAgc2VsZWN0YWJsZVJhbmdlOiBbXSxcbiAgICAgIGZpcnN0RGF5T2ZXZWVrOiA3LFxuICAgICAgc2hvd1dlZWtOdW1iZXI6IGZhbHNlLFxuICAgICAgdGltZVBpY2tlclZpc2libGU6IGZhbHNlLFxuICAgICAgZm9ybWF0OiAnJyxcbiAgICAgIGFycm93Q29udHJvbDogZmFsc2UsXG4gICAgICB1c2VySW5wdXREYXRlOiBudWxsLFxuICAgICAgdXNlcklucHV0VGltZTogbnVsbFxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIHllYXI6IGZ1bmN0aW9uIHllYXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgfSxcbiAgICBtb250aDogZnVuY3Rpb24gbW9udGgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlLmdldE1vbnRoKCk7XG4gICAgfSxcbiAgICB3ZWVrOiBmdW5jdGlvbiB3ZWVrKCkge1xuICAgICAgcmV0dXJuIE9iamVjdChkYXRlX3V0aWxfW1wiZ2V0V2Vla051bWJlclwiXSkodGhpcy5kYXRlKTtcbiAgICB9LFxuICAgIG1vbnRoRGF0ZTogZnVuY3Rpb24gbW9udGhEYXRlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZS5nZXREYXRlKCk7XG4gICAgfSxcbiAgICBmb290ZXJWaXNpYmxlOiBmdW5jdGlvbiBmb290ZXJWaXNpYmxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd1RpbWUgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnZGF0ZXMnIHx8IHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ21vbnRocycgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAneWVhcnMnO1xuICAgIH0sXG4gICAgdmlzaWJsZVRpbWU6IGZ1bmN0aW9uIHZpc2libGVUaW1lKCkge1xuICAgICAgaWYgKHRoaXMudXNlcklucHV0VGltZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VySW5wdXRUaW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdChkYXRlX3V0aWxfW1wiZm9ybWF0RGF0ZVwiXSkodGhpcy52YWx1ZSB8fCB0aGlzLmRlZmF1bHRWYWx1ZSwgdGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHZpc2libGVEYXRlOiBmdW5jdGlvbiB2aXNpYmxlRGF0ZSgpIHtcbiAgICAgIGlmICh0aGlzLnVzZXJJbnB1dERhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlcklucHV0RGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcImZvcm1hdERhdGVcIl0pKHRoaXMudmFsdWUgfHwgdGhpcy5kZWZhdWx0VmFsdWUsIHRoaXMuZGF0ZUZvcm1hdCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB5ZWFyTGFiZWw6IGZ1bmN0aW9uIHllYXJMYWJlbCgpIHtcbiAgICAgIHZhciB5ZWFyVHJhbnNsYXRpb24gPSB0aGlzLnQoJ2VsLmRhdGVwaWNrZXIueWVhcicpO1xuICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgICB2YXIgc3RhcnRZZWFyID0gTWF0aC5mbG9vcih0aGlzLnllYXIgLyAxMCkgKiAxMDtcbiAgICAgICAgaWYgKHllYXJUcmFuc2xhdGlvbikge1xuICAgICAgICAgIHJldHVybiBzdGFydFllYXIgKyAnICcgKyB5ZWFyVHJhbnNsYXRpb24gKyAnIC0gJyArIChzdGFydFllYXIgKyA5KSArICcgJyArIHllYXJUcmFuc2xhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhcnRZZWFyICsgJyAtICcgKyAoc3RhcnRZZWFyICsgOSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy55ZWFyICsgJyAnICsgeWVhclRyYW5zbGF0aW9uO1xuICAgIH0sXG4gICAgdGltZUZvcm1hdDogZnVuY3Rpb24gdGltZUZvcm1hdCgpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1hdCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJleHRyYWN0VGltZUZvcm1hdFwiXSkodGhpcy5mb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICdISDptbTpzcyc7XG4gICAgICB9XG4gICAgfSxcbiAgICBkYXRlRm9ybWF0OiBmdW5jdGlvbiBkYXRlRm9ybWF0KCkge1xuICAgICAgaWYgKHRoaXMuZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcImV4dHJhY3REYXRlRm9ybWF0XCJdKSh0aGlzLmZvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ3l5eXktTU0tZGQnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9wYW5lbC9kYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYW5lbF9kYXRldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGRhdGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL2RhdGUudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgZGF0ZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhbmVsX2RhdGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGRhdGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yNDQwZDRlYV9yZW5kZXIsXG4gIGRhdGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yNDQwZDRlYV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGRhdGVfYXBpOyB9XG5kYXRlX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL2RhdGUudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhbmVsX2RhdGUgPSAoZGF0ZV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9wYW5lbC9kYXRlLXJhbmdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjUyODQ5YSZcbnZhciBkYXRlX3JhbmdldnVlX3R5cGVfdGVtcGxhdGVfaWRfMjY1Mjg0OWFfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwidHJhbnNpdGlvblwiLFxuICAgIHtcbiAgICAgIGF0dHJzOiB7IG5hbWU6IFwiZWwtem9vbS1pbi10b3BcIiB9LFxuICAgICAgb246IHtcbiAgICAgICAgXCJhZnRlci1sZWF2ZVwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICBfdm0uJGVtaXQoXCJkb2Rlc3Ryb3lcIilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZpc2libGUsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IFwidmlzaWJsZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1waWNrZXItcGFuZWwgZWwtZGF0ZS1yYW5nZS1waWNrZXIgZWwtcG9wcGVyXCIsXG4gICAgICAgICAgY2xhc3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJoYXMtc2lkZWJhclwiOiBfdm0uJHNsb3RzLnNpZGViYXIgfHwgX3ZtLnNob3J0Y3V0cyxcbiAgICAgICAgICAgICAgXCJoYXMtdGltZVwiOiBfdm0uc2hvd1RpbWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfdm0ucG9wcGVyQ2xhc3NcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLXBpY2tlci1wYW5lbF9fYm9keS13cmFwcGVyXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl90KFwic2lkZWJhclwiKSxcbiAgICAgICAgICAgICAgX3ZtLnNob3J0Y3V0c1xuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtcGlja2VyLXBhbmVsX19zaWRlYmFyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5zaG9ydGN1dHMsIGZ1bmN0aW9uKHNob3J0Y3V0LCBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcGlja2VyLXBhbmVsX19zaG9ydGN1dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZVNob3J0Y3V0Q2xpY2soc2hvcnRjdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3Moc2hvcnRjdXQudGV4dCkpXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXBpY2tlci1wYW5lbF9fYm9keVwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uc2hvd1RpbWVcbiAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWRhdGUtcmFuZ2UtcGlja2VyX190aW1lLWhlYWRlclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWRhdGUtcmFuZ2UtcGlja2VyX19lZGl0b3JzLXdyYXBcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC1kYXRlLXJhbmdlLXBpY2tlcl9fdGltZS1waWNrZXItd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImVsLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IFwibWluSW5wdXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1kYXRlLXJhbmdlLXBpY2tlcl9fZWRpdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0ucmFuZ2VTdGF0ZS5zZWxlY3RpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwuZGF0ZXBpY2tlci5zdGFydERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubWluVmlzaWJsZURhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlRGF0ZUlucHV0KHZhbCwgXCJtaW5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmhhbmRsZURhdGVDaGFuZ2UodmFsLCBcIm1pblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJjbGlja291dHNpZGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1jbGlja291dHNpZGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uaGFuZGxlTWluVGltZUNsb3NlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJoYW5kbGVNaW5UaW1lQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC1kYXRlLXJhbmdlLXBpY2tlcl9fdGltZS1waWNrZXItd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImVsLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1kYXRlLXJhbmdlLXBpY2tlcl9fZWRpdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0ucmFuZ2VTdGF0ZS5zZWxlY3RpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwuZGF0ZXBpY2tlci5zdGFydFRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubWluVmlzaWJsZVRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1czogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5taW5UaW1lUGlja2VyVmlzaWJsZSA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlVGltZUlucHV0KHZhbCwgXCJtaW5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmhhbmRsZVRpbWVDaGFuZ2UodmFsLCBcIm1pblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidGltZS1waWNrZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogXCJtaW5UaW1lUGlja2VyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZS1hcnJvdy1jb250cm9sXCI6IF92bS5hcnJvd0NvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBfdm0ubWluVGltZVBpY2tlclZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrOiBfdm0uaGFuZGxlTWluVGltZVBpY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VudGVkOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRyZWZzLm1pblRpbWVQaWNrZXIuZm9ybWF0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0udGltZUZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbi1hcnJvdy1yaWdodFwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVsLWRhdGUtcmFuZ2UtcGlja2VyX19lZGl0b3JzLXdyYXAgaXMtcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC1kYXRlLXJhbmdlLXBpY2tlcl9fdGltZS1waWNrZXItd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImVsLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1kYXRlLXJhbmdlLXBpY2tlcl9fZWRpdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0ucmFuZ2VTdGF0ZS5zZWxlY3RpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJlbC5kYXRlcGlja2VyLmVuZERhdGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm1heFZpc2libGVEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk6ICFfdm0ubWluRGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVEYXRlSW5wdXQodmFsLCBcIm1heFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlRGF0ZUNoYW5nZSh2YWwsIFwibWF4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcImNsaWNrb3V0c2lkZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LWNsaWNrb3V0c2lkZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oYW5kbGVNYXhUaW1lQ2xvc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImhhbmRsZU1heFRpbWVDbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVsLWRhdGUtcmFuZ2UtcGlja2VyX190aW1lLXBpY2tlci13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZWwtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWRhdGUtcmFuZ2UtcGlja2VyX19lZGl0b3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5yYW5nZVN0YXRlLnNlbGVjdGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcImVsLmRhdGVwaWNrZXIuZW5kVGltZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubWF4VmlzaWJsZVRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seTogIV92bS5taW5EYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ubWluRGF0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0ubWF4VGltZVBpY2tlclZpc2libGUgPSB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVUaW1lSW5wdXQodmFsLCBcIm1heFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlVGltZUNoYW5nZSh2YWwsIFwibWF4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0aW1lLXBpY2tlclwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBcIm1heFRpbWVQaWNrZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lLWFycm93LWNvbnRyb2xcIjogX3ZtLmFycm93Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IF92bS5tYXhUaW1lUGlja2VyVmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2s6IF92bS5oYW5kbGVNYXhUaW1lUGljayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdW50ZWQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHJlZnMubWF4VGltZVBpY2tlci5mb3JtYXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS50aW1lRm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICBcImVsLXBpY2tlci1wYW5lbF9fY29udGVudCBlbC1kYXRlLXJhbmdlLXBpY2tlcl9fY29udGVudCBpcy1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2hlYWRlclwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC1waWNrZXItcGFuZWxfX2ljb24tYnRuIGVsLWljb24tZC1hcnJvdy1sZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmxlZnRQcmV2WWVhciB9XG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJidXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1pY29uLWFycm93LWxlZnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ubGVmdFByZXZNb250aCB9XG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnVubGlua1BhbmVsc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVsLXBpY2tlci1wYW5lbF9faWNvbi1idG4gZWwtaWNvbi1kLWFycm93LXJpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpcy1kaXNhYmxlZFwiOiAhX3ZtLmVuYWJsZVllYXJBcnJvdyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0uZW5hYmxlWWVhckFycm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmxlZnROZXh0WWVhciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgIF92bS51bmxpbmtQYW5lbHNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJidXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC1waWNrZXItcGFuZWxfX2ljb24tYnRuIGVsLWljb24tYXJyb3ctcmlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogeyBcImlzLWRpc2FibGVkXCI6ICFfdm0uZW5hYmxlTW9udGhBcnJvdyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0uZW5hYmxlTW9udGhBcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5sZWZ0TmV4dE1vbnRoIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgW192bS5fdihfdm0uX3MoX3ZtLmxlZnRMYWJlbCkpXSlcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGF0ZS10YWJsZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2VsZWN0aW9uLW1vZGVcIjogXCJyYW5nZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogX3ZtLmxlZnREYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0LXZhbHVlXCI6IF92bS5kZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1pbi1kYXRlXCI6IF92bS5taW5EYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtZGF0ZVwiOiBfdm0ubWF4RGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmFuZ2Utc3RhdGVcIjogX3ZtLnJhbmdlU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpc2FibGVkLWRhdGVcIjogX3ZtLmRpc2FibGVkRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY2VsbC1jbGFzcy1uYW1lXCI6IF92bS5jZWxsQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmaXJzdC1kYXktb2Ytd2Vla1wiOiBfdm0uZmlyc3REYXlPZldlZWtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VyYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVJhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljazogX3ZtLmhhbmRsZVJhbmdlUGlja1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19jb250ZW50IGVsLWRhdGUtcmFuZ2UtcGlja2VyX19jb250ZW50IGlzLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2hlYWRlclwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0udW5saW5rUGFuZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1pY29uLWQtYXJyb3ctbGVmdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7IFwiaXMtZGlzYWJsZWRcIjogIV92bS5lbmFibGVZZWFyQXJyb3cgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLmVuYWJsZVllYXJBcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5yaWdodFByZXZZZWFyIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnVubGlua1BhbmVsc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVsLXBpY2tlci1wYW5lbF9faWNvbi1idG4gZWwtaWNvbi1hcnJvdy1sZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpcy1kaXNhYmxlZFwiOiAhX3ZtLmVuYWJsZU1vbnRoQXJyb3cgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLmVuYWJsZU1vbnRoQXJyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ucmlnaHRQcmV2TW9udGggfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC1waWNrZXItcGFuZWxfX2ljb24tYnRuIGVsLWljb24tZC1hcnJvdy1yaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJidXR0b25cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5yaWdodE5leHRZZWFyIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC1waWNrZXItcGFuZWxfX2ljb24tYnRuIGVsLWljb24tYXJyb3ctcmlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ucmlnaHROZXh0TW9udGggfVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIFtfdm0uX3YoX3ZtLl9zKF92bS5yaWdodExhYmVsKSldKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJkYXRlLXRhYmxlXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWxlY3Rpb24tbW9kZVwiOiBcInJhbmdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBfdm0ucmlnaHREYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0LXZhbHVlXCI6IF92bS5kZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1pbi1kYXRlXCI6IF92bS5taW5EYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtZGF0ZVwiOiBfdm0ubWF4RGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmFuZ2Utc3RhdGVcIjogX3ZtLnJhbmdlU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpc2FibGVkLWRhdGVcIjogX3ZtLmRpc2FibGVkRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY2VsbC1jbGFzcy1uYW1lXCI6IF92bS5jZWxsQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmaXJzdC1kYXktb2Ytd2Vla1wiOiBfdm0uZmlyc3REYXlPZldlZWtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VyYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVJhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljazogX3ZtLmhhbmRsZVJhbmdlUGlja1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5zaG93VGltZVxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtcGlja2VyLXBhbmVsX19mb290ZXJcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImVsLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcGlja2VyLXBhbmVsX19saW5rLWJ0blwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNpemU6IFwibWluaVwiLCB0eXBlOiBcInRleHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGFuZGxlQ2xlYXIgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS50KFwiZWwuZGF0ZXBpY2tlci5jbGVhclwiKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZWwtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1waWNrZXItcGFuZWxfX2xpbmstYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJtaW5pXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmJ0bkRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQ29uZmlybShmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLnQoXCJlbC5kYXRlcGlja2VyLmNvbmZpcm1cIikpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgIF1cbiAgICAgIClcbiAgICBdXG4gIClcbn1cbnZhciBkYXRlX3JhbmdldnVlX3R5cGVfdGVtcGxhdGVfaWRfMjY1Mjg0OWFfc3RhdGljUmVuZGVyRm5zID0gW11cbmRhdGVfcmFuZ2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yNjUyODQ5YV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9wYW5lbC9kYXRlLXJhbmdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjUyODQ5YSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL2RhdGUtcmFuZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cblxudmFyIGRhdGVfcmFuZ2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19jYWxjRGVmYXVsdFZhbHVlID0gZnVuY3Rpb24gY2FsY0RlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZGVmYXVsdFZhbHVlKSkge1xuICAgIHJldHVybiBbbmV3IERhdGUoZGVmYXVsdFZhbHVlWzBdKSwgbmV3IERhdGUoZGVmYXVsdFZhbHVlWzFdKV07XG4gIH0gZWxzZSBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuIFtuZXcgRGF0ZShkZWZhdWx0VmFsdWUpLCBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHREYXRlXCJdKShuZXcgRGF0ZShkZWZhdWx0VmFsdWUpLCAxKV07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtuZXcgRGF0ZSgpLCBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHREYXRlXCJdKShuZXcgRGF0ZSgpLCAxKV07XG4gIH1cbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGRhdGVfcmFuZ2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBtaXhpbnM6IFtsb2NhbGVfZGVmYXVsdC5hXSxcblxuICBkaXJlY3RpdmVzOiB7IENsaWNrb3V0c2lkZTogY2xpY2tvdXRzaWRlX2RlZmF1bHQuYSB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgYnRuRGlzYWJsZWQ6IGZ1bmN0aW9uIGJ0bkRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuICEodGhpcy5taW5EYXRlICYmIHRoaXMubWF4RGF0ZSAmJiAhdGhpcy5zZWxlY3RpbmcgJiYgdGhpcy5pc1ZhbGlkVmFsdWUoW3RoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlXSkpO1xuICAgIH0sXG4gICAgbGVmdExhYmVsOiBmdW5jdGlvbiBsZWZ0TGFiZWwoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sZWZ0RGF0ZS5nZXRGdWxsWWVhcigpICsgJyAnICsgdGhpcy50KCdlbC5kYXRlcGlja2VyLnllYXInKSArICcgJyArIHRoaXMudCgnZWwuZGF0ZXBpY2tlci5tb250aCcgKyAodGhpcy5sZWZ0RGF0ZS5nZXRNb250aCgpICsgMSkpO1xuICAgIH0sXG4gICAgcmlnaHRMYWJlbDogZnVuY3Rpb24gcmlnaHRMYWJlbCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJpZ2h0RGF0ZS5nZXRGdWxsWWVhcigpICsgJyAnICsgdGhpcy50KCdlbC5kYXRlcGlja2VyLnllYXInKSArICcgJyArIHRoaXMudCgnZWwuZGF0ZXBpY2tlci5tb250aCcgKyAodGhpcy5yaWdodERhdGUuZ2V0TW9udGgoKSArIDEpKTtcbiAgICB9LFxuICAgIGxlZnRZZWFyOiBmdW5jdGlvbiBsZWZ0WWVhcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxlZnREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgfSxcbiAgICBsZWZ0TW9udGg6IGZ1bmN0aW9uIGxlZnRNb250aCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxlZnREYXRlLmdldE1vbnRoKCk7XG4gICAgfSxcbiAgICBsZWZ0TW9udGhEYXRlOiBmdW5jdGlvbiBsZWZ0TW9udGhEYXRlKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGVmdERhdGUuZ2V0RGF0ZSgpO1xuICAgIH0sXG4gICAgcmlnaHRZZWFyOiBmdW5jdGlvbiByaWdodFllYXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yaWdodERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9LFxuICAgIHJpZ2h0TW9udGg6IGZ1bmN0aW9uIHJpZ2h0TW9udGgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yaWdodERhdGUuZ2V0TW9udGgoKTtcbiAgICB9LFxuICAgIHJpZ2h0TW9udGhEYXRlOiBmdW5jdGlvbiByaWdodE1vbnRoRGF0ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJpZ2h0RGF0ZS5nZXREYXRlKCk7XG4gICAgfSxcbiAgICBtaW5WaXNpYmxlRGF0ZTogZnVuY3Rpb24gbWluVmlzaWJsZURhdGUoKSB7XG4gICAgICBpZiAodGhpcy5kYXRlVXNlcklucHV0Lm1pbiAhPT0gbnVsbCkgcmV0dXJuIHRoaXMuZGF0ZVVzZXJJbnB1dC5taW47XG4gICAgICBpZiAodGhpcy5taW5EYXRlKSByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJmb3JtYXREYXRlXCJdKSh0aGlzLm1pbkRhdGUsIHRoaXMuZGF0ZUZvcm1hdCk7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSxcbiAgICBtYXhWaXNpYmxlRGF0ZTogZnVuY3Rpb24gbWF4VmlzaWJsZURhdGUoKSB7XG4gICAgICBpZiAodGhpcy5kYXRlVXNlcklucHV0Lm1heCAhPT0gbnVsbCkgcmV0dXJuIHRoaXMuZGF0ZVVzZXJJbnB1dC5tYXg7XG4gICAgICBpZiAodGhpcy5tYXhEYXRlIHx8IHRoaXMubWluRGF0ZSkgcmV0dXJuIE9iamVjdChkYXRlX3V0aWxfW1wiZm9ybWF0RGF0ZVwiXSkodGhpcy5tYXhEYXRlIHx8IHRoaXMubWluRGF0ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICAgIG1pblZpc2libGVUaW1lOiBmdW5jdGlvbiBtaW5WaXNpYmxlVGltZSgpIHtcbiAgICAgIGlmICh0aGlzLnRpbWVVc2VySW5wdXQubWluICE9PSBudWxsKSByZXR1cm4gdGhpcy50aW1lVXNlcklucHV0Lm1pbjtcbiAgICAgIGlmICh0aGlzLm1pbkRhdGUpIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcImZvcm1hdERhdGVcIl0pKHRoaXMubWluRGF0ZSwgdGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICAgIG1heFZpc2libGVUaW1lOiBmdW5jdGlvbiBtYXhWaXNpYmxlVGltZSgpIHtcbiAgICAgIGlmICh0aGlzLnRpbWVVc2VySW5wdXQubWF4ICE9PSBudWxsKSByZXR1cm4gdGhpcy50aW1lVXNlcklucHV0Lm1heDtcbiAgICAgIGlmICh0aGlzLm1heERhdGUgfHwgdGhpcy5taW5EYXRlKSByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJmb3JtYXREYXRlXCJdKSh0aGlzLm1heERhdGUgfHwgdGhpcy5taW5EYXRlLCB0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0sXG4gICAgdGltZUZvcm1hdDogZnVuY3Rpb24gdGltZUZvcm1hdCgpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1hdCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJleHRyYWN0VGltZUZvcm1hdFwiXSkodGhpcy5mb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICdISDptbTpzcyc7XG4gICAgICB9XG4gICAgfSxcbiAgICBkYXRlRm9ybWF0OiBmdW5jdGlvbiBkYXRlRm9ybWF0KCkge1xuICAgICAgaWYgKHRoaXMuZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcImV4dHJhY3REYXRlRm9ybWF0XCJdKSh0aGlzLmZvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ3l5eXktTU0tZGQnO1xuICAgICAgfVxuICAgIH0sXG4gICAgZW5hYmxlTW9udGhBcnJvdzogZnVuY3Rpb24gZW5hYmxlTW9udGhBcnJvdygpIHtcbiAgICAgIHZhciBuZXh0TW9udGggPSAodGhpcy5sZWZ0TW9udGggKyAxKSAlIDEyO1xuICAgICAgdmFyIHllYXJPZmZzZXQgPSB0aGlzLmxlZnRNb250aCArIDEgPj0gMTIgPyAxIDogMDtcbiAgICAgIHJldHVybiB0aGlzLnVubGlua1BhbmVscyAmJiBuZXcgRGF0ZSh0aGlzLmxlZnRZZWFyICsgeWVhck9mZnNldCwgbmV4dE1vbnRoKSA8IG5ldyBEYXRlKHRoaXMucmlnaHRZZWFyLCB0aGlzLnJpZ2h0TW9udGgpO1xuICAgIH0sXG4gICAgZW5hYmxlWWVhckFycm93OiBmdW5jdGlvbiBlbmFibGVZZWFyQXJyb3coKSB7XG4gICAgICByZXR1cm4gdGhpcy51bmxpbmtQYW5lbHMgJiYgdGhpcy5yaWdodFllYXIgKiAxMiArIHRoaXMucmlnaHRNb250aCAtICh0aGlzLmxlZnRZZWFyICogMTIgKyB0aGlzLmxlZnRNb250aCArIDEpID49IDEyO1xuICAgIH1cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3BwZXJDbGFzczogJycsXG4gICAgICB2YWx1ZTogW10sXG4gICAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgICBkZWZhdWx0VGltZTogbnVsbCxcbiAgICAgIG1pbkRhdGU6ICcnLFxuICAgICAgbWF4RGF0ZTogJycsXG4gICAgICBsZWZ0RGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIHJpZ2h0RGF0ZTogT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0TW9udGhcIl0pKG5ldyBEYXRlKCkpLFxuICAgICAgcmFuZ2VTdGF0ZToge1xuICAgICAgICBlbmREYXRlOiBudWxsLFxuICAgICAgICBzZWxlY3Rpbmc6IGZhbHNlLFxuICAgICAgICByb3c6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbFxuICAgICAgfSxcbiAgICAgIHNob3dUaW1lOiBmYWxzZSxcbiAgICAgIHNob3J0Y3V0czogJycsXG4gICAgICB2aXNpYmxlOiAnJyxcbiAgICAgIGRpc2FibGVkRGF0ZTogJycsXG4gICAgICBjZWxsQ2xhc3NOYW1lOiAnJyxcbiAgICAgIGZpcnN0RGF5T2ZXZWVrOiA3LFxuICAgICAgbWluVGltZVBpY2tlclZpc2libGU6IGZhbHNlLFxuICAgICAgbWF4VGltZVBpY2tlclZpc2libGU6IGZhbHNlLFxuICAgICAgZm9ybWF0OiAnJyxcbiAgICAgIGFycm93Q29udHJvbDogZmFsc2UsXG4gICAgICB1bmxpbmtQYW5lbHM6IGZhbHNlLFxuICAgICAgZGF0ZVVzZXJJbnB1dDoge1xuICAgICAgICBtaW46IG51bGwsXG4gICAgICAgIG1heDogbnVsbFxuICAgICAgfSxcbiAgICAgIHRpbWVVc2VySW5wdXQ6IHtcbiAgICAgICAgbWluOiBudWxsLFxuICAgICAgICBtYXg6IG51bGxcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG5cbiAgd2F0Y2g6IHtcbiAgICBtaW5EYXRlOiBmdW5jdGlvbiBtaW5EYXRlKHZhbCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdGhpcy5kYXRlVXNlcklucHV0Lm1pbiA9IG51bGw7XG4gICAgICB0aGlzLnRpbWVVc2VySW5wdXQubWluID0gbnVsbDtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLiRyZWZzLm1heFRpbWVQaWNrZXIgJiYgX3RoaXMubWF4RGF0ZSAmJiBfdGhpcy5tYXhEYXRlIDwgX3RoaXMubWluRGF0ZSkge1xuICAgICAgICAgIHZhciBmb3JtYXQgPSAnSEg6bW06c3MnO1xuICAgICAgICAgIF90aGlzLiRyZWZzLm1heFRpbWVQaWNrZXIuc2VsZWN0YWJsZVJhbmdlID0gW1tPYmplY3QoZGF0ZV91dGlsX1tcInBhcnNlRGF0ZVwiXSkoT2JqZWN0KGRhdGVfdXRpbF9bXCJmb3JtYXREYXRlXCJdKShfdGhpcy5taW5EYXRlLCBmb3JtYXQpLCBmb3JtYXQpLCBPYmplY3QoZGF0ZV91dGlsX1tcInBhcnNlRGF0ZVwiXSkoJzIzOjU5OjU5JywgZm9ybWF0KV1dO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICh2YWwgJiYgdGhpcy4kcmVmcy5taW5UaW1lUGlja2VyKSB7XG4gICAgICAgIHRoaXMuJHJlZnMubWluVGltZVBpY2tlci5kYXRlID0gdmFsO1xuICAgICAgICB0aGlzLiRyZWZzLm1pblRpbWVQaWNrZXIudmFsdWUgPSB2YWw7XG4gICAgICB9XG4gICAgfSxcbiAgICBtYXhEYXRlOiBmdW5jdGlvbiBtYXhEYXRlKHZhbCkge1xuICAgICAgdGhpcy5kYXRlVXNlcklucHV0Lm1heCA9IG51bGw7XG4gICAgICB0aGlzLnRpbWVVc2VySW5wdXQubWF4ID0gbnVsbDtcbiAgICAgIGlmICh2YWwgJiYgdGhpcy4kcmVmcy5tYXhUaW1lUGlja2VyKSB7XG4gICAgICAgIHRoaXMuJHJlZnMubWF4VGltZVBpY2tlci5kYXRlID0gdmFsO1xuICAgICAgICB0aGlzLiRyZWZzLm1heFRpbWVQaWNrZXIudmFsdWUgPSB2YWw7XG4gICAgICB9XG4gICAgfSxcbiAgICBtaW5UaW1lUGlja2VyVmlzaWJsZTogZnVuY3Rpb24gbWluVGltZVBpY2tlclZpc2libGUodmFsKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKHZhbCkge1xuICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLiRyZWZzLm1pblRpbWVQaWNrZXIuZGF0ZSA9IF90aGlzMi5taW5EYXRlO1xuICAgICAgICAgIF90aGlzMi4kcmVmcy5taW5UaW1lUGlja2VyLnZhbHVlID0gX3RoaXMyLm1pbkRhdGU7XG4gICAgICAgICAgX3RoaXMyLiRyZWZzLm1pblRpbWVQaWNrZXIuYWRqdXN0U3Bpbm5lcnMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBtYXhUaW1lUGlja2VyVmlzaWJsZTogZnVuY3Rpb24gbWF4VGltZVBpY2tlclZpc2libGUodmFsKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgaWYgKHZhbCkge1xuICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLiRyZWZzLm1heFRpbWVQaWNrZXIuZGF0ZSA9IF90aGlzMy5tYXhEYXRlO1xuICAgICAgICAgIF90aGlzMy4kcmVmcy5tYXhUaW1lUGlja2VyLnZhbHVlID0gX3RoaXMzLm1heERhdGU7XG4gICAgICAgICAgX3RoaXMzLiRyZWZzLm1heFRpbWVQaWNrZXIuYWRqdXN0U3Bpbm5lcnMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUobmV3VmFsKSB7XG4gICAgICBpZiAoIW5ld1ZhbCkge1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLm1heERhdGUgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5ld1ZhbCkpIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJpc0RhdGVcIl0pKG5ld1ZhbFswXSkgPyBuZXcgRGF0ZShuZXdWYWxbMF0pIDogbnVsbDtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJpc0RhdGVcIl0pKG5ld1ZhbFsxXSkgPyBuZXcgRGF0ZShuZXdWYWxbMV0pIDogbnVsbDtcbiAgICAgICAgaWYgKHRoaXMubWluRGF0ZSkge1xuICAgICAgICAgIHRoaXMubGVmdERhdGUgPSB0aGlzLm1pbkRhdGU7XG4gICAgICAgICAgaWYgKHRoaXMudW5saW5rUGFuZWxzICYmIHRoaXMubWF4RGF0ZSkge1xuICAgICAgICAgICAgdmFyIG1pbkRhdGVZZWFyID0gdGhpcy5taW5EYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICB2YXIgbWluRGF0ZU1vbnRoID0gdGhpcy5taW5EYXRlLmdldE1vbnRoKCk7XG4gICAgICAgICAgICB2YXIgbWF4RGF0ZVllYXIgPSB0aGlzLm1heERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIHZhciBtYXhEYXRlTW9udGggPSB0aGlzLm1heERhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHREYXRlID0gbWluRGF0ZVllYXIgPT09IG1heERhdGVZZWFyICYmIG1pbkRhdGVNb250aCA9PT0gbWF4RGF0ZU1vbnRoID8gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0TW9udGhcIl0pKHRoaXMubWF4RGF0ZSkgOiB0aGlzLm1heERhdGU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmlnaHREYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0TW9udGhcIl0pKHRoaXMubGVmdERhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxlZnREYXRlID0gZGF0ZV9yYW5nZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2NhbGNEZWZhdWx0VmFsdWUodGhpcy5kZWZhdWx0VmFsdWUpWzBdO1xuICAgICAgICAgIHRoaXMucmlnaHREYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0TW9udGhcIl0pKHRoaXMubGVmdERhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IGZ1bmN0aW9uIGRlZmF1bHRWYWx1ZSh2YWwpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICB2YXIgX2NhbGNEZWZhdWx0VmFsdWUgPSBkYXRlX3JhbmdldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfY2FsY0RlZmF1bHRWYWx1ZSh2YWwpLFxuICAgICAgICAgICAgbGVmdCA9IF9jYWxjRGVmYXVsdFZhbHVlWzBdLFxuICAgICAgICAgICAgcmlnaHQgPSBfY2FsY0RlZmF1bHRWYWx1ZVsxXTtcblxuICAgICAgICB0aGlzLmxlZnREYXRlID0gbGVmdDtcbiAgICAgICAgdGhpcy5yaWdodERhdGUgPSB2YWwgJiYgdmFsWzFdICYmIHRoaXMudW5saW5rUGFuZWxzID8gcmlnaHQgOiBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRNb250aFwiXSkodGhpcy5sZWZ0RGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVDbGVhcjogZnVuY3Rpb24gaGFuZGxlQ2xlYXIoKSB7XG4gICAgICB0aGlzLm1pbkRhdGUgPSBudWxsO1xuICAgICAgdGhpcy5tYXhEYXRlID0gbnVsbDtcbiAgICAgIHRoaXMubGVmdERhdGUgPSBkYXRlX3JhbmdldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfY2FsY0RlZmF1bHRWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSlbMF07XG4gICAgICB0aGlzLnJpZ2h0RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibmV4dE1vbnRoXCJdKSh0aGlzLmxlZnREYXRlKTtcbiAgICAgIHRoaXMuJGVtaXQoJ3BpY2snLCBudWxsKTtcbiAgICB9LFxuICAgIGhhbmRsZUNoYW5nZVJhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VSYW5nZSh2YWwpIHtcbiAgICAgIHRoaXMubWluRGF0ZSA9IHZhbC5taW5EYXRlO1xuICAgICAgdGhpcy5tYXhEYXRlID0gdmFsLm1heERhdGU7XG4gICAgICB0aGlzLnJhbmdlU3RhdGUgPSB2YWwucmFuZ2VTdGF0ZTtcbiAgICB9LFxuICAgIGhhbmRsZURhdGVJbnB1dDogZnVuY3Rpb24gaGFuZGxlRGF0ZUlucHV0KHZhbHVlLCB0eXBlKSB7XG4gICAgICB0aGlzLmRhdGVVc2VySW5wdXRbdHlwZV0gPSB2YWx1ZTtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggIT09IHRoaXMuZGF0ZUZvcm1hdC5sZW5ndGgpIHJldHVybjtcbiAgICAgIHZhciBwYXJzZWRWYWx1ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wicGFyc2VEYXRlXCJdKSh2YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcblxuICAgICAgaWYgKHBhcnNlZFZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGUgPT09ICdmdW5jdGlvbicgJiYgdGhpcy5kaXNhYmxlZERhdGUobmV3IERhdGUocGFyc2VkVmFsdWUpKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ21pbicpIHtcbiAgICAgICAgICB0aGlzLm1pbkRhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm1vZGlmeURhdGVcIl0pKHRoaXMubWluRGF0ZSB8fCBuZXcgRGF0ZSgpLCBwYXJzZWRWYWx1ZS5nZXRGdWxsWWVhcigpLCBwYXJzZWRWYWx1ZS5nZXRNb250aCgpLCBwYXJzZWRWYWx1ZS5nZXREYXRlKCkpO1xuICAgICAgICAgIHRoaXMubGVmdERhdGUgPSBuZXcgRGF0ZShwYXJzZWRWYWx1ZSk7XG4gICAgICAgICAgaWYgKCF0aGlzLnVubGlua1BhbmVscykge1xuICAgICAgICAgICAgdGhpcy5yaWdodERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRNb250aFwiXSkodGhpcy5sZWZ0RGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWF4RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5RGF0ZVwiXSkodGhpcy5tYXhEYXRlIHx8IG5ldyBEYXRlKCksIHBhcnNlZFZhbHVlLmdldEZ1bGxZZWFyKCksIHBhcnNlZFZhbHVlLmdldE1vbnRoKCksIHBhcnNlZFZhbHVlLmdldERhdGUoKSk7XG4gICAgICAgICAgdGhpcy5yaWdodERhdGUgPSBuZXcgRGF0ZShwYXJzZWRWYWx1ZSk7XG4gICAgICAgICAgaWYgKCF0aGlzLnVubGlua1BhbmVscykge1xuICAgICAgICAgICAgdGhpcy5sZWZ0RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wicHJldk1vbnRoXCJdKShwYXJzZWRWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVEYXRlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVEYXRlQ2hhbmdlKHZhbHVlLCB0eXBlKSB7XG4gICAgICB2YXIgcGFyc2VkVmFsdWUgPSBPYmplY3QoZGF0ZV91dGlsX1tcInBhcnNlRGF0ZVwiXSkodmFsdWUsIHRoaXMuZGF0ZUZvcm1hdCk7XG4gICAgICBpZiAocGFyc2VkVmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtaW4nKSB7XG4gICAgICAgICAgdGhpcy5taW5EYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlEYXRlXCJdKSh0aGlzLm1pbkRhdGUsIHBhcnNlZFZhbHVlLmdldEZ1bGxZZWFyKCksIHBhcnNlZFZhbHVlLmdldE1vbnRoKCksIHBhcnNlZFZhbHVlLmdldERhdGUoKSk7XG4gICAgICAgICAgaWYgKHRoaXMubWluRGF0ZSA+IHRoaXMubWF4RGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5tYXhEYXRlID0gdGhpcy5taW5EYXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1heERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm1vZGlmeURhdGVcIl0pKHRoaXMubWF4RGF0ZSwgcGFyc2VkVmFsdWUuZ2V0RnVsbFllYXIoKSwgcGFyc2VkVmFsdWUuZ2V0TW9udGgoKSwgcGFyc2VkVmFsdWUuZ2V0RGF0ZSgpKTtcbiAgICAgICAgICBpZiAodGhpcy5tYXhEYXRlIDwgdGhpcy5taW5EYXRlKSB7XG4gICAgICAgICAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLm1heERhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVUaW1lSW5wdXQ6IGZ1bmN0aW9uIGhhbmRsZVRpbWVJbnB1dCh2YWx1ZSwgdHlwZSkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIHRoaXMudGltZVVzZXJJbnB1dFt0eXBlXSA9IHZhbHVlO1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCAhPT0gdGhpcy50aW1lRm9ybWF0Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgdmFyIHBhcnNlZFZhbHVlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJwYXJzZURhdGVcIl0pKHZhbHVlLCB0aGlzLnRpbWVGb3JtYXQpO1xuXG4gICAgICBpZiAocGFyc2VkVmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtaW4nKSB7XG4gICAgICAgICAgdGhpcy5taW5EYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlUaW1lXCJdKSh0aGlzLm1pbkRhdGUsIHBhcnNlZFZhbHVlLmdldEhvdXJzKCksIHBhcnNlZFZhbHVlLmdldE1pbnV0ZXMoKSwgcGFyc2VkVmFsdWUuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kcmVmcy5taW5UaW1lUGlja2VyLmFkanVzdFNwaW5uZXJzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tYXhEYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlUaW1lXCJdKSh0aGlzLm1heERhdGUsIHBhcnNlZFZhbHVlLmdldEhvdXJzKCksIHBhcnNlZFZhbHVlLmdldE1pbnV0ZXMoKSwgcGFyc2VkVmFsdWUuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kcmVmcy5tYXhUaW1lUGlja2VyLmFkanVzdFNwaW5uZXJzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVRpbWVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVRpbWVDaGFuZ2UodmFsdWUsIHR5cGUpIHtcbiAgICAgIHZhciBwYXJzZWRWYWx1ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wicGFyc2VEYXRlXCJdKSh2YWx1ZSwgdGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIGlmIChwYXJzZWRWYWx1ZSkge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ21pbicpIHtcbiAgICAgICAgICB0aGlzLm1pbkRhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm1vZGlmeVRpbWVcIl0pKHRoaXMubWluRGF0ZSwgcGFyc2VkVmFsdWUuZ2V0SG91cnMoKSwgcGFyc2VkVmFsdWUuZ2V0TWludXRlcygpLCBwYXJzZWRWYWx1ZS5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgIGlmICh0aGlzLm1pbkRhdGUgPiB0aGlzLm1heERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMubWF4RGF0ZSA9IHRoaXMubWluRGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy4kcmVmcy5taW5UaW1lUGlja2VyLnZhbHVlID0gdGhpcy5taW5EYXRlO1xuICAgICAgICAgIHRoaXMubWluVGltZVBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1heERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm1vZGlmeVRpbWVcIl0pKHRoaXMubWF4RGF0ZSwgcGFyc2VkVmFsdWUuZ2V0SG91cnMoKSwgcGFyc2VkVmFsdWUuZ2V0TWludXRlcygpLCBwYXJzZWRWYWx1ZS5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgIGlmICh0aGlzLm1heERhdGUgPCB0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZSA9IHRoaXMubWF4RGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy4kcmVmcy5tYXhUaW1lUGlja2VyLnZhbHVlID0gdGhpcy5taW5EYXRlO1xuICAgICAgICAgIHRoaXMubWF4VGltZVBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlUmFuZ2VQaWNrOiBmdW5jdGlvbiBoYW5kbGVSYW5nZVBpY2sodmFsKSB7XG4gICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgdmFyIGNsb3NlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuXG4gICAgICB2YXIgZGVmYXVsdFRpbWUgPSB0aGlzLmRlZmF1bHRUaW1lIHx8IFtdO1xuICAgICAgdmFyIG1pbkRhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm1vZGlmeVdpdGhUaW1lU3RyaW5nXCJdKSh2YWwubWluRGF0ZSwgZGVmYXVsdFRpbWVbMF0pO1xuICAgICAgdmFyIG1heERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm1vZGlmeVdpdGhUaW1lU3RyaW5nXCJdKSh2YWwubWF4RGF0ZSwgZGVmYXVsdFRpbWVbMV0pO1xuXG4gICAgICBpZiAodGhpcy5tYXhEYXRlID09PSBtYXhEYXRlICYmIHRoaXMubWluRGF0ZSA9PT0gbWluRGF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm9uUGljayAmJiB0aGlzLm9uUGljayh2YWwpO1xuICAgICAgdGhpcy5tYXhEYXRlID0gbWF4RGF0ZTtcbiAgICAgIHRoaXMubWluRGF0ZSA9IG1pbkRhdGU7XG5cbiAgICAgIC8vIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9FbGVtZUZFL2VsZW1lbnQvaXNzdWVzLzc1MzksIHNob3VsZCByZW1vdmUgdGhpcyBibG9jayB3aGVuIHdlIGRvbid0IGhhdmUgdG8gY2FyZSBhYm91dCBDaHJvbWl1bSA1NSAtIDU3XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXM1Lm1heERhdGUgPSBtYXhEYXRlO1xuICAgICAgICBfdGhpczUubWluRGF0ZSA9IG1pbkRhdGU7XG4gICAgICB9LCAxMCk7XG4gICAgICBpZiAoIWNsb3NlIHx8IHRoaXMuc2hvd1RpbWUpIHJldHVybjtcbiAgICAgIHRoaXMuaGFuZGxlQ29uZmlybSgpO1xuICAgIH0sXG4gICAgaGFuZGxlU2hvcnRjdXRDbGljazogZnVuY3Rpb24gaGFuZGxlU2hvcnRjdXRDbGljayhzaG9ydGN1dCkge1xuICAgICAgaWYgKHNob3J0Y3V0Lm9uQ2xpY2spIHtcbiAgICAgICAgc2hvcnRjdXQub25DbGljayh0aGlzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZU1pblRpbWVQaWNrOiBmdW5jdGlvbiBoYW5kbGVNaW5UaW1lUGljayh2YWx1ZSwgdmlzaWJsZSwgZmlyc3QpIHtcbiAgICAgIHRoaXMubWluRGF0ZSA9IHRoaXMubWluRGF0ZSB8fCBuZXcgRGF0ZSgpO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMubWluRGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5VGltZVwiXSkodGhpcy5taW5EYXRlLCB2YWx1ZS5nZXRIb3VycygpLCB2YWx1ZS5nZXRNaW51dGVzKCksIHZhbHVlLmdldFNlY29uZHMoKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgdGhpcy5taW5UaW1lUGlja2VyVmlzaWJsZSA9IHZpc2libGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5tYXhEYXRlIHx8IHRoaXMubWF4RGF0ZSAmJiB0aGlzLm1heERhdGUuZ2V0VGltZSgpIDwgdGhpcy5taW5EYXRlLmdldFRpbWUoKSkge1xuICAgICAgICB0aGlzLm1heERhdGUgPSBuZXcgRGF0ZSh0aGlzLm1pbkRhdGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlTWluVGltZUNsb3NlOiBmdW5jdGlvbiBoYW5kbGVNaW5UaW1lQ2xvc2UoKSB7XG4gICAgICB0aGlzLm1pblRpbWVQaWNrZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgfSxcbiAgICBoYW5kbGVNYXhUaW1lUGljazogZnVuY3Rpb24gaGFuZGxlTWF4VGltZVBpY2sodmFsdWUsIHZpc2libGUsIGZpcnN0KSB7XG4gICAgICBpZiAodGhpcy5tYXhEYXRlICYmIHZhbHVlKSB7XG4gICAgICAgIHRoaXMubWF4RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5VGltZVwiXSkodGhpcy5tYXhEYXRlLCB2YWx1ZS5nZXRIb3VycygpLCB2YWx1ZS5nZXRNaW51dGVzKCksIHZhbHVlLmdldFNlY29uZHMoKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgdGhpcy5tYXhUaW1lUGlja2VyVmlzaWJsZSA9IHZpc2libGU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm1heERhdGUgJiYgdGhpcy5taW5EYXRlICYmIHRoaXMubWluRGF0ZS5nZXRUaW1lKCkgPiB0aGlzLm1heERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgIHRoaXMubWluRGF0ZSA9IG5ldyBEYXRlKHRoaXMubWF4RGF0ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVNYXhUaW1lQ2xvc2U6IGZ1bmN0aW9uIGhhbmRsZU1heFRpbWVDbG9zZSgpIHtcbiAgICAgIHRoaXMubWF4VGltZVBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICB9LFxuXG5cbiAgICAvLyBsZWZ0UHJldiosIHJpZ2h0TmV4dCogbmVlZCB0byB0YWtlIGNhcmUgb2YgYHVubGlua1BhbmVsc2BcbiAgICBsZWZ0UHJldlllYXI6IGZ1bmN0aW9uIGxlZnRQcmV2WWVhcigpIHtcbiAgICAgIHRoaXMubGVmdERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcInByZXZZZWFyXCJdKSh0aGlzLmxlZnREYXRlKTtcbiAgICAgIGlmICghdGhpcy51bmxpbmtQYW5lbHMpIHtcbiAgICAgICAgdGhpcy5yaWdodERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRNb250aFwiXSkodGhpcy5sZWZ0RGF0ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBsZWZ0UHJldk1vbnRoOiBmdW5jdGlvbiBsZWZ0UHJldk1vbnRoKCkge1xuICAgICAgdGhpcy5sZWZ0RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wicHJldk1vbnRoXCJdKSh0aGlzLmxlZnREYXRlKTtcbiAgICAgIGlmICghdGhpcy51bmxpbmtQYW5lbHMpIHtcbiAgICAgICAgdGhpcy5yaWdodERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRNb250aFwiXSkodGhpcy5sZWZ0RGF0ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICByaWdodE5leHRZZWFyOiBmdW5jdGlvbiByaWdodE5leHRZZWFyKCkge1xuICAgICAgaWYgKCF0aGlzLnVubGlua1BhbmVscykge1xuICAgICAgICB0aGlzLmxlZnREYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0WWVhclwiXSkodGhpcy5sZWZ0RGF0ZSk7XG4gICAgICAgIHRoaXMucmlnaHREYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0TW9udGhcIl0pKHRoaXMubGVmdERhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yaWdodERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRZZWFyXCJdKSh0aGlzLnJpZ2h0RGF0ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICByaWdodE5leHRNb250aDogZnVuY3Rpb24gcmlnaHROZXh0TW9udGgoKSB7XG4gICAgICBpZiAoIXRoaXMudW5saW5rUGFuZWxzKSB7XG4gICAgICAgIHRoaXMubGVmdERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRNb250aFwiXSkodGhpcy5sZWZ0RGF0ZSk7XG4gICAgICAgIHRoaXMucmlnaHREYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0TW9udGhcIl0pKHRoaXMubGVmdERhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yaWdodERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRNb250aFwiXSkodGhpcy5yaWdodERhdGUpO1xuICAgICAgfVxuICAgIH0sXG5cblxuICAgIC8vIGxlZnROZXh0KiwgcmlnaHRQcmV2KiBhcmUgY2FsbGVkIHdoZW4gYHVubGlua1BhbmVsc2AgaXMgdHJ1ZVxuICAgIGxlZnROZXh0WWVhcjogZnVuY3Rpb24gbGVmdE5leHRZZWFyKCkge1xuICAgICAgdGhpcy5sZWZ0RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibmV4dFllYXJcIl0pKHRoaXMubGVmdERhdGUpO1xuICAgIH0sXG4gICAgbGVmdE5leHRNb250aDogZnVuY3Rpb24gbGVmdE5leHRNb250aCgpIHtcbiAgICAgIHRoaXMubGVmdERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRNb250aFwiXSkodGhpcy5sZWZ0RGF0ZSk7XG4gICAgfSxcbiAgICByaWdodFByZXZZZWFyOiBmdW5jdGlvbiByaWdodFByZXZZZWFyKCkge1xuICAgICAgdGhpcy5yaWdodERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcInByZXZZZWFyXCJdKSh0aGlzLnJpZ2h0RGF0ZSk7XG4gICAgfSxcbiAgICByaWdodFByZXZNb250aDogZnVuY3Rpb24gcmlnaHRQcmV2TW9udGgoKSB7XG4gICAgICB0aGlzLnJpZ2h0RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wicHJldk1vbnRoXCJdKSh0aGlzLnJpZ2h0RGF0ZSk7XG4gICAgfSxcbiAgICBoYW5kbGVDb25maXJtOiBmdW5jdGlvbiBoYW5kbGVDb25maXJtKCkge1xuICAgICAgdmFyIHZpc2libGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlO1xuXG4gICAgICBpZiAodGhpcy5pc1ZhbGlkVmFsdWUoW3RoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlXSkpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgncGljaycsIFt0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZV0sIHZpc2libGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNWYWxpZFZhbHVlOiBmdW5jdGlvbiBpc1ZhbGlkVmFsdWUodmFsdWUpIHtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZSAmJiB2YWx1ZVswXSAmJiB2YWx1ZVsxXSAmJiBPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSkodmFsdWVbMF0pICYmIE9iamVjdChkYXRlX3V0aWxfW1wiaXNEYXRlXCJdKSh2YWx1ZVsxXSkgJiYgdmFsdWVbMF0uZ2V0VGltZSgpIDw9IHZhbHVlWzFdLmdldFRpbWUoKSAmJiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlID09PSAnZnVuY3Rpb24nID8gIXRoaXMuZGlzYWJsZWREYXRlKHZhbHVlWzBdKSAmJiAhdGhpcy5kaXNhYmxlZERhdGUodmFsdWVbMV0pIDogdHJ1ZSk7XG4gICAgfSxcbiAgICByZXNldFZpZXc6IGZ1bmN0aW9uIHJlc2V0VmlldygpIHtcbiAgICAgIC8vIE5PVEU6IHRoaXMgaXMgYSBoYWNrIHRvIHJlc2V0IHttaW4sIG1heH1EYXRlIG9uIHBpY2tlciBvcGVuLlxuICAgICAgLy8gVE9ETzogY29ycmVjdCB3YXkgb2YgZG9pbmcgc28gaXMgdG8gcmVmYWN0b3Ige21pbiwgbWF4fURhdGUgdG8gYmUgZGVwZW5kZW50IG9uIHZhbHVlIGFuZCBpbnRlcm5hbCBzZWxlY3Rpb24gc3RhdGVcbiAgICAgIC8vICAgICAgIGFuIGFsdGVybmF0aXZlIHdvdWxkIGJlIHJlc2V0VmlldyB3aGVuZXZlciBwaWNrZXIgYmVjb21lcyB2aXNpYmxlLCBzaG91bGQgYWxzbyBpbnZlc3RpZ2F0ZSBkYXRlLXBhbmVsJ3MgcmVzZXRWaWV3XG4gICAgICBpZiAodGhpcy5taW5EYXRlICYmIHRoaXMubWF4RGF0ZSA9PSBudWxsKSB0aGlzLnJhbmdlU3RhdGUuc2VsZWN0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLnZhbHVlICYmIE9iamVjdChkYXRlX3V0aWxfW1wiaXNEYXRlXCJdKSh0aGlzLnZhbHVlWzBdKSA/IG5ldyBEYXRlKHRoaXMudmFsdWVbMF0pIDogbnVsbDtcbiAgICAgIHRoaXMubWF4RGF0ZSA9IHRoaXMudmFsdWUgJiYgT2JqZWN0KGRhdGVfdXRpbF9bXCJpc0RhdGVcIl0pKHRoaXMudmFsdWVbMF0pID8gbmV3IERhdGUodGhpcy52YWx1ZVsxXSkgOiBudWxsO1xuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnRzOiB7IFRpbWVQaWNrZXI6IHBhbmVsX3RpbWUsIERhdGVUYWJsZTogZGF0ZV90YWJsZSwgRWxJbnB1dDogaW5wdXRfZGVmYXVsdC5hLCBFbEJ1dHRvbjogYnV0dG9uX2RlZmF1bHQuYSB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL2RhdGUtcmFuZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhbmVsX2RhdGVfcmFuZ2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoZGF0ZV9yYW5nZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvZGF0ZS1yYW5nZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBkYXRlX3JhbmdlX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFuZWxfZGF0ZV9yYW5nZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgZGF0ZV9yYW5nZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzI2NTI4NDlhX3JlbmRlcixcbiAgZGF0ZV9yYW5nZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzI2NTI4NDlhX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgZGF0ZV9yYW5nZV9hcGk7IH1cbmRhdGVfcmFuZ2VfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvZGF0ZS1yYW5nZS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZGF0ZV9yYW5nZSA9IChkYXRlX3JhbmdlX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL21vbnRoLXJhbmdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mMjY0NWZiOCZcbnZhciBtb250aF9yYW5nZXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2YyNjQ1ZmI4X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInRyYW5zaXRpb25cIixcbiAgICB7XG4gICAgICBhdHRyczogeyBuYW1lOiBcImVsLXpvb20taW4tdG9wXCIgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiYWZ0ZXItbGVhdmVcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLiRlbWl0KFwiZG9kZXN0cm95XCIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS52aXNpYmxlLFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInZpc2libGVcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcGlja2VyLXBhbmVsIGVsLWRhdGUtcmFuZ2UtcGlja2VyIGVsLXBvcHBlclwiLFxuICAgICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiaGFzLXNpZGViYXJcIjogX3ZtLiRzbG90cy5zaWRlYmFyIHx8IF92bS5zaG9ydGN1dHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfdm0ucG9wcGVyQ2xhc3NcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLXBpY2tlci1wYW5lbF9fYm9keS13cmFwcGVyXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl90KFwic2lkZWJhclwiKSxcbiAgICAgICAgICAgICAgX3ZtLnNob3J0Y3V0c1xuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtcGlja2VyLXBhbmVsX19zaWRlYmFyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5zaG9ydGN1dHMsIGZ1bmN0aW9uKHNob3J0Y3V0LCBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcGlja2VyLXBhbmVsX19zaG9ydGN1dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZVNob3J0Y3V0Q2xpY2soc2hvcnRjdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3Moc2hvcnRjdXQudGV4dCkpXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXBpY2tlci1wYW5lbF9fYm9keVwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19jb250ZW50IGVsLWRhdGUtcmFuZ2UtcGlja2VyX19jb250ZW50IGlzLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1kYXRlLXJhbmdlLXBpY2tlcl9faGVhZGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFwiYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImVsLXBpY2tlci1wYW5lbF9faWNvbi1idG4gZWwtaWNvbi1kLWFycm93LWxlZnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ubGVmdFByZXZZZWFyIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0udW5saW5rUGFuZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1pY29uLWQtYXJyb3ctcmlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogeyBcImlzLWRpc2FibGVkXCI6ICFfdm0uZW5hYmxlWWVhckFycm93IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIV92bS5lbmFibGVZZWFyQXJyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ubGVmdE5leHRZZWFyIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgW192bS5fdihfdm0uX3MoX3ZtLmxlZnRMYWJlbCkpXSlcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwibW9udGgtdGFibGVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInNlbGVjdGlvbi1tb2RlXCI6IFwicmFuZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU6IF92bS5sZWZ0RGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdC12YWx1ZVwiOiBfdm0uZGVmYXVsdFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtaW4tZGF0ZVwiOiBfdm0ubWluRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWF4LWRhdGVcIjogX3ZtLm1heERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInJhbmdlLXN0YXRlXCI6IF92bS5yYW5nZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXNhYmxlZC1kYXRlXCI6IF92bS5kaXNhYmxlZERhdGVcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VyYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVJhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljazogX3ZtLmhhbmRsZVJhbmdlUGlja1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19jb250ZW50IGVsLWRhdGUtcmFuZ2UtcGlja2VyX19jb250ZW50IGlzLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2hlYWRlclwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0udW5saW5rUGFuZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1pY29uLWQtYXJyb3ctbGVmdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7IFwiaXMtZGlzYWJsZWRcIjogIV92bS5lbmFibGVZZWFyQXJyb3cgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhX3ZtLmVuYWJsZVllYXJBcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5yaWdodFByZXZZZWFyIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJidXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1pY29uLWQtYXJyb3ctcmlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ucmlnaHROZXh0WWVhciB9XG4gICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgW192bS5fdihfdm0uX3MoX3ZtLnJpZ2h0TGFiZWwpKV0pXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfYyhcIm1vbnRoLXRhYmxlXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWxlY3Rpb24tbW9kZVwiOiBcInJhbmdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBfdm0ucmlnaHREYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0LXZhbHVlXCI6IF92bS5kZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1pbi1kYXRlXCI6IF92bS5taW5EYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXgtZGF0ZVwiOiBfdm0ubWF4RGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmFuZ2Utc3RhdGVcIjogX3ZtLnJhbmdlU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpc2FibGVkLWRhdGVcIjogX3ZtLmRpc2FibGVkRGF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXJhbmdlOiBfdm0uaGFuZGxlQ2hhbmdlUmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNrOiBfdm0uaGFuZGxlUmFuZ2VQaWNrXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIG1vbnRoX3JhbmdldnVlX3R5cGVfdGVtcGxhdGVfaWRfZjI2NDVmYjhfc3RhdGljUmVuZGVyRm5zID0gW11cbm1vbnRoX3JhbmdldnVlX3R5cGVfdGVtcGxhdGVfaWRfZjI2NDVmYjhfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvbW9udGgtcmFuZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWYyNjQ1ZmI4JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvbW9udGgtcmFuZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cblxuXG52YXIgbW9udGhfcmFuZ2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19jYWxjRGVmYXVsdFZhbHVlID0gZnVuY3Rpb24gY2FsY0RlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZGVmYXVsdFZhbHVlKSkge1xuICAgIHJldHVybiBbbmV3IERhdGUoZGVmYXVsdFZhbHVlWzBdKSwgbmV3IERhdGUoZGVmYXVsdFZhbHVlWzFdKV07XG4gIH0gZWxzZSBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuIFtuZXcgRGF0ZShkZWZhdWx0VmFsdWUpLCBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRNb250aFwiXSkobmV3IERhdGUoZGVmYXVsdFZhbHVlKSldO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbbmV3IERhdGUoKSwgT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0TW9udGhcIl0pKG5ldyBEYXRlKCkpXTtcbiAgfVxufTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1vbnRoX3JhbmdldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbWl4aW5zOiBbbG9jYWxlX2RlZmF1bHQuYV0sXG5cbiAgZGlyZWN0aXZlczogeyBDbGlja291dHNpZGU6IGNsaWNrb3V0c2lkZV9kZWZhdWx0LmEgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGJ0bkRpc2FibGVkOiBmdW5jdGlvbiBidG5EaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiAhKHRoaXMubWluRGF0ZSAmJiB0aGlzLm1heERhdGUgJiYgIXRoaXMuc2VsZWN0aW5nICYmIHRoaXMuaXNWYWxpZFZhbHVlKFt0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZV0pKTtcbiAgICB9LFxuICAgIGxlZnRMYWJlbDogZnVuY3Rpb24gbGVmdExhYmVsKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGVmdERhdGUuZ2V0RnVsbFllYXIoKSArICcgJyArIHRoaXMudCgnZWwuZGF0ZXBpY2tlci55ZWFyJyk7XG4gICAgfSxcbiAgICByaWdodExhYmVsOiBmdW5jdGlvbiByaWdodExhYmVsKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmlnaHREYXRlLmdldEZ1bGxZZWFyKCkgKyAnICcgKyB0aGlzLnQoJ2VsLmRhdGVwaWNrZXIueWVhcicpO1xuICAgIH0sXG4gICAgbGVmdFllYXI6IGZ1bmN0aW9uIGxlZnRZZWFyKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGVmdERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9LFxuICAgIHJpZ2h0WWVhcjogZnVuY3Rpb24gcmlnaHRZZWFyKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmlnaHREYXRlLmdldEZ1bGxZZWFyKCkgPT09IHRoaXMubGVmdERhdGUuZ2V0RnVsbFllYXIoKSA/IHRoaXMubGVmdERhdGUuZ2V0RnVsbFllYXIoKSArIDEgOiB0aGlzLnJpZ2h0RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIH0sXG4gICAgZW5hYmxlWWVhckFycm93OiBmdW5jdGlvbiBlbmFibGVZZWFyQXJyb3coKSB7XG4gICAgICByZXR1cm4gdGhpcy51bmxpbmtQYW5lbHMgJiYgdGhpcy5yaWdodFllYXIgPiB0aGlzLmxlZnRZZWFyICsgMTtcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcG9wcGVyQ2xhc3M6ICcnLFxuICAgICAgdmFsdWU6IFtdLFxuICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgZGVmYXVsdFRpbWU6IG51bGwsXG4gICAgICBtaW5EYXRlOiAnJyxcbiAgICAgIG1heERhdGU6ICcnLFxuICAgICAgbGVmdERhdGU6IG5ldyBEYXRlKCksXG4gICAgICByaWdodERhdGU6IE9iamVjdChkYXRlX3V0aWxfW1wibmV4dFllYXJcIl0pKG5ldyBEYXRlKCkpLFxuICAgICAgcmFuZ2VTdGF0ZToge1xuICAgICAgICBlbmREYXRlOiBudWxsLFxuICAgICAgICBzZWxlY3Rpbmc6IGZhbHNlLFxuICAgICAgICByb3c6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbFxuICAgICAgfSxcbiAgICAgIHNob3J0Y3V0czogJycsXG4gICAgICB2aXNpYmxlOiAnJyxcbiAgICAgIGRpc2FibGVkRGF0ZTogJycsXG4gICAgICBmb3JtYXQ6ICcnLFxuICAgICAgYXJyb3dDb250cm9sOiBmYWxzZSxcbiAgICAgIHVubGlua1BhbmVsczogZmFsc2VcbiAgICB9O1xuICB9LFxuXG5cbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUobmV3VmFsKSB7XG4gICAgICBpZiAoIW5ld1ZhbCkge1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLm1heERhdGUgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5ld1ZhbCkpIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJpc0RhdGVcIl0pKG5ld1ZhbFswXSkgPyBuZXcgRGF0ZShuZXdWYWxbMF0pIDogbnVsbDtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJpc0RhdGVcIl0pKG5ld1ZhbFsxXSkgPyBuZXcgRGF0ZShuZXdWYWxbMV0pIDogbnVsbDtcbiAgICAgICAgaWYgKHRoaXMubWluRGF0ZSkge1xuICAgICAgICAgIHRoaXMubGVmdERhdGUgPSB0aGlzLm1pbkRhdGU7XG4gICAgICAgICAgaWYgKHRoaXMudW5saW5rUGFuZWxzICYmIHRoaXMubWF4RGF0ZSkge1xuICAgICAgICAgICAgdmFyIG1pbkRhdGVZZWFyID0gdGhpcy5taW5EYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICB2YXIgbWF4RGF0ZVllYXIgPSB0aGlzLm1heERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHREYXRlID0gbWluRGF0ZVllYXIgPT09IG1heERhdGVZZWFyID8gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0WWVhclwiXSkodGhpcy5tYXhEYXRlKSA6IHRoaXMubWF4RGF0ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yaWdodERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRZZWFyXCJdKSh0aGlzLmxlZnREYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sZWZ0RGF0ZSA9IG1vbnRoX3JhbmdldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfY2FsY0RlZmF1bHRWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSlbMF07XG4gICAgICAgICAgdGhpcy5yaWdodERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRZZWFyXCJdKSh0aGlzLmxlZnREYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBmdW5jdGlvbiBkZWZhdWx0VmFsdWUodmFsKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdmFyIF9jYWxjRGVmYXVsdFZhbHVlID0gbW9udGhfcmFuZ2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19jYWxjRGVmYXVsdFZhbHVlKHZhbCksXG4gICAgICAgICAgICBsZWZ0ID0gX2NhbGNEZWZhdWx0VmFsdWVbMF0sXG4gICAgICAgICAgICByaWdodCA9IF9jYWxjRGVmYXVsdFZhbHVlWzFdO1xuXG4gICAgICAgIHRoaXMubGVmdERhdGUgPSBsZWZ0O1xuICAgICAgICB0aGlzLnJpZ2h0RGF0ZSA9IHZhbCAmJiB2YWxbMV0gJiYgbGVmdC5nZXRGdWxsWWVhcigpICE9PSByaWdodC5nZXRGdWxsWWVhcigpICYmIHRoaXMudW5saW5rUGFuZWxzID8gcmlnaHQgOiBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRZZWFyXCJdKSh0aGlzLmxlZnREYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUNsZWFyOiBmdW5jdGlvbiBoYW5kbGVDbGVhcigpIHtcbiAgICAgIHRoaXMubWluRGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLm1heERhdGUgPSBudWxsO1xuICAgICAgdGhpcy5sZWZ0RGF0ZSA9IG1vbnRoX3JhbmdldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfY2FsY0RlZmF1bHRWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSlbMF07XG4gICAgICB0aGlzLnJpZ2h0RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibmV4dFllYXJcIl0pKHRoaXMubGVmdERhdGUpO1xuICAgICAgdGhpcy4kZW1pdCgncGljaycsIG51bGwpO1xuICAgIH0sXG4gICAgaGFuZGxlQ2hhbmdlUmFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVJhbmdlKHZhbCkge1xuICAgICAgdGhpcy5taW5EYXRlID0gdmFsLm1pbkRhdGU7XG4gICAgICB0aGlzLm1heERhdGUgPSB2YWwubWF4RGF0ZTtcbiAgICAgIHRoaXMucmFuZ2VTdGF0ZSA9IHZhbC5yYW5nZVN0YXRlO1xuICAgIH0sXG4gICAgaGFuZGxlUmFuZ2VQaWNrOiBmdW5jdGlvbiBoYW5kbGVSYW5nZVBpY2sodmFsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgY2xvc2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG5cbiAgICAgIHZhciBkZWZhdWx0VGltZSA9IHRoaXMuZGVmYXVsdFRpbWUgfHwgW107XG4gICAgICB2YXIgbWluRGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5V2l0aFRpbWVTdHJpbmdcIl0pKHZhbC5taW5EYXRlLCBkZWZhdWx0VGltZVswXSk7XG4gICAgICB2YXIgbWF4RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibW9kaWZ5V2l0aFRpbWVTdHJpbmdcIl0pKHZhbC5tYXhEYXRlLCBkZWZhdWx0VGltZVsxXSk7XG4gICAgICBpZiAodGhpcy5tYXhEYXRlID09PSBtYXhEYXRlICYmIHRoaXMubWluRGF0ZSA9PT0gbWluRGF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm9uUGljayAmJiB0aGlzLm9uUGljayh2YWwpO1xuICAgICAgdGhpcy5tYXhEYXRlID0gbWF4RGF0ZTtcbiAgICAgIHRoaXMubWluRGF0ZSA9IG1pbkRhdGU7XG5cbiAgICAgIC8vIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9FbGVtZUZFL2VsZW1lbnQvaXNzdWVzLzc1MzksIHNob3VsZCByZW1vdmUgdGhpcyBibG9jayB3aGVuIHdlIGRvbid0IGhhdmUgdG8gY2FyZSBhYm91dCBDaHJvbWl1bSA1NSAtIDU3XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMubWF4RGF0ZSA9IG1heERhdGU7XG4gICAgICAgIF90aGlzLm1pbkRhdGUgPSBtaW5EYXRlO1xuICAgICAgfSwgMTApO1xuICAgICAgaWYgKCFjbG9zZSkgcmV0dXJuO1xuICAgICAgdGhpcy5oYW5kbGVDb25maXJtKCk7XG4gICAgfSxcbiAgICBoYW5kbGVTaG9ydGN1dENsaWNrOiBmdW5jdGlvbiBoYW5kbGVTaG9ydGN1dENsaWNrKHNob3J0Y3V0KSB7XG4gICAgICBpZiAoc2hvcnRjdXQub25DbGljaykge1xuICAgICAgICBzaG9ydGN1dC5vbkNsaWNrKHRoaXMpO1xuICAgICAgfVxuICAgIH0sXG5cblxuICAgIC8vIGxlZnRQcmV2KiwgcmlnaHROZXh0KiBuZWVkIHRvIHRha2UgY2FyZSBvZiBgdW5saW5rUGFuZWxzYFxuICAgIGxlZnRQcmV2WWVhcjogZnVuY3Rpb24gbGVmdFByZXZZZWFyKCkge1xuICAgICAgdGhpcy5sZWZ0RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wicHJldlllYXJcIl0pKHRoaXMubGVmdERhdGUpO1xuICAgICAgaWYgKCF0aGlzLnVubGlua1BhbmVscykge1xuICAgICAgICB0aGlzLnJpZ2h0RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wicHJldlllYXJcIl0pKHRoaXMucmlnaHREYXRlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJpZ2h0TmV4dFllYXI6IGZ1bmN0aW9uIHJpZ2h0TmV4dFllYXIoKSB7XG4gICAgICBpZiAoIXRoaXMudW5saW5rUGFuZWxzKSB7XG4gICAgICAgIHRoaXMubGVmdERhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcIm5leHRZZWFyXCJdKSh0aGlzLmxlZnREYXRlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmlnaHREYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJuZXh0WWVhclwiXSkodGhpcy5yaWdodERhdGUpO1xuICAgIH0sXG5cblxuICAgIC8vIGxlZnROZXh0KiwgcmlnaHRQcmV2KiBhcmUgY2FsbGVkIHdoZW4gYHVubGlua1BhbmVsc2AgaXMgdHJ1ZVxuICAgIGxlZnROZXh0WWVhcjogZnVuY3Rpb24gbGVmdE5leHRZZWFyKCkge1xuICAgICAgdGhpcy5sZWZ0RGF0ZSA9IE9iamVjdChkYXRlX3V0aWxfW1wibmV4dFllYXJcIl0pKHRoaXMubGVmdERhdGUpO1xuICAgIH0sXG4gICAgcmlnaHRQcmV2WWVhcjogZnVuY3Rpb24gcmlnaHRQcmV2WWVhcigpIHtcbiAgICAgIHRoaXMucmlnaHREYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJwcmV2WWVhclwiXSkodGhpcy5yaWdodERhdGUpO1xuICAgIH0sXG4gICAgaGFuZGxlQ29uZmlybTogZnVuY3Rpb24gaGFuZGxlQ29uZmlybSgpIHtcbiAgICAgIHZhciB2aXNpYmxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcblxuICAgICAgaWYgKHRoaXMuaXNWYWxpZFZhbHVlKFt0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZV0pKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3BpY2snLCBbdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGVdLCB2aXNpYmxlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGlzVmFsaWRWYWx1ZTogZnVuY3Rpb24gaXNWYWxpZFZhbHVlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUgJiYgdmFsdWVbMF0gJiYgdmFsdWVbMV0gJiYgT2JqZWN0KGRhdGVfdXRpbF9bXCJpc0RhdGVcIl0pKHZhbHVlWzBdKSAmJiBPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSkodmFsdWVbMV0pICYmIHZhbHVlWzBdLmdldFRpbWUoKSA8PSB2YWx1ZVsxXS5nZXRUaW1lKCkgJiYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/ICF0aGlzLmRpc2FibGVkRGF0ZSh2YWx1ZVswXSkgJiYgIXRoaXMuZGlzYWJsZWREYXRlKHZhbHVlWzFdKSA6IHRydWUpO1xuICAgIH0sXG4gICAgcmVzZXRWaWV3OiBmdW5jdGlvbiByZXNldFZpZXcoKSB7XG4gICAgICAvLyBOT1RFOiB0aGlzIGlzIGEgaGFjayB0byByZXNldCB7bWluLCBtYXh9RGF0ZSBvbiBwaWNrZXIgb3Blbi5cbiAgICAgIC8vIFRPRE86IGNvcnJlY3Qgd2F5IG9mIGRvaW5nIHNvIGlzIHRvIHJlZmFjdG9yIHttaW4sIG1heH1EYXRlIHRvIGJlIGRlcGVuZGVudCBvbiB2YWx1ZSBhbmQgaW50ZXJuYWwgc2VsZWN0aW9uIHN0YXRlXG4gICAgICAvLyAgICAgICBhbiBhbHRlcm5hdGl2ZSB3b3VsZCBiZSByZXNldFZpZXcgd2hlbmV2ZXIgcGlja2VyIGJlY29tZXMgdmlzaWJsZSwgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgZGF0ZS1wYW5lbCdzIHJlc2V0Vmlld1xuICAgICAgdGhpcy5taW5EYXRlID0gdGhpcy52YWx1ZSAmJiBPYmplY3QoZGF0ZV91dGlsX1tcImlzRGF0ZVwiXSkodGhpcy52YWx1ZVswXSkgPyBuZXcgRGF0ZSh0aGlzLnZhbHVlWzBdKSA6IG51bGw7XG4gICAgICB0aGlzLm1heERhdGUgPSB0aGlzLnZhbHVlICYmIE9iamVjdChkYXRlX3V0aWxfW1wiaXNEYXRlXCJdKSh0aGlzLnZhbHVlWzBdKSA/IG5ldyBEYXRlKHRoaXMudmFsdWVbMV0pIDogbnVsbDtcbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50czogeyBNb250aFRhYmxlOiBtb250aF90YWJsZSwgRWxJbnB1dDogaW5wdXRfZGVmYXVsdC5hLCBFbEJ1dHRvbjogYnV0dG9uX2RlZmF1bHQuYSB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL21vbnRoLXJhbmdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYW5lbF9tb250aF9yYW5nZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChtb250aF9yYW5nZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvbW9udGgtcmFuZ2UudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgbW9udGhfcmFuZ2VfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYW5lbF9tb250aF9yYW5nZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgbW9udGhfcmFuZ2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF9mMjY0NWZiOF9yZW5kZXIsXG4gIG1vbnRoX3JhbmdldnVlX3R5cGVfdGVtcGxhdGVfaWRfZjI2NDVmYjhfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBtb250aF9yYW5nZV9hcGk7IH1cbm1vbnRoX3JhbmdlX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL21vbnRoLXJhbmdlLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtb250aF9yYW5nZSA9IChtb250aF9yYW5nZV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9waWNrZXIvZGF0ZS1waWNrZXIuanNcblxuXG5cblxuXG52YXIgZGF0ZV9waWNrZXJfZ2V0UGFuZWwgPSBmdW5jdGlvbiBnZXRQYW5lbCh0eXBlKSB7XG4gIGlmICh0eXBlID09PSAnZGF0ZXJhbmdlJyB8fCB0eXBlID09PSAnZGF0ZXRpbWVyYW5nZScpIHtcbiAgICByZXR1cm4gZGF0ZV9yYW5nZTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbW9udGhyYW5nZScpIHtcbiAgICByZXR1cm4gbW9udGhfcmFuZ2U7XG4gIH1cbiAgcmV0dXJuIHBhbmVsX2RhdGU7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkYXRlX3BpY2tlciA9ICh7XG4gIG1peGluczogW3BpY2tlcl0sXG5cbiAgbmFtZTogJ0VsRGF0ZVBpY2tlcicsXG5cbiAgcHJvcHM6IHtcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnZGF0ZSdcbiAgICB9LFxuICAgIHRpbWVBcnJvd0NvbnRyb2w6IEJvb2xlYW5cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHR5cGU6IGZ1bmN0aW9uIHR5cGUoX3R5cGUpIHtcbiAgICAgIGlmICh0aGlzLnBpY2tlcikge1xuICAgICAgICB0aGlzLnVubW91bnRQaWNrZXIoKTtcbiAgICAgICAgdGhpcy5wYW5lbCA9IGRhdGVfcGlja2VyX2dldFBhbmVsKF90eXBlKTtcbiAgICAgICAgdGhpcy5tb3VudFBpY2tlcigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYW5lbCA9IGRhdGVfcGlja2VyX2dldFBhbmVsKF90eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLnBhbmVsID0gZGF0ZV9waWNrZXJfZ2V0UGFuZWwodGhpcy50eXBlKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmRhdGVfcGlja2VyLmluc3RhbGwgPSBmdW5jdGlvbiBpbnN0YWxsKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGRhdGVfcGlja2VyLm5hbWUsIGRhdGVfcGlja2VyKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2RhdGVfcGlja2VyID0gKGRhdGVfcGlja2VyKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUtc2VsZWN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MWFiOTMyMCZcbnZhciB0aW1lX3NlbGVjdHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzUxYWI5MzIwX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInRyYW5zaXRpb25cIixcbiAgICB7XG4gICAgICBhdHRyczogeyBuYW1lOiBcImVsLXpvb20taW4tdG9wXCIgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiYmVmb3JlLWVudGVyXCI6IF92bS5oYW5kbGVNZW51RW50ZXIsXG4gICAgICAgIFwiYWZ0ZXItbGVhdmVcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLiRlbWl0KFwiZG9kZXN0cm95XCIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS52aXNpYmxlLFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInZpc2libGVcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVmOiBcInBvcHBlclwiLFxuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXBpY2tlci1wYW5lbCB0aW1lLXNlbGVjdCBlbC1wb3BwZXJcIixcbiAgICAgICAgICBjbGFzczogX3ZtLnBvcHBlckNsYXNzLFxuICAgICAgICAgIHN0eWxlOiB7IHdpZHRoOiBfdm0ud2lkdGggKyBcInB4XCIgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImVsLXNjcm9sbGJhclwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczogeyBub3Jlc2l6ZTogXCJcIiwgXCJ3cmFwLWNsYXNzXCI6IFwiZWwtcGlja2VyLXBhbmVsX19jb250ZW50XCIgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF92bS5fbChfdm0uaXRlbXMsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAga2V5OiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidGltZS1zZWxlY3QtaXRlbVwiLFxuICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IF92bS52YWx1ZSA9PT0gaXRlbS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGl0ZW0udmFsdWUgPT09IF92bS5kZWZhdWx0VmFsdWVcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVDbGljayhpdGVtKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhpdGVtLnZhbHVlKSldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIHRpbWVfc2VsZWN0dnVlX3R5cGVfdGVtcGxhdGVfaWRfNTFhYjkzMjBfc3RhdGljUmVuZGVyRm5zID0gW11cbnRpbWVfc2VsZWN0dnVlX3R5cGVfdGVtcGxhdGVfaWRfNTFhYjkzMjBfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvdGltZS1zZWxlY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUxYWI5MzIwJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvdGltZS1zZWxlY3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cbnZhciBwYXJzZVRpbWUgPSBmdW5jdGlvbiBwYXJzZVRpbWUodGltZSkge1xuICB2YXIgdmFsdWVzID0gKHRpbWUgfHwgJycpLnNwbGl0KCc6Jyk7XG4gIGlmICh2YWx1ZXMubGVuZ3RoID49IDIpIHtcbiAgICB2YXIgaG91cnMgPSBwYXJzZUludCh2YWx1ZXNbMF0sIDEwKTtcbiAgICB2YXIgbWludXRlcyA9IHBhcnNlSW50KHZhbHVlc1sxXSwgMTApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdXJzOiBob3VycyxcbiAgICAgIG1pbnV0ZXM6IG1pbnV0ZXNcbiAgICB9O1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIGNvbXBhcmVUaW1lID0gZnVuY3Rpb24gY29tcGFyZVRpbWUodGltZTEsIHRpbWUyKSB7XG4gIHZhciB2YWx1ZTEgPSBwYXJzZVRpbWUodGltZTEpO1xuICB2YXIgdmFsdWUyID0gcGFyc2VUaW1lKHRpbWUyKTtcblxuICB2YXIgbWludXRlczEgPSB2YWx1ZTEubWludXRlcyArIHZhbHVlMS5ob3VycyAqIDYwO1xuICB2YXIgbWludXRlczIgPSB2YWx1ZTIubWludXRlcyArIHZhbHVlMi5ob3VycyAqIDYwO1xuXG4gIGlmIChtaW51dGVzMSA9PT0gbWludXRlczIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiBtaW51dGVzMSA+IG1pbnV0ZXMyID8gMSA6IC0xO1xufTtcblxudmFyIGZvcm1hdFRpbWUgPSBmdW5jdGlvbiBmb3JtYXRUaW1lKHRpbWUpIHtcbiAgcmV0dXJuICh0aW1lLmhvdXJzIDwgMTAgPyAnMCcgKyB0aW1lLmhvdXJzIDogdGltZS5ob3VycykgKyAnOicgKyAodGltZS5taW51dGVzIDwgMTAgPyAnMCcgKyB0aW1lLm1pbnV0ZXMgOiB0aW1lLm1pbnV0ZXMpO1xufTtcblxudmFyIG5leHRUaW1lID0gZnVuY3Rpb24gbmV4dFRpbWUodGltZSwgc3RlcCkge1xuICB2YXIgdGltZVZhbHVlID0gcGFyc2VUaW1lKHRpbWUpO1xuICB2YXIgc3RlcFZhbHVlID0gcGFyc2VUaW1lKHN0ZXApO1xuXG4gIHZhciBuZXh0ID0ge1xuICAgIGhvdXJzOiB0aW1lVmFsdWUuaG91cnMsXG4gICAgbWludXRlczogdGltZVZhbHVlLm1pbnV0ZXNcbiAgfTtcblxuICBuZXh0Lm1pbnV0ZXMgKz0gc3RlcFZhbHVlLm1pbnV0ZXM7XG4gIG5leHQuaG91cnMgKz0gc3RlcFZhbHVlLmhvdXJzO1xuXG4gIG5leHQuaG91cnMgKz0gTWF0aC5mbG9vcihuZXh0Lm1pbnV0ZXMgLyA2MCk7XG4gIG5leHQubWludXRlcyA9IG5leHQubWludXRlcyAlIDYwO1xuXG4gIHJldHVybiBmb3JtYXRUaW1lKG5leHQpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGltZV9zZWxlY3R2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBjb21wb25lbnRzOiB7IEVsU2Nyb2xsYmFyOiBzY3JvbGxiYXJfZGVmYXVsdC5hIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoIXZhbCkgcmV0dXJuO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMuc2Nyb2xsVG9PcHRpb24oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGl0ZW0pIHtcbiAgICAgIGlmICghaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLiRlbWl0KCdwaWNrJywgaXRlbS52YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDbGVhcjogZnVuY3Rpb24gaGFuZGxlQ2xlYXIoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdwaWNrJywgbnVsbCk7XG4gICAgfSxcbiAgICBzY3JvbGxUb09wdGlvbjogZnVuY3Rpb24gc2Nyb2xsVG9PcHRpb24oKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcuc2VsZWN0ZWQnO1xuXG4gICAgICB2YXIgbWVudSA9IHRoaXMuJHJlZnMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoJy5lbC1waWNrZXItcGFuZWxfX2NvbnRlbnQnKTtcbiAgICAgIHNjcm9sbF9pbnRvX3ZpZXdfZGVmYXVsdCgpKG1lbnUsIG1lbnUucXVlcnlTZWxlY3RvcihzZWxlY3RvcikpO1xuICAgIH0sXG4gICAgaGFuZGxlTWVudUVudGVyOiBmdW5jdGlvbiBoYW5kbGVNZW51RW50ZXIoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHNlbGVjdGVkID0gdGhpcy5pdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gICAgICB9KS5pbmRleE9mKHRoaXMudmFsdWUpICE9PSAtMTtcbiAgICAgIHZhciBoYXNEZWZhdWx0ID0gdGhpcy5pdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gICAgICB9KS5pbmRleE9mKHRoaXMuZGVmYXVsdFZhbHVlKSAhPT0gLTE7XG4gICAgICB2YXIgb3B0aW9uID0gc2VsZWN0ZWQgJiYgJy5zZWxlY3RlZCcgfHwgaGFzRGVmYXVsdCAmJiAnLmRlZmF1bHQnIHx8ICcudGltZS1zZWxlY3QtaXRlbTpub3QoLmRpc2FibGVkKSc7XG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIuc2Nyb2xsVG9PcHRpb24ob3B0aW9uKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc2Nyb2xsRG93bjogZnVuY3Rpb24gc2Nyb2xsRG93bihzdGVwKSB7XG4gICAgICB2YXIgaXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgICAgdmFyIGxlbmd0aCA9IGl0ZW1zLmxlbmd0aDtcbiAgICAgIHZhciB0b3RhbCA9IGl0ZW1zLmxlbmd0aDtcbiAgICAgIHZhciBpbmRleCA9IGl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICAgIH0pLmluZGV4T2YodGhpcy52YWx1ZSk7XG4gICAgICB3aGlsZSAodG90YWwtLSkge1xuICAgICAgICBpbmRleCA9IChpbmRleCArIHN0ZXAgKyBsZW5ndGgpICUgbGVuZ3RoO1xuICAgICAgICBpZiAoIWl0ZW1zW2luZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ3BpY2snLCBpdGVtc1tpbmRleF0udmFsdWUsIHRydWUpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgaXNWYWxpZFZhbHVlOiBmdW5jdGlvbiBpc1ZhbGlkVmFsdWUoZGF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiAhaXRlbS5kaXNhYmxlZDtcbiAgICAgIH0pLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICAgIH0pLmluZGV4T2YoZGF0ZSkgIT09IC0xO1xuICAgIH0sXG4gICAgaGFuZGxlS2V5ZG93bjogZnVuY3Rpb24gaGFuZGxlS2V5ZG93bihldmVudCkge1xuICAgICAgdmFyIGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgICAgaWYgKGtleUNvZGUgPT09IDM4IHx8IGtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0geyA0MDogMSwgMzg6IC0xIH07XG4gICAgICAgIHZhciBvZmZzZXQgPSBtYXBwaW5nW2tleUNvZGUudG9TdHJpbmcoKV07XG4gICAgICAgIHRoaXMuc2Nyb2xsRG93bihvZmZzZXQpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3BwZXJDbGFzczogJycsXG4gICAgICBzdGFydDogJzA5OjAwJyxcbiAgICAgIGVuZDogJzE4OjAwJyxcbiAgICAgIHN0ZXA6ICcwMDozMCcsXG4gICAgICB2YWx1ZTogJycsXG4gICAgICBkZWZhdWx0VmFsdWU6ICcnLFxuICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICBtaW5UaW1lOiAnJyxcbiAgICAgIG1heFRpbWU6ICcnLFxuICAgICAgd2lkdGg6IDBcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBpdGVtczogZnVuY3Rpb24gaXRlbXMoKSB7XG4gICAgICB2YXIgc3RhcnQgPSB0aGlzLnN0YXJ0O1xuICAgICAgdmFyIGVuZCA9IHRoaXMuZW5kO1xuICAgICAgdmFyIHN0ZXAgPSB0aGlzLnN0ZXA7XG5cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgaWYgKHN0YXJ0ICYmIGVuZCAmJiBzdGVwKSB7XG4gICAgICAgIHZhciBjdXJyZW50ID0gc3RhcnQ7XG4gICAgICAgIHdoaWxlIChjb21wYXJlVGltZShjdXJyZW50LCBlbmQpIDw9IDApIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICB2YWx1ZTogY3VycmVudCxcbiAgICAgICAgICAgIGRpc2FibGVkOiBjb21wYXJlVGltZShjdXJyZW50LCB0aGlzLm1pblRpbWUgfHwgJy0xOi0xJykgPD0gMCB8fCBjb21wYXJlVGltZShjdXJyZW50LCB0aGlzLm1heFRpbWUgfHwgJzEwMDoxMDAnKSA+PSAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY3VycmVudCA9IG5leHRUaW1lKGN1cnJlbnQsIHN0ZXApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUtc2VsZWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYW5lbF90aW1lX3NlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh0aW1lX3NlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvdGltZS1zZWxlY3QudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdGltZV9zZWxlY3RfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYW5lbF90aW1lX3NlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdGltZV9zZWxlY3R2dWVfdHlwZV90ZW1wbGF0ZV9pZF81MWFiOTMyMF9yZW5kZXIsXG4gIHRpbWVfc2VsZWN0dnVlX3R5cGVfdGVtcGxhdGVfaWRfNTFhYjkzMjBfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciB0aW1lX3NlbGVjdF9hcGk7IH1cbnRpbWVfc2VsZWN0X2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUtc2VsZWN0LnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0aW1lX3NlbGVjdCA9ICh0aW1lX3NlbGVjdF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9waWNrZXIvdGltZS1zZWxlY3QuanNcblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBpY2tlcl90aW1lX3NlbGVjdCA9ICh7XG4gIG1peGluczogW3BpY2tlcl0sXG5cbiAgbmFtZTogJ0VsVGltZVNlbGVjdCcsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsVGltZVNlbGVjdCcsXG5cbiAgcHJvcHM6IHtcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAndGltZS1zZWxlY3QnXG4gICAgfVxuICB9LFxuXG4gIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gYmVmb3JlQ3JlYXRlKCkge1xuICAgIHRoaXMucGFuZWwgPSB0aW1lX3NlbGVjdDtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RpbWUtc2VsZWN0L2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnBpY2tlcl90aW1lX3NlbGVjdC5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHBpY2tlcl90aW1lX3NlbGVjdC5uYW1lLCBwaWNrZXJfdGltZV9zZWxlY3QpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfdGltZV9zZWxlY3QgPSAocGlja2VyX3RpbWVfc2VsZWN0KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUtcmFuZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZiMjg2NjBlJlxudmFyIHRpbWVfcmFuZ2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF9mYjI4NjYwZV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJ0cmFuc2l0aW9uXCIsXG4gICAge1xuICAgICAgYXR0cnM6IHsgbmFtZTogXCJlbC16b29tLWluLXRvcFwiIH0sXG4gICAgICBvbjoge1xuICAgICAgICBcImFmdGVyLWxlYXZlXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIF92bS4kZW1pdChcImRvZGVzdHJveVwiKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0udmlzaWJsZSxcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2aXNpYmxlXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtcmFuZ2UtcGlja2VyIGVsLXBpY2tlci1wYW5lbCBlbC1wb3BwZXJcIixcbiAgICAgICAgICBjbGFzczogX3ZtLnBvcHBlckNsYXNzXG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtcmFuZ2UtcGlja2VyX19jb250ZW50XCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC10aW1lLXJhbmdlLXBpY2tlcl9fY2VsbFwiIH0sIFtcbiAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC10aW1lLXJhbmdlLXBpY2tlcl9faGVhZGVyXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJlbC5kYXRlcGlja2VyLnN0YXJ0VGltZVwiKSkpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICBcImVsLXRpbWUtcmFuZ2UtcGlja2VyX19ib2R5IGVsLXRpbWUtcGFuZWxfX2NvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiaGFzLXNlY29uZHNcIjogX3ZtLnNob3dTZWNvbmRzLFxuICAgICAgICAgICAgICAgICAgICBcImlzLWFycm93XCI6IF92bS5hcnJvd0NvbnRyb2xcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidGltZS1zcGlubmVyXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmOiBcIm1pblNwaW5uZXJcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBcInNob3ctc2Vjb25kc1wiOiBfdm0uc2hvd1NlY29uZHMsXG4gICAgICAgICAgICAgICAgICAgICAgXCJhbS1wbS1tb2RlXCI6IF92bS5hbVBtTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICBcImFycm93LWNvbnRyb2xcIjogX3ZtLmFycm93Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBfdm0ubWluRGF0ZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogX3ZtLmhhbmRsZU1pbkNoYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgICBcInNlbGVjdC1yYW5nZVwiOiBfdm0uc2V0TWluU2VsZWN0aW9uUmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtcmFuZ2UtcGlja2VyX19jZWxsXCIgfSwgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtcmFuZ2UtcGlja2VyX19oZWFkZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcImVsLmRhdGVwaWNrZXIuZW5kVGltZVwiKSkpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICBcImVsLXRpbWUtcmFuZ2UtcGlja2VyX19ib2R5IGVsLXRpbWUtcGFuZWxfX2NvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiaGFzLXNlY29uZHNcIjogX3ZtLnNob3dTZWNvbmRzLFxuICAgICAgICAgICAgICAgICAgICBcImlzLWFycm93XCI6IF92bS5hcnJvd0NvbnRyb2xcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidGltZS1zcGlubmVyXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmOiBcIm1heFNwaW5uZXJcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBcInNob3ctc2Vjb25kc1wiOiBfdm0uc2hvd1NlY29uZHMsXG4gICAgICAgICAgICAgICAgICAgICAgXCJhbS1wbS1tb2RlXCI6IF92bS5hbVBtTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICBcImFycm93LWNvbnRyb2xcIjogX3ZtLmFycm93Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBfdm0ubWF4RGF0ZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogX3ZtLmhhbmRsZU1heENoYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgICBcInNlbGVjdC1yYW5nZVwiOiBfdm0uc2V0TWF4U2VsZWN0aW9uUmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtcGFuZWxfX2Zvb3RlclwiIH0sIFtcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZS1wYW5lbF9fYnRuIGNhbmNlbFwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQ2FuY2VsKClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwiZWwuZGF0ZXBpY2tlci5jYW5jZWxcIikpKV1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRpbWUtcGFuZWxfX2J0biBjb25maXJtXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJidXR0b25cIiwgZGlzYWJsZWQ6IF92bS5idG5EaXNhYmxlZCB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVDb25maXJtKClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwiZWwuZGF0ZXBpY2tlci5jb25maXJtXCIpKSldXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIHRpbWVfcmFuZ2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF9mYjI4NjYwZV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxudGltZV9yYW5nZXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2ZiMjg2NjBlX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUtcmFuZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZiMjg2NjBlJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kYXRlLXBpY2tlci9zcmMvcGFuZWwvdGltZS1yYW5nZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxudmFyIE1JTl9USU1FID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJwYXJzZURhdGVcIl0pKCcwMDowMDowMCcsICdISDptbTpzcycpO1xudmFyIE1BWF9USU1FID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJwYXJzZURhdGVcIl0pKCcyMzo1OTo1OScsICdISDptbTpzcycpO1xuXG52YXIgdGltZV9yYW5nZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX21pblRpbWVPZkRheSA9IGZ1bmN0aW9uIG1pblRpbWVPZkRheShkYXRlKSB7XG4gIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcIm1vZGlmeURhdGVcIl0pKE1JTl9USU1FLCBkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xufTtcblxudmFyIHRpbWVfcmFuZ2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19tYXhUaW1lT2ZEYXkgPSBmdW5jdGlvbiBtYXhUaW1lT2ZEYXkoZGF0ZSkge1xuICByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJtb2RpZnlEYXRlXCJdKShNQVhfVElNRSwgZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcbn07XG5cbi8vIGluY3JlYXNlIHRpbWUgYnkgYW1vdW50IG9mIG1pbGxpc2Vjb25kcywgYnV0IHdpdGhpbiB0aGUgcmFuZ2Ugb2YgZGF5XG52YXIgYWR2YW5jZVRpbWUgPSBmdW5jdGlvbiBhZHZhbmNlVGltZShkYXRlLCBhbW91bnQpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKE1hdGgubWluKGRhdGUuZ2V0VGltZSgpICsgYW1vdW50LCB0aW1lX3JhbmdldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfbWF4VGltZU9mRGF5KGRhdGUpLmdldFRpbWUoKSkpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGltZV9yYW5nZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG1peGluczogW2xvY2FsZV9kZWZhdWx0LmFdLFxuXG4gIGNvbXBvbmVudHM6IHsgVGltZVNwaW5uZXI6IHRpbWVfc3Bpbm5lciB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgc2hvd1NlY29uZHM6IGZ1bmN0aW9uIHNob3dTZWNvbmRzKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmZvcm1hdCB8fCAnJykuaW5kZXhPZignc3MnKSAhPT0gLTE7XG4gICAgfSxcbiAgICBvZmZzZXQ6IGZ1bmN0aW9uIG9mZnNldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3dTZWNvbmRzID8gMTEgOiA4O1xuICAgIH0sXG4gICAgc3Bpbm5lcjogZnVuY3Rpb24gc3Bpbm5lcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblJhbmdlWzBdIDwgdGhpcy5vZmZzZXQgPyB0aGlzLiRyZWZzLm1pblNwaW5uZXIgOiB0aGlzLiRyZWZzLm1heFNwaW5uZXI7XG4gICAgfSxcbiAgICBidG5EaXNhYmxlZDogZnVuY3Rpb24gYnRuRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5taW5EYXRlLmdldFRpbWUoKSA+IHRoaXMubWF4RGF0ZS5nZXRUaW1lKCk7XG4gICAgfSxcbiAgICBhbVBtTW9kZTogZnVuY3Rpb24gYW1QbU1vZGUoKSB7XG4gICAgICBpZiAoKHRoaXMuZm9ybWF0IHx8ICcnKS5pbmRleE9mKCdBJykgIT09IC0xKSByZXR1cm4gJ0EnO1xuICAgICAgaWYgKCh0aGlzLmZvcm1hdCB8fCAnJykuaW5kZXhPZignYScpICE9PSAtMSkgcmV0dXJuICdhJztcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcG9wcGVyQ2xhc3M6ICcnLFxuICAgICAgbWluRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIG1heERhdGU6IG5ldyBEYXRlKCksXG4gICAgICB2YWx1ZTogW10sXG4gICAgICBvbGRWYWx1ZTogW25ldyBEYXRlKCksIG5ldyBEYXRlKCldLFxuICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgZm9ybWF0OiAnSEg6bW06c3MnLFxuICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICBzZWxlY3Rpb25SYW5nZTogWzAsIDJdLFxuICAgICAgYXJyb3dDb250cm9sOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShfdmFsdWUpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KF92YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUoX3ZhbHVlWzBdKTtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gbmV3IERhdGUoX3ZhbHVlWzFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICAgIHRoaXMubWluRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGVmYXVsdFZhbHVlWzBdKTtcbiAgICAgICAgICB0aGlzLm1heERhdGUgPSBuZXcgRGF0ZSh0aGlzLmRlZmF1bHRWYWx1ZVsxXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZSh0aGlzLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgdGhpcy5tYXhEYXRlID0gYWR2YW5jZVRpbWUobmV3IERhdGUodGhpcy5kZWZhdWx0VmFsdWUpLCA2MCAqIDYwICogMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICB0aGlzLm1heERhdGUgPSBhZHZhbmNlVGltZShuZXcgRGF0ZSgpLCA2MCAqIDYwICogMTAwMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHZpc2libGU6IGZ1bmN0aW9uIHZpc2libGUodmFsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodmFsKSB7XG4gICAgICAgIHRoaXMub2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLiRyZWZzLm1pblNwaW5uZXIuZW1pdFNlbGVjdFJhbmdlKCdob3VycycpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUNsZWFyOiBmdW5jdGlvbiBoYW5kbGVDbGVhcigpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ3BpY2snLCBudWxsKTtcbiAgICB9LFxuICAgIGhhbmRsZUNhbmNlbDogZnVuY3Rpb24gaGFuZGxlQ2FuY2VsKCkge1xuICAgICAgdGhpcy4kZW1pdCgncGljaycsIHRoaXMub2xkVmFsdWUpO1xuICAgIH0sXG4gICAgaGFuZGxlTWluQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVNaW5DaGFuZ2UoZGF0ZSkge1xuICAgICAgdGhpcy5taW5EYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJjbGVhck1pbGxpc2Vjb25kc1wiXSkoZGF0ZSk7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZSgpO1xuICAgIH0sXG4gICAgaGFuZGxlTWF4Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVNYXhDaGFuZ2UoZGF0ZSkge1xuICAgICAgdGhpcy5tYXhEYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJjbGVhck1pbGxpc2Vjb25kc1wiXSkoZGF0ZSk7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZSgpO1xuICAgIH0sXG4gICAgaGFuZGxlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoKSB7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkVmFsdWUoW3RoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlXSkpIHtcbiAgICAgICAgdGhpcy4kcmVmcy5taW5TcGlubmVyLnNlbGVjdGFibGVSYW5nZSA9IFtbdGltZV9yYW5nZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX21pblRpbWVPZkRheSh0aGlzLm1pbkRhdGUpLCB0aGlzLm1heERhdGVdXTtcbiAgICAgICAgdGhpcy4kcmVmcy5tYXhTcGlubmVyLnNlbGVjdGFibGVSYW5nZSA9IFtbdGhpcy5taW5EYXRlLCB0aW1lX3JhbmdldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfbWF4VGltZU9mRGF5KHRoaXMubWF4RGF0ZSldXTtcbiAgICAgICAgdGhpcy4kZW1pdCgncGljaycsIFt0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZV0sIHRydWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0TWluU2VsZWN0aW9uUmFuZ2U6IGZ1bmN0aW9uIHNldE1pblNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdC1yYW5nZScsIHN0YXJ0LCBlbmQsICdtaW4nKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uUmFuZ2UgPSBbc3RhcnQsIGVuZF07XG4gICAgfSxcbiAgICBzZXRNYXhTZWxlY3Rpb25SYW5nZTogZnVuY3Rpb24gc2V0TWF4U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZCkge1xuICAgICAgdGhpcy4kZW1pdCgnc2VsZWN0LXJhbmdlJywgc3RhcnQsIGVuZCwgJ21heCcpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25SYW5nZSA9IFtzdGFydCArIHRoaXMub2Zmc2V0LCBlbmQgKyB0aGlzLm9mZnNldF07XG4gICAgfSxcbiAgICBoYW5kbGVDb25maXJtOiBmdW5jdGlvbiBoYW5kbGVDb25maXJtKCkge1xuICAgICAgdmFyIHZpc2libGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlO1xuXG4gICAgICB2YXIgbWluU2VsZWN0YWJsZVJhbmdlID0gdGhpcy4kcmVmcy5taW5TcGlubmVyLnNlbGVjdGFibGVSYW5nZTtcbiAgICAgIHZhciBtYXhTZWxlY3RhYmxlUmFuZ2UgPSB0aGlzLiRyZWZzLm1heFNwaW5uZXIuc2VsZWN0YWJsZVJhbmdlO1xuXG4gICAgICB0aGlzLm1pbkRhdGUgPSBPYmplY3QoZGF0ZV91dGlsX1tcImxpbWl0VGltZVJhbmdlXCJdKSh0aGlzLm1pbkRhdGUsIG1pblNlbGVjdGFibGVSYW5nZSwgdGhpcy5mb3JtYXQpO1xuICAgICAgdGhpcy5tYXhEYXRlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJsaW1pdFRpbWVSYW5nZVwiXSkodGhpcy5tYXhEYXRlLCBtYXhTZWxlY3RhYmxlUmFuZ2UsIHRoaXMuZm9ybWF0KTtcblxuICAgICAgdGhpcy4kZW1pdCgncGljaycsIFt0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZV0sIHZpc2libGUpO1xuICAgIH0sXG4gICAgYWRqdXN0U3Bpbm5lcnM6IGZ1bmN0aW9uIGFkanVzdFNwaW5uZXJzKCkge1xuICAgICAgdGhpcy4kcmVmcy5taW5TcGlubmVyLmFkanVzdFNwaW5uZXJzKCk7XG4gICAgICB0aGlzLiRyZWZzLm1heFNwaW5uZXIuYWRqdXN0U3Bpbm5lcnMoKTtcbiAgICB9LFxuICAgIGNoYW5nZVNlbGVjdGlvblJhbmdlOiBmdW5jdGlvbiBjaGFuZ2VTZWxlY3Rpb25SYW5nZShzdGVwKSB7XG4gICAgICB2YXIgbGlzdCA9IHRoaXMuc2hvd1NlY29uZHMgPyBbMCwgMywgNiwgMTEsIDE0LCAxN10gOiBbMCwgMywgOCwgMTFdO1xuICAgICAgdmFyIG1hcHBpbmcgPSBbJ2hvdXJzJywgJ21pbnV0ZXMnXS5jb25jYXQodGhpcy5zaG93U2Vjb25kcyA/IFsnc2Vjb25kcyddIDogW10pO1xuICAgICAgdmFyIGluZGV4ID0gbGlzdC5pbmRleE9mKHRoaXMuc2VsZWN0aW9uUmFuZ2VbMF0pO1xuICAgICAgdmFyIG5leHQgPSAoaW5kZXggKyBzdGVwICsgbGlzdC5sZW5ndGgpICUgbGlzdC5sZW5ndGg7XG4gICAgICB2YXIgaGFsZiA9IGxpc3QubGVuZ3RoIC8gMjtcbiAgICAgIGlmIChuZXh0IDwgaGFsZikge1xuICAgICAgICB0aGlzLiRyZWZzLm1pblNwaW5uZXIuZW1pdFNlbGVjdFJhbmdlKG1hcHBpbmdbbmV4dF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kcmVmcy5tYXhTcGlubmVyLmVtaXRTZWxlY3RSYW5nZShtYXBwaW5nW25leHQgLSBoYWxmXSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpc1ZhbGlkVmFsdWU6IGZ1bmN0aW9uIGlzVmFsaWRWYWx1ZShkYXRlKSB7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRlKSAmJiBPYmplY3QoZGF0ZV91dGlsX1tcInRpbWVXaXRoaW5SYW5nZVwiXSkodGhpcy5taW5EYXRlLCB0aGlzLiRyZWZzLm1pblNwaW5uZXIuc2VsZWN0YWJsZVJhbmdlKSAmJiBPYmplY3QoZGF0ZV91dGlsX1tcInRpbWVXaXRoaW5SYW5nZVwiXSkodGhpcy5tYXhEYXRlLCB0aGlzLiRyZWZzLm1heFNwaW5uZXIuc2VsZWN0YWJsZVJhbmdlKTtcbiAgICB9LFxuICAgIGhhbmRsZUtleWRvd246IGZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZXZlbnQpIHtcbiAgICAgIHZhciBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICAgIHZhciBtYXBwaW5nID0geyAzODogLTEsIDQwOiAxLCAzNzogLTEsIDM5OiAxIH07XG5cbiAgICAgIC8vIExlZnQgb3IgUmlnaHRcbiAgICAgIGlmIChrZXlDb2RlID09PSAzNyB8fCBrZXlDb2RlID09PSAzOSkge1xuICAgICAgICB2YXIgc3RlcCA9IG1hcHBpbmdba2V5Q29kZV07XG4gICAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uUmFuZ2Uoc3RlcCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVXAgb3IgRG93blxuICAgICAgaWYgKGtleUNvZGUgPT09IDM4IHx8IGtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgIHZhciBfc3RlcCA9IG1hcHBpbmdba2V5Q29kZV07XG4gICAgICAgIHRoaXMuc3Bpbm5lci5zY3JvbGxEb3duKF9zdGVwKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9wYW5lbC90aW1lLXJhbmdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYW5lbF90aW1lX3JhbmdldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHRpbWVfcmFuZ2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUtcmFuZ2UudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdGltZV9yYW5nZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhbmVsX3RpbWVfcmFuZ2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHRpbWVfcmFuZ2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF9mYjI4NjYwZV9yZW5kZXIsXG4gIHRpbWVfcmFuZ2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF9mYjI4NjYwZV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHRpbWVfcmFuZ2VfYXBpOyB9XG50aW1lX3JhbmdlX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZGF0ZS1waWNrZXIvc3JjL3BhbmVsL3RpbWUtcmFuZ2UudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRpbWVfcmFuZ2UgPSAodGltZV9yYW5nZV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RhdGUtcGlja2VyL3NyYy9waWNrZXIvdGltZS1waWNrZXIuanNcblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGltZV9waWNrZXIgPSAoe1xuICBtaXhpbnM6IFtwaWNrZXJdLFxuXG4gIG5hbWU6ICdFbFRpbWVQaWNrZXInLFxuXG4gIHByb3BzOiB7XG4gICAgaXNSYW5nZTogQm9vbGVhbixcbiAgICBhcnJvd0NvbnRyb2w6IEJvb2xlYW5cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnJ1xuICAgIH07XG4gIH0sXG5cblxuICB3YXRjaDoge1xuICAgIGlzUmFuZ2U6IGZ1bmN0aW9uIGlzUmFuZ2UoX2lzUmFuZ2UpIHtcbiAgICAgIGlmICh0aGlzLnBpY2tlcikge1xuICAgICAgICB0aGlzLnVubW91bnRQaWNrZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gX2lzUmFuZ2UgPyAndGltZXJhbmdlJyA6ICd0aW1lJztcbiAgICAgICAgdGhpcy5wYW5lbCA9IF9pc1JhbmdlID8gdGltZV9yYW5nZSA6IHBhbmVsX3RpbWU7XG4gICAgICAgIHRoaXMubW91bnRQaWNrZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudHlwZSA9IF9pc1JhbmdlID8gJ3RpbWVyYW5nZScgOiAndGltZSc7XG4gICAgICAgIHRoaXMucGFuZWwgPSBfaXNSYW5nZSA/IHRpbWVfcmFuZ2UgOiBwYW5lbF90aW1lO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMudHlwZSA9IHRoaXMuaXNSYW5nZSA/ICd0aW1lcmFuZ2UnIDogJ3RpbWUnO1xuICAgIHRoaXMucGFuZWwgPSB0aGlzLmlzUmFuZ2UgPyB0aW1lX3JhbmdlIDogcGFuZWxfdGltZTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RpbWUtcGlja2VyL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnRpbWVfcGlja2VyLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodGltZV9waWNrZXIubmFtZSwgdGltZV9waWNrZXIpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfdGltZV9waWNrZXIgPSAodGltZV9waWNrZXIpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9wb3BvdmVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjA2MDI3MiZcbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNTIwNjAyNzJfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwic3BhblwiLFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcInRyYW5zaXRpb25cIixcbiAgICAgICAge1xuICAgICAgICAgIGF0dHJzOiB7IG5hbWU6IF92bS50cmFuc2l0aW9uIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIFwiYWZ0ZXItZW50ZXJcIjogX3ZtLmhhbmRsZUFmdGVyRW50ZXIsXG4gICAgICAgICAgICBcImFmdGVyLWxlYXZlXCI6IF92bS5oYW5kbGVBZnRlckxlYXZlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6ICFfdm0uZGlzYWJsZWQgJiYgX3ZtLnNob3dQb3BwZXIsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIiFkaXNhYmxlZCAmJiBzaG93UG9wcGVyXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlZjogXCJwb3BwZXJcIixcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcG9wb3ZlciBlbC1wb3BwZXJcIixcbiAgICAgICAgICAgICAgY2xhc3M6IFtfdm0ucG9wcGVyQ2xhc3MsIF92bS5jb250ZW50ICYmIFwiZWwtcG9wb3Zlci0tcGxhaW5cIl0sXG4gICAgICAgICAgICAgIHN0eWxlOiB7IHdpZHRoOiBfdm0ud2lkdGggKyBcInB4XCIgfSxcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICByb2xlOiBcInRvb2x0aXBcIixcbiAgICAgICAgICAgICAgICBpZDogX3ZtLnRvb2x0aXBJZCxcbiAgICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6XG4gICAgICAgICAgICAgICAgICBfdm0uZGlzYWJsZWQgfHwgIV92bS5zaG93UG9wcGVyID8gXCJ0cnVlXCIgOiBcImZhbHNlXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLnRpdGxlXG4gICAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXBvcG92ZXJfX3RpdGxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7IHRleHRDb250ZW50OiBfdm0uX3MoX3ZtLnRpdGxlKSB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgIF92bS5fdChcImRlZmF1bHRcIiwgW192bS5fdihfdm0uX3MoX3ZtLmNvbnRlbnQpKV0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgXVxuICAgICAgKSxcbiAgICAgIF9jKFxuICAgICAgICBcInNwYW5cIixcbiAgICAgICAgeyByZWY6IFwid3JhcHBlclwiLCBzdGF0aWNDbGFzczogXCJlbC1wb3BvdmVyX19yZWZlcmVuY2Utd3JhcHBlclwiIH0sXG4gICAgICAgIFtfdm0uX3QoXCJyZWZlcmVuY2VcIildLFxuICAgICAgICAyXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNTIwNjAyNzJfc3RhdGljUmVuZGVyRm5zID0gW11cbm1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF81MjA2MDI3Ml9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3BvcG92ZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUyMDYwMjcyJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9wb3BvdmVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsUG9wb3ZlcicsXG5cbiAgbWl4aW5zOiBbdnVlX3BvcHBlcl9kZWZhdWx0LmFdLFxuXG4gIHByb3BzOiB7XG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2NsaWNrJyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbJ2NsaWNrJywgJ2ZvY3VzJywgJ2hvdmVyJywgJ21hbnVhbCddLmluZGV4T2YodmFsdWUpID4gLTE7XG4gICAgICB9XG4gICAgfSxcbiAgICBvcGVuRGVsYXk6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIGNsb3NlRGVsYXk6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDIwMFxuICAgIH0sXG4gICAgdGl0bGU6IFN0cmluZyxcbiAgICBkaXNhYmxlZDogQm9vbGVhbixcbiAgICBjb250ZW50OiBTdHJpbmcsXG4gICAgcmVmZXJlbmNlOiB7fSxcbiAgICBwb3BwZXJDbGFzczogU3RyaW5nLFxuICAgIHdpZHRoOiB7fSxcbiAgICB2aXNpYmxlQXJyb3c6IHtcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGFycm93T2Zmc2V0OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICB0cmFuc2l0aW9uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnZmFkZS1pbi1saW5lYXInXG4gICAgfSxcbiAgICB0YWJpbmRleDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH1cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIHRvb2x0aXBJZDogZnVuY3Rpb24gdG9vbHRpcElkKCkge1xuICAgICAgcmV0dXJuICdlbC1wb3BvdmVyLScgKyBPYmplY3QodXRpbF9bXCJnZW5lcmF0ZUlkXCJdKSgpO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBzaG93UG9wcGVyOiBmdW5jdGlvbiBzaG93UG9wcGVyKHZhbCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFsID8gdGhpcy4kZW1pdCgnc2hvdycpIDogdGhpcy4kZW1pdCgnaGlkZScpO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgcmVmZXJlbmNlID0gdGhpcy5yZWZlcmVuY2VFbG0gPSB0aGlzLnJlZmVyZW5jZSB8fCB0aGlzLiRyZWZzLnJlZmVyZW5jZTtcbiAgICB2YXIgcG9wcGVyID0gdGhpcy5wb3BwZXIgfHwgdGhpcy4kcmVmcy5wb3BwZXI7XG5cbiAgICBpZiAoIXJlZmVyZW5jZSAmJiB0aGlzLiRyZWZzLndyYXBwZXIuY2hpbGRyZW4pIHtcbiAgICAgIHJlZmVyZW5jZSA9IHRoaXMucmVmZXJlbmNlRWxtID0gdGhpcy4kcmVmcy53cmFwcGVyLmNoaWxkcmVuWzBdO1xuICAgIH1cbiAgICAvLyDlj6/orr/pl67mgKdcbiAgICBpZiAocmVmZXJlbmNlKSB7XG4gICAgICBPYmplY3QoZG9tX1tcImFkZENsYXNzXCJdKShyZWZlcmVuY2UsICdlbC1wb3BvdmVyX19yZWZlcmVuY2UnKTtcbiAgICAgIHJlZmVyZW5jZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLnRvb2x0aXBJZCk7XG4gICAgICByZWZlcmVuY2Uuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIHRoaXMudGFiaW5kZXgpOyAvLyB0YWLluo/liJdcbiAgICAgIHBvcHBlci5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgMCk7XG5cbiAgICAgIGlmICh0aGlzLnRyaWdnZXIgIT09ICdjbGljaycpIHtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkocmVmZXJlbmNlLCAnZm9jdXNpbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpcy5oYW5kbGVGb2N1cygpO1xuICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHJlZmVyZW5jZS5fX3Z1ZV9fO1xuICAgICAgICAgIGlmIChpbnN0YW5jZSAmJiB0eXBlb2YgaW5zdGFuY2UuZm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkocG9wcGVyLCAnZm9jdXNpbicsIHRoaXMuaGFuZGxlRm9jdXMpO1xuICAgICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShyZWZlcmVuY2UsICdmb2N1c291dCcsIHRoaXMuaGFuZGxlQmx1cik7XG4gICAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHBvcHBlciwgJ2ZvY3Vzb3V0JywgdGhpcy5oYW5kbGVCbHVyKTtcbiAgICAgIH1cbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHJlZmVyZW5jZSwgJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd24pO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkocmVmZXJlbmNlLCAnY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkocmVmZXJlbmNlLCAnY2xpY2snLCB0aGlzLmRvVG9nZ2xlKTtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKGRvY3VtZW50LCAnY2xpY2snLCB0aGlzLmhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIH0gZWxzZSBpZiAodGhpcy50cmlnZ2VyID09PSAnaG92ZXInKSB7XG4gICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShyZWZlcmVuY2UsICdtb3VzZWVudGVyJywgdGhpcy5oYW5kbGVNb3VzZUVudGVyKTtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHBvcHBlciwgJ21vdXNlZW50ZXInLCB0aGlzLmhhbmRsZU1vdXNlRW50ZXIpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkocmVmZXJlbmNlLCAnbW91c2VsZWF2ZScsIHRoaXMuaGFuZGxlTW91c2VMZWF2ZSk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShwb3BwZXIsICdtb3VzZWxlYXZlJywgdGhpcy5oYW5kbGVNb3VzZUxlYXZlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2ZvY3VzJykge1xuICAgICAgaWYgKHRoaXMudGFiaW5kZXggPCAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW0VsZW1lbnQgV2Fybl1bUG9wb3Zlcl1hIG5lZ2F0aXZlIHRhaW5kZXggbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBjYW5ub3QgYmUgZm9jdXNlZCBieSB0YWIga2V5Jyk7XG4gICAgICB9XG4gICAgICBpZiAocmVmZXJlbmNlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0LCB0ZXh0YXJlYScpKSB7XG4gICAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHJlZmVyZW5jZSwgJ2ZvY3VzaW4nLCB0aGlzLmRvU2hvdyk7XG4gICAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHJlZmVyZW5jZSwgJ2ZvY3Vzb3V0JywgdGhpcy5kb0Nsb3NlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHJlZmVyZW5jZSwgJ21vdXNlZG93bicsIHRoaXMuZG9TaG93KTtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkocmVmZXJlbmNlLCAnbW91c2V1cCcsIHRoaXMuZG9DbG9zZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMuY2xlYW51cCgpO1xuICB9LFxuICBkZWFjdGl2YXRlZDogZnVuY3Rpb24gZGVhY3RpdmF0ZWQoKSB7XG4gICAgdGhpcy5jbGVhbnVwKCk7XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgZG9Ub2dnbGU6IGZ1bmN0aW9uIGRvVG9nZ2xlKCkge1xuICAgICAgdGhpcy5zaG93UG9wcGVyID0gIXRoaXMuc2hvd1BvcHBlcjtcbiAgICB9LFxuICAgIGRvU2hvdzogZnVuY3Rpb24gZG9TaG93KCkge1xuICAgICAgdGhpcy5zaG93UG9wcGVyID0gdHJ1ZTtcbiAgICB9LFxuICAgIGRvQ2xvc2U6IGZ1bmN0aW9uIGRvQ2xvc2UoKSB7XG4gICAgICB0aGlzLnNob3dQb3BwZXIgPSBmYWxzZTtcbiAgICB9LFxuICAgIGhhbmRsZUZvY3VzOiBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgIE9iamVjdChkb21fW1wiYWRkQ2xhc3NcIl0pKHRoaXMucmVmZXJlbmNlRWxtLCAnZm9jdXNpbmcnKTtcbiAgICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdjbGljaycgfHwgdGhpcy50cmlnZ2VyID09PSAnZm9jdXMnKSB0aGlzLnNob3dQb3BwZXIgPSB0cnVlO1xuICAgIH0sXG4gICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkodGhpcy5yZWZlcmVuY2VFbG0sICdmb2N1c2luZycpO1xuICAgIH0sXG4gICAgaGFuZGxlQmx1cjogZnVuY3Rpb24gaGFuZGxlQmx1cigpIHtcbiAgICAgIE9iamVjdChkb21fW1wicmVtb3ZlQ2xhc3NcIl0pKHRoaXMucmVmZXJlbmNlRWxtLCAnZm9jdXNpbmcnKTtcbiAgICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdjbGljaycgfHwgdGhpcy50cmlnZ2VyID09PSAnZm9jdXMnKSB0aGlzLnNob3dQb3BwZXIgPSBmYWxzZTtcbiAgICB9LFxuICAgIGhhbmRsZU1vdXNlRW50ZXI6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlRW50ZXIoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcbiAgICAgIGlmICh0aGlzLm9wZW5EZWxheSkge1xuICAgICAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzMi5zaG93UG9wcGVyID0gdHJ1ZTtcbiAgICAgICAgfSwgdGhpcy5vcGVuRGVsYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93UG9wcGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUtleWRvd246IGZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZXYpIHtcbiAgICAgIGlmIChldi5rZXlDb2RlID09PSAyNyAmJiB0aGlzLnRyaWdnZXIgIT09ICdtYW51YWwnKSB7XG4gICAgICAgIC8vIGVzY1xuICAgICAgICB0aGlzLmRvQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZU1vdXNlTGVhdmU6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlTGVhdmUoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcbiAgICAgIGlmICh0aGlzLmNsb3NlRGVsYXkpIHtcbiAgICAgICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczMuc2hvd1BvcHBlciA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmNsb3NlRGVsYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93UG9wcGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVEb2N1bWVudENsaWNrOiBmdW5jdGlvbiBoYW5kbGVEb2N1bWVudENsaWNrKGUpIHtcbiAgICAgIHZhciByZWZlcmVuY2UgPSB0aGlzLnJlZmVyZW5jZSB8fCB0aGlzLiRyZWZzLnJlZmVyZW5jZTtcbiAgICAgIHZhciBwb3BwZXIgPSB0aGlzLnBvcHBlciB8fCB0aGlzLiRyZWZzLnBvcHBlcjtcblxuICAgICAgaWYgKCFyZWZlcmVuY2UgJiYgdGhpcy4kcmVmcy53cmFwcGVyLmNoaWxkcmVuKSB7XG4gICAgICAgIHJlZmVyZW5jZSA9IHRoaXMucmVmZXJlbmNlRWxtID0gdGhpcy4kcmVmcy53cmFwcGVyLmNoaWxkcmVuWzBdO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLiRlbCB8fCAhcmVmZXJlbmNlIHx8IHRoaXMuJGVsLmNvbnRhaW5zKGUudGFyZ2V0KSB8fCByZWZlcmVuY2UuY29udGFpbnMoZS50YXJnZXQpIHx8ICFwb3BwZXIgfHwgcG9wcGVyLmNvbnRhaW5zKGUudGFyZ2V0KSkgcmV0dXJuO1xuICAgICAgdGhpcy5zaG93UG9wcGVyID0gZmFsc2U7XG4gICAgfSxcbiAgICBoYW5kbGVBZnRlckVudGVyOiBmdW5jdGlvbiBoYW5kbGVBZnRlckVudGVyKCkge1xuICAgICAgdGhpcy4kZW1pdCgnYWZ0ZXItZW50ZXInKTtcbiAgICB9LFxuICAgIGhhbmRsZUFmdGVyTGVhdmU6IGZ1bmN0aW9uIGhhbmRsZUFmdGVyTGVhdmUoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdhZnRlci1sZWF2ZScpO1xuICAgICAgdGhpcy5kb0Rlc3Ryb3koKTtcbiAgICB9LFxuICAgIGNsZWFudXA6IGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICBpZiAodGhpcy5vcGVuRGVsYXkgfHwgdGhpcy5jbG9zZURlbGF5KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIHZhciByZWZlcmVuY2UgPSB0aGlzLnJlZmVyZW5jZTtcblxuICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdjbGljaycsIHRoaXMuZG9Ub2dnbGUpO1xuICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdtb3VzZXVwJywgdGhpcy5kb0Nsb3NlKTtcbiAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnbW91c2Vkb3duJywgdGhpcy5kb1Nob3cpO1xuICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdmb2N1c2luJywgdGhpcy5kb1Nob3cpO1xuICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdmb2N1c291dCcsIHRoaXMuZG9DbG9zZSk7XG4gICAgT2JqZWN0KGRvbV9bXCJvZmZcIl0pKHJlZmVyZW5jZSwgJ21vdXNlZG93bicsIHRoaXMuZG9TaG93KTtcbiAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnbW91c2V1cCcsIHRoaXMuZG9DbG9zZSk7XG4gICAgT2JqZWN0KGRvbV9bXCJvZmZcIl0pKHJlZmVyZW5jZSwgJ21vdXNlbGVhdmUnLCB0aGlzLmhhbmRsZU1vdXNlTGVhdmUpO1xuICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdtb3VzZWVudGVyJywgdGhpcy5oYW5kbGVNb3VzZUVudGVyKTtcbiAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkoZG9jdW1lbnQsICdjbGljaycsIHRoaXMuaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wb3BvdmVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChtYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3BvcG92ZXIvc3JjL21haW4udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgbWFpbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNTIwNjAyNzJfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNTIwNjAyNzJfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBtYWluX2FwaTsgfVxubWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3BvcG92ZXIvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1haW4gPSAobWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3BvcG92ZXIvc3JjL2RpcmVjdGl2ZS5qc1xudmFyIGdldFJlZmVyZW5jZSA9IGZ1bmN0aW9uIGdldFJlZmVyZW5jZShlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgdmFyIF9yZWYgPSBiaW5kaW5nLmV4cHJlc3Npb24gPyBiaW5kaW5nLnZhbHVlIDogYmluZGluZy5hcmc7XG4gIHZhciBwb3BwZXIgPSB2bm9kZS5jb250ZXh0LiRyZWZzW19yZWZdO1xuICBpZiAocG9wcGVyKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocG9wcGVyKSkge1xuICAgICAgcG9wcGVyWzBdLiRyZWZzLnJlZmVyZW5jZSA9IGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3BwZXIuJHJlZnMucmVmZXJlbmNlID0gZWw7XG4gICAgfVxuICB9XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkaXJlY3RpdmUgPSAoe1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIGdldFJlZmVyZW5jZShlbCwgYmluZGluZywgdm5vZGUpO1xuICB9LFxuICBpbnNlcnRlZDogZnVuY3Rpb24gaW5zZXJ0ZWQoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgZ2V0UmVmZXJlbmNlKGVsLCBiaW5kaW5nLCB2bm9kZSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wb3BvdmVyL2luZGV4LmpzXG5cblxuXG5cbmV4dGVybmFsX3Z1ZV9kZWZhdWx0LmEuZGlyZWN0aXZlKCdwb3BvdmVyJywgZGlyZWN0aXZlKTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbm1haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmRpcmVjdGl2ZSgncG9wb3ZlcicsIGRpcmVjdGl2ZSk7XG4gIFZ1ZS5jb21wb25lbnQobWFpbi5uYW1lLCBtYWluKTtcbn07XG5tYWluLmRpcmVjdGl2ZSA9IGRpcmVjdGl2ZTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcG9wb3ZlciA9IChtYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdG9vbHRpcC9zcmMvbWFpbi5qc1xuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX21haW4gPSAoe1xuICBuYW1lOiAnRWxUb29sdGlwJyxcblxuICBtaXhpbnM6IFt2dWVfcG9wcGVyX2RlZmF1bHQuYV0sXG5cbiAgcHJvcHM6IHtcbiAgICBvcGVuRGVsYXk6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIG1hbnVhbDogQm9vbGVhbixcbiAgICBlZmZlY3Q6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdkYXJrJ1xuICAgIH0sXG4gICAgYXJyb3dPZmZzZXQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIHBvcHBlckNsYXNzOiBTdHJpbmcsXG4gICAgY29udGVudDogU3RyaW5nLFxuICAgIHZpc2libGVBcnJvdzoge1xuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2VsLWZhZGUtaW4tbGluZWFyJ1xuICAgIH0sXG4gICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYm91bmRhcmllc1BhZGRpbmc6IDEwLFxuICAgICAgICAgIGdwdUFjY2VsZXJhdGlvbjogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVudGVyYWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGhpZGVBZnRlcjoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgdGFiaW5kZXg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9vbHRpcElkOiAnZWwtdG9vbHRpcC0nICsgT2JqZWN0KHV0aWxfW1wiZ2VuZXJhdGVJZFwiXSkoKSxcbiAgICAgIHRpbWVvdXRQZW5kaW5nOiBudWxsLFxuICAgICAgZm9jdXNpbmc6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgYmVmb3JlQ3JlYXRlOiBmdW5jdGlvbiBiZWZvcmVDcmVhdGUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuXG4gICAgdGhpcy5wb3BwZXJWTSA9IG5ldyBleHRlcm5hbF92dWVfZGVmYXVsdC5hKHtcbiAgICAgIGRhdGE6IHsgbm9kZTogJycgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgICAgIH1cbiAgICB9KS4kbW91bnQoKTtcblxuICAgIHRoaXMuZGVib3VuY2VDbG9zZSA9IGRlYm91bmNlX2RlZmF1bHQoKSgyMDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVDbG9zZVBvcHBlcigpO1xuICAgIH0pO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICBpZiAodGhpcy5wb3BwZXJWTSkge1xuICAgICAgdGhpcy5wb3BwZXJWTS5ub2RlID0gaChcbiAgICAgICAgJ3RyYW5zaXRpb24nLFxuICAgICAgICB7XG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMudHJhbnNpdGlvblxuICAgICAgICAgIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgICdhZnRlckxlYXZlJzogdGhpcy5kb0Rlc3Ryb3lcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtoKFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICdtb3VzZWxlYXZlJzogZnVuY3Rpb24gbW91c2VsZWF2ZSgpIHtcbiAgICAgICAgICAgICAgICBfdGhpczIuc2V0RXhwZWN0ZWRTdGF0ZShmYWxzZSk7X3RoaXMyLmRlYm91bmNlQ2xvc2UoKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ21vdXNlZW50ZXInOiBmdW5jdGlvbiBtb3VzZWVudGVyKCkge1xuICAgICAgICAgICAgICAgIF90aGlzMi5zZXRFeHBlY3RlZFN0YXRlKHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZWY6ICdwb3BwZXInLFxuICAgICAgICAgICAgYXR0cnM6IHsgcm9sZTogJ3Rvb2x0aXAnLFxuICAgICAgICAgICAgICBpZDogdGhpcy50b29sdGlwSWQsXG4gICAgICAgICAgICAgICdhcmlhLWhpZGRlbic6IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuc2hvd1BvcHBlciA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG4gICAgICAgICAgICAgIHZhbHVlOiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLnNob3dQb3BwZXJcbiAgICAgICAgICAgIH1dLFxuXG4gICAgICAgICAgICAnY2xhc3MnOiBbJ2VsLXRvb2x0aXBfX3BvcHBlcicsICdpcy0nICsgdGhpcy5lZmZlY3QsIHRoaXMucG9wcGVyQ2xhc3NdIH0sXG4gICAgICAgICAgW3RoaXMuJHNsb3RzLmNvbnRlbnQgfHwgdGhpcy5jb250ZW50XVxuICAgICAgICApXVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgZmlyc3RFbGVtZW50ID0gdGhpcy5nZXRGaXJzdEVsZW1lbnQoKTtcbiAgICBpZiAoIWZpcnN0RWxlbWVudCkgcmV0dXJuIG51bGw7XG5cbiAgICB2YXIgZGF0YSA9IGZpcnN0RWxlbWVudC5kYXRhID0gZmlyc3RFbGVtZW50LmRhdGEgfHwge307XG4gICAgZGF0YS5zdGF0aWNDbGFzcyA9IHRoaXMuYWRkVG9vbHRpcENsYXNzKGRhdGEuc3RhdGljQ2xhc3MpO1xuXG4gICAgcmV0dXJuIGZpcnN0RWxlbWVudDtcbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHRoaXMucmVmZXJlbmNlRWxtID0gdGhpcy4kZWw7XG4gICAgaWYgKHRoaXMuJGVsLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICB0aGlzLiRlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLnRvb2x0aXBJZCk7XG4gICAgICB0aGlzLiRlbC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgdGhpcy50YWJpbmRleCk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKSh0aGlzLnJlZmVyZW5jZUVsbSwgJ21vdXNlZW50ZXInLCB0aGlzLnNob3cpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkodGhpcy5yZWZlcmVuY2VFbG0sICdtb3VzZWxlYXZlJywgdGhpcy5oaWRlKTtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHRoaXMucmVmZXJlbmNlRWxtLCAnZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghX3RoaXMzLiRzbG90cy5kZWZhdWx0IHx8ICFfdGhpczMuJHNsb3RzLmRlZmF1bHQubGVuZ3RoKSB7XG4gICAgICAgICAgX3RoaXMzLmhhbmRsZUZvY3VzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbnN0YW5jZSA9IF90aGlzMy4kc2xvdHMuZGVmYXVsdFswXS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgICAgaWYgKGluc3RhbmNlICYmIGluc3RhbmNlLmZvY3VzKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpczMuaGFuZGxlRm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKSh0aGlzLnJlZmVyZW5jZUVsbSwgJ2JsdXInLCB0aGlzLmhhbmRsZUJsdXIpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkodGhpcy5yZWZlcmVuY2VFbG0sICdjbGljaycsIHRoaXMucmVtb3ZlRm9jdXNpbmcpO1xuICAgIH1cbiAgICAvLyBmaXggaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9pc3N1ZXMvMTQ0MjRcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnBvcHBlclZNKSB7XG4gICAgICB0aGlzLnBvcHBlclZNLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpczMudmFsdWUpIHtcbiAgICAgICAgICBfdGhpczMudXBkYXRlUG9wcGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGZvY3VzaW5nOiBmdW5jdGlvbiBmb2N1c2luZyh2YWwpIHtcbiAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJhZGRDbGFzc1wiXSkodGhpcy5yZWZlcmVuY2VFbG0sICdmb2N1c2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkodGhpcy5yZWZlcmVuY2VFbG0sICdmb2N1c2luZycpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHNob3c6IGZ1bmN0aW9uIHNob3coKSB7XG4gICAgICB0aGlzLnNldEV4cGVjdGVkU3RhdGUodHJ1ZSk7XG4gICAgICB0aGlzLmhhbmRsZVNob3dQb3BwZXIoKTtcbiAgICB9LFxuICAgIGhpZGU6IGZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgICB0aGlzLnNldEV4cGVjdGVkU3RhdGUoZmFsc2UpO1xuICAgICAgdGhpcy5kZWJvdW5jZUNsb3NlKCk7XG4gICAgfSxcbiAgICBoYW5kbGVGb2N1czogZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICB0aGlzLmZvY3VzaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH0sXG4gICAgaGFuZGxlQmx1cjogZnVuY3Rpb24gaGFuZGxlQmx1cigpIHtcbiAgICAgIHRoaXMuZm9jdXNpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH0sXG4gICAgcmVtb3ZlRm9jdXNpbmc6IGZ1bmN0aW9uIHJlbW92ZUZvY3VzaW5nKCkge1xuICAgICAgdGhpcy5mb2N1c2luZyA9IGZhbHNlO1xuICAgIH0sXG4gICAgYWRkVG9vbHRpcENsYXNzOiBmdW5jdGlvbiBhZGRUb29sdGlwQ2xhc3MocHJldikge1xuICAgICAgaWYgKCFwcmV2KSB7XG4gICAgICAgIHJldHVybiAnZWwtdG9vbHRpcCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ2VsLXRvb2x0aXAgJyArIHByZXYucmVwbGFjZSgnZWwtdG9vbHRpcCcsICcnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVNob3dQb3BwZXI6IGZ1bmN0aW9uIGhhbmRsZVNob3dQb3BwZXIoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLmV4cGVjdGVkU3RhdGUgfHwgdGhpcy5tYW51YWwpIHJldHVybjtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzNC5zaG93UG9wcGVyID0gdHJ1ZTtcbiAgICAgIH0sIHRoaXMub3BlbkRlbGF5KTtcblxuICAgICAgaWYgKHRoaXMuaGlkZUFmdGVyID4gMCkge1xuICAgICAgICB0aGlzLnRpbWVvdXRQZW5kaW5nID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXM0LnNob3dQb3BwZXIgPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5oaWRlQWZ0ZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlQ2xvc2VQb3BwZXI6IGZ1bmN0aW9uIGhhbmRsZUNsb3NlUG9wcGVyKCkge1xuICAgICAgaWYgKHRoaXMuZW50ZXJhYmxlICYmIHRoaXMuZXhwZWN0ZWRTdGF0ZSB8fCB0aGlzLm1hbnVhbCkgcmV0dXJuO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG5cbiAgICAgIGlmICh0aGlzLnRpbWVvdXRQZW5kaW5nKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRQZW5kaW5nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2hvd1BvcHBlciA9IGZhbHNlO1xuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmRvRGVzdHJveSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0RXhwZWN0ZWRTdGF0ZTogZnVuY3Rpb24gc2V0RXhwZWN0ZWRTdGF0ZShleHBlY3RlZFN0YXRlKSB7XG4gICAgICBpZiAoZXhwZWN0ZWRTdGF0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFBlbmRpbmcpO1xuICAgICAgfVxuICAgICAgdGhpcy5leHBlY3RlZFN0YXRlID0gZXhwZWN0ZWRTdGF0ZTtcbiAgICB9LFxuICAgIGdldEZpcnN0RWxlbWVudDogZnVuY3Rpb24gZ2V0Rmlyc3RFbGVtZW50KCkge1xuICAgICAgdmFyIHNsb3RzID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShzbG90cykpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGVsZW1lbnQgPSBudWxsO1xuICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHNsb3RzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBpZiAoc2xvdHNbaW5kZXhdICYmIHNsb3RzW2luZGV4XS50YWcpIHtcbiAgICAgICAgICBlbGVtZW50ID0gc2xvdHNbaW5kZXhdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICB9LFxuXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgdGhpcy5wb3BwZXJWTSAmJiB0aGlzLnBvcHBlclZNLiRkZXN0cm95KCk7XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIHZhciByZWZlcmVuY2UgPSB0aGlzLnJlZmVyZW5jZUVsbTtcbiAgICBpZiAocmVmZXJlbmNlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnbW91c2VlbnRlcicsIHRoaXMuc2hvdyk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnbW91c2VsZWF2ZScsIHRoaXMuaGlkZSk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnZm9jdXMnLCB0aGlzLmhhbmRsZUZvY3VzKTtcbiAgICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdibHVyJywgdGhpcy5oYW5kbGVCbHVyKTtcbiAgICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdjbGljaycsIHRoaXMucmVtb3ZlRm9jdXNpbmcpO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Rvb2x0aXAvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3JjX21haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzcmNfbWFpbi5uYW1lLCBzcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc190b29sdGlwID0gKHNyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvbWVzc2FnZS1ib3gvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZiMjliMDEyJlxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF82YjI5YjAxMl9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJ0cmFuc2l0aW9uXCIsIHsgYXR0cnM6IHsgbmFtZTogXCJtc2dib3gtZmFkZVwiIH0gfSwgW1xuICAgIF9jKFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgIHZhbHVlOiBfdm0udmlzaWJsZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb246IFwidmlzaWJsZVwiXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1tZXNzYWdlLWJveF9fd3JhcHBlclwiLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHRhYmluZGV4OiBcIi0xXCIsXG4gICAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgICBcImFyaWEtbW9kYWxcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF92bS50aXRsZSB8fCBcImRpYWxvZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3ZtLmhhbmRsZVdyYXBwZXJDbGljaygkZXZlbnQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLW1lc3NhZ2UtYm94XCIsXG4gICAgICAgICAgICBjbGFzczogW192bS5jdXN0b21DbGFzcywgX3ZtLmNlbnRlciAmJiBcImVsLW1lc3NhZ2UtYm94LS1jZW50ZXJcIl1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF92bS50aXRsZSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtbWVzc2FnZS1ib3hfX2hlYWRlclwiIH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtbWVzc2FnZS1ib3hfX3RpdGxlXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uaWNvbiAmJiBfdm0uY2VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBbXCJlbC1tZXNzYWdlLWJveF9fc3RhdHVzXCIsIF92bS5pY29uXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW192bS5fdihfdm0uX3MoX3ZtLnRpdGxlKSldKVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfdm0uc2hvd0Nsb3NlXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1tZXNzYWdlLWJveF9faGVhZGVyYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiYnV0dG9uXCIsIFwiYXJpYS1sYWJlbFwiOiBcIkNsb3NlXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQWN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGlzdGluZ3Vpc2hDYW5jZWxBbmRDbG9zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImNhbmNlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlkb3duOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXlDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVBY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaXN0aW5ndWlzaENhbmNlbEFuZENsb3NlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiY2FuY2VsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtbWVzc2FnZS1ib3hfX2Nsb3NlIGVsLWljb24tY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLW1lc3NhZ2UtYm94X19jb250ZW50XCIgfSwgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLW1lc3NhZ2UtYm94X19jb250YWluZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLmljb24gJiYgIV92bS5jZW50ZXIgJiYgX3ZtLm1lc3NhZ2UgIT09IFwiXCJcbiAgICAgICAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBjbGFzczogW1wiZWwtbWVzc2FnZS1ib3hfX3N0YXR1c1wiLCBfdm0uaWNvbl0gfSlcbiAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgX3ZtLm1lc3NhZ2UgIT09IFwiXCJcbiAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLW1lc3NhZ2UtYm94X19tZXNzYWdlXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3QoXCJkZWZhdWx0XCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIV92bS5kYW5nZXJvdXNseVVzZUhUTUxTdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwicFwiLCBbX3ZtLl92KF92bS5fcyhfdm0ubWVzc2FnZSkpXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9jKFwicFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7IGlubmVySFRNTDogX3ZtLl9zKF92bS5tZXNzYWdlKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd0lucHV0LFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd0lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLW1lc3NhZ2UtYm94X19pbnB1dFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcImVsLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmOiBcImlucHV0XCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogX3ZtLmlucHV0VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLmlucHV0UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbmF0aXZlT246IHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXlkb3duOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXlDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlSW5wdXRFbnRlcigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uaW5wdXRWYWx1ZSA9ICQkdlxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJpbnB1dFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLW1lc3NhZ2UtYm94X19lcnJvcm1zZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAhIV92bS5lZGl0b3JFcnJvck1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcInZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JFcnJvck1lc3NhZ2UpKV1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1tZXNzYWdlLWJveF9fYnRuc1wiIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfdm0uc2hvd0NhbmNlbEJ1dHRvblxuICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImVsLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBbX3ZtLmNhbmNlbEJ1dHRvbkNsYXNzZXNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogX3ZtLmNhbmNlbEJ1dHRvbkxvYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kOiBfdm0ucm91bmRCdXR0b24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleWRvd246IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2soXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXlDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkVudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5oYW5kbGVBY3Rpb24oXCJjYW5jZWxcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQWN0aW9uKFwiY2FuY2VsXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5jYW5jZWxCdXR0b25UZXh0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS50KFwiZWwubWVzc2FnZWJveC5jYW5jZWxcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImVsLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zaG93Q29uZmlybUJ1dHRvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd0NvbmZpcm1CdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgcmVmOiBcImNvbmZpcm1cIixcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFtfdm0uY29uZmlybUJ1dHRvbkNsYXNzZXNdLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc6IF92bS5jb25maXJtQnV0dG9uTG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICByb3VuZDogX3ZtLnJvdW5kQnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGtleWRvd246IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2soXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmtleUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZUFjdGlvbihcImNvbmZpcm1cIilcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZUFjdGlvbihcImNvbmZpcm1cIilcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5jb25maXJtQnV0dG9uVGV4dCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS50KFwiZWwubWVzc2FnZWJveC5jb25maXJtXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApXG4gICAgICAgICAgXVxuICAgICAgICApXG4gICAgICBdXG4gICAgKVxuICBdKVxufVxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF82YjI5YjAxMl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzZiMjliMDEyX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVzc2FnZS1ib3gvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZiMjliMDEyJlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbG9jYWxlXCJcbnZhciBsaWJfbG9jYWxlXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xudmFyIGxpYl9sb2NhbGVfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4obGliX2xvY2FsZV8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvYXJpYS1kaWFsb2dcIlxudmFyIGFyaWFfZGlhbG9nXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDApO1xudmFyIGFyaWFfZGlhbG9nX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGFyaWFfZGlhbG9nXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL21lc3NhZ2UtYm94L3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cblxudmFyIG1lc3NhZ2VCb3ggPSB2b2lkIDA7XG52YXIgdHlwZU1hcCA9IHtcbiAgc3VjY2VzczogJ3N1Y2Nlc3MnLFxuICBpbmZvOiAnaW5mbycsXG4gIHdhcm5pbmc6ICd3YXJuaW5nJyxcbiAgZXJyb3I6ICdlcnJvcidcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1lc3NhZ2VfYm94X3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbWl4aW5zOiBbcG9wdXBfZGVmYXVsdC5hLCBsb2NhbGVfZGVmYXVsdC5hXSxcblxuICBwcm9wczoge1xuICAgIG1vZGFsOiB7XG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBsb2NrU2Nyb2xsOiB7XG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBzaG93Q2xvc2U6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBjbG9zZU9uQ2xpY2tNb2RhbDoge1xuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgY2xvc2VPblByZXNzRXNjYXBlOiB7XG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBjbG9zZU9uSGFzaENoYW5nZToge1xuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgY2VudGVyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIHJvdW5kQnV0dG9uOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsSW5wdXQ6IGlucHV0X2RlZmF1bHQuYSxcbiAgICBFbEJ1dHRvbjogYnV0dG9uX2RlZmF1bHQuYVxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgaWNvbjogZnVuY3Rpb24gaWNvbigpIHtcbiAgICAgIHZhciB0eXBlID0gdGhpcy50eXBlLFxuICAgICAgICAgIGljb25DbGFzcyA9IHRoaXMuaWNvbkNsYXNzO1xuXG4gICAgICByZXR1cm4gaWNvbkNsYXNzIHx8ICh0eXBlICYmIHR5cGVNYXBbdHlwZV0gPyAnZWwtaWNvbi0nICsgdHlwZU1hcFt0eXBlXSA6ICcnKTtcbiAgICB9LFxuICAgIGNvbmZpcm1CdXR0b25DbGFzc2VzOiBmdW5jdGlvbiBjb25maXJtQnV0dG9uQ2xhc3NlcygpIHtcbiAgICAgIHJldHVybiAnZWwtYnV0dG9uLS1wcmltYXJ5ICcgKyB0aGlzLmNvbmZpcm1CdXR0b25DbGFzcztcbiAgICB9LFxuICAgIGNhbmNlbEJ1dHRvbkNsYXNzZXM6IGZ1bmN0aW9uIGNhbmNlbEJ1dHRvbkNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gJycgKyB0aGlzLmNhbmNlbEJ1dHRvbkNsYXNzO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZ2V0U2FmZUNsb3NlOiBmdW5jdGlvbiBnZXRTYWZlQ2xvc2UoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgY3VycmVudElkID0gdGhpcy51aWQ7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChjdXJyZW50SWQgPT09IF90aGlzLnVpZCkgX3RoaXMuZG9DbG9zZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBkb0Nsb3NlOiBmdW5jdGlvbiBkb0Nsb3NlKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy52aXNpYmxlKSByZXR1cm47XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2Nsb3NpbmcgPSB0cnVlO1xuXG4gICAgICB0aGlzLm9uQ2xvc2UgJiYgdGhpcy5vbkNsb3NlKCk7XG4gICAgICBtZXNzYWdlQm94LmNsb3NlRGlhbG9nKCk7IC8vIOino+e7kVxuICAgICAgaWYgKHRoaXMubG9ja1Njcm9sbCkge1xuICAgICAgICBzZXRUaW1lb3V0KHRoaXMucmVzdG9yZUJvZHlTdHlsZSwgMjAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgICB0aGlzLmRvQWZ0ZXJDbG9zZSgpO1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpczIuYWN0aW9uKSBfdGhpczIuY2FsbGJhY2soX3RoaXMyLmFjdGlvbiwgX3RoaXMyKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgaGFuZGxlV3JhcHBlckNsaWNrOiBmdW5jdGlvbiBoYW5kbGVXcmFwcGVyQ2xpY2soKSB7XG4gICAgICBpZiAodGhpcy5jbG9zZU9uQ2xpY2tNb2RhbCkge1xuICAgICAgICB0aGlzLmhhbmRsZUFjdGlvbih0aGlzLmRpc3Rpbmd1aXNoQ2FuY2VsQW5kQ2xvc2UgPyAnY2xvc2UnIDogJ2NhbmNlbCcpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlSW5wdXRFbnRlcjogZnVuY3Rpb24gaGFuZGxlSW5wdXRFbnRlcigpIHtcbiAgICAgIGlmICh0aGlzLmlucHV0VHlwZSAhPT0gJ3RleHRhcmVhJykge1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVBY3Rpb24oJ2NvbmZpcm0nKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUFjdGlvbjogZnVuY3Rpb24gaGFuZGxlQWN0aW9uKGFjdGlvbikge1xuICAgICAgaWYgKHRoaXMuJHR5cGUgPT09ICdwcm9tcHQnICYmIGFjdGlvbiA9PT0gJ2NvbmZpcm0nICYmICF0aGlzLnZhbGlkYXRlKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hY3Rpb24gPSBhY3Rpb247XG4gICAgICBpZiAodHlwZW9mIHRoaXMuYmVmb3JlQ2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5jbG9zZSA9IHRoaXMuZ2V0U2FmZUNsb3NlKCk7XG4gICAgICAgIHRoaXMuYmVmb3JlQ2xvc2UoYWN0aW9uLCB0aGlzLCB0aGlzLmNsb3NlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZG9DbG9zZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICAgICAgaWYgKHRoaXMuJHR5cGUgPT09ICdwcm9tcHQnKSB7XG4gICAgICAgIHZhciBpbnB1dFBhdHRlcm4gPSB0aGlzLmlucHV0UGF0dGVybjtcbiAgICAgICAgaWYgKGlucHV0UGF0dGVybiAmJiAhaW5wdXRQYXR0ZXJuLnRlc3QodGhpcy5pbnB1dFZhbHVlIHx8ICcnKSkge1xuICAgICAgICAgIHRoaXMuZWRpdG9yRXJyb3JNZXNzYWdlID0gdGhpcy5pbnB1dEVycm9yTWVzc2FnZSB8fCBPYmplY3QobGliX2xvY2FsZV9bXCJ0XCJdKSgnZWwubWVzc2FnZWJveC5lcnJvcicpO1xuICAgICAgICAgIE9iamVjdChkb21fW1wiYWRkQ2xhc3NcIl0pKHRoaXMuZ2V0SW5wdXRFbGVtZW50KCksICdpbnZhbGlkJyk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbnB1dFZhbGlkYXRvciA9IHRoaXMuaW5wdXRWYWxpZGF0b3I7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXRWYWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgdmFsaWRhdGVSZXN1bHQgPSBpbnB1dFZhbGlkYXRvcih0aGlzLmlucHV0VmFsdWUpO1xuICAgICAgICAgIGlmICh2YWxpZGF0ZVJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yRXJyb3JNZXNzYWdlID0gdGhpcy5pbnB1dEVycm9yTWVzc2FnZSB8fCBPYmplY3QobGliX2xvY2FsZV9bXCJ0XCJdKSgnZWwubWVzc2FnZWJveC5lcnJvcicpO1xuICAgICAgICAgICAgT2JqZWN0KGRvbV9bXCJhZGRDbGFzc1wiXSkodGhpcy5nZXRJbnB1dEVsZW1lbnQoKSwgJ2ludmFsaWQnKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0ZVJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yRXJyb3JNZXNzYWdlID0gdmFsaWRhdGVSZXN1bHQ7XG4gICAgICAgICAgICBPYmplY3QoZG9tX1tcImFkZENsYXNzXCJdKSh0aGlzLmdldElucHV0RWxlbWVudCgpLCAnaW52YWxpZCcpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5lZGl0b3JFcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgIE9iamVjdChkb21fW1wicmVtb3ZlQ2xhc3NcIl0pKHRoaXMuZ2V0SW5wdXRFbGVtZW50KCksICdpbnZhbGlkJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGdldEZpcnN0Rm9jdXM6IGZ1bmN0aW9uIGdldEZpcnN0Rm9jdXMoKSB7XG4gICAgICB2YXIgYnRuID0gdGhpcy4kZWwucXVlcnlTZWxlY3RvcignLmVsLW1lc3NhZ2UtYm94X19idG5zIC5lbC1idXR0b24nKTtcbiAgICAgIHZhciB0aXRsZSA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5lbC1tZXNzYWdlLWJveF9fYnRucyAuZWwtbWVzc2FnZS1ib3hfX3RpdGxlJyk7XG4gICAgICByZXR1cm4gYnRuIHx8IHRpdGxlO1xuICAgIH0sXG4gICAgZ2V0SW5wdXRFbGVtZW50OiBmdW5jdGlvbiBnZXRJbnB1dEVsZW1lbnQoKSB7XG4gICAgICB2YXIgaW5wdXRSZWZzID0gdGhpcy4kcmVmcy5pbnB1dC4kcmVmcztcbiAgICAgIHJldHVybiBpbnB1dFJlZnMuaW5wdXQgfHwgaW5wdXRSZWZzLnRleHRhcmVhO1xuICAgIH0sXG4gICAgaGFuZGxlQ2xvc2U6IGZ1bmN0aW9uIGhhbmRsZUNsb3NlKCkge1xuICAgICAgdGhpcy5oYW5kbGVBY3Rpb24oJ2Nsb3NlJyk7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgaW5wdXRWYWx1ZToge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2YWwpIHtcbiAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHtcbiAgICAgICAgICBpZiAoX3RoaXMzLiR0eXBlID09PSAncHJvbXB0JyAmJiB2YWwgIT09IG51bGwpIHtcbiAgICAgICAgICAgIF90aGlzMy52YWxpZGF0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHZpc2libGU6IGZ1bmN0aW9uIHZpc2libGUodmFsKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgaWYgKHZhbCkge1xuICAgICAgICB0aGlzLnVpZCsrO1xuICAgICAgICBpZiAodGhpcy4kdHlwZSA9PT0gJ2FsZXJ0JyB8fCB0aGlzLiR0eXBlID09PSAnY29uZmlybScpIHtcbiAgICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpczQuJHJlZnMuY29uZmlybS4kZWwuZm9jdXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvY3VzQWZ0ZXJDbG9zZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICBtZXNzYWdlQm94ID0gbmV3IGFyaWFfZGlhbG9nX2RlZmF1bHQuYSh0aGlzLiRlbCwgdGhpcy5mb2N1c0FmdGVyQ2xvc2VkLCB0aGlzLmdldEZpcnN0Rm9jdXMoKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIHByb21wdFxuICAgICAgaWYgKHRoaXMuJHR5cGUgIT09ICdwcm9tcHQnKSByZXR1cm47XG4gICAgICBpZiAodmFsKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChfdGhpczQuJHJlZnMuaW5wdXQgJiYgX3RoaXM0LiRyZWZzLmlucHV0LiRlbCkge1xuICAgICAgICAgICAgX3RoaXM0LmdldElucHV0RWxlbWVudCgpLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCA1MDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lZGl0b3JFcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkodGhpcy5nZXRJbnB1dEVsZW1lbnQoKSwgJ2ludmFsaWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpczUuY2xvc2VPbkhhc2hDaGFuZ2UpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2hhc2hjaGFuZ2UnLCBfdGhpczUuY2xvc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNsb3NlT25IYXNoQ2hhbmdlKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsIHRoaXMuY2xvc2UpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIG1lc3NhZ2VCb3guY2xvc2VEaWFsb2coKTtcbiAgICB9KTtcbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdWlkOiAxLFxuICAgICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgdHlwZTogJycsXG4gICAgICBpY29uQ2xhc3M6ICcnLFxuICAgICAgY3VzdG9tQ2xhc3M6ICcnLFxuICAgICAgc2hvd0lucHV0OiBmYWxzZSxcbiAgICAgIGlucHV0VmFsdWU6IG51bGwsXG4gICAgICBpbnB1dFBsYWNlaG9sZGVyOiAnJyxcbiAgICAgIGlucHV0VHlwZTogJ3RleHQnLFxuICAgICAgaW5wdXRQYXR0ZXJuOiBudWxsLFxuICAgICAgaW5wdXRWYWxpZGF0b3I6IG51bGwsXG4gICAgICBpbnB1dEVycm9yTWVzc2FnZTogJycsXG4gICAgICBzaG93Q29uZmlybUJ1dHRvbjogdHJ1ZSxcbiAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxuICAgICAgYWN0aW9uOiAnJyxcbiAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnJyxcbiAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICcnLFxuICAgICAgY29uZmlybUJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxuICAgICAgY2FuY2VsQnV0dG9uTG9hZGluZzogZmFsc2UsXG4gICAgICBjb25maXJtQnV0dG9uQ2xhc3M6ICcnLFxuICAgICAgY29uZmlybUJ1dHRvbkRpc2FibGVkOiBmYWxzZSxcbiAgICAgIGNhbmNlbEJ1dHRvbkNsYXNzOiAnJyxcbiAgICAgIGVkaXRvckVycm9yTWVzc2FnZTogbnVsbCxcbiAgICAgIGNhbGxiYWNrOiBudWxsLFxuICAgICAgZGFuZ2Vyb3VzbHlVc2VIVE1MU3RyaW5nOiBmYWxzZSxcbiAgICAgIGZvY3VzQWZ0ZXJDbG9zZWQ6IG51bGwsXG4gICAgICBpc09uQ29tcG9zaXRpb246IGZhbHNlLFxuICAgICAgZGlzdGluZ3Vpc2hDYW5jZWxBbmRDbG9zZTogZmFsc2VcbiAgICB9O1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVzc2FnZS1ib3gvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX21lc3NhZ2VfYm94X3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKG1lc3NhZ2VfYm94X3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL21lc3NhZ2UtYm94L3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHNyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfbWVzc2FnZV9ib3hfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF82YjI5YjAxMl9yZW5kZXIsXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF82YjI5YjAxMl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHNyY19tYWluX2FwaTsgfVxuc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9tZXNzYWdlLWJveC9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbWVzc2FnZV9ib3hfc3JjX21haW4gPSAoc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3Zkb21cIlxudmFyIHZkb21fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVzc2FnZS1ib3gvc3JjL21haW4uanNcbnZhciBtYWluX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbnZhciBtYWluX2RlZmF1bHRzID0ge1xuICB0aXRsZTogbnVsbCxcbiAgbWVzc2FnZTogJycsXG4gIHR5cGU6ICcnLFxuICBpY29uQ2xhc3M6ICcnLFxuICBzaG93SW5wdXQ6IGZhbHNlLFxuICBzaG93Q2xvc2U6IHRydWUsXG4gIG1vZGFsRmFkZTogdHJ1ZSxcbiAgbG9ja1Njcm9sbDogdHJ1ZSxcbiAgY2xvc2VPbkNsaWNrTW9kYWw6IHRydWUsXG4gIGNsb3NlT25QcmVzc0VzY2FwZTogdHJ1ZSxcbiAgY2xvc2VPbkhhc2hDaGFuZ2U6IHRydWUsXG4gIGlucHV0VmFsdWU6IG51bGwsXG4gIGlucHV0UGxhY2Vob2xkZXI6ICcnLFxuICBpbnB1dFR5cGU6ICd0ZXh0JyxcbiAgaW5wdXRQYXR0ZXJuOiBudWxsLFxuICBpbnB1dFZhbGlkYXRvcjogbnVsbCxcbiAgaW5wdXRFcnJvck1lc3NhZ2U6ICcnLFxuICBzaG93Q29uZmlybUJ1dHRvbjogdHJ1ZSxcbiAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXG4gIGNvbmZpcm1CdXR0b25Qb3NpdGlvbjogJ3JpZ2h0JyxcbiAgY29uZmlybUJ1dHRvbkhpZ2hsaWdodDogZmFsc2UsXG4gIGNhbmNlbEJ1dHRvbkhpZ2hsaWdodDogZmFsc2UsXG4gIGNvbmZpcm1CdXR0b25UZXh0OiAnJyxcbiAgY2FuY2VsQnV0dG9uVGV4dDogJycsXG4gIGNvbmZpcm1CdXR0b25DbGFzczogJycsXG4gIGNhbmNlbEJ1dHRvbkNsYXNzOiAnJyxcbiAgY3VzdG9tQ2xhc3M6ICcnLFxuICBiZWZvcmVDbG9zZTogbnVsbCxcbiAgZGFuZ2Vyb3VzbHlVc2VIVE1MU3RyaW5nOiBmYWxzZSxcbiAgY2VudGVyOiBmYWxzZSxcbiAgcm91bmRCdXR0b246IGZhbHNlLFxuICBkaXN0aW5ndWlzaENhbmNlbEFuZENsb3NlOiBmYWxzZVxufTtcblxuXG5cblxuXG5cbnZhciBNZXNzYWdlQm94Q29uc3RydWN0b3IgPSBleHRlcm5hbF92dWVfZGVmYXVsdC5hLmV4dGVuZChtZXNzYWdlX2JveF9zcmNfbWFpbik7XG5cbnZhciBjdXJyZW50TXNnID0gdm9pZCAwLFxuICAgIG1haW5faW5zdGFuY2UgPSB2b2lkIDA7XG52YXIgbXNnUXVldWUgPSBbXTtcblxudmFyIGRlZmF1bHRDYWxsYmFjayA9IGZ1bmN0aW9uIGRlZmF1bHRDYWxsYmFjayhhY3Rpb24pIHtcbiAgaWYgKGN1cnJlbnRNc2cpIHtcbiAgICB2YXIgY2FsbGJhY2sgPSBjdXJyZW50TXNnLmNhbGxiYWNrO1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChtYWluX2luc3RhbmNlLnNob3dJbnB1dCkge1xuICAgICAgICBjYWxsYmFjayhtYWluX2luc3RhbmNlLmlucHV0VmFsdWUsIGFjdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjayhhY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3VycmVudE1zZy5yZXNvbHZlKSB7XG4gICAgICBpZiAoYWN0aW9uID09PSAnY29uZmlybScpIHtcbiAgICAgICAgaWYgKG1haW5faW5zdGFuY2Uuc2hvd0lucHV0KSB7XG4gICAgICAgICAgY3VycmVudE1zZy5yZXNvbHZlKHsgdmFsdWU6IG1haW5faW5zdGFuY2UuaW5wdXRWYWx1ZSwgYWN0aW9uOiBhY3Rpb24gfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudE1zZy5yZXNvbHZlKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudE1zZy5yZWplY3QgJiYgKGFjdGlvbiA9PT0gJ2NhbmNlbCcgfHwgYWN0aW9uID09PSAnY2xvc2UnKSkge1xuICAgICAgICBjdXJyZW50TXNnLnJlamVjdChhY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxudmFyIGluaXRJbnN0YW5jZSA9IGZ1bmN0aW9uIGluaXRJbnN0YW5jZSgpIHtcbiAgbWFpbl9pbnN0YW5jZSA9IG5ldyBNZXNzYWdlQm94Q29uc3RydWN0b3Ioe1xuICAgIGVsOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICB9KTtcblxuICBtYWluX2luc3RhbmNlLmNhbGxiYWNrID0gZGVmYXVsdENhbGxiYWNrO1xufTtcblxudmFyIG1haW5fc2hvd05leHRNc2cgPSBmdW5jdGlvbiBzaG93TmV4dE1zZygpIHtcbiAgaWYgKCFtYWluX2luc3RhbmNlKSB7XG4gICAgaW5pdEluc3RhbmNlKCk7XG4gIH1cbiAgbWFpbl9pbnN0YW5jZS5hY3Rpb24gPSAnJztcblxuICBpZiAoIW1haW5faW5zdGFuY2UudmlzaWJsZSB8fCBtYWluX2luc3RhbmNlLmNsb3NlVGltZXIpIHtcbiAgICBpZiAobXNnUXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgY3VycmVudE1zZyA9IG1zZ1F1ZXVlLnNoaWZ0KCk7XG5cbiAgICAgIHZhciBvcHRpb25zID0gY3VycmVudE1zZy5vcHRpb25zO1xuICAgICAgZm9yICh2YXIgcHJvcCBpbiBvcHRpb25zKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgICAgbWFpbl9pbnN0YW5jZVtwcm9wXSA9IG9wdGlvbnNbcHJvcF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmNhbGxiYWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFpbl9pbnN0YW5jZS5jYWxsYmFjayA9IGRlZmF1bHRDYWxsYmFjaztcbiAgICAgIH1cblxuICAgICAgdmFyIG9sZENiID0gbWFpbl9pbnN0YW5jZS5jYWxsYmFjaztcbiAgICAgIG1haW5faW5zdGFuY2UuY2FsbGJhY2sgPSBmdW5jdGlvbiAoYWN0aW9uLCBpbnN0YW5jZSkge1xuICAgICAgICBvbGRDYihhY3Rpb24sIGluc3RhbmNlKTtcbiAgICAgICAgc2hvd05leHRNc2coKTtcbiAgICAgIH07XG4gICAgICBpZiAoT2JqZWN0KHZkb21fW1wiaXNWTm9kZVwiXSkobWFpbl9pbnN0YW5jZS5tZXNzYWdlKSkge1xuICAgICAgICBtYWluX2luc3RhbmNlLiRzbG90cy5kZWZhdWx0ID0gW21haW5faW5zdGFuY2UubWVzc2FnZV07XG4gICAgICAgIG1haW5faW5zdGFuY2UubWVzc2FnZSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgbWFpbl9pbnN0YW5jZS4kc2xvdHMuZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIFsnbW9kYWwnLCAnc2hvd0Nsb3NlJywgJ2Nsb3NlT25DbGlja01vZGFsJywgJ2Nsb3NlT25QcmVzc0VzY2FwZScsICdjbG9zZU9uSGFzaENoYW5nZSddLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgaWYgKG1haW5faW5zdGFuY2VbcHJvcF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1haW5faW5zdGFuY2VbcHJvcF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWFpbl9pbnN0YW5jZS4kZWwpO1xuXG4gICAgICBleHRlcm5hbF92dWVfZGVmYXVsdC5hLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbWFpbl9pbnN0YW5jZS52aXNpYmxlID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcblxudmFyIG1haW5fTWVzc2FnZUJveCA9IGZ1bmN0aW9uIE1lc3NhZ2VCb3gob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgaWYgKGV4dGVybmFsX3Z1ZV9kZWZhdWx0LmEucHJvdG90eXBlLiRpc1NlcnZlcikgcmV0dXJuO1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnIHx8IE9iamVjdCh2ZG9tX1tcImlzVk5vZGVcIl0pKG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIG1lc3NhZ2U6IG9wdGlvbnNcbiAgICB9O1xuICAgIGlmICh0eXBlb2YgYXJndW1lbnRzWzFdID09PSAnc3RyaW5nJykge1xuICAgICAgb3B0aW9ucy50aXRsZSA9IGFyZ3VtZW50c1sxXTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5jYWxsYmFjayAmJiAhY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IG9wdGlvbnMuY2FsbGJhY2s7XG4gIH1cblxuICBpZiAodHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIG1zZ1F1ZXVlLnB1c2goe1xuICAgICAgICBvcHRpb25zOiBtZXJnZV9kZWZhdWx0KCkoe30sIG1haW5fZGVmYXVsdHMsIE1lc3NhZ2VCb3guZGVmYXVsdHMsIG9wdGlvbnMpLFxuICAgICAgICBjYWxsYmFjazogY2FsbGJhY2ssXG4gICAgICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgICAgIHJlamVjdDogcmVqZWN0XG4gICAgICB9KTtcblxuICAgICAgbWFpbl9zaG93TmV4dE1zZygpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG1zZ1F1ZXVlLnB1c2goe1xuICAgICAgb3B0aW9uczogbWVyZ2VfZGVmYXVsdCgpKHt9LCBtYWluX2RlZmF1bHRzLCBNZXNzYWdlQm94LmRlZmF1bHRzLCBvcHRpb25zKSxcbiAgICAgIGNhbGxiYWNrOiBjYWxsYmFja1xuICAgIH0pO1xuXG4gICAgbWFpbl9zaG93TmV4dE1zZygpO1xuICB9XG59O1xuXG5tYWluX01lc3NhZ2VCb3guc2V0RGVmYXVsdHMgPSBmdW5jdGlvbiAoZGVmYXVsdHMpIHtcbiAgbWFpbl9NZXNzYWdlQm94LmRlZmF1bHRzID0gZGVmYXVsdHM7XG59O1xuXG5tYWluX01lc3NhZ2VCb3guYWxlcnQgPSBmdW5jdGlvbiAobWVzc2FnZSwgdGl0bGUsIG9wdGlvbnMpIHtcbiAgaWYgKCh0eXBlb2YgdGl0bGUgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBtYWluX3R5cGVvZih0aXRsZSkpID09PSAnb2JqZWN0Jykge1xuICAgIG9wdGlvbnMgPSB0aXRsZTtcbiAgICB0aXRsZSA9ICcnO1xuICB9IGVsc2UgaWYgKHRpdGxlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aXRsZSA9ICcnO1xuICB9XG4gIHJldHVybiBtYWluX01lc3NhZ2VCb3gobWVyZ2VfZGVmYXVsdCgpKHtcbiAgICB0aXRsZTogdGl0bGUsXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAkdHlwZTogJ2FsZXJ0JyxcbiAgICBjbG9zZU9uUHJlc3NFc2NhcGU6IGZhbHNlLFxuICAgIGNsb3NlT25DbGlja01vZGFsOiBmYWxzZVxuICB9LCBvcHRpb25zKSk7XG59O1xuXG5tYWluX01lc3NhZ2VCb3guY29uZmlybSA9IGZ1bmN0aW9uIChtZXNzYWdlLCB0aXRsZSwgb3B0aW9ucykge1xuICBpZiAoKHR5cGVvZiB0aXRsZSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IG1haW5fdHlwZW9mKHRpdGxlKSkgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucyA9IHRpdGxlO1xuICAgIHRpdGxlID0gJyc7XG4gIH0gZWxzZSBpZiAodGl0bGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRpdGxlID0gJyc7XG4gIH1cbiAgcmV0dXJuIG1haW5fTWVzc2FnZUJveChtZXJnZV9kZWZhdWx0KCkoe1xuICAgIHRpdGxlOiB0aXRsZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICR0eXBlOiAnY29uZmlybScsXG4gICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZVxuICB9LCBvcHRpb25zKSk7XG59O1xuXG5tYWluX01lc3NhZ2VCb3gucHJvbXB0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHRpdGxlLCBvcHRpb25zKSB7XG4gIGlmICgodHlwZW9mIHRpdGxlID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogbWFpbl90eXBlb2YodGl0bGUpKSA9PT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zID0gdGl0bGU7XG4gICAgdGl0bGUgPSAnJztcbiAgfSBlbHNlIGlmICh0aXRsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGl0bGUgPSAnJztcbiAgfVxuICByZXR1cm4gbWFpbl9NZXNzYWdlQm94KG1lcmdlX2RlZmF1bHQoKSh7XG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICBzaG93SW5wdXQ6IHRydWUsXG4gICAgJHR5cGU6ICdwcm9tcHQnXG4gIH0sIG9wdGlvbnMpKTtcbn07XG5cbm1haW5fTWVzc2FnZUJveC5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgbWFpbl9pbnN0YW5jZS5kb0Nsb3NlKCk7XG4gIG1haW5faW5zdGFuY2UudmlzaWJsZSA9IGZhbHNlO1xuICBtc2dRdWV1ZSA9IFtdO1xuICBjdXJyZW50TXNnID0gbnVsbDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX21lc3NhZ2VfYm94X3NyY19tYWluID0gKG1haW5fTWVzc2FnZUJveCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVzc2FnZS1ib3gvaW5kZXguanNcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbWVzc2FnZV9ib3ggPSAocGFja2FnZXNfbWVzc2FnZV9ib3hfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9icmVhZGNydW1iL3NyYy9icmVhZGNydW1iLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YjQ2NGMwNiZcbnZhciBicmVhZGNydW1idnVlX3R5cGVfdGVtcGxhdGVfaWRfNGI0NjRjMDZfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtYnJlYWRjcnVtYlwiLFxuICAgICAgYXR0cnM6IHsgXCJhcmlhLWxhYmVsXCI6IFwiQnJlYWRjcnVtYlwiLCByb2xlOiBcIm5hdmlnYXRpb25cIiB9XG4gICAgfSxcbiAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgMlxuICApXG59XG52YXIgYnJlYWRjcnVtYnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzRiNDY0YzA2X3N0YXRpY1JlbmRlckZucyA9IFtdXG5icmVhZGNydW1idnVlX3R5cGVfdGVtcGxhdGVfaWRfNGI0NjRjMDZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9icmVhZGNydW1iL3NyYy9icmVhZGNydW1iLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YjQ2NGMwNiZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYnJlYWRjcnVtYi9zcmMvYnJlYWRjcnVtYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYnJlYWRjcnVtYnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbEJyZWFkY3J1bWInLFxuXG4gIHByb3BzOiB7XG4gICAgc2VwYXJhdG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnLydcbiAgICB9LFxuICAgIHNlcGFyYXRvckNsYXNzOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlbEJyZWFkY3J1bWI6IHRoaXNcbiAgICB9O1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBpdGVtcyA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lbC1icmVhZGNydW1iX19pdGVtJyk7XG4gICAgaWYgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0uc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLCAncGFnZScpO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2JyZWFkY3J1bWIvc3JjL2JyZWFkY3J1bWIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19icmVhZGNydW1idnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGJyZWFkY3J1bWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYnJlYWRjcnVtYi9zcmMvYnJlYWRjcnVtYi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBicmVhZGNydW1iX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX2JyZWFkY3J1bWJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGJyZWFkY3J1bWJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF80YjQ2NGMwNl9yZW5kZXIsXG4gIGJyZWFkY3J1bWJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF80YjQ2NGMwNl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGJyZWFkY3J1bWJfYXBpOyB9XG5icmVhZGNydW1iX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvYnJlYWRjcnVtYi9zcmMvYnJlYWRjcnVtYi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYnJlYWRjcnVtYiA9IChicmVhZGNydW1iX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYnJlYWRjcnVtYi9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5icmVhZGNydW1iLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoYnJlYWRjcnVtYi5uYW1lLCBicmVhZGNydW1iKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2JyZWFkY3J1bWIgPSAoYnJlYWRjcnVtYik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2JyZWFkY3J1bWIvc3JjL2JyZWFkY3J1bWItaXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmNmOWVhYWMmXG52YXIgYnJlYWRjcnVtYl9pdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfZmNmOWVhYWNfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWJyZWFkY3J1bWJfX2l0ZW1cIiB9LCBbXG4gICAgX2MoXG4gICAgICBcInNwYW5cIixcbiAgICAgIHtcbiAgICAgICAgcmVmOiBcImxpbmtcIixcbiAgICAgICAgY2xhc3M6IFtcImVsLWJyZWFkY3J1bWJfX2lubmVyXCIsIF92bS50byA/IFwiaXMtbGlua1wiIDogXCJcIl0sXG4gICAgICAgIGF0dHJzOiB7IHJvbGU6IFwibGlua1wiIH1cbiAgICAgIH0sXG4gICAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgICAyXG4gICAgKSxcbiAgICBfdm0uc2VwYXJhdG9yQ2xhc3NcbiAgICAgID8gX2MoXCJpXCIsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1icmVhZGNydW1iX19zZXBhcmF0b3JcIixcbiAgICAgICAgICBjbGFzczogX3ZtLnNlcGFyYXRvckNsYXNzXG4gICAgICAgIH0pXG4gICAgICA6IF9jKFxuICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWJyZWFkY3J1bWJfX3NlcGFyYXRvclwiLFxuICAgICAgICAgICAgYXR0cnM6IHsgcm9sZTogXCJwcmVzZW50YXRpb25cIiB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uc2VwYXJhdG9yKSldXG4gICAgICAgIClcbiAgXSlcbn1cbnZhciBicmVhZGNydW1iX2l0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF9mY2Y5ZWFhY19zdGF0aWNSZW5kZXJGbnMgPSBbXVxuYnJlYWRjcnVtYl9pdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfZmNmOWVhYWNfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9icmVhZGNydW1iL3NyYy9icmVhZGNydW1iLWl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZjZjllYWFjJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9icmVhZGNydW1iL3NyYy9icmVhZGNydW1iLWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBicmVhZGNydW1iX2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxCcmVhZGNydW1iSXRlbScsXG4gIHByb3BzOiB7XG4gICAgdG86IHt9LFxuICAgIHJlcGxhY2U6IEJvb2xlYW5cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VwYXJhdG9yOiAnJyxcbiAgICAgIHNlcGFyYXRvckNsYXNzOiAnJ1xuICAgIH07XG4gIH0sXG5cblxuICBpbmplY3Q6IFsnZWxCcmVhZGNydW1iJ10sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5zZXBhcmF0b3IgPSB0aGlzLmVsQnJlYWRjcnVtYi5zZXBhcmF0b3I7XG4gICAgdGhpcy5zZXBhcmF0b3JDbGFzcyA9IHRoaXMuZWxCcmVhZGNydW1iLnNlcGFyYXRvckNsYXNzO1xuICAgIHZhciBsaW5rID0gdGhpcy4kcmVmcy5saW5rO1xuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2xpbmsnKTtcbiAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKF8pIHtcbiAgICAgIHZhciB0byA9IF90aGlzLnRvLFxuICAgICAgICAgICRyb3V0ZXIgPSBfdGhpcy4kcm91dGVyO1xuXG4gICAgICBpZiAoIXRvIHx8ICEkcm91dGVyKSByZXR1cm47XG4gICAgICBfdGhpcy5yZXBsYWNlID8gJHJvdXRlci5yZXBsYWNlKHRvKSA6ICRyb3V0ZXIucHVzaCh0byk7XG4gICAgfSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9icmVhZGNydW1iL3NyYy9icmVhZGNydW1iLWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19icmVhZGNydW1iX2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoYnJlYWRjcnVtYl9pdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2JyZWFkY3J1bWIvc3JjL2JyZWFkY3J1bWItaXRlbS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBicmVhZGNydW1iX2l0ZW1fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfYnJlYWRjcnVtYl9pdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBicmVhZGNydW1iX2l0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF9mY2Y5ZWFhY19yZW5kZXIsXG4gIGJyZWFkY3J1bWJfaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2ZjZjllYWFjX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgYnJlYWRjcnVtYl9pdGVtX2FwaTsgfVxuYnJlYWRjcnVtYl9pdGVtX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvYnJlYWRjcnVtYi9zcmMvYnJlYWRjcnVtYi1pdGVtLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBicmVhZGNydW1iX2l0ZW0gPSAoYnJlYWRjcnVtYl9pdGVtX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYnJlYWRjcnVtYi1pdGVtL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmJyZWFkY3J1bWJfaXRlbS5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGJyZWFkY3J1bWJfaXRlbS5uYW1lLCBicmVhZGNydW1iX2l0ZW0pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfYnJlYWRjcnVtYl9pdGVtID0gKGJyZWFkY3J1bWJfaXRlbSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2Zvcm0vc3JjL2Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWExYjVmZjM0JlxudmFyIGZvcm12dWVfdHlwZV90ZW1wbGF0ZV9pZF9hMWI1ZmYzNF9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJmb3JtXCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtZm9ybVwiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgX3ZtLmxhYmVsUG9zaXRpb24gPyBcImVsLWZvcm0tLWxhYmVsLVwiICsgX3ZtLmxhYmVsUG9zaXRpb24gOiBcIlwiLFxuICAgICAgICB7IFwiZWwtZm9ybS0taW5saW5lXCI6IF92bS5pbmxpbmUgfVxuICAgICAgXVxuICAgIH0sXG4gICAgW192bS5fdChcImRlZmF1bHRcIildLFxuICAgIDJcbiAgKVxufVxudmFyIGZvcm12dWVfdHlwZV90ZW1wbGF0ZV9pZF9hMWI1ZmYzNF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuZm9ybXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2ExYjVmZjM0X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZm9ybS9zcmMvZm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTFiNWZmMzQmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2Zvcm0vc3JjL2Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBmb3JtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsRm9ybScsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsRm9ybScsXG5cbiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZWxGb3JtOiB0aGlzXG4gICAgfTtcbiAgfSxcblxuXG4gIHByb3BzOiB7XG4gICAgbW9kZWw6IE9iamVjdCxcbiAgICBydWxlczogT2JqZWN0LFxuICAgIGxhYmVsUG9zaXRpb246IFN0cmluZyxcbiAgICBsYWJlbFdpZHRoOiBTdHJpbmcsXG4gICAgbGFiZWxTdWZmaXg6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBpbmxpbmU6IEJvb2xlYW4sXG4gICAgaW5saW5lTWVzc2FnZTogQm9vbGVhbixcbiAgICBzdGF0dXNJY29uOiBCb29sZWFuLFxuICAgIHNob3dNZXNzYWdlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgc2l6ZTogU3RyaW5nLFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIHZhbGlkYXRlT25SdWxlQ2hhbmdlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgaGlkZVJlcXVpcmVkQXN0ZXJpc2s6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBydWxlczogZnVuY3Rpb24gcnVsZXMoKSB7XG4gICAgICAvLyByZW1vdmUgdGhlbiBhZGQgZXZlbnQgbGlzdGVuZXJzIG9uIGZvcm0taXRlbSBhZnRlciBmb3JtIHJ1bGVzIGNoYW5nZVxuICAgICAgdGhpcy5maWVsZHMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgICAgZmllbGQucmVtb3ZlVmFsaWRhdGVFdmVudHMoKTtcbiAgICAgICAgZmllbGQuYWRkVmFsaWRhdGVFdmVudHMoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy52YWxpZGF0ZU9uUnVsZUNoYW5nZSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlKGZ1bmN0aW9uICgpIHt9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgYXV0b0xhYmVsV2lkdGg6IGZ1bmN0aW9uIGF1dG9MYWJlbFdpZHRoKCkge1xuICAgICAgaWYgKCF0aGlzLnBvdGVudGlhbExhYmVsV2lkdGhBcnIubGVuZ3RoKSByZXR1cm4gMDtcbiAgICAgIHZhciBtYXggPSBNYXRoLm1heC5hcHBseShNYXRoLCB0aGlzLnBvdGVudGlhbExhYmVsV2lkdGhBcnIpO1xuICAgICAgcmV0dXJuIG1heCA/IG1heCArICdweCcgOiAnJztcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkczogW10sXG4gICAgICBwb3RlbnRpYWxMYWJlbFdpZHRoQXJyOiBbXSAvLyB1c2UgdGhpcyBhcnJheSB0byBjYWxjdWxhdGUgYXV0byB3aWR0aFxuICAgIH07XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuJG9uKCdlbC5mb3JtLmFkZEZpZWxkJywgZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgX3RoaXMuZmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhpcy4kb24oJ2VsLmZvcm0ucmVtb3ZlRmllbGQnLCBmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgIGlmIChmaWVsZC5wcm9wKSB7XG4gICAgICAgIF90aGlzLmZpZWxkcy5zcGxpY2UoX3RoaXMuZmllbGRzLmluZGV4T2YoZmllbGQpLCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgcmVzZXRGaWVsZHM6IGZ1bmN0aW9uIHJlc2V0RmllbGRzKCkge1xuICAgICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW0VsZW1lbnQgV2Fybl1bRm9ybV1tb2RlbCBpcyByZXF1aXJlZCBmb3IgcmVzZXRGaWVsZHMgdG8gd29yay4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5maWVsZHMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgICAgZmllbGQucmVzZXRGaWVsZCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBjbGVhclZhbGlkYXRlOiBmdW5jdGlvbiBjbGVhclZhbGlkYXRlKCkge1xuICAgICAgdmFyIHByb3BzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTtcblxuICAgICAgdmFyIGZpZWxkcyA9IHByb3BzLmxlbmd0aCA/IHR5cGVvZiBwcm9wcyA9PT0gJ3N0cmluZycgPyB0aGlzLmZpZWxkcy5maWx0ZXIoZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgIHJldHVybiBwcm9wcyA9PT0gZmllbGQucHJvcDtcbiAgICAgIH0pIDogdGhpcy5maWVsZHMuZmlsdGVyKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICByZXR1cm4gcHJvcHMuaW5kZXhPZihmaWVsZC5wcm9wKSA+IC0xO1xuICAgICAgfSkgOiB0aGlzLmZpZWxkcztcbiAgICAgIGZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICBmaWVsZC5jbGVhclZhbGlkYXRlKCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiB2YWxpZGF0ZShjYWxsYmFjaykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5tb2RlbCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tFbGVtZW50IFdhcm5dW0Zvcm1dbW9kZWwgaXMgcmVxdWlyZWQgZm9yIHZhbGlkYXRlIHRvIHdvcmshJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHByb21pc2UgPSB2b2lkIDA7XG4gICAgICAvLyBpZiBubyBjYWxsYmFjaywgcmV0dXJuIHByb21pc2VcbiAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicgJiYgd2luZG93LlByb21pc2UpIHtcbiAgICAgICAgcHJvbWlzZSA9IG5ldyB3aW5kb3cuUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiBjYWxsYmFjayh2YWxpZCwgaW52YWxpZEZpZWxkcykge1xuICAgICAgICAgICAgdmFsaWQgPyByZXNvbHZlKHZhbGlkKSA6IHJlamVjdChpbnZhbGlkRmllbGRzKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIHZhbGlkID0gdHJ1ZTtcbiAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAvLyDlpoLmnpzpnIDopoHpqozor4HnmoRmaWVsZHPkuLrnqbrvvIzosIPnlKjpqozor4Hml7bnq4vliLvov5Tlm55jYWxsYmFja1xuICAgICAgaWYgKHRoaXMuZmllbGRzLmxlbmd0aCA9PT0gMCAmJiBjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayh0cnVlKTtcbiAgICAgIH1cbiAgICAgIHZhciBpbnZhbGlkRmllbGRzID0ge307XG4gICAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICBmaWVsZC52YWxpZGF0ZSgnJywgZnVuY3Rpb24gKG1lc3NhZ2UsIGZpZWxkKSB7XG4gICAgICAgICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGludmFsaWRGaWVsZHMgPSBtZXJnZV9kZWZhdWx0KCkoe30sIGludmFsaWRGaWVsZHMsIGZpZWxkKTtcbiAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nICYmICsrY291bnQgPT09IF90aGlzMi5maWVsZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYWxsYmFjayh2YWxpZCwgaW52YWxpZEZpZWxkcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbGlkYXRlRmllbGQ6IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGQocHJvcHMsIGNiKSB7XG4gICAgICBwcm9wcyA9IFtdLmNvbmNhdChwcm9wcyk7XG4gICAgICB2YXIgZmllbGRzID0gdGhpcy5maWVsZHMuZmlsdGVyKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICByZXR1cm4gcHJvcHMuaW5kZXhPZihmaWVsZC5wcm9wKSAhPT0gLTE7XG4gICAgICB9KTtcbiAgICAgIGlmICghZmllbGRzLmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tFbGVtZW50IFdhcm5dcGxlYXNlIHBhc3MgY29ycmVjdCBwcm9wcyEnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmaWVsZHMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgICAgZmllbGQudmFsaWRhdGUoJycsIGNiKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0TGFiZWxXaWR0aEluZGV4OiBmdW5jdGlvbiBnZXRMYWJlbFdpZHRoSW5kZXgod2lkdGgpIHtcbiAgICAgIHZhciBpbmRleCA9IHRoaXMucG90ZW50aWFsTGFiZWxXaWR0aEFyci5pbmRleE9mKHdpZHRoKTtcbiAgICAgIC8vIGl0J3MgaW1wb3NzaWJsZVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tFbGVtZW50Rm9ybV11bnBlY3RlZCB3aWR0aCAnLCB3aWR0aCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfSxcbiAgICByZWdpc3RlckxhYmVsV2lkdGg6IGZ1bmN0aW9uIHJlZ2lzdGVyTGFiZWxXaWR0aCh2YWwsIG9sZFZhbCkge1xuICAgICAgaWYgKHZhbCAmJiBvbGRWYWwpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5nZXRMYWJlbFdpZHRoSW5kZXgob2xkVmFsKTtcbiAgICAgICAgdGhpcy5wb3RlbnRpYWxMYWJlbFdpZHRoQXJyLnNwbGljZShpbmRleCwgMSwgdmFsKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsKSB7XG4gICAgICAgIHRoaXMucG90ZW50aWFsTGFiZWxXaWR0aEFyci5wdXNoKHZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkZXJlZ2lzdGVyTGFiZWxXaWR0aDogZnVuY3Rpb24gZGVyZWdpc3RlckxhYmVsV2lkdGgodmFsKSB7XG4gICAgICB2YXIgaW5kZXggPSB0aGlzLmdldExhYmVsV2lkdGhJbmRleCh2YWwpO1xuICAgICAgdGhpcy5wb3RlbnRpYWxMYWJlbFdpZHRoQXJyLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZm9ybS9zcmMvZm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2Zvcm12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoZm9ybXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9mb3JtL3NyYy9mb3JtLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGZvcm1fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfZm9ybXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgZm9ybXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2ExYjVmZjM0X3JlbmRlcixcbiAgZm9ybXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2ExYjVmZjM0X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgZm9ybV9hcGk7IH1cbmZvcm1fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9mb3JtL3NyYy9mb3JtLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfZm9ybSA9IChmb3JtX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZm9ybS9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zcmNfZm9ybS5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHNyY19mb3JtLm5hbWUsIHNyY19mb3JtKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2Zvcm0gPSAoc3JjX2Zvcm0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9mb3JtL3NyYy9mb3JtLWl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI2ZjNkYjZjJlxudmFyIGZvcm1faXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2I2ZjNkYjZjX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWZvcm0taXRlbVwiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiZWwtZm9ybS1pdGVtLS1mZWVkYmFja1wiOiBfdm0uZWxGb3JtICYmIF92bS5lbEZvcm0uc3RhdHVzSWNvbixcbiAgICAgICAgICBcImlzLWVycm9yXCI6IF92bS52YWxpZGF0ZVN0YXRlID09PSBcImVycm9yXCIsXG4gICAgICAgICAgXCJpcy12YWxpZGF0aW5nXCI6IF92bS52YWxpZGF0ZVN0YXRlID09PSBcInZhbGlkYXRpbmdcIixcbiAgICAgICAgICBcImlzLXN1Y2Nlc3NcIjogX3ZtLnZhbGlkYXRlU3RhdGUgPT09IFwic3VjY2Vzc1wiLFxuICAgICAgICAgIFwiaXMtcmVxdWlyZWRcIjogX3ZtLmlzUmVxdWlyZWQgfHwgX3ZtLnJlcXVpcmVkLFxuICAgICAgICAgIFwiaXMtbm8tYXN0ZXJpc2tcIjogX3ZtLmVsRm9ybSAmJiBfdm0uZWxGb3JtLmhpZGVSZXF1aXJlZEFzdGVyaXNrXG4gICAgICAgIH0sXG4gICAgICAgIF92bS5zaXplQ2xhc3MgPyBcImVsLWZvcm0taXRlbS0tXCIgKyBfdm0uc2l6ZUNsYXNzIDogXCJcIlxuICAgICAgXVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwibGFiZWwtd3JhcFwiLFxuICAgICAgICB7XG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIFwiaXMtYXV0by13aWR0aFwiOiBfdm0ubGFiZWxTdHlsZSAmJiBfdm0ubGFiZWxTdHlsZS53aWR0aCA9PT0gXCJhdXRvXCIsXG4gICAgICAgICAgICBcInVwZGF0ZS1hbGxcIjogX3ZtLmZvcm0ubGFiZWxXaWR0aCA9PT0gXCJhdXRvXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfdm0ubGFiZWwgfHwgX3ZtLiRzbG90cy5sYWJlbFxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImxhYmVsXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtZm9ybS1pdGVtX19sYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgc3R5bGU6IF92bS5sYWJlbFN0eWxlLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgZm9yOiBfdm0ubGFiZWxGb3IgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX3ZtLl90KFwibGFiZWxcIiwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5sYWJlbCArIF92bS5mb3JtLmxhYmVsU3VmZml4KSlcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXVxuICAgICAgKSxcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWZvcm0taXRlbV9fY29udGVudFwiLCBzdHlsZTogX3ZtLmNvbnRlbnRTdHlsZSB9LFxuICAgICAgICBbXG4gICAgICAgICAgX3ZtLl90KFwiZGVmYXVsdFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidHJhbnNpdGlvblwiLFxuICAgICAgICAgICAgeyBhdHRyczogeyBuYW1lOiBcImVsLXpvb20taW4tdG9wXCIgfSB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0udmFsaWRhdGVTdGF0ZSA9PT0gXCJlcnJvclwiICYmXG4gICAgICAgICAgICAgIF92bS5zaG93TWVzc2FnZSAmJlxuICAgICAgICAgICAgICBfdm0uZm9ybS5zaG93TWVzc2FnZVxuICAgICAgICAgICAgICAgID8gX3ZtLl90KFxuICAgICAgICAgICAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWZvcm0taXRlbV9fZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVsLWZvcm0taXRlbV9fZXJyb3ItLWlubGluZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIF92bS5pbmxpbmVNZXNzYWdlID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF92bS5pbmxpbmVNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKF92bS5lbEZvcm0gJiYgX3ZtLmVsRm9ybS5pbmxpbmVNZXNzYWdlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLnZhbGlkYXRlTWVzc2FnZSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHsgZXJyb3I6IF92bS52YWxpZGF0ZU1lc3NhZ2UgfVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAyXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBmb3JtX2l0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF9iNmYzZGI2Y19zdGF0aWNSZW5kZXJGbnMgPSBbXVxuZm9ybV9pdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfYjZmM2RiNmNfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9mb3JtL3NyYy9mb3JtLWl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI2ZjNkYjZjJlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiYXN5bmMtdmFsaWRhdG9yXCJcbnZhciBleHRlcm5hbF9hc3luY192YWxpZGF0b3JfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSk7XG52YXIgZXh0ZXJuYWxfYXN5bmNfdmFsaWRhdG9yX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGV4dGVybmFsX2FzeW5jX3ZhbGlkYXRvcl8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9mb3JtL3NyYy9sYWJlbC13cmFwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBsYWJlbF93cmFwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgcHJvcHM6IHtcbiAgICBpc0F1dG9XaWR0aDogQm9vbGVhbixcbiAgICB1cGRhdGVBbGw6IEJvb2xlYW5cbiAgfSxcblxuICBpbmplY3Q6IFsnZWxGb3JtJywgJ2VsRm9ybUl0ZW0nXSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgaCA9IGFyZ3VtZW50c1swXTtcblxuICAgIHZhciBzbG90cyA9IHRoaXMuJHNsb3RzLmRlZmF1bHQ7XG4gICAgaWYgKCFzbG90cykgcmV0dXJuIG51bGw7XG4gICAgaWYgKHRoaXMuaXNBdXRvV2lkdGgpIHtcbiAgICAgIHZhciBhdXRvTGFiZWxXaWR0aCA9IHRoaXMuZWxGb3JtLmF1dG9MYWJlbFdpZHRoO1xuICAgICAgdmFyIHN0eWxlID0ge307XG4gICAgICBpZiAoYXV0b0xhYmVsV2lkdGggJiYgYXV0b0xhYmVsV2lkdGggIT09ICdhdXRvJykge1xuICAgICAgICB2YXIgbWFyZ2luTGVmdCA9IHBhcnNlSW50KGF1dG9MYWJlbFdpZHRoLCAxMCkgLSB0aGlzLmNvbXB1dGVkV2lkdGg7XG4gICAgICAgIGlmIChtYXJnaW5MZWZ0KSB7XG4gICAgICAgICAgc3R5bGUubWFyZ2luTGVmdCA9IG1hcmdpbkxlZnQgKyAncHgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHsgJ2NsYXNzJzogJ2VsLWZvcm0taXRlbV9fbGFiZWwtd3JhcCcsIHN0eWxlOiBzdHlsZSB9LFxuICAgICAgICBbc2xvdHNdXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc2xvdHNbMF07XG4gICAgfVxuICB9LFxuXG5cbiAgbWV0aG9kczoge1xuICAgIGdldExhYmVsV2lkdGg6IGZ1bmN0aW9uIGdldExhYmVsV2lkdGgoKSB7XG4gICAgICBpZiAodGhpcy4kZWwgJiYgdGhpcy4kZWwuZmlyc3RFbGVtZW50Q2hpbGQpIHtcbiAgICAgICAgdmFyIGNvbXB1dGVkV2lkdGggPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLiRlbC5maXJzdEVsZW1lbnRDaGlsZCkud2lkdGg7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwocGFyc2VGbG9hdChjb21wdXRlZFdpZHRoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHVwZGF0ZUxhYmVsV2lkdGg6IGZ1bmN0aW9uIHVwZGF0ZUxhYmVsV2lkdGgoKSB7XG4gICAgICB2YXIgYWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAndXBkYXRlJztcblxuICAgICAgaWYgKHRoaXMuJHNsb3RzLmRlZmF1bHQgJiYgdGhpcy5pc0F1dG9XaWR0aCAmJiB0aGlzLiRlbC5maXJzdEVsZW1lbnRDaGlsZCkge1xuICAgICAgICBpZiAoYWN0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgICAgIHRoaXMuY29tcHV0ZWRXaWR0aCA9IHRoaXMuZ2V0TGFiZWxXaWR0aCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgICB0aGlzLmVsRm9ybS5kZXJlZ2lzdGVyTGFiZWxXaWR0aCh0aGlzLmNvbXB1dGVkV2lkdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgY29tcHV0ZWRXaWR0aDogZnVuY3Rpb24gY29tcHV0ZWRXaWR0aCh2YWwsIG9sZFZhbCkge1xuICAgICAgaWYgKHRoaXMudXBkYXRlQWxsKSB7XG4gICAgICAgIHRoaXMuZWxGb3JtLnJlZ2lzdGVyTGFiZWxXaWR0aCh2YWwsIG9sZFZhbCk7XG4gICAgICAgIHRoaXMuZWxGb3JtSXRlbS51cGRhdGVDb21wdXRlZExhYmVsV2lkdGgodmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29tcHV0ZWRXaWR0aDogMFxuICAgIH07XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy51cGRhdGVMYWJlbFdpZHRoKCd1cGRhdGUnKTtcbiAgfSxcbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCgpIHtcbiAgICB0aGlzLnVwZGF0ZUxhYmVsV2lkdGgoJ3VwZGF0ZScpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMudXBkYXRlTGFiZWxXaWR0aCgncmVtb3ZlJyk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9mb3JtL3NyYy9sYWJlbC13cmFwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfbGFiZWxfd3JhcHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChsYWJlbF93cmFwdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Zvcm0vc3JjL2xhYmVsLXdyYXAudnVlXG52YXIgbGFiZWxfd3JhcF9yZW5kZXIsIGxhYmVsX3dyYXBfc3RhdGljUmVuZGVyRm5zXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGxhYmVsX3dyYXBfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfbGFiZWxfd3JhcHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgbGFiZWxfd3JhcF9yZW5kZXIsXG4gIGxhYmVsX3dyYXBfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBsYWJlbF93cmFwX2FwaTsgfVxubGFiZWxfd3JhcF9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2Zvcm0vc3JjL2xhYmVsLXdyYXAudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGxhYmVsX3dyYXAgPSAobGFiZWxfd3JhcF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9mb3JtL3NyYy9mb3JtLWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGZvcm1faXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbEZvcm1JdGVtJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxGb3JtSXRlbScsXG5cbiAgbWl4aW5zOiBbZW1pdHRlcl9kZWZhdWx0LmFdLFxuXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVsRm9ybUl0ZW06IHRoaXNcbiAgICB9O1xuICB9LFxuXG5cbiAgaW5qZWN0OiBbJ2VsRm9ybSddLFxuXG4gIHByb3BzOiB7XG4gICAgbGFiZWw6IFN0cmluZyxcbiAgICBsYWJlbFdpZHRoOiBTdHJpbmcsXG4gICAgcHJvcDogU3RyaW5nLFxuICAgIHJlcXVpcmVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICBydWxlczogW09iamVjdCwgQXJyYXldLFxuICAgIGVycm9yOiBTdHJpbmcsXG4gICAgdmFsaWRhdGVTdGF0dXM6IFN0cmluZyxcbiAgICBmb3I6IFN0cmluZyxcbiAgICBpbmxpbmVNZXNzYWdlOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBCb29sZWFuXSxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBzaG93TWVzc2FnZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIHNpemU6IFN0cmluZ1xuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgLy8gdXNlIHRoaXMgY29tcG9uZW50IHRvIGNhbGN1bGF0ZSBhdXRvIHdpZHRoXG4gICAgTGFiZWxXcmFwOiBsYWJlbF93cmFwXG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgZXJyb3I6IHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZU1lc3NhZ2UgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVN0YXRlID0gdmFsdWUgPyAnZXJyb3InIDogJyc7XG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXModmFsdWUpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVTdGF0ZSA9IHZhbHVlO1xuICAgIH0sXG4gICAgcnVsZXM6IGZ1bmN0aW9uIHJ1bGVzKHZhbHVlKSB7XG4gICAgICBpZiAoKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPT09IDApICYmIHRoaXMucmVxdWlyZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNsZWFyVmFsaWRhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgbGFiZWxGb3I6IGZ1bmN0aW9uIGxhYmVsRm9yKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9yIHx8IHRoaXMucHJvcDtcbiAgICB9LFxuICAgIGxhYmVsU3R5bGU6IGZ1bmN0aW9uIGxhYmVsU3R5bGUoKSB7XG4gICAgICB2YXIgcmV0ID0ge307XG4gICAgICBpZiAodGhpcy5mb3JtLmxhYmVsUG9zaXRpb24gPT09ICd0b3AnKSByZXR1cm4gcmV0O1xuICAgICAgdmFyIGxhYmVsV2lkdGggPSB0aGlzLmxhYmVsV2lkdGggfHwgdGhpcy5mb3JtLmxhYmVsV2lkdGg7XG4gICAgICBpZiAobGFiZWxXaWR0aCkge1xuICAgICAgICByZXQud2lkdGggPSBsYWJlbFdpZHRoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIGNvbnRlbnRTdHlsZTogZnVuY3Rpb24gY29udGVudFN0eWxlKCkge1xuICAgICAgdmFyIHJldCA9IHt9O1xuICAgICAgdmFyIGxhYmVsID0gdGhpcy5sYWJlbDtcbiAgICAgIGlmICh0aGlzLmZvcm0ubGFiZWxQb3NpdGlvbiA9PT0gJ3RvcCcgfHwgdGhpcy5mb3JtLmlubGluZSkgcmV0dXJuIHJldDtcbiAgICAgIGlmICghbGFiZWwgJiYgIXRoaXMubGFiZWxXaWR0aCAmJiB0aGlzLmlzTmVzdGVkKSByZXR1cm4gcmV0O1xuICAgICAgdmFyIGxhYmVsV2lkdGggPSB0aGlzLmxhYmVsV2lkdGggfHwgdGhpcy5mb3JtLmxhYmVsV2lkdGg7XG4gICAgICBpZiAobGFiZWxXaWR0aCA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIGlmICh0aGlzLmxhYmVsV2lkdGggPT09ICdhdXRvJykge1xuICAgICAgICAgIHJldC5tYXJnaW5MZWZ0ID0gdGhpcy5jb21wdXRlZExhYmVsV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtLmxhYmVsV2lkdGggPT09ICdhdXRvJykge1xuICAgICAgICAgIHJldC5tYXJnaW5MZWZ0ID0gdGhpcy5lbEZvcm0uYXV0b0xhYmVsV2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5tYXJnaW5MZWZ0ID0gbGFiZWxXaWR0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcbiAgICBmb3JtOiBmdW5jdGlvbiBmb3JtKCkge1xuICAgICAgdmFyIHBhcmVudCA9IHRoaXMuJHBhcmVudDtcbiAgICAgIHZhciBwYXJlbnROYW1lID0gcGFyZW50LiRvcHRpb25zLmNvbXBvbmVudE5hbWU7XG4gICAgICB3aGlsZSAocGFyZW50TmFtZSAhPT0gJ0VsRm9ybScpIHtcbiAgICAgICAgaWYgKHBhcmVudE5hbWUgPT09ICdFbEZvcm1JdGVtJykge1xuICAgICAgICAgIHRoaXMuaXNOZXN0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgICAgICBwYXJlbnROYW1lID0gcGFyZW50LiRvcHRpb25zLmNvbXBvbmVudE5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH0sXG4gICAgZmllbGRWYWx1ZTogZnVuY3Rpb24gZmllbGRWYWx1ZSgpIHtcbiAgICAgIHZhciBtb2RlbCA9IHRoaXMuZm9ybS5tb2RlbDtcbiAgICAgIGlmICghbW9kZWwgfHwgIXRoaXMucHJvcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXRoID0gdGhpcy5wcm9wO1xuICAgICAgaWYgKHBhdGguaW5kZXhPZignOicpICE9PSAtMSkge1xuICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC86LywgJy4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcImdldFByb3BCeVBhdGhcIl0pKG1vZGVsLCBwYXRoLCB0cnVlKS52O1xuICAgIH0sXG4gICAgaXNSZXF1aXJlZDogZnVuY3Rpb24gaXNSZXF1aXJlZCgpIHtcbiAgICAgIHZhciBydWxlcyA9IHRoaXMuZ2V0UnVsZXMoKTtcbiAgICAgIHZhciBpc1JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAgIGlmIChydWxlcyAmJiBydWxlcy5sZW5ndGgpIHtcbiAgICAgICAgcnVsZXMuZXZlcnkoZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICAgICAgICBpZiAocnVsZS5yZXF1aXJlZCkge1xuICAgICAgICAgICAgaXNSZXF1aXJlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1JlcXVpcmVkO1xuICAgIH0sXG4gICAgX2Zvcm1TaXplOiBmdW5jdGlvbiBfZm9ybVNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbEZvcm0uc2l6ZTtcbiAgICB9LFxuICAgIGVsRm9ybUl0ZW1TaXplOiBmdW5jdGlvbiBlbEZvcm1JdGVtU2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpemUgfHwgdGhpcy5fZm9ybVNpemU7XG4gICAgfSxcbiAgICBzaXplQ2xhc3M6IGZ1bmN0aW9uIHNpemVDbGFzcygpIHtcbiAgICAgIHJldHVybiB0aGlzLmVsRm9ybUl0ZW1TaXplIHx8ICh0aGlzLiRFTEVNRU5UIHx8IHt9KS5zaXplO1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWRhdGVTdGF0ZTogJycsXG4gICAgICB2YWxpZGF0ZU1lc3NhZ2U6ICcnLFxuICAgICAgdmFsaWRhdGVEaXNhYmxlZDogZmFsc2UsXG4gICAgICB2YWxpZGF0b3I6IHt9LFxuICAgICAgaXNOZXN0ZWQ6IGZhbHNlLFxuICAgICAgY29tcHV0ZWRMYWJlbFdpZHRoOiAnJ1xuICAgIH07XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiB2YWxpZGF0ZSh0cmlnZ2VyKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHV0aWxfW1wibm9vcFwiXTtcblxuICAgICAgdGhpcy52YWxpZGF0ZURpc2FibGVkID0gZmFsc2U7XG4gICAgICB2YXIgcnVsZXMgPSB0aGlzLmdldEZpbHRlcmVkUnVsZSh0cmlnZ2VyKTtcbiAgICAgIGlmICgoIXJ1bGVzIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMCkgJiYgdGhpcy5yZXF1aXJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnZhbGlkYXRlU3RhdGUgPSAndmFsaWRhdGluZyc7XG5cbiAgICAgIHZhciBkZXNjcmlwdG9yID0ge307XG4gICAgICBpZiAocnVsZXMgJiYgcnVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBydWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICAgICAgZGVsZXRlIHJ1bGUudHJpZ2dlcjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBkZXNjcmlwdG9yW3RoaXMucHJvcF0gPSBydWxlcztcblxuICAgICAgdmFyIHZhbGlkYXRvciA9IG5ldyBleHRlcm5hbF9hc3luY192YWxpZGF0b3JfZGVmYXVsdC5hKGRlc2NyaXB0b3IpO1xuICAgICAgdmFyIG1vZGVsID0ge307XG5cbiAgICAgIG1vZGVsW3RoaXMucHJvcF0gPSB0aGlzLmZpZWxkVmFsdWU7XG5cbiAgICAgIHZhbGlkYXRvci52YWxpZGF0ZShtb2RlbCwgeyBmaXJzdEZpZWxkczogdHJ1ZSB9LCBmdW5jdGlvbiAoZXJyb3JzLCBpbnZhbGlkRmllbGRzKSB7XG4gICAgICAgIF90aGlzLnZhbGlkYXRlU3RhdGUgPSAhZXJyb3JzID8gJ3N1Y2Nlc3MnIDogJ2Vycm9yJztcbiAgICAgICAgX3RoaXMudmFsaWRhdGVNZXNzYWdlID0gZXJyb3JzID8gZXJyb3JzWzBdLm1lc3NhZ2UgOiAnJztcblxuICAgICAgICBjYWxsYmFjayhfdGhpcy52YWxpZGF0ZU1lc3NhZ2UsIGludmFsaWRGaWVsZHMpO1xuICAgICAgICBfdGhpcy5lbEZvcm0gJiYgX3RoaXMuZWxGb3JtLiRlbWl0KCd2YWxpZGF0ZScsIF90aGlzLnByb3AsICFlcnJvcnMsIF90aGlzLnZhbGlkYXRlTWVzc2FnZSB8fCBudWxsKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2xlYXJWYWxpZGF0ZTogZnVuY3Rpb24gY2xlYXJWYWxpZGF0ZSgpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVTdGF0ZSA9ICcnO1xuICAgICAgdGhpcy52YWxpZGF0ZU1lc3NhZ2UgPSAnJztcbiAgICAgIHRoaXMudmFsaWRhdGVEaXNhYmxlZCA9IGZhbHNlO1xuICAgIH0sXG4gICAgcmVzZXRGaWVsZDogZnVuY3Rpb24gcmVzZXRGaWVsZCgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlU3RhdGUgPSAnJztcbiAgICAgIHRoaXMudmFsaWRhdGVNZXNzYWdlID0gJyc7XG5cbiAgICAgIHZhciBtb2RlbCA9IHRoaXMuZm9ybS5tb2RlbDtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuZmllbGRWYWx1ZTtcbiAgICAgIHZhciBwYXRoID0gdGhpcy5wcm9wO1xuICAgICAgaWYgKHBhdGguaW5kZXhPZignOicpICE9PSAtMSkge1xuICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC86LywgJy4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHByb3AgPSBPYmplY3QodXRpbF9bXCJnZXRQcm9wQnlQYXRoXCJdKShtb2RlbCwgcGF0aCwgdHJ1ZSk7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVEaXNhYmxlZCA9IHRydWU7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcHJvcC5vW3Byb3Aua10gPSBbXS5jb25jYXQodGhpcy5pbml0aWFsVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcC5vW3Byb3Aua10gPSB0aGlzLmluaXRpYWxWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgdmFsaWRhdGVEaXNhYmxlZCBhZnRlciBvbkZpZWxkQ2hhbmdlIHRyaWdnZXJlZFxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIudmFsaWRhdGVEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbFRpbWVTZWxlY3QnLCAnZmllbGRSZXNldCcsIHRoaXMuaW5pdGlhbFZhbHVlKTtcbiAgICB9LFxuICAgIGdldFJ1bGVzOiBmdW5jdGlvbiBnZXRSdWxlcygpIHtcbiAgICAgIHZhciBmb3JtUnVsZXMgPSB0aGlzLmZvcm0ucnVsZXM7XG4gICAgICB2YXIgc2VsZlJ1bGVzID0gdGhpcy5ydWxlcztcbiAgICAgIHZhciByZXF1aXJlZFJ1bGUgPSB0aGlzLnJlcXVpcmVkICE9PSB1bmRlZmluZWQgPyB7IHJlcXVpcmVkOiAhIXRoaXMucmVxdWlyZWQgfSA6IFtdO1xuXG4gICAgICB2YXIgcHJvcCA9IE9iamVjdCh1dGlsX1tcImdldFByb3BCeVBhdGhcIl0pKGZvcm1SdWxlcywgdGhpcy5wcm9wIHx8ICcnKTtcbiAgICAgIGZvcm1SdWxlcyA9IGZvcm1SdWxlcyA/IHByb3Aub1t0aGlzLnByb3AgfHwgJyddIHx8IHByb3AudiA6IFtdO1xuXG4gICAgICByZXR1cm4gW10uY29uY2F0KHNlbGZSdWxlcyB8fCBmb3JtUnVsZXMgfHwgW10pLmNvbmNhdChyZXF1aXJlZFJ1bGUpO1xuICAgIH0sXG4gICAgZ2V0RmlsdGVyZWRSdWxlOiBmdW5jdGlvbiBnZXRGaWx0ZXJlZFJ1bGUodHJpZ2dlcikge1xuICAgICAgdmFyIHJ1bGVzID0gdGhpcy5nZXRSdWxlcygpO1xuXG4gICAgICByZXR1cm4gcnVsZXMuZmlsdGVyKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICAgIGlmICghcnVsZS50cmlnZ2VyIHx8IHRyaWdnZXIgPT09ICcnKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocnVsZS50cmlnZ2VyKSkge1xuICAgICAgICAgIHJldHVybiBydWxlLnRyaWdnZXIuaW5kZXhPZih0cmlnZ2VyKSA+IC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBydWxlLnRyaWdnZXIgPT09IHRyaWdnZXI7XG4gICAgICAgIH1cbiAgICAgIH0pLm1hcChmdW5jdGlvbiAocnVsZSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VfZGVmYXVsdCgpKHt9LCBydWxlKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25GaWVsZEJsdXI6IGZ1bmN0aW9uIG9uRmllbGRCbHVyKCkge1xuICAgICAgdGhpcy52YWxpZGF0ZSgnYmx1cicpO1xuICAgIH0sXG4gICAgb25GaWVsZENoYW5nZTogZnVuY3Rpb24gb25GaWVsZENoYW5nZSgpIHtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZURpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy52YWxpZGF0ZSgnY2hhbmdlJyk7XG4gICAgfSxcbiAgICB1cGRhdGVDb21wdXRlZExhYmVsV2lkdGg6IGZ1bmN0aW9uIHVwZGF0ZUNvbXB1dGVkTGFiZWxXaWR0aCh3aWR0aCkge1xuICAgICAgdGhpcy5jb21wdXRlZExhYmVsV2lkdGggPSB3aWR0aCA/IHdpZHRoICsgJ3B4JyA6ICcnO1xuICAgIH0sXG4gICAgYWRkVmFsaWRhdGVFdmVudHM6IGZ1bmN0aW9uIGFkZFZhbGlkYXRlRXZlbnRzKCkge1xuICAgICAgdmFyIHJ1bGVzID0gdGhpcy5nZXRSdWxlcygpO1xuXG4gICAgICBpZiAocnVsZXMubGVuZ3RoIHx8IHRoaXMucmVxdWlyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLiRvbignZWwuZm9ybS5ibHVyJywgdGhpcy5vbkZpZWxkQmx1cik7XG4gICAgICAgIHRoaXMuJG9uKCdlbC5mb3JtLmNoYW5nZScsIHRoaXMub25GaWVsZENoYW5nZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICByZW1vdmVWYWxpZGF0ZUV2ZW50czogZnVuY3Rpb24gcmVtb3ZlVmFsaWRhdGVFdmVudHMoKSB7XG4gICAgICB0aGlzLiRvZmYoKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgaWYgKHRoaXMucHJvcCkge1xuICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtJywgJ2VsLmZvcm0uYWRkRmllbGQnLCBbdGhpc10pO1xuXG4gICAgICB2YXIgaW5pdGlhbFZhbHVlID0gdGhpcy5maWVsZFZhbHVlO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5pdGlhbFZhbHVlKSkge1xuICAgICAgICBpbml0aWFsVmFsdWUgPSBbXS5jb25jYXQoaW5pdGlhbFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnaW5pdGlhbFZhbHVlJywge1xuICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hZGRWYWxpZGF0ZUV2ZW50cygpO1xuICAgIH1cbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB0aGlzLmRpc3BhdGNoKCdFbEZvcm0nLCAnZWwuZm9ybS5yZW1vdmVGaWVsZCcsIFt0aGlzXSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9mb3JtL3NyYy9mb3JtLWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19mb3JtX2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoZm9ybV9pdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Zvcm0vc3JjL2Zvcm0taXRlbS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBmb3JtX2l0ZW1fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfZm9ybV9pdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBmb3JtX2l0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF9iNmYzZGI2Y19yZW5kZXIsXG4gIGZvcm1faXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkX2I2ZjNkYjZjX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgZm9ybV9pdGVtX2FwaTsgfVxuZm9ybV9pdGVtX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZm9ybS9zcmMvZm9ybS1pdGVtLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBmb3JtX2l0ZW0gPSAoZm9ybV9pdGVtX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZm9ybS1pdGVtL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZvcm1faXRlbS5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGZvcm1faXRlbS5uYW1lLCBmb3JtX2l0ZW0pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfZm9ybV9pdGVtID0gKGZvcm1faXRlbSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3RhYnMvc3JjL3RhYi1iYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIwMzFmMzNhJlxudmFyIHRhYl9iYXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yMDMxZjMzYV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwge1xuICAgIHN0YXRpY0NsYXNzOiBcImVsLXRhYnNfX2FjdGl2ZS1iYXJcIixcbiAgICBjbGFzczogXCJpcy1cIiArIF92bS5yb290VGFicy50YWJQb3NpdGlvbixcbiAgICBzdHlsZTogX3ZtLmJhclN0eWxlXG4gIH0pXG59XG52YXIgdGFiX2JhcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzIwMzFmMzNhX3N0YXRpY1JlbmRlckZucyA9IFtdXG50YWJfYmFydnVlX3R5cGVfdGVtcGxhdGVfaWRfMjAzMWYzM2FfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJzL3NyYy90YWItYmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMDMxZjMzYSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdGFicy9zcmMvdGFiLWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGFiX2JhcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdUYWJCYXInLFxuXG4gIHByb3BzOiB7XG4gICAgdGFiczogQXJyYXlcbiAgfSxcblxuICBpbmplY3Q6IFsncm9vdFRhYnMnXSxcblxuICBjb21wdXRlZDoge1xuICAgIGJhclN0eWxlOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICB2YXIgc3R5bGUgPSB7fTtcbiAgICAgICAgdmFyIG9mZnNldCA9IDA7XG4gICAgICAgIHZhciB0YWJTaXplID0gMDtcbiAgICAgICAgdmFyIHNpemVOYW1lID0gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZih0aGlzLnJvb3RUYWJzLnRhYlBvc2l0aW9uKSAhPT0gLTEgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIHZhciBzaXplRGlyID0gc2l6ZU5hbWUgPT09ICd3aWR0aCcgPyAneCcgOiAneSc7XG4gICAgICAgIHZhciBmaXJzdFVwcGVyQ2FzZSA9IGZ1bmN0aW9uIGZpcnN0VXBwZXJDYXNlKHN0cikge1xuICAgICAgICAgIHJldHVybiBzdHIudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oIHxeKVthLXpdL2csIGZ1bmN0aW9uIChMKSB7XG4gICAgICAgICAgICByZXR1cm4gTC50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRhYnMuZXZlcnkoZnVuY3Rpb24gKHRhYiwgaW5kZXgpIHtcbiAgICAgICAgICB2YXIgJGVsID0gT2JqZWN0KHV0aWxfW1wiYXJyYXlGaW5kXCJdKShfdGhpcy4kcGFyZW50LiRyZWZzLnRhYnMgfHwgW10sIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdC5pZC5yZXBsYWNlKCd0YWItJywgJycpID09PSB0YWIucGFuZU5hbWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKCEkZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXRhYi5hY3RpdmUpIHtcbiAgICAgICAgICAgIG9mZnNldCArPSAkZWxbJ2NsaWVudCcgKyBmaXJzdFVwcGVyQ2FzZShzaXplTmFtZSldO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhYlNpemUgPSAkZWxbJ2NsaWVudCcgKyBmaXJzdFVwcGVyQ2FzZShzaXplTmFtZSldO1xuICAgICAgICAgICAgdmFyIHRhYlN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCRlbCk7XG4gICAgICAgICAgICBpZiAoc2l6ZU5hbWUgPT09ICd3aWR0aCcgJiYgX3RoaXMudGFicy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgIHRhYlNpemUgLT0gcGFyc2VGbG9hdCh0YWJTdHlsZXMucGFkZGluZ0xlZnQpICsgcGFyc2VGbG9hdCh0YWJTdHlsZXMucGFkZGluZ1JpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaXplTmFtZSA9PT0gJ3dpZHRoJykge1xuICAgICAgICAgICAgICBvZmZzZXQgKz0gcGFyc2VGbG9hdCh0YWJTdHlsZXMucGFkZGluZ0xlZnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIHRyYW5zZm9ybSA9ICd0cmFuc2xhdGUnICsgZmlyc3RVcHBlckNhc2Uoc2l6ZURpcikgKyAnKCcgKyBvZmZzZXQgKyAncHgpJztcbiAgICAgICAgc3R5bGVbc2l6ZU5hbWVdID0gdGFiU2l6ZSArICdweCc7XG4gICAgICAgIHN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICAgICAgc3R5bGUubXNUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgICAgIHN0eWxlLndlYmtpdFRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcblxuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFicy9zcmMvdGFiLWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3RhYl9iYXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAodGFiX2JhcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJzL3NyYy90YWItYmFyLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHRhYl9iYXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfdGFiX2JhcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdGFiX2JhcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzIwMzFmMzNhX3JlbmRlcixcbiAgdGFiX2JhcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzIwMzFmMzNhX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgdGFiX2Jhcl9hcGk7IH1cbnRhYl9iYXJfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy90YWJzL3NyYy90YWItYmFyLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0YWJfYmFyID0gKHRhYl9iYXJfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdGFicy9zcmMvdGFiLW5hdi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxudmFyIHRhYl9uYXZ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19maXJzdFVwcGVyQ2FzZSA9IGZ1bmN0aW9uIGZpcnN0VXBwZXJDYXNlKHN0cikge1xuICByZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKCB8XilbYS16XS9nLCBmdW5jdGlvbiAoTCkge1xuICAgIHJldHVybiBMLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGFiX25hdnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdUYWJOYXYnLFxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBUYWJCYXI6IHRhYl9iYXJcbiAgfSxcblxuICBpbmplY3Q6IFsncm9vdFRhYnMnXSxcblxuICBwcm9wczoge1xuICAgIHBhbmVzOiBBcnJheSxcbiAgICBjdXJyZW50TmFtZTogU3RyaW5nLFxuICAgIGVkaXRhYmxlOiBCb29sZWFuLFxuICAgIG9uVGFiQ2xpY2s6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogbm9vcFxuICAgIH0sXG4gICAgb25UYWJSZW1vdmU6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogbm9vcFxuICAgIH0sXG4gICAgdHlwZTogU3RyaW5nLFxuICAgIHN0cmV0Y2g6IEJvb2xlYW5cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzY3JvbGxhYmxlOiBmYWxzZSxcbiAgICAgIG5hdk9mZnNldDogMCxcbiAgICAgIGlzRm9jdXM6IGZhbHNlLFxuICAgICAgZm9jdXNhYmxlOiB0cnVlXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB7XG4gICAgbmF2U3R5bGU6IGZ1bmN0aW9uIG5hdlN0eWxlKCkge1xuICAgICAgdmFyIGRpciA9IFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YodGhpcy5yb290VGFicy50YWJQb3NpdGlvbikgIT09IC0xID8gJ1gnIDogJ1knO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlJyArIGRpciArICcoLScgKyB0aGlzLm5hdk9mZnNldCArICdweCknXG4gICAgICB9O1xuICAgIH0sXG4gICAgc2l6ZU5hbWU6IGZ1bmN0aW9uIHNpemVOYW1lKCkge1xuICAgICAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YodGhpcy5yb290VGFicy50YWJQb3NpdGlvbikgIT09IC0xID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgc2Nyb2xsUHJldjogZnVuY3Rpb24gc2Nyb2xsUHJldigpIHtcbiAgICAgIHZhciBjb250YWluZXJTaXplID0gdGhpcy4kcmVmcy5uYXZTY3JvbGxbJ29mZnNldCcgKyB0YWJfbmF2dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfZmlyc3RVcHBlckNhc2UodGhpcy5zaXplTmFtZSldO1xuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLm5hdk9mZnNldDtcblxuICAgICAgaWYgKCFjdXJyZW50T2Zmc2V0KSByZXR1cm47XG5cbiAgICAgIHZhciBuZXdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0ID4gY29udGFpbmVyU2l6ZSA/IGN1cnJlbnRPZmZzZXQgLSBjb250YWluZXJTaXplIDogMDtcblxuICAgICAgdGhpcy5uYXZPZmZzZXQgPSBuZXdPZmZzZXQ7XG4gICAgfSxcbiAgICBzY3JvbGxOZXh0OiBmdW5jdGlvbiBzY3JvbGxOZXh0KCkge1xuICAgICAgdmFyIG5hdlNpemUgPSB0aGlzLiRyZWZzLm5hdlsnb2Zmc2V0JyArIHRhYl9uYXZ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19maXJzdFVwcGVyQ2FzZSh0aGlzLnNpemVOYW1lKV07XG4gICAgICB2YXIgY29udGFpbmVyU2l6ZSA9IHRoaXMuJHJlZnMubmF2U2Nyb2xsWydvZmZzZXQnICsgdGFiX25hdnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2ZpcnN0VXBwZXJDYXNlKHRoaXMuc2l6ZU5hbWUpXTtcbiAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy5uYXZPZmZzZXQ7XG5cbiAgICAgIGlmIChuYXZTaXplIC0gY3VycmVudE9mZnNldCA8PSBjb250YWluZXJTaXplKSByZXR1cm47XG5cbiAgICAgIHZhciBuZXdPZmZzZXQgPSBuYXZTaXplIC0gY3VycmVudE9mZnNldCA+IGNvbnRhaW5lclNpemUgKiAyID8gY3VycmVudE9mZnNldCArIGNvbnRhaW5lclNpemUgOiBuYXZTaXplIC0gY29udGFpbmVyU2l6ZTtcblxuICAgICAgdGhpcy5uYXZPZmZzZXQgPSBuZXdPZmZzZXQ7XG4gICAgfSxcbiAgICBzY3JvbGxUb0FjdGl2ZVRhYjogZnVuY3Rpb24gc2Nyb2xsVG9BY3RpdmVUYWIoKSB7XG4gICAgICBpZiAoIXRoaXMuc2Nyb2xsYWJsZSkgcmV0dXJuO1xuICAgICAgdmFyIG5hdiA9IHRoaXMuJHJlZnMubmF2O1xuICAgICAgdmFyIGFjdGl2ZVRhYiA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5pcy1hY3RpdmUnKTtcbiAgICAgIGlmICghYWN0aXZlVGFiKSByZXR1cm47XG4gICAgICB2YXIgbmF2U2Nyb2xsID0gdGhpcy4kcmVmcy5uYXZTY3JvbGw7XG4gICAgICB2YXIgaXNIb3Jpem9udGFsID0gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZih0aGlzLnJvb3RUYWJzLnRhYlBvc2l0aW9uKSAhPT0gLTE7XG4gICAgICB2YXIgYWN0aXZlVGFiQm91bmRpbmcgPSBhY3RpdmVUYWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB2YXIgbmF2U2Nyb2xsQm91bmRpbmcgPSBuYXZTY3JvbGwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB2YXIgbWF4T2Zmc2V0ID0gaXNIb3Jpem9udGFsID8gbmF2Lm9mZnNldFdpZHRoIC0gbmF2U2Nyb2xsQm91bmRpbmcud2lkdGggOiBuYXYub2Zmc2V0SGVpZ2h0IC0gbmF2U2Nyb2xsQm91bmRpbmcuaGVpZ2h0O1xuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLm5hdk9mZnNldDtcbiAgICAgIHZhciBuZXdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0O1xuXG4gICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgIGlmIChhY3RpdmVUYWJCb3VuZGluZy5sZWZ0IDwgbmF2U2Nyb2xsQm91bmRpbmcubGVmdCkge1xuICAgICAgICAgIG5ld09mZnNldCA9IGN1cnJlbnRPZmZzZXQgLSAobmF2U2Nyb2xsQm91bmRpbmcubGVmdCAtIGFjdGl2ZVRhYkJvdW5kaW5nLmxlZnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3RpdmVUYWJCb3VuZGluZy5yaWdodCA+IG5hdlNjcm9sbEJvdW5kaW5nLnJpZ2h0KSB7XG4gICAgICAgICAgbmV3T2Zmc2V0ID0gY3VycmVudE9mZnNldCArIGFjdGl2ZVRhYkJvdW5kaW5nLnJpZ2h0IC0gbmF2U2Nyb2xsQm91bmRpbmcucmlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhY3RpdmVUYWJCb3VuZGluZy50b3AgPCBuYXZTY3JvbGxCb3VuZGluZy50b3ApIHtcbiAgICAgICAgICBuZXdPZmZzZXQgPSBjdXJyZW50T2Zmc2V0IC0gKG5hdlNjcm9sbEJvdW5kaW5nLnRvcCAtIGFjdGl2ZVRhYkJvdW5kaW5nLnRvcCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGl2ZVRhYkJvdW5kaW5nLmJvdHRvbSA+IG5hdlNjcm9sbEJvdW5kaW5nLmJvdHRvbSkge1xuICAgICAgICAgIG5ld09mZnNldCA9IGN1cnJlbnRPZmZzZXQgKyAoYWN0aXZlVGFiQm91bmRpbmcuYm90dG9tIC0gbmF2U2Nyb2xsQm91bmRpbmcuYm90dG9tKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmV3T2Zmc2V0ID0gTWF0aC5tYXgobmV3T2Zmc2V0LCAwKTtcbiAgICAgIHRoaXMubmF2T2Zmc2V0ID0gTWF0aC5taW4obmV3T2Zmc2V0LCBtYXhPZmZzZXQpO1xuICAgIH0sXG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgICBpZiAoIXRoaXMuJHJlZnMubmF2KSByZXR1cm47XG4gICAgICB2YXIgc2l6ZU5hbWUgPSB0aGlzLnNpemVOYW1lO1xuICAgICAgdmFyIG5hdlNpemUgPSB0aGlzLiRyZWZzLm5hdlsnb2Zmc2V0JyArIHRhYl9uYXZ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19maXJzdFVwcGVyQ2FzZShzaXplTmFtZSldO1xuICAgICAgdmFyIGNvbnRhaW5lclNpemUgPSB0aGlzLiRyZWZzLm5hdlNjcm9sbFsnb2Zmc2V0JyArIHRhYl9uYXZ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19maXJzdFVwcGVyQ2FzZShzaXplTmFtZSldO1xuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLm5hdk9mZnNldDtcblxuICAgICAgaWYgKGNvbnRhaW5lclNpemUgPCBuYXZTaXplKSB7XG4gICAgICAgIHZhciBfY3VycmVudE9mZnNldCA9IHRoaXMubmF2T2Zmc2V0O1xuICAgICAgICB0aGlzLnNjcm9sbGFibGUgPSB0aGlzLnNjcm9sbGFibGUgfHwge307XG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZS5wcmV2ID0gX2N1cnJlbnRPZmZzZXQ7XG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZS5uZXh0ID0gX2N1cnJlbnRPZmZzZXQgKyBjb250YWluZXJTaXplIDwgbmF2U2l6ZTtcbiAgICAgICAgaWYgKG5hdlNpemUgLSBfY3VycmVudE9mZnNldCA8IGNvbnRhaW5lclNpemUpIHtcbiAgICAgICAgICB0aGlzLm5hdk9mZnNldCA9IG5hdlNpemUgLSBjb250YWluZXJTaXplO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNjcm9sbGFibGUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgPiAwKSB7XG4gICAgICAgICAgdGhpcy5uYXZPZmZzZXQgPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBjaGFuZ2VUYWI6IGZ1bmN0aW9uIGNoYW5nZVRhYihlKSB7XG4gICAgICB2YXIga2V5Q29kZSA9IGUua2V5Q29kZTtcbiAgICAgIHZhciBuZXh0SW5kZXggPSB2b2lkIDA7XG4gICAgICB2YXIgY3VycmVudEluZGV4ID0gdm9pZCAwLFxuICAgICAgICAgIHRhYkxpc3QgPSB2b2lkIDA7XG4gICAgICBpZiAoWzM3LCAzOCwgMzksIDQwXS5pbmRleE9mKGtleUNvZGUpICE9PSAtMSkge1xuICAgICAgICAvLyDlt6blj7PkuIrkuIvplK7mm7TmjaJ0YWJcbiAgICAgICAgdGFiTGlzdCA9IGUuY3VycmVudFRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT10YWJdJyk7XG4gICAgICAgIGN1cnJlbnRJbmRleCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodGFiTGlzdCwgZS50YXJnZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleUNvZGUgPT09IDM3IHx8IGtleUNvZGUgPT09IDM4KSB7XG4gICAgICAgIC8vIGxlZnRcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gMCkge1xuICAgICAgICAgIC8vIGZpcnN0XG4gICAgICAgICAgbmV4dEluZGV4ID0gdGFiTGlzdC5sZW5ndGggLSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHJpZ2h0XG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPCB0YWJMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAvLyBub3QgbGFzdFxuICAgICAgICAgIG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dEluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGFiTGlzdFtuZXh0SW5kZXhdLmZvY3VzKCk7IC8vIOaUueWPmOeEpueCueWFg+e0oFxuICAgICAgdGFiTGlzdFtuZXh0SW5kZXhdLmNsaWNrKCk7IC8vIOmAieS4reS4i+S4gOS4qnRhYlxuICAgICAgdGhpcy5zZXRGb2N1cygpO1xuICAgIH0sXG4gICAgc2V0Rm9jdXM6IGZ1bmN0aW9uIHNldEZvY3VzKCkge1xuICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgIHRoaXMuaXNGb2N1cyA9IHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICByZW1vdmVGb2N1czogZnVuY3Rpb24gcmVtb3ZlRm9jdXMoKSB7XG4gICAgICB0aGlzLmlzRm9jdXMgPSBmYWxzZTtcbiAgICB9LFxuICAgIHZpc2liaWxpdHlDaGFuZ2VIYW5kbGVyOiBmdW5jdGlvbiB2aXNpYmlsaXR5Q2hhbmdlSGFuZGxlcigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciB2aXNpYmlsaXR5ID0gZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlO1xuICAgICAgaWYgKHZpc2liaWxpdHkgPT09ICdoaWRkZW4nKSB7XG4gICAgICAgIHRoaXMuZm9jdXNhYmxlID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKHZpc2liaWxpdHkgPT09ICd2aXNpYmxlJykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpcy5mb2N1c2FibGUgPSB0cnVlO1xuICAgICAgICB9LCA1MCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB3aW5kb3dCbHVySGFuZGxlcjogZnVuY3Rpb24gd2luZG93Qmx1ckhhbmRsZXIoKSB7XG4gICAgICB0aGlzLmZvY3VzYWJsZSA9IGZhbHNlO1xuICAgIH0sXG4gICAgd2luZG93Rm9jdXNIYW5kbGVyOiBmdW5jdGlvbiB3aW5kb3dGb2N1c0hhbmRsZXIoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5mb2N1c2FibGUgPSB0cnVlO1xuICAgICAgfSwgNTApO1xuICAgIH1cbiAgfSxcblxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHZhciB0eXBlID0gdGhpcy50eXBlLFxuICAgICAgICBwYW5lcyA9IHRoaXMucGFuZXMsXG4gICAgICAgIGVkaXRhYmxlID0gdGhpcy5lZGl0YWJsZSxcbiAgICAgICAgc3RyZXRjaCA9IHRoaXMuc3RyZXRjaCxcbiAgICAgICAgb25UYWJDbGljayA9IHRoaXMub25UYWJDbGljayxcbiAgICAgICAgb25UYWJSZW1vdmUgPSB0aGlzLm9uVGFiUmVtb3ZlLFxuICAgICAgICBuYXZTdHlsZSA9IHRoaXMubmF2U3R5bGUsXG4gICAgICAgIHNjcm9sbGFibGUgPSB0aGlzLnNjcm9sbGFibGUsXG4gICAgICAgIHNjcm9sbE5leHQgPSB0aGlzLnNjcm9sbE5leHQsXG4gICAgICAgIHNjcm9sbFByZXYgPSB0aGlzLnNjcm9sbFByZXYsXG4gICAgICAgIGNoYW5nZVRhYiA9IHRoaXMuY2hhbmdlVGFiLFxuICAgICAgICBzZXRGb2N1cyA9IHRoaXMuc2V0Rm9jdXMsXG4gICAgICAgIHJlbW92ZUZvY3VzID0gdGhpcy5yZW1vdmVGb2N1cztcblxuICAgIHZhciBzY3JvbGxCdG4gPSBzY3JvbGxhYmxlID8gW2goXG4gICAgICAnc3BhbicsXG4gICAgICB7ICdjbGFzcyc6IFsnZWwtdGFic19fbmF2LXByZXYnLCBzY3JvbGxhYmxlLnByZXYgPyAnJyA6ICdpcy1kaXNhYmxlZCddLCBvbjoge1xuICAgICAgICAgICdjbGljayc6IHNjcm9sbFByZXZcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtoKCdpJywgeyAnY2xhc3MnOiAnZWwtaWNvbi1hcnJvdy1sZWZ0JyB9KV1cbiAgICApLCBoKFxuICAgICAgJ3NwYW4nLFxuICAgICAgeyAnY2xhc3MnOiBbJ2VsLXRhYnNfX25hdi1uZXh0Jywgc2Nyb2xsYWJsZS5uZXh0ID8gJycgOiAnaXMtZGlzYWJsZWQnXSwgb246IHtcbiAgICAgICAgICAnY2xpY2snOiBzY3JvbGxOZXh0XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbaCgnaScsIHsgJ2NsYXNzJzogJ2VsLWljb24tYXJyb3ctcmlnaHQnIH0pXVxuICAgICldIDogbnVsbDtcblxuICAgIHZhciB0YWJzID0gdGhpcy5fbChwYW5lcywgZnVuY3Rpb24gKHBhbmUsIGluZGV4KSB7XG4gICAgICB2YXIgX3JlZjtcblxuICAgICAgdmFyIHRhYk5hbWUgPSBwYW5lLm5hbWUgfHwgcGFuZS5pbmRleCB8fCBpbmRleDtcbiAgICAgIHZhciBjbG9zYWJsZSA9IHBhbmUuaXNDbG9zYWJsZSB8fCBlZGl0YWJsZTtcblxuICAgICAgcGFuZS5pbmRleCA9ICcnICsgaW5kZXg7XG5cbiAgICAgIHZhciBidG5DbG9zZSA9IGNsb3NhYmxlID8gaCgnc3BhbicsIHsgJ2NsYXNzJzogJ2VsLWljb24tY2xvc2UnLCBvbjoge1xuICAgICAgICAgICdjbGljayc6IGZ1bmN0aW9uIGNsaWNrKGV2KSB7XG4gICAgICAgICAgICBvblRhYlJlbW92ZShwYW5lLCBldik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSA6IG51bGw7XG5cbiAgICAgIHZhciB0YWJMYWJlbENvbnRlbnQgPSBwYW5lLiRzbG90cy5sYWJlbCB8fCBwYW5lLmxhYmVsO1xuICAgICAgdmFyIHRhYmluZGV4ID0gcGFuZS5hY3RpdmUgPyAwIDogLTE7XG4gICAgICByZXR1cm4gaChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHtcbiAgICAgICAgICAnY2xhc3MnOiAoX3JlZiA9IHtcbiAgICAgICAgICAgICdlbC10YWJzX19pdGVtJzogdHJ1ZVxuICAgICAgICAgIH0sIF9yZWZbJ2lzLScgKyBfdGhpczMucm9vdFRhYnMudGFiUG9zaXRpb25dID0gdHJ1ZSwgX3JlZlsnaXMtYWN0aXZlJ10gPSBwYW5lLmFjdGl2ZSwgX3JlZlsnaXMtZGlzYWJsZWQnXSA9IHBhbmUuZGlzYWJsZWQsIF9yZWZbJ2lzLWNsb3NhYmxlJ10gPSBjbG9zYWJsZSwgX3JlZlsnaXMtZm9jdXMnXSA9IF90aGlzMy5pc0ZvY3VzLCBfcmVmKSxcbiAgICAgICAgICBhdHRyczogeyBpZDogJ3RhYi0nICsgdGFiTmFtZSxcblxuICAgICAgICAgICAgJ2FyaWEtY29udHJvbHMnOiAncGFuZS0nICsgdGFiTmFtZSxcbiAgICAgICAgICAgIHJvbGU6ICd0YWInLFxuICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBwYW5lLmFjdGl2ZSxcblxuICAgICAgICAgICAgdGFiaW5kZXg6IHRhYmluZGV4XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXk6ICd0YWItJyArIHRhYk5hbWUsIHJlZjogJ3RhYnMnLCByZWZJbkZvcjogdHJ1ZSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgJ2ZvY3VzJzogZnVuY3Rpb24gZm9jdXMoKSB7XG4gICAgICAgICAgICAgIHNldEZvY3VzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2JsdXInOiBmdW5jdGlvbiBibHVyKCkge1xuICAgICAgICAgICAgICByZW1vdmVGb2N1cygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdjbGljayc6IGZ1bmN0aW9uIGNsaWNrKGV2KSB7XG4gICAgICAgICAgICAgIHJlbW92ZUZvY3VzKCk7b25UYWJDbGljayhwYW5lLCB0YWJOYW1lLCBldik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2tleWRvd24nOiBmdW5jdGlvbiBrZXlkb3duKGV2KSB7XG4gICAgICAgICAgICAgIGlmIChjbG9zYWJsZSAmJiAoZXYua2V5Q29kZSA9PT0gNDYgfHwgZXYua2V5Q29kZSA9PT0gOCkpIHtcbiAgICAgICAgICAgICAgICBvblRhYlJlbW92ZShwYW5lLCBldik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFt0YWJMYWJlbENvbnRlbnQsIGJ0bkNsb3NlXVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaChcbiAgICAgICdkaXYnLFxuICAgICAgeyAnY2xhc3MnOiBbJ2VsLXRhYnNfX25hdi13cmFwJywgc2Nyb2xsYWJsZSA/ICdpcy1zY3JvbGxhYmxlJyA6ICcnLCAnaXMtJyArIHRoaXMucm9vdFRhYnMudGFiUG9zaXRpb25dIH0sXG4gICAgICBbc2Nyb2xsQnRuLCBoKFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyAnY2xhc3MnOiBbJ2VsLXRhYnNfX25hdi1zY3JvbGwnXSwgcmVmOiAnbmF2U2Nyb2xsJyB9LFxuICAgICAgICBbaChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnY2xhc3MnOiBbJ2VsLXRhYnNfX25hdicsICdpcy0nICsgdGhpcy5yb290VGFicy50YWJQb3NpdGlvbiwgc3RyZXRjaCAmJiBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHRoaXMucm9vdFRhYnMudGFiUG9zaXRpb24pICE9PSAtMSA/ICdpcy1zdHJldGNoJyA6ICcnXSxcbiAgICAgICAgICAgIHJlZjogJ25hdicsXG4gICAgICAgICAgICBzdHlsZTogbmF2U3R5bGUsXG4gICAgICAgICAgICBhdHRyczogeyByb2xlOiAndGFibGlzdCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAna2V5ZG93bic6IGNoYW5nZVRhYlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgWyF0eXBlID8gaCgndGFiLWJhcicsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7IHRhYnM6IHBhbmVzIH1cbiAgICAgICAgICB9KSA6IG51bGwsIHRhYnNdXG4gICAgICAgICldXG4gICAgICApXVxuICAgICk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICBPYmplY3QocmVzaXplX2V2ZW50X1tcImFkZFJlc2l6ZUxpc3RlbmVyXCJdKSh0aGlzLiRlbCwgdGhpcy51cGRhdGUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLnZpc2liaWxpdHlDaGFuZ2VIYW5kbGVyKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMud2luZG93Qmx1ckhhbmRsZXIpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMud2luZG93Rm9jdXNIYW5kbGVyKTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzNC5zY3JvbGxUb0FjdGl2ZVRhYigpO1xuICAgIH0sIDApO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLnVwZGF0ZSkgT2JqZWN0KHJlc2l6ZV9ldmVudF9bXCJyZW1vdmVSZXNpemVMaXN0ZW5lclwiXSkodGhpcy4kZWwsIHRoaXMudXBkYXRlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy52aXNpYmlsaXR5Q2hhbmdlSGFuZGxlcik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLndpbmRvd0JsdXJIYW5kbGVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLndpbmRvd0ZvY3VzSGFuZGxlcik7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJzL3NyYy90YWItbmF2LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfdGFiX25hdnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh0YWJfbmF2dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYnMvc3JjL3RhYi1uYXYudnVlXG52YXIgdGFiX25hdl9yZW5kZXIsIHRhYl9uYXZfc3RhdGljUmVuZGVyRm5zXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHRhYl9uYXZfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfdGFiX25hdnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdGFiX25hdl9yZW5kZXIsXG4gIHRhYl9uYXZfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciB0YWJfbmF2X2FwaTsgfVxudGFiX25hdl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3RhYnMvc3JjL3RhYi1uYXYudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRhYl9uYXYgPSAodGFiX25hdl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy90YWJzL3NyYy90YWJzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRhYnN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxUYWJzJyxcblxuICBjb21wb25lbnRzOiB7XG4gICAgVGFiTmF2OiB0YWJfbmF2XG4gIH0sXG5cbiAgcHJvcHM6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgYWN0aXZlTmFtZTogU3RyaW5nLFxuICAgIGNsb3NhYmxlOiBCb29sZWFuLFxuICAgIGFkZGFibGU6IEJvb2xlYW4sXG4gICAgdmFsdWU6IHt9LFxuICAgIGVkaXRhYmxlOiBCb29sZWFuLFxuICAgIHRhYlBvc2l0aW9uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAndG9wJ1xuICAgIH0sXG4gICAgYmVmb3JlTGVhdmU6IEZ1bmN0aW9uLFxuICAgIHN0cmV0Y2g6IEJvb2xlYW5cbiAgfSxcblxuICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICByb290VGFiczogdGhpc1xuICAgIH07XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1cnJlbnROYW1lOiB0aGlzLnZhbHVlIHx8IHRoaXMuYWN0aXZlTmFtZSxcbiAgICAgIHBhbmVzOiBbXVxuICAgIH07XG4gIH0sXG5cblxuICB3YXRjaDoge1xuICAgIGFjdGl2ZU5hbWU6IGZ1bmN0aW9uIGFjdGl2ZU5hbWUodmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0Q3VycmVudE5hbWUodmFsdWUpO1xuICAgIH0sXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKF92YWx1ZSkge1xuICAgICAgdGhpcy5zZXRDdXJyZW50TmFtZShfdmFsdWUpO1xuICAgIH0sXG4gICAgY3VycmVudE5hbWU6IGZ1bmN0aW9uIGN1cnJlbnROYW1lKHZhbHVlKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy4kcmVmcy5uYXYpIHtcbiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLiRyZWZzLm5hdi4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHtcbiAgICAgICAgICAgIF90aGlzLiRyZWZzLm5hdi5zY3JvbGxUb0FjdGl2ZVRhYigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGNhbGNQYW5lSW5zdGFuY2VzOiBmdW5jdGlvbiBjYWxjUGFuZUluc3RhbmNlcygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgaXNGb3JjZVVwZGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLiRzbG90cy5kZWZhdWx0KSB7XG4gICAgICAgIHZhciBwYW5lU2xvdHMgPSB0aGlzLiRzbG90cy5kZWZhdWx0LmZpbHRlcihmdW5jdGlvbiAodm5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gdm5vZGUudGFnICYmIHZub2RlLmNvbXBvbmVudE9wdGlvbnMgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucy5DdG9yLm9wdGlvbnMubmFtZSA9PT0gJ0VsVGFiUGFuZSc7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyB1cGRhdGUgaW5kZWVkXG4gICAgICAgIHZhciBwYW5lcyA9IHBhbmVTbG90cy5tYXAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSBfcmVmLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwYW5lc0NoYW5nZWQgPSAhKHBhbmVzLmxlbmd0aCA9PT0gdGhpcy5wYW5lcy5sZW5ndGggJiYgcGFuZXMuZXZlcnkoZnVuY3Rpb24gKHBhbmUsIGluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIHBhbmUgPT09IF90aGlzMi5wYW5lc1tpbmRleF07XG4gICAgICAgIH0pKTtcbiAgICAgICAgaWYgKGlzRm9yY2VVcGRhdGUgfHwgcGFuZXNDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5wYW5lcyA9IHBhbmVzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGFuZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHRoaXMucGFuZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVRhYkNsaWNrOiBmdW5jdGlvbiBoYW5kbGVUYWJDbGljayh0YWIsIHRhYk5hbWUsIGV2ZW50KSB7XG4gICAgICBpZiAodGFiLmRpc2FibGVkKSByZXR1cm47XG4gICAgICB0aGlzLnNldEN1cnJlbnROYW1lKHRhYk5hbWUpO1xuICAgICAgdGhpcy4kZW1pdCgndGFiLWNsaWNrJywgdGFiLCBldmVudCk7XG4gICAgfSxcbiAgICBoYW5kbGVUYWJSZW1vdmU6IGZ1bmN0aW9uIGhhbmRsZVRhYlJlbW92ZShwYW5lLCBldikge1xuICAgICAgaWYgKHBhbmUuZGlzYWJsZWQpIHJldHVybjtcbiAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy4kZW1pdCgnZWRpdCcsIHBhbmUubmFtZSwgJ3JlbW92ZScpO1xuICAgICAgdGhpcy4kZW1pdCgndGFiLXJlbW92ZScsIHBhbmUubmFtZSk7XG4gICAgfSxcbiAgICBoYW5kbGVUYWJBZGQ6IGZ1bmN0aW9uIGhhbmRsZVRhYkFkZCgpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2VkaXQnLCBudWxsLCAnYWRkJyk7XG4gICAgICB0aGlzLiRlbWl0KCd0YWItYWRkJyk7XG4gICAgfSxcbiAgICBzZXRDdXJyZW50TmFtZTogZnVuY3Rpb24gc2V0Q3VycmVudE5hbWUodmFsdWUpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgY2hhbmdlQ3VycmVudE5hbWUgPSBmdW5jdGlvbiBjaGFuZ2VDdXJyZW50TmFtZSgpIHtcbiAgICAgICAgX3RoaXMzLmN1cnJlbnROYW1lID0gdmFsdWU7XG4gICAgICAgIF90aGlzMy4kZW1pdCgnaW5wdXQnLCB2YWx1ZSk7XG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuY3VycmVudE5hbWUgIT09IHZhbHVlICYmIHRoaXMuYmVmb3JlTGVhdmUpIHtcbiAgICAgICAgdmFyIGJlZm9yZSA9IHRoaXMuYmVmb3JlTGVhdmUodmFsdWUsIHRoaXMuY3VycmVudE5hbWUpO1xuICAgICAgICBpZiAoYmVmb3JlICYmIGJlZm9yZS50aGVuKSB7XG4gICAgICAgICAgYmVmb3JlLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hhbmdlQ3VycmVudE5hbWUoKTtcbiAgICAgICAgICAgIF90aGlzMy4kcmVmcy5uYXYgJiYgX3RoaXMzLiRyZWZzLm5hdi5yZW1vdmVGb2N1cygpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9FbGVtZUZFL2VsZW1lbnQvcHVsbC8xNDgxNlxuICAgICAgICAgICAgLy8gaWdub3JlIHByb21pc2UgcmVqZWN0aW9uIGluIGBiZWZvcmUtbGVhdmVgIGhvb2tcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChiZWZvcmUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgY2hhbmdlQ3VycmVudE5hbWUoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbmdlQ3VycmVudE5hbWUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfcmVmMjtcblxuICAgIHZhciB0eXBlID0gdGhpcy50eXBlLFxuICAgICAgICBoYW5kbGVUYWJDbGljayA9IHRoaXMuaGFuZGxlVGFiQ2xpY2ssXG4gICAgICAgIGhhbmRsZVRhYlJlbW92ZSA9IHRoaXMuaGFuZGxlVGFiUmVtb3ZlLFxuICAgICAgICBoYW5kbGVUYWJBZGQgPSB0aGlzLmhhbmRsZVRhYkFkZCxcbiAgICAgICAgY3VycmVudE5hbWUgPSB0aGlzLmN1cnJlbnROYW1lLFxuICAgICAgICBwYW5lcyA9IHRoaXMucGFuZXMsXG4gICAgICAgIGVkaXRhYmxlID0gdGhpcy5lZGl0YWJsZSxcbiAgICAgICAgYWRkYWJsZSA9IHRoaXMuYWRkYWJsZSxcbiAgICAgICAgdGFiUG9zaXRpb24gPSB0aGlzLnRhYlBvc2l0aW9uLFxuICAgICAgICBzdHJldGNoID0gdGhpcy5zdHJldGNoO1xuXG5cbiAgICB2YXIgbmV3QnV0dG9uID0gZWRpdGFibGUgfHwgYWRkYWJsZSA/IGgoXG4gICAgICAnc3BhbicsXG4gICAgICB7XG4gICAgICAgICdjbGFzcyc6ICdlbC10YWJzX19uZXctdGFiJyxcbiAgICAgICAgb246IHtcbiAgICAgICAgICAnY2xpY2snOiBoYW5kbGVUYWJBZGQsXG4gICAgICAgICAgJ2tleWRvd24nOiBmdW5jdGlvbiBrZXlkb3duKGV2KSB7XG4gICAgICAgICAgICBpZiAoZXYua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgICAgaGFuZGxlVGFiQWRkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHRhYmluZGV4OiAnMCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtoKCdpJywgeyAnY2xhc3MnOiAnZWwtaWNvbi1wbHVzJyB9KV1cbiAgICApIDogbnVsbDtcblxuICAgIHZhciBuYXZEYXRhID0ge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVudE5hbWU6IGN1cnJlbnROYW1lLFxuICAgICAgICBvblRhYkNsaWNrOiBoYW5kbGVUYWJDbGljayxcbiAgICAgICAgb25UYWJSZW1vdmU6IGhhbmRsZVRhYlJlbW92ZSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBwYW5lczogcGFuZXMsXG4gICAgICAgIHN0cmV0Y2g6IHN0cmV0Y2hcbiAgICAgIH0sXG4gICAgICByZWY6ICduYXYnXG4gICAgfTtcbiAgICB2YXIgaGVhZGVyID0gaChcbiAgICAgICdkaXYnLFxuICAgICAgeyAnY2xhc3MnOiBbJ2VsLXRhYnNfX2hlYWRlcicsICdpcy0nICsgdGFiUG9zaXRpb25dIH0sXG4gICAgICBbbmV3QnV0dG9uLCBoKCd0YWItbmF2JywgbmF2RGF0YSldXG4gICAgKTtcbiAgICB2YXIgcGFuZWxzID0gaChcbiAgICAgICdkaXYnLFxuICAgICAgeyAnY2xhc3MnOiAnZWwtdGFic19fY29udGVudCcgfSxcbiAgICAgIFt0aGlzLiRzbG90cy5kZWZhdWx0XVxuICAgICk7XG5cbiAgICByZXR1cm4gaChcbiAgICAgICdkaXYnLFxuICAgICAgeyAnY2xhc3MnOiAoX3JlZjIgPSB7XG4gICAgICAgICAgJ2VsLXRhYnMnOiB0cnVlLFxuICAgICAgICAgICdlbC10YWJzLS1jYXJkJzogdHlwZSA9PT0gJ2NhcmQnXG4gICAgICAgIH0sIF9yZWYyWydlbC10YWJzLS0nICsgdGFiUG9zaXRpb25dID0gdHJ1ZSwgX3JlZjJbJ2VsLXRhYnMtLWJvcmRlci1jYXJkJ10gPSB0eXBlID09PSAnYm9yZGVyLWNhcmQnLCBfcmVmMikgfSxcbiAgICAgIFt0YWJQb3NpdGlvbiAhPT0gJ2JvdHRvbScgPyBbaGVhZGVyLCBwYW5lbHNdIDogW3BhbmVscywgaGVhZGVyXV1cbiAgICApO1xuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50TmFtZSkge1xuICAgICAgdGhpcy5zZXRDdXJyZW50TmFtZSgnMCcpO1xuICAgIH1cblxuICAgIHRoaXMuJG9uKCd0YWItbmF2LXVwZGF0ZScsIHRoaXMuY2FsY1BhbmVJbnN0YW5jZXMuYmluZChudWxsLCB0cnVlKSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5jYWxjUGFuZUluc3RhbmNlcygpO1xuICB9LFxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIHRoaXMuY2FsY1BhbmVJbnN0YW5jZXMoKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYnMvc3JjL3RhYnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY190YWJzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHRhYnN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFicy9zcmMvdGFicy52dWVcbnZhciB0YWJzX3JlbmRlciwgdGFic19zdGF0aWNSZW5kZXJGbnNcblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdGFic19jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY190YWJzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB0YWJzX3JlbmRlcixcbiAgdGFic19zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHRhYnNfYXBpOyB9XG50YWJzX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvdGFicy9zcmMvdGFicy52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGFicyA9ICh0YWJzX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFicy9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG50YWJzLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodGFicy5uYW1lLCB0YWJzKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3RhYnMgPSAodGFicyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3RhYnMvc3JjL3RhYi1wYW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05MTQ1YTA3MCZcbnZhciB0YWJfcGFuZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzkxNDVhMDcwX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiAhX3ZtLmxhenkgfHwgX3ZtLmxvYWRlZCB8fCBfdm0uYWN0aXZlXG4gICAgPyBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0uYWN0aXZlLFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImFjdGl2ZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10YWItcGFuZVwiLFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICByb2xlOiBcInRhYnBhbmVsXCIsXG4gICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6ICFfdm0uYWN0aXZlLFxuICAgICAgICAgICAgaWQ6IFwicGFuZS1cIiArIF92bS5wYW5lTmFtZSxcbiAgICAgICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IFwidGFiLVwiICsgX3ZtLnBhbmVOYW1lXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICA6IF92bS5fZSgpXG59XG52YXIgdGFiX3BhbmV2dWVfdHlwZV90ZW1wbGF0ZV9pZF85MTQ1YTA3MF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxudGFiX3BhbmV2dWVfdHlwZV90ZW1wbGF0ZV9pZF85MTQ1YTA3MF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhYnMvc3JjL3RhYi1wYW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05MTQ1YTA3MCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdGFicy9zcmMvdGFiLXBhbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGFiX3BhbmV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxUYWJQYW5lJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxUYWJQYW5lJyxcblxuICBwcm9wczoge1xuICAgIGxhYmVsOiBTdHJpbmcsXG4gICAgbGFiZWxDb250ZW50OiBGdW5jdGlvbixcbiAgICBuYW1lOiBTdHJpbmcsXG4gICAgY2xvc2FibGU6IEJvb2xlYW4sXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgbGF6eTogQm9vbGVhblxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiBudWxsLFxuICAgICAgbG9hZGVkOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGlzQ2xvc2FibGU6IGZ1bmN0aW9uIGlzQ2xvc2FibGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jbG9zYWJsZSB8fCB0aGlzLiRwYXJlbnQuY2xvc2FibGU7XG4gICAgfSxcbiAgICBhY3RpdmU6IGZ1bmN0aW9uIGFjdGl2ZSgpIHtcbiAgICAgIHZhciBhY3RpdmUgPSB0aGlzLiRwYXJlbnQuY3VycmVudE5hbWUgPT09ICh0aGlzLm5hbWUgfHwgdGhpcy5pbmRleCk7XG4gICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY3RpdmU7XG4gICAgfSxcbiAgICBwYW5lTmFtZTogZnVuY3Rpb24gcGFuZU5hbWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IHRoaXMuaW5kZXg7XG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQoKSB7XG4gICAgdGhpcy4kcGFyZW50LiRlbWl0KCd0YWItbmF2LXVwZGF0ZScpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFicy9zcmMvdGFiLXBhbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY190YWJfcGFuZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh0YWJfcGFuZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWJzL3NyYy90YWItcGFuZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB0YWJfcGFuZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY190YWJfcGFuZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdGFiX3BhbmV2dWVfdHlwZV90ZW1wbGF0ZV9pZF85MTQ1YTA3MF9yZW5kZXIsXG4gIHRhYl9wYW5ldnVlX3R5cGVfdGVtcGxhdGVfaWRfOTE0NWEwNzBfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciB0YWJfcGFuZV9hcGk7IH1cbnRhYl9wYW5lX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvdGFicy9zcmMvdGFiLXBhbmUudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRhYl9wYW5lID0gKHRhYl9wYW5lX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFiLXBhbmUvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudGFiX3BhbmUuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh0YWJfcGFuZS5uYW1lLCB0YWJfcGFuZSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc190YWJfcGFuZSA9ICh0YWJfcGFuZSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy90YWcvc3JjL3RhZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRhZ3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFRhZycsXG4gIHByb3BzOiB7XG4gICAgdGV4dDogU3RyaW5nLFxuICAgIGNsb3NhYmxlOiBCb29sZWFuLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgICBoaXQ6IEJvb2xlYW4sXG4gICAgZGlzYWJsZVRyYW5zaXRpb25zOiBCb29sZWFuLFxuICAgIGNvbG9yOiBTdHJpbmcsXG4gICAgc2l6ZTogU3RyaW5nLFxuICAgIGVmZmVjdDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2xpZ2h0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gWydkYXJrJywgJ2xpZ2h0JywgJ3BsYWluJ10uaW5kZXhPZih2YWwpICE9PSAtMTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVDbG9zZTogZnVuY3Rpb24gaGFuZGxlQ2xvc2UoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy4kZW1pdCgnY2xvc2UnLCBldmVudCk7XG4gICAgfSxcbiAgICBoYW5kbGVDbGljazogZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NsaWNrJywgZXZlbnQpO1xuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICB0YWdTaXplOiBmdW5jdGlvbiB0YWdTaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZSB8fCAodGhpcy4kRUxFTUVOVCB8fCB7fSkuc2l6ZTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgdHlwZSA9IHRoaXMudHlwZSxcbiAgICAgICAgdGFnU2l6ZSA9IHRoaXMudGFnU2l6ZSxcbiAgICAgICAgaGl0ID0gdGhpcy5oaXQsXG4gICAgICAgIGVmZmVjdCA9IHRoaXMuZWZmZWN0O1xuXG4gICAgdmFyIGNsYXNzZXMgPSBbJ2VsLXRhZycsIHR5cGUgPyAnZWwtdGFnLS0nICsgdHlwZSA6ICcnLCB0YWdTaXplID8gJ2VsLXRhZy0tJyArIHRhZ1NpemUgOiAnJywgZWZmZWN0ID8gJ2VsLXRhZy0tJyArIGVmZmVjdCA6ICcnLCBoaXQgJiYgJ2lzLWhpdCddO1xuICAgIHZhciB0YWdFbCA9IGgoXG4gICAgICAnc3BhbicsXG4gICAgICB7XG4gICAgICAgICdjbGFzcyc6IGNsYXNzZXMsXG4gICAgICAgIHN0eWxlOiB7IGJhY2tncm91bmRDb2xvcjogdGhpcy5jb2xvciB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgICdjbGljayc6IHRoaXMuaGFuZGxlQ2xpY2tcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFt0aGlzLiRzbG90cy5kZWZhdWx0LCB0aGlzLmNsb3NhYmxlICYmIGgoJ2knLCB7ICdjbGFzcyc6ICdlbC10YWdfX2Nsb3NlIGVsLWljb24tY2xvc2UnLCBvbjoge1xuICAgICAgICAgICdjbGljayc6IHRoaXMuaGFuZGxlQ2xvc2VcbiAgICAgICAgfVxuICAgICAgfSldXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmRpc2FibGVUcmFuc2l0aW9ucyA/IHRhZ0VsIDogaChcbiAgICAgICd0cmFuc2l0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgYXR0cnM6IHsgbmFtZTogJ2VsLXpvb20taW4tY2VudGVyJyB9XG4gICAgICB9LFxuICAgICAgW3RhZ0VsXVxuICAgICk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWcvc3JjL3RhZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3RhZ3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh0YWd2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGFnL3NyYy90YWcudnVlXG52YXIgdGFnX3JlbmRlciwgdGFnX3N0YXRpY1JlbmRlckZuc1xuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB0YWdfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfdGFndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB0YWdfcmVuZGVyLFxuICB0YWdfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciB0YWdfYXBpOyB9XG50YWdfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy90YWcvc3JjL3RhZy52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3RhZyA9ICh0YWdfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWcvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3JjX3RhZy5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHNyY190YWcubmFtZSwgc3JjX3RhZyk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc190YWcgPSAoc3JjX3RhZyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3RyZWUvc3JjL3RyZWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU0NzU3NWE2JlxudmFyIHRyZWV2dWVfdHlwZV90ZW1wbGF0ZV9pZF81NDc1NzVhNl9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJlbC10cmVlXCIsXG4gICAgICBjbGFzczoge1xuICAgICAgICBcImVsLXRyZWUtLWhpZ2hsaWdodC1jdXJyZW50XCI6IF92bS5oaWdobGlnaHRDdXJyZW50LFxuICAgICAgICBcImlzLWRyYWdnaW5nXCI6ICEhX3ZtLmRyYWdTdGF0ZS5kcmFnZ2luZ05vZGUsXG4gICAgICAgIFwiaXMtZHJvcC1ub3QtYWxsb3dcIjogIV92bS5kcmFnU3RhdGUuYWxsb3dEcm9wLFxuICAgICAgICBcImlzLWRyb3AtaW5uZXJcIjogX3ZtLmRyYWdTdGF0ZS5kcm9wVHlwZSA9PT0gXCJpbm5lclwiXG4gICAgICB9LFxuICAgICAgYXR0cnM6IHsgcm9sZTogXCJ0cmVlXCIgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLl9sKF92bS5yb290LmNoaWxkTm9kZXMsIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiBfYyhcImVsLXRyZWUtbm9kZVwiLCB7XG4gICAgICAgICAga2V5OiBfdm0uZ2V0Tm9kZUtleShjaGlsZCksXG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIG5vZGU6IGNoaWxkLFxuICAgICAgICAgICAgcHJvcHM6IF92bS5wcm9wcyxcbiAgICAgICAgICAgIFwicmVuZGVyLWFmdGVyLWV4cGFuZFwiOiBfdm0ucmVuZGVyQWZ0ZXJFeHBhbmQsXG4gICAgICAgICAgICBcInNob3ctY2hlY2tib3hcIjogX3ZtLnNob3dDaGVja2JveCxcbiAgICAgICAgICAgIFwicmVuZGVyLWNvbnRlbnRcIjogX3ZtLnJlbmRlckNvbnRlbnRcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uOiB7IFwibm9kZS1leHBhbmRcIjogX3ZtLmhhbmRsZU5vZGVFeHBhbmQgfVxuICAgICAgICB9KVxuICAgICAgfSksXG4gICAgICBfdm0uaXNFbXB0eVxuICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtdHJlZV9fZW1wdHktYmxvY2tcIiB9LCBbXG4gICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC10cmVlX19lbXB0eS10ZXh0XCIgfSwgW1xuICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lbXB0eVRleHQpKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX2MoXCJkaXZcIiwge1xuICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgdmFsdWU6IF92bS5kcmFnU3RhdGUuc2hvd0Ryb3BJbmRpY2F0b3IsXG4gICAgICAgICAgICBleHByZXNzaW9uOiBcImRyYWdTdGF0ZS5zaG93RHJvcEluZGljYXRvclwiXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWY6IFwiZHJvcEluZGljYXRvclwiLFxuICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10cmVlX19kcm9wLWluZGljYXRvclwiXG4gICAgICB9KVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgdHJlZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU0NzU3NWE2X3N0YXRpY1JlbmRlckZucyA9IFtdXG50cmVldnVlX3R5cGVfdGVtcGxhdGVfaWRfNTQ3NTc1YTZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90cmVlL3NyYy90cmVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NDc1NzVhNiZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90cmVlL3NyYy9tb2RlbC91dGlsLmpzXG52YXIgTk9ERV9LRVkgPSAnJHRyZWVOb2RlSWQnO1xuXG52YXIgbWFya05vZGVEYXRhID0gZnVuY3Rpb24gbWFya05vZGVEYXRhKG5vZGUsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8IGRhdGFbTk9ERV9LRVldKSByZXR1cm47XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkYXRhLCBOT0RFX0tFWSwge1xuICAgIHZhbHVlOiBub2RlLmlkLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xufTtcblxudmFyIHV0aWxfZ2V0Tm9kZUtleSA9IGZ1bmN0aW9uIGdldE5vZGVLZXkoa2V5LCBkYXRhKSB7XG4gIGlmICgha2V5KSByZXR1cm4gZGF0YVtOT0RFX0tFWV07XG4gIHJldHVybiBkYXRhW2tleV07XG59O1xuXG52YXIgZmluZE5lYXJlc3RDb21wb25lbnQgPSBmdW5jdGlvbiBmaW5kTmVhcmVzdENvbXBvbmVudChlbGVtZW50LCBjb21wb25lbnROYW1lKSB7XG4gIHZhciB0YXJnZXQgPSBlbGVtZW50O1xuICB3aGlsZSAodGFyZ2V0ICYmIHRhcmdldC50YWdOYW1lICE9PSAnQk9EWScpIHtcbiAgICBpZiAodGFyZ2V0Ll9fdnVlX18gJiYgdGFyZ2V0Ll9fdnVlX18uJG9wdGlvbnMubmFtZSA9PT0gY29tcG9uZW50TmFtZSkge1xuICAgICAgcmV0dXJuIHRhcmdldC5fX3Z1ZV9fO1xuICAgIH1cbiAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RyZWUvc3JjL21vZGVsL25vZGUuanNcbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIG5vZGVfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5cblxuXG5cbnZhciBnZXRDaGlsZFN0YXRlID0gZnVuY3Rpb24gZ2V0Q2hpbGRTdGF0ZShub2RlKSB7XG4gIHZhciBhbGwgPSB0cnVlO1xuICB2YXIgbm9uZSA9IHRydWU7XG4gIHZhciBhbGxXaXRob3V0RGlzYWJsZSA9IHRydWU7XG4gIGZvciAodmFyIGkgPSAwLCBqID0gbm9kZS5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICB2YXIgbiA9IG5vZGVbaV07XG4gICAgaWYgKG4uY2hlY2tlZCAhPT0gdHJ1ZSB8fCBuLmluZGV0ZXJtaW5hdGUpIHtcbiAgICAgIGFsbCA9IGZhbHNlO1xuICAgICAgaWYgKCFuLmRpc2FibGVkKSB7XG4gICAgICAgIGFsbFdpdGhvdXREaXNhYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuLmNoZWNrZWQgIT09IGZhbHNlIHx8IG4uaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgbm9uZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGFsbDogYWxsLCBub25lOiBub25lLCBhbGxXaXRob3V0RGlzYWJsZTogYWxsV2l0aG91dERpc2FibGUsIGhhbGY6ICFhbGwgJiYgIW5vbmUgfTtcbn07XG5cbnZhciByZUluaXRDaGVja2VkID0gZnVuY3Rpb24gcmVJbml0Q2hlY2tlZChub2RlKSB7XG4gIGlmIChub2RlLmNoaWxkTm9kZXMubGVuZ3RoID09PSAwIHx8IG5vZGUubG9hZGluZykgcmV0dXJuO1xuXG4gIHZhciBfZ2V0Q2hpbGRTdGF0ZSA9IGdldENoaWxkU3RhdGUobm9kZS5jaGlsZE5vZGVzKSxcbiAgICAgIGFsbCA9IF9nZXRDaGlsZFN0YXRlLmFsbCxcbiAgICAgIG5vbmUgPSBfZ2V0Q2hpbGRTdGF0ZS5ub25lLFxuICAgICAgaGFsZiA9IF9nZXRDaGlsZFN0YXRlLmhhbGY7XG5cbiAgaWYgKGFsbCkge1xuICAgIG5vZGUuY2hlY2tlZCA9IHRydWU7XG4gICAgbm9kZS5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gIH0gZWxzZSBpZiAoaGFsZikge1xuICAgIG5vZGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgIG5vZGUuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gIH0gZWxzZSBpZiAobm9uZSkge1xuICAgIG5vZGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgIG5vZGUuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50O1xuICBpZiAoIXBhcmVudCB8fCBwYXJlbnQubGV2ZWwgPT09IDApIHJldHVybjtcblxuICBpZiAoIW5vZGUuc3RvcmUuY2hlY2tTdHJpY3RseSkge1xuICAgIHJlSW5pdENoZWNrZWQocGFyZW50KTtcbiAgfVxufTtcblxudmFyIGdldFByb3BlcnR5RnJvbURhdGEgPSBmdW5jdGlvbiBnZXRQcm9wZXJ0eUZyb21EYXRhKG5vZGUsIHByb3ApIHtcbiAgdmFyIHByb3BzID0gbm9kZS5zdG9yZS5wcm9wcztcbiAgdmFyIGRhdGEgPSBub2RlLmRhdGEgfHwge307XG4gIHZhciBjb25maWcgPSBwcm9wc1twcm9wXTtcblxuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBjb25maWcoZGF0YSwgbm9kZSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGF0YVtjb25maWddO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBjb25maWcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFyIGRhdGFQcm9wID0gZGF0YVtwcm9wXTtcbiAgICByZXR1cm4gZGF0YVByb3AgPT09IHVuZGVmaW5lZCA/ICcnIDogZGF0YVByb3A7XG4gIH1cbn07XG5cbnZhciBub2RlSWRTZWVkID0gMDtcblxudmFyIG5vZGVfTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTm9kZShvcHRpb25zKSB7XG4gICAgbm9kZV9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb2RlKTtcblxuICAgIHRoaXMuaWQgPSBub2RlSWRTZWVkKys7XG4gICAgdGhpcy50ZXh0ID0gbnVsbDtcbiAgICB0aGlzLmNoZWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBhcmVudCA9IG51bGw7XG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ3VycmVudCA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICB0aGlzW25hbWVdID0gb3B0aW9uc1tuYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpbnRlcm5hbFxuICAgIHRoaXMubGV2ZWwgPSAwO1xuICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW107XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIHRoaXMubGV2ZWwgPSB0aGlzLnBhcmVudC5sZXZlbCArIDE7XG4gICAgfVxuXG4gICAgdmFyIHN0b3JlID0gdGhpcy5zdG9yZTtcbiAgICBpZiAoIXN0b3JlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tOb2RlXXN0b3JlIGlzIHJlcXVpcmVkIScpO1xuICAgIH1cbiAgICBzdG9yZS5yZWdpc3Rlck5vZGUodGhpcyk7XG5cbiAgICB2YXIgcHJvcHMgPSBzdG9yZS5wcm9wcztcbiAgICBpZiAocHJvcHMgJiYgdHlwZW9mIHByb3BzLmlzTGVhZiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBpc0xlYWYgPSBnZXRQcm9wZXJ0eUZyb21EYXRhKHRoaXMsICdpc0xlYWYnKTtcbiAgICAgIGlmICh0eXBlb2YgaXNMZWFmID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5pc0xlYWZCeVVzZXIgPSBpc0xlYWY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0b3JlLmxhenkgIT09IHRydWUgJiYgdGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLnNldERhdGEodGhpcy5kYXRhKTtcblxuICAgICAgaWYgKHN0b3JlLmRlZmF1bHRFeHBhbmRBbGwpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmxldmVsID4gMCAmJiBzdG9yZS5sYXp5ICYmIHN0b3JlLmRlZmF1bHRFeHBhbmRBbGwpIHtcbiAgICAgIHRoaXMuZXhwYW5kKCk7XG4gICAgfVxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEpKSB7XG4gICAgICBtYXJrTm9kZURhdGEodGhpcywgdGhpcy5kYXRhKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRhdGEpIHJldHVybjtcbiAgICB2YXIgZGVmYXVsdEV4cGFuZGVkS2V5cyA9IHN0b3JlLmRlZmF1bHRFeHBhbmRlZEtleXM7XG4gICAgdmFyIGtleSA9IHN0b3JlLmtleTtcbiAgICBpZiAoa2V5ICYmIGRlZmF1bHRFeHBhbmRlZEtleXMgJiYgZGVmYXVsdEV4cGFuZGVkS2V5cy5pbmRleE9mKHRoaXMua2V5KSAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZXhwYW5kKG51bGwsIHN0b3JlLmF1dG9FeHBhbmRQYXJlbnQpO1xuICAgIH1cblxuICAgIGlmIChrZXkgJiYgc3RvcmUuY3VycmVudE5vZGVLZXkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmtleSA9PT0gc3RvcmUuY3VycmVudE5vZGVLZXkpIHtcbiAgICAgIHN0b3JlLmN1cnJlbnROb2RlID0gdGhpcztcbiAgICAgIHN0b3JlLmN1cnJlbnROb2RlLmlzQ3VycmVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0b3JlLmxhenkpIHtcbiAgICAgIHN0b3JlLl9pbml0RGVmYXVsdENoZWNrZWROb2RlKHRoaXMpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlTGVhZlN0YXRlKCk7XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5zZXREYXRhID0gZnVuY3Rpb24gc2V0RGF0YShkYXRhKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICBtYXJrTm9kZURhdGEodGhpcywgZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXTtcblxuICAgIHZhciBjaGlsZHJlbiA9IHZvaWQgMDtcbiAgICBpZiAodGhpcy5sZXZlbCA9PT0gMCAmJiB0aGlzLmRhdGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY2hpbGRyZW4gPSB0aGlzLmRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoaWxkcmVuID0gZ2V0UHJvcGVydHlGcm9tRGF0YSh0aGlzLCAnY2hpbGRyZW4nKSB8fCBbXTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgdGhpcy5pbnNlcnRDaGlsZCh7IGRhdGE6IGNoaWxkcmVuW2ldIH0pO1xuICAgIH1cbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIGNvbnRhaW5zKHRhcmdldCkge1xuICAgIHZhciBkZWVwID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuXG4gICAgdmFyIHdhbGsgPSBmdW5jdGlvbiB3YWxrKHBhcmVudCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmNoaWxkTm9kZXMgfHwgW107XG4gICAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaiA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKGNoaWxkID09PSB0YXJnZXQgfHwgZGVlcCAmJiB3YWxrKGNoaWxkKSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIHJldHVybiB3YWxrKHRoaXMpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnQ7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgIH1cbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5pbnNlcnRDaGlsZCA9IGZ1bmN0aW9uIGluc2VydENoaWxkKGNoaWxkLCBpbmRleCwgYmF0Y2gpIHtcbiAgICBpZiAoIWNoaWxkKSB0aHJvdyBuZXcgRXJyb3IoJ2luc2VydENoaWxkIGVycm9yOiBjaGlsZCBpcyByZXF1aXJlZC4nKTtcblxuICAgIGlmICghKGNoaWxkIGluc3RhbmNlb2YgTm9kZSkpIHtcbiAgICAgIGlmICghYmF0Y2gpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbih0cnVlKSB8fCBbXTtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmluZGV4T2YoY2hpbGQuZGF0YSkgPT09IC0xKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ3VuZGVmaW5lZCcgfHwgaW5kZXggPCAwKSB7XG4gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkLmRhdGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDAsIGNoaWxkLmRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWVyZ2VfZGVmYXVsdCgpKGNoaWxkLCB7XG4gICAgICAgIHBhcmVudDogdGhpcyxcbiAgICAgICAgc3RvcmU6IHRoaXMuc3RvcmVcbiAgICAgIH0pO1xuICAgICAgY2hpbGQgPSBuZXcgTm9kZShjaGlsZCk7XG4gICAgfVxuXG4gICAgY2hpbGQubGV2ZWwgPSB0aGlzLmxldmVsICsgMTtcblxuICAgIGlmICh0eXBlb2YgaW5kZXggPT09ICd1bmRlZmluZWQnIHx8IGluZGV4IDwgMCkge1xuICAgICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAwLCBjaGlsZCk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMZWFmU3RhdGUoKTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmUoY2hpbGQsIHJlZikge1xuICAgIHZhciBpbmRleCA9IHZvaWQgMDtcbiAgICBpZiAocmVmKSB7XG4gICAgICBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHJlZik7XG4gICAgfVxuICAgIHRoaXMuaW5zZXJ0Q2hpbGQoY2hpbGQsIGluZGV4KTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5pbnNlcnRBZnRlciA9IGZ1bmN0aW9uIGluc2VydEFmdGVyKGNoaWxkLCByZWYpIHtcbiAgICB2YXIgaW5kZXggPSB2b2lkIDA7XG4gICAgaWYgKHJlZikge1xuICAgICAgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihyZWYpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkgaW5kZXggKz0gMTtcbiAgICB9XG4gICAgdGhpcy5pbnNlcnRDaGlsZChjaGlsZCwgaW5kZXgpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gcmVtb3ZlQ2hpbGQoY2hpbGQpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCkgfHwgW107XG4gICAgdmFyIGRhdGFJbmRleCA9IGNoaWxkcmVuLmluZGV4T2YoY2hpbGQuZGF0YSk7XG4gICAgaWYgKGRhdGFJbmRleCA+IC0xKSB7XG4gICAgICBjaGlsZHJlbi5zcGxpY2UoZGF0YUluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihjaGlsZCk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5zdG9yZSAmJiB0aGlzLnN0b3JlLmRlcmVnaXN0ZXJOb2RlKGNoaWxkKTtcbiAgICAgIGNoaWxkLnBhcmVudCA9IG51bGw7XG4gICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUxlYWZTdGF0ZSgpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkQnlEYXRhID0gZnVuY3Rpb24gcmVtb3ZlQ2hpbGRCeURhdGEoZGF0YSkge1xuICAgIHZhciB0YXJnZXROb2RlID0gbnVsbDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5jaGlsZE5vZGVzW2ldLmRhdGEgPT09IGRhdGEpIHtcbiAgICAgICAgdGFyZ2V0Tm9kZSA9IHRoaXMuY2hpbGROb2Rlc1tpXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldE5vZGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlQ2hpbGQodGFyZ2V0Tm9kZSk7XG4gICAgfVxuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmV4cGFuZCA9IGZ1bmN0aW9uIGV4cGFuZChjYWxsYmFjaywgZXhwYW5kUGFyZW50KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBkb25lID0gZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGlmIChleHBhbmRQYXJlbnQpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IF90aGlzLnBhcmVudDtcbiAgICAgICAgd2hpbGUgKHBhcmVudC5sZXZlbCA+IDApIHtcbiAgICAgICAgICBwYXJlbnQuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF90aGlzLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkTG9hZERhdGEoKSkge1xuICAgICAgdGhpcy5sb2FkRGF0YShmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgaWYgKF90aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIF90aGlzLnNldENoZWNrZWQodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIGlmICghX3RoaXMuc3RvcmUuY2hlY2tTdHJpY3RseSkge1xuICAgICAgICAgICAgcmVJbml0Q2hlY2tlZChfdGhpcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuZG9DcmVhdGVDaGlsZHJlbiA9IGZ1bmN0aW9uIGRvQ3JlYXRlQ2hpbGRyZW4oYXJyYXkpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBkZWZhdWx0UHJvcHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgX3RoaXMyLmluc2VydENoaWxkKG1lcmdlX2RlZmF1bHQoKSh7IGRhdGE6IGl0ZW0gfSwgZGVmYXVsdFByb3BzKSwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICB9KTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5jb2xsYXBzZSA9IGZ1bmN0aW9uIGNvbGxhcHNlKCkge1xuICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5zaG91bGRMb2FkRGF0YSA9IGZ1bmN0aW9uIHNob3VsZExvYWREYXRhKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmxhenkgPT09IHRydWUgJiYgdGhpcy5zdG9yZS5sb2FkICYmICF0aGlzLmxvYWRlZDtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS51cGRhdGVMZWFmU3RhdGUgPSBmdW5jdGlvbiB1cGRhdGVMZWFmU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMuc3RvcmUubGF6eSA9PT0gdHJ1ZSAmJiB0aGlzLmxvYWRlZCAhPT0gdHJ1ZSAmJiB0eXBlb2YgdGhpcy5pc0xlYWZCeVVzZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLmlzTGVhZiA9IHRoaXMuaXNMZWFmQnlVc2VyO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgY2hpbGROb2RlcyA9IHRoaXMuY2hpbGROb2RlcztcbiAgICBpZiAoIXRoaXMuc3RvcmUubGF6eSB8fCB0aGlzLnN0b3JlLmxhenkgPT09IHRydWUgJiYgdGhpcy5sb2FkZWQgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuaXNMZWFmID0gIWNoaWxkTm9kZXMgfHwgY2hpbGROb2Rlcy5sZW5ndGggPT09IDA7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMZWFmID0gZmFsc2U7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuc2V0Q2hlY2tlZCA9IGZ1bmN0aW9uIHNldENoZWNrZWQodmFsdWUsIGRlZXAsIHJlY3Vyc2lvbiwgcGFzc1ZhbHVlKSB7XG4gICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSB2YWx1ZSA9PT0gJ2hhbGYnO1xuICAgIHRoaXMuY2hlY2tlZCA9IHZhbHVlID09PSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuc3RvcmUuY2hlY2tTdHJpY3RseSkgcmV0dXJuO1xuXG4gICAgaWYgKCEodGhpcy5zaG91bGRMb2FkRGF0YSgpICYmICF0aGlzLnN0b3JlLmNoZWNrRGVzY2VuZGFudHMpKSB7XG4gICAgICB2YXIgX2dldENoaWxkU3RhdGUyID0gZ2V0Q2hpbGRTdGF0ZSh0aGlzLmNoaWxkTm9kZXMpLFxuICAgICAgICAgIGFsbCA9IF9nZXRDaGlsZFN0YXRlMi5hbGwsXG4gICAgICAgICAgYWxsV2l0aG91dERpc2FibGUgPSBfZ2V0Q2hpbGRTdGF0ZTIuYWxsV2l0aG91dERpc2FibGU7XG5cbiAgICAgIGlmICghdGhpcy5pc0xlYWYgJiYgIWFsbCAmJiBhbGxXaXRob3V0RGlzYWJsZSkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGhhbmRsZURlc2NlbmRhbnRzID0gZnVuY3Rpb24gaGFuZGxlRGVzY2VuZGFudHMoKSB7XG4gICAgICAgIGlmIChkZWVwKSB7XG4gICAgICAgICAgdmFyIGNoaWxkTm9kZXMgPSBfdGhpczMuY2hpbGROb2RlcztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMCwgaiA9IGNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZE5vZGVzW2ldO1xuICAgICAgICAgICAgcGFzc1ZhbHVlID0gcGFzc1ZhbHVlIHx8IHZhbHVlICE9PSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBpc0NoZWNrID0gY2hpbGQuZGlzYWJsZWQgPyBjaGlsZC5jaGVja2VkIDogcGFzc1ZhbHVlO1xuICAgICAgICAgICAgY2hpbGQuc2V0Q2hlY2tlZChpc0NoZWNrLCBkZWVwLCB0cnVlLCBwYXNzVmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q2hpbGRTdGF0ZTMgPSBnZXRDaGlsZFN0YXRlKGNoaWxkTm9kZXMpLFxuICAgICAgICAgICAgICBoYWxmID0gX2dldENoaWxkU3RhdGUzLmhhbGYsXG4gICAgICAgICAgICAgIF9hbGwgPSBfZ2V0Q2hpbGRTdGF0ZTMuYWxsO1xuXG4gICAgICAgICAgaWYgKCFfYWxsKSB7XG4gICAgICAgICAgICBfdGhpczMuY2hlY2tlZCA9IF9hbGw7XG4gICAgICAgICAgICBfdGhpczMuaW5kZXRlcm1pbmF0ZSA9IGhhbGY7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5zaG91bGRMb2FkRGF0YSgpKSB7XG4gICAgICAgIC8vIE9ubHkgd29yayBvbiBsYXp5IGxvYWQgZGF0YS5cbiAgICAgICAgdGhpcy5sb2FkRGF0YShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxlRGVzY2VuZGFudHMoKTtcbiAgICAgICAgICByZUluaXRDaGVja2VkKF90aGlzMyk7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBjaGVja2VkOiB2YWx1ZSAhPT0gZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZURlc2NlbmRhbnRzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50O1xuICAgIGlmICghcGFyZW50IHx8IHBhcmVudC5sZXZlbCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCFyZWN1cnNpb24pIHtcbiAgICAgIHJlSW5pdENoZWNrZWQocGFyZW50KTtcbiAgICB9XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0Q2hpbGRyZW4gPSBmdW5jdGlvbiBnZXRDaGlsZHJlbigpIHtcbiAgICB2YXIgZm9yY2VJbml0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgICAvLyB0aGlzIGlzIGRhdGFcbiAgICBpZiAodGhpcy5sZXZlbCA9PT0gMCkgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YTtcbiAgICBpZiAoIWRhdGEpIHJldHVybiBudWxsO1xuXG4gICAgdmFyIHByb3BzID0gdGhpcy5zdG9yZS5wcm9wcztcbiAgICB2YXIgY2hpbGRyZW4gPSAnY2hpbGRyZW4nO1xuICAgIGlmIChwcm9wcykge1xuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiB8fCAnY2hpbGRyZW4nO1xuICAgIH1cblxuICAgIGlmIChkYXRhW2NoaWxkcmVuXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkYXRhW2NoaWxkcmVuXSA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGZvcmNlSW5pdCAmJiAhZGF0YVtjaGlsZHJlbl0pIHtcbiAgICAgIGRhdGFbY2hpbGRyZW5dID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFbY2hpbGRyZW5dO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnVwZGF0ZUNoaWxkcmVuID0gZnVuY3Rpb24gdXBkYXRlQ2hpbGRyZW4oKSB7XG4gICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICB2YXIgbmV3RGF0YSA9IHRoaXMuZ2V0Q2hpbGRyZW4oKSB8fCBbXTtcbiAgICB2YXIgb2xkRGF0YSA9IHRoaXMuY2hpbGROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmRhdGE7XG4gICAgfSk7XG5cbiAgICB2YXIgbmV3RGF0YU1hcCA9IHt9O1xuICAgIHZhciBuZXdOb2RlcyA9IFtdO1xuXG4gICAgbmV3RGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgdmFyIGtleSA9IGl0ZW1bTk9ERV9LRVldO1xuICAgICAgdmFyIGlzTm9kZUV4aXN0cyA9ICEha2V5ICYmIE9iamVjdCh1dGlsX1tcImFycmF5RmluZEluZGV4XCJdKShvbGREYXRhLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICByZXR1cm4gZGF0YVtOT0RFX0tFWV0gPT09IGtleTtcbiAgICAgIH0pID49IDA7XG4gICAgICBpZiAoaXNOb2RlRXhpc3RzKSB7XG4gICAgICAgIG5ld0RhdGFNYXBba2V5XSA9IHsgaW5kZXg6IGluZGV4LCBkYXRhOiBpdGVtIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdOb2Rlcy5wdXNoKHsgaW5kZXg6IGluZGV4LCBkYXRhOiBpdGVtIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLnN0b3JlLmxhenkpIHtcbiAgICAgIG9sZERhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICBpZiAoIW5ld0RhdGFNYXBbaXRlbVtOT0RFX0tFWV1dKSBfdGhpczQucmVtb3ZlQ2hpbGRCeURhdGEoaXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBuZXdOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgaW5kZXggPSBfcmVmLmluZGV4LFxuICAgICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG5cbiAgICAgIF90aGlzNC5pbnNlcnRDaGlsZCh7IGRhdGE6IGRhdGEgfSwgaW5kZXgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy51cGRhdGVMZWFmU3RhdGUoKTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5sb2FkRGF0YSA9IGZ1bmN0aW9uIGxvYWREYXRhKGNhbGxiYWNrKSB7XG4gICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICB2YXIgZGVmYXVsdFByb3BzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICAgIGlmICh0aGlzLnN0b3JlLmxhenkgPT09IHRydWUgJiYgdGhpcy5zdG9yZS5sb2FkICYmICF0aGlzLmxvYWRlZCAmJiAoIXRoaXMubG9hZGluZyB8fCBPYmplY3Qua2V5cyhkZWZhdWx0UHJvcHMpLmxlbmd0aCkpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgIHZhciByZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZShjaGlsZHJlbikge1xuICAgICAgICBfdGhpczUuY2hpbGROb2RlcyA9IFtdO1xuXG4gICAgICAgIF90aGlzNS5kb0NyZWF0ZUNoaWxkcmVuKGNoaWxkcmVuLCBkZWZhdWx0UHJvcHMpO1xuICAgICAgICBfdGhpczUubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgX3RoaXM1LmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgX3RoaXM1LnVwZGF0ZUxlYWZTdGF0ZSgpO1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjay5jYWxsKF90aGlzNSwgY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnN0b3JlLmxvYWQodGhpcywgcmVzb2x2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBfY3JlYXRlQ2xhc3MoTm9kZSwgW3tcbiAgICBrZXk6ICdsYWJlbCcsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gZ2V0UHJvcGVydHlGcm9tRGF0YSh0aGlzLCAnbGFiZWwnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdrZXknLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgdmFyIG5vZGVLZXkgPSB0aGlzLnN0b3JlLmtleTtcbiAgICAgIGlmICh0aGlzLmRhdGEpIHJldHVybiB0aGlzLmRhdGFbbm9kZUtleV07XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdkaXNhYmxlZCcsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gZ2V0UHJvcGVydHlGcm9tRGF0YSh0aGlzLCAnZGlzYWJsZWQnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICduZXh0U2libGluZycsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnQ7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHZhciBpbmRleCA9IHBhcmVudC5jaGlsZE5vZGVzLmluZGV4T2YodGhpcyk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcmVudC5jaGlsZE5vZGVzW2luZGV4ICsgMV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3ByZXZpb3VzU2libGluZycsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnQ7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHZhciBpbmRleCA9IHBhcmVudC5jaGlsZE5vZGVzLmluZGV4T2YodGhpcyk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4ID4gMCA/IHBhcmVudC5jaGlsZE5vZGVzW2luZGV4IC0gMV0gOiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTm9kZTtcbn0oKTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbW9kZWxfbm9kZSA9IChub2RlX05vZGUpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90cmVlL3NyYy9tb2RlbC90cmVlLXN0b3JlLmpzXG52YXIgdHJlZV9zdG9yZV90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5mdW5jdGlvbiB0cmVlX3N0b3JlX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuXG5cblxudmFyIHRyZWVfc3RvcmVfVHJlZVN0b3JlID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBUcmVlU3RvcmUob3B0aW9ucykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0cmVlX3N0b3JlX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRyZWVTdG9yZSk7XG5cbiAgICB0aGlzLmN1cnJlbnROb2RlID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnROb2RlS2V5ID0gbnVsbDtcblxuICAgIGZvciAodmFyIG9wdGlvbiBpbiBvcHRpb25zKSB7XG4gICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShvcHRpb24pKSB7XG4gICAgICAgIHRoaXNbb3B0aW9uXSA9IG9wdGlvbnNbb3B0aW9uXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm5vZGVzTWFwID0ge307XG5cbiAgICB0aGlzLnJvb3QgPSBuZXcgbW9kZWxfbm9kZSh7XG4gICAgICBkYXRhOiB0aGlzLmRhdGEsXG4gICAgICBzdG9yZTogdGhpc1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMubGF6eSAmJiB0aGlzLmxvYWQpIHtcbiAgICAgIHZhciBsb2FkRm4gPSB0aGlzLmxvYWQ7XG4gICAgICBsb2FkRm4odGhpcy5yb290LCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBfdGhpcy5yb290LmRvQ3JlYXRlQ2hpbGRyZW4oZGF0YSk7XG4gICAgICAgIF90aGlzLl9pbml0RGVmYXVsdENoZWNrZWROb2RlcygpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2luaXREZWZhdWx0Q2hlY2tlZE5vZGVzKCk7XG4gICAgfVxuICB9XG5cbiAgVHJlZVN0b3JlLnByb3RvdHlwZS5maWx0ZXIgPSBmdW5jdGlvbiBmaWx0ZXIodmFsdWUpIHtcbiAgICB2YXIgZmlsdGVyTm9kZU1ldGhvZCA9IHRoaXMuZmlsdGVyTm9kZU1ldGhvZDtcbiAgICB2YXIgbGF6eSA9IHRoaXMubGF6eTtcbiAgICB2YXIgdHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShub2RlKSB7XG4gICAgICB2YXIgY2hpbGROb2RlcyA9IG5vZGUucm9vdCA/IG5vZGUucm9vdC5jaGlsZE5vZGVzIDogbm9kZS5jaGlsZE5vZGVzO1xuXG4gICAgICBjaGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGNoaWxkLnZpc2libGUgPSBmaWx0ZXJOb2RlTWV0aG9kLmNhbGwoY2hpbGQsIHZhbHVlLCBjaGlsZC5kYXRhLCBjaGlsZCk7XG5cbiAgICAgICAgdHJhdmVyc2UoY2hpbGQpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghbm9kZS52aXNpYmxlICYmIGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBhbGxIaWRkZW4gPSB0cnVlO1xuICAgICAgICBhbGxIaWRkZW4gPSAhY2hpbGROb2Rlcy5zb21lKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIHJldHVybiBjaGlsZC52aXNpYmxlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobm9kZS5yb290KSB7XG4gICAgICAgICAgbm9kZS5yb290LnZpc2libGUgPSBhbGxIaWRkZW4gPT09IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUudmlzaWJsZSA9IGFsbEhpZGRlbiA9PT0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgICAgaWYgKG5vZGUudmlzaWJsZSAmJiAhbm9kZS5pc0xlYWYgJiYgIWxhenkpIG5vZGUuZXhwYW5kKCk7XG4gICAgfTtcblxuICAgIHRyYXZlcnNlKHRoaXMpO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuc2V0RGF0YSA9IGZ1bmN0aW9uIHNldERhdGEobmV3VmFsKSB7XG4gICAgdmFyIGluc3RhbmNlQ2hhbmdlZCA9IG5ld1ZhbCAhPT0gdGhpcy5yb290LmRhdGE7XG4gICAgaWYgKGluc3RhbmNlQ2hhbmdlZCkge1xuICAgICAgdGhpcy5yb290LnNldERhdGEobmV3VmFsKTtcbiAgICAgIHRoaXMuX2luaXREZWZhdWx0Q2hlY2tlZE5vZGVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm9vdC51cGRhdGVDaGlsZHJlbigpO1xuICAgIH1cbiAgfTtcblxuICBUcmVlU3RvcmUucHJvdG90eXBlLmdldE5vZGUgPSBmdW5jdGlvbiBnZXROb2RlKGRhdGEpIHtcbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIG1vZGVsX25vZGUpIHJldHVybiBkYXRhO1xuICAgIHZhciBrZXkgPSAodHlwZW9mIGRhdGEgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiB0cmVlX3N0b3JlX3R5cGVvZihkYXRhKSkgIT09ICdvYmplY3QnID8gZGF0YSA6IHV0aWxfZ2V0Tm9kZUtleSh0aGlzLmtleSwgZGF0YSk7XG4gICAgcmV0dXJuIHRoaXMubm9kZXNNYXBba2V5XSB8fCBudWxsO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKGRhdGEsIHJlZkRhdGEpIHtcbiAgICB2YXIgcmVmTm9kZSA9IHRoaXMuZ2V0Tm9kZShyZWZEYXRhKTtcbiAgICByZWZOb2RlLnBhcmVudC5pbnNlcnRCZWZvcmUoeyBkYXRhOiBkYXRhIH0sIHJlZk5vZGUpO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXIgPSBmdW5jdGlvbiBpbnNlcnRBZnRlcihkYXRhLCByZWZEYXRhKSB7XG4gICAgdmFyIHJlZk5vZGUgPSB0aGlzLmdldE5vZGUocmVmRGF0YSk7XG4gICAgcmVmTm9kZS5wYXJlbnQuaW5zZXJ0QWZ0ZXIoeyBkYXRhOiBkYXRhIH0sIHJlZk5vZGUpO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlKGRhdGEpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMuZ2V0Tm9kZShkYXRhKTtcblxuICAgIGlmIChub2RlICYmIG5vZGUucGFyZW50KSB7XG4gICAgICBpZiAobm9kZSA9PT0gdGhpcy5jdXJyZW50Tm9kZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnROb2RlID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIG5vZGUucGFyZW50LnJlbW92ZUNoaWxkKG5vZGUpO1xuICAgIH1cbiAgfTtcblxuICBUcmVlU3RvcmUucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIGFwcGVuZChkYXRhLCBwYXJlbnREYXRhKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBwYXJlbnREYXRhID8gdGhpcy5nZXROb2RlKHBhcmVudERhdGEpIDogdGhpcy5yb290O1xuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgIHBhcmVudE5vZGUuaW5zZXJ0Q2hpbGQoeyBkYXRhOiBkYXRhIH0pO1xuICAgIH1cbiAgfTtcblxuICBUcmVlU3RvcmUucHJvdG90eXBlLl9pbml0RGVmYXVsdENoZWNrZWROb2RlcyA9IGZ1bmN0aW9uIF9pbml0RGVmYXVsdENoZWNrZWROb2RlcygpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBkZWZhdWx0Q2hlY2tlZEtleXMgPSB0aGlzLmRlZmF1bHRDaGVja2VkS2V5cyB8fCBbXTtcbiAgICB2YXIgbm9kZXNNYXAgPSB0aGlzLm5vZGVzTWFwO1xuXG4gICAgZGVmYXVsdENoZWNrZWRLZXlzLmZvckVhY2goZnVuY3Rpb24gKGNoZWNrZWRLZXkpIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNNYXBbY2hlY2tlZEtleV07XG5cbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIG5vZGUuc2V0Q2hlY2tlZCh0cnVlLCAhX3RoaXMyLmNoZWNrU3RyaWN0bHkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuX2luaXREZWZhdWx0Q2hlY2tlZE5vZGUgPSBmdW5jdGlvbiBfaW5pdERlZmF1bHRDaGVja2VkTm9kZShub2RlKSB7XG4gICAgdmFyIGRlZmF1bHRDaGVja2VkS2V5cyA9IHRoaXMuZGVmYXVsdENoZWNrZWRLZXlzIHx8IFtdO1xuXG4gICAgaWYgKGRlZmF1bHRDaGVja2VkS2V5cy5pbmRleE9mKG5vZGUua2V5KSAhPT0gLTEpIHtcbiAgICAgIG5vZGUuc2V0Q2hlY2tlZCh0cnVlLCAhdGhpcy5jaGVja1N0cmljdGx5KTtcbiAgICB9XG4gIH07XG5cbiAgVHJlZVN0b3JlLnByb3RvdHlwZS5zZXREZWZhdWx0Q2hlY2tlZEtleSA9IGZ1bmN0aW9uIHNldERlZmF1bHRDaGVja2VkS2V5KG5ld1ZhbCkge1xuICAgIGlmIChuZXdWYWwgIT09IHRoaXMuZGVmYXVsdENoZWNrZWRLZXlzKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDaGVja2VkS2V5cyA9IG5ld1ZhbDtcbiAgICAgIHRoaXMuX2luaXREZWZhdWx0Q2hlY2tlZE5vZGVzKCk7XG4gICAgfVxuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUucmVnaXN0ZXJOb2RlID0gZnVuY3Rpb24gcmVnaXN0ZXJOb2RlKG5vZGUpIHtcbiAgICB2YXIga2V5ID0gdGhpcy5rZXk7XG4gICAgaWYgKCFrZXkgfHwgIW5vZGUgfHwgIW5vZGUuZGF0YSkgcmV0dXJuO1xuXG4gICAgdmFyIG5vZGVLZXkgPSBub2RlLmtleTtcbiAgICBpZiAobm9kZUtleSAhPT0gdW5kZWZpbmVkKSB0aGlzLm5vZGVzTWFwW25vZGUua2V5XSA9IG5vZGU7XG4gIH07XG5cbiAgVHJlZVN0b3JlLnByb3RvdHlwZS5kZXJlZ2lzdGVyTm9kZSA9IGZ1bmN0aW9uIGRlcmVnaXN0ZXJOb2RlKG5vZGUpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHZhciBrZXkgPSB0aGlzLmtleTtcbiAgICBpZiAoIWtleSB8fCAhbm9kZSB8fCAhbm9kZS5kYXRhKSByZXR1cm47XG5cbiAgICBub2RlLmNoaWxkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIF90aGlzMy5kZXJlZ2lzdGVyTm9kZShjaGlsZCk7XG4gICAgfSk7XG5cbiAgICBkZWxldGUgdGhpcy5ub2Rlc01hcFtub2RlLmtleV07XG4gIH07XG5cbiAgVHJlZVN0b3JlLnByb3RvdHlwZS5nZXRDaGVja2VkTm9kZXMgPSBmdW5jdGlvbiBnZXRDaGVja2VkTm9kZXMoKSB7XG4gICAgdmFyIGxlYWZPbmx5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgICB2YXIgaW5jbHVkZUhhbGZDaGVja2VkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcblxuICAgIHZhciBjaGVja2VkTm9kZXMgPSBbXTtcbiAgICB2YXIgdHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShub2RlKSB7XG4gICAgICB2YXIgY2hpbGROb2RlcyA9IG5vZGUucm9vdCA/IG5vZGUucm9vdC5jaGlsZE5vZGVzIDogbm9kZS5jaGlsZE5vZGVzO1xuXG4gICAgICBjaGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmICgoY2hpbGQuY2hlY2tlZCB8fCBpbmNsdWRlSGFsZkNoZWNrZWQgJiYgY2hpbGQuaW5kZXRlcm1pbmF0ZSkgJiYgKCFsZWFmT25seSB8fCBsZWFmT25seSAmJiBjaGlsZC5pc0xlYWYpKSB7XG4gICAgICAgICAgY2hlY2tlZE5vZGVzLnB1c2goY2hpbGQuZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICB0cmF2ZXJzZShjaGlsZCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdHJhdmVyc2UodGhpcyk7XG5cbiAgICByZXR1cm4gY2hlY2tlZE5vZGVzO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuZ2V0Q2hlY2tlZEtleXMgPSBmdW5jdGlvbiBnZXRDaGVja2VkS2V5cygpIHtcbiAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgIHZhciBsZWFmT25seSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja2VkTm9kZXMobGVhZk9ubHkpLm1hcChmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIChkYXRhIHx8IHt9KVtfdGhpczQua2V5XTtcbiAgICB9KTtcbiAgfTtcblxuICBUcmVlU3RvcmUucHJvdG90eXBlLmdldEhhbGZDaGVja2VkTm9kZXMgPSBmdW5jdGlvbiBnZXRIYWxmQ2hlY2tlZE5vZGVzKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciB0cmF2ZXJzZSA9IGZ1bmN0aW9uIHRyYXZlcnNlKG5vZGUpIHtcbiAgICAgIHZhciBjaGlsZE5vZGVzID0gbm9kZS5yb290ID8gbm9kZS5yb290LmNoaWxkTm9kZXMgOiBub2RlLmNoaWxkTm9kZXM7XG5cbiAgICAgIGNoaWxkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKGNoaWxkLmluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgICBub2Rlcy5wdXNoKGNoaWxkLmRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJhdmVyc2UoY2hpbGQpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRyYXZlcnNlKHRoaXMpO1xuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuZ2V0SGFsZkNoZWNrZWRLZXlzID0gZnVuY3Rpb24gZ2V0SGFsZkNoZWNrZWRLZXlzKCkge1xuICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0SGFsZkNoZWNrZWROb2RlcygpLm1hcChmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIChkYXRhIHx8IHt9KVtfdGhpczUua2V5XTtcbiAgICB9KTtcbiAgfTtcblxuICBUcmVlU3RvcmUucHJvdG90eXBlLl9nZXRBbGxOb2RlcyA9IGZ1bmN0aW9uIF9nZXRBbGxOb2RlcygpIHtcbiAgICB2YXIgYWxsTm9kZXMgPSBbXTtcbiAgICB2YXIgbm9kZXNNYXAgPSB0aGlzLm5vZGVzTWFwO1xuICAgIGZvciAodmFyIG5vZGVLZXkgaW4gbm9kZXNNYXApIHtcbiAgICAgIGlmIChub2Rlc01hcC5oYXNPd25Qcm9wZXJ0eShub2RlS2V5KSkge1xuICAgICAgICBhbGxOb2Rlcy5wdXNoKG5vZGVzTWFwW25vZGVLZXldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWxsTm9kZXM7XG4gIH07XG5cbiAgVHJlZVN0b3JlLnByb3RvdHlwZS51cGRhdGVDaGlsZHJlbiA9IGZ1bmN0aW9uIHVwZGF0ZUNoaWxkcmVuKGtleSwgZGF0YSkge1xuICAgIHZhciBub2RlID0gdGhpcy5ub2Rlc01hcFtrZXldO1xuICAgIGlmICghbm9kZSkgcmV0dXJuO1xuICAgIHZhciBjaGlsZE5vZGVzID0gbm9kZS5jaGlsZE5vZGVzO1xuICAgIGZvciAodmFyIGkgPSBjaGlsZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgY2hpbGQgPSBjaGlsZE5vZGVzW2ldO1xuICAgICAgdGhpcy5yZW1vdmUoY2hpbGQuZGF0YSk7XG4gICAgfVxuICAgIGZvciAodmFyIF9pID0gMCwgaiA9IGRhdGEubGVuZ3RoOyBfaSA8IGo7IF9pKyspIHtcbiAgICAgIHZhciBfY2hpbGQgPSBkYXRhW19pXTtcbiAgICAgIHRoaXMuYXBwZW5kKF9jaGlsZCwgbm9kZS5kYXRhKTtcbiAgICB9XG4gIH07XG5cbiAgVHJlZVN0b3JlLnByb3RvdHlwZS5fc2V0Q2hlY2tlZEtleXMgPSBmdW5jdGlvbiBfc2V0Q2hlY2tlZEtleXMoa2V5KSB7XG4gICAgdmFyIGxlYWZPbmx5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcbiAgICB2YXIgY2hlY2tlZEtleXMgPSBhcmd1bWVudHNbMl07XG5cbiAgICB2YXIgYWxsTm9kZXMgPSB0aGlzLl9nZXRBbGxOb2RlcygpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBiLmxldmVsIC0gYS5sZXZlbDtcbiAgICB9KTtcbiAgICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoY2hlY2tlZEtleXMpO1xuICAgIGFsbE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnNldENoZWNrZWQoZmFsc2UsIGZhbHNlKTtcbiAgICB9KTtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IGFsbE5vZGVzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBhbGxOb2Rlc1tpXTtcbiAgICAgIHZhciBub2RlS2V5ID0gbm9kZS5kYXRhW2tleV0udG9TdHJpbmcoKTtcbiAgICAgIHZhciBjaGVja2VkID0ga2V5cy5pbmRleE9mKG5vZGVLZXkpID4gLTE7XG4gICAgICBpZiAoIWNoZWNrZWQpIHtcbiAgICAgICAgaWYgKG5vZGUuY2hlY2tlZCAmJiAhY2FjaGVbbm9kZUtleV0pIHtcbiAgICAgICAgICBub2RlLnNldENoZWNrZWQoZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQubGV2ZWwgPiAwKSB7XG4gICAgICAgIGNhY2hlW3BhcmVudC5kYXRhW2tleV1dID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUuaXNMZWFmIHx8IHRoaXMuY2hlY2tTdHJpY3RseSkge1xuICAgICAgICBub2RlLnNldENoZWNrZWQodHJ1ZSwgZmFsc2UpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIG5vZGUuc2V0Q2hlY2tlZCh0cnVlLCB0cnVlKTtcblxuICAgICAgaWYgKGxlYWZPbmx5KSB7XG4gICAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbm9kZS5zZXRDaGVja2VkKGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgdmFyIHRyYXZlcnNlID0gZnVuY3Rpb24gdHJhdmVyc2Uobm9kZSkge1xuICAgICAgICAgICAgdmFyIGNoaWxkTm9kZXMgPSBub2RlLmNoaWxkTm9kZXM7XG4gICAgICAgICAgICBjaGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICAgIGlmICghY2hpbGQuaXNMZWFmKSB7XG4gICAgICAgICAgICAgICAgY2hpbGQuc2V0Q2hlY2tlZChmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRyYXZlcnNlKGNoaWxkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG4gICAgICAgICAgdHJhdmVyc2Uobm9kZSk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuc2V0Q2hlY2tlZE5vZGVzID0gZnVuY3Rpb24gc2V0Q2hlY2tlZE5vZGVzKGFycmF5KSB7XG4gICAgdmFyIGxlYWZPbmx5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcblxuICAgIHZhciBrZXkgPSB0aGlzLmtleTtcbiAgICB2YXIgY2hlY2tlZEtleXMgPSB7fTtcbiAgICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBjaGVja2VkS2V5c1soaXRlbSB8fCB7fSlba2V5XV0gPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc2V0Q2hlY2tlZEtleXMoa2V5LCBsZWFmT25seSwgY2hlY2tlZEtleXMpO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuc2V0Q2hlY2tlZEtleXMgPSBmdW5jdGlvbiBzZXRDaGVja2VkS2V5cyhrZXlzKSB7XG4gICAgdmFyIGxlYWZPbmx5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcblxuICAgIHRoaXMuZGVmYXVsdENoZWNrZWRLZXlzID0ga2V5cztcbiAgICB2YXIga2V5ID0gdGhpcy5rZXk7XG4gICAgdmFyIGNoZWNrZWRLZXlzID0ge307XG4gICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGNoZWNrZWRLZXlzW2tleV0gPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc2V0Q2hlY2tlZEtleXMoa2V5LCBsZWFmT25seSwgY2hlY2tlZEtleXMpO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuc2V0RGVmYXVsdEV4cGFuZGVkS2V5cyA9IGZ1bmN0aW9uIHNldERlZmF1bHRFeHBhbmRlZEtleXMoa2V5cykge1xuICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAga2V5cyA9IGtleXMgfHwgW107XG4gICAgdGhpcy5kZWZhdWx0RXhwYW5kZWRLZXlzID0ga2V5cztcblxuICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgbm9kZSA9IF90aGlzNi5nZXROb2RlKGtleSk7XG4gICAgICBpZiAobm9kZSkgbm9kZS5leHBhbmQobnVsbCwgX3RoaXM2LmF1dG9FeHBhbmRQYXJlbnQpO1xuICAgIH0pO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuc2V0Q2hlY2tlZCA9IGZ1bmN0aW9uIHNldENoZWNrZWQoZGF0YSwgY2hlY2tlZCwgZGVlcCkge1xuICAgIHZhciBub2RlID0gdGhpcy5nZXROb2RlKGRhdGEpO1xuXG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIG5vZGUuc2V0Q2hlY2tlZCghIWNoZWNrZWQsIGRlZXApO1xuICAgIH1cbiAgfTtcblxuICBUcmVlU3RvcmUucHJvdG90eXBlLmdldEN1cnJlbnROb2RlID0gZnVuY3Rpb24gZ2V0Q3VycmVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGU7XG4gIH07XG5cbiAgVHJlZVN0b3JlLnByb3RvdHlwZS5zZXRDdXJyZW50Tm9kZSA9IGZ1bmN0aW9uIHNldEN1cnJlbnROb2RlKGN1cnJlbnROb2RlKSB7XG4gICAgdmFyIHByZXZDdXJyZW50Tm9kZSA9IHRoaXMuY3VycmVudE5vZGU7XG4gICAgaWYgKHByZXZDdXJyZW50Tm9kZSkge1xuICAgICAgcHJldkN1cnJlbnROb2RlLmlzQ3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnROb2RlID0gY3VycmVudE5vZGU7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS5pc0N1cnJlbnQgPSB0cnVlO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuc2V0VXNlckN1cnJlbnROb2RlID0gZnVuY3Rpb24gc2V0VXNlckN1cnJlbnROb2RlKG5vZGUpIHtcbiAgICB2YXIga2V5ID0gbm9kZVt0aGlzLmtleV07XG4gICAgdmFyIGN1cnJOb2RlID0gdGhpcy5ub2Rlc01hcFtrZXldO1xuICAgIHRoaXMuc2V0Q3VycmVudE5vZGUoY3Vyck5vZGUpO1xuICB9O1xuXG4gIFRyZWVTdG9yZS5wcm90b3R5cGUuc2V0Q3VycmVudE5vZGVLZXkgPSBmdW5jdGlvbiBzZXRDdXJyZW50Tm9kZUtleShrZXkpIHtcbiAgICBpZiAoa2V5ID09PSBudWxsIHx8IGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnROb2RlICYmICh0aGlzLmN1cnJlbnROb2RlLmlzQ3VycmVudCA9IGZhbHNlKTtcbiAgICAgIHRoaXMuY3VycmVudE5vZGUgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbm9kZSA9IHRoaXMuZ2V0Tm9kZShrZXkpO1xuICAgIGlmIChub2RlKSB7XG4gICAgICB0aGlzLnNldEN1cnJlbnROb2RlKG5vZGUpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gVHJlZVN0b3JlO1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0cmVlX3N0b3JlID0gKHRyZWVfc3RvcmVfVHJlZVN0b3JlKTtcbjtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdHJlZS9zcmMvdHJlZS1ub2RlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYmEzZWYwZSZcbnZhciB0cmVlX25vZGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zYmEzZWYwZV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoaXMkMSA9IHRoaXNcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgIHZhbHVlOiBfdm0ubm9kZS52aXNpYmxlLFxuICAgICAgICAgIGV4cHJlc3Npb246IFwibm9kZS52aXNpYmxlXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHJlZjogXCJub2RlXCIsXG4gICAgICBzdGF0aWNDbGFzczogXCJlbC10cmVlLW5vZGVcIixcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgIFwiaXMtZXhwYW5kZWRcIjogX3ZtLmV4cGFuZGVkLFxuICAgICAgICBcImlzLWN1cnJlbnRcIjogX3ZtLm5vZGUuaXNDdXJyZW50LFxuICAgICAgICBcImlzLWhpZGRlblwiOiAhX3ZtLm5vZGUudmlzaWJsZSxcbiAgICAgICAgXCJpcy1mb2N1c2FibGVcIjogIV92bS5ub2RlLmRpc2FibGVkLFxuICAgICAgICBcImlzLWNoZWNrZWRcIjogIV92bS5ub2RlLmRpc2FibGVkICYmIF92bS5ub2RlLmNoZWNrZWRcbiAgICAgIH0sXG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiBcInRyZWVpdGVtXCIsXG4gICAgICAgIHRhYmluZGV4OiBcIi0xXCIsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBfdm0uZXhwYW5kZWQsXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBfdm0ubm9kZS5kaXNhYmxlZCxcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogX3ZtLm5vZGUuY2hlY2tlZCxcbiAgICAgICAgZHJhZ2dhYmxlOiBfdm0udHJlZS5kcmFnZ2FibGVcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVDbGljaygkZXZlbnQpXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRleHRtZW51OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcyQxLmhhbmRsZUNvbnRleHRNZW51KCRldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgZHJhZ3N0YXJ0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICByZXR1cm4gX3ZtLmhhbmRsZURyYWdTdGFydCgkZXZlbnQpXG4gICAgICAgIH0sXG4gICAgICAgIGRyYWdvdmVyOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICByZXR1cm4gX3ZtLmhhbmRsZURyYWdPdmVyKCRldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgZHJhZ2VuZDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVEcmFnRW5kKCRldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgZHJvcDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVEcm9wKCRldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10cmVlLW5vZGVfX2NvbnRlbnRcIixcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgXCJwYWRkaW5nLWxlZnRcIjogKF92bS5ub2RlLmxldmVsIC0gMSkgKiBfdm0udHJlZS5pbmRlbnQgKyBcInB4XCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcInNwYW5cIiwge1xuICAgICAgICAgICAgY2xhc3M6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiaXMtbGVhZlwiOiBfdm0ubm9kZS5pc0xlYWYsXG4gICAgICAgICAgICAgICAgZXhwYW5kZWQ6ICFfdm0ubm9kZS5pc0xlYWYgJiYgX3ZtLmV4cGFuZGVkXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFwiZWwtdHJlZS1ub2RlX19leHBhbmQtaWNvblwiLFxuICAgICAgICAgICAgICBfdm0udHJlZS5pY29uQ2xhc3MgPyBfdm0udHJlZS5pY29uQ2xhc3MgOiBcImVsLWljb24tY2FyZXQtcmlnaHRcIlxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmhhbmRsZUV4cGFuZEljb25DbGljaygkZXZlbnQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0uc2hvd0NoZWNrYm94XG4gICAgICAgICAgICA/IF9jKFwiZWwtY2hlY2tib3hcIiwge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlOiBfdm0ubm9kZS5pbmRldGVybWluYXRlLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhX3ZtLm5vZGUuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7IGNoYW5nZTogX3ZtLmhhbmRsZUNoZWNrQ2hhbmdlIH0sXG4gICAgICAgICAgICAgICAgbmF0aXZlT246IHtcbiAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5ub2RlLmNoZWNrZWQsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5ub2RlLCBcImNoZWNrZWRcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibm9kZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5ub2RlLmxvYWRpbmdcbiAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10cmVlLW5vZGVfX2xvYWRpbmctaWNvbiBlbC1pY29uLWxvYWRpbmdcIlxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfYyhcIm5vZGUtY29udGVudFwiLCB7IGF0dHJzOiB7IG5vZGU6IF92bS5ub2RlIH0gfSlcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKSxcbiAgICAgIF9jKFwiZWwtY29sbGFwc2UtdHJhbnNpdGlvblwiLCBbXG4gICAgICAgICFfdm0ucmVuZGVyQWZ0ZXJFeHBhbmQgfHwgX3ZtLmNoaWxkTm9kZVJlbmRlcmVkXG4gICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiZXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdHJlZS1ub2RlX19jaGlsZHJlblwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHJvbGU6IFwiZ3JvdXBcIiwgXCJhcmlhLWV4cGFuZGVkXCI6IF92bS5leHBhbmRlZCB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF92bS5fbChfdm0ubm9kZS5jaGlsZE5vZGVzLCBmdW5jdGlvbihjaGlsZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfYyhcImVsLXRyZWUtbm9kZVwiLCB7XG4gICAgICAgICAgICAgICAgICBrZXk6IF92bS5nZXROb2RlS2V5KGNoaWxkKSxcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwicmVuZGVyLWNvbnRlbnRcIjogX3ZtLnJlbmRlckNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgIFwicmVuZGVyLWFmdGVyLWV4cGFuZFwiOiBfdm0ucmVuZGVyQWZ0ZXJFeHBhbmQsXG4gICAgICAgICAgICAgICAgICAgIFwic2hvdy1jaGVja2JveFwiOiBfdm0uc2hvd0NoZWNrYm94LFxuICAgICAgICAgICAgICAgICAgICBub2RlOiBjaGlsZFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7IFwibm9kZS1leHBhbmRcIjogX3ZtLmhhbmRsZUNoaWxkTm9kZUV4cGFuZCB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICBdKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgdHJlZV9ub2RldnVlX3R5cGVfdGVtcGxhdGVfaWRfM2JhM2VmMGVfc3RhdGljUmVuZGVyRm5zID0gW11cbnRyZWVfbm9kZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzNiYTNlZjBlX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdHJlZS9zcmMvdHJlZS1ub2RlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYmEzZWYwZSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdHJlZS9zcmMvdHJlZS1ub2RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0cmVlX25vZGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxUcmVlTm9kZScsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsVHJlZU5vZGUnLFxuXG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hXSxcblxuICBwcm9wczoge1xuICAgIG5vZGU6IHtcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICBwcm9wczoge30sXG4gICAgcmVuZGVyQ29udGVudDogRnVuY3Rpb24sXG4gICAgcmVuZGVyQWZ0ZXJFeHBhbmQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBzaG93Q2hlY2tib3g6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnRzOiB7XG4gICAgRWxDb2xsYXBzZVRyYW5zaXRpb246IGNvbGxhcHNlX3RyYW5zaXRpb25fZGVmYXVsdC5hLFxuICAgIEVsQ2hlY2tib3g6IGNoZWNrYm94X2RlZmF1bHQuYSxcbiAgICBOb2RlQ29udGVudDoge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG4gICAgICAgIHZhciB0cmVlID0gcGFyZW50LnRyZWU7XG4gICAgICAgIHZhciBub2RlID0gdGhpcy5ub2RlO1xuICAgICAgICB2YXIgZGF0YSA9IG5vZGUuZGF0YSxcbiAgICAgICAgICAgIHN0b3JlID0gbm9kZS5zdG9yZTtcblxuICAgICAgICByZXR1cm4gcGFyZW50LnJlbmRlckNvbnRlbnQgPyBwYXJlbnQucmVuZGVyQ29udGVudC5jYWxsKHBhcmVudC5fcmVuZGVyUHJveHksIGgsIHsgX3NlbGY6IHRyZWUuJHZub2RlLmNvbnRleHQsIG5vZGU6IG5vZGUsIGRhdGE6IGRhdGEsIHN0b3JlOiBzdG9yZSB9KSA6IHRyZWUuJHNjb3BlZFNsb3RzLmRlZmF1bHQgPyB0cmVlLiRzY29wZWRTbG90cy5kZWZhdWx0KHsgbm9kZTogbm9kZSwgZGF0YTogZGF0YSB9KSA6IGgoXG4gICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgIHsgJ2NsYXNzJzogJ2VsLXRyZWUtbm9kZV9fbGFiZWwnIH0sXG4gICAgICAgICAgW25vZGUubGFiZWxdXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyZWU6IG51bGwsXG4gICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICBjaGlsZE5vZGVSZW5kZXJlZDogZmFsc2UsXG4gICAgICBvbGRDaGVja2VkOiBudWxsLFxuICAgICAgb2xkSW5kZXRlcm1pbmF0ZTogbnVsbFxuICAgIH07XG4gIH0sXG5cblxuICB3YXRjaDoge1xuICAgICdub2RlLmluZGV0ZXJtaW5hdGUnOiBmdW5jdGlvbiBub2RlSW5kZXRlcm1pbmF0ZSh2YWwpIHtcbiAgICAgIHRoaXMuaGFuZGxlU2VsZWN0Q2hhbmdlKHRoaXMubm9kZS5jaGVja2VkLCB2YWwpO1xuICAgIH0sXG4gICAgJ25vZGUuY2hlY2tlZCc6IGZ1bmN0aW9uIG5vZGVDaGVja2VkKHZhbCkge1xuICAgICAgdGhpcy5oYW5kbGVTZWxlY3RDaGFuZ2UodmFsLCB0aGlzLm5vZGUuaW5kZXRlcm1pbmF0ZSk7XG4gICAgfSxcbiAgICAnbm9kZS5leHBhbmRlZCc6IGZ1bmN0aW9uIG5vZGVFeHBhbmRlZCh2YWwpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmV4cGFuZGVkID0gdmFsO1xuICAgICAgfSk7XG4gICAgICBpZiAodmFsKSB7XG4gICAgICAgIHRoaXMuY2hpbGROb2RlUmVuZGVyZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZ2V0Tm9kZUtleTogZnVuY3Rpb24gZ2V0Tm9kZUtleShub2RlKSB7XG4gICAgICByZXR1cm4gdXRpbF9nZXROb2RlS2V5KHRoaXMudHJlZS5ub2RlS2V5LCBub2RlLmRhdGEpO1xuICAgIH0sXG4gICAgaGFuZGxlU2VsZWN0Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTZWxlY3RDaGFuZ2UoY2hlY2tlZCwgaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgaWYgKHRoaXMub2xkQ2hlY2tlZCAhPT0gY2hlY2tlZCAmJiB0aGlzLm9sZEluZGV0ZXJtaW5hdGUgIT09IGluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgdGhpcy50cmVlLiRlbWl0KCdjaGVjay1jaGFuZ2UnLCB0aGlzLm5vZGUuZGF0YSwgY2hlY2tlZCwgaW5kZXRlcm1pbmF0ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLm9sZENoZWNrZWQgPSBjaGVja2VkO1xuICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gaW5kZXRlcm1pbmF0ZTtcbiAgICB9LFxuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIHZhciBzdG9yZSA9IHRoaXMudHJlZS5zdG9yZTtcbiAgICAgIHN0b3JlLnNldEN1cnJlbnROb2RlKHRoaXMubm9kZSk7XG4gICAgICB0aGlzLnRyZWUuJGVtaXQoJ2N1cnJlbnQtY2hhbmdlJywgc3RvcmUuY3VycmVudE5vZGUgPyBzdG9yZS5jdXJyZW50Tm9kZS5kYXRhIDogbnVsbCwgc3RvcmUuY3VycmVudE5vZGUpO1xuICAgICAgdGhpcy50cmVlLmN1cnJlbnROb2RlID0gdGhpcztcbiAgICAgIGlmICh0aGlzLnRyZWUuZXhwYW5kT25DbGlja05vZGUpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFeHBhbmRJY29uQ2xpY2soKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRyZWUuY2hlY2tPbkNsaWNrTm9kZSAmJiAhdGhpcy5ub2RlLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2hlY2tDaGFuZ2UobnVsbCwge1xuICAgICAgICAgIHRhcmdldDogeyBjaGVja2VkOiAhdGhpcy5ub2RlLmNoZWNrZWQgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMudHJlZS4kZW1pdCgnbm9kZS1jbGljaycsIHRoaXMubm9kZS5kYXRhLCB0aGlzLm5vZGUsIHRoaXMpO1xuICAgIH0sXG4gICAgaGFuZGxlQ29udGV4dE1lbnU6IGZ1bmN0aW9uIGhhbmRsZUNvbnRleHRNZW51KGV2ZW50KSB7XG4gICAgICBpZiAodGhpcy50cmVlLl9ldmVudHNbJ25vZGUtY29udGV4dG1lbnUnXSAmJiB0aGlzLnRyZWUuX2V2ZW50c1snbm9kZS1jb250ZXh0bWVudSddLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLnRyZWUuJGVtaXQoJ25vZGUtY29udGV4dG1lbnUnLCBldmVudCwgdGhpcy5ub2RlLmRhdGEsIHRoaXMubm9kZSwgdGhpcyk7XG4gICAgfSxcbiAgICBoYW5kbGVFeHBhbmRJY29uQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUV4cGFuZEljb25DbGljaygpIHtcbiAgICAgIGlmICh0aGlzLm5vZGUuaXNMZWFmKSByZXR1cm47XG4gICAgICBpZiAodGhpcy5leHBhbmRlZCkge1xuICAgICAgICB0aGlzLnRyZWUuJGVtaXQoJ25vZGUtY29sbGFwc2UnLCB0aGlzLm5vZGUuZGF0YSwgdGhpcy5ub2RlLCB0aGlzKTtcbiAgICAgICAgdGhpcy5ub2RlLmNvbGxhcHNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5vZGUuZXhwYW5kKCk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ25vZGUtZXhwYW5kJywgdGhpcy5ub2RlLmRhdGEsIHRoaXMubm9kZSwgdGhpcyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDaGVja0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hlY2tDaGFuZ2UodmFsdWUsIGV2KSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy5ub2RlLnNldENoZWNrZWQoZXYudGFyZ2V0LmNoZWNrZWQsICF0aGlzLnRyZWUuY2hlY2tTdHJpY3RseSk7XG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzdG9yZSA9IF90aGlzMi50cmVlLnN0b3JlO1xuICAgICAgICBfdGhpczIudHJlZS4kZW1pdCgnY2hlY2snLCBfdGhpczIubm9kZS5kYXRhLCB7XG4gICAgICAgICAgY2hlY2tlZE5vZGVzOiBzdG9yZS5nZXRDaGVja2VkTm9kZXMoKSxcbiAgICAgICAgICBjaGVja2VkS2V5czogc3RvcmUuZ2V0Q2hlY2tlZEtleXMoKSxcbiAgICAgICAgICBoYWxmQ2hlY2tlZE5vZGVzOiBzdG9yZS5nZXRIYWxmQ2hlY2tlZE5vZGVzKCksXG4gICAgICAgICAgaGFsZkNoZWNrZWRLZXlzOiBzdG9yZS5nZXRIYWxmQ2hlY2tlZEtleXMoKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgaGFuZGxlQ2hpbGROb2RlRXhwYW5kOiBmdW5jdGlvbiBoYW5kbGVDaGlsZE5vZGVFeHBhbmQobm9kZURhdGEsIG5vZGUsIGluc3RhbmNlKSB7XG4gICAgICB0aGlzLmJyb2FkY2FzdCgnRWxUcmVlTm9kZScsICd0cmVlLW5vZGUtZXhwYW5kJywgbm9kZSk7XG4gICAgICB0aGlzLnRyZWUuJGVtaXQoJ25vZGUtZXhwYW5kJywgbm9kZURhdGEsIG5vZGUsIGluc3RhbmNlKTtcbiAgICB9LFxuICAgIGhhbmRsZURyYWdTdGFydDogZnVuY3Rpb24gaGFuZGxlRHJhZ1N0YXJ0KGV2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMudHJlZS5kcmFnZ2FibGUpIHJldHVybjtcbiAgICAgIHRoaXMudHJlZS4kZW1pdCgndHJlZS1ub2RlLWRyYWctc3RhcnQnLCBldmVudCwgdGhpcyk7XG4gICAgfSxcbiAgICBoYW5kbGVEcmFnT3ZlcjogZnVuY3Rpb24gaGFuZGxlRHJhZ092ZXIoZXZlbnQpIHtcbiAgICAgIGlmICghdGhpcy50cmVlLmRyYWdnYWJsZSkgcmV0dXJuO1xuICAgICAgdGhpcy50cmVlLiRlbWl0KCd0cmVlLW5vZGUtZHJhZy1vdmVyJywgZXZlbnQsIHRoaXMpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9LFxuICAgIGhhbmRsZURyb3A6IGZ1bmN0aW9uIGhhbmRsZURyb3AoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSxcbiAgICBoYW5kbGVEcmFnRW5kOiBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKGV2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMudHJlZS5kcmFnZ2FibGUpIHJldHVybjtcbiAgICAgIHRoaXMudHJlZS4kZW1pdCgndHJlZS1ub2RlLWRyYWctZW5kJywgZXZlbnQsIHRoaXMpO1xuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdmFyIHBhcmVudCA9IHRoaXMuJHBhcmVudDtcblxuICAgIGlmIChwYXJlbnQuaXNUcmVlKSB7XG4gICAgICB0aGlzLnRyZWUgPSBwYXJlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJlZSA9IHBhcmVudC50cmVlO1xuICAgIH1cblxuICAgIHZhciB0cmVlID0gdGhpcy50cmVlO1xuICAgIGlmICghdHJlZSkge1xuICAgICAgY29uc29sZS53YXJuKCdDYW4gbm90IGZpbmQgbm9kZVxcJ3MgdHJlZS4nKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvcHMgPSB0cmVlLnByb3BzIHx8IHt9O1xuICAgIHZhciBjaGlsZHJlbktleSA9IHByb3BzWydjaGlsZHJlbiddIHx8ICdjaGlsZHJlbic7XG5cbiAgICB0aGlzLiR3YXRjaCgnbm9kZS5kYXRhLicgKyBjaGlsZHJlbktleSwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMzLm5vZGUudXBkYXRlQ2hpbGRyZW4oKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm5vZGUuZXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jaGlsZE5vZGVSZW5kZXJlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJlZS5hY2NvcmRpb24pIHtcbiAgICAgIHRoaXMuJG9uKCd0cmVlLW5vZGUtZXhwYW5kJywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKF90aGlzMy5ub2RlICE9PSBub2RlKSB7XG4gICAgICAgICAgX3RoaXMzLm5vZGUuY29sbGFwc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdHJlZS9zcmMvdHJlZS1ub2RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfdHJlZV9ub2RldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHRyZWVfbm9kZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90cmVlL3NyYy90cmVlLW5vZGUudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdHJlZV9ub2RlX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX3RyZWVfbm9kZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgdHJlZV9ub2RldnVlX3R5cGVfdGVtcGxhdGVfaWRfM2JhM2VmMGVfcmVuZGVyLFxuICB0cmVlX25vZGV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zYmEzZWYwZV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHRyZWVfbm9kZV9hcGk7IH1cbnRyZWVfbm9kZV9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3RyZWUvc3JjL3RyZWUtbm9kZS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdHJlZV9ub2RlID0gKHRyZWVfbm9kZV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy90cmVlL3NyYy90cmVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRyZWV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxUcmVlJyxcblxuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsVHJlZU5vZGU6IHRyZWVfbm9kZVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0b3JlOiBudWxsLFxuICAgICAgcm9vdDogbnVsbCxcbiAgICAgIGN1cnJlbnROb2RlOiBudWxsLFxuICAgICAgdHJlZUl0ZW1zOiBudWxsLFxuICAgICAgY2hlY2tib3hJdGVtczogW10sXG4gICAgICBkcmFnU3RhdGU6IHtcbiAgICAgICAgc2hvd0Ryb3BJbmRpY2F0b3I6IGZhbHNlLFxuICAgICAgICBkcmFnZ2luZ05vZGU6IG51bGwsXG4gICAgICAgIGRyb3BOb2RlOiBudWxsLFxuICAgICAgICBhbGxvd0Ryb3A6IHRydWVcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG5cbiAgcHJvcHM6IHtcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiBBcnJheVxuICAgIH0sXG4gICAgZW1wdHlUZXh0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdChsaWJfbG9jYWxlX1tcInRcIl0pKCdlbC50cmVlLmVtcHR5VGV4dCcpO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVuZGVyQWZ0ZXJFeHBhbmQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBub2RlS2V5OiBTdHJpbmcsXG4gICAgY2hlY2tTdHJpY3RseTogQm9vbGVhbixcbiAgICBkZWZhdWx0RXhwYW5kQWxsOiBCb29sZWFuLFxuICAgIGV4cGFuZE9uQ2xpY2tOb2RlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgY2hlY2tPbkNsaWNrTm9kZTogQm9vbGVhbixcbiAgICBjaGVja0Rlc2NlbmRhbnRzOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGF1dG9FeHBhbmRQYXJlbnQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBkZWZhdWx0Q2hlY2tlZEtleXM6IEFycmF5LFxuICAgIGRlZmF1bHRFeHBhbmRlZEtleXM6IEFycmF5LFxuICAgIGN1cnJlbnROb2RlS2V5OiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgIHJlbmRlckNvbnRlbnQ6IEZ1bmN0aW9uLFxuICAgIHNob3dDaGVja2JveDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBkcmFnZ2FibGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgYWxsb3dEcmFnOiBGdW5jdGlvbixcbiAgICBhbGxvd0Ryb3A6IEZ1bmN0aW9uLFxuICAgIHByb3BzOiB7XG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjaGlsZHJlbjogJ2NoaWxkcmVuJyxcbiAgICAgICAgICBsYWJlbDogJ2xhYmVsJyxcbiAgICAgICAgICBkaXNhYmxlZDogJ2Rpc2FibGVkJ1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgbGF6eToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBoaWdobGlnaHRDdXJyZW50OiBCb29sZWFuLFxuICAgIGxvYWQ6IEZ1bmN0aW9uLFxuICAgIGZpbHRlck5vZGVNZXRob2Q6IEZ1bmN0aW9uLFxuICAgIGFjY29yZGlvbjogQm9vbGVhbixcbiAgICBpbmRlbnQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDE4XG4gICAgfSxcbiAgICBpY29uQ2xhc3M6IFN0cmluZ1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgY2hpbGRyZW46IHtcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICB0cmVlSXRlbUFycmF5OiBmdW5jdGlvbiB0cmVlSXRlbUFycmF5KCkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMudHJlZUl0ZW1zKTtcbiAgICB9LFxuICAgIGlzRW1wdHk6IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gICAgICB2YXIgY2hpbGROb2RlcyA9IHRoaXMucm9vdC5jaGlsZE5vZGVzO1xuXG4gICAgICByZXR1cm4gIWNoaWxkTm9kZXMgfHwgY2hpbGROb2Rlcy5sZW5ndGggPT09IDAgfHwgY2hpbGROb2Rlcy5ldmVyeShmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgdmlzaWJsZSA9IF9yZWYudmlzaWJsZTtcbiAgICAgICAgcmV0dXJuICF2aXNpYmxlO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgZGVmYXVsdENoZWNrZWRLZXlzOiBmdW5jdGlvbiBkZWZhdWx0Q2hlY2tlZEtleXMobmV3VmFsKSB7XG4gICAgICB0aGlzLnN0b3JlLnNldERlZmF1bHRDaGVja2VkS2V5KG5ld1ZhbCk7XG4gICAgfSxcbiAgICBkZWZhdWx0RXhwYW5kZWRLZXlzOiBmdW5jdGlvbiBkZWZhdWx0RXhwYW5kZWRLZXlzKG5ld1ZhbCkge1xuICAgICAgdGhpcy5zdG9yZS5kZWZhdWx0RXhwYW5kZWRLZXlzID0gbmV3VmFsO1xuICAgICAgdGhpcy5zdG9yZS5zZXREZWZhdWx0RXhwYW5kZWRLZXlzKG5ld1ZhbCk7XG4gICAgfSxcbiAgICBkYXRhOiBmdW5jdGlvbiBkYXRhKG5ld1ZhbCkge1xuICAgICAgdGhpcy5zdG9yZS5zZXREYXRhKG5ld1ZhbCk7XG4gICAgfSxcbiAgICBjaGVja2JveEl0ZW1zOiBmdW5jdGlvbiBjaGVja2JveEl0ZW1zKHZhbCkge1xuICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh2YWwsIGZ1bmN0aW9uIChjaGVja2JveCkge1xuICAgICAgICBjaGVja2JveC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgLTEpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBjaGVja1N0cmljdGx5OiBmdW5jdGlvbiBjaGVja1N0cmljdGx5KG5ld1ZhbCkge1xuICAgICAgdGhpcy5zdG9yZS5jaGVja1N0cmljdGx5ID0gbmV3VmFsO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIodmFsdWUpIHtcbiAgICAgIGlmICghdGhpcy5maWx0ZXJOb2RlTWV0aG9kKSB0aHJvdyBuZXcgRXJyb3IoJ1tUcmVlXSBmaWx0ZXJOb2RlTWV0aG9kIGlzIHJlcXVpcmVkIHdoZW4gZmlsdGVyJyk7XG4gICAgICB0aGlzLnN0b3JlLmZpbHRlcih2YWx1ZSk7XG4gICAgfSxcbiAgICBnZXROb2RlS2V5OiBmdW5jdGlvbiBnZXROb2RlS2V5KG5vZGUpIHtcbiAgICAgIHJldHVybiB1dGlsX2dldE5vZGVLZXkodGhpcy5ub2RlS2V5LCBub2RlLmRhdGEpO1xuICAgIH0sXG4gICAgZ2V0Tm9kZVBhdGg6IGZ1bmN0aW9uIGdldE5vZGVQYXRoKGRhdGEpIHtcbiAgICAgIGlmICghdGhpcy5ub2RlS2V5KSB0aHJvdyBuZXcgRXJyb3IoJ1tUcmVlXSBub2RlS2V5IGlzIHJlcXVpcmVkIGluIGdldE5vZGVQYXRoJyk7XG4gICAgICB2YXIgbm9kZSA9IHRoaXMuc3RvcmUuZ2V0Tm9kZShkYXRhKTtcbiAgICAgIGlmICghbm9kZSkgcmV0dXJuIFtdO1xuICAgICAgdmFyIHBhdGggPSBbbm9kZS5kYXRhXTtcbiAgICAgIHZhciBwYXJlbnQgPSBub2RlLnBhcmVudDtcbiAgICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50ICE9PSB0aGlzLnJvb3QpIHtcbiAgICAgICAgcGF0aC5wdXNoKHBhcmVudC5kYXRhKTtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRoLnJldmVyc2UoKTtcbiAgICB9LFxuICAgIGdldENoZWNrZWROb2RlczogZnVuY3Rpb24gZ2V0Q2hlY2tlZE5vZGVzKGxlYWZPbmx5LCBpbmNsdWRlSGFsZkNoZWNrZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JlLmdldENoZWNrZWROb2RlcyhsZWFmT25seSwgaW5jbHVkZUhhbGZDaGVja2VkKTtcbiAgICB9LFxuICAgIGdldENoZWNrZWRLZXlzOiBmdW5jdGlvbiBnZXRDaGVja2VkS2V5cyhsZWFmT25seSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0Q2hlY2tlZEtleXMobGVhZk9ubHkpO1xuICAgIH0sXG4gICAgZ2V0Q3VycmVudE5vZGU6IGZ1bmN0aW9uIGdldEN1cnJlbnROb2RlKCkge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5zdG9yZS5nZXRDdXJyZW50Tm9kZSgpO1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlID8gY3VycmVudE5vZGUuZGF0YSA6IG51bGw7XG4gICAgfSxcbiAgICBnZXRDdXJyZW50S2V5OiBmdW5jdGlvbiBnZXRDdXJyZW50S2V5KCkge1xuICAgICAgaWYgKCF0aGlzLm5vZGVLZXkpIHRocm93IG5ldyBFcnJvcignW1RyZWVdIG5vZGVLZXkgaXMgcmVxdWlyZWQgaW4gZ2V0Q3VycmVudEtleScpO1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5nZXRDdXJyZW50Tm9kZSgpO1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlID8gY3VycmVudE5vZGVbdGhpcy5ub2RlS2V5XSA6IG51bGw7XG4gICAgfSxcbiAgICBzZXRDaGVja2VkTm9kZXM6IGZ1bmN0aW9uIHNldENoZWNrZWROb2Rlcyhub2RlcywgbGVhZk9ubHkpIHtcbiAgICAgIGlmICghdGhpcy5ub2RlS2V5KSB0aHJvdyBuZXcgRXJyb3IoJ1tUcmVlXSBub2RlS2V5IGlzIHJlcXVpcmVkIGluIHNldENoZWNrZWROb2RlcycpO1xuICAgICAgdGhpcy5zdG9yZS5zZXRDaGVja2VkTm9kZXMobm9kZXMsIGxlYWZPbmx5KTtcbiAgICB9LFxuICAgIHNldENoZWNrZWRLZXlzOiBmdW5jdGlvbiBzZXRDaGVja2VkS2V5cyhrZXlzLCBsZWFmT25seSkge1xuICAgICAgaWYgKCF0aGlzLm5vZGVLZXkpIHRocm93IG5ldyBFcnJvcignW1RyZWVdIG5vZGVLZXkgaXMgcmVxdWlyZWQgaW4gc2V0Q2hlY2tlZEtleXMnKTtcbiAgICAgIHRoaXMuc3RvcmUuc2V0Q2hlY2tlZEtleXMoa2V5cywgbGVhZk9ubHkpO1xuICAgIH0sXG4gICAgc2V0Q2hlY2tlZDogZnVuY3Rpb24gc2V0Q2hlY2tlZChkYXRhLCBjaGVja2VkLCBkZWVwKSB7XG4gICAgICB0aGlzLnN0b3JlLnNldENoZWNrZWQoZGF0YSwgY2hlY2tlZCwgZGVlcCk7XG4gICAgfSxcbiAgICBnZXRIYWxmQ2hlY2tlZE5vZGVzOiBmdW5jdGlvbiBnZXRIYWxmQ2hlY2tlZE5vZGVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0SGFsZkNoZWNrZWROb2RlcygpO1xuICAgIH0sXG4gICAgZ2V0SGFsZkNoZWNrZWRLZXlzOiBmdW5jdGlvbiBnZXRIYWxmQ2hlY2tlZEtleXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRIYWxmQ2hlY2tlZEtleXMoKTtcbiAgICB9LFxuICAgIHNldEN1cnJlbnROb2RlOiBmdW5jdGlvbiBzZXRDdXJyZW50Tm9kZShub2RlKSB7XG4gICAgICBpZiAoIXRoaXMubm9kZUtleSkgdGhyb3cgbmV3IEVycm9yKCdbVHJlZV0gbm9kZUtleSBpcyByZXF1aXJlZCBpbiBzZXRDdXJyZW50Tm9kZScpO1xuICAgICAgdGhpcy5zdG9yZS5zZXRVc2VyQ3VycmVudE5vZGUobm9kZSk7XG4gICAgfSxcbiAgICBzZXRDdXJyZW50S2V5OiBmdW5jdGlvbiBzZXRDdXJyZW50S2V5KGtleSkge1xuICAgICAgaWYgKCF0aGlzLm5vZGVLZXkpIHRocm93IG5ldyBFcnJvcignW1RyZWVdIG5vZGVLZXkgaXMgcmVxdWlyZWQgaW4gc2V0Q3VycmVudEtleScpO1xuICAgICAgdGhpcy5zdG9yZS5zZXRDdXJyZW50Tm9kZUtleShrZXkpO1xuICAgIH0sXG4gICAgZ2V0Tm9kZTogZnVuY3Rpb24gZ2V0Tm9kZShkYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXROb2RlKGRhdGEpO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoZGF0YSkge1xuICAgICAgdGhpcy5zdG9yZS5yZW1vdmUoZGF0YSk7XG4gICAgfSxcbiAgICBhcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZChkYXRhLCBwYXJlbnROb2RlKSB7XG4gICAgICB0aGlzLnN0b3JlLmFwcGVuZChkYXRhLCBwYXJlbnROb2RlKTtcbiAgICB9LFxuICAgIGluc2VydEJlZm9yZTogZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKGRhdGEsIHJlZk5vZGUpIHtcbiAgICAgIHRoaXMuc3RvcmUuaW5zZXJ0QmVmb3JlKGRhdGEsIHJlZk5vZGUpO1xuICAgIH0sXG4gICAgaW5zZXJ0QWZ0ZXI6IGZ1bmN0aW9uIGluc2VydEFmdGVyKGRhdGEsIHJlZk5vZGUpIHtcbiAgICAgIHRoaXMuc3RvcmUuaW5zZXJ0QWZ0ZXIoZGF0YSwgcmVmTm9kZSk7XG4gICAgfSxcbiAgICBoYW5kbGVOb2RlRXhwYW5kOiBmdW5jdGlvbiBoYW5kbGVOb2RlRXhwYW5kKG5vZGVEYXRhLCBub2RlLCBpbnN0YW5jZSkge1xuICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsVHJlZU5vZGUnLCAndHJlZS1ub2RlLWV4cGFuZCcsIG5vZGUpO1xuICAgICAgdGhpcy4kZW1pdCgnbm9kZS1leHBhbmQnLCBub2RlRGF0YSwgbm9kZSwgaW5zdGFuY2UpO1xuICAgIH0sXG4gICAgdXBkYXRlS2V5Q2hpbGRyZW46IGZ1bmN0aW9uIHVwZGF0ZUtleUNoaWxkcmVuKGtleSwgZGF0YSkge1xuICAgICAgaWYgKCF0aGlzLm5vZGVLZXkpIHRocm93IG5ldyBFcnJvcignW1RyZWVdIG5vZGVLZXkgaXMgcmVxdWlyZWQgaW4gdXBkYXRlS2V5Q2hpbGQnKTtcbiAgICAgIHRoaXMuc3RvcmUudXBkYXRlQ2hpbGRyZW4oa2V5LCBkYXRhKTtcbiAgICB9LFxuICAgIGluaXRUYWJJbmRleDogZnVuY3Rpb24gaW5pdFRhYkluZGV4KCkge1xuICAgICAgdGhpcy50cmVlSXRlbXMgPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCcuaXMtZm9jdXNhYmxlW3JvbGU9dHJlZWl0ZW1dJyk7XG4gICAgICB0aGlzLmNoZWNrYm94SXRlbXMgPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPWNoZWNrYm94XScpO1xuICAgICAgdmFyIGNoZWNrZWRJdGVtID0gdGhpcy4kZWwucXVlcnlTZWxlY3RvckFsbCgnLmlzLWNoZWNrZWRbcm9sZT10cmVlaXRlbV0nKTtcbiAgICAgIGlmIChjaGVja2VkSXRlbS5sZW5ndGgpIHtcbiAgICAgICAgY2hlY2tlZEl0ZW1bMF0uc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIDApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnRyZWVJdGVtc1swXSAmJiB0aGlzLnRyZWVJdGVtc1swXS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgMCk7XG4gICAgfSxcbiAgICBoYW5kbGVLZXlkb3duOiBmdW5jdGlvbiBoYW5kbGVLZXlkb3duKGV2KSB7XG4gICAgICB2YXIgY3VycmVudEl0ZW0gPSBldi50YXJnZXQ7XG4gICAgICBpZiAoY3VycmVudEl0ZW0uY2xhc3NOYW1lLmluZGV4T2YoJ2VsLXRyZWUtbm9kZScpID09PSAtMSkgcmV0dXJuO1xuICAgICAgdmFyIGtleUNvZGUgPSBldi5rZXlDb2RlO1xuICAgICAgdGhpcy50cmVlSXRlbXMgPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCcuaXMtZm9jdXNhYmxlW3JvbGU9dHJlZWl0ZW1dJyk7XG4gICAgICB2YXIgY3VycmVudEluZGV4ID0gdGhpcy50cmVlSXRlbUFycmF5LmluZGV4T2YoY3VycmVudEl0ZW0pO1xuICAgICAgdmFyIG5leHRJbmRleCA9IHZvaWQgMDtcbiAgICAgIGlmIChbMzgsIDQwXS5pbmRleE9mKGtleUNvZGUpID4gLTEpIHtcbiAgICAgICAgLy8gdXDjgIFkb3duXG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChrZXlDb2RlID09PSAzOCkge1xuICAgICAgICAgIC8vIHVwXG4gICAgICAgICAgbmV4dEluZGV4ID0gY3VycmVudEluZGV4ICE9PSAwID8gY3VycmVudEluZGV4IC0gMSA6IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dEluZGV4ID0gY3VycmVudEluZGV4IDwgdGhpcy50cmVlSXRlbUFycmF5Lmxlbmd0aCAtIDEgPyBjdXJyZW50SW5kZXggKyAxIDogMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRyZWVJdGVtQXJyYXlbbmV4dEluZGV4XS5mb2N1cygpOyAvLyDpgInkuK1cbiAgICAgIH1cbiAgICAgIGlmIChbMzcsIDM5XS5pbmRleE9mKGtleUNvZGUpID4gLTEpIHtcbiAgICAgICAgLy8gbGVmdOOAgXJpZ2h0IOWxleW8gFxuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjdXJyZW50SXRlbS5jbGljaygpOyAvLyDpgInkuK1cbiAgICAgIH1cbiAgICAgIHZhciBoYXNJbnB1dCA9IGN1cnJlbnRJdGVtLnF1ZXJ5U2VsZWN0b3IoJ1t0eXBlPVwiY2hlY2tib3hcIl0nKTtcbiAgICAgIGlmIChbMTMsIDMyXS5pbmRleE9mKGtleUNvZGUpID4gLTEgJiYgaGFzSW5wdXQpIHtcbiAgICAgICAgLy8gc3BhY2UgZW50ZXLpgInkuK1jaGVja2JveFxuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBoYXNJbnB1dC5jbGljaygpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmlzVHJlZSA9IHRydWU7XG5cbiAgICB0aGlzLnN0b3JlID0gbmV3IHRyZWVfc3RvcmUoe1xuICAgICAga2V5OiB0aGlzLm5vZGVLZXksXG4gICAgICBkYXRhOiB0aGlzLmRhdGEsXG4gICAgICBsYXp5OiB0aGlzLmxhenksXG4gICAgICBwcm9wczogdGhpcy5wcm9wcyxcbiAgICAgIGxvYWQ6IHRoaXMubG9hZCxcbiAgICAgIGN1cnJlbnROb2RlS2V5OiB0aGlzLmN1cnJlbnROb2RlS2V5LFxuICAgICAgY2hlY2tTdHJpY3RseTogdGhpcy5jaGVja1N0cmljdGx5LFxuICAgICAgY2hlY2tEZXNjZW5kYW50czogdGhpcy5jaGVja0Rlc2NlbmRhbnRzLFxuICAgICAgZGVmYXVsdENoZWNrZWRLZXlzOiB0aGlzLmRlZmF1bHRDaGVja2VkS2V5cyxcbiAgICAgIGRlZmF1bHRFeHBhbmRlZEtleXM6IHRoaXMuZGVmYXVsdEV4cGFuZGVkS2V5cyxcbiAgICAgIGF1dG9FeHBhbmRQYXJlbnQ6IHRoaXMuYXV0b0V4cGFuZFBhcmVudCxcbiAgICAgIGRlZmF1bHRFeHBhbmRBbGw6IHRoaXMuZGVmYXVsdEV4cGFuZEFsbCxcbiAgICAgIGZpbHRlck5vZGVNZXRob2Q6IHRoaXMuZmlsdGVyTm9kZU1ldGhvZFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb290ID0gdGhpcy5zdG9yZS5yb290O1xuXG4gICAgdmFyIGRyYWdTdGF0ZSA9IHRoaXMuZHJhZ1N0YXRlO1xuICAgIHRoaXMuJG9uKCd0cmVlLW5vZGUtZHJhZy1zdGFydCcsIGZ1bmN0aW9uIChldmVudCwgdHJlZU5vZGUpIHtcbiAgICAgIGlmICh0eXBlb2YgX3RoaXMuYWxsb3dEcmFnID09PSAnZnVuY3Rpb24nICYmICFfdGhpcy5hbGxvd0RyYWcodHJlZU5vZGUubm9kZSkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnbW92ZSc7XG5cbiAgICAgIC8vIHdyYXAgaW4gdHJ5IGNhdGNoIHRvIGFkZHJlc3MgSUUncyBlcnJvciB3aGVuIGZpcnN0IHBhcmFtIGlzICd0ZXh0L3BsYWluJ1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gc2V0RGF0YSBpcyByZXF1aXJlZCBmb3IgZHJhZ2dhYmxlIHRvIHdvcmsgaW4gRmlyZUZveFxuICAgICAgICAvLyB0aGUgY29udGVudCBoYXMgdG8gYmUgJycgc28gZHJhZ2dpbmcgYSBub2RlIG91dCBvZiB0aGUgdHJlZSB3b24ndCBvcGVuIGEgbmV3IHRhYiBpbiBGaXJlRm94XG4gICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0L3BsYWluJywgJycpO1xuICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIGRyYWdTdGF0ZS5kcmFnZ2luZ05vZGUgPSB0cmVlTm9kZTtcbiAgICAgIF90aGlzLiRlbWl0KCdub2RlLWRyYWctc3RhcnQnLCB0cmVlTm9kZS5ub2RlLCBldmVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRvbigndHJlZS1ub2RlLWRyYWctb3ZlcicsIGZ1bmN0aW9uIChldmVudCwgdHJlZU5vZGUpIHtcbiAgICAgIHZhciBkcm9wTm9kZSA9IGZpbmROZWFyZXN0Q29tcG9uZW50KGV2ZW50LnRhcmdldCwgJ0VsVHJlZU5vZGUnKTtcbiAgICAgIHZhciBvbGREcm9wTm9kZSA9IGRyYWdTdGF0ZS5kcm9wTm9kZTtcbiAgICAgIGlmIChvbGREcm9wTm9kZSAmJiBvbGREcm9wTm9kZSAhPT0gZHJvcE5vZGUpIHtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkob2xkRHJvcE5vZGUuJGVsLCAnaXMtZHJvcC1pbm5lcicpO1xuICAgICAgfVxuICAgICAgdmFyIGRyYWdnaW5nTm9kZSA9IGRyYWdTdGF0ZS5kcmFnZ2luZ05vZGU7XG4gICAgICBpZiAoIWRyYWdnaW5nTm9kZSB8fCAhZHJvcE5vZGUpIHJldHVybjtcblxuICAgICAgdmFyIGRyb3BQcmV2ID0gdHJ1ZTtcbiAgICAgIHZhciBkcm9wSW5uZXIgPSB0cnVlO1xuICAgICAgdmFyIGRyb3BOZXh0ID0gdHJ1ZTtcbiAgICAgIHZhciB1c2VyQWxsb3dEcm9wSW5uZXIgPSB0cnVlO1xuICAgICAgaWYgKHR5cGVvZiBfdGhpcy5hbGxvd0Ryb3AgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZHJvcFByZXYgPSBfdGhpcy5hbGxvd0Ryb3AoZHJhZ2dpbmdOb2RlLm5vZGUsIGRyb3BOb2RlLm5vZGUsICdwcmV2Jyk7XG4gICAgICAgIHVzZXJBbGxvd0Ryb3BJbm5lciA9IGRyb3BJbm5lciA9IF90aGlzLmFsbG93RHJvcChkcmFnZ2luZ05vZGUubm9kZSwgZHJvcE5vZGUubm9kZSwgJ2lubmVyJyk7XG4gICAgICAgIGRyb3BOZXh0ID0gX3RoaXMuYWxsb3dEcm9wKGRyYWdnaW5nTm9kZS5ub2RlLCBkcm9wTm9kZS5ub2RlLCAnbmV4dCcpO1xuICAgICAgfVxuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBkcm9wSW5uZXIgPyAnbW92ZScgOiAnbm9uZSc7XG4gICAgICBpZiAoKGRyb3BQcmV2IHx8IGRyb3BJbm5lciB8fCBkcm9wTmV4dCkgJiYgb2xkRHJvcE5vZGUgIT09IGRyb3BOb2RlKSB7XG4gICAgICAgIGlmIChvbGREcm9wTm9kZSkge1xuICAgICAgICAgIF90aGlzLiRlbWl0KCdub2RlLWRyYWctbGVhdmUnLCBkcmFnZ2luZ05vZGUubm9kZSwgb2xkRHJvcE5vZGUubm9kZSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLiRlbWl0KCdub2RlLWRyYWctZW50ZXInLCBkcmFnZ2luZ05vZGUubm9kZSwgZHJvcE5vZGUubm9kZSwgZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZHJvcFByZXYgfHwgZHJvcElubmVyIHx8IGRyb3BOZXh0KSB7XG4gICAgICAgIGRyYWdTdGF0ZS5kcm9wTm9kZSA9IGRyb3BOb2RlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZHJvcE5vZGUubm9kZS5uZXh0U2libGluZyA9PT0gZHJhZ2dpbmdOb2RlLm5vZGUpIHtcbiAgICAgICAgZHJvcE5leHQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChkcm9wTm9kZS5ub2RlLnByZXZpb3VzU2libGluZyA9PT0gZHJhZ2dpbmdOb2RlLm5vZGUpIHtcbiAgICAgICAgZHJvcFByZXYgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChkcm9wTm9kZS5ub2RlLmNvbnRhaW5zKGRyYWdnaW5nTm9kZS5ub2RlLCBmYWxzZSkpIHtcbiAgICAgICAgZHJvcElubmVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoZHJhZ2dpbmdOb2RlLm5vZGUgPT09IGRyb3BOb2RlLm5vZGUgfHwgZHJhZ2dpbmdOb2RlLm5vZGUuY29udGFpbnMoZHJvcE5vZGUubm9kZSkpIHtcbiAgICAgICAgZHJvcFByZXYgPSBmYWxzZTtcbiAgICAgICAgZHJvcElubmVyID0gZmFsc2U7XG4gICAgICAgIGRyb3BOZXh0ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciB0YXJnZXRQb3NpdGlvbiA9IGRyb3BOb2RlLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHZhciB0cmVlUG9zaXRpb24gPSBfdGhpcy4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIHZhciBkcm9wVHlwZSA9IHZvaWQgMDtcbiAgICAgIHZhciBwcmV2UGVyY2VudCA9IGRyb3BQcmV2ID8gZHJvcElubmVyID8gMC4yNSA6IGRyb3BOZXh0ID8gMC40NSA6IDEgOiAtMTtcbiAgICAgIHZhciBuZXh0UGVyY2VudCA9IGRyb3BOZXh0ID8gZHJvcElubmVyID8gMC43NSA6IGRyb3BQcmV2ID8gMC41NSA6IDAgOiAxO1xuXG4gICAgICB2YXIgaW5kaWNhdG9yVG9wID0gLTk5OTk7XG4gICAgICB2YXIgZGlzdGFuY2UgPSBldmVudC5jbGllbnRZIC0gdGFyZ2V0UG9zaXRpb24udG9wO1xuICAgICAgaWYgKGRpc3RhbmNlIDwgdGFyZ2V0UG9zaXRpb24uaGVpZ2h0ICogcHJldlBlcmNlbnQpIHtcbiAgICAgICAgZHJvcFR5cGUgPSAnYmVmb3JlJztcbiAgICAgIH0gZWxzZSBpZiAoZGlzdGFuY2UgPiB0YXJnZXRQb3NpdGlvbi5oZWlnaHQgKiBuZXh0UGVyY2VudCkge1xuICAgICAgICBkcm9wVHlwZSA9ICdhZnRlcic7XG4gICAgICB9IGVsc2UgaWYgKGRyb3BJbm5lcikge1xuICAgICAgICBkcm9wVHlwZSA9ICdpbm5lcic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkcm9wVHlwZSA9ICdub25lJztcbiAgICAgIH1cblxuICAgICAgdmFyIGljb25Qb3NpdGlvbiA9IGRyb3BOb2RlLiRlbC5xdWVyeVNlbGVjdG9yKCcuZWwtdHJlZS1ub2RlX19leHBhbmQtaWNvbicpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgdmFyIGRyb3BJbmRpY2F0b3IgPSBfdGhpcy4kcmVmcy5kcm9wSW5kaWNhdG9yO1xuICAgICAgaWYgKGRyb3BUeXBlID09PSAnYmVmb3JlJykge1xuICAgICAgICBpbmRpY2F0b3JUb3AgPSBpY29uUG9zaXRpb24udG9wIC0gdHJlZVBvc2l0aW9uLnRvcDtcbiAgICAgIH0gZWxzZSBpZiAoZHJvcFR5cGUgPT09ICdhZnRlcicpIHtcbiAgICAgICAgaW5kaWNhdG9yVG9wID0gaWNvblBvc2l0aW9uLmJvdHRvbSAtIHRyZWVQb3NpdGlvbi50b3A7XG4gICAgICB9XG4gICAgICBkcm9wSW5kaWNhdG9yLnN0eWxlLnRvcCA9IGluZGljYXRvclRvcCArICdweCc7XG4gICAgICBkcm9wSW5kaWNhdG9yLnN0eWxlLmxlZnQgPSBpY29uUG9zaXRpb24ucmlnaHQgLSB0cmVlUG9zaXRpb24ubGVmdCArICdweCc7XG5cbiAgICAgIGlmIChkcm9wVHlwZSA9PT0gJ2lubmVyJykge1xuICAgICAgICBPYmplY3QoZG9tX1tcImFkZENsYXNzXCJdKShkcm9wTm9kZS4kZWwsICdpcy1kcm9wLWlubmVyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3QoZG9tX1tcInJlbW92ZUNsYXNzXCJdKShkcm9wTm9kZS4kZWwsICdpcy1kcm9wLWlubmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZS5zaG93RHJvcEluZGljYXRvciA9IGRyb3BUeXBlID09PSAnYmVmb3JlJyB8fCBkcm9wVHlwZSA9PT0gJ2FmdGVyJztcbiAgICAgIGRyYWdTdGF0ZS5hbGxvd0Ryb3AgPSBkcmFnU3RhdGUuc2hvd0Ryb3BJbmRpY2F0b3IgfHwgdXNlckFsbG93RHJvcElubmVyO1xuICAgICAgZHJhZ1N0YXRlLmRyb3BUeXBlID0gZHJvcFR5cGU7XG4gICAgICBfdGhpcy4kZW1pdCgnbm9kZS1kcmFnLW92ZXInLCBkcmFnZ2luZ05vZGUubm9kZSwgZHJvcE5vZGUubm9kZSwgZXZlbnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kb24oJ3RyZWUtbm9kZS1kcmFnLWVuZCcsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdmFyIGRyYWdnaW5nTm9kZSA9IGRyYWdTdGF0ZS5kcmFnZ2luZ05vZGUsXG4gICAgICAgICAgZHJvcFR5cGUgPSBkcmFnU3RhdGUuZHJvcFR5cGUsXG4gICAgICAgICAgZHJvcE5vZGUgPSBkcmFnU3RhdGUuZHJvcE5vZGU7XG5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdtb3ZlJztcblxuICAgICAgaWYgKGRyYWdnaW5nTm9kZSAmJiBkcm9wTm9kZSkge1xuICAgICAgICB2YXIgZHJhZ2dpbmdOb2RlQ29weSA9IHsgZGF0YTogZHJhZ2dpbmdOb2RlLm5vZGUuZGF0YSB9O1xuICAgICAgICBpZiAoZHJvcFR5cGUgIT09ICdub25lJykge1xuICAgICAgICAgIGRyYWdnaW5nTm9kZS5ub2RlLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkcm9wVHlwZSA9PT0gJ2JlZm9yZScpIHtcbiAgICAgICAgICBkcm9wTm9kZS5ub2RlLnBhcmVudC5pbnNlcnRCZWZvcmUoZHJhZ2dpbmdOb2RlQ29weSwgZHJvcE5vZGUubm9kZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZHJvcFR5cGUgPT09ICdhZnRlcicpIHtcbiAgICAgICAgICBkcm9wTm9kZS5ub2RlLnBhcmVudC5pbnNlcnRBZnRlcihkcmFnZ2luZ05vZGVDb3B5LCBkcm9wTm9kZS5ub2RlKTtcbiAgICAgICAgfSBlbHNlIGlmIChkcm9wVHlwZSA9PT0gJ2lubmVyJykge1xuICAgICAgICAgIGRyb3BOb2RlLm5vZGUuaW5zZXJ0Q2hpbGQoZHJhZ2dpbmdOb2RlQ29weSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRyb3BUeXBlICE9PSAnbm9uZScpIHtcbiAgICAgICAgICBfdGhpcy5zdG9yZS5yZWdpc3Rlck5vZGUoZHJhZ2dpbmdOb2RlQ29weSk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QoZG9tX1tcInJlbW92ZUNsYXNzXCJdKShkcm9wTm9kZS4kZWwsICdpcy1kcm9wLWlubmVyJyk7XG5cbiAgICAgICAgX3RoaXMuJGVtaXQoJ25vZGUtZHJhZy1lbmQnLCBkcmFnZ2luZ05vZGUubm9kZSwgZHJvcE5vZGUubm9kZSwgZHJvcFR5cGUsIGV2ZW50KTtcbiAgICAgICAgaWYgKGRyb3BUeXBlICE9PSAnbm9uZScpIHtcbiAgICAgICAgICBfdGhpcy4kZW1pdCgnbm9kZS1kcm9wJywgZHJhZ2dpbmdOb2RlLm5vZGUsIGRyb3BOb2RlLm5vZGUsIGRyb3BUeXBlLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkcmFnZ2luZ05vZGUgJiYgIWRyb3BOb2RlKSB7XG4gICAgICAgIF90aGlzLiRlbWl0KCdub2RlLWRyYWctZW5kJywgZHJhZ2dpbmdOb2RlLm5vZGUsIG51bGwsIGRyb3BUeXBlLCBldmVudCk7XG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZS5zaG93RHJvcEluZGljYXRvciA9IGZhbHNlO1xuICAgICAgZHJhZ1N0YXRlLmRyYWdnaW5nTm9kZSA9IG51bGw7XG4gICAgICBkcmFnU3RhdGUuZHJvcE5vZGUgPSBudWxsO1xuICAgICAgZHJhZ1N0YXRlLmFsbG93RHJvcCA9IHRydWU7XG4gICAgfSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5pbml0VGFiSW5kZXgoKTtcbiAgICB0aGlzLiRlbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duKTtcbiAgfSxcbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCgpIHtcbiAgICB0aGlzLnRyZWVJdGVtcyA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPXRyZWVpdGVtXScpO1xuICAgIHRoaXMuY2hlY2tib3hJdGVtcyA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9Y2hlY2tib3hdJyk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90cmVlL3NyYy90cmVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfdHJlZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh0cmVldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RyZWUvc3JjL3RyZWUudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdHJlZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY190cmVldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB0cmVldnVlX3R5cGVfdGVtcGxhdGVfaWRfNTQ3NTc1YTZfcmVuZGVyLFxuICB0cmVldnVlX3R5cGVfdGVtcGxhdGVfaWRfNTQ3NTc1YTZfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciB0cmVlX2FwaTsgfVxudHJlZV9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3RyZWUvc3JjL3RyZWUudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY190cmVlID0gKHRyZWVfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90cmVlL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnNyY190cmVlLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoc3JjX3RyZWUubmFtZSwgc3JjX3RyZWUpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfdHJlZSA9IChzcmNfdHJlZSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2FsZXJ0L3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZTUzMzQxYiZcbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNmU1MzM0MWJfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwidHJhbnNpdGlvblwiLCB7IGF0dHJzOiB7IG5hbWU6IFwiZWwtYWxlcnQtZmFkZVwiIH0gfSwgW1xuICAgIF9jKFxuICAgICAgXCJkaXZcIixcbiAgICAgIHtcbiAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgIHZhbHVlOiBfdm0udmlzaWJsZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb246IFwidmlzaWJsZVwiXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1hbGVydFwiLFxuICAgICAgICBjbGFzczogW1xuICAgICAgICAgIF92bS50eXBlQ2xhc3MsXG4gICAgICAgICAgX3ZtLmNlbnRlciA/IFwiaXMtY2VudGVyXCIgOiBcIlwiLFxuICAgICAgICAgIFwiaXMtXCIgKyBfdm0uZWZmZWN0XG4gICAgICAgIF0sXG4gICAgICAgIGF0dHJzOiB7IHJvbGU6IFwiYWxlcnRcIiB9XG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICBfdm0uc2hvd0ljb25cbiAgICAgICAgICA/IF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWFsZXJ0X19pY29uXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiBbX3ZtLmljb25DbGFzcywgX3ZtLmlzQmlnSWNvbl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1hbGVydF9fY29udGVudFwiIH0sIFtcbiAgICAgICAgICBfdm0udGl0bGUgfHwgX3ZtLiRzbG90cy50aXRsZVxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWFsZXJ0X190aXRsZVwiLCBjbGFzczogW192bS5pc0JvbGRUaXRsZV0gfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl90KFwidGl0bGVcIiwgW192bS5fdihfdm0uX3MoX3ZtLnRpdGxlKSldKV0sXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS4kc2xvdHMuZGVmYXVsdCAmJiAhX3ZtLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgIFwicFwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtYWxlcnRfX2Rlc2NyaXB0aW9uXCIgfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5kZXNjcmlwdGlvbiAmJiAhX3ZtLiRzbG90cy5kZWZhdWx0XG4gICAgICAgICAgICA/IF9jKFwicFwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWFsZXJ0X19kZXNjcmlwdGlvblwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5kZXNjcmlwdGlvbikpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJpXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmNsb3NhYmxlLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjbG9zYWJsZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1hbGVydF9fY2xvc2VidG5cIixcbiAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICBcImlzLWN1c3RvbWVkXCI6IF92bS5jbG9zZVRleHQgIT09IFwiXCIsXG4gICAgICAgICAgICAgICAgXCJlbC1pY29uLWNsb3NlXCI6IF92bS5jbG9zZVRleHQgPT09IFwiXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBfdm0uY2xvc2UoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5jbG9zZVRleHQpKV1cbiAgICAgICAgICApXG4gICAgICAgIF0pXG4gICAgICBdXG4gICAgKVxuICBdKVxufVxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF82ZTUzMzQxYl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzZlNTMzNDFiX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYWxlcnQvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZlNTMzNDFiJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9hbGVydC9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbnZhciBUWVBFX0NMQVNTRVNfTUFQID0ge1xuICAnc3VjY2Vzcyc6ICdlbC1pY29uLXN1Y2Nlc3MnLFxuICAnd2FybmluZyc6ICdlbC1pY29uLXdhcm5pbmcnLFxuICAnZXJyb3InOiAnZWwtaWNvbi1lcnJvcidcbn07XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBhbGVydF9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbEFsZXJ0JyxcblxuICBwcm9wczoge1xuICAgIHRpdGxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnaW5mbydcbiAgICB9LFxuICAgIGNsb3NhYmxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgY2xvc2VUZXh0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgc2hvd0ljb246IEJvb2xlYW4sXG4gICAgY2VudGVyOiBCb29sZWFuLFxuICAgIGVmZmVjdDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2xpZ2h0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbJ2xpZ2h0JywgJ2RhcmsnXS5pbmRleE9mKHZhbHVlKSAhPT0gLTE7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZpc2libGU6IHRydWVcbiAgICB9O1xuICB9LFxuXG5cbiAgbWV0aG9kczoge1xuICAgIGNsb3NlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy4kZW1pdCgnY2xvc2UnKTtcbiAgICB9XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICB0eXBlQ2xhc3M6IGZ1bmN0aW9uIHR5cGVDbGFzcygpIHtcbiAgICAgIHJldHVybiAnZWwtYWxlcnQtLScgKyB0aGlzLnR5cGU7XG4gICAgfSxcbiAgICBpY29uQ2xhc3M6IGZ1bmN0aW9uIGljb25DbGFzcygpIHtcbiAgICAgIHJldHVybiBUWVBFX0NMQVNTRVNfTUFQW3RoaXMudHlwZV0gfHwgJ2VsLWljb24taW5mbyc7XG4gICAgfSxcbiAgICBpc0JpZ0ljb246IGZ1bmN0aW9uIGlzQmlnSWNvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0aW9uIHx8IHRoaXMuJHNsb3RzLmRlZmF1bHQgPyAnaXMtYmlnJyA6ICcnO1xuICAgIH0sXG4gICAgaXNCb2xkVGl0bGU6IGZ1bmN0aW9uIGlzQm9sZFRpdGxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb24gfHwgdGhpcy4kc2xvdHMuZGVmYXVsdCA/ICdpcy1ib2xkJyA6ICcnO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2FsZXJ0L3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19hbGVydF9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChhbGVydF9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9hbGVydC9zcmMvbWFpbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBhbGVydF9zcmNfbWFpbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX2FsZXJ0X3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNmU1MzM0MWJfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNmU1MzM0MWJfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhbGVydF9zcmNfbWFpbl9hcGk7IH1cbmFsZXJ0X3NyY19tYWluX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvYWxlcnQvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGFsZXJ0X3NyY19tYWluID0gKGFsZXJ0X3NyY19tYWluX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYWxlcnQvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuYWxlcnRfc3JjX21haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChhbGVydF9zcmNfbWFpbi5uYW1lLCBhbGVydF9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19hbGVydCA9IChhbGVydF9zcmNfbWFpbik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL25vdGlmaWNhdGlvbi9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDNkYmMzZDgmXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQzZGJjM2Q4X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcInRyYW5zaXRpb25cIiwgeyBhdHRyczogeyBuYW1lOiBcImVsLW5vdGlmaWNhdGlvbi1mYWRlXCIgfSB9LCBbXG4gICAgX2MoXG4gICAgICBcImRpdlwiLFxuICAgICAge1xuICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgdmFsdWU6IF92bS52aXNpYmxlLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2aXNpYmxlXCJcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGNsYXNzOiBbXCJlbC1ub3RpZmljYXRpb25cIiwgX3ZtLmN1c3RvbUNsYXNzLCBfdm0uaG9yaXpvbnRhbENsYXNzXSxcbiAgICAgICAgc3R5bGU6IF92bS5wb3NpdGlvblN0eWxlLFxuICAgICAgICBhdHRyczogeyByb2xlOiBcImFsZXJ0XCIgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBtb3VzZWVudGVyOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgIF92bS5jbGVhclRpbWVyKClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vdXNlbGVhdmU6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgX3ZtLnN0YXJ0VGltZXIoKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xpY2s6IF92bS5jbGlja1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICBfdm0udHlwZSB8fCBfdm0uaWNvbkNsYXNzXG4gICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1ub3RpZmljYXRpb25fX2ljb25cIixcbiAgICAgICAgICAgICAgY2xhc3M6IFtfdm0udHlwZUNsYXNzLCBfdm0uaWNvbkNsYXNzXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLW5vdGlmaWNhdGlvbl9fZ3JvdXBcIixcbiAgICAgICAgICAgIGNsYXNzOiB7IFwiaXMtd2l0aC1pY29uXCI6IF92bS50eXBlQ2xhc3MgfHwgX3ZtLmljb25DbGFzcyB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcImgyXCIsIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtbm90aWZpY2F0aW9uX190aXRsZVwiLFxuICAgICAgICAgICAgICBkb21Qcm9wczogeyB0ZXh0Q29udGVudDogX3ZtLl9zKF92bS50aXRsZSkgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLW5vdGlmaWNhdGlvbl9fY29udGVudFwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfdm0uX3QoXCJkZWZhdWx0XCIsIFtcbiAgICAgICAgICAgICAgICAgICFfdm0uZGFuZ2Vyb3VzbHlVc2VIVE1MU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXCJwXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS5tZXNzYWdlKSldKVxuICAgICAgICAgICAgICAgICAgICA6IF9jKFwicFwiLCB7IGRvbVByb3BzOiB7IGlubmVySFRNTDogX3ZtLl9zKF92bS5tZXNzYWdlKSB9IH0pXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF92bS5zaG93Q2xvc2VcbiAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1ub3RpZmljYXRpb25fX2Nsb3NlQnRuIGVsLWljb24tY2xvc2VcIixcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmNsb3NlKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICBdXG4gICAgICAgIClcbiAgICAgIF1cbiAgICApXG4gIF0pXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQzZGJjM2Q4X3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNDNkYmMzZDhfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9ub3RpZmljYXRpb24vc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzZGJjM2Q4JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9ub3RpZmljYXRpb24vc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG52YXIgbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX3R5cGVNYXAgPSB7XG4gIHN1Y2Nlc3M6ICdzdWNjZXNzJyxcbiAgaW5mbzogJ2luZm8nLFxuICB3YXJuaW5nOiAnd2FybmluZycsXG4gIGVycm9yOiAnZXJyb3InXG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBub3RpZmljYXRpb25fc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgZHVyYXRpb246IDQ1MDAsXG4gICAgICB0eXBlOiAnJyxcbiAgICAgIHNob3dDbG9zZTogdHJ1ZSxcbiAgICAgIGN1c3RvbUNsYXNzOiAnJyxcbiAgICAgIGljb25DbGFzczogJycsXG4gICAgICBvbkNsb3NlOiBudWxsLFxuICAgICAgb25DbGljazogbnVsbCxcbiAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICB2ZXJ0aWNhbE9mZnNldDogMCxcbiAgICAgIHRpbWVyOiBudWxsLFxuICAgICAgZGFuZ2Vyb3VzbHlVc2VIVE1MU3RyaW5nOiBmYWxzZSxcbiAgICAgIHBvc2l0aW9uOiAndG9wLXJpZ2h0J1xuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIHR5cGVDbGFzczogZnVuY3Rpb24gdHlwZUNsYXNzKCkge1xuICAgICAgcmV0dXJuIHRoaXMudHlwZSAmJiBtYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfdHlwZU1hcFt0aGlzLnR5cGVdID8gJ2VsLWljb24tJyArIG1haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc190eXBlTWFwW3RoaXMudHlwZV0gOiAnJztcbiAgICB9LFxuICAgIGhvcml6b250YWxDbGFzczogZnVuY3Rpb24gaG9yaXpvbnRhbENsYXNzKCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9zaXRpb24uaW5kZXhPZigncmlnaHQnKSA+IC0xID8gJ3JpZ2h0JyA6ICdsZWZ0JztcbiAgICB9LFxuICAgIHZlcnRpY2FsUHJvcGVydHk6IGZ1bmN0aW9uIHZlcnRpY2FsUHJvcGVydHkoKSB7XG4gICAgICByZXR1cm4gKC9edG9wLS8udGVzdCh0aGlzLnBvc2l0aW9uKSA/ICd0b3AnIDogJ2JvdHRvbSdcbiAgICAgICk7XG4gICAgfSxcbiAgICBwb3NpdGlvblN0eWxlOiBmdW5jdGlvbiBwb3NpdGlvblN0eWxlKCkge1xuICAgICAgdmFyIF9yZWY7XG5cbiAgICAgIHJldHVybiBfcmVmID0ge30sIF9yZWZbdGhpcy52ZXJ0aWNhbFByb3BlcnR5XSA9IHRoaXMudmVydGljYWxPZmZzZXQgKyAncHgnLCBfcmVmO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGNsb3NlZDogZnVuY3Rpb24gY2xvc2VkKG5ld1ZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy4kZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMuZGVzdHJveUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZGVzdHJveUVsZW1lbnQ6IGZ1bmN0aW9uIGRlc3Ryb3lFbGVtZW50KCkge1xuICAgICAgdGhpcy4kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMuZGVzdHJveUVsZW1lbnQpO1xuICAgICAgdGhpcy4kZGVzdHJveSh0cnVlKTtcbiAgICAgIHRoaXMuJGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy4kZWwpO1xuICAgIH0sXG4gICAgY2xpY2s6IGZ1bmN0aW9uIGNsaWNrKCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLm9uQ2xpY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbG9zZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICBpZiAodHlwZW9mIHRoaXMub25DbG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsZWFyVGltZXI6IGZ1bmN0aW9uIGNsZWFyVGltZXIoKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgfSxcbiAgICBzdGFydFRpbWVyOiBmdW5jdGlvbiBzdGFydFRpbWVyKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuZHVyYXRpb24gPiAwKSB7XG4gICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIV90aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgX3RoaXMuY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuZHVyYXRpb24pO1xuICAgICAgfVxuICAgIH0sXG4gICAga2V5ZG93bjogZnVuY3Rpb24ga2V5ZG93bihlKSB7XG4gICAgICBpZiAoZS5rZXlDb2RlID09PSA0NiB8fCBlLmtleUNvZGUgPT09IDgpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7IC8vIGRldGVsZSDlj5bmtojlgJLorqHml7ZcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXlDb2RlID09PSAyNykge1xuICAgICAgICAvLyBlc2PlhbPpl63mtojmga9cbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWVyKCk7IC8vIOaBouWkjeWAkuiuoeaXtlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIGlmICh0aGlzLmR1cmF0aW9uID4gMCkge1xuICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIV90aGlzMi5jbG9zZWQpIHtcbiAgICAgICAgICBfdGhpczIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5kdXJhdGlvbik7XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleWRvd24pO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleWRvd24pO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbm90aWZpY2F0aW9uL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19ub3RpZmljYXRpb25fc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAobm90aWZpY2F0aW9uX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL25vdGlmaWNhdGlvbi9zcmMvbWFpbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBub3RpZmljYXRpb25fc3JjX21haW5fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19ub3RpZmljYXRpb25fc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF80M2RiYzNkOF9yZW5kZXIsXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF80M2RiYzNkOF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIG5vdGlmaWNhdGlvbl9zcmNfbWFpbl9hcGk7IH1cbm5vdGlmaWNhdGlvbl9zcmNfbWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL25vdGlmaWNhdGlvbi9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbm90aWZpY2F0aW9uX3NyY19tYWluID0gKG5vdGlmaWNhdGlvbl9zcmNfbWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL25vdGlmaWNhdGlvbi9zcmMvbWFpbi5qc1xuXG5cblxuXG5cbnZhciBOb3RpZmljYXRpb25Db25zdHJ1Y3RvciA9IGV4dGVybmFsX3Z1ZV9kZWZhdWx0LmEuZXh0ZW5kKG5vdGlmaWNhdGlvbl9zcmNfbWFpbik7XG5cbnZhciBzcmNfbWFpbl9pbnN0YW5jZSA9IHZvaWQgMDtcbnZhciBpbnN0YW5jZXMgPSBbXTtcbnZhciBzZWVkID0gMTtcblxudmFyIG1haW5fTm90aWZpY2F0aW9uID0gZnVuY3Rpb24gTm90aWZpY2F0aW9uKG9wdGlvbnMpIHtcbiAgaWYgKGV4dGVybmFsX3Z1ZV9kZWZhdWx0LmEucHJvdG90eXBlLiRpc1NlcnZlcikgcmV0dXJuO1xuICBvcHRpb25zID0gbWVyZ2VfZGVmYXVsdCgpKHt9LCBvcHRpb25zKTtcbiAgdmFyIHVzZXJPbkNsb3NlID0gb3B0aW9ucy5vbkNsb3NlO1xuICB2YXIgaWQgPSAnbm90aWZpY2F0aW9uXycgKyBzZWVkKys7XG4gIHZhciBwb3NpdGlvbiA9IG9wdGlvbnMucG9zaXRpb24gfHwgJ3RvcC1yaWdodCc7XG5cbiAgb3B0aW9ucy5vbkNsb3NlID0gZnVuY3Rpb24gKCkge1xuICAgIE5vdGlmaWNhdGlvbi5jbG9zZShpZCwgdXNlck9uQ2xvc2UpO1xuICB9O1xuXG4gIHNyY19tYWluX2luc3RhbmNlID0gbmV3IE5vdGlmaWNhdGlvbkNvbnN0cnVjdG9yKHtcbiAgICBkYXRhOiBvcHRpb25zXG4gIH0pO1xuXG4gIGlmIChPYmplY3QodmRvbV9bXCJpc1ZOb2RlXCJdKShvcHRpb25zLm1lc3NhZ2UpKSB7XG4gICAgc3JjX21haW5faW5zdGFuY2UuJHNsb3RzLmRlZmF1bHQgPSBbb3B0aW9ucy5tZXNzYWdlXTtcbiAgICBvcHRpb25zLm1lc3NhZ2UgPSAnUkVQTEFDRURfQllfVk5PREUnO1xuICB9XG4gIHNyY19tYWluX2luc3RhbmNlLmlkID0gaWQ7XG4gIHNyY19tYWluX2luc3RhbmNlLiRtb3VudCgpO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNyY19tYWluX2luc3RhbmNlLiRlbCk7XG4gIHNyY19tYWluX2luc3RhbmNlLnZpc2libGUgPSB0cnVlO1xuICBzcmNfbWFpbl9pbnN0YW5jZS5kb20gPSBzcmNfbWFpbl9pbnN0YW5jZS4kZWw7XG4gIHNyY19tYWluX2luc3RhbmNlLmRvbS5zdHlsZS56SW5kZXggPSBwb3B1cF9bXCJQb3B1cE1hbmFnZXJcIl0ubmV4dFpJbmRleCgpO1xuXG4gIHZhciB2ZXJ0aWNhbE9mZnNldCA9IG9wdGlvbnMub2Zmc2V0IHx8IDA7XG4gIGluc3RhbmNlcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5wb3NpdGlvbiA9PT0gcG9zaXRpb247XG4gIH0pLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2ZXJ0aWNhbE9mZnNldCArPSBpdGVtLiRlbC5vZmZzZXRIZWlnaHQgKyAxNjtcbiAgfSk7XG4gIHZlcnRpY2FsT2Zmc2V0ICs9IDE2O1xuICBzcmNfbWFpbl9pbnN0YW5jZS52ZXJ0aWNhbE9mZnNldCA9IHZlcnRpY2FsT2Zmc2V0O1xuICBpbnN0YW5jZXMucHVzaChzcmNfbWFpbl9pbnN0YW5jZSk7XG4gIHJldHVybiBzcmNfbWFpbl9pbnN0YW5jZTtcbn07XG5cblsnc3VjY2VzcycsICd3YXJuaW5nJywgJ2luZm8nLCAnZXJyb3InXS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gIG1haW5fTm90aWZpY2F0aW9uW3R5cGVdID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnIHx8IE9iamVjdCh2ZG9tX1tcImlzVk5vZGVcIl0pKG9wdGlvbnMpKSB7XG4gICAgICBvcHRpb25zID0ge1xuICAgICAgICBtZXNzYWdlOiBvcHRpb25zXG4gICAgICB9O1xuICAgIH1cbiAgICBvcHRpb25zLnR5cGUgPSB0eXBlO1xuICAgIHJldHVybiBtYWluX05vdGlmaWNhdGlvbihvcHRpb25zKTtcbiAgfTtcbn0pO1xuXG5tYWluX05vdGlmaWNhdGlvbi5jbG9zZSA9IGZ1bmN0aW9uIChpZCwgdXNlck9uQ2xvc2UpIHtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBsZW4gPSBpbnN0YW5jZXMubGVuZ3RoO1xuICB2YXIgaW5zdGFuY2UgPSBpbnN0YW5jZXMuZmlsdGVyKGZ1bmN0aW9uIChpbnN0YW5jZSwgaSkge1xuICAgIGlmIChpbnN0YW5jZS5pZCA9PT0gaWQpIHtcbiAgICAgIGluZGV4ID0gaTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pWzBdO1xuICBpZiAoIWluc3RhbmNlKSByZXR1cm47XG5cbiAgaWYgKHR5cGVvZiB1c2VyT25DbG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHVzZXJPbkNsb3NlKGluc3RhbmNlKTtcbiAgfVxuICBpbnN0YW5jZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICBpZiAobGVuIDw9IDEpIHJldHVybjtcbiAgdmFyIHBvc2l0aW9uID0gaW5zdGFuY2UucG9zaXRpb247XG4gIHZhciByZW1vdmVkSGVpZ2h0ID0gaW5zdGFuY2UuZG9tLm9mZnNldEhlaWdodDtcbiAgZm9yICh2YXIgaSA9IGluZGV4OyBpIDwgbGVuIC0gMTsgaSsrKSB7XG4gICAgaWYgKGluc3RhbmNlc1tpXS5wb3NpdGlvbiA9PT0gcG9zaXRpb24pIHtcbiAgICAgIGluc3RhbmNlc1tpXS5kb20uc3R5bGVbaW5zdGFuY2UudmVydGljYWxQcm9wZXJ0eV0gPSBwYXJzZUludChpbnN0YW5jZXNbaV0uZG9tLnN0eWxlW2luc3RhbmNlLnZlcnRpY2FsUHJvcGVydHldLCAxMCkgLSByZW1vdmVkSGVpZ2h0IC0gMTYgKyAncHgnO1xuICAgIH1cbiAgfVxufTtcblxubWFpbl9Ob3RpZmljYXRpb24uY2xvc2VBbGwgPSBmdW5jdGlvbiAoKSB7XG4gIGZvciAodmFyIGkgPSBpbnN0YW5jZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpbnN0YW5jZXNbaV0uY2xvc2UoKTtcbiAgfVxufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfbm90aWZpY2F0aW9uX3NyY19tYWluID0gKG1haW5fTm90aWZpY2F0aW9uKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbm90aWZpY2F0aW9uL2luZGV4LmpzXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG5vdGlmaWNhdGlvbiA9IChwYWNrYWdlc19ub3RpZmljYXRpb25fc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zbGlkZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyNzA4NjQ0JlxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8zMjcwODY0NF9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1zbGlkZXJcIixcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgIFwiaXMtdmVydGljYWxcIjogX3ZtLnZlcnRpY2FsLFxuICAgICAgICBcImVsLXNsaWRlci0td2l0aC1pbnB1dFwiOiBfdm0uc2hvd0lucHV0XG4gICAgICB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogXCJzbGlkZXJcIixcbiAgICAgICAgXCJhcmlhLXZhbHVlbWluXCI6IF92bS5taW4sXG4gICAgICAgIFwiYXJpYS12YWx1ZW1heFwiOiBfdm0ubWF4LFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogX3ZtLnZlcnRpY2FsID8gXCJ2ZXJ0aWNhbFwiIDogXCJob3Jpem9udGFsXCIsXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBfdm0uc2xpZGVyRGlzYWJsZWRcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF92bS5zaG93SW5wdXQgJiYgIV92bS5yYW5nZVxuICAgICAgICA/IF9jKFwiZWwtaW5wdXQtbnVtYmVyXCIsIHtcbiAgICAgICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc2xpZGVyX19pbnB1dFwiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgc3RlcDogX3ZtLnN0ZXAsXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uc2xpZGVyRGlzYWJsZWQsXG4gICAgICAgICAgICAgIGNvbnRyb2xzOiBfdm0uc2hvd0lucHV0Q29udHJvbHMsXG4gICAgICAgICAgICAgIG1pbjogX3ZtLm1pbixcbiAgICAgICAgICAgICAgbWF4OiBfdm0ubWF4LFxuICAgICAgICAgICAgICBkZWJvdW5jZTogX3ZtLmRlYm91bmNlLFxuICAgICAgICAgICAgICBzaXplOiBfdm0uaW5wdXRTaXplXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHsgY2hhbmdlOiBfdm0uZW1pdENoYW5nZSB9LFxuICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgX3ZtLmZpcnN0VmFsdWUgPSAkJHZcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJmaXJzdFZhbHVlXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICByZWY6IFwic2xpZGVyXCIsXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc2xpZGVyX19ydW53YXlcIixcbiAgICAgICAgICBjbGFzczogeyBcInNob3ctaW5wdXRcIjogX3ZtLnNob3dJbnB1dCwgZGlzYWJsZWQ6IF92bS5zbGlkZXJEaXNhYmxlZCB9LFxuICAgICAgICAgIHN0eWxlOiBfdm0ucnVud2F5U3R5bGUsXG4gICAgICAgICAgb246IHsgY2xpY2s6IF92bS5vblNsaWRlckNsaWNrIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtc2xpZGVyX19iYXJcIiwgc3R5bGU6IF92bS5iYXJTdHlsZSB9KSxcbiAgICAgICAgICBfYyhcInNsaWRlci1idXR0b25cIiwge1xuICAgICAgICAgICAgcmVmOiBcImJ1dHRvbjFcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHZlcnRpY2FsOiBfdm0udmVydGljYWwsXG4gICAgICAgICAgICAgIFwidG9vbHRpcC1jbGFzc1wiOiBfdm0udG9vbHRpcENsYXNzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgX3ZtLmZpcnN0VmFsdWUgPSAkJHZcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJmaXJzdFZhbHVlXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0ucmFuZ2VcbiAgICAgICAgICAgID8gX2MoXCJzbGlkZXItYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICByZWY6IFwiYnV0dG9uMlwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogX3ZtLnZlcnRpY2FsLFxuICAgICAgICAgICAgICAgICAgXCJ0b29sdGlwLWNsYXNzXCI6IF92bS50b29sdGlwQ2xhc3NcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlY29uZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uc2Vjb25kVmFsdWUgPSAkJHZcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlY29uZFZhbHVlXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fbChfdm0uc3RvcHMsIGZ1bmN0aW9uKGl0ZW0sIGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIF92bS5zaG93U3RvcHNcbiAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXNsaWRlcl9fc3RvcFwiLFxuICAgICAgICAgICAgICAgICAgc3R5bGU6IF92bS5nZXRTdG9wU3R5bGUoaXRlbSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLm1hcmtMaXN0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0ubWFya0xpc3QsIGZ1bmN0aW9uKGl0ZW0sIGtleSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXNsaWRlcl9fc3RvcCBlbC1zbGlkZXJfX21hcmtzLXN0b3BcIixcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogX3ZtLmdldFN0b3BTdHlsZShpdGVtLnBvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLXNsaWRlcl9fbWFya3NcIiB9LFxuICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5tYXJrTGlzdCwgZnVuY3Rpb24oaXRlbSwga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcInNsaWRlci1tYXJrZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBfdm0uZ2V0U3RvcFN0eWxlKGl0ZW0ucG9zaXRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IG1hcms6IGl0ZW0ubWFyayB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzMyNzA4NjQ0X3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMzI3MDg2NDRfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zbGlkZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyNzA4NjQ0JlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvaW5wdXQtbnVtYmVyXCJcbnZhciBpbnB1dF9udW1iZXJfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG52YXIgaW5wdXRfbnVtYmVyX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGlucHV0X251bWJlcl8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3NsaWRlci9zcmMvYnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNzJkMmFkMiZcbnZhciBidXR0b252dWVfdHlwZV90ZW1wbGF0ZV9pZF9lNzJkMmFkMl9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICByZWY6IFwiYnV0dG9uXCIsXG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1zbGlkZXJfX2J1dHRvbi13cmFwcGVyXCIsXG4gICAgICBjbGFzczogeyBob3ZlcjogX3ZtLmhvdmVyaW5nLCBkcmFnZ2luZzogX3ZtLmRyYWdnaW5nIH0sXG4gICAgICBzdHlsZTogX3ZtLndyYXBwZXJTdHlsZSxcbiAgICAgIGF0dHJzOiB7IHRhYmluZGV4OiBcIjBcIiB9LFxuICAgICAgb246IHtcbiAgICAgICAgbW91c2VlbnRlcjogX3ZtLmhhbmRsZU1vdXNlRW50ZXIsXG4gICAgICAgIG1vdXNlbGVhdmU6IF92bS5oYW5kbGVNb3VzZUxlYXZlLFxuICAgICAgICBtb3VzZWRvd246IF92bS5vbkJ1dHRvbkRvd24sXG4gICAgICAgIHRvdWNoc3RhcnQ6IF92bS5vbkJ1dHRvbkRvd24sXG4gICAgICAgIGZvY3VzOiBfdm0uaGFuZGxlTW91c2VFbnRlcixcbiAgICAgICAgYmx1cjogX3ZtLmhhbmRsZU1vdXNlTGVhdmUsXG4gICAgICAgIGtleWRvd246IFtcbiAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImxlZnRcIiwgMzcsICRldmVudC5rZXksIFtcbiAgICAgICAgICAgICAgICBcIkxlZnRcIixcbiAgICAgICAgICAgICAgICBcIkFycm93TGVmdFwiXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcImJ1dHRvblwiIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3ZtLm9uTGVmdEtleURvd24oJGV2ZW50KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJyaWdodFwiLCAzOSwgJGV2ZW50LmtleSwgW1xuICAgICAgICAgICAgICAgIFwiUmlnaHRcIixcbiAgICAgICAgICAgICAgICBcIkFycm93UmlnaHRcIlxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXCJidXR0b25cIiBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMikge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF92bS5vblJpZ2h0S2V5RG93bigkZXZlbnQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImRvd25cIiwgNDAsICRldmVudC5rZXksIFtcbiAgICAgICAgICAgICAgICBcIkRvd25cIixcbiAgICAgICAgICAgICAgICBcIkFycm93RG93blwiXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICByZXR1cm4gX3ZtLm9uTGVmdEtleURvd24oJGV2ZW50KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJ1cFwiLCAzOCwgJGV2ZW50LmtleSwgW1wiVXBcIiwgXCJBcnJvd1VwXCJdKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgcmV0dXJuIF92bS5vblJpZ2h0S2V5RG93bigkZXZlbnQpXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJlbC10b29sdGlwXCIsXG4gICAgICAgIHtcbiAgICAgICAgICByZWY6IFwidG9vbHRpcFwiLFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IFwidG9wXCIsXG4gICAgICAgICAgICBcInBvcHBlci1jbGFzc1wiOiBfdm0udG9vbHRpcENsYXNzLFxuICAgICAgICAgICAgZGlzYWJsZWQ6ICFfdm0uc2hvd1Rvb2x0aXBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcInNwYW5cIiwgeyBhdHRyczogeyBzbG90OiBcImNvbnRlbnRcIiB9LCBzbG90OiBcImNvbnRlbnRcIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5mb3JtYXRWYWx1ZSkpXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX2MoXCJkaXZcIiwge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc2xpZGVyX19idXR0b25cIixcbiAgICAgICAgICAgIGNsYXNzOiB7IGhvdmVyOiBfdm0uaG92ZXJpbmcsIGRyYWdnaW5nOiBfdm0uZHJhZ2dpbmcgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIGJ1dHRvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkX2U3MmQyYWQyX3N0YXRpY1JlbmRlckZucyA9IFtdXG5idXR0b252dWVfdHlwZV90ZW1wbGF0ZV9pZF9lNzJkMmFkMl9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NsaWRlci9zcmMvYnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNzJkMmFkMiZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2xpZGVyL3NyYy9idXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzbGlkZXJfc3JjX2J1dHRvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFNsaWRlckJ1dHRvbicsXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsVG9vbHRpcDogdG9vbHRpcF9kZWZhdWx0LmFcbiAgfSxcblxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICB2ZXJ0aWNhbDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB0b29sdGlwQ2xhc3M6IFN0cmluZ1xuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdmVyaW5nOiBmYWxzZSxcbiAgICAgIGRyYWdnaW5nOiBmYWxzZSxcbiAgICAgIGlzQ2xpY2s6IGZhbHNlLFxuICAgICAgc3RhcnRYOiAwLFxuICAgICAgY3VycmVudFg6IDAsXG4gICAgICBzdGFydFk6IDAsXG4gICAgICBjdXJyZW50WTogMCxcbiAgICAgIHN0YXJ0UG9zaXRpb246IDAsXG4gICAgICBuZXdQb3NpdGlvbjogbnVsbCxcbiAgICAgIG9sZFZhbHVlOiB0aGlzLnZhbHVlXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB7XG4gICAgZGlzYWJsZWQ6IGZ1bmN0aW9uIGRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC5zbGlkZXJEaXNhYmxlZDtcbiAgICB9LFxuICAgIG1heDogZnVuY3Rpb24gbWF4KCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC5tYXg7XG4gICAgfSxcbiAgICBtaW46IGZ1bmN0aW9uIG1pbigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQubWluO1xuICAgIH0sXG4gICAgc3RlcDogZnVuY3Rpb24gc3RlcCgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQuc3RlcDtcbiAgICB9LFxuICAgIHNob3dUb29sdGlwOiBmdW5jdGlvbiBzaG93VG9vbHRpcCgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQuc2hvd1Rvb2x0aXA7XG4gICAgfSxcbiAgICBwcmVjaXNpb246IGZ1bmN0aW9uIHByZWNpc2lvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQucHJlY2lzaW9uO1xuICAgIH0sXG4gICAgY3VycmVudFBvc2l0aW9uOiBmdW5jdGlvbiBjdXJyZW50UG9zaXRpb24oKSB7XG4gICAgICByZXR1cm4gKHRoaXMudmFsdWUgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbikgKiAxMDAgKyAnJSc7XG4gICAgfSxcbiAgICBlbmFibGVGb3JtYXQ6IGZ1bmN0aW9uIGVuYWJsZUZvcm1hdCgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQuZm9ybWF0VG9vbHRpcCBpbnN0YW5jZW9mIEZ1bmN0aW9uO1xuICAgIH0sXG4gICAgZm9ybWF0VmFsdWU6IGZ1bmN0aW9uIGZvcm1hdFZhbHVlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW5hYmxlRm9ybWF0ICYmIHRoaXMuJHBhcmVudC5mb3JtYXRUb29sdGlwKHRoaXMudmFsdWUpIHx8IHRoaXMudmFsdWU7XG4gICAgfSxcbiAgICB3cmFwcGVyU3R5bGU6IGZ1bmN0aW9uIHdyYXBwZXJTdHlsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnZlcnRpY2FsID8geyBib3R0b206IHRoaXMuY3VycmVudFBvc2l0aW9uIH0gOiB7IGxlZnQ6IHRoaXMuY3VycmVudFBvc2l0aW9uIH07XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgZHJhZ2dpbmc6IGZ1bmN0aW9uIGRyYWdnaW5nKHZhbCkge1xuICAgICAgdGhpcy4kcGFyZW50LmRyYWdnaW5nID0gdmFsO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZGlzcGxheVRvb2x0aXA6IGZ1bmN0aW9uIGRpc3BsYXlUb29sdGlwKCkge1xuICAgICAgdGhpcy4kcmVmcy50b29sdGlwICYmICh0aGlzLiRyZWZzLnRvb2x0aXAuc2hvd1BvcHBlciA9IHRydWUpO1xuICAgIH0sXG4gICAgaGlkZVRvb2x0aXA6IGZ1bmN0aW9uIGhpZGVUb29sdGlwKCkge1xuICAgICAgdGhpcy4kcmVmcy50b29sdGlwICYmICh0aGlzLiRyZWZzLnRvb2x0aXAuc2hvd1BvcHBlciA9IGZhbHNlKTtcbiAgICB9LFxuICAgIGhhbmRsZU1vdXNlRW50ZXI6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlRW50ZXIoKSB7XG4gICAgICB0aGlzLmhvdmVyaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGlzcGxheVRvb2x0aXAoKTtcbiAgICB9LFxuICAgIGhhbmRsZU1vdXNlTGVhdmU6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlTGVhdmUoKSB7XG4gICAgICB0aGlzLmhvdmVyaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgfSxcbiAgICBvbkJ1dHRvbkRvd246IGZ1bmN0aW9uIG9uQnV0dG9uRG93bihldmVudCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uRHJhZ2dpbmcpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMub25EcmFnZ2luZyk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25EcmFnRW5kKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMub25EcmFnRW5kKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIHRoaXMub25EcmFnRW5kKTtcbiAgICB9LFxuICAgIG9uTGVmdEtleURvd246IGZ1bmN0aW9uIG9uTGVmdEtleURvd24oKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgdGhpcy5uZXdQb3NpdGlvbiA9IHBhcnNlRmxvYXQodGhpcy5jdXJyZW50UG9zaXRpb24pIC0gdGhpcy5zdGVwIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pICogMTAwO1xuICAgICAgdGhpcy5zZXRQb3NpdGlvbih0aGlzLm5ld1Bvc2l0aW9uKTtcbiAgICAgIHRoaXMuJHBhcmVudC5lbWl0Q2hhbmdlKCk7XG4gICAgfSxcbiAgICBvblJpZ2h0S2V5RG93bjogZnVuY3Rpb24gb25SaWdodEtleURvd24oKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgdGhpcy5uZXdQb3NpdGlvbiA9IHBhcnNlRmxvYXQodGhpcy5jdXJyZW50UG9zaXRpb24pICsgdGhpcy5zdGVwIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pICogMTAwO1xuICAgICAgdGhpcy5zZXRQb3NpdGlvbih0aGlzLm5ld1Bvc2l0aW9uKTtcbiAgICAgIHRoaXMuJHBhcmVudC5lbWl0Q2hhbmdlKCk7XG4gICAgfSxcbiAgICBvbkRyYWdTdGFydDogZnVuY3Rpb24gb25EcmFnU3RhcnQoZXZlbnQpIHtcbiAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5pc0NsaWNrID0gdHJ1ZTtcbiAgICAgIGlmIChldmVudC50eXBlID09PSAndG91Y2hzdGFydCcpIHtcbiAgICAgICAgZXZlbnQuY2xpZW50WSA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTtcbiAgICAgICAgZXZlbnQuY2xpZW50WCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZlcnRpY2FsKSB7XG4gICAgICAgIHRoaXMuc3RhcnRZID0gZXZlbnQuY2xpZW50WTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHBhcnNlRmxvYXQodGhpcy5jdXJyZW50UG9zaXRpb24pO1xuICAgICAgdGhpcy5uZXdQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbjtcbiAgICB9LFxuICAgIG9uRHJhZ2dpbmc6IGZ1bmN0aW9uIG9uRHJhZ2dpbmcoZXZlbnQpIHtcbiAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgIHRoaXMuaXNDbGljayA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRpc3BsYXlUb29sdGlwKCk7XG4gICAgICAgIHRoaXMuJHBhcmVudC5yZXNldFNpemUoKTtcbiAgICAgICAgdmFyIGRpZmYgPSAwO1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNobW92ZScpIHtcbiAgICAgICAgICBldmVudC5jbGllbnRZID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRZO1xuICAgICAgICAgIGV2ZW50LmNsaWVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmVydGljYWwpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRZID0gZXZlbnQuY2xpZW50WTtcbiAgICAgICAgICBkaWZmID0gKHRoaXMuc3RhcnRZIC0gdGhpcy5jdXJyZW50WSkgLyB0aGlzLiRwYXJlbnQuc2xpZGVyU2l6ZSAqIDEwMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICAgICAgICBkaWZmID0gKHRoaXMuY3VycmVudFggLSB0aGlzLnN0YXJ0WCkgLyB0aGlzLiRwYXJlbnQuc2xpZGVyU2l6ZSAqIDEwMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5ld1Bvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uICsgZGlmZjtcbiAgICAgICAgdGhpcy5zZXRQb3NpdGlvbih0aGlzLm5ld1Bvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uRHJhZ0VuZDogZnVuY3Rpb24gb25EcmFnRW5kKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgLypcbiAgICAgICAgICog6Ziy5q2i5ZyoIG1vdXNldXAg5ZCO56uL5Y2z6Kem5Y+RIGNsaWNr77yM5a+86Ie05ruR5Z2X5pyJ5Yeg546H5Lqn55Sf5LiA5bCP5q615L2N56e7XG4gICAgICAgICAqIOS4jeS9v+eUqCBwcmV2ZW50RGVmYXVsdCDmmK/lm6DkuLogbW91c2V1cCDlkowgY2xpY2sg5rKh5pyJ5rOo5YaM5Zyo5ZCM5LiA5LiqIERPTSDkuIpcbiAgICAgICAgICovXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgICAgX3RoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICAgICAgICBpZiAoIV90aGlzLmlzQ2xpY2spIHtcbiAgICAgICAgICAgIF90aGlzLnNldFBvc2l0aW9uKF90aGlzLm5ld1Bvc2l0aW9uKTtcbiAgICAgICAgICAgIF90aGlzLiRwYXJlbnQuZW1pdENoYW5nZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uRHJhZ2dpbmcpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vbkRyYWdnaW5nKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uRHJhZ0VuZCk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMub25EcmFnRW5kKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgdGhpcy5vbkRyYWdFbmQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0UG9zaXRpb246IGZ1bmN0aW9uIHNldFBvc2l0aW9uKG5ld1Bvc2l0aW9uKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKG5ld1Bvc2l0aW9uID09PSBudWxsIHx8IGlzTmFOKG5ld1Bvc2l0aW9uKSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1Bvc2l0aW9uIDwgMCkge1xuICAgICAgICBuZXdQb3NpdGlvbiA9IDA7XG4gICAgICB9IGVsc2UgaWYgKG5ld1Bvc2l0aW9uID4gMTAwKSB7XG4gICAgICAgIG5ld1Bvc2l0aW9uID0gMTAwO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aFBlclN0ZXAgPSAxMDAgLyAoKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gdGhpcy5zdGVwKTtcbiAgICAgIHZhciBzdGVwcyA9IE1hdGgucm91bmQobmV3UG9zaXRpb24gLyBsZW5ndGhQZXJTdGVwKTtcbiAgICAgIHZhciB2YWx1ZSA9IHN0ZXBzICogbGVuZ3RoUGVyU3RlcCAqICh0aGlzLm1heCAtIHRoaXMubWluKSAqIDAuMDEgKyB0aGlzLm1pbjtcbiAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZS50b0ZpeGVkKHRoaXMucHJlY2lzaW9uKSk7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbHVlKTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLmRpc3BsYXlUb29sdGlwKCk7XG4gICAgICAgIF90aGlzMi4kcmVmcy50b29sdGlwICYmIF90aGlzMi4kcmVmcy50b29sdGlwLnVwZGF0ZVBvcHBlcigpO1xuICAgICAgfSk7XG4gICAgICBpZiAoIXRoaXMuZHJhZ2dpbmcgJiYgdGhpcy52YWx1ZSAhPT0gdGhpcy5vbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLm9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zbGlkZXIvc3JjL2J1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfc2xpZGVyX3NyY19idXR0b252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoc2xpZGVyX3NyY19idXR0b252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2xpZGVyL3NyYy9idXR0b24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgc3JjX2J1dHRvbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX3NsaWRlcl9zcmNfYnV0dG9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBidXR0b252dWVfdHlwZV90ZW1wbGF0ZV9pZF9lNzJkMmFkMl9yZW5kZXIsXG4gIGJ1dHRvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkX2U3MmQyYWQyX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgc3JjX2J1dHRvbl9hcGk7IH1cbnNyY19idXR0b25fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9zbGlkZXIvc3JjL2J1dHRvbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc2xpZGVyX3NyY19idXR0b24gPSAoc3JjX2J1dHRvbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NsaWRlci9zcmMvbWFya2VyLmpzXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYXJrZXIgPSAoe1xuICBuYW1lOiAnRWxNYXJrZXInLFxuXG4gIHByb3BzOiB7XG4gICAgbWFyazoge1xuICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgdmFyIGggPSBhcmd1bWVudHNbMF07XG5cbiAgICB2YXIgbGFiZWwgPSB0eXBlb2YgdGhpcy5tYXJrID09PSAnc3RyaW5nJyA/IHRoaXMubWFyayA6IHRoaXMubWFyay5sYWJlbDtcblxuICAgIHJldHVybiBoKFxuICAgICAgJ2RpdicsXG4gICAgICB7ICdjbGFzcyc6ICdlbC1zbGlkZXJfX21hcmtzLXRleHQnLCBzdHlsZTogdGhpcy5tYXJrLnN0eWxlIHx8IHt9IH0sXG4gICAgICBbbGFiZWxdXG4gICAgKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zbGlkZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc2xpZGVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsU2xpZGVyJyxcblxuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sXG5cbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBwcm9wczoge1xuICAgIG1pbjoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgbWF4OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAxMDBcbiAgICB9LFxuICAgIHN0ZXA6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDFcbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBBcnJheV0sXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBzaG93SW5wdXQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc2hvd0lucHV0Q29udHJvbHM6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBpbnB1dFNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdzbWFsbCdcbiAgICB9LFxuICAgIHNob3dTdG9wczoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBzaG93VG9vbHRpcDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGZvcm1hdFRvb2x0aXA6IEZ1bmN0aW9uLFxuICAgIGRpc2FibGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHJhbmdlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHZlcnRpY2FsOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGhlaWdodDoge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBkZWJvdW5jZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMzAwXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB0b29sdGlwQ2xhc3M6IFN0cmluZyxcbiAgICBtYXJrczogT2JqZWN0XG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsSW5wdXROdW1iZXI6IGlucHV0X251bWJlcl9kZWZhdWx0LmEsXG4gICAgU2xpZGVyQnV0dG9uOiBzbGlkZXJfc3JjX2J1dHRvbixcbiAgICBTbGlkZXJNYXJrZXI6IG1hcmtlclxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpcnN0VmFsdWU6IG51bGwsXG4gICAgICBzZWNvbmRWYWx1ZTogbnVsbCxcbiAgICAgIG9sZFZhbHVlOiBudWxsLFxuICAgICAgZHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgc2xpZGVyU2l6ZTogMVxuICAgIH07XG4gIH0sXG5cblxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSh2YWwsIG9sZFZhbCkge1xuICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcgfHwgQXJyYXkuaXNBcnJheSh2YWwpICYmIEFycmF5LmlzQXJyYXkob2xkVmFsKSAmJiB2YWwuZXZlcnkoZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpdGVtID09PSBvbGRWYWxbaW5kZXhdO1xuICAgICAgfSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRWYWx1ZXMoKTtcbiAgICB9LFxuICAgIGRyYWdnaW5nOiBmdW5jdGlvbiBkcmFnZ2luZyh2YWwpIHtcbiAgICAgIGlmICghdmFsKSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWVzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBmaXJzdFZhbHVlOiBmdW5jdGlvbiBmaXJzdFZhbHVlKHZhbCkge1xuICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBbdGhpcy5taW5WYWx1ZSwgdGhpcy5tYXhWYWx1ZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2Vjb25kVmFsdWU6IGZ1bmN0aW9uIHNlY29uZFZhbHVlKCkge1xuICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBbdGhpcy5taW5WYWx1ZSwgdGhpcy5tYXhWYWx1ZV0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgbWluOiBmdW5jdGlvbiBtaW4oKSB7XG4gICAgICB0aGlzLnNldFZhbHVlcygpO1xuICAgIH0sXG4gICAgbWF4OiBmdW5jdGlvbiBtYXgoKSB7XG4gICAgICB0aGlzLnNldFZhbHVlcygpO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgdmFsdWVDaGFuZ2VkOiBmdW5jdGlvbiB2YWx1ZUNoYW5nZWQoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgICByZXR1cm4gIVt0aGlzLm1pblZhbHVlLCB0aGlzLm1heFZhbHVlXS5ldmVyeShmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gaXRlbSA9PT0gX3RoaXMub2xkVmFsdWVbaW5kZXhdO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICE9PSB0aGlzLm9sZFZhbHVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0VmFsdWVzOiBmdW5jdGlvbiBzZXRWYWx1ZXMoKSB7XG4gICAgICBpZiAodGhpcy5taW4gPiB0aGlzLm1heCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdbRWxlbWVudCBFcnJvcl1bU2xpZGVyXW1pbiBzaG91bGQgbm90IGJlIGdyZWF0ZXIgdGhhbiBtYXguJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciB2YWwgPSB0aGlzLnZhbHVlO1xuICAgICAgaWYgKHRoaXMucmFuZ2UgJiYgQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGlmICh2YWxbMV0gPCB0aGlzLm1pbikge1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgW3RoaXMubWluLCB0aGlzLm1pbl0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbFswXSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBbdGhpcy5tYXgsIHRoaXMubWF4XSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsWzBdIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIFt0aGlzLm1pbiwgdmFsWzFdXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsWzFdID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIFt2YWxbMF0sIHRoaXMubWF4XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5maXJzdFZhbHVlID0gdmFsWzBdO1xuICAgICAgICAgIHRoaXMuc2Vjb25kVmFsdWUgPSB2YWxbMV07XG4gICAgICAgICAgaWYgKHRoaXMudmFsdWVDaGFuZ2VkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsRm9ybUl0ZW0nLCAnZWwuZm9ybS5jaGFuZ2UnLCBbdGhpcy5taW5WYWx1ZSwgdGhpcy5tYXhWYWx1ZV0pO1xuICAgICAgICAgICAgdGhpcy5vbGRWYWx1ZSA9IHZhbC5zbGljZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdGhpcy5yYW5nZSAmJiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsKSkge1xuICAgICAgICBpZiAodmFsIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMubWluKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWwgPiB0aGlzLm1heCkge1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdGhpcy5tYXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9IHZhbDtcbiAgICAgICAgICBpZiAodGhpcy52YWx1ZUNoYW5nZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmNoYW5nZScsIHZhbCk7XG4gICAgICAgICAgICB0aGlzLm9sZFZhbHVlID0gdmFsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgc2V0UG9zaXRpb246IGZ1bmN0aW9uIHNldFBvc2l0aW9uKHBlcmNlbnQpIHtcbiAgICAgIHZhciB0YXJnZXRWYWx1ZSA9IHRoaXMubWluICsgcGVyY2VudCAqICh0aGlzLm1heCAtIHRoaXMubWluKSAvIDEwMDtcbiAgICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgICB0aGlzLiRyZWZzLmJ1dHRvbjEuc2V0UG9zaXRpb24ocGVyY2VudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBidXR0b24gPSB2b2lkIDA7XG4gICAgICBpZiAoTWF0aC5hYnModGhpcy5taW5WYWx1ZSAtIHRhcmdldFZhbHVlKSA8IE1hdGguYWJzKHRoaXMubWF4VmFsdWUgLSB0YXJnZXRWYWx1ZSkpIHtcbiAgICAgICAgYnV0dG9uID0gdGhpcy5maXJzdFZhbHVlIDwgdGhpcy5zZWNvbmRWYWx1ZSA/ICdidXR0b24xJyA6ICdidXR0b24yJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1dHRvbiA9IHRoaXMuZmlyc3RWYWx1ZSA+IHRoaXMuc2Vjb25kVmFsdWUgPyAnYnV0dG9uMScgOiAnYnV0dG9uMic7XG4gICAgICB9XG4gICAgICB0aGlzLiRyZWZzW2J1dHRvbl0uc2V0UG9zaXRpb24ocGVyY2VudCk7XG4gICAgfSxcbiAgICBvblNsaWRlckNsaWNrOiBmdW5jdGlvbiBvblNsaWRlckNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAodGhpcy5zbGlkZXJEaXNhYmxlZCB8fCB0aGlzLmRyYWdnaW5nKSByZXR1cm47XG4gICAgICB0aGlzLnJlc2V0U2l6ZSgpO1xuICAgICAgaWYgKHRoaXMudmVydGljYWwpIHtcbiAgICAgICAgdmFyIHNsaWRlck9mZnNldEJvdHRvbSA9IHRoaXMuJHJlZnMuc2xpZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtcbiAgICAgICAgdGhpcy5zZXRQb3NpdGlvbigoc2xpZGVyT2Zmc2V0Qm90dG9tIC0gZXZlbnQuY2xpZW50WSkgLyB0aGlzLnNsaWRlclNpemUgKiAxMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNsaWRlck9mZnNldExlZnQgPSB0aGlzLiRyZWZzLnNsaWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKChldmVudC5jbGllbnRYIC0gc2xpZGVyT2Zmc2V0TGVmdCkgLyB0aGlzLnNsaWRlclNpemUgKiAxMDApO1xuICAgICAgfVxuICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfSxcbiAgICByZXNldFNpemU6IGZ1bmN0aW9uIHJlc2V0U2l6ZSgpIHtcbiAgICAgIGlmICh0aGlzLiRyZWZzLnNsaWRlcikge1xuICAgICAgICB0aGlzLnNsaWRlclNpemUgPSB0aGlzLiRyZWZzLnNsaWRlclsnY2xpZW50JyArICh0aGlzLnZlcnRpY2FsID8gJ0hlaWdodCcgOiAnV2lkdGgnKV07XG4gICAgICB9XG4gICAgfSxcbiAgICBlbWl0Q2hhbmdlOiBmdW5jdGlvbiBlbWl0Q2hhbmdlKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLiRlbWl0KCdjaGFuZ2UnLCBfdGhpczIucmFuZ2UgPyBbX3RoaXMyLm1pblZhbHVlLCBfdGhpczIubWF4VmFsdWVdIDogX3RoaXMyLnZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0U3RvcFN0eWxlOiBmdW5jdGlvbiBnZXRTdG9wU3R5bGUocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnZlcnRpY2FsID8geyAnYm90dG9tJzogcG9zaXRpb24gKyAnJScgfSA6IHsgJ2xlZnQnOiBwb3NpdGlvbiArICclJyB9O1xuICAgIH1cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIHN0b3BzOiBmdW5jdGlvbiBzdG9wcygpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMuc2hvd1N0b3BzIHx8IHRoaXMubWluID4gdGhpcy5tYXgpIHJldHVybiBbXTtcbiAgICAgIGlmICh0aGlzLnN0ZXAgPT09IDApIHtcbiAgICAgICAgIGZhbHNlICYmIGZhbHNlO1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgc3RvcENvdW50ID0gKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gdGhpcy5zdGVwO1xuICAgICAgdmFyIHN0ZXBXaWR0aCA9IDEwMCAqIHRoaXMuc3RlcCAvICh0aGlzLm1heCAtIHRoaXMubWluKTtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc3RvcENvdW50OyBpKyspIHtcbiAgICAgICAgcmVzdWx0LnB1c2goaSAqIHN0ZXBXaWR0aCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAoc3RlcCkge1xuICAgICAgICAgIHJldHVybiBzdGVwIDwgMTAwICogKF90aGlzMy5taW5WYWx1ZSAtIF90aGlzMy5taW4pIC8gKF90aGlzMy5tYXggLSBfdGhpczMubWluKSB8fCBzdGVwID4gMTAwICogKF90aGlzMy5tYXhWYWx1ZSAtIF90aGlzMy5taW4pIC8gKF90aGlzMy5tYXggLSBfdGhpczMubWluKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAoc3RlcCkge1xuICAgICAgICAgIHJldHVybiBzdGVwID4gMTAwICogKF90aGlzMy5maXJzdFZhbHVlIC0gX3RoaXMzLm1pbikgLyAoX3RoaXMzLm1heCAtIF90aGlzMy5taW4pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1hcmtMaXN0OiBmdW5jdGlvbiBtYXJrTGlzdCgpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMubWFya3MpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuXG4gICAgICB2YXIgbWFya3NLZXlzID0gT2JqZWN0LmtleXModGhpcy5tYXJrcyk7XG4gICAgICByZXR1cm4gbWFya3NLZXlzLm1hcChwYXJzZUZsb2F0KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIC0gYjtcbiAgICAgIH0pLmZpbHRlcihmdW5jdGlvbiAocG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvaW50IDw9IF90aGlzNC5tYXggJiYgcG9pbnQgPj0gX3RoaXM0Lm1pbjtcbiAgICAgIH0pLm1hcChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwb2ludDogcG9pbnQsXG4gICAgICAgICAgcG9zaXRpb246IChwb2ludCAtIF90aGlzNC5taW4pICogMTAwIC8gKF90aGlzNC5tYXggLSBfdGhpczQubWluKSxcbiAgICAgICAgICBtYXJrOiBfdGhpczQubWFya3NbcG9pbnRdXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9LFxuICAgIG1pblZhbHVlOiBmdW5jdGlvbiBtaW5WYWx1ZSgpIHtcbiAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmZpcnN0VmFsdWUsIHRoaXMuc2Vjb25kVmFsdWUpO1xuICAgIH0sXG4gICAgbWF4VmFsdWU6IGZ1bmN0aW9uIG1heFZhbHVlKCkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuZmlyc3RWYWx1ZSwgdGhpcy5zZWNvbmRWYWx1ZSk7XG4gICAgfSxcbiAgICBiYXJTaXplOiBmdW5jdGlvbiBiYXJTaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmFuZ2UgPyAxMDAgKiAodGhpcy5tYXhWYWx1ZSAtIHRoaXMubWluVmFsdWUpIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pICsgJyUnIDogMTAwICogKHRoaXMuZmlyc3RWYWx1ZSAtIHRoaXMubWluKSAvICh0aGlzLm1heCAtIHRoaXMubWluKSArICclJztcbiAgICB9LFxuICAgIGJhclN0YXJ0OiBmdW5jdGlvbiBiYXJTdGFydCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJhbmdlID8gMTAwICogKHRoaXMubWluVmFsdWUgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbikgKyAnJScgOiAnMCUnO1xuICAgIH0sXG4gICAgcHJlY2lzaW9uOiBmdW5jdGlvbiBwcmVjaXNpb24oKSB7XG4gICAgICB2YXIgcHJlY2lzaW9ucyA9IFt0aGlzLm1pbiwgdGhpcy5tYXgsIHRoaXMuc3RlcF0ubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHZhciBkZWNpbWFsID0gKCcnICsgaXRlbSkuc3BsaXQoJy4nKVsxXTtcbiAgICAgICAgcmV0dXJuIGRlY2ltYWwgPyBkZWNpbWFsLmxlbmd0aCA6IDA7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShudWxsLCBwcmVjaXNpb25zKTtcbiAgICB9LFxuICAgIHJ1bndheVN0eWxlOiBmdW5jdGlvbiBydW53YXlTdHlsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnZlcnRpY2FsID8geyBoZWlnaHQ6IHRoaXMuaGVpZ2h0IH0gOiB7fTtcbiAgICB9LFxuICAgIGJhclN0eWxlOiBmdW5jdGlvbiBiYXJTdHlsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnZlcnRpY2FsID8ge1xuICAgICAgICBoZWlnaHQ6IHRoaXMuYmFyU2l6ZSxcbiAgICAgICAgYm90dG9tOiB0aGlzLmJhclN0YXJ0XG4gICAgICB9IDoge1xuICAgICAgICB3aWR0aDogdGhpcy5iYXJTaXplLFxuICAgICAgICBsZWZ0OiB0aGlzLmJhclN0YXJ0XG4gICAgICB9O1xuICAgIH0sXG4gICAgc2xpZGVyRGlzYWJsZWQ6IGZ1bmN0aW9uIHNsaWRlckRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZDtcbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgdmFsdWV0ZXh0ID0gdm9pZCAwO1xuICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICB0aGlzLmZpcnN0VmFsdWUgPSBNYXRoLm1heCh0aGlzLm1pbiwgdGhpcy52YWx1ZVswXSk7XG4gICAgICAgIHRoaXMuc2Vjb25kVmFsdWUgPSBNYXRoLm1pbih0aGlzLm1heCwgdGhpcy52YWx1ZVsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpcnN0VmFsdWUgPSB0aGlzLm1pbjtcbiAgICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgfVxuICAgICAgdGhpcy5vbGRWYWx1ZSA9IFt0aGlzLmZpcnN0VmFsdWUsIHRoaXMuc2Vjb25kVmFsdWVdO1xuICAgICAgdmFsdWV0ZXh0ID0gdGhpcy5maXJzdFZhbHVlICsgJy0nICsgdGhpcy5zZWNvbmRWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlICE9PSAnbnVtYmVyJyB8fCBpc05hTih0aGlzLnZhbHVlKSkge1xuICAgICAgICB0aGlzLmZpcnN0VmFsdWUgPSB0aGlzLm1pbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9IE1hdGgubWluKHRoaXMubWF4LCBNYXRoLm1heCh0aGlzLm1pbiwgdGhpcy52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMuZmlyc3RWYWx1ZTtcbiAgICAgIHZhbHVldGV4dCA9IHRoaXMuZmlyc3RWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy4kZWwuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVldGV4dCcsIHZhbHVldGV4dCk7XG5cbiAgICAvLyBsYWJlbCBzY3JlZW4gcmVhZGVyXG4gICAgdGhpcy4kZWwuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgOiAnc2xpZGVyIGJldHdlZW4gJyArIHRoaXMubWluICsgJyBhbmQgJyArIHRoaXMubWF4KTtcblxuICAgIHRoaXMucmVzZXRTaXplKCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzZXRTaXplKTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNldFNpemUpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2xpZGVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19zbGlkZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoc2xpZGVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NsaWRlci9zcmMvbWFpbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBzbGlkZXJfc3JjX21haW5fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19zbGlkZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8zMjcwODY0NF9yZW5kZXIsXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8zMjcwODY0NF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHNsaWRlcl9zcmNfbWFpbl9hcGk7IH1cbnNsaWRlcl9zcmNfbWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3NsaWRlci9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc2xpZGVyX3NyY19tYWluID0gKHNsaWRlcl9zcmNfbWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NsaWRlci9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zbGlkZXJfc3JjX21haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzbGlkZXJfc3JjX21haW4ubmFtZSwgc2xpZGVyX3NyY19tYWluKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNsaWRlciA9IChzbGlkZXJfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9sb2FkaW5nL3NyYy9sb2FkaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lZWUwYTdhYyZcbnZhciBsb2FkaW5ndnVlX3R5cGVfdGVtcGxhdGVfaWRfZWVlMGE3YWNfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwidHJhbnNpdGlvblwiLFxuICAgIHtcbiAgICAgIGF0dHJzOiB7IG5hbWU6IFwiZWwtbG9hZGluZy1mYWRlXCIgfSxcbiAgICAgIG9uOiB7IFwiYWZ0ZXItbGVhdmVcIjogX3ZtLmhhbmRsZUFmdGVyTGVhdmUgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZpc2libGUsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IFwidmlzaWJsZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1sb2FkaW5nLW1hc2tcIixcbiAgICAgICAgICBjbGFzczogW192bS5jdXN0b21DbGFzcywgeyBcImlzLWZ1bGxzY3JlZW5cIjogX3ZtLmZ1bGxzY3JlZW4gfV0sXG4gICAgICAgICAgc3R5bGU6IHsgYmFja2dyb3VuZENvbG9yOiBfdm0uYmFja2dyb3VuZCB8fCBcIlwiIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtbG9hZGluZy1zcGlubmVyXCIgfSwgW1xuICAgICAgICAgICAgIV92bS5zcGlubmVyXG4gICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICBcInN2Z1wiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjaXJjdWxhclwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB2aWV3Qm94OiBcIjI1IDI1IDUwIDUwXCIgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJjaXJjbGVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInBhdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBjeDogXCI1MFwiLCBjeTogXCI1MFwiLCByOiBcIjIwXCIsIGZpbGw6IFwibm9uZVwiIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogX2MoXCJpXCIsIHsgY2xhc3M6IF92bS5zcGlubmVyIH0pLFxuICAgICAgICAgICAgX3ZtLnRleHRcbiAgICAgICAgICAgICAgPyBfYyhcInBcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1sb2FkaW5nLXRleHRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50ZXh0KSlcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIGxvYWRpbmd2dWVfdHlwZV90ZW1wbGF0ZV9pZF9lZWUwYTdhY19zdGF0aWNSZW5kZXJGbnMgPSBbXVxubG9hZGluZ3Z1ZV90eXBlX3RlbXBsYXRlX2lkX2VlZTBhN2FjX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbG9hZGluZy9zcmMvbG9hZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWVlMGE3YWMmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2xvYWRpbmcvc3JjL2xvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBsb2FkaW5ndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogbnVsbCxcbiAgICAgIHNwaW5uZXI6IG51bGwsXG4gICAgICBiYWNrZ3JvdW5kOiBudWxsLFxuICAgICAgZnVsbHNjcmVlbjogdHJ1ZSxcbiAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgY3VzdG9tQ2xhc3M6ICcnXG4gICAgfTtcbiAgfSxcblxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVBZnRlckxlYXZlOiBmdW5jdGlvbiBoYW5kbGVBZnRlckxlYXZlKCkge1xuICAgICAgdGhpcy4kZW1pdCgnYWZ0ZXItbGVhdmUnKTtcbiAgICB9LFxuICAgIHNldFRleHQ6IGZ1bmN0aW9uIHNldFRleHQodGV4dCkge1xuICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9sb2FkaW5nL3NyYy9sb2FkaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfbG9hZGluZ3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChsb2FkaW5ndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2xvYWRpbmcvc3JjL2xvYWRpbmcudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgbG9hZGluZ19jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19sb2FkaW5ndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBsb2FkaW5ndnVlX3R5cGVfdGVtcGxhdGVfaWRfZWVlMGE3YWNfcmVuZGVyLFxuICBsb2FkaW5ndnVlX3R5cGVfdGVtcGxhdGVfaWRfZWVlMGE3YWNfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBsb2FkaW5nX2FwaTsgfVxubG9hZGluZ19jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2xvYWRpbmcvc3JjL2xvYWRpbmcudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGxvYWRpbmcgPSAobG9hZGluZ19jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvYWZ0ZXItbGVhdmVcIlxudmFyIGFmdGVyX2xlYXZlXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpO1xudmFyIGFmdGVyX2xlYXZlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGFmdGVyX2xlYXZlXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbG9hZGluZy9zcmMvZGlyZWN0aXZlLmpzXG5cblxuXG5cblxudmFyIE1hc2sgPSBleHRlcm5hbF92dWVfZGVmYXVsdC5hLmV4dGVuZChsb2FkaW5nKTtcblxudmFyIGxvYWRpbmdEaXJlY3RpdmUgPSB7fTtcbmxvYWRpbmdEaXJlY3RpdmUuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgaWYgKFZ1ZS5wcm90b3R5cGUuJGlzU2VydmVyKSByZXR1cm47XG4gIHZhciB0b2dnbGVMb2FkaW5nID0gZnVuY3Rpb24gdG9nZ2xlTG9hZGluZyhlbCwgYmluZGluZykge1xuICAgIGlmIChiaW5kaW5nLnZhbHVlKSB7XG4gICAgICBWdWUubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYmluZGluZy5tb2RpZmllcnMuZnVsbHNjcmVlbikge1xuICAgICAgICAgIGVsLm9yaWdpbmFsUG9zaXRpb24gPSBPYmplY3QoZG9tX1tcImdldFN0eWxlXCJdKShkb2N1bWVudC5ib2R5LCAncG9zaXRpb24nKTtcbiAgICAgICAgICBlbC5vcmlnaW5hbE92ZXJmbG93ID0gT2JqZWN0KGRvbV9bXCJnZXRTdHlsZVwiXSkoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93Jyk7XG4gICAgICAgICAgZWwubWFza1N0eWxlLnpJbmRleCA9IHBvcHVwX1tcIlBvcHVwTWFuYWdlclwiXS5uZXh0WkluZGV4KCk7XG5cbiAgICAgICAgICBPYmplY3QoZG9tX1tcImFkZENsYXNzXCJdKShlbC5tYXNrLCAnaXMtZnVsbHNjcmVlbicpO1xuICAgICAgICAgIGluc2VydERvbShkb2N1bWVudC5ib2R5LCBlbCwgYmluZGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkoZWwubWFzaywgJ2lzLWZ1bGxzY3JlZW4nKTtcblxuICAgICAgICAgIGlmIChiaW5kaW5nLm1vZGlmaWVycy5ib2R5KSB7XG4gICAgICAgICAgICBlbC5vcmlnaW5hbFBvc2l0aW9uID0gT2JqZWN0KGRvbV9bXCJnZXRTdHlsZVwiXSkoZG9jdW1lbnQuYm9keSwgJ3Bvc2l0aW9uJyk7XG5cbiAgICAgICAgICAgIFsndG9wJywgJ2xlZnQnXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICB2YXIgc2Nyb2xsID0gcHJvcGVydHkgPT09ICd0b3AnID8gJ3Njcm9sbFRvcCcgOiAnc2Nyb2xsTGVmdCc7XG4gICAgICAgICAgICAgIGVsLm1hc2tTdHlsZVtwcm9wZXJ0eV0gPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtwcm9wZXJ0eV0gKyBkb2N1bWVudC5ib2R5W3Njcm9sbF0gKyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbc2Nyb2xsXSAtIHBhcnNlSW50KE9iamVjdChkb21fW1wiZ2V0U3R5bGVcIl0pKGRvY3VtZW50LmJvZHksICdtYXJnaW4tJyArIHByb3BlcnR5KSwgMTApICsgJ3B4JztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgWydoZWlnaHQnLCAnd2lkdGgnXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICBlbC5tYXNrU3R5bGVbcHJvcGVydHldID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbcHJvcGVydHldICsgJ3B4JztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpbnNlcnREb20oZG9jdW1lbnQuYm9keSwgZWwsIGJpbmRpbmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbC5vcmlnaW5hbFBvc2l0aW9uID0gT2JqZWN0KGRvbV9bXCJnZXRTdHlsZVwiXSkoZWwsICdwb3NpdGlvbicpO1xuICAgICAgICAgICAgaW5zZXJ0RG9tKGVsLCBlbCwgYmluZGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWZ0ZXJfbGVhdmVfZGVmYXVsdCgpKGVsLmluc3RhbmNlLCBmdW5jdGlvbiAoXykge1xuICAgICAgICBpZiAoIWVsLmluc3RhbmNlLmhpZGluZykgcmV0dXJuO1xuICAgICAgICBlbC5kb21WaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHZhciB0YXJnZXQgPSBiaW5kaW5nLm1vZGlmaWVycy5mdWxsc2NyZWVuIHx8IGJpbmRpbmcubW9kaWZpZXJzLmJvZHkgPyBkb2N1bWVudC5ib2R5IDogZWw7XG4gICAgICAgIE9iamVjdChkb21fW1wicmVtb3ZlQ2xhc3NcIl0pKHRhcmdldCwgJ2VsLWxvYWRpbmctcGFyZW50LS1yZWxhdGl2ZScpO1xuICAgICAgICBPYmplY3QoZG9tX1tcInJlbW92ZUNsYXNzXCJdKSh0YXJnZXQsICdlbC1sb2FkaW5nLXBhcmVudC0taGlkZGVuJyk7XG4gICAgICAgIGVsLmluc3RhbmNlLmhpZGluZyA9IGZhbHNlO1xuICAgICAgfSwgMzAwLCB0cnVlKTtcbiAgICAgIGVsLmluc3RhbmNlLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIGVsLmluc3RhbmNlLmhpZGluZyA9IHRydWU7XG4gICAgfVxuICB9O1xuICB2YXIgaW5zZXJ0RG9tID0gZnVuY3Rpb24gaW5zZXJ0RG9tKHBhcmVudCwgZWwsIGJpbmRpbmcpIHtcbiAgICBpZiAoIWVsLmRvbVZpc2libGUgJiYgT2JqZWN0KGRvbV9bXCJnZXRTdHlsZVwiXSkoZWwsICdkaXNwbGF5JykgIT09ICdub25lJyAmJiBPYmplY3QoZG9tX1tcImdldFN0eWxlXCJdKShlbCwgJ3Zpc2liaWxpdHknKSAhPT0gJ2hpZGRlbicpIHtcbiAgICAgIE9iamVjdC5rZXlzKGVsLm1hc2tTdHlsZSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgICAgZWwubWFzay5zdHlsZVtwcm9wZXJ0eV0gPSBlbC5tYXNrU3R5bGVbcHJvcGVydHldO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChlbC5vcmlnaW5hbFBvc2l0aW9uICE9PSAnYWJzb2x1dGUnICYmIGVsLm9yaWdpbmFsUG9zaXRpb24gIT09ICdmaXhlZCcgJiYgZWwub3JpZ2luYWxQb3NpdGlvbiAhPT0gJ3N0aWNreScpIHtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJhZGRDbGFzc1wiXSkocGFyZW50LCAnZWwtbG9hZGluZy1wYXJlbnQtLXJlbGF0aXZlJyk7XG4gICAgICB9XG4gICAgICBpZiAoYmluZGluZy5tb2RpZmllcnMuZnVsbHNjcmVlbiAmJiBiaW5kaW5nLm1vZGlmaWVycy5sb2NrKSB7XG4gICAgICAgIE9iamVjdChkb21fW1wiYWRkQ2xhc3NcIl0pKHBhcmVudCwgJ2VsLWxvYWRpbmctcGFyZW50LS1oaWRkZW4nKTtcbiAgICAgIH1cbiAgICAgIGVsLmRvbVZpc2libGUgPSB0cnVlO1xuXG4gICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWwubWFzayk7XG4gICAgICBWdWUubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoZWwuaW5zdGFuY2UuaGlkaW5nKSB7XG4gICAgICAgICAgZWwuaW5zdGFuY2UuJGVtaXQoJ2FmdGVyLWxlYXZlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWwuaW5zdGFuY2UudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZWwuZG9tSW5zZXJ0ZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZWwuZG9tVmlzaWJsZSAmJiBlbC5pbnN0YW5jZS5oaWRpbmcgPT09IHRydWUpIHtcbiAgICAgIGVsLmluc3RhbmNlLnZpc2libGUgPSB0cnVlO1xuICAgICAgZWwuaW5zdGFuY2UuaGlkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIFZ1ZS5kaXJlY3RpdmUoJ2xvYWRpbmcnLCB7XG4gICAgYmluZDogZnVuY3Rpb24gYmluZChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICAgIHZhciB0ZXh0RXhyID0gZWwuZ2V0QXR0cmlidXRlKCdlbGVtZW50LWxvYWRpbmctdGV4dCcpO1xuICAgICAgdmFyIHNwaW5uZXJFeHIgPSBlbC5nZXRBdHRyaWJ1dGUoJ2VsZW1lbnQtbG9hZGluZy1zcGlubmVyJyk7XG4gICAgICB2YXIgYmFja2dyb3VuZEV4ciA9IGVsLmdldEF0dHJpYnV0ZSgnZWxlbWVudC1sb2FkaW5nLWJhY2tncm91bmQnKTtcbiAgICAgIHZhciBjdXN0b21DbGFzc0V4ciA9IGVsLmdldEF0dHJpYnV0ZSgnZWxlbWVudC1sb2FkaW5nLWN1c3RvbS1jbGFzcycpO1xuICAgICAgdmFyIHZtID0gdm5vZGUuY29udGV4dDtcbiAgICAgIHZhciBtYXNrID0gbmV3IE1hc2soe1xuICAgICAgICBlbDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB0ZXh0OiB2bSAmJiB2bVt0ZXh0RXhyXSB8fCB0ZXh0RXhyLFxuICAgICAgICAgIHNwaW5uZXI6IHZtICYmIHZtW3NwaW5uZXJFeHJdIHx8IHNwaW5uZXJFeHIsXG4gICAgICAgICAgYmFja2dyb3VuZDogdm0gJiYgdm1bYmFja2dyb3VuZEV4cl0gfHwgYmFja2dyb3VuZEV4cixcbiAgICAgICAgICBjdXN0b21DbGFzczogdm0gJiYgdm1bY3VzdG9tQ2xhc3NFeHJdIHx8IGN1c3RvbUNsYXNzRXhyLFxuICAgICAgICAgIGZ1bGxzY3JlZW46ICEhYmluZGluZy5tb2RpZmllcnMuZnVsbHNjcmVlblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGVsLmluc3RhbmNlID0gbWFzaztcbiAgICAgIGVsLm1hc2sgPSBtYXNrLiRlbDtcbiAgICAgIGVsLm1hc2tTdHlsZSA9IHt9O1xuXG4gICAgICBiaW5kaW5nLnZhbHVlICYmIHRvZ2dsZUxvYWRpbmcoZWwsIGJpbmRpbmcpO1xuICAgIH0sXG5cbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShlbCwgYmluZGluZykge1xuICAgICAgZWwuaW5zdGFuY2Uuc2V0VGV4dChlbC5nZXRBdHRyaWJ1dGUoJ2VsZW1lbnQtbG9hZGluZy10ZXh0JykpO1xuICAgICAgaWYgKGJpbmRpbmcub2xkVmFsdWUgIT09IGJpbmRpbmcudmFsdWUpIHtcbiAgICAgICAgdG9nZ2xlTG9hZGluZyhlbCwgYmluZGluZyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHVuYmluZDogZnVuY3Rpb24gdW5iaW5kKGVsLCBiaW5kaW5nKSB7XG4gICAgICBpZiAoZWwuZG9tSW5zZXJ0ZWQpIHtcbiAgICAgICAgZWwubWFzayAmJiBlbC5tYXNrLnBhcmVudE5vZGUgJiYgZWwubWFzay5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsLm1hc2spO1xuICAgICAgICB0b2dnbGVMb2FkaW5nKGVsLCB7IHZhbHVlOiBmYWxzZSwgbW9kaWZpZXJzOiBiaW5kaW5nLm1vZGlmaWVycyB9KTtcbiAgICAgIH1cbiAgICAgIGVsLmluc3RhbmNlICYmIGVsLmluc3RhbmNlLiRkZXN0cm95KCk7XG4gICAgfVxuICB9KTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19kaXJlY3RpdmUgPSAobG9hZGluZ0RpcmVjdGl2ZSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2xvYWRpbmcvc3JjL2luZGV4LmpzXG5cblxuXG5cblxuXG5cbnZhciBMb2FkaW5nQ29uc3RydWN0b3IgPSBleHRlcm5hbF92dWVfZGVmYXVsdC5hLmV4dGVuZChsb2FkaW5nKTtcblxudmFyIHNyY19kZWZhdWx0cyA9IHtcbiAgdGV4dDogbnVsbCxcbiAgZnVsbHNjcmVlbjogdHJ1ZSxcbiAgYm9keTogZmFsc2UsXG4gIGxvY2s6IGZhbHNlLFxuICBjdXN0b21DbGFzczogJydcbn07XG5cbnZhciBmdWxsc2NyZWVuTG9hZGluZyA9IHZvaWQgMDtcblxuTG9hZGluZ0NvbnN0cnVjdG9yLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uID0gJyc7XG5Mb2FkaW5nQ29uc3RydWN0b3IucHJvdG90eXBlLm9yaWdpbmFsT3ZlcmZsb3cgPSAnJztcblxuTG9hZGluZ0NvbnN0cnVjdG9yLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICBpZiAodGhpcy5mdWxsc2NyZWVuKSB7XG4gICAgZnVsbHNjcmVlbkxvYWRpbmcgPSB1bmRlZmluZWQ7XG4gIH1cbiAgYWZ0ZXJfbGVhdmVfZGVmYXVsdCgpKHRoaXMsIGZ1bmN0aW9uIChfKSB7XG4gICAgdmFyIHRhcmdldCA9IF90aGlzLmZ1bGxzY3JlZW4gfHwgX3RoaXMuYm9keSA/IGRvY3VtZW50LmJvZHkgOiBfdGhpcy50YXJnZXQ7XG4gICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkodGFyZ2V0LCAnZWwtbG9hZGluZy1wYXJlbnQtLXJlbGF0aXZlJyk7XG4gICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkodGFyZ2V0LCAnZWwtbG9hZGluZy1wYXJlbnQtLWhpZGRlbicpO1xuICAgIGlmIChfdGhpcy4kZWwgJiYgX3RoaXMuJGVsLnBhcmVudE5vZGUpIHtcbiAgICAgIF90aGlzLiRlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKF90aGlzLiRlbCk7XG4gICAgfVxuICAgIF90aGlzLiRkZXN0cm95KCk7XG4gIH0sIDMwMCk7XG4gIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xufTtcblxudmFyIHNyY19hZGRTdHlsZSA9IGZ1bmN0aW9uIGFkZFN0eWxlKG9wdGlvbnMsIHBhcmVudCwgaW5zdGFuY2UpIHtcbiAgdmFyIG1hc2tTdHlsZSA9IHt9O1xuICBpZiAob3B0aW9ucy5mdWxsc2NyZWVuKSB7XG4gICAgaW5zdGFuY2Uub3JpZ2luYWxQb3NpdGlvbiA9IE9iamVjdChkb21fW1wiZ2V0U3R5bGVcIl0pKGRvY3VtZW50LmJvZHksICdwb3NpdGlvbicpO1xuICAgIGluc3RhbmNlLm9yaWdpbmFsT3ZlcmZsb3cgPSBPYmplY3QoZG9tX1tcImdldFN0eWxlXCJdKShkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3cnKTtcbiAgICBtYXNrU3R5bGUuekluZGV4ID0gcG9wdXBfW1wiUG9wdXBNYW5hZ2VyXCJdLm5leHRaSW5kZXgoKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmJvZHkpIHtcbiAgICBpbnN0YW5jZS5vcmlnaW5hbFBvc2l0aW9uID0gT2JqZWN0KGRvbV9bXCJnZXRTdHlsZVwiXSkoZG9jdW1lbnQuYm9keSwgJ3Bvc2l0aW9uJyk7XG4gICAgWyd0b3AnLCAnbGVmdCddLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICB2YXIgc2Nyb2xsID0gcHJvcGVydHkgPT09ICd0b3AnID8gJ3Njcm9sbFRvcCcgOiAnc2Nyb2xsTGVmdCc7XG4gICAgICBtYXNrU3R5bGVbcHJvcGVydHldID0gb3B0aW9ucy50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbcHJvcGVydHldICsgZG9jdW1lbnQuYm9keVtzY3JvbGxdICsgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W3Njcm9sbF0gKyAncHgnO1xuICAgIH0pO1xuICAgIFsnaGVpZ2h0JywgJ3dpZHRoJ10uZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIG1hc2tTdHlsZVtwcm9wZXJ0eV0gPSBvcHRpb25zLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtwcm9wZXJ0eV0gKyAncHgnO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGluc3RhbmNlLm9yaWdpbmFsUG9zaXRpb24gPSBPYmplY3QoZG9tX1tcImdldFN0eWxlXCJdKShwYXJlbnQsICdwb3NpdGlvbicpO1xuICB9XG4gIE9iamVjdC5rZXlzKG1hc2tTdHlsZSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICBpbnN0YW5jZS4kZWwuc3R5bGVbcHJvcGVydHldID0gbWFza1N0eWxlW3Byb3BlcnR5XTtcbiAgfSk7XG59O1xuXG52YXIgc3JjX0xvYWRpbmcgPSBmdW5jdGlvbiBMb2FkaW5nKCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG5cbiAgaWYgKGV4dGVybmFsX3Z1ZV9kZWZhdWx0LmEucHJvdG90eXBlLiRpc1NlcnZlcikgcmV0dXJuO1xuICBvcHRpb25zID0gbWVyZ2VfZGVmYXVsdCgpKHt9LCBzcmNfZGVmYXVsdHMsIG9wdGlvbnMpO1xuICBpZiAodHlwZW9mIG9wdGlvbnMudGFyZ2V0ID09PSAnc3RyaW5nJykge1xuICAgIG9wdGlvbnMudGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnRhcmdldCk7XG4gIH1cbiAgb3B0aW9ucy50YXJnZXQgPSBvcHRpb25zLnRhcmdldCB8fCBkb2N1bWVudC5ib2R5O1xuICBpZiAob3B0aW9ucy50YXJnZXQgIT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICBvcHRpb25zLmZ1bGxzY3JlZW4gPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLmJvZHkgPSB0cnVlO1xuICB9XG4gIGlmIChvcHRpb25zLmZ1bGxzY3JlZW4gJiYgZnVsbHNjcmVlbkxvYWRpbmcpIHtcbiAgICByZXR1cm4gZnVsbHNjcmVlbkxvYWRpbmc7XG4gIH1cblxuICB2YXIgcGFyZW50ID0gb3B0aW9ucy5ib2R5ID8gZG9jdW1lbnQuYm9keSA6IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgaW5zdGFuY2UgPSBuZXcgTG9hZGluZ0NvbnN0cnVjdG9yKHtcbiAgICBlbDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksXG4gICAgZGF0YTogb3B0aW9uc1xuICB9KTtcblxuICBzcmNfYWRkU3R5bGUob3B0aW9ucywgcGFyZW50LCBpbnN0YW5jZSk7XG4gIGlmIChpbnN0YW5jZS5vcmlnaW5hbFBvc2l0aW9uICE9PSAnYWJzb2x1dGUnICYmIGluc3RhbmNlLm9yaWdpbmFsUG9zaXRpb24gIT09ICdmaXhlZCcgJiYgaW5zdGFuY2Uub3JpZ2luYWxQb3NpdGlvbiAhPT0gJ3N0aWNreScpIHtcbiAgICBPYmplY3QoZG9tX1tcImFkZENsYXNzXCJdKShwYXJlbnQsICdlbC1sb2FkaW5nLXBhcmVudC0tcmVsYXRpdmUnKTtcbiAgfVxuICBpZiAob3B0aW9ucy5mdWxsc2NyZWVuICYmIG9wdGlvbnMubG9jaykge1xuICAgIE9iamVjdChkb21fW1wiYWRkQ2xhc3NcIl0pKHBhcmVudCwgJ2VsLWxvYWRpbmctcGFyZW50LS1oaWRkZW4nKTtcbiAgfVxuICBwYXJlbnQuYXBwZW5kQ2hpbGQoaW5zdGFuY2UuJGVsKTtcbiAgZXh0ZXJuYWxfdnVlX2RlZmF1bHQuYS5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgaW5zdGFuY2UudmlzaWJsZSA9IHRydWU7XG4gIH0pO1xuICBpZiAob3B0aW9ucy5mdWxsc2NyZWVuKSB7XG4gICAgZnVsbHNjcmVlbkxvYWRpbmcgPSBpbnN0YW5jZTtcbiAgfVxuICByZXR1cm4gaW5zdGFuY2U7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmMgPSAoc3JjX0xvYWRpbmcpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9sb2FkaW5nL2luZGV4LmpzXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19sb2FkaW5nID0gKHtcbiAgaW5zdGFsbDogZnVuY3Rpb24gaW5zdGFsbChWdWUpIHtcbiAgICBWdWUudXNlKHNyY19kaXJlY3RpdmUpO1xuICAgIFZ1ZS5wcm90b3R5cGUuJGxvYWRpbmcgPSBzcmM7XG4gIH0sXG5cbiAgZGlyZWN0aXZlOiBzcmNfZGlyZWN0aXZlLFxuICBzZXJ2aWNlOiBzcmNcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9pY29uL3NyYy9pY29uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYjNmZTdmNCZcbnZhciBpY29udnVlX3R5cGVfdGVtcGxhdGVfaWRfY2IzZmU3ZjRfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiaVwiLCB7IGNsYXNzOiBcImVsLWljb24tXCIgKyBfdm0ubmFtZSB9KVxufVxudmFyIGljb252dWVfdHlwZV90ZW1wbGF0ZV9pZF9jYjNmZTdmNF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuaWNvbnZ1ZV90eXBlX3RlbXBsYXRlX2lkX2NiM2ZlN2Y0X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvaWNvbi9zcmMvaWNvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2IzZmU3ZjQmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2ljb24vc3JjL2ljb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgaWNvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbEljb24nLFxuXG4gIHByb3BzOiB7XG4gICAgbmFtZTogU3RyaW5nXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pY29uL3NyYy9pY29uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfaWNvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChpY29udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2ljb24vc3JjL2ljb24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgaWNvbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19pY29udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBpY29udnVlX3R5cGVfdGVtcGxhdGVfaWRfY2IzZmU3ZjRfcmVuZGVyLFxuICBpY29udnVlX3R5cGVfdGVtcGxhdGVfaWRfY2IzZmU3ZjRfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBpY29uX2FwaTsgfVxuaWNvbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2ljb24vc3JjL2ljb24udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGljb24gPSAoaWNvbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2ljb24vaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuaWNvbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGljb24ubmFtZSwgaWNvbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19pY29uID0gKGljb24pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yb3cvc3JjL3Jvdy5qc1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3JvdyA9ICh7XG4gIG5hbWU6ICdFbFJvdycsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsUm93JyxcblxuICBwcm9wczoge1xuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RpdidcbiAgICB9LFxuICAgIGd1dHRlcjogTnVtYmVyLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgICBqdXN0aWZ5OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnc3RhcnQnXG4gICAgfSxcbiAgICBhbGlnbjogU3RyaW5nXG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBzdHlsZTogZnVuY3Rpb24gc3R5bGUoKSB7XG4gICAgICB2YXIgcmV0ID0ge307XG5cbiAgICAgIGlmICh0aGlzLmd1dHRlcikge1xuICAgICAgICByZXQubWFyZ2luTGVmdCA9ICctJyArIHRoaXMuZ3V0dGVyIC8gMiArICdweCc7XG4gICAgICAgIHJldC5tYXJnaW5SaWdodCA9IHJldC5tYXJnaW5MZWZ0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgcmV0dXJuIGgodGhpcy50YWcsIHtcbiAgICAgIGNsYXNzOiBbJ2VsLXJvdycsIHRoaXMuanVzdGlmeSAhPT0gJ3N0YXJ0JyA/ICdpcy1qdXN0aWZ5LScgKyB0aGlzLmp1c3RpZnkgOiAnJywgdGhpcy5hbGlnbiA/ICdpcy1hbGlnbi0nICsgdGhpcy5hbGlnbiA6ICcnLCB7ICdlbC1yb3ctLWZsZXgnOiB0aGlzLnR5cGUgPT09ICdmbGV4JyB9XSxcbiAgICAgIHN0eWxlOiB0aGlzLnN0eWxlXG4gICAgfSwgdGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yb3cvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3JjX3Jvdy5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHNyY19yb3cubmFtZSwgc3JjX3Jvdyk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19yb3cgPSAoc3JjX3Jvdyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbC9zcmMvY29sLmpzXG52YXIgY29sX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbCA9ICh7XG4gIG5hbWU6ICdFbENvbCcsXG5cbiAgcHJvcHM6IHtcbiAgICBzcGFuOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAyNFxuICAgIH0sXG4gICAgdGFnOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnZGl2J1xuICAgIH0sXG4gICAgb2Zmc2V0OiBOdW1iZXIsXG4gICAgcHVsbDogTnVtYmVyLFxuICAgIHB1c2g6IE51bWJlcixcbiAgICB4czogW051bWJlciwgT2JqZWN0XSxcbiAgICBzbTogW051bWJlciwgT2JqZWN0XSxcbiAgICBtZDogW051bWJlciwgT2JqZWN0XSxcbiAgICBsZzogW051bWJlciwgT2JqZWN0XSxcbiAgICB4bDogW051bWJlciwgT2JqZWN0XVxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgZ3V0dGVyOiBmdW5jdGlvbiBndXR0ZXIoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQuJG9wdGlvbnMuY29tcG9uZW50TmFtZSAhPT0gJ0VsUm93Jykge1xuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQuZ3V0dGVyIDogMDtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGNsYXNzTGlzdCA9IFtdO1xuICAgIHZhciBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuZ3V0dGVyKSB7XG4gICAgICBzdHlsZS5wYWRkaW5nTGVmdCA9IHRoaXMuZ3V0dGVyIC8gMiArICdweCc7XG4gICAgICBzdHlsZS5wYWRkaW5nUmlnaHQgPSBzdHlsZS5wYWRkaW5nTGVmdDtcbiAgICB9XG5cbiAgICBbJ3NwYW4nLCAnb2Zmc2V0JywgJ3B1bGwnLCAncHVzaCddLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgIGlmIChfdGhpc1twcm9wXSB8fCBfdGhpc1twcm9wXSA9PT0gMCkge1xuICAgICAgICBjbGFzc0xpc3QucHVzaChwcm9wICE9PSAnc3BhbicgPyAnZWwtY29sLScgKyBwcm9wICsgJy0nICsgX3RoaXNbcHJvcF0gOiAnZWwtY29sLScgKyBfdGhpc1twcm9wXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBbJ3hzJywgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJ10uZm9yRWFjaChmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgaWYgKHR5cGVvZiBfdGhpc1tzaXplXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2VsLWNvbC0nICsgc2l6ZSArICctJyArIF90aGlzW3NpemVdKTtcbiAgICAgIH0gZWxzZSBpZiAoY29sX3R5cGVvZihfdGhpc1tzaXplXSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHZhciBwcm9wcyA9IF90aGlzW3NpemVdO1xuICAgICAgICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICAgIGNsYXNzTGlzdC5wdXNoKHByb3AgIT09ICdzcGFuJyA/ICdlbC1jb2wtJyArIHNpemUgKyAnLScgKyBwcm9wICsgJy0nICsgcHJvcHNbcHJvcF0gOiAnZWwtY29sLScgKyBzaXplICsgJy0nICsgcHJvcHNbcHJvcF0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBoKHRoaXMudGFnLCB7XG4gICAgICBjbGFzczogWydlbC1jb2wnLCBjbGFzc0xpc3RdLFxuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSwgdGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb2wvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29sLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoY29sLm5hbWUsIGNvbCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19jb2wgPSAoY29sKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdXBsb2FkL3NyYy91cGxvYWQtbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTczZmVkZjUmXG52YXIgdXBsb2FkX2xpc3R2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xNzNmZWRmNV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJ0cmFuc2l0aW9uLWdyb3VwXCIsXG4gICAge1xuICAgICAgY2xhc3M6IFtcbiAgICAgICAgXCJlbC11cGxvYWQtbGlzdFwiLFxuICAgICAgICBcImVsLXVwbG9hZC1saXN0LS1cIiArIF92bS5saXN0VHlwZSxcbiAgICAgICAgeyBcImlzLWRpc2FibGVkXCI6IF92bS5kaXNhYmxlZCB9XG4gICAgICBdLFxuICAgICAgYXR0cnM6IHsgdGFnOiBcInVsXCIsIG5hbWU6IFwiZWwtbGlzdFwiIH1cbiAgICB9LFxuICAgIF92bS5fbChfdm0uZmlsZXMsIGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgIHJldHVybiBfYyhcbiAgICAgICAgXCJsaVwiLFxuICAgICAgICB7XG4gICAgICAgICAga2V5OiBmaWxlLnVpZCxcbiAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgXCJlbC11cGxvYWQtbGlzdF9faXRlbVwiLFxuICAgICAgICAgICAgXCJpcy1cIiArIGZpbGUuc3RhdHVzLFxuICAgICAgICAgICAgX3ZtLmZvY3VzaW5nID8gXCJmb2N1c2luZ1wiIDogXCJcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgYXR0cnM6IHsgdGFiaW5kZXg6IFwiMFwiIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGtleWRvd246IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZGVsZXRlXCIsIFs4LCA0Nl0sICRldmVudC5rZXksIFtcbiAgICAgICAgICAgICAgICAgIFwiQmFja3NwYWNlXCIsXG4gICAgICAgICAgICAgICAgICBcIkRlbGV0ZVwiLFxuICAgICAgICAgICAgICAgICAgXCJEZWxcIlxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIV92bS5kaXNhYmxlZCAmJiBfdm0uJGVtaXQoXCJyZW1vdmVcIiwgZmlsZSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb2N1czogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIF92bS5mb2N1c2luZyA9IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBibHVyOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgX3ZtLmZvY3VzaW5nID0gZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIF92bS5mb2N1c2luZyA9IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX3ZtLl90KFxuICAgICAgICAgICAgXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIGZpbGUuc3RhdHVzICE9PSBcInVwbG9hZGluZ1wiICYmXG4gICAgICAgICAgICAgIFtcInBpY3R1cmUtY2FyZFwiLCBcInBpY3R1cmVcIl0uaW5kZXhPZihfdm0ubGlzdFR5cGUpID4gLTFcbiAgICAgICAgICAgICAgICA/IF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdXBsb2FkLWxpc3RfX2l0ZW0tdGh1bWJuYWlsXCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNyYzogZmlsZS51cmwsIGFsdDogXCJcIiB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXVwbG9hZC1saXN0X19pdGVtLW5hbWVcIixcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQ2xpY2soZmlsZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbi1kb2N1bWVudFwiIH0pLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhmaWxlLm5hbWUpICsgXCJcXG4gICAgICBcIilcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwibGFiZWxcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLXVwbG9hZC1saXN0X19pdGVtLXN0YXR1cy1sYWJlbFwiIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBcImVsLWljb24tdXBsb2FkLXN1Y2Nlc3NcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBcImVsLWljb24tY2lyY2xlLWNoZWNrXCI6IF92bS5saXN0VHlwZSA9PT0gXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJlbC1pY29uLWNoZWNrXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJwaWN0dXJlLWNhcmRcIiwgXCJwaWN0dXJlXCJdLmluZGV4T2YoX3ZtLmxpc3RUeXBlKSA+IC0xXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAhX3ZtLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pY29uLWNsb3NlXCIsXG4gICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRlbWl0KFwicmVtb3ZlXCIsIGZpbGUpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICFfdm0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICA/IF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWljb24tY2xvc2UtdGlwXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwiZWwudXBsb2FkLmRlbGV0ZVRpcFwiKSkpXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgIGZpbGUuc3RhdHVzID09PSBcInVwbG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgPyBfYyhcImVsLXByb2dyZXNzXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBfdm0ubGlzdFR5cGUgPT09IFwicGljdHVyZS1jYXJkXCIgPyBcImNpcmNsZVwiIDogXCJsaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogX3ZtLmxpc3RUeXBlID09PSBcInBpY3R1cmUtY2FyZFwiID8gNiA6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZTogX3ZtLnBhcnNlUGVyY2VudGFnZShmaWxlLnBlcmNlbnRhZ2UpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgX3ZtLmxpc3RUeXBlID09PSBcInBpY3R1cmUtY2FyZFwiXG4gICAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC11cGxvYWQtbGlzdF9faXRlbS1hY3Rpb25zXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlUHJldmlldyAmJiBfdm0ubGlzdFR5cGUgPT09IFwicGljdHVyZS1jYXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXVwbG9hZC1saXN0X19pdGVtLXByZXZpZXdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlUHJldmlldyhmaWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWljb24tem9vbS1pblwiIH0pXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICFfdm0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXVwbG9hZC1saXN0X19pdGVtLWRlbGV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kZW1pdChcInJlbW92ZVwiLCBmaWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW19jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWljb24tZGVsZXRlXCIgfSldXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgeyBmaWxlOiBmaWxlIH1cbiAgICAgICAgICApXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICB9KSxcbiAgICAwXG4gIClcbn1cbnZhciB1cGxvYWRfbGlzdHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzE3M2ZlZGY1X3N0YXRpY1JlbmRlckZucyA9IFtdXG51cGxvYWRfbGlzdHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzE3M2ZlZGY1X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdXBsb2FkL3NyYy91cGxvYWQtbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTczZmVkZjUmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9wcm9ncmVzc1wiXG52YXIgcHJvZ3Jlc3NfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNCk7XG52YXIgcHJvZ3Jlc3NfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4ocHJvZ3Jlc3NfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdXBsb2FkL3NyYy91cGxvYWQtbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB1cGxvYWRfbGlzdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG5cbiAgbmFtZTogJ0VsVXBsb2FkTGlzdCcsXG5cbiAgbWl4aW5zOiBbbG9jYWxlX2RlZmF1bHQuYV0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9jdXNpbmc6IGZhbHNlXG4gICAgfTtcbiAgfSxcblxuICBjb21wb25lbnRzOiB7IEVsUHJvZ3Jlc3M6IHByb2dyZXNzX2RlZmF1bHQuYSB9LFxuXG4gIHByb3BzOiB7XG4gICAgZmlsZXM6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGhhbmRsZVByZXZpZXc6IEZ1bmN0aW9uLFxuICAgIGxpc3RUeXBlOiBTdHJpbmdcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHBhcnNlUGVyY2VudGFnZTogZnVuY3Rpb24gcGFyc2VQZXJjZW50YWdlKHZhbCkge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbCwgMTApO1xuICAgIH0sXG4gICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGZpbGUpIHtcbiAgICAgIHRoaXMuaGFuZGxlUHJldmlldyAmJiB0aGlzLmhhbmRsZVByZXZpZXcoZmlsZSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdXBsb2FkL3NyYy91cGxvYWQtbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3VwbG9hZF9saXN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHVwbG9hZF9saXN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3VwbG9hZC9zcmMvdXBsb2FkLWxpc3QudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdXBsb2FkX2xpc3RfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfdXBsb2FkX2xpc3R2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHVwbG9hZF9saXN0dnVlX3R5cGVfdGVtcGxhdGVfaWRfMTczZmVkZjVfcmVuZGVyLFxuICB1cGxvYWRfbGlzdHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzE3M2ZlZGY1X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgdXBsb2FkX2xpc3RfYXBpOyB9XG51cGxvYWRfbGlzdF9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3VwbG9hZC9zcmMvdXBsb2FkLWxpc3QudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHVwbG9hZF9saXN0ID0gKHVwbG9hZF9saXN0X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJiYWJlbC1oZWxwZXItdnVlLWpzeC1tZXJnZS1wcm9wc1wiXG52YXIgZXh0ZXJuYWxfYmFiZWxfaGVscGVyX3Z1ZV9qc3hfbWVyZ2VfcHJvcHNfID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG52YXIgZXh0ZXJuYWxfYmFiZWxfaGVscGVyX3Z1ZV9qc3hfbWVyZ2VfcHJvcHNfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZXh0ZXJuYWxfYmFiZWxfaGVscGVyX3Z1ZV9qc3hfbWVyZ2VfcHJvcHNfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy91cGxvYWQvc3JjL2FqYXguanNcbmZ1bmN0aW9uIGdldEVycm9yKGFjdGlvbiwgb3B0aW9uLCB4aHIpIHtcbiAgdmFyIG1zZyA9IHZvaWQgMDtcbiAgaWYgKHhoci5yZXNwb25zZSkge1xuICAgIG1zZyA9ICcnICsgKHhoci5yZXNwb25zZS5lcnJvciB8fCB4aHIucmVzcG9uc2UpO1xuICB9IGVsc2UgaWYgKHhoci5yZXNwb25zZVRleHQpIHtcbiAgICBtc2cgPSAnJyArIHhoci5yZXNwb25zZVRleHQ7XG4gIH0gZWxzZSB7XG4gICAgbXNnID0gJ2ZhaWwgdG8gcG9zdCAnICsgYWN0aW9uICsgJyAnICsgeGhyLnN0YXR1cztcbiAgfVxuXG4gIHZhciBlcnIgPSBuZXcgRXJyb3IobXNnKTtcbiAgZXJyLnN0YXR1cyA9IHhoci5zdGF0dXM7XG4gIGVyci5tZXRob2QgPSAncG9zdCc7XG4gIGVyci51cmwgPSBhY3Rpb247XG4gIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGdldEJvZHkoeGhyKSB7XG4gIHZhciB0ZXh0ID0geGhyLnJlc3BvbnNlVGV4dCB8fCB4aHIucmVzcG9uc2U7XG4gIGlmICghdGV4dCkge1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwbG9hZChvcHRpb24pIHtcbiAgaWYgKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gIHZhciBhY3Rpb24gPSBvcHRpb24uYWN0aW9uO1xuXG4gIGlmICh4aHIudXBsb2FkKSB7XG4gICAgeGhyLnVwbG9hZC5vbnByb2dyZXNzID0gZnVuY3Rpb24gcHJvZ3Jlc3MoZSkge1xuICAgICAgaWYgKGUudG90YWwgPiAwKSB7XG4gICAgICAgIGUucGVyY2VudCA9IGUubG9hZGVkIC8gZS50b3RhbCAqIDEwMDtcbiAgICAgIH1cbiAgICAgIG9wdGlvbi5vblByb2dyZXNzKGUpO1xuICAgIH07XG4gIH1cblxuICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICBpZiAob3B0aW9uLmRhdGEpIHtcbiAgICBPYmplY3Qua2V5cyhvcHRpb24uZGF0YSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCBvcHRpb24uZGF0YVtrZXldKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZvcm1EYXRhLmFwcGVuZChvcHRpb24uZmlsZW5hbWUsIG9wdGlvbi5maWxlLCBvcHRpb24uZmlsZS5uYW1lKTtcblxuICB4aHIub25lcnJvciA9IGZ1bmN0aW9uIGVycm9yKGUpIHtcbiAgICBvcHRpb24ub25FcnJvcihlKTtcbiAgfTtcblxuICB4aHIub25sb2FkID0gZnVuY3Rpb24gb25sb2FkKCkge1xuICAgIGlmICh4aHIuc3RhdHVzIDwgMjAwIHx8IHhoci5zdGF0dXMgPj0gMzAwKSB7XG4gICAgICByZXR1cm4gb3B0aW9uLm9uRXJyb3IoZ2V0RXJyb3IoYWN0aW9uLCBvcHRpb24sIHhocikpO1xuICAgIH1cblxuICAgIG9wdGlvbi5vblN1Y2Nlc3MoZ2V0Qm9keSh4aHIpKTtcbiAgfTtcblxuICB4aHIub3BlbigncG9zdCcsIGFjdGlvbiwgdHJ1ZSk7XG5cbiAgaWYgKG9wdGlvbi53aXRoQ3JlZGVudGlhbHMgJiYgJ3dpdGhDcmVkZW50aWFscycgaW4geGhyKSB7XG4gICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gIH1cblxuICB2YXIgaGVhZGVycyA9IG9wdGlvbi5oZWFkZXJzIHx8IHt9O1xuXG4gIGZvciAodmFyIGl0ZW0gaW4gaGVhZGVycykge1xuICAgIGlmIChoZWFkZXJzLmhhc093blByb3BlcnR5KGl0ZW0pICYmIGhlYWRlcnNbaXRlbV0gIT09IG51bGwpIHtcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGl0ZW0sIGhlYWRlcnNbaXRlbV0pO1xuICAgIH1cbiAgfVxuICB4aHIuc2VuZChmb3JtRGF0YSk7XG4gIHJldHVybiB4aHI7XG59XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3VwbG9hZC9zcmMvdXBsb2FkLWRyYWdnZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdlYmJmMjE5JlxudmFyIHVwbG9hZF9kcmFnZ2VydnVlX3R5cGVfdGVtcGxhdGVfaWRfN2ViYmYyMTlfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdXBsb2FkLWRyYWdnZXJcIixcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgIFwiaXMtZHJhZ292ZXJcIjogX3ZtLmRyYWdvdmVyXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgZHJvcDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICByZXR1cm4gX3ZtLm9uRHJvcCgkZXZlbnQpXG4gICAgICAgIH0sXG4gICAgICAgIGRyYWdvdmVyOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHJldHVybiBfdm0ub25EcmFnb3ZlcigkZXZlbnQpXG4gICAgICAgIH0sXG4gICAgICAgIGRyYWdsZWF2ZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBfdm0uZHJhZ292ZXIgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgMlxuICApXG59XG52YXIgdXBsb2FkX2RyYWdnZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF83ZWJiZjIxOV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxudXBsb2FkX2RyYWdnZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF83ZWJiZjIxOV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3VwbG9hZC9zcmMvdXBsb2FkLWRyYWdnZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdlYmJmMjE5JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy91cGxvYWQvc3JjL3VwbG9hZC1kcmFnZ2VyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHVwbG9hZF9kcmFnZ2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsVXBsb2FkRHJhZycsXG4gIHByb3BzOiB7XG4gICAgZGlzYWJsZWQ6IEJvb2xlYW5cbiAgfSxcbiAgaW5qZWN0OiB7XG4gICAgdXBsb2FkZXI6IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkcmFnb3ZlcjogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBvbkRyYWdvdmVyOiBmdW5jdGlvbiBvbkRyYWdvdmVyKCkge1xuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuZHJhZ292ZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25Ecm9wOiBmdW5jdGlvbiBvbkRyb3AoZSkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMudXBsb2FkZXIpIHJldHVybjtcbiAgICAgIHZhciBhY2NlcHQgPSB0aGlzLnVwbG9hZGVyLmFjY2VwdDtcbiAgICAgIHRoaXMuZHJhZ292ZXIgPSBmYWxzZTtcbiAgICAgIGlmICghYWNjZXB0KSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2ZpbGUnLCBlLmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuJGVtaXQoJ2ZpbGUnLCBbXS5zbGljZS5jYWxsKGUuZGF0YVRyYW5zZmVyLmZpbGVzKS5maWx0ZXIoZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgdmFyIHR5cGUgPSBmaWxlLnR5cGUsXG4gICAgICAgICAgICBuYW1lID0gZmlsZS5uYW1lO1xuXG4gICAgICAgIHZhciBleHRlbnNpb24gPSBuYW1lLmluZGV4T2YoJy4nKSA+IC0xID8gJy4nICsgbmFtZS5zcGxpdCgnLicpLnBvcCgpIDogJyc7XG4gICAgICAgIHZhciBiYXNlVHlwZSA9IHR5cGUucmVwbGFjZSgvXFwvLiokLywgJycpO1xuICAgICAgICByZXR1cm4gYWNjZXB0LnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGUudHJpbSgpO1xuICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgfSkuc29tZShmdW5jdGlvbiAoYWNjZXB0ZWRUeXBlKSB7XG4gICAgICAgICAgaWYgKC9cXC4uKyQvLnRlc3QoYWNjZXB0ZWRUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbiA9PT0gYWNjZXB0ZWRUeXBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoL1xcL1xcKiQvLnRlc3QoYWNjZXB0ZWRUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2VUeXBlID09PSBhY2NlcHRlZFR5cGUucmVwbGFjZSgvXFwvXFwqJC8sICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKC9eW15cXC9dK1xcL1teXFwvXSskLy50ZXN0KGFjY2VwdGVkVHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlID09PSBhY2NlcHRlZFR5cGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdXBsb2FkL3NyYy91cGxvYWQtZHJhZ2dlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3VwbG9hZF9kcmFnZ2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHVwbG9hZF9kcmFnZ2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3VwbG9hZC9zcmMvdXBsb2FkLWRyYWdnZXIudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdXBsb2FkX2RyYWdnZXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfdXBsb2FkX2RyYWdnZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHVwbG9hZF9kcmFnZ2VydnVlX3R5cGVfdGVtcGxhdGVfaWRfN2ViYmYyMTlfcmVuZGVyLFxuICB1cGxvYWRfZHJhZ2dlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzdlYmJmMjE5X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgdXBsb2FkX2RyYWdnZXJfYXBpOyB9XG51cGxvYWRfZHJhZ2dlcl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3VwbG9hZC9zcmMvdXBsb2FkLWRyYWdnZXIudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHVwbG9hZF9kcmFnZ2VyID0gKHVwbG9hZF9kcmFnZ2VyX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3VwbG9hZC9zcmMvdXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB1cGxvYWR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBpbmplY3Q6IFsndXBsb2FkZXInXSxcbiAgY29tcG9uZW50czoge1xuICAgIFVwbG9hZERyYWdnZXI6IHVwbG9hZF9kcmFnZ2VyXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGFjdGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9LFxuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdmaWxlJ1xuICAgIH0sXG4gICAgZGF0YTogT2JqZWN0LFxuICAgIGhlYWRlcnM6IE9iamVjdCxcbiAgICB3aXRoQ3JlZGVudGlhbHM6IEJvb2xlYW4sXG4gICAgbXVsdGlwbGU6IEJvb2xlYW4sXG4gICAgYWNjZXB0OiBTdHJpbmcsXG4gICAgb25TdGFydDogRnVuY3Rpb24sXG4gICAgb25Qcm9ncmVzczogRnVuY3Rpb24sXG4gICAgb25TdWNjZXNzOiBGdW5jdGlvbixcbiAgICBvbkVycm9yOiBGdW5jdGlvbixcbiAgICBiZWZvcmVVcGxvYWQ6IEZ1bmN0aW9uLFxuICAgIGRyYWc6IEJvb2xlYW4sXG4gICAgb25QcmV2aWV3OiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge31cbiAgICB9LFxuICAgIG9uUmVtb3ZlOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge31cbiAgICB9LFxuICAgIGZpbGVMaXN0OiBBcnJheSxcbiAgICBhdXRvVXBsb2FkOiBCb29sZWFuLFxuICAgIGxpc3RUeXBlOiBTdHJpbmcsXG4gICAgaHR0cFJlcXVlc3Q6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdXBsb2FkXG4gICAgfSxcbiAgICBkaXNhYmxlZDogQm9vbGVhbixcbiAgICBsaW1pdDogTnVtYmVyLFxuICAgIG9uRXhjZWVkOiBGdW5jdGlvblxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vdXNlb3ZlcjogZmFsc2UsXG4gICAgICByZXFzOiB7fVxuICAgIH07XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgaXNJbWFnZTogZnVuY3Rpb24gaXNJbWFnZShzdHIpIHtcbiAgICAgIHJldHVybiBzdHIuaW5kZXhPZignaW1hZ2UnKSAhPT0gLTE7XG4gICAgfSxcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldikge1xuICAgICAgdmFyIGZpbGVzID0gZXYudGFyZ2V0LmZpbGVzO1xuXG4gICAgICBpZiAoIWZpbGVzKSByZXR1cm47XG4gICAgICB0aGlzLnVwbG9hZEZpbGVzKGZpbGVzKTtcbiAgICB9LFxuICAgIHVwbG9hZEZpbGVzOiBmdW5jdGlvbiB1cGxvYWRGaWxlcyhmaWxlcykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMubGltaXQgJiYgdGhpcy5maWxlTGlzdC5sZW5ndGggKyBmaWxlcy5sZW5ndGggPiB0aGlzLmxpbWl0KSB7XG4gICAgICAgIHRoaXMub25FeGNlZWQgJiYgdGhpcy5vbkV4Y2VlZChmaWxlcywgdGhpcy5maWxlTGlzdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHBvc3RGaWxlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZpbGVzKTtcbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICBwb3N0RmlsZXMgPSBwb3N0RmlsZXMuc2xpY2UoMCwgMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwb3N0RmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcG9zdEZpbGVzLmZvckVhY2goZnVuY3Rpb24gKHJhd0ZpbGUpIHtcbiAgICAgICAgX3RoaXMub25TdGFydChyYXdGaWxlKTtcbiAgICAgICAgaWYgKF90aGlzLmF1dG9VcGxvYWQpIF90aGlzLnVwbG9hZChyYXdGaWxlKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBsb2FkOiBmdW5jdGlvbiB1cGxvYWQocmF3RmlsZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJHJlZnMuaW5wdXQudmFsdWUgPSBudWxsO1xuXG4gICAgICBpZiAoIXRoaXMuYmVmb3JlVXBsb2FkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc3QocmF3RmlsZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBiZWZvcmUgPSB0aGlzLmJlZm9yZVVwbG9hZChyYXdGaWxlKTtcbiAgICAgIGlmIChiZWZvcmUgJiYgYmVmb3JlLnRoZW4pIHtcbiAgICAgICAgYmVmb3JlLnRoZW4oZnVuY3Rpb24gKHByb2Nlc3NlZEZpbGUpIHtcbiAgICAgICAgICB2YXIgZmlsZVR5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2Vzc2VkRmlsZSk7XG5cbiAgICAgICAgICBpZiAoZmlsZVR5cGUgPT09ICdbb2JqZWN0IEZpbGVdJyB8fCBmaWxlVHlwZSA9PT0gJ1tvYmplY3QgQmxvYl0nKSB7XG4gICAgICAgICAgICBpZiAoZmlsZVR5cGUgPT09ICdbb2JqZWN0IEJsb2JdJykge1xuICAgICAgICAgICAgICBwcm9jZXNzZWRGaWxlID0gbmV3IEZpbGUoW3Byb2Nlc3NlZEZpbGVdLCByYXdGaWxlLm5hbWUsIHtcbiAgICAgICAgICAgICAgICB0eXBlOiByYXdGaWxlLnR5cGVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHJhd0ZpbGUpIHtcbiAgICAgICAgICAgICAgaWYgKHJhd0ZpbGUuaGFzT3duUHJvcGVydHkocCkpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzZWRGaWxlW3BdID0gcmF3RmlsZVtwXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3RoaXMyLnBvc3QocHJvY2Vzc2VkRmlsZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzMi5wb3N0KHJhd0ZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzMi5vblJlbW92ZShudWxsLCByYXdGaWxlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGJlZm9yZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5wb3N0KHJhd0ZpbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vblJlbW92ZShudWxsLCByYXdGaWxlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFib3J0OiBmdW5jdGlvbiBhYm9ydChmaWxlKSB7XG4gICAgICB2YXIgcmVxcyA9IHRoaXMucmVxcztcblxuICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgdmFyIHVpZCA9IGZpbGU7XG4gICAgICAgIGlmIChmaWxlLnVpZCkgdWlkID0gZmlsZS51aWQ7XG4gICAgICAgIGlmIChyZXFzW3VpZF0pIHtcbiAgICAgICAgICByZXFzW3VpZF0uYWJvcnQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgT2JqZWN0LmtleXMocmVxcykuZm9yRWFjaChmdW5jdGlvbiAodWlkKSB7XG4gICAgICAgICAgaWYgKHJlcXNbdWlkXSkgcmVxc1t1aWRdLmFib3J0KCk7XG4gICAgICAgICAgZGVsZXRlIHJlcXNbdWlkXTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBwb3N0OiBmdW5jdGlvbiBwb3N0KHJhd0ZpbGUpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgdWlkID0gcmF3RmlsZS51aWQ7XG5cbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgIGZpbGU6IHJhd0ZpbGUsXG4gICAgICAgIGRhdGE6IHRoaXMuZGF0YSxcbiAgICAgICAgZmlsZW5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFjdGlvbixcbiAgICAgICAgb25Qcm9ncmVzczogZnVuY3Rpb24gb25Qcm9ncmVzcyhlKSB7XG4gICAgICAgICAgX3RoaXMzLm9uUHJvZ3Jlc3MoZSwgcmF3RmlsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIF90aGlzMy5vblN1Y2Nlc3MocmVzLCByYXdGaWxlKTtcbiAgICAgICAgICBkZWxldGUgX3RoaXMzLnJlcXNbdWlkXTtcbiAgICAgICAgfSxcbiAgICAgICAgb25FcnJvcjogZnVuY3Rpb24gb25FcnJvcihlcnIpIHtcbiAgICAgICAgICBfdGhpczMub25FcnJvcihlcnIsIHJhd0ZpbGUpO1xuICAgICAgICAgIGRlbGV0ZSBfdGhpczMucmVxc1t1aWRdO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdmFyIHJlcSA9IHRoaXMuaHR0cFJlcXVlc3Qob3B0aW9ucyk7XG4gICAgICB0aGlzLnJlcXNbdWlkXSA9IHJlcTtcbiAgICAgIGlmIChyZXEgJiYgcmVxLnRoZW4pIHtcbiAgICAgICAgcmVxLnRoZW4ob3B0aW9ucy5vblN1Y2Nlc3MsIG9wdGlvbnMub25FcnJvcik7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDbGljazogZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy4kcmVmcy5pbnB1dC52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQuY2xpY2soKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUtleWRvd246IGZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZSkge1xuICAgICAgaWYgKGUudGFyZ2V0ICE9PSBlLmN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzIHx8IGUua2V5Q29kZSA9PT0gMzIpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGljaygpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGhhbmRsZUNsaWNrID0gdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgZHJhZyA9IHRoaXMuZHJhZyxcbiAgICAgICAgbmFtZSA9IHRoaXMubmFtZSxcbiAgICAgICAgaGFuZGxlQ2hhbmdlID0gdGhpcy5oYW5kbGVDaGFuZ2UsXG4gICAgICAgIG11bHRpcGxlID0gdGhpcy5tdWx0aXBsZSxcbiAgICAgICAgYWNjZXB0ID0gdGhpcy5hY2NlcHQsXG4gICAgICAgIGxpc3RUeXBlID0gdGhpcy5saXN0VHlwZSxcbiAgICAgICAgdXBsb2FkRmlsZXMgPSB0aGlzLnVwbG9hZEZpbGVzLFxuICAgICAgICBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIGhhbmRsZUtleWRvd24gPSB0aGlzLmhhbmRsZUtleWRvd247XG5cbiAgICB2YXIgZGF0YSA9IHtcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgICdlbC11cGxvYWQnOiB0cnVlXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgY2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBrZXlkb3duOiBoYW5kbGVLZXlkb3duXG4gICAgICB9XG4gICAgfTtcbiAgICBkYXRhLmNsYXNzWydlbC11cGxvYWQtLScgKyBsaXN0VHlwZV0gPSB0cnVlO1xuICAgIHJldHVybiBoKFxuICAgICAgJ2RpdicsXG4gICAgICBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc19kZWZhdWx0KCkoW2RhdGEsIHtcbiAgICAgICAgYXR0cnM6IHsgdGFiaW5kZXg6ICcwJyB9XG4gICAgICB9XSksXG4gICAgICBbZHJhZyA/IGgoXG4gICAgICAgICd1cGxvYWQtZHJhZ2dlcicsXG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyczogeyBkaXNhYmxlZDogZGlzYWJsZWQgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgJ2ZpbGUnOiB1cGxvYWRGaWxlc1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW3RoaXMuJHNsb3RzLmRlZmF1bHRdXG4gICAgICApIDogdGhpcy4kc2xvdHMuZGVmYXVsdCwgaCgnaW5wdXQnLCB7ICdjbGFzcyc6ICdlbC11cGxvYWRfX2lucHV0JywgYXR0cnM6IHsgdHlwZTogJ2ZpbGUnLCBuYW1lOiBuYW1lLCBtdWx0aXBsZTogbXVsdGlwbGUsIGFjY2VwdDogYWNjZXB0IH0sXG4gICAgICAgIHJlZjogJ2lucHV0Jywgb246IHtcbiAgICAgICAgICAnY2hhbmdlJzogaGFuZGxlQ2hhbmdlXG4gICAgICAgIH1cbiAgICAgIH0pXVxuICAgICk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy91cGxvYWQvc3JjL3VwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3VwbG9hZHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh1cGxvYWR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdXBsb2FkL3NyYy91cGxvYWQudnVlXG52YXIgdXBsb2FkX3JlbmRlciwgdXBsb2FkX3N0YXRpY1JlbmRlckZuc1xuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB1cGxvYWRfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfdXBsb2FkdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICB1cGxvYWRfcmVuZGVyLFxuICB1cGxvYWRfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciB1cGxvYWRfYXBpOyB9XG51cGxvYWRfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy91cGxvYWQvc3JjL3VwbG9hZC52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3VwbG9hZCA9ICh1cGxvYWRfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdXBsb2FkL3NyYy9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG5mdW5jdGlvbiBzcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19ub29wKCkge31cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsVXBsb2FkJyxcblxuICBtaXhpbnM6IFttaWdyYXRpbmdfZGVmYXVsdC5hXSxcblxuICBjb21wb25lbnRzOiB7XG4gICAgRWxQcm9ncmVzczogcHJvZ3Jlc3NfZGVmYXVsdC5hLFxuICAgIFVwbG9hZExpc3Q6IHVwbG9hZF9saXN0LFxuICAgIFVwbG9hZDogc3JjX3VwbG9hZFxuICB9LFxuXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwbG9hZGVyOiB0aGlzXG4gICAgfTtcbiAgfSxcblxuXG4gIGluamVjdDoge1xuICAgIGVsRm9ybToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9XG4gIH0sXG5cbiAgcHJvcHM6IHtcbiAgICBhY3Rpb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICBoZWFkZXJzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgZGF0YTogT2JqZWN0LFxuICAgIG11bHRpcGxlOiBCb29sZWFuLFxuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdmaWxlJ1xuICAgIH0sXG4gICAgZHJhZzogQm9vbGVhbixcbiAgICBkcmFnZ2VyOiBCb29sZWFuLFxuICAgIHdpdGhDcmVkZW50aWFsczogQm9vbGVhbixcbiAgICBzaG93RmlsZUxpc3Q6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBhY2NlcHQ6IFN0cmluZyxcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnc2VsZWN0J1xuICAgIH0sXG4gICAgYmVmb3JlVXBsb2FkOiBGdW5jdGlvbixcbiAgICBiZWZvcmVSZW1vdmU6IEZ1bmN0aW9uLFxuICAgIG9uUmVtb3ZlOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHNyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX25vb3BcbiAgICB9LFxuICAgIG9uQ2hhbmdlOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHNyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX25vb3BcbiAgICB9LFxuICAgIG9uUHJldmlldzoge1xuICAgICAgdHlwZTogRnVuY3Rpb25cbiAgICB9LFxuICAgIG9uU3VjY2Vzczoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiBzcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19ub29wXG4gICAgfSxcbiAgICBvblByb2dyZXNzOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHNyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX25vb3BcbiAgICB9LFxuICAgIG9uRXJyb3I6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogc3JjdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfbm9vcFxuICAgIH0sXG4gICAgZmlsZUxpc3Q6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGF1dG9VcGxvYWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBsaXN0VHlwZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3RleHQnIC8vIHRleHQscGljdHVyZSxwaWN0dXJlLWNhcmRcbiAgICB9LFxuICAgIGh0dHBSZXF1ZXN0OiBGdW5jdGlvbixcbiAgICBkaXNhYmxlZDogQm9vbGVhbixcbiAgICBsaW1pdDogTnVtYmVyLFxuICAgIG9uRXhjZWVkOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHNyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX25vb3BcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXBsb2FkRmlsZXM6IFtdLFxuICAgICAgZHJhZ092ZXI6IGZhbHNlLFxuICAgICAgZHJhZ2luZzogZmFsc2UsXG4gICAgICB0ZW1wSW5kZXg6IDFcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICB1cGxvYWREaXNhYmxlZDogZnVuY3Rpb24gdXBsb2FkRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCAodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGxpc3RUeXBlOiBmdW5jdGlvbiBsaXN0VHlwZSh0eXBlKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3BpY3R1cmUtY2FyZCcgfHwgdHlwZSA9PT0gJ3BpY3R1cmUnKSB7XG4gICAgICAgIHRoaXMudXBsb2FkRmlsZXMgPSB0aGlzLnVwbG9hZEZpbGVzLm1hcChmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICAgIGlmICghZmlsZS51cmwgJiYgZmlsZS5yYXcpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGZpbGUudXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlLnJhdyk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW0VsZW1lbnQgRXJyb3JdW1VwbG9hZF0nLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGZpbGVMaXN0OiB7XG4gICAgICBpbW1lZGlhdGU6IHRydWUsXG4gICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGZpbGVMaXN0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy51cGxvYWRGaWxlcyA9IGZpbGVMaXN0Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIGl0ZW0udWlkID0gaXRlbS51aWQgfHwgRGF0ZS5ub3coKSArIF90aGlzLnRlbXBJbmRleCsrO1xuICAgICAgICAgIGl0ZW0uc3RhdHVzID0gaXRlbS5zdGF0dXMgfHwgJ3N1Y2Nlc3MnO1xuICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZVN0YXJ0OiBmdW5jdGlvbiBoYW5kbGVTdGFydChyYXdGaWxlKSB7XG4gICAgICByYXdGaWxlLnVpZCA9IERhdGUubm93KCkgKyB0aGlzLnRlbXBJbmRleCsrO1xuICAgICAgdmFyIGZpbGUgPSB7XG4gICAgICAgIHN0YXR1czogJ3JlYWR5JyxcbiAgICAgICAgbmFtZTogcmF3RmlsZS5uYW1lLFxuICAgICAgICBzaXplOiByYXdGaWxlLnNpemUsXG4gICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgIHVpZDogcmF3RmlsZS51aWQsXG4gICAgICAgIHJhdzogcmF3RmlsZVxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubGlzdFR5cGUgPT09ICdwaWN0dXJlLWNhcmQnIHx8IHRoaXMubGlzdFR5cGUgPT09ICdwaWN0dXJlJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZpbGUudXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyYXdGaWxlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW0VsZW1lbnQgRXJyb3JdW1VwbG9hZF0nLCBlcnIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnVwbG9hZEZpbGVzLnB1c2goZmlsZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKGZpbGUsIHRoaXMudXBsb2FkRmlsZXMpO1xuICAgIH0sXG4gICAgaGFuZGxlUHJvZ3Jlc3M6IGZ1bmN0aW9uIGhhbmRsZVByb2dyZXNzKGV2LCByYXdGaWxlKSB7XG4gICAgICB2YXIgZmlsZSA9IHRoaXMuZ2V0RmlsZShyYXdGaWxlKTtcbiAgICAgIHRoaXMub25Qcm9ncmVzcyhldiwgZmlsZSwgdGhpcy51cGxvYWRGaWxlcyk7XG4gICAgICBmaWxlLnN0YXR1cyA9ICd1cGxvYWRpbmcnO1xuICAgICAgZmlsZS5wZXJjZW50YWdlID0gZXYucGVyY2VudCB8fCAwO1xuICAgIH0sXG4gICAgaGFuZGxlU3VjY2VzczogZnVuY3Rpb24gaGFuZGxlU3VjY2VzcyhyZXMsIHJhd0ZpbGUpIHtcbiAgICAgIHZhciBmaWxlID0gdGhpcy5nZXRGaWxlKHJhd0ZpbGUpO1xuXG4gICAgICBpZiAoZmlsZSkge1xuICAgICAgICBmaWxlLnN0YXR1cyA9ICdzdWNjZXNzJztcbiAgICAgICAgZmlsZS5yZXNwb25zZSA9IHJlcztcblxuICAgICAgICB0aGlzLm9uU3VjY2VzcyhyZXMsIGZpbGUsIHRoaXMudXBsb2FkRmlsZXMpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKGZpbGUsIHRoaXMudXBsb2FkRmlsZXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlRXJyb3I6IGZ1bmN0aW9uIGhhbmRsZUVycm9yKGVyciwgcmF3RmlsZSkge1xuICAgICAgdmFyIGZpbGUgPSB0aGlzLmdldEZpbGUocmF3RmlsZSk7XG4gICAgICB2YXIgZmlsZUxpc3QgPSB0aGlzLnVwbG9hZEZpbGVzO1xuXG4gICAgICBmaWxlLnN0YXR1cyA9ICdmYWlsJztcblxuICAgICAgZmlsZUxpc3Quc3BsaWNlKGZpbGVMaXN0LmluZGV4T2YoZmlsZSksIDEpO1xuXG4gICAgICB0aGlzLm9uRXJyb3IoZXJyLCBmaWxlLCB0aGlzLnVwbG9hZEZpbGVzKTtcbiAgICAgIHRoaXMub25DaGFuZ2UoZmlsZSwgdGhpcy51cGxvYWRGaWxlcyk7XG4gICAgfSxcbiAgICBoYW5kbGVSZW1vdmU6IGZ1bmN0aW9uIGhhbmRsZVJlbW92ZShmaWxlLCByYXcpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAocmF3KSB7XG4gICAgICAgIGZpbGUgPSB0aGlzLmdldEZpbGUocmF3KTtcbiAgICAgIH1cbiAgICAgIHZhciBkb1JlbW92ZSA9IGZ1bmN0aW9uIGRvUmVtb3ZlKCkge1xuICAgICAgICBfdGhpczIuYWJvcnQoZmlsZSk7XG4gICAgICAgIHZhciBmaWxlTGlzdCA9IF90aGlzMi51cGxvYWRGaWxlcztcbiAgICAgICAgZmlsZUxpc3Quc3BsaWNlKGZpbGVMaXN0LmluZGV4T2YoZmlsZSksIDEpO1xuICAgICAgICBfdGhpczIub25SZW1vdmUoZmlsZSwgZmlsZUxpc3QpO1xuICAgICAgfTtcblxuICAgICAgaWYgKCF0aGlzLmJlZm9yZVJlbW92ZSkge1xuICAgICAgICBkb1JlbW92ZSgpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5iZWZvcmVSZW1vdmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIGJlZm9yZSA9IHRoaXMuYmVmb3JlUmVtb3ZlKGZpbGUsIHRoaXMudXBsb2FkRmlsZXMpO1xuICAgICAgICBpZiAoYmVmb3JlICYmIGJlZm9yZS50aGVuKSB7XG4gICAgICAgICAgYmVmb3JlLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9SZW1vdmUoKTtcbiAgICAgICAgICB9LCBzcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19ub29wKTtcbiAgICAgICAgfSBlbHNlIGlmIChiZWZvcmUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgZG9SZW1vdmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0RmlsZTogZnVuY3Rpb24gZ2V0RmlsZShyYXdGaWxlKSB7XG4gICAgICB2YXIgZmlsZUxpc3QgPSB0aGlzLnVwbG9hZEZpbGVzO1xuICAgICAgdmFyIHRhcmdldCA9IHZvaWQgMDtcbiAgICAgIGZpbGVMaXN0LmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHRhcmdldCA9IHJhd0ZpbGUudWlkID09PSBpdGVtLnVpZCA/IGl0ZW0gOiBudWxsO1xuICAgICAgICByZXR1cm4gIXRhcmdldDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9LFxuICAgIGFib3J0OiBmdW5jdGlvbiBhYm9ydChmaWxlKSB7XG4gICAgICB0aGlzLiRyZWZzWyd1cGxvYWQtaW5uZXInXS5hYm9ydChmaWxlKTtcbiAgICB9LFxuICAgIGNsZWFyRmlsZXM6IGZ1bmN0aW9uIGNsZWFyRmlsZXMoKSB7XG4gICAgICB0aGlzLnVwbG9hZEZpbGVzID0gW107XG4gICAgfSxcbiAgICBzdWJtaXQ6IGZ1bmN0aW9uIHN1Ym1pdCgpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB0aGlzLnVwbG9hZEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICByZXR1cm4gZmlsZS5zdGF0dXMgPT09ICdyZWFkeSc7XG4gICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgIF90aGlzMy4kcmVmc1sndXBsb2FkLWlubmVyJ10udXBsb2FkKGZpbGUucmF3KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0TWlncmF0aW5nQ29uZmlnOiBmdW5jdGlvbiBnZXRNaWdyYXRpbmdDb25maWcoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICdkZWZhdWx0LWZpbGUtbGlzdCc6ICdkZWZhdWx0LWZpbGUtbGlzdCBpcyByZW5hbWVkIHRvIGZpbGUtbGlzdC4nLFxuICAgICAgICAgICdzaG93LXVwbG9hZC1saXN0JzogJ3Nob3ctdXBsb2FkLWxpc3QgaXMgcmVuYW1lZCB0byBzaG93LWZpbGUtbGlzdC4nLFxuICAgICAgICAgICd0aHVtYm5haWwtbW9kZSc6ICd0aHVtYm5haWwtbW9kZSBoYXMgYmVlbiBkZXByZWNhdGVkLCB5b3UgY2FuIGltcGxlbWVudCB0aGUgc2FtZSBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoaXMgY2FzZTogaHR0cDovL2VsZW1lbnQuZWxlbWUuaW8vIy96aC1DTi9jb21wb25lbnQvdXBsb2FkI3lvbmctaHUtdG91LXhpYW5nLXNoYW5nLWNodWFuJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfSxcblxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMudXBsb2FkRmlsZXMuZm9yRWFjaChmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgaWYgKGZpbGUudXJsICYmIGZpbGUudXJsLmluZGV4T2YoJ2Jsb2I6JykgPT09IDApIHtcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChmaWxlLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgIHZhciB1cGxvYWRMaXN0ID0gdm9pZCAwO1xuXG4gICAgaWYgKHRoaXMuc2hvd0ZpbGVMaXN0KSB7XG4gICAgICB1cGxvYWRMaXN0ID0gaChcbiAgICAgICAgdXBsb2FkX2xpc3QsXG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMudXBsb2FkRGlzYWJsZWQsXG4gICAgICAgICAgICBsaXN0VHlwZTogdGhpcy5saXN0VHlwZSxcbiAgICAgICAgICAgIGZpbGVzOiB0aGlzLnVwbG9hZEZpbGVzLFxuXG4gICAgICAgICAgICBoYW5kbGVQcmV2aWV3OiB0aGlzLm9uUHJldmlldyB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAncmVtb3ZlJzogdGhpcy5oYW5kbGVSZW1vdmVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgICBpZiAoX3RoaXM0LiRzY29wZWRTbG90cy5maWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXM0LiRzY29wZWRTbG90cy5maWxlKHtcbiAgICAgICAgICAgICAgZmlsZTogcHJvcHMuZmlsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgdXBsb2FkRGF0YSA9IHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgZHJhZzogdGhpcy5kcmFnLFxuICAgICAgICBhY3Rpb246IHRoaXMuYWN0aW9uLFxuICAgICAgICBtdWx0aXBsZTogdGhpcy5tdWx0aXBsZSxcbiAgICAgICAgJ2JlZm9yZS11cGxvYWQnOiB0aGlzLmJlZm9yZVVwbG9hZCxcbiAgICAgICAgJ3dpdGgtY3JlZGVudGlhbHMnOiB0aGlzLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgIGRhdGE6IHRoaXMuZGF0YSxcbiAgICAgICAgYWNjZXB0OiB0aGlzLmFjY2VwdCxcbiAgICAgICAgZmlsZUxpc3Q6IHRoaXMudXBsb2FkRmlsZXMsXG4gICAgICAgIGF1dG9VcGxvYWQ6IHRoaXMuYXV0b1VwbG9hZCxcbiAgICAgICAgbGlzdFR5cGU6IHRoaXMubGlzdFR5cGUsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLnVwbG9hZERpc2FibGVkLFxuICAgICAgICBsaW1pdDogdGhpcy5saW1pdCxcbiAgICAgICAgJ29uLWV4Y2VlZCc6IHRoaXMub25FeGNlZWQsXG4gICAgICAgICdvbi1zdGFydCc6IHRoaXMuaGFuZGxlU3RhcnQsXG4gICAgICAgICdvbi1wcm9ncmVzcyc6IHRoaXMuaGFuZGxlUHJvZ3Jlc3MsXG4gICAgICAgICdvbi1zdWNjZXNzJzogdGhpcy5oYW5kbGVTdWNjZXNzLFxuICAgICAgICAnb24tZXJyb3InOiB0aGlzLmhhbmRsZUVycm9yLFxuICAgICAgICAnb24tcHJldmlldyc6IHRoaXMub25QcmV2aWV3LFxuICAgICAgICAnb24tcmVtb3ZlJzogdGhpcy5oYW5kbGVSZW1vdmUsXG4gICAgICAgICdodHRwLXJlcXVlc3QnOiB0aGlzLmh0dHBSZXF1ZXN0XG4gICAgICB9LFxuICAgICAgcmVmOiAndXBsb2FkLWlubmVyJ1xuICAgIH07XG5cbiAgICB2YXIgdHJpZ2dlciA9IHRoaXMuJHNsb3RzLnRyaWdnZXIgfHwgdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICB2YXIgdXBsb2FkQ29tcG9uZW50ID0gaChcbiAgICAgICd1cGxvYWQnLFxuICAgICAgdXBsb2FkRGF0YSxcbiAgICAgIFt0cmlnZ2VyXVxuICAgICk7XG5cbiAgICByZXR1cm4gaCgnZGl2JywgW3RoaXMubGlzdFR5cGUgPT09ICdwaWN0dXJlLWNhcmQnID8gdXBsb2FkTGlzdCA6ICcnLCB0aGlzLiRzbG90cy50cmlnZ2VyID8gW3VwbG9hZENvbXBvbmVudCwgdGhpcy4kc2xvdHMuZGVmYXVsdF0gOiB1cGxvYWRDb21wb25lbnQsIHRoaXMuJHNsb3RzLnRpcCwgdGhpcy5saXN0VHlwZSAhPT0gJ3BpY3R1cmUtY2FyZCcgPyB1cGxvYWRMaXN0IDogJyddKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3VwbG9hZC9zcmMvaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHVwbG9hZF9zcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoc3JjdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3VwbG9hZC9zcmMvaW5kZXgudnVlXG52YXIgc3JjX3JlbmRlciwgc3JjX3N0YXRpY1JlbmRlckZuc1xuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB1cGxvYWRfc3JjX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgdXBsb2FkX3NyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgc3JjX3JlbmRlcixcbiAgc3JjX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgc3JjX2FwaTsgfVxudXBsb2FkX3NyY19jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3VwbG9hZC9zcmMvaW5kZXgudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHVwbG9hZF9zcmMgPSAodXBsb2FkX3NyY19jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3VwbG9hZC9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG51cGxvYWRfc3JjLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodXBsb2FkX3NyYy5uYW1lLCB1cGxvYWRfc3JjKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3VwbG9hZCA9ICh1cGxvYWRfc3JjKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcHJvZ3Jlc3Mvc3JjL3Byb2dyZXNzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMjllZTQwNiZcbnZhciBwcm9ncmVzc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzIyOWVlNDA2X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXByb2dyZXNzXCIsXG4gICAgICBjbGFzczogW1xuICAgICAgICBcImVsLXByb2dyZXNzLS1cIiArIF92bS50eXBlLFxuICAgICAgICBfdm0uc3RhdHVzID8gXCJpcy1cIiArIF92bS5zdGF0dXMgOiBcIlwiLFxuICAgICAgICB7XG4gICAgICAgICAgXCJlbC1wcm9ncmVzcy0td2l0aG91dC10ZXh0XCI6ICFfdm0uc2hvd1RleHQsXG4gICAgICAgICAgXCJlbC1wcm9ncmVzcy0tdGV4dC1pbnNpZGVcIjogX3ZtLnRleHRJbnNpZGVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6IFwicHJvZ3Jlc3NiYXJcIixcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6IF92bS5wZXJjZW50YWdlLFxuICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogXCIwXCIsXG4gICAgICAgIFwiYXJpYS12YWx1ZW1heFwiOiBcIjEwMFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfdm0udHlwZSA9PT0gXCJsaW5lXCJcbiAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXByb2dyZXNzLWJhclwiIH0sIFtcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcHJvZ3Jlc3MtYmFyX19vdXRlclwiLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IF92bS5zdHJva2VXaWR0aCArIFwicHhcIixcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogX3ZtLmRlZmluZUJhY2tDb2xvclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcHJvZ3Jlc3MtYmFyX19pbm5lclwiLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogX3ZtLmJhclN0eWxlXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd1RleHQgJiYgX3ZtLnRleHRJbnNpZGVcbiAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcHJvZ3Jlc3MtYmFyX19pbm5lclRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogeyBjb2xvcjogX3ZtLnRleHRDb2xvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5jb250ZW50KSldXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIDogX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1wcm9ncmVzcy1jaXJjbGVcIixcbiAgICAgICAgICAgICAgc3R5bGU6IHsgaGVpZ2h0OiBfdm0ud2lkdGggKyBcInB4XCIsIHdpZHRoOiBfdm0ud2lkdGggKyBcInB4XCIgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJzdmdcIiwgeyBhdHRyczogeyB2aWV3Qm94OiBcIjAgMCAxMDAgMTAwXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXCJwYXRoXCIsIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXByb2dyZXNzLWNpcmNsZV9fdHJhY2tcIixcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBfdm0udHJhaWxQYXRoU3R5bGUsXG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBkOiBfdm0udHJhY2tQYXRoLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2U6IF92bS5kZWZpbmVCYWNrQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IF92bS5yZWxhdGl2ZVN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBcIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF9jKFwicGF0aFwiLCB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1wcm9ncmVzcy1jaXJjbGVfX3BhdGhcIixcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBfdm0uY2lyY2xlUGF0aFN0eWxlLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgZDogX3ZtLnRyYWNrUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBfdm0uc3Ryb2tlLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBfdm0uc3Ryb2tlTGluZWNhcCxcbiAgICAgICAgICAgICAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogX3ZtLnBlcmNlbnRhZ2UgPyBfdm0ucmVsYXRpdmVTdHJva2VXaWR0aCA6IDBcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICBfdm0uc2hvd1RleHQgJiYgIV92bS50ZXh0SW5zaWRlXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1wcm9ncmVzc19fdGV4dFwiLFxuICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiBfdm0ucHJvZ3Jlc3NUZXh0U2l6ZSArIFwicHhcIixcbiAgICAgICAgICAgICAgICBjb2xvcjogX3ZtLnRleHRDb2xvclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAhX3ZtLnN0YXR1c1xuICAgICAgICAgICAgICAgID8gW192bS5fdihfdm0uX3MoX3ZtLmNvbnRlbnQpKV1cbiAgICAgICAgICAgICAgICA6IF9jKFwiaVwiLCB7IGNsYXNzOiBfdm0uaWNvbkNsYXNzIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF1cbiAgKVxufVxudmFyIHByb2dyZXNzdnVlX3R5cGVfdGVtcGxhdGVfaWRfMjI5ZWU0MDZfc3RhdGljUmVuZGVyRm5zID0gW11cbnByb2dyZXNzdnVlX3R5cGVfdGVtcGxhdGVfaWRfMjI5ZWU0MDZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wcm9ncmVzcy9zcmMvcHJvZ3Jlc3MudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIyOWVlNDA2JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9wcm9ncmVzcy9zcmMvcHJvZ3Jlc3MudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcHJvZ3Jlc3N2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxQcm9ncmVzcycsXG4gIHByb3BzOiB7XG4gICAgdHlwZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2xpbmUnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgIHJldHVybiBbJ2xpbmUnLCAnY2lyY2xlJywgJ2Rhc2hib2FyZCddLmluZGV4T2YodmFsKSA+IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGVyY2VudGFnZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMCxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgIHJldHVybiB2YWwgPj0gMCAmJiB2YWwgPD0gMTAwO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWwpIHtcbiAgICAgICAgcmV0dXJuIFsnc3VjY2VzcycsICdleGNlcHRpb24nLCAnd2FybmluZyddLmluZGV4T2YodmFsKSA+IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3Ryb2tlV2lkdGg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDZcbiAgICB9LFxuICAgIHN0cm9rZUxpbmVjYXA6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdyb3VuZCdcbiAgICB9LFxuICAgIHRleHRJbnNpZGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgd2lkdGg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDEyNlxuICAgIH0sXG4gICAgc2hvd1RleHQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIEZ1bmN0aW9uXSxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBkZWZpbmVCYWNrQ29sb3I6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBGdW5jdGlvbl0sXG4gICAgICBkZWZhdWx0OiAnI2ViZWVmNSdcbiAgICB9LFxuICAgIHRleHRDb2xvcjoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIEZ1bmN0aW9uXSxcbiAgICAgIGRlZmF1bHQ6ICcjNjA2MjY2J1xuICAgIH0sXG4gICAgZm9ybWF0OiBGdW5jdGlvblxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGJhclN0eWxlOiBmdW5jdGlvbiBiYXJTdHlsZSgpIHtcbiAgICAgIHZhciBzdHlsZSA9IHt9O1xuICAgICAgc3R5bGUud2lkdGggPSB0aGlzLnBlcmNlbnRhZ2UgKyAnJSc7XG4gICAgICBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmdldEN1cnJlbnRDb2xvcih0aGlzLnBlcmNlbnRhZ2UpO1xuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH0sXG4gICAgcmVsYXRpdmVTdHJva2VXaWR0aDogZnVuY3Rpb24gcmVsYXRpdmVTdHJva2VXaWR0aCgpIHtcbiAgICAgIHJldHVybiAodGhpcy5zdHJva2VXaWR0aCAvIHRoaXMud2lkdGggKiAxMDApLnRvRml4ZWQoMSk7XG4gICAgfSxcbiAgICByYWRpdXM6IGZ1bmN0aW9uIHJhZGl1cygpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdjaXJjbGUnIHx8IHRoaXMudHlwZSA9PT0gJ2Rhc2hib2FyZCcpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KDUwIC0gcGFyc2VGbG9hdCh0aGlzLnJlbGF0aXZlU3Ryb2tlV2lkdGgpIC8gMiwgMTApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSxcbiAgICB0cmFja1BhdGg6IGZ1bmN0aW9uIHRyYWNrUGF0aCgpIHtcbiAgICAgIHZhciByYWRpdXMgPSB0aGlzLnJhZGl1cztcbiAgICAgIHZhciBpc0Rhc2hib2FyZCA9IHRoaXMudHlwZSA9PT0gJ2Rhc2hib2FyZCc7XG4gICAgICByZXR1cm4gJ1xcbiAgICAgICAgTSA1MCA1MFxcbiAgICAgICAgbSAwICcgKyAoaXNEYXNoYm9hcmQgPyAnJyA6ICctJykgKyByYWRpdXMgKyAnXFxuICAgICAgICBhICcgKyByYWRpdXMgKyAnICcgKyByYWRpdXMgKyAnIDAgMSAxIDAgJyArIChpc0Rhc2hib2FyZCA/ICctJyA6ICcnKSArIHJhZGl1cyAqIDIgKyAnXFxuICAgICAgICBhICcgKyByYWRpdXMgKyAnICcgKyByYWRpdXMgKyAnIDAgMSAxIDAgJyArIChpc0Rhc2hib2FyZCA/ICcnIDogJy0nKSArIHJhZGl1cyAqIDIgKyAnXFxuICAgICAgICAnO1xuICAgIH0sXG4gICAgcGVyaW1ldGVyOiBmdW5jdGlvbiBwZXJpbWV0ZXIoKSB7XG4gICAgICByZXR1cm4gMiAqIE1hdGguUEkgKiB0aGlzLnJhZGl1cztcbiAgICB9LFxuICAgIHJhdGU6IGZ1bmN0aW9uIHJhdGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy50eXBlID09PSAnZGFzaGJvYXJkJyA/IDAuNzUgOiAxO1xuICAgIH0sXG4gICAgc3Ryb2tlRGFzaG9mZnNldDogZnVuY3Rpb24gc3Ryb2tlRGFzaG9mZnNldCgpIHtcbiAgICAgIHZhciBvZmZzZXQgPSAtMSAqIHRoaXMucGVyaW1ldGVyICogKDEgLSB0aGlzLnJhdGUpIC8gMjtcbiAgICAgIHJldHVybiBvZmZzZXQgKyAncHgnO1xuICAgIH0sXG4gICAgdHJhaWxQYXRoU3R5bGU6IGZ1bmN0aW9uIHRyYWlsUGF0aFN0eWxlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiB0aGlzLnBlcmltZXRlciAqIHRoaXMucmF0ZSArICdweCwgJyArIHRoaXMucGVyaW1ldGVyICsgJ3B4JyxcbiAgICAgICAgc3Ryb2tlRGFzaG9mZnNldDogdGhpcy5zdHJva2VEYXNob2Zmc2V0XG4gICAgICB9O1xuICAgIH0sXG4gICAgY2lyY2xlUGF0aFN0eWxlOiBmdW5jdGlvbiBjaXJjbGVQYXRoU3R5bGUoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdHJva2VEYXNoYXJyYXk6IHRoaXMucGVyaW1ldGVyICogdGhpcy5yYXRlICogKHRoaXMucGVyY2VudGFnZSAvIDEwMCkgKyAncHgsICcgKyB0aGlzLnBlcmltZXRlciArICdweCcsXG4gICAgICAgIHN0cm9rZURhc2hvZmZzZXQ6IHRoaXMuc3Ryb2tlRGFzaG9mZnNldCxcbiAgICAgICAgdHJhbnNpdGlvbjogJ3N0cm9rZS1kYXNoYXJyYXkgMC42cyBlYXNlIDBzLCBzdHJva2UgMC42cyBlYXNlJ1xuICAgICAgfTtcbiAgICB9LFxuICAgIHN0cm9rZTogZnVuY3Rpb24gc3Ryb2tlKCkge1xuICAgICAgdmFyIHJldCA9IHZvaWQgMDtcbiAgICAgIGlmICh0aGlzLmNvbG9yKSB7XG4gICAgICAgIHJldCA9IHRoaXMuZ2V0Q3VycmVudENvbG9yKHRoaXMucGVyY2VudGFnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc3RhdHVzKSB7XG4gICAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgICAgICByZXQgPSAnIzEzY2U2Nic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdleGNlcHRpb24nOlxuICAgICAgICAgICAgcmV0ID0gJyNmZjQ5NDknO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgICByZXQgPSAnI2U2YTIzYyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0ID0gJyMyMGEwZmYnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0sXG4gICAgaWNvbkNsYXNzOiBmdW5jdGlvbiBpY29uQ2xhc3MoKSB7XG4gICAgICBpZiAodGhpcy5zdGF0dXMgPT09ICd3YXJuaW5nJykge1xuICAgICAgICByZXR1cm4gJ2VsLWljb24td2FybmluZyc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50eXBlID09PSAnbGluZScpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSAnc3VjY2VzcycgPyAnZWwtaWNvbi1jaXJjbGUtY2hlY2snIDogJ2VsLWljb24tY2lyY2xlLWNsb3NlJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnID8gJ2VsLWljb24tY2hlY2snIDogJ2VsLWljb24tY2xvc2UnO1xuICAgICAgfVxuICAgIH0sXG4gICAgcHJvZ3Jlc3NUZXh0U2l6ZTogZnVuY3Rpb24gcHJvZ3Jlc3NUZXh0U2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdsaW5lJyA/IDEyICsgdGhpcy5zdHJva2VXaWR0aCAqIDAuNCA6IHRoaXMud2lkdGggKiAwLjExMTExMSArIDI7XG4gICAgfSxcbiAgICBjb250ZW50OiBmdW5jdGlvbiBjb250ZW50KCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvcm1hdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQodGhpcy5wZXJjZW50YWdlKSB8fCAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcmNlbnRhZ2UgKyAnJSc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0Q3VycmVudENvbG9yOiBmdW5jdGlvbiBnZXRDdXJyZW50Q29sb3IocGVyY2VudGFnZSkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbG9yKHBlcmNlbnRhZ2UpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRMZXZlbENvbG9yKHBlcmNlbnRhZ2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0TGV2ZWxDb2xvcjogZnVuY3Rpb24gZ2V0TGV2ZWxDb2xvcihwZXJjZW50YWdlKSB7XG4gICAgICB2YXIgY29sb3JBcnJheSA9IHRoaXMuZ2V0Q29sb3JBcnJheSgpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEucGVyY2VudGFnZSAtIGIucGVyY2VudGFnZTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbG9yQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGNvbG9yQXJyYXlbaV0ucGVyY2VudGFnZSA+IHBlcmNlbnRhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gY29sb3JBcnJheVtpXS5jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbG9yQXJyYXlbY29sb3JBcnJheS5sZW5ndGggLSAxXS5jb2xvcjtcbiAgICB9LFxuICAgIGdldENvbG9yQXJyYXk6IGZ1bmN0aW9uIGdldENvbG9yQXJyYXkoKSB7XG4gICAgICB2YXIgY29sb3IgPSB0aGlzLmNvbG9yO1xuICAgICAgdmFyIHNwYW4gPSAxMDAgLyBjb2xvci5sZW5ndGg7XG4gICAgICByZXR1cm4gY29sb3IubWFwKGZ1bmN0aW9uIChzZXJpZXNDb2xvciwgaW5kZXgpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXJpZXNDb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sb3I6IHNlcmllc0NvbG9yLFxuICAgICAgICAgICAgcGVyY2VudGFnZTogKGluZGV4ICsgMSkgKiBzcGFuXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VyaWVzQ29sb3I7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wcm9ncmVzcy9zcmMvcHJvZ3Jlc3MudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19wcm9ncmVzc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChwcm9ncmVzc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wcm9ncmVzcy9zcmMvcHJvZ3Jlc3MudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgcHJvZ3Jlc3NfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfcHJvZ3Jlc3N2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHByb2dyZXNzdnVlX3R5cGVfdGVtcGxhdGVfaWRfMjI5ZWU0MDZfcmVuZGVyLFxuICBwcm9ncmVzc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzIyOWVlNDA2X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgcHJvZ3Jlc3NfYXBpOyB9XG5wcm9ncmVzc19jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3Byb2dyZXNzL3NyYy9wcm9ncmVzcy52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcHJvZ3Jlc3MgPSAocHJvZ3Jlc3NfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wcm9ncmVzcy9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5wcm9ncmVzcy5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHByb2dyZXNzLm5hbWUsIHByb2dyZXNzKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3Byb2dyZXNzID0gKHByb2dyZXNzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc3Bpbm5lci9zcmMvc3Bpbm5lci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Njk3Yjg1MzgmXG52YXIgc3Bpbm5lcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzY5N2I4NTM4X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1zcGlubmVyXCIgfSwgW1xuICAgIF9jKFxuICAgICAgXCJzdmdcIixcbiAgICAgIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc3Bpbm5lci1pbm5lclwiLFxuICAgICAgICBzdHlsZTogeyB3aWR0aDogX3ZtLnJhZGl1cyAvIDIgKyBcInB4XCIsIGhlaWdodDogX3ZtLnJhZGl1cyAvIDIgKyBcInB4XCIgfSxcbiAgICAgICAgYXR0cnM6IHsgdmlld0JveDogXCIwIDAgNTAgNTBcIiB9XG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICBfYyhcImNpcmNsZVwiLCB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwicGF0aFwiLFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBjeDogXCIyNVwiLFxuICAgICAgICAgICAgY3k6IFwiMjVcIixcbiAgICAgICAgICAgIHI6IFwiMjBcIixcbiAgICAgICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICAgICAgc3Ryb2tlOiBfdm0uc3Ryb2tlQ29sb3IsXG4gICAgICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBfdm0uc3Ryb2tlV2lkdGhcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgKVxuICBdKVxufVxudmFyIHNwaW5uZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF82OTdiODUzOF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuc3Bpbm5lcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzY5N2I4NTM4X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc3Bpbm5lci9zcmMvc3Bpbm5lci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Njk3Yjg1MzgmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3NwaW5uZXIvc3JjL3NwaW5uZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3Bpbm5lcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFNwaW5uZXInLFxuICBwcm9wczoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICByYWRpdXM6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDEwMFxuICAgIH0sXG4gICAgc3Ryb2tlV2lkdGg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDVcbiAgICB9LFxuICAgIHN0cm9rZUNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnI2VmZWZlZidcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zcGlubmVyL3NyYy9zcGlubmVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfc3Bpbm5lcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChzcGlubmVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NwaW5uZXIvc3JjL3NwaW5uZXIudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgc3Bpbm5lcl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19zcGlubmVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBzcGlubmVydnVlX3R5cGVfdGVtcGxhdGVfaWRfNjk3Yjg1MzhfcmVuZGVyLFxuICBzcGlubmVydnVlX3R5cGVfdGVtcGxhdGVfaWRfNjk3Yjg1Mzhfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBzcGlubmVyX2FwaTsgfVxuc3Bpbm5lcl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3NwaW5uZXIvc3JjL3NwaW5uZXIudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNwaW5uZXIgPSAoc3Bpbm5lcl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NwaW5uZXIvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3Bpbm5lci5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHNwaW5uZXIubmFtZSwgc3Bpbm5lcik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19zcGlubmVyID0gKHNwaW5uZXIpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9tZXNzYWdlL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTViOWY2MCZcbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNDU1YjlmNjBfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwidHJhbnNpdGlvblwiLFxuICAgIHtcbiAgICAgIGF0dHJzOiB7IG5hbWU6IFwiZWwtbWVzc2FnZS1mYWRlXCIgfSxcbiAgICAgIG9uOiB7IFwiYWZ0ZXItbGVhdmVcIjogX3ZtLmhhbmRsZUFmdGVyTGVhdmUgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZpc2libGUsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IFwidmlzaWJsZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgXCJlbC1tZXNzYWdlXCIsXG4gICAgICAgICAgICBfdm0udHlwZSAmJiAhX3ZtLmljb25DbGFzcyA/IFwiZWwtbWVzc2FnZS0tXCIgKyBfdm0udHlwZSA6IFwiXCIsXG4gICAgICAgICAgICBfdm0uY2VudGVyID8gXCJpcy1jZW50ZXJcIiA6IFwiXCIsXG4gICAgICAgICAgICBfdm0uc2hvd0Nsb3NlID8gXCJpcy1jbG9zYWJsZVwiIDogXCJcIixcbiAgICAgICAgICAgIF92bS5jdXN0b21DbGFzc1xuICAgICAgICAgIF0sXG4gICAgICAgICAgc3R5bGU6IF92bS5wb3NpdGlvblN0eWxlLFxuICAgICAgICAgIGF0dHJzOiB7IHJvbGU6IFwiYWxlcnRcIiB9LFxuICAgICAgICAgIG9uOiB7IG1vdXNlZW50ZXI6IF92bS5jbGVhclRpbWVyLCBtb3VzZWxlYXZlOiBfdm0uc3RhcnRUaW1lciB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfdm0uaWNvbkNsYXNzXG4gICAgICAgICAgICA/IF9jKFwiaVwiLCB7IGNsYXNzOiBfdm0uaWNvbkNsYXNzIH0pXG4gICAgICAgICAgICA6IF9jKFwiaVwiLCB7IGNsYXNzOiBfdm0udHlwZUNsYXNzIH0pLFxuICAgICAgICAgIF92bS5fdChcImRlZmF1bHRcIiwgW1xuICAgICAgICAgICAgIV92bS5kYW5nZXJvdXNseVVzZUhUTUxTdHJpbmdcbiAgICAgICAgICAgICAgPyBfYyhcInBcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1tZXNzYWdlX19jb250ZW50XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0ubWVzc2FnZSkpXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgOiBfYyhcInBcIiwge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtbWVzc2FnZV9fY29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgaW5uZXJIVE1MOiBfdm0uX3MoX3ZtLm1lc3NhZ2UpIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5zaG93Q2xvc2VcbiAgICAgICAgICAgID8gX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1tZXNzYWdlX19jbG9zZUJ0biBlbC1pY29uLWNsb3NlXCIsXG4gICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5jbG9zZSB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICBdXG4gIClcbn1cbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNDU1YjlmNjBfc3RhdGljUmVuZGVyRm5zID0gW11cbm1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF80NTViOWY2MF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL21lc3NhZ2Uvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1NWI5ZjYwJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9tZXNzYWdlL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG52YXIgc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc190eXBlTWFwID0ge1xuICBzdWNjZXNzOiAnc3VjY2VzcycsXG4gIGluZm86ICdpbmZvJyxcbiAgd2FybmluZzogJ3dhcm5pbmcnLFxuICBlcnJvcjogJ2Vycm9yJ1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbWVzc2FnZV9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgIGljb25DbGFzczogJycsXG4gICAgICBjdXN0b21DbGFzczogJycsXG4gICAgICBvbkNsb3NlOiBudWxsLFxuICAgICAgc2hvd0Nsb3NlOiBmYWxzZSxcbiAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICB2ZXJ0aWNhbE9mZnNldDogMjAsXG4gICAgICB0aW1lcjogbnVsbCxcbiAgICAgIGRhbmdlcm91c2x5VXNlSFRNTFN0cmluZzogZmFsc2UsXG4gICAgICBjZW50ZXI6IGZhbHNlXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB7XG4gICAgdHlwZUNsYXNzOiBmdW5jdGlvbiB0eXBlQ2xhc3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy50eXBlICYmICF0aGlzLmljb25DbGFzcyA/ICdlbC1tZXNzYWdlX19pY29uIGVsLWljb24tJyArIHNyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfdHlwZU1hcFt0aGlzLnR5cGVdIDogJyc7XG4gICAgfSxcbiAgICBwb3NpdGlvblN0eWxlOiBmdW5jdGlvbiBwb3NpdGlvblN0eWxlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ3RvcCc6IHRoaXMudmVydGljYWxPZmZzZXQgKyAncHgnXG4gICAgICB9O1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGNsb3NlZDogZnVuY3Rpb24gY2xvc2VkKG5ld1ZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUFmdGVyTGVhdmU6IGZ1bmN0aW9uIGhhbmRsZUFmdGVyTGVhdmUoKSB7XG4gICAgICB0aGlzLiRkZXN0cm95KHRydWUpO1xuICAgICAgdGhpcy4kZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLiRlbCk7XG4gICAgfSxcbiAgICBjbG9zZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICBpZiAodHlwZW9mIHRoaXMub25DbG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLm9uQ2xvc2UodGhpcyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGVhclRpbWVyOiBmdW5jdGlvbiBjbGVhclRpbWVyKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgIH0sXG4gICAgc3RhcnRUaW1lcjogZnVuY3Rpb24gc3RhcnRUaW1lcigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmR1cmF0aW9uID4gMCkge1xuICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKCFfdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIF90aGlzLmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCB0aGlzLmR1cmF0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGtleWRvd246IGZ1bmN0aW9uIGtleWRvd24oZSkge1xuICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcpIHtcbiAgICAgICAgLy8gZXNj5YWz6Zet5raI5oGvXG4gICAgICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMua2V5ZG93bik7XG4gIH0sXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMua2V5ZG93bik7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9tZXNzYWdlL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19tZXNzYWdlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKG1lc3NhZ2Vfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVzc2FnZS9zcmMvbWFpbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBtZXNzYWdlX3NyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfbWVzc2FnZV9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQ1NWI5ZjYwX3JlbmRlcixcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQ1NWI5ZjYwX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgbWVzc2FnZV9zcmNfbWFpbl9hcGk7IH1cbm1lc3NhZ2Vfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9tZXNzYWdlL3NyYy9tYWluLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtZXNzYWdlX3NyY19tYWluID0gKG1lc3NhZ2Vfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3R5cGVzXCJcbnZhciB0eXBlc18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9tZXNzYWdlL3NyYy9tYWluLmpzXG52YXIgbWFpbl9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuXG5cblxuXG5cbnZhciBNZXNzYWdlQ29uc3RydWN0b3IgPSBleHRlcm5hbF92dWVfZGVmYXVsdC5hLmV4dGVuZChtZXNzYWdlX3NyY19tYWluKTtcblxudmFyIG1lc3NhZ2Vfc3JjX21haW5faW5zdGFuY2UgPSB2b2lkIDA7XG52YXIgbWFpbl9pbnN0YW5jZXMgPSBbXTtcbnZhciBtYWluX3NlZWQgPSAxO1xuXG52YXIgbWFpbl9NZXNzYWdlID0gZnVuY3Rpb24gTWVzc2FnZShvcHRpb25zKSB7XG4gIGlmIChleHRlcm5hbF92dWVfZGVmYXVsdC5hLnByb3RvdHlwZS4kaXNTZXJ2ZXIpIHJldHVybjtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgbWVzc2FnZTogb3B0aW9uc1xuICAgIH07XG4gIH1cbiAgdmFyIHVzZXJPbkNsb3NlID0gb3B0aW9ucy5vbkNsb3NlO1xuICB2YXIgaWQgPSAnbWVzc2FnZV8nICsgbWFpbl9zZWVkKys7XG5cbiAgb3B0aW9ucy5vbkNsb3NlID0gZnVuY3Rpb24gKCkge1xuICAgIE1lc3NhZ2UuY2xvc2UoaWQsIHVzZXJPbkNsb3NlKTtcbiAgfTtcbiAgbWVzc2FnZV9zcmNfbWFpbl9pbnN0YW5jZSA9IG5ldyBNZXNzYWdlQ29uc3RydWN0b3Ioe1xuICAgIGRhdGE6IG9wdGlvbnNcbiAgfSk7XG4gIG1lc3NhZ2Vfc3JjX21haW5faW5zdGFuY2UuaWQgPSBpZDtcbiAgaWYgKE9iamVjdCh2ZG9tX1tcImlzVk5vZGVcIl0pKG1lc3NhZ2Vfc3JjX21haW5faW5zdGFuY2UubWVzc2FnZSkpIHtcbiAgICBtZXNzYWdlX3NyY19tYWluX2luc3RhbmNlLiRzbG90cy5kZWZhdWx0ID0gW21lc3NhZ2Vfc3JjX21haW5faW5zdGFuY2UubWVzc2FnZV07XG4gICAgbWVzc2FnZV9zcmNfbWFpbl9pbnN0YW5jZS5tZXNzYWdlID0gbnVsbDtcbiAgfVxuICBtZXNzYWdlX3NyY19tYWluX2luc3RhbmNlLiRtb3VudCgpO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1lc3NhZ2Vfc3JjX21haW5faW5zdGFuY2UuJGVsKTtcbiAgdmFyIHZlcnRpY2FsT2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQgfHwgMjA7XG4gIG1haW5faW5zdGFuY2VzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2ZXJ0aWNhbE9mZnNldCArPSBpdGVtLiRlbC5vZmZzZXRIZWlnaHQgKyAxNjtcbiAgfSk7XG4gIG1lc3NhZ2Vfc3JjX21haW5faW5zdGFuY2UudmVydGljYWxPZmZzZXQgPSB2ZXJ0aWNhbE9mZnNldDtcbiAgbWVzc2FnZV9zcmNfbWFpbl9pbnN0YW5jZS52aXNpYmxlID0gdHJ1ZTtcbiAgbWVzc2FnZV9zcmNfbWFpbl9pbnN0YW5jZS4kZWwuc3R5bGUuekluZGV4ID0gcG9wdXBfW1wiUG9wdXBNYW5hZ2VyXCJdLm5leHRaSW5kZXgoKTtcbiAgbWFpbl9pbnN0YW5jZXMucHVzaChtZXNzYWdlX3NyY19tYWluX2luc3RhbmNlKTtcbiAgcmV0dXJuIG1lc3NhZ2Vfc3JjX21haW5faW5zdGFuY2U7XG59O1xuXG5bJ3N1Y2Nlc3MnLCAnd2FybmluZycsICdpbmZvJywgJ2Vycm9yJ10uZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICBtYWluX01lc3NhZ2VbdHlwZV0gPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIGlmIChPYmplY3QodHlwZXNfW1wiaXNPYmplY3RcIl0pKG9wdGlvbnMpICYmICFPYmplY3QodmRvbV9bXCJpc1ZOb2RlXCJdKShvcHRpb25zKSkge1xuICAgICAgcmV0dXJuIG1haW5fTWVzc2FnZShtYWluX2V4dGVuZHMoe30sIG9wdGlvbnMsIHtcbiAgICAgICAgdHlwZTogdHlwZVxuICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gbWFpbl9NZXNzYWdlKHtcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBtZXNzYWdlOiBvcHRpb25zXG4gICAgfSk7XG4gIH07XG59KTtcblxubWFpbl9NZXNzYWdlLmNsb3NlID0gZnVuY3Rpb24gKGlkLCB1c2VyT25DbG9zZSkge1xuICB2YXIgbGVuID0gbWFpbl9pbnN0YW5jZXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIHJlbW92ZWRIZWlnaHQgPSB2b2lkIDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoaWQgPT09IG1haW5faW5zdGFuY2VzW2ldLmlkKSB7XG4gICAgICByZW1vdmVkSGVpZ2h0ID0gbWFpbl9pbnN0YW5jZXNbaV0uJGVsLm9mZnNldEhlaWdodDtcbiAgICAgIGluZGV4ID0gaTtcbiAgICAgIGlmICh0eXBlb2YgdXNlck9uQ2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdXNlck9uQ2xvc2UobWFpbl9pbnN0YW5jZXNbaV0pO1xuICAgICAgfVxuICAgICAgbWFpbl9pbnN0YW5jZXMuc3BsaWNlKGksIDEpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChsZW4gPD0gMSB8fCBpbmRleCA9PT0gLTEgfHwgaW5kZXggPiBtYWluX2luc3RhbmNlcy5sZW5ndGggLSAxKSByZXR1cm47XG4gIGZvciAodmFyIF9pID0gaW5kZXg7IF9pIDwgbGVuIC0gMTsgX2krKykge1xuICAgIHZhciBkb20gPSBtYWluX2luc3RhbmNlc1tfaV0uJGVsO1xuICAgIGRvbS5zdHlsZVsndG9wJ10gPSBwYXJzZUludChkb20uc3R5bGVbJ3RvcCddLCAxMCkgLSByZW1vdmVkSGVpZ2h0IC0gMTYgKyAncHgnO1xuICB9XG59O1xuXG5tYWluX01lc3NhZ2UuY2xvc2VBbGwgPSBmdW5jdGlvbiAoKSB7XG4gIGZvciAodmFyIGkgPSBtYWluX2luc3RhbmNlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIG1haW5faW5zdGFuY2VzW2ldLmNsb3NlKCk7XG4gIH1cbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX21lc3NhZ2Vfc3JjX21haW4gPSAobWFpbl9NZXNzYWdlKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWVzc2FnZS9pbmRleC5qc1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19tZXNzYWdlID0gKHBhY2thZ2VzX21lc3NhZ2Vfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9iYWRnZS9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2NjYjY1OTgmXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzdjY2I2NTk4X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtYmFkZ2VcIiB9LFxuICAgIFtcbiAgICAgIF92bS5fdChcImRlZmF1bHRcIiksXG4gICAgICBfYyhcInRyYW5zaXRpb25cIiwgeyBhdHRyczogeyBuYW1lOiBcImVsLXpvb20taW4tY2VudGVyXCIgfSB9LCBbXG4gICAgICAgIF9jKFwic3VwXCIsIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAhX3ZtLmhpZGRlbiAmJiAoX3ZtLmNvbnRlbnQgfHwgX3ZtLmNvbnRlbnQgPT09IDAgfHwgX3ZtLmlzRG90KSxcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIhaGlkZGVuICYmIChjb250ZW50IHx8IGNvbnRlbnQgPT09IDAgfHwgaXNEb3QpXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWJhZGdlX19jb250ZW50XCIsXG4gICAgICAgICAgY2xhc3M6IFtcbiAgICAgICAgICAgIF92bS50eXBlID8gXCJlbC1iYWRnZV9fY29udGVudC0tXCIgKyBfdm0udHlwZSA6IG51bGwsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiaXMtZml4ZWRcIjogX3ZtLiRzbG90cy5kZWZhdWx0LFxuICAgICAgICAgICAgICBcImlzLWRvdFwiOiBfdm0uaXNEb3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIGRvbVByb3BzOiB7IHRleHRDb250ZW50OiBfdm0uX3MoX3ZtLmNvbnRlbnQpIH1cbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgXSxcbiAgICAyXG4gIClcbn1cbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfN2NjYjY1OThfc3RhdGljUmVuZGVyRm5zID0gW11cbm1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF83Y2NiNjU5OF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2JhZGdlL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2NiNjU5OCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYmFkZ2Uvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJhZGdlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsQmFkZ2UnLFxuXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgbWF4OiBOdW1iZXIsXG4gICAgaXNEb3Q6IEJvb2xlYW4sXG4gICAgaGlkZGVuOiBCb29sZWFuLFxuICAgIHR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gWydwcmltYXJ5JywgJ3N1Y2Nlc3MnLCAnd2FybmluZycsICdpbmZvJywgJ2RhbmdlciddLmluZGV4T2YodmFsKSA+IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGNvbnRlbnQ6IGZ1bmN0aW9uIGNvbnRlbnQoKSB7XG4gICAgICBpZiAodGhpcy5pc0RvdCkgcmV0dXJuO1xuXG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdmFyIG1heCA9IHRoaXMubWF4O1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgbWF4ID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gbWF4IDwgdmFsdWUgPyBtYXggKyAnKycgOiB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2JhZGdlL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19iYWRnZV9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChiYWRnZV9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9iYWRnZS9zcmMvbWFpbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBiYWRnZV9zcmNfbWFpbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX2JhZGdlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfN2NjYjY1OThfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfN2NjYjY1OThfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBiYWRnZV9zcmNfbWFpbl9hcGk7IH1cbmJhZGdlX3NyY19tYWluX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvYmFkZ2Uvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJhZGdlX3NyY19tYWluID0gKGJhZGdlX3NyY19tYWluX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYmFkZ2UvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuYmFkZ2Vfc3JjX21haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChiYWRnZV9zcmNfbWFpbi5uYW1lLCBiYWRnZV9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBiYWRnZSA9IChiYWRnZV9zcmNfbWFpbik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NhcmQvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU5YTRhNDBmJlxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF81OWE0YTQwZl9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1jYXJkXCIsXG4gICAgICBjbGFzczogX3ZtLnNoYWRvdyA/IFwiaXMtXCIgKyBfdm0uc2hhZG93ICsgXCItc2hhZG93XCIgOiBcImlzLWFsd2F5cy1zaGFkb3dcIlxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLiRzbG90cy5oZWFkZXIgfHwgX3ZtLmhlYWRlclxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtY2FyZF9faGVhZGVyXCIgfSxcbiAgICAgICAgICAgIFtfdm0uX3QoXCJoZWFkZXJcIiwgW192bS5fdihfdm0uX3MoX3ZtLmhlYWRlcikpXSldLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWNhcmRfX2JvZHlcIiwgc3R5bGU6IF92bS5ib2R5U3R5bGUgfSxcbiAgICAgICAgW192bS5fdChcImRlZmF1bHRcIildLFxuICAgICAgICAyXG4gICAgICApXG4gICAgXVxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU5YTRhNDBmX3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNTlhNGE0MGZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXJkL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01OWE0YTQwZiZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2FyZC9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2FyZF9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbENhcmQnLFxuICBwcm9wczoge1xuICAgIGhlYWRlcjoge30sXG4gICAgYm9keVN0eWxlOiB7fSxcbiAgICBzaGFkb3c6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NhcmQvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2NhcmRfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoY2FyZF9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXJkL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNhcmRfc3JjX21haW5fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19jYXJkX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNTlhNGE0MGZfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNTlhNGE0MGZfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBjYXJkX3NyY19tYWluX2FwaTsgfVxuY2FyZF9zcmNfbWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2NhcmQvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNhcmRfc3JjX21haW4gPSAoY2FyZF9zcmNfbWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NhcmQvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY2FyZF9zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGNhcmRfc3JjX21haW4ubmFtZSwgY2FyZF9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjYXJkID0gKGNhcmRfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9yYXRlL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hZGE1Nzc4MiZcbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfYWRhNTc3ODJfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcmF0ZVwiLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogXCJzbGlkZXJcIixcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6IF92bS5jdXJyZW50VmFsdWUsXG4gICAgICAgIFwiYXJpYS12YWx1ZXRleHRcIjogX3ZtLnRleHQsXG4gICAgICAgIFwiYXJpYS12YWx1ZW1pblwiOiBcIjBcIixcbiAgICAgICAgXCJhcmlhLXZhbHVlbWF4XCI6IF92bS5tYXgsXG4gICAgICAgIHRhYmluZGV4OiBcIjBcIlxuICAgICAgfSxcbiAgICAgIG9uOiB7IGtleWRvd246IF92bS5oYW5kbGVLZXkgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLl9sKF92bS5tYXgsIGZ1bmN0aW9uKGl0ZW0sIGtleSkge1xuICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1yYXRlX19pdGVtXCIsXG4gICAgICAgICAgICBzdHlsZTogeyBjdXJzb3I6IF92bS5yYXRlRGlzYWJsZWQgPyBcImF1dG9cIiA6IFwicG9pbnRlclwiIH0sXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBtb3VzZW1vdmU6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5zZXRDdXJyZW50VmFsdWUoaXRlbSwgJGV2ZW50KVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtb3VzZWxlYXZlOiBfdm0ucmVzZXRDdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBfdm0uc2VsZWN0VmFsdWUoaXRlbSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiaVwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcmF0ZV9faWNvblwiLFxuICAgICAgICAgICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgICAgICAgICBfdm0uY2xhc3Nlc1tpdGVtIC0gMV0sXG4gICAgICAgICAgICAgICAgICB7IGhvdmVyOiBfdm0uaG92ZXJJbmRleCA9PT0gaXRlbSB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdHlsZTogX3ZtLmdldEljb25TdHlsZShpdGVtKVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX3ZtLnNob3dEZWNpbWFsSWNvbihpdGVtKVxuICAgICAgICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXJhdGVfX2RlY2ltYWxcIixcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzczogX3ZtLmRlY2ltYWxJY29uQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IF92bS5kZWNpbWFsU3R5bGVcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF1cbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBfdm0uc2hvd1RleHQgfHwgX3ZtLnNob3dTY29yZVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLXJhdGVfX3RleHRcIiwgc3R5bGU6IHsgY29sb3I6IF92bS50ZXh0Q29sb3IgfSB9LFxuICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnRleHQpKV1cbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKClcbiAgICBdLFxuICAgIDJcbiAgKVxufVxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF9hZGE1Nzc4Ml9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkX2FkYTU3NzgyX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmF0ZS9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YWRhNTc3ODImXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3JhdGUvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciByYXRlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsUmF0ZScsXG5cbiAgbWl4aW5zOiBbbWlncmF0aW5nX2RlZmF1bHQuYV0sXG5cbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb2ludGVyQXRMZWZ0SGFsZjogdHJ1ZSxcbiAgICAgIGN1cnJlbnRWYWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGhvdmVySW5kZXg6IC0xXG4gICAgfTtcbiAgfSxcblxuXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIGxvd1RocmVzaG9sZDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMlxuICAgIH0sXG4gICAgaGlnaFRocmVzaG9sZDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogNFxuICAgIH0sXG4gICAgbWF4OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiA1XG4gICAgfSxcbiAgICBjb2xvcnM6IHtcbiAgICAgIHR5cGU6IFtBcnJheSwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gWycjRjdCQTJBJywgJyNGN0JBMkEnLCAnI0Y3QkEyQSddO1xuICAgICAgfVxuICAgIH0sXG4gICAgdm9pZENvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnI0M2RDFERSdcbiAgICB9LFxuICAgIGRpc2FibGVkVm9pZENvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnI0VGRjJGNydcbiAgICB9LFxuICAgIGljb25DbGFzc2VzOiB7XG4gICAgICB0eXBlOiBbQXJyYXksIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFsnZWwtaWNvbi1zdGFyLW9uJywgJ2VsLWljb24tc3Rhci1vbicsICdlbC1pY29uLXN0YXItb24nXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHZvaWRJY29uQ2xhc3M6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdlbC1pY29uLXN0YXItb2ZmJ1xuICAgIH0sXG4gICAgZGlzYWJsZWRWb2lkSWNvbkNsYXNzOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnZWwtaWNvbi1zdGFyLW9uJ1xuICAgIH0sXG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgYWxsb3dIYWxmOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHNob3dUZXh0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHNob3dTY29yZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB0ZXh0Q29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcjMWYyZDNkJ1xuICAgIH0sXG4gICAgdGV4dHM6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBbJ+aegeW3ricsICflpLHmnJsnLCAn5LiA6IisJywgJ+a7oeaEjycsICfmg4rllpwnXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNjb3JlVGVtcGxhdGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd7dmFsdWV9J1xuICAgIH1cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIHRleHQ6IGZ1bmN0aW9uIHRleHQoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICBpZiAodGhpcy5zaG93U2NvcmUpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5zY29yZVRlbXBsYXRlLnJlcGxhY2UoL1xce1xccyp2YWx1ZVxccypcXH0vLCB0aGlzLnJhdGVEaXNhYmxlZCA/IHRoaXMudmFsdWUgOiB0aGlzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd1RleHQpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy50ZXh0c1tNYXRoLmNlaWwodGhpcy5jdXJyZW50VmFsdWUpIC0gMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgZGVjaW1hbFN0eWxlOiBmdW5jdGlvbiBkZWNpbWFsU3R5bGUoKSB7XG4gICAgICB2YXIgd2lkdGggPSAnJztcbiAgICAgIGlmICh0aGlzLnJhdGVEaXNhYmxlZCkge1xuICAgICAgICB3aWR0aCA9IHRoaXMudmFsdWVEZWNpbWFsICsgJyUnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFsbG93SGFsZikge1xuICAgICAgICB3aWR0aCA9ICc1MCUnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IHRoaXMuYWN0aXZlQ29sb3IsXG4gICAgICAgIHdpZHRoOiB3aWR0aFxuICAgICAgfTtcbiAgICB9LFxuICAgIHZhbHVlRGVjaW1hbDogZnVuY3Rpb24gdmFsdWVEZWNpbWFsKCkge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUgKiAxMDAgLSBNYXRoLmZsb29yKHRoaXMudmFsdWUpICogMTAwO1xuICAgIH0sXG4gICAgY2xhc3NNYXA6IGZ1bmN0aW9uIGNsYXNzTWFwKCkge1xuICAgICAgdmFyIF9yZWY7XG5cbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuaWNvbkNsYXNzZXMpID8gKF9yZWYgPSB7fSwgX3JlZlt0aGlzLmxvd1RocmVzaG9sZF0gPSB0aGlzLmljb25DbGFzc2VzWzBdLCBfcmVmW3RoaXMuaGlnaFRocmVzaG9sZF0gPSB7IHZhbHVlOiB0aGlzLmljb25DbGFzc2VzWzFdLCBleGNsdWRlZDogdHJ1ZSB9LCBfcmVmW3RoaXMubWF4XSA9IHRoaXMuaWNvbkNsYXNzZXNbMl0sIF9yZWYpIDogdGhpcy5pY29uQ2xhc3NlcztcbiAgICB9LFxuICAgIGRlY2ltYWxJY29uQ2xhc3M6IGZ1bmN0aW9uIGRlY2ltYWxJY29uQ2xhc3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZUZyb21NYXAodGhpcy52YWx1ZSwgdGhpcy5jbGFzc01hcCk7XG4gICAgfSxcbiAgICB2b2lkQ2xhc3M6IGZ1bmN0aW9uIHZvaWRDbGFzcygpIHtcbiAgICAgIHJldHVybiB0aGlzLnJhdGVEaXNhYmxlZCA/IHRoaXMuZGlzYWJsZWRWb2lkSWNvbkNsYXNzIDogdGhpcy52b2lkSWNvbkNsYXNzO1xuICAgIH0sXG4gICAgYWN0aXZlQ2xhc3M6IGZ1bmN0aW9uIGFjdGl2ZUNsYXNzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVGcm9tTWFwKHRoaXMuY3VycmVudFZhbHVlLCB0aGlzLmNsYXNzTWFwKTtcbiAgICB9LFxuICAgIGNvbG9yTWFwOiBmdW5jdGlvbiBjb2xvck1hcCgpIHtcbiAgICAgIHZhciBfcmVmMjtcblxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5jb2xvcnMpID8gKF9yZWYyID0ge30sIF9yZWYyW3RoaXMubG93VGhyZXNob2xkXSA9IHRoaXMuY29sb3JzWzBdLCBfcmVmMlt0aGlzLmhpZ2hUaHJlc2hvbGRdID0geyB2YWx1ZTogdGhpcy5jb2xvcnNbMV0sIGV4Y2x1ZGVkOiB0cnVlIH0sIF9yZWYyW3RoaXMubWF4XSA9IHRoaXMuY29sb3JzWzJdLCBfcmVmMikgOiB0aGlzLmNvbG9ycztcbiAgICB9LFxuICAgIGFjdGl2ZUNvbG9yOiBmdW5jdGlvbiBhY3RpdmVDb2xvcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlRnJvbU1hcCh0aGlzLmN1cnJlbnRWYWx1ZSwgdGhpcy5jb2xvck1hcCk7XG4gICAgfSxcbiAgICBjbGFzc2VzOiBmdW5jdGlvbiBjbGFzc2VzKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgdmFyIGkgPSAwO1xuICAgICAgdmFyIHRocmVzaG9sZCA9IHRoaXMuY3VycmVudFZhbHVlO1xuICAgICAgaWYgKHRoaXMuYWxsb3dIYWxmICYmIHRoaXMuY3VycmVudFZhbHVlICE9PSBNYXRoLmZsb29yKHRoaXMuY3VycmVudFZhbHVlKSkge1xuICAgICAgICB0aHJlc2hvbGQtLTtcbiAgICAgIH1cbiAgICAgIGZvciAoOyBpIDwgdGhyZXNob2xkOyBpKyspIHtcbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5hY3RpdmVDbGFzcyk7XG4gICAgICB9XG4gICAgICBmb3IgKDsgaSA8IHRoaXMubWF4OyBpKyspIHtcbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy52b2lkQ2xhc3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHJhdGVEaXNhYmxlZDogZnVuY3Rpb24gcmF0ZURpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZDtcbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsKSB7XG4gICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IHZhbDtcbiAgICAgIHRoaXMucG9pbnRlckF0TGVmdEhhbGYgPSB0aGlzLnZhbHVlICE9PSBNYXRoLmZsb29yKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZ2V0TWlncmF0aW5nQ29uZmlnOiBmdW5jdGlvbiBnZXRNaWdyYXRpbmdDb25maWcoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICd0ZXh0LXRlbXBsYXRlJzogJ3RleHQtdGVtcGxhdGUgaXMgcmVuYW1lZCB0byBzY29yZS10ZW1wbGF0ZS4nXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXRWYWx1ZUZyb21NYXA6IGZ1bmN0aW9uIGdldFZhbHVlRnJvbU1hcCh2YWx1ZSwgbWFwKSB7XG4gICAgICB2YXIgbWF0Y2hlZEtleXMgPSBPYmplY3Qua2V5cyhtYXApLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWwgPSBtYXBba2V5XTtcbiAgICAgICAgdmFyIGV4Y2x1ZGVkID0gT2JqZWN0KHR5cGVzX1tcImlzT2JqZWN0XCJdKSh2YWwpID8gdmFsLmV4Y2x1ZGVkIDogZmFsc2U7XG4gICAgICAgIHJldHVybiBleGNsdWRlZCA/IHZhbHVlIDwga2V5IDogdmFsdWUgPD0ga2V5O1xuICAgICAgfSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYSAtIGI7XG4gICAgICB9KTtcbiAgICAgIHZhciBtYXRjaGVkVmFsdWUgPSBtYXBbbWF0Y2hlZEtleXNbMF1dO1xuICAgICAgcmV0dXJuIE9iamVjdCh0eXBlc19bXCJpc09iamVjdFwiXSkobWF0Y2hlZFZhbHVlKSA/IG1hdGNoZWRWYWx1ZS52YWx1ZSA6IG1hdGNoZWRWYWx1ZSB8fCAnJztcbiAgICB9LFxuICAgIHNob3dEZWNpbWFsSWNvbjogZnVuY3Rpb24gc2hvd0RlY2ltYWxJY29uKGl0ZW0pIHtcbiAgICAgIHZhciBzaG93V2hlbkRpc2FibGVkID0gdGhpcy5yYXRlRGlzYWJsZWQgJiYgdGhpcy52YWx1ZURlY2ltYWwgPiAwICYmIGl0ZW0gLSAxIDwgdGhpcy52YWx1ZSAmJiBpdGVtID4gdGhpcy52YWx1ZTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB2YXIgc2hvd1doZW5BbGxvd0hhbGYgPSB0aGlzLmFsbG93SGFsZiAmJiB0aGlzLnBvaW50ZXJBdExlZnRIYWxmICYmIGl0ZW0gLSAwLjUgPD0gdGhpcy5jdXJyZW50VmFsdWUgJiYgaXRlbSA+IHRoaXMuY3VycmVudFZhbHVlO1xuICAgICAgcmV0dXJuIHNob3dXaGVuRGlzYWJsZWQgfHwgc2hvd1doZW5BbGxvd0hhbGY7XG4gICAgfSxcbiAgICBnZXRJY29uU3R5bGU6IGZ1bmN0aW9uIGdldEljb25TdHlsZShpdGVtKSB7XG4gICAgICB2YXIgdm9pZENvbG9yID0gdGhpcy5yYXRlRGlzYWJsZWQgPyB0aGlzLmRpc2FibGVkVm9pZENvbG9yIDogdGhpcy52b2lkQ29sb3I7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogaXRlbSA8PSB0aGlzLmN1cnJlbnRWYWx1ZSA/IHRoaXMuYWN0aXZlQ29sb3IgOiB2b2lkQ29sb3JcbiAgICAgIH07XG4gICAgfSxcbiAgICBzZWxlY3RWYWx1ZTogZnVuY3Rpb24gc2VsZWN0VmFsdWUodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLnJhdGVEaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hbGxvd0hhbGYgJiYgdGhpcy5wb2ludGVyQXRMZWZ0SGFsZikge1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdGhpcy5jdXJyZW50VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUtleTogZnVuY3Rpb24gaGFuZGxlS2V5KGUpIHtcbiAgICAgIGlmICh0aGlzLnJhdGVEaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgY3VycmVudFZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWU7XG4gICAgICB2YXIga2V5Q29kZSA9IGUua2V5Q29kZTtcbiAgICAgIGlmIChrZXlDb2RlID09PSAzOCB8fCBrZXlDb2RlID09PSAzOSkge1xuICAgICAgICAvLyBsZWZ0IC8gZG93blxuICAgICAgICBpZiAodGhpcy5hbGxvd0hhbGYpIHtcbiAgICAgICAgICBjdXJyZW50VmFsdWUgKz0gMC41O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRWYWx1ZSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PT0gMzcgfHwga2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dIYWxmKSB7XG4gICAgICAgICAgY3VycmVudFZhbHVlIC09IDAuNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50VmFsdWUgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWUgPCAwID8gMCA6IGN1cnJlbnRWYWx1ZTtcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1ZSA+IHRoaXMubWF4ID8gdGhpcy5tYXggOiBjdXJyZW50VmFsdWU7XG5cbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgY3VycmVudFZhbHVlKTtcbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIGN1cnJlbnRWYWx1ZSk7XG4gICAgfSxcbiAgICBzZXRDdXJyZW50VmFsdWU6IGZ1bmN0aW9uIHNldEN1cnJlbnRWYWx1ZSh2YWx1ZSwgZXZlbnQpIHtcbiAgICAgIGlmICh0aGlzLnJhdGVEaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICh0aGlzLmFsbG93SGFsZikge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBpZiAoT2JqZWN0KGRvbV9bXCJoYXNDbGFzc1wiXSkodGFyZ2V0LCAnZWwtcmF0ZV9faXRlbScpKSB7XG4gICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5lbC1yYXRlX19pY29uJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdChkb21fW1wiaGFzQ2xhc3NcIl0pKHRhcmdldCwgJ2VsLXJhdGVfX2RlY2ltYWwnKSkge1xuICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9pbnRlckF0TGVmdEhhbGYgPSBldmVudC5vZmZzZXRYICogMiA8PSB0YXJnZXQuY2xpZW50V2lkdGg7XG4gICAgICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy5wb2ludGVyQXRMZWZ0SGFsZiA/IHZhbHVlIC0gMC41IDogdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgdGhpcy5ob3ZlckluZGV4ID0gdmFsdWU7XG4gICAgfSxcbiAgICByZXNldEN1cnJlbnRWYWx1ZTogZnVuY3Rpb24gcmVzZXRDdXJyZW50VmFsdWUoKSB7XG4gICAgICBpZiAodGhpcy5yYXRlRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYWxsb3dIYWxmKSB7XG4gICAgICAgIHRoaXMucG9pbnRlckF0TGVmdEhhbGYgPSB0aGlzLnZhbHVlICE9PSBNYXRoLmZsb29yKHRoaXMudmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy5ob3ZlckluZGV4ID0gLTE7XG4gICAgfVxuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIDApO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3JhdGUvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3JhdGVfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAocmF0ZV9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yYXRlL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHJhdGVfc3JjX21haW5fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19yYXRlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfYWRhNTc3ODJfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfYWRhNTc3ODJfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciByYXRlX3NyY19tYWluX2FwaTsgfVxucmF0ZV9zcmNfbWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3JhdGUvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHJhdGVfc3JjX21haW4gPSAocmF0ZV9zcmNfbWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3JhdGUvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucmF0ZV9zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHJhdGVfc3JjX21haW4ubmFtZSwgcmF0ZV9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19yYXRlID0gKHJhdGVfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zdGVwcy9zcmMvc3RlcHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjNmI2ZGMwJlxudmFyIHN0ZXBzdnVlX3R5cGVfdGVtcGxhdGVfaWRfM2M2YjZkYzBfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc3RlcHNcIixcbiAgICAgIGNsYXNzOiBbXG4gICAgICAgICFfdm0uc2ltcGxlICYmIFwiZWwtc3RlcHMtLVwiICsgX3ZtLmRpcmVjdGlvbixcbiAgICAgICAgX3ZtLnNpbXBsZSAmJiBcImVsLXN0ZXBzLS1zaW1wbGVcIlxuICAgICAgXVxuICAgIH0sXG4gICAgW192bS5fdChcImRlZmF1bHRcIildLFxuICAgIDJcbiAgKVxufVxudmFyIHN0ZXBzdnVlX3R5cGVfdGVtcGxhdGVfaWRfM2M2YjZkYzBfc3RhdGljUmVuZGVyRm5zID0gW11cbnN0ZXBzdnVlX3R5cGVfdGVtcGxhdGVfaWRfM2M2YjZkYzBfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zdGVwcy9zcmMvc3RlcHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjNmI2ZGMwJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zdGVwcy9zcmMvc3RlcHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzdGVwc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFN0ZXBzJyxcblxuICBtaXhpbnM6IFttaWdyYXRpbmdfZGVmYXVsdC5hXSxcblxuICBwcm9wczoge1xuICAgIHNwYWNlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGFjdGl2ZTogTnVtYmVyLFxuICAgIGRpcmVjdGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2hvcml6b250YWwnXG4gICAgfSxcbiAgICBhbGlnbkNlbnRlcjogQm9vbGVhbixcbiAgICBzaW1wbGU6IEJvb2xlYW4sXG4gICAgZmluaXNoU3RhdHVzOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnZmluaXNoJ1xuICAgIH0sXG4gICAgcHJvY2Vzc1N0YXR1czoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3Byb2Nlc3MnXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0ZXBzOiBbXSxcbiAgICAgIHN0ZXBPZmZzZXQ6IDBcbiAgICB9O1xuICB9LFxuXG5cbiAgbWV0aG9kczoge1xuICAgIGdldE1pZ3JhdGluZ0NvbmZpZzogZnVuY3Rpb24gZ2V0TWlncmF0aW5nQ29uZmlnKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAnY2VudGVyJzogJ2NlbnRlciBpcyByZW1vdmVkLidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICBhY3RpdmU6IGZ1bmN0aW9uIGFjdGl2ZShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgbmV3VmFsLCBvbGRWYWwpO1xuICAgIH0sXG4gICAgc3RlcHM6IGZ1bmN0aW9uIHN0ZXBzKF9zdGVwcykge1xuICAgICAgX3N0ZXBzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xuICAgICAgICBjaGlsZC5pbmRleCA9IGluZGV4O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc3RlcHMvc3JjL3N0ZXBzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfc3RlcHN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoc3RlcHN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc3RlcHMvc3JjL3N0ZXBzLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHN0ZXBzX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX3N0ZXBzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBzdGVwc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzNjNmI2ZGMwX3JlbmRlcixcbiAgc3RlcHN2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zYzZiNmRjMF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHN0ZXBzX2FwaTsgfVxuc3RlcHNfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9zdGVwcy9zcmMvc3RlcHMudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN0ZXBzID0gKHN0ZXBzX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc3RlcHMvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3RlcHMuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzdGVwcy5uYW1lLCBzdGVwcyk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19zdGVwcyA9IChzdGVwcyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3N0ZXBzL3NyYy9zdGVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mNDE0YTg3YSZcbnZhciBzdGVwdnVlX3R5cGVfdGVtcGxhdGVfaWRfZjQxNGE4N2FfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc3RlcFwiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgIV92bS5pc1NpbXBsZSAmJiBcImlzLVwiICsgX3ZtLiRwYXJlbnQuZGlyZWN0aW9uLFxuICAgICAgICBfdm0uaXNTaW1wbGUgJiYgXCJpcy1zaW1wbGVcIixcbiAgICAgICAgX3ZtLmlzTGFzdCAmJiAhX3ZtLnNwYWNlICYmICFfdm0uaXNDZW50ZXIgJiYgXCJpcy1mbGV4XCIsXG4gICAgICAgIF92bS5pc0NlbnRlciAmJiAhX3ZtLmlzVmVydGljYWwgJiYgIV92bS5pc1NpbXBsZSAmJiBcImlzLWNlbnRlclwiXG4gICAgICBdLFxuICAgICAgc3R5bGU6IF92bS5zdHlsZVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtc3RlcF9faGVhZFwiLCBjbGFzczogXCJpcy1cIiArIF92bS5jdXJyZW50U3RhdHVzIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXN0ZXBfX2xpbmVcIixcbiAgICAgICAgICAgICAgc3R5bGU6IF92bS5pc0xhc3RcbiAgICAgICAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICAgICAgICA6IHsgbWFyZ2luUmlnaHQ6IF92bS4kcGFyZW50LnN0ZXBPZmZzZXQgKyBcInB4XCIgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1zdGVwX19saW5lLWlubmVyXCIsXG4gICAgICAgICAgICAgICAgc3R5bGU6IF92bS5saW5lU3R5bGVcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc3RlcF9faWNvblwiLFxuICAgICAgICAgICAgICBjbGFzczogXCJpcy1cIiArIChfdm0uaWNvbiA/IFwiaWNvblwiIDogXCJ0ZXh0XCIpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0uY3VycmVudFN0YXR1cyAhPT0gXCJzdWNjZXNzXCIgJiYgX3ZtLmN1cnJlbnRTdGF0dXMgIT09IFwiZXJyb3JcIlxuICAgICAgICAgICAgICAgID8gX3ZtLl90KFwiaWNvblwiLCBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5pY29uXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1zdGVwX19pY29uLWlubmVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBbX3ZtLmljb25dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICFfdm0uaWNvbiAmJiAhX3ZtLmlzU2ltcGxlXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXN0ZXBfX2ljb24taW5uZXJcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmluZGV4ICsgMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgOiBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1zdGVwX19pY29uLWlubmVyIGlzLXN0YXR1c1wiLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgICAgICAgICAgIFwiZWwtaWNvbi1cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLmN1cnJlbnRTdGF0dXMgPT09IFwic3VjY2Vzc1wiID8gXCJjaGVja1wiIDogXCJjbG9zZVwiKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXN0ZXBfX21haW5cIiB9LCBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVmOiBcInRpdGxlXCIsXG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1zdGVwX190aXRsZVwiLFxuICAgICAgICAgICAgY2xhc3M6IFtcImlzLVwiICsgX3ZtLmN1cnJlbnRTdGF0dXNdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbX3ZtLl90KFwidGl0bGVcIiwgW192bS5fdihfdm0uX3MoX3ZtLnRpdGxlKSldKV0sXG4gICAgICAgICAgMlxuICAgICAgICApLFxuICAgICAgICBfdm0uaXNTaW1wbGVcbiAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtc3RlcF9fYXJyb3dcIiB9KVxuICAgICAgICAgIDogX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1zdGVwX19kZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGNsYXNzOiBbXCJpcy1cIiArIF92bS5jdXJyZW50U3RhdHVzXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbX3ZtLl90KFwiZGVzY3JpcHRpb25cIiwgW192bS5fdihfdm0uX3MoX3ZtLmRlc2NyaXB0aW9uKSldKV0sXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgIClcbiAgICAgIF0pXG4gICAgXVxuICApXG59XG52YXIgc3RlcHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2Y0MTRhODdhX3N0YXRpY1JlbmRlckZucyA9IFtdXG5zdGVwdnVlX3R5cGVfdGVtcGxhdGVfaWRfZjQxNGE4N2FfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zdGVwcy9zcmMvc3RlcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjQxNGE4N2EmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3N0ZXBzL3NyYy9zdGVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN0ZXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxTdGVwJyxcblxuICBwcm9wczoge1xuICAgIHRpdGxlOiBTdHJpbmcsXG4gICAgaWNvbjogU3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBTdHJpbmcsXG4gICAgc3RhdHVzOiBTdHJpbmdcbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbmRleDogLTEsXG4gICAgICBsaW5lU3R5bGU6IHt9LFxuICAgICAgaW50ZXJuYWxTdGF0dXM6ICcnXG4gICAgfTtcbiAgfSxcbiAgYmVmb3JlQ3JlYXRlOiBmdW5jdGlvbiBiZWZvcmVDcmVhdGUoKSB7XG4gICAgdGhpcy4kcGFyZW50LnN0ZXBzLnB1c2godGhpcyk7XG4gIH0sXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgdmFyIHN0ZXBzID0gdGhpcy4kcGFyZW50LnN0ZXBzO1xuICAgIHZhciBpbmRleCA9IHN0ZXBzLmluZGV4T2YodGhpcyk7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHN0ZXBzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBjdXJyZW50U3RhdHVzOiBmdW5jdGlvbiBjdXJyZW50U3RhdHVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzIHx8IHRoaXMuaW50ZXJuYWxTdGF0dXM7XG4gICAgfSxcbiAgICBwcmV2U3RhdHVzOiBmdW5jdGlvbiBwcmV2U3RhdHVzKCkge1xuICAgICAgdmFyIHByZXZTdGVwID0gdGhpcy4kcGFyZW50LnN0ZXBzW3RoaXMuaW5kZXggLSAxXTtcbiAgICAgIHJldHVybiBwcmV2U3RlcCA/IHByZXZTdGVwLmN1cnJlbnRTdGF0dXMgOiAnd2FpdCc7XG4gICAgfSxcbiAgICBpc0NlbnRlcjogZnVuY3Rpb24gaXNDZW50ZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcGFyZW50LmFsaWduQ2VudGVyO1xuICAgIH0sXG4gICAgaXNWZXJ0aWNhbDogZnVuY3Rpb24gaXNWZXJ0aWNhbCgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQuZGlyZWN0aW9uID09PSAndmVydGljYWwnO1xuICAgIH0sXG4gICAgaXNTaW1wbGU6IGZ1bmN0aW9uIGlzU2ltcGxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHBhcmVudC5zaW1wbGU7XG4gICAgfSxcbiAgICBpc0xhc3Q6IGZ1bmN0aW9uIGlzTGFzdCgpIHtcbiAgICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG4gICAgICByZXR1cm4gcGFyZW50LnN0ZXBzW3BhcmVudC5zdGVwcy5sZW5ndGggLSAxXSA9PT0gdGhpcztcbiAgICB9LFxuICAgIHN0ZXBzQ291bnQ6IGZ1bmN0aW9uIHN0ZXBzQ291bnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcGFyZW50LnN0ZXBzLmxlbmd0aDtcbiAgICB9LFxuICAgIHNwYWNlOiBmdW5jdGlvbiBzcGFjZSgpIHtcbiAgICAgIHZhciBpc1NpbXBsZSA9IHRoaXMuaXNTaW1wbGUsXG4gICAgICAgICAgc3BhY2UgPSB0aGlzLiRwYXJlbnQuc3BhY2U7XG5cbiAgICAgIHJldHVybiBpc1NpbXBsZSA/ICcnIDogc3BhY2U7XG4gICAgfSxcblxuICAgIHN0eWxlOiBmdW5jdGlvbiBzdHlsZSgpIHtcbiAgICAgIHZhciBzdHlsZSA9IHt9O1xuICAgICAgdmFyIHBhcmVudCA9IHRoaXMuJHBhcmVudDtcbiAgICAgIHZhciBsZW4gPSBwYXJlbnQuc3RlcHMubGVuZ3RoO1xuXG4gICAgICB2YXIgc3BhY2UgPSB0eXBlb2YgdGhpcy5zcGFjZSA9PT0gJ251bWJlcicgPyB0aGlzLnNwYWNlICsgJ3B4JyA6IHRoaXMuc3BhY2UgPyB0aGlzLnNwYWNlIDogMTAwIC8gKGxlbiAtICh0aGlzLmlzQ2VudGVyID8gMCA6IDEpKSArICclJztcbiAgICAgIHN0eWxlLmZsZXhCYXNpcyA9IHNwYWNlO1xuICAgICAgaWYgKHRoaXMuaXNWZXJ0aWNhbCkgcmV0dXJuIHN0eWxlO1xuICAgICAgaWYgKHRoaXMuaXNMYXN0KSB7XG4gICAgICAgIHN0eWxlLm1heFdpZHRoID0gMTAwIC8gdGhpcy5zdGVwc0NvdW50ICsgJyUnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3R5bGUubWFyZ2luUmlnaHQgPSAtdGhpcy4kcGFyZW50LnN0ZXBPZmZzZXQgKyAncHgnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICB1cGRhdGVTdGF0dXM6IGZ1bmN0aW9uIHVwZGF0ZVN0YXR1cyh2YWwpIHtcbiAgICAgIHZhciBwcmV2Q2hpbGQgPSB0aGlzLiRwYXJlbnQuJGNoaWxkcmVuW3RoaXMuaW5kZXggLSAxXTtcblxuICAgICAgaWYgKHZhbCA+IHRoaXMuaW5kZXgpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXR1cyA9IHRoaXMuJHBhcmVudC5maW5pc2hTdGF0dXM7XG4gICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gdGhpcy5pbmRleCAmJiB0aGlzLnByZXZTdGF0dXMgIT09ICdlcnJvcicpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXR1cyA9IHRoaXMuJHBhcmVudC5wcm9jZXNzU3RhdHVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXR1cyA9ICd3YWl0JztcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXZDaGlsZCkgcHJldkNoaWxkLmNhbGNQcm9ncmVzcyh0aGlzLmludGVybmFsU3RhdHVzKTtcbiAgICB9LFxuICAgIGNhbGNQcm9ncmVzczogZnVuY3Rpb24gY2FsY1Byb2dyZXNzKHN0YXR1cykge1xuICAgICAgdmFyIHN0ZXAgPSAxMDA7XG4gICAgICB2YXIgc3R5bGUgPSB7fTtcblxuICAgICAgc3R5bGUudHJhbnNpdGlvbkRlbGF5ID0gMTUwICogdGhpcy5pbmRleCArICdtcyc7XG4gICAgICBpZiAoc3RhdHVzID09PSB0aGlzLiRwYXJlbnQucHJvY2Vzc1N0YXR1cykge1xuICAgICAgICBzdGVwID0gdGhpcy5jdXJyZW50U3RhdHVzICE9PSAnZXJyb3InID8gMCA6IDA7XG4gICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gJ3dhaXQnKSB7XG4gICAgICAgIHN0ZXAgPSAwO1xuICAgICAgICBzdHlsZS50cmFuc2l0aW9uRGVsYXkgPSAtMTUwICogdGhpcy5pbmRleCArICdtcyc7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlLmJvcmRlcldpZHRoID0gc3RlcCAmJiAhdGhpcy5pc1NpbXBsZSA/ICcxcHgnIDogMDtcbiAgICAgIHRoaXMuJHBhcmVudC5kaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgPyBzdHlsZS5oZWlnaHQgPSBzdGVwICsgJyUnIDogc3R5bGUud2lkdGggPSBzdGVwICsgJyUnO1xuXG4gICAgICB0aGlzLmxpbmVTdHlsZSA9IHN0eWxlO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgdW53YXRjaCA9IHRoaXMuJHdhdGNoKCdpbmRleCcsIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIF90aGlzLiR3YXRjaCgnJHBhcmVudC5hY3RpdmUnLCBfdGhpcy51cGRhdGVTdGF0dXMsIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICAgICAgX3RoaXMuJHdhdGNoKCckcGFyZW50LnByb2Nlc3NTdGF0dXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhY3RpdmVJbmRleCA9IF90aGlzLiRwYXJlbnQuYWN0aXZlO1xuICAgICAgICBfdGhpcy51cGRhdGVTdGF0dXMoYWN0aXZlSW5kZXgpO1xuICAgICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gICAgICB1bndhdGNoKCk7XG4gICAgfSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zdGVwcy9zcmMvc3RlcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX3N0ZXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoc3RlcHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zdGVwcy9zcmMvc3RlcC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBzdGVwX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX3N0ZXB2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHN0ZXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF9mNDE0YTg3YV9yZW5kZXIsXG4gIHN0ZXB2dWVfdHlwZV90ZW1wbGF0ZV9pZF9mNDE0YTg3YV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHN0ZXBfYXBpOyB9XG5zdGVwX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvc3RlcHMvc3JjL3N0ZXAudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN0ZXAgPSAoc3RlcF9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3N0ZXAvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3RlcC5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHN0ZXAubmFtZSwgc3RlcCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19zdGVwID0gKHN0ZXApO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jYXJvdXNlbC9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQ1ZDE0ODImXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVkNWQxNDgyX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIGNsYXNzOiBfdm0uY2Fyb3VzZWxDbGFzc2VzLFxuICAgICAgb246IHtcbiAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVNb3VzZUVudGVyKCRldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVNb3VzZUxlYXZlKCRldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jYXJvdXNlbF9fY29udGFpbmVyXCIsXG4gICAgICAgICAgc3R5bGU6IHsgaGVpZ2h0OiBfdm0uaGVpZ2h0IH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF92bS5hcnJvd0Rpc3BsYXlcbiAgICAgICAgICAgID8gX2MoXCJ0cmFuc2l0aW9uXCIsIHsgYXR0cnM6IHsgbmFtZTogXCJjYXJvdXNlbC1hcnJvdy1sZWZ0XCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0uYXJyb3cgPT09IFwiYWx3YXlzXCIgfHwgX3ZtLmhvdmVyKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLmxvb3AgfHwgX3ZtLmFjdGl2ZUluZGV4ID4gMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIihhcnJvdyA9PT0gJ2Fsd2F5cycgfHwgaG92ZXIpICYmIChsb29wIHx8IGFjdGl2ZUluZGV4ID4gMClcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY2Fyb3VzZWxfX2Fycm93IGVsLWNhcm91c2VsX19hcnJvdy0tbGVmdFwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQnV0dG9uRW50ZXIoXCJsZWZ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtb3VzZWxlYXZlOiBfdm0uaGFuZGxlQnV0dG9uTGVhdmUsXG4gICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0udGhyb3R0bGVkQXJyb3dDbGljayhfdm0uYWN0aXZlSW5kZXggLSAxKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtfYyhcImlcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1pY29uLWFycm93LWxlZnRcIiB9KV1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5hcnJvd0Rpc3BsYXlcbiAgICAgICAgICAgID8gX2MoXCJ0cmFuc2l0aW9uXCIsIHsgYXR0cnM6IHsgbmFtZTogXCJjYXJvdXNlbC1hcnJvdy1yaWdodFwiIH0gfSwgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLmFycm93ID09PSBcImFsd2F5c1wiIHx8IF92bS5ob3ZlcikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5sb29wIHx8IF92bS5hY3RpdmVJbmRleCA8IF92bS5pdGVtcy5sZW5ndGggLSAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKGFycm93ID09PSAnYWx3YXlzJyB8fCBob3ZlcikgJiYgKGxvb3AgfHwgYWN0aXZlSW5kZXggPCBpdGVtcy5sZW5ndGggLSAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jYXJvdXNlbF9fYXJyb3cgZWwtY2Fyb3VzZWxfX2Fycm93LS1yaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQnV0dG9uRW50ZXIoXCJyaWdodFwiKVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgbW91c2VsZWF2ZTogX3ZtLmhhbmRsZUJ1dHRvbkxlYXZlLFxuICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnRocm90dGxlZEFycm93Q2xpY2soX3ZtLmFjdGl2ZUluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbi1hcnJvdy1yaWdodFwiIH0pXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl90KFwiZGVmYXVsdFwiKVxuICAgICAgICBdLFxuICAgICAgICAyXG4gICAgICApLFxuICAgICAgX3ZtLmluZGljYXRvclBvc2l0aW9uICE9PSBcIm5vbmVcIlxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJ1bFwiLFxuICAgICAgICAgICAgeyBjbGFzczogX3ZtLmluZGljYXRvcnNDbGFzc2VzIH0sXG4gICAgICAgICAgICBfdm0uX2woX3ZtLml0ZW1zLCBmdW5jdGlvbihpdGVtLCBpbmRleCkge1xuICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgXCJsaVwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGtleTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgICAgICAgICBcImVsLWNhcm91c2VsX19pbmRpY2F0b3JcIixcbiAgICAgICAgICAgICAgICAgICAgXCJlbC1jYXJvdXNlbF9faW5kaWNhdG9yLS1cIiArIF92bS5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIHsgXCJpcy1hY3RpdmVcIjogaW5kZXggPT09IF92bS5hY3RpdmVJbmRleCB9XG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnRocm90dGxlZEluZGljYXRvckhvdmVyKGluZGV4KVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZUluZGljYXRvckNsaWNrKGluZGV4KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcImJ1dHRvblwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWNhcm91c2VsX19idXR0b25cIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5oYXNMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIFtfdm0uX3YoX3ZtLl9zKGl0ZW0ubGFiZWwpKV0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF1cbiAgKVxufVxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF81ZDVkMTQ4Ml9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVkNWQxNDgyX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2Fyb3VzZWwvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkNWQxNDgyJlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwidGhyb3R0bGUtZGVib3VuY2UvdGhyb3R0bGVcIlxudmFyIHRocm90dGxlXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xudmFyIHRocm90dGxlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHRocm90dGxlXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2Nhcm91c2VsL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjYXJvdXNlbF9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbENhcm91c2VsJyxcblxuICBwcm9wczoge1xuICAgIGluaXRpYWxJbmRleDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgaGVpZ2h0OiBTdHJpbmcsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2hvdmVyJ1xuICAgIH0sXG4gICAgYXV0b3BsYXk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBpbnRlcnZhbDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMzAwMFxuICAgIH0sXG4gICAgaW5kaWNhdG9yUG9zaXRpb246IFN0cmluZyxcbiAgICBpbmRpY2F0b3I6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBhcnJvdzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2hvdmVyJ1xuICAgIH0sXG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGxvb3A6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBkaXJlY3Rpb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdob3Jpem9udGFsJyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJ10uaW5kZXhPZih2YWwpICE9PSAtMTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXM6IFtdLFxuICAgICAgYWN0aXZlSW5kZXg6IC0xLFxuICAgICAgY29udGFpbmVyV2lkdGg6IDAsXG4gICAgICB0aW1lcjogbnVsbCxcbiAgICAgIGhvdmVyOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGFycm93RGlzcGxheTogZnVuY3Rpb24gYXJyb3dEaXNwbGF5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXJyb3cgIT09ICduZXZlcicgJiYgdGhpcy5kaXJlY3Rpb24gIT09ICd2ZXJ0aWNhbCc7XG4gICAgfSxcbiAgICBoYXNMYWJlbDogZnVuY3Rpb24gaGFzTGFiZWwoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcy5zb21lKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmxhYmVsLnRvU3RyaW5nKCkubGVuZ3RoID4gMDtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2Fyb3VzZWxDbGFzc2VzOiBmdW5jdGlvbiBjYXJvdXNlbENsYXNzZXMoKSB7XG4gICAgICB2YXIgY2xhc3NlcyA9IFsnZWwtY2Fyb3VzZWwnLCAnZWwtY2Fyb3VzZWwtLScgKyB0aGlzLmRpcmVjdGlvbl07XG4gICAgICBpZiAodGhpcy50eXBlID09PSAnY2FyZCcpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdlbC1jYXJvdXNlbC0tY2FyZCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfSxcbiAgICBpbmRpY2F0b3JzQ2xhc3NlczogZnVuY3Rpb24gaW5kaWNhdG9yc0NsYXNzZXMoKSB7XG4gICAgICB2YXIgY2xhc3NlcyA9IFsnZWwtY2Fyb3VzZWxfX2luZGljYXRvcnMnLCAnZWwtY2Fyb3VzZWxfX2luZGljYXRvcnMtLScgKyB0aGlzLmRpcmVjdGlvbl07XG4gICAgICBpZiAodGhpcy5oYXNMYWJlbCkge1xuICAgICAgICBjbGFzc2VzLnB1c2goJ2VsLWNhcm91c2VsX19pbmRpY2F0b3JzLS1sYWJlbHMnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmluZGljYXRvclBvc2l0aW9uID09PSAnb3V0c2lkZScgfHwgdGhpcy50eXBlID09PSAnY2FyZCcpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdlbC1jYXJvdXNlbF9faW5kaWNhdG9ycy0tb3V0c2lkZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgaXRlbXM6IGZ1bmN0aW9uIGl0ZW1zKHZhbCkge1xuICAgICAgaWYgKHZhbC5sZW5ndGggPiAwKSB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5pbml0aWFsSW5kZXgpO1xuICAgIH0sXG4gICAgYWN0aXZlSW5kZXg6IGZ1bmN0aW9uIGFjdGl2ZUluZGV4KHZhbCwgb2xkVmFsKSB7XG4gICAgICB0aGlzLnJlc2V0SXRlbVBvc2l0aW9uKG9sZFZhbCk7XG4gICAgICBpZiAob2xkVmFsID4gLTEpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsLCBvbGRWYWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXV0b3BsYXk6IGZ1bmN0aW9uIGF1dG9wbGF5KHZhbCkge1xuICAgICAgdmFsID8gdGhpcy5zdGFydFRpbWVyKCkgOiB0aGlzLnBhdXNlVGltZXIoKTtcbiAgICB9LFxuICAgIGxvb3A6IGZ1bmN0aW9uIGxvb3AoKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVJbmRleCk7XG4gICAgfSxcbiAgICBpbnRlcnZhbDogZnVuY3Rpb24gaW50ZXJ2YWwoKSB7XG4gICAgICB0aGlzLnBhdXNlVGltZXIoKTtcbiAgICAgIHRoaXMuc3RhcnRUaW1lcigpO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlTW91c2VFbnRlcjogZnVuY3Rpb24gaGFuZGxlTW91c2VFbnRlcigpIHtcbiAgICAgIHRoaXMuaG92ZXIgPSB0cnVlO1xuICAgICAgdGhpcy5wYXVzZVRpbWVyKCk7XG4gICAgfSxcbiAgICBoYW5kbGVNb3VzZUxlYXZlOiBmdW5jdGlvbiBoYW5kbGVNb3VzZUxlYXZlKCkge1xuICAgICAgdGhpcy5ob3ZlciA9IGZhbHNlO1xuICAgICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gICAgfSxcbiAgICBpdGVtSW5TdGFnZTogZnVuY3Rpb24gaXRlbUluU3RhZ2UoaXRlbSwgaW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoIC0gMSAmJiBpdGVtLmluU3RhZ2UgJiYgdGhpcy5pdGVtc1swXS5hY3RpdmUgfHwgaXRlbS5pblN0YWdlICYmIHRoaXMuaXRlbXNbaW5kZXggKyAxXSAmJiB0aGlzLml0ZW1zW2luZGV4ICsgMV0uYWN0aXZlKSB7XG4gICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSAwICYmIGl0ZW0uaW5TdGFnZSAmJiB0aGlzLml0ZW1zW2xlbmd0aCAtIDFdLmFjdGl2ZSB8fCBpdGVtLmluU3RhZ2UgJiYgdGhpcy5pdGVtc1tpbmRleCAtIDFdICYmIHRoaXMuaXRlbXNbaW5kZXggLSAxXS5hY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBoYW5kbGVCdXR0b25FbnRlcjogZnVuY3Rpb24gaGFuZGxlQnV0dG9uRW50ZXIoYXJyb3cpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykgcmV0dXJuO1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICBpZiAoYXJyb3cgPT09IF90aGlzLml0ZW1JblN0YWdlKGl0ZW0sIGluZGV4KSkge1xuICAgICAgICAgIGl0ZW0uaG92ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGhhbmRsZUJ1dHRvbkxlYXZlOiBmdW5jdGlvbiBoYW5kbGVCdXR0b25MZWF2ZSgpIHtcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykgcmV0dXJuO1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGl0ZW0uaG92ZXIgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBkYXRlSXRlbXM6IGZ1bmN0aW9uIHVwZGF0ZUl0ZW1zKCkge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuJGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkLiRvcHRpb25zLm5hbWUgPT09ICdFbENhcm91c2VsSXRlbSc7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJlc2V0SXRlbVBvc2l0aW9uOiBmdW5jdGlvbiByZXNldEl0ZW1Qb3NpdGlvbihvbGRJbmRleCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgaXRlbS50cmFuc2xhdGVJdGVtKGluZGV4LCBfdGhpczIuYWN0aXZlSW5kZXgsIG9sZEluZGV4KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcGxheVNsaWRlczogZnVuY3Rpb24gcGxheVNsaWRlcygpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4IDwgdGhpcy5pdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXgrKztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5sb29wKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSAwO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGF1c2VUaW1lcjogZnVuY3Rpb24gcGF1c2VUaW1lcigpIHtcbiAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3RhcnRUaW1lcjogZnVuY3Rpb24gc3RhcnRUaW1lcigpIHtcbiAgICAgIGlmICh0aGlzLmludGVydmFsIDw9IDAgfHwgIXRoaXMuYXV0b3BsYXkgfHwgdGhpcy50aW1lcikgcmV0dXJuO1xuICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKHRoaXMucGxheVNsaWRlcywgdGhpcy5pbnRlcnZhbCk7XG4gICAgfSxcbiAgICByZXNldFRpbWVyOiBmdW5jdGlvbiByZXNldFRpbWVyKCkge1xuICAgICAgdGhpcy5wYXVzZVRpbWVyKCk7XG4gICAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB9LFxuICAgIHNldEFjdGl2ZUl0ZW06IGZ1bmN0aW9uIHNldEFjdGl2ZUl0ZW0oaW5kZXgpIHtcbiAgICAgIGlmICh0eXBlb2YgaW5kZXggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZhciBmaWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lID09PSBpbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChmaWx0ZXJlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpbmRleCA9IHRoaXMuaXRlbXMuaW5kZXhPZihmaWx0ZXJlZEl0ZW1zWzBdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5kZXggPSBOdW1iZXIoaW5kZXgpO1xuICAgICAgaWYgKGlzTmFOKGluZGV4KSB8fCBpbmRleCAhPT0gTWF0aC5mbG9vcihpbmRleCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbRWxlbWVudCBXYXJuXVtDYXJvdXNlbF1pbmRleCBtdXN0IGJlIGFuIGludGVnZXIuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICAgIHZhciBvbGRJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXg7XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0aGlzLmxvb3AgPyBsZW5ndGggLSAxIDogMDtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPj0gbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0aGlzLmxvb3AgPyAwIDogbGVuZ3RoIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDtcbiAgICAgIH1cbiAgICAgIGlmIChvbGRJbmRleCA9PT0gdGhpcy5hY3RpdmVJbmRleCkge1xuICAgICAgICB0aGlzLnJlc2V0SXRlbVBvc2l0aW9uKG9sZEluZGV4KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVzZXRUaW1lcigpO1xuICAgIH0sXG4gICAgcHJldjogZnVuY3Rpb24gcHJldigpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZUluZGV4IC0gMSk7XG4gICAgfSxcbiAgICBuZXh0OiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlSW5kZXggKyAxKTtcbiAgICB9LFxuICAgIGhhbmRsZUluZGljYXRvckNsaWNrOiBmdW5jdGlvbiBoYW5kbGVJbmRpY2F0b3JDbGljayhpbmRleCkge1xuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgIH0sXG4gICAgaGFuZGxlSW5kaWNhdG9ySG92ZXI6IGZ1bmN0aW9uIGhhbmRsZUluZGljYXRvckhvdmVyKGluZGV4KSB7XG4gICAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnaG92ZXInICYmIGluZGV4ICE9PSB0aGlzLmFjdGl2ZUluZGV4KSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHRoaXMudGhyb3R0bGVkQXJyb3dDbGljayA9IHRocm90dGxlX2RlZmF1bHQoKSgzMDAsIHRydWUsIGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgX3RoaXMzLnNldEFjdGl2ZUl0ZW0oaW5kZXgpO1xuICAgIH0pO1xuICAgIHRoaXMudGhyb3R0bGVkSW5kaWNhdG9ySG92ZXIgPSB0aHJvdHRsZV9kZWZhdWx0KCkoMzAwLCBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgIF90aGlzMy5oYW5kbGVJbmRpY2F0b3JIb3ZlcihpbmRleCk7XG4gICAgfSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICB0aGlzLnVwZGF0ZUl0ZW1zKCk7XG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgT2JqZWN0KHJlc2l6ZV9ldmVudF9bXCJhZGRSZXNpemVMaXN0ZW5lclwiXSkoX3RoaXM0LiRlbCwgX3RoaXM0LnJlc2V0SXRlbVBvc2l0aW9uKTtcbiAgICAgIGlmIChfdGhpczQuaW5pdGlhbEluZGV4IDwgX3RoaXM0Lml0ZW1zLmxlbmd0aCAmJiBfdGhpczQuaW5pdGlhbEluZGV4ID49IDApIHtcbiAgICAgICAgX3RoaXM0LmFjdGl2ZUluZGV4ID0gX3RoaXM0LmluaXRpYWxJbmRleDtcbiAgICAgIH1cbiAgICAgIF90aGlzNC5zdGFydFRpbWVyKCk7XG4gICAgfSk7XG4gIH0sXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuJGVsKSBPYmplY3QocmVzaXplX2V2ZW50X1tcInJlbW92ZVJlc2l6ZUxpc3RlbmVyXCJdKSh0aGlzLiRlbCwgdGhpcy5yZXNldEl0ZW1Qb3NpdGlvbik7XG4gICAgdGhpcy5wYXVzZVRpbWVyKCk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXJvdXNlbC9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfY2Fyb3VzZWxfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoY2Fyb3VzZWxfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2Fyb3VzZWwvc3JjL21haW4udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY2Fyb3VzZWxfc3JjX21haW5fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19jYXJvdXNlbF9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVkNWQxNDgyX3JlbmRlcixcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVkNWQxNDgyX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgY2Fyb3VzZWxfc3JjX21haW5fYXBpOyB9XG5jYXJvdXNlbF9zcmNfbWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2Nhcm91c2VsL3NyYy9tYWluLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjYXJvdXNlbF9zcmNfbWFpbiA9IChjYXJvdXNlbF9zcmNfbWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhcm91c2VsL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNhcm91c2VsX3NyY19tYWluLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoY2Fyb3VzZWxfc3JjX21haW4ubmFtZSwgY2Fyb3VzZWxfc3JjX21haW4pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2Fyb3VzZWwgPSAoY2Fyb3VzZWxfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zY3JvbGxiYXIvc3JjL3V0aWwuanNcbnZhciBCQVJfTUFQID0ge1xuICB2ZXJ0aWNhbDoge1xuICAgIG9mZnNldDogJ29mZnNldEhlaWdodCcsXG4gICAgc2Nyb2xsOiAnc2Nyb2xsVG9wJyxcbiAgICBzY3JvbGxTaXplOiAnc2Nyb2xsSGVpZ2h0JyxcbiAgICBzaXplOiAnaGVpZ2h0JyxcbiAgICBrZXk6ICd2ZXJ0aWNhbCcsXG4gICAgYXhpczogJ1knLFxuICAgIGNsaWVudDogJ2NsaWVudFknLFxuICAgIGRpcmVjdGlvbjogJ3RvcCdcbiAgfSxcbiAgaG9yaXpvbnRhbDoge1xuICAgIG9mZnNldDogJ29mZnNldFdpZHRoJyxcbiAgICBzY3JvbGw6ICdzY3JvbGxMZWZ0JyxcbiAgICBzY3JvbGxTaXplOiAnc2Nyb2xsV2lkdGgnLFxuICAgIHNpemU6ICd3aWR0aCcsXG4gICAga2V5OiAnaG9yaXpvbnRhbCcsXG4gICAgYXhpczogJ1gnLFxuICAgIGNsaWVudDogJ2NsaWVudFgnLFxuICAgIGRpcmVjdGlvbjogJ2xlZnQnXG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlbmRlclRodW1iU3R5bGUoX3JlZikge1xuICB2YXIgbW92ZSA9IF9yZWYubW92ZSxcbiAgICAgIHNpemUgPSBfcmVmLnNpemUsXG4gICAgICBiYXIgPSBfcmVmLmJhcjtcblxuICB2YXIgc3R5bGUgPSB7fTtcbiAgdmFyIHRyYW5zbGF0ZSA9ICd0cmFuc2xhdGUnICsgYmFyLmF4aXMgKyAnKCcgKyBtb3ZlICsgJyUpJztcblxuICBzdHlsZVtiYXIuc2l6ZV0gPSBzaXplO1xuICBzdHlsZS50cmFuc2Zvcm0gPSB0cmFuc2xhdGU7XG4gIHN0eWxlLm1zVHJhbnNmb3JtID0gdHJhbnNsYXRlO1xuICBzdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSB0cmFuc2xhdGU7XG5cbiAgcmV0dXJuIHN0eWxlO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2Nyb2xsYmFyL3NyYy9iYXIuanNcblxuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfYmFyID0gKHtcbiAgbmFtZTogJ0JhcicsXG5cbiAgcHJvcHM6IHtcbiAgICB2ZXJ0aWNhbDogQm9vbGVhbixcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgbW92ZTogTnVtYmVyXG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBiYXI6IGZ1bmN0aW9uIGJhcigpIHtcbiAgICAgIHJldHVybiBCQVJfTUFQW3RoaXMudmVydGljYWwgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnXTtcbiAgICB9LFxuICAgIHdyYXA6IGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcGFyZW50LndyYXA7XG4gICAgfVxuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuc2l6ZSxcbiAgICAgICAgbW92ZSA9IHRoaXMubW92ZSxcbiAgICAgICAgYmFyID0gdGhpcy5iYXI7XG5cblxuICAgIHJldHVybiBoKFxuICAgICAgJ2RpdicsXG4gICAgICB7XG4gICAgICAgICdjbGFzcyc6IFsnZWwtc2Nyb2xsYmFyX19iYXInLCAnaXMtJyArIGJhci5rZXldLFxuICAgICAgICBvbjoge1xuICAgICAgICAgICdtb3VzZWRvd24nOiB0aGlzLmNsaWNrVHJhY2tIYW5kbGVyXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbaCgnZGl2Jywge1xuICAgICAgICByZWY6ICd0aHVtYicsXG4gICAgICAgICdjbGFzcyc6ICdlbC1zY3JvbGxiYXJfX3RodW1iJyxcbiAgICAgICAgb246IHtcbiAgICAgICAgICAnbW91c2Vkb3duJzogdGhpcy5jbGlja1RodW1iSGFuZGxlclxuICAgICAgICB9LFxuXG4gICAgICAgIHN0eWxlOiByZW5kZXJUaHVtYlN0eWxlKHsgc2l6ZTogc2l6ZSwgbW92ZTogbW92ZSwgYmFyOiBiYXIgfSkgfSldXG4gICAgKTtcbiAgfSxcblxuXG4gIG1ldGhvZHM6IHtcbiAgICBjbGlja1RodW1iSGFuZGxlcjogZnVuY3Rpb24gY2xpY2tUaHVtYkhhbmRsZXIoZSkge1xuICAgICAgLy8gcHJldmVudCBjbGljayBldmVudCBvZiByaWdodCBidXR0b25cbiAgICAgIGlmIChlLmN0cmxLZXkgfHwgZS5idXR0b24gPT09IDIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zdGFydERyYWcoZSk7XG4gICAgICB0aGlzW3RoaXMuYmFyLmF4aXNdID0gZS5jdXJyZW50VGFyZ2V0W3RoaXMuYmFyLm9mZnNldF0gLSAoZVt0aGlzLmJhci5jbGllbnRdIC0gZS5jdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW3RoaXMuYmFyLmRpcmVjdGlvbl0pO1xuICAgIH0sXG4gICAgY2xpY2tUcmFja0hhbmRsZXI6IGZ1bmN0aW9uIGNsaWNrVHJhY2tIYW5kbGVyKGUpIHtcbiAgICAgIHZhciBvZmZzZXQgPSBNYXRoLmFicyhlLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0aGlzLmJhci5kaXJlY3Rpb25dIC0gZVt0aGlzLmJhci5jbGllbnRdKTtcbiAgICAgIHZhciB0aHVtYkhhbGYgPSB0aGlzLiRyZWZzLnRodW1iW3RoaXMuYmFyLm9mZnNldF0gLyAyO1xuICAgICAgdmFyIHRodW1iUG9zaXRpb25QZXJjZW50YWdlID0gKG9mZnNldCAtIHRodW1iSGFsZikgKiAxMDAgLyB0aGlzLiRlbFt0aGlzLmJhci5vZmZzZXRdO1xuXG4gICAgICB0aGlzLndyYXBbdGhpcy5iYXIuc2Nyb2xsXSA9IHRodW1iUG9zaXRpb25QZXJjZW50YWdlICogdGhpcy53cmFwW3RoaXMuYmFyLnNjcm9sbFNpemVdIC8gMTAwO1xuICAgIH0sXG4gICAgc3RhcnREcmFnOiBmdW5jdGlvbiBzdGFydERyYWcoZSkge1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuY3Vyc29yRG93biA9IHRydWU7XG5cbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5tb3VzZU1vdmVEb2N1bWVudEhhbmRsZXIpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkoZG9jdW1lbnQsICdtb3VzZXVwJywgdGhpcy5tb3VzZVVwRG9jdW1lbnRIYW5kbGVyKTtcbiAgICAgIGRvY3VtZW50Lm9uc2VsZWN0c3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBtb3VzZU1vdmVEb2N1bWVudEhhbmRsZXI6IGZ1bmN0aW9uIG1vdXNlTW92ZURvY3VtZW50SGFuZGxlcihlKSB7XG4gICAgICBpZiAodGhpcy5jdXJzb3JEb3duID09PSBmYWxzZSkgcmV0dXJuO1xuICAgICAgdmFyIHByZXZQYWdlID0gdGhpc1t0aGlzLmJhci5heGlzXTtcblxuICAgICAgaWYgKCFwcmV2UGFnZSkgcmV0dXJuO1xuXG4gICAgICB2YXIgb2Zmc2V0ID0gKHRoaXMuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW3RoaXMuYmFyLmRpcmVjdGlvbl0gLSBlW3RoaXMuYmFyLmNsaWVudF0pICogLTE7XG4gICAgICB2YXIgdGh1bWJDbGlja1Bvc2l0aW9uID0gdGhpcy4kcmVmcy50aHVtYlt0aGlzLmJhci5vZmZzZXRdIC0gcHJldlBhZ2U7XG4gICAgICB2YXIgdGh1bWJQb3NpdGlvblBlcmNlbnRhZ2UgPSAob2Zmc2V0IC0gdGh1bWJDbGlja1Bvc2l0aW9uKSAqIDEwMCAvIHRoaXMuJGVsW3RoaXMuYmFyLm9mZnNldF07XG5cbiAgICAgIHRoaXMud3JhcFt0aGlzLmJhci5zY3JvbGxdID0gdGh1bWJQb3NpdGlvblBlcmNlbnRhZ2UgKiB0aGlzLndyYXBbdGhpcy5iYXIuc2Nyb2xsU2l6ZV0gLyAxMDA7XG4gICAgfSxcbiAgICBtb3VzZVVwRG9jdW1lbnRIYW5kbGVyOiBmdW5jdGlvbiBtb3VzZVVwRG9jdW1lbnRIYW5kbGVyKGUpIHtcbiAgICAgIHRoaXMuY3Vyc29yRG93biA9IGZhbHNlO1xuICAgICAgdGhpc1t0aGlzLmJhci5heGlzXSA9IDA7XG4gICAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkoZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlTW92ZURvY3VtZW50SGFuZGxlcik7XG4gICAgICBkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ID0gbnVsbDtcbiAgICB9XG4gIH0sXG5cbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgT2JqZWN0KGRvbV9bXCJvZmZcIl0pKGRvY3VtZW50LCAnbW91c2V1cCcsIHRoaXMubW91c2VVcERvY3VtZW50SGFuZGxlcik7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zY3JvbGxiYXIvc3JjL21haW4uanNcbi8vIHJlZmVyZW5jZSBodHRwczovL2dpdGh1Yi5jb20vbm9lbGRlbGdhZG8vZ2VtaW5pLXNjcm9sbGJhci9ibG9iL21hc3Rlci9pbmRleC5qc1xuXG5cblxuXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNjcm9sbGJhcl9zcmNfbWFpbiA9ICh7XG4gIG5hbWU6ICdFbFNjcm9sbGJhcicsXG5cbiAgY29tcG9uZW50czogeyBCYXI6IHNyY19iYXIgfSxcblxuICBwcm9wczoge1xuICAgIG5hdGl2ZTogQm9vbGVhbixcbiAgICB3cmFwU3R5bGU6IHt9LFxuICAgIHdyYXBDbGFzczoge30sXG4gICAgdmlld0NsYXNzOiB7fSxcbiAgICB2aWV3U3R5bGU6IHt9LFxuICAgIG5vcmVzaXplOiBCb29sZWFuLCAvLyDlpoLmnpwgY29udGFpbmVyIOWwuuWvuOS4jeS8muWPkeeUn+WPmOWMlu+8jOacgOWlveiuvue9ruWug+WPr+S7peS8mOWMluaAp+iDvVxuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RpdidcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2l6ZVdpZHRoOiAnMCcsXG4gICAgICBzaXplSGVpZ2h0OiAnMCcsXG4gICAgICBtb3ZlWDogMCxcbiAgICAgIG1vdmVZOiAwXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXB1dGVkOiB7XG4gICAgd3JhcDogZnVuY3Rpb24gd3JhcCgpIHtcbiAgICAgIHJldHVybiB0aGlzLiRyZWZzLndyYXA7XG4gICAgfVxuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgZ3V0dGVyID0gc2Nyb2xsYmFyX3dpZHRoX2RlZmF1bHQoKSgpO1xuICAgIHZhciBzdHlsZSA9IHRoaXMud3JhcFN0eWxlO1xuXG4gICAgaWYgKGd1dHRlcikge1xuICAgICAgdmFyIGd1dHRlcldpdGggPSAnLScgKyBndXR0ZXIgKyAncHgnO1xuICAgICAgdmFyIGd1dHRlclN0eWxlID0gJ21hcmdpbi1ib3R0b206ICcgKyBndXR0ZXJXaXRoICsgJzsgbWFyZ2luLXJpZ2h0OiAnICsgZ3V0dGVyV2l0aCArICc7JztcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy53cmFwU3R5bGUpKSB7XG4gICAgICAgIHN0eWxlID0gT2JqZWN0KHV0aWxfW1widG9PYmplY3RcIl0pKHRoaXMud3JhcFN0eWxlKTtcbiAgICAgICAgc3R5bGUubWFyZ2luUmlnaHQgPSBzdHlsZS5tYXJnaW5Cb3R0b20gPSBndXR0ZXJXaXRoO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy53cmFwU3R5bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHN0eWxlICs9IGd1dHRlclN0eWxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3R5bGUgPSBndXR0ZXJTdHlsZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHZpZXcgPSBoKHRoaXMudGFnLCB7XG4gICAgICBjbGFzczogWydlbC1zY3JvbGxiYXJfX3ZpZXcnLCB0aGlzLnZpZXdDbGFzc10sXG4gICAgICBzdHlsZTogdGhpcy52aWV3U3R5bGUsXG4gICAgICByZWY6ICdyZXNpemUnXG4gICAgfSwgdGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gICAgdmFyIHdyYXAgPSBoKFxuICAgICAgJ2RpdicsXG4gICAgICB7XG4gICAgICAgIHJlZjogJ3dyYXAnLFxuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgJ3Njcm9sbCc6IHRoaXMuaGFuZGxlU2Nyb2xsXG4gICAgICAgIH0sXG5cbiAgICAgICAgJ2NsYXNzJzogW3RoaXMud3JhcENsYXNzLCAnZWwtc2Nyb2xsYmFyX193cmFwJywgZ3V0dGVyID8gJycgOiAnZWwtc2Nyb2xsYmFyX193cmFwLS1oaWRkZW4tZGVmYXVsdCddIH0sXG4gICAgICBbW3ZpZXddXVxuICAgICk7XG4gICAgdmFyIG5vZGVzID0gdm9pZCAwO1xuXG4gICAgaWYgKCF0aGlzLm5hdGl2ZSkge1xuICAgICAgbm9kZXMgPSBbd3JhcCwgaChzcmNfYmFyLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgbW92ZTogdGhpcy5tb3ZlWCxcbiAgICAgICAgICBzaXplOiB0aGlzLnNpemVXaWR0aCB9XG4gICAgICB9KSwgaChzcmNfYmFyLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgdmVydGljYWw6IHRydWUsXG4gICAgICAgICAgbW92ZTogdGhpcy5tb3ZlWSxcbiAgICAgICAgICBzaXplOiB0aGlzLnNpemVIZWlnaHQgfVxuICAgICAgfSldO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlcyA9IFtoKFxuICAgICAgICAnZGl2JyxcbiAgICAgICAge1xuICAgICAgICAgIHJlZjogJ3dyYXAnLFxuICAgICAgICAgICdjbGFzcyc6IFt0aGlzLndyYXBDbGFzcywgJ2VsLXNjcm9sbGJhcl9fd3JhcCddLFxuICAgICAgICAgIHN0eWxlOiBzdHlsZSB9LFxuICAgICAgICBbW3ZpZXddXVxuICAgICAgKV07XG4gICAgfVxuICAgIHJldHVybiBoKCdkaXYnLCB7IGNsYXNzOiAnZWwtc2Nyb2xsYmFyJyB9LCBub2Rlcyk7XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlU2Nyb2xsOiBmdW5jdGlvbiBoYW5kbGVTY3JvbGwoKSB7XG4gICAgICB2YXIgd3JhcCA9IHRoaXMud3JhcDtcblxuICAgICAgdGhpcy5tb3ZlWSA9IHdyYXAuc2Nyb2xsVG9wICogMTAwIC8gd3JhcC5jbGllbnRIZWlnaHQ7XG4gICAgICB0aGlzLm1vdmVYID0gd3JhcC5zY3JvbGxMZWZ0ICogMTAwIC8gd3JhcC5jbGllbnRXaWR0aDtcbiAgICB9LFxuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgICAgdmFyIGhlaWdodFBlcmNlbnRhZ2UgPSB2b2lkIDAsXG4gICAgICAgICAgd2lkdGhQZXJjZW50YWdlID0gdm9pZCAwO1xuICAgICAgdmFyIHdyYXAgPSB0aGlzLndyYXA7XG4gICAgICBpZiAoIXdyYXApIHJldHVybjtcblxuICAgICAgaGVpZ2h0UGVyY2VudGFnZSA9IHdyYXAuY2xpZW50SGVpZ2h0ICogMTAwIC8gd3JhcC5zY3JvbGxIZWlnaHQ7XG4gICAgICB3aWR0aFBlcmNlbnRhZ2UgPSB3cmFwLmNsaWVudFdpZHRoICogMTAwIC8gd3JhcC5zY3JvbGxXaWR0aDtcblxuICAgICAgdGhpcy5zaXplSGVpZ2h0ID0gaGVpZ2h0UGVyY2VudGFnZSA8IDEwMCA/IGhlaWdodFBlcmNlbnRhZ2UgKyAnJScgOiAnJztcbiAgICAgIHRoaXMuc2l6ZVdpZHRoID0gd2lkdGhQZXJjZW50YWdlIDwgMTAwID8gd2lkdGhQZXJjZW50YWdlICsgJyUnIDogJyc7XG4gICAgfVxuICB9LFxuXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSByZXR1cm47XG4gICAgdGhpcy4kbmV4dFRpY2sodGhpcy51cGRhdGUpO1xuICAgICF0aGlzLm5vcmVzaXplICYmIE9iamVjdChyZXNpemVfZXZlbnRfW1wiYWRkUmVzaXplTGlzdGVuZXJcIl0pKHRoaXMuJHJlZnMucmVzaXplLCB0aGlzLnVwZGF0ZSk7XG4gIH0sXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSByZXR1cm47XG4gICAgIXRoaXMubm9yZXNpemUgJiYgT2JqZWN0KHJlc2l6ZV9ldmVudF9bXCJyZW1vdmVSZXNpemVMaXN0ZW5lclwiXSkodGhpcy4kcmVmcy5yZXNpemUsIHRoaXMudXBkYXRlKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Njcm9sbGJhci9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zY3JvbGxiYXJfc3JjX21haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzY3JvbGxiYXJfc3JjX21haW4ubmFtZSwgc2Nyb2xsYmFyX3NyY19tYWluKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNjcm9sbGJhciA9IChzY3JvbGxiYXJfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jYXJvdXNlbC9zcmMvaXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTgwMWFlMTkmXG52YXIgaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzE4MDFhZTE5X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgdmFsdWU6IF92bS5yZWFkeSxcbiAgICAgICAgICBleHByZXNzaW9uOiBcInJlYWR5XCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNhcm91c2VsX19pdGVtXCIsXG4gICAgICBjbGFzczoge1xuICAgICAgICBcImlzLWFjdGl2ZVwiOiBfdm0uYWN0aXZlLFxuICAgICAgICBcImVsLWNhcm91c2VsX19pdGVtLS1jYXJkXCI6IF92bS4kcGFyZW50LnR5cGUgPT09IFwiY2FyZFwiLFxuICAgICAgICBcImlzLWluLXN0YWdlXCI6IF92bS5pblN0YWdlLFxuICAgICAgICBcImlzLWhvdmVyXCI6IF92bS5ob3ZlcixcbiAgICAgICAgXCJpcy1hbmltYXRpbmdcIjogX3ZtLmFuaW1hdGluZ1xuICAgICAgfSxcbiAgICAgIHN0eWxlOiBfdm0uaXRlbVN0eWxlLFxuICAgICAgb246IHsgY2xpY2s6IF92bS5oYW5kbGVJdGVtQ2xpY2sgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLiRwYXJlbnQudHlwZSA9PT0gXCJjYXJkXCJcbiAgICAgICAgPyBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAhX3ZtLmFjdGl2ZSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIiFhY3RpdmVcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY2Fyb3VzZWxfX21hc2tcIlxuICAgICAgICAgIH0pXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfdm0uX3QoXCJkZWZhdWx0XCIpXG4gICAgXSxcbiAgICAyXG4gIClcbn1cbnZhciBpdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfMTgwMWFlMTlfc3RhdGljUmVuZGVyRm5zID0gW11cbml0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8xODAxYWUxOV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhcm91c2VsL3NyYy9pdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xODAxYWUxOSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2Fyb3VzZWwvc3JjL2l0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG52YXIgQ0FSRF9TQ0FMRSA9IDAuODM7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBpdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsQ2Fyb3VzZWxJdGVtJyxcblxuICBwcm9wczoge1xuICAgIG5hbWU6IFN0cmluZyxcbiAgICBsYWJlbDoge1xuICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdmVyOiBmYWxzZSxcbiAgICAgIHRyYW5zbGF0ZTogMCxcbiAgICAgIHNjYWxlOiAxLFxuICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgIHJlYWR5OiBmYWxzZSxcbiAgICAgIGluU3RhZ2U6IGZhbHNlLFxuICAgICAgYW5pbWF0aW5nOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgcHJvY2Vzc0luZGV4OiBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoaW5kZXgsIGFjdGl2ZUluZGV4LCBsZW5ndGgpIHtcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gMCAmJiBpbmRleCA9PT0gbGVuZ3RoIC0gMSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZUluZGV4ID09PSBsZW5ndGggLSAxICYmIGluZGV4ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKGluZGV4IDwgYWN0aXZlSW5kZXggLSAxICYmIGFjdGl2ZUluZGV4IC0gaW5kZXggPj0gbGVuZ3RoIC8gMikge1xuICAgICAgICByZXR1cm4gbGVuZ3RoICsgMTtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPiBhY3RpdmVJbmRleCArIDEgJiYgaW5kZXggLSBhY3RpdmVJbmRleCA+PSBsZW5ndGggLyAyKSB7XG4gICAgICAgIHJldHVybiAtMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9LFxuICAgIGNhbGNDYXJkVHJhbnNsYXRlOiBmdW5jdGlvbiBjYWxjQ2FyZFRyYW5zbGF0ZShpbmRleCwgYWN0aXZlSW5kZXgpIHtcbiAgICAgIHZhciBwYXJlbnRXaWR0aCA9IHRoaXMuJHBhcmVudC4kZWwub2Zmc2V0V2lkdGg7XG4gICAgICBpZiAodGhpcy5pblN0YWdlKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnRXaWR0aCAqICgoMiAtIENBUkRfU0NBTEUpICogKGluZGV4IC0gYWN0aXZlSW5kZXgpICsgMSkgLyA0O1xuICAgICAgfSBlbHNlIGlmIChpbmRleCA8IGFjdGl2ZUluZGV4KSB7XG4gICAgICAgIHJldHVybiAtKDEgKyBDQVJEX1NDQUxFKSAqIHBhcmVudFdpZHRoIC8gNDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAoMyArIENBUkRfU0NBTEUpICogcGFyZW50V2lkdGggLyA0O1xuICAgICAgfVxuICAgIH0sXG4gICAgY2FsY1RyYW5zbGF0ZTogZnVuY3Rpb24gY2FsY1RyYW5zbGF0ZShpbmRleCwgYWN0aXZlSW5kZXgsIGlzVmVydGljYWwpIHtcbiAgICAgIHZhciBkaXN0YW5jZSA9IHRoaXMuJHBhcmVudC4kZWxbaXNWZXJ0aWNhbCA/ICdvZmZzZXRIZWlnaHQnIDogJ29mZnNldFdpZHRoJ107XG4gICAgICByZXR1cm4gZGlzdGFuY2UgKiAoaW5kZXggLSBhY3RpdmVJbmRleCk7XG4gICAgfSxcbiAgICB0cmFuc2xhdGVJdGVtOiBmdW5jdGlvbiB0cmFuc2xhdGVJdGVtKGluZGV4LCBhY3RpdmVJbmRleCwgb2xkSW5kZXgpIHtcbiAgICAgIHZhciBwYXJlbnRUeXBlID0gdGhpcy4kcGFyZW50LnR5cGU7XG4gICAgICB2YXIgcGFyZW50RGlyZWN0aW9uID0gdGhpcy5wYXJlbnREaXJlY3Rpb247XG4gICAgICB2YXIgbGVuZ3RoID0gdGhpcy4kcGFyZW50Lml0ZW1zLmxlbmd0aDtcbiAgICAgIGlmIChwYXJlbnRUeXBlICE9PSAnY2FyZCcgJiYgb2xkSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmFuaW1hdGluZyA9IGluZGV4ID09PSBhY3RpdmVJbmRleCB8fCBpbmRleCA9PT0gb2xkSW5kZXg7XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXggIT09IGFjdGl2ZUluZGV4ICYmIGxlbmd0aCA+IDIgJiYgdGhpcy4kcGFyZW50Lmxvb3ApIHtcbiAgICAgICAgaW5kZXggPSB0aGlzLnByb2Nlc3NJbmRleChpbmRleCwgYWN0aXZlSW5kZXgsIGxlbmd0aCk7XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50VHlwZSA9PT0gJ2NhcmQnKSB7XG4gICAgICAgIGlmIChwYXJlbnREaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tFbGVtZW50IFdhcm5dW0Nhcm91c2VsXXZlcnRpY2FsIGRpcmVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGNhcmQgbW9kZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5TdGFnZSA9IE1hdGgucm91bmQoTWF0aC5hYnMoaW5kZXggLSBhY3RpdmVJbmRleCkpIDw9IDE7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gaW5kZXggPT09IGFjdGl2ZUluZGV4O1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZSA9IHRoaXMuY2FsY0NhcmRUcmFuc2xhdGUoaW5kZXgsIGFjdGl2ZUluZGV4KTtcbiAgICAgICAgdGhpcy5zY2FsZSA9IHRoaXMuYWN0aXZlID8gMSA6IENBUkRfU0NBTEU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGluZGV4ID09PSBhY3RpdmVJbmRleDtcbiAgICAgICAgdmFyIGlzVmVydGljYWwgPSBwYXJlbnREaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCc7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlID0gdGhpcy5jYWxjVHJhbnNsYXRlKGluZGV4LCBhY3RpdmVJbmRleCwgaXNWZXJ0aWNhbCk7XG4gICAgICAgIHRoaXMuc2NhbGUgPSAxO1xuICAgICAgfVxuICAgICAgdGhpcy5yZWFkeSA9IHRydWU7XG4gICAgfSxcbiAgICBoYW5kbGVJdGVtQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUl0ZW1DbGljaygpIHtcbiAgICAgIHZhciBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XG4gICAgICBpZiAocGFyZW50ICYmIHBhcmVudC50eXBlID09PSAnY2FyZCcpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gcGFyZW50Lml0ZW1zLmluZGV4T2YodGhpcyk7XG4gICAgICAgIHBhcmVudC5zZXRBY3RpdmVJdGVtKGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBwYXJlbnREaXJlY3Rpb246IGZ1bmN0aW9uIHBhcmVudERpcmVjdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLiRwYXJlbnQuZGlyZWN0aW9uO1xuICAgIH0sXG4gICAgaXRlbVN0eWxlOiBmdW5jdGlvbiBpdGVtU3R5bGUoKSB7XG4gICAgICB2YXIgdHJhbnNsYXRlVHlwZSA9IHRoaXMucGFyZW50RGlyZWN0aW9uID09PSAndmVydGljYWwnID8gJ3RyYW5zbGF0ZVknIDogJ3RyYW5zbGF0ZVgnO1xuICAgICAgdmFyIHZhbHVlID0gdHJhbnNsYXRlVHlwZSArICcoJyArIHRoaXMudHJhbnNsYXRlICsgJ3B4KSBzY2FsZSgnICsgdGhpcy5zY2FsZSArICcpJztcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgdHJhbnNmb3JtOiB2YWx1ZVxuICAgICAgfTtcbiAgICAgIHJldHVybiBPYmplY3QodXRpbF9bXCJhdXRvcHJlZml4ZXJcIl0pKHN0eWxlKTtcbiAgICB9XG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLiRwYXJlbnQgJiYgdGhpcy4kcGFyZW50LnVwZGF0ZUl0ZW1zKCk7XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIHRoaXMuJHBhcmVudCAmJiB0aGlzLiRwYXJlbnQudXBkYXRlSXRlbXMoKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhcm91c2VsL3NyYy9pdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfaXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChpdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhcm91c2VsL3NyYy9pdGVtLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGl0ZW1fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfaXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzE4MDFhZTE5X3JlbmRlcixcbiAgaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzE4MDFhZTE5X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgaXRlbV9hcGk7IH1cbml0ZW1fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9jYXJvdXNlbC9zcmMvaXRlbS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2l0ZW0gPSAoaXRlbV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhcm91c2VsLWl0ZW0vaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3JjX2l0ZW0uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzcmNfaXRlbS5uYW1lLCBzcmNfaXRlbSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjYXJvdXNlbF9pdGVtID0gKHNyY19pdGVtKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY29sbGFwc2Uvc3JjL2NvbGxhcHNlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NjFkNTdmNCZcbnZhciBjb2xsYXBzZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQ2MWQ1N2Y0X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNvbGxhcHNlXCIsXG4gICAgICBhdHRyczogeyByb2xlOiBcInRhYmxpc3RcIiwgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiOiBcInRydWVcIiB9XG4gICAgfSxcbiAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgMlxuICApXG59XG52YXIgY29sbGFwc2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF80NjFkNTdmNF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuY29sbGFwc2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF80NjFkNTdmNF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbGxhcHNlL3NyYy9jb2xsYXBzZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDYxZDU3ZjQmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NvbGxhcHNlL3NyYy9jb2xsYXBzZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29sbGFwc2V2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxDb2xsYXBzZScsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsQ29sbGFwc2UnLFxuXG4gIHByb3BzOiB7XG4gICAgYWNjb3JkaW9uOiBCb29sZWFuLFxuICAgIHZhbHVlOiB7XG4gICAgICB0eXBlOiBbQXJyYXksIFN0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZU5hbWVzOiBbXS5jb25jYXQodGhpcy52YWx1ZSlcbiAgICB9O1xuICB9LFxuICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xsYXBzZTogdGhpc1xuICAgIH07XG4gIH0sXG5cblxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShfdmFsdWUpIHtcbiAgICAgIHRoaXMuYWN0aXZlTmFtZXMgPSBbXS5jb25jYXQoX3ZhbHVlKTtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIHNldEFjdGl2ZU5hbWVzOiBmdW5jdGlvbiBzZXRBY3RpdmVOYW1lcyhhY3RpdmVOYW1lcykge1xuICAgICAgYWN0aXZlTmFtZXMgPSBbXS5jb25jYXQoYWN0aXZlTmFtZXMpO1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy5hY2NvcmRpb24gPyBhY3RpdmVOYW1lc1swXSA6IGFjdGl2ZU5hbWVzO1xuICAgICAgdGhpcy5hY3RpdmVOYW1lcyA9IGFjdGl2ZU5hbWVzO1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWx1ZSk7XG4gICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCB2YWx1ZSk7XG4gICAgfSxcbiAgICBoYW5kbGVJdGVtQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUl0ZW1DbGljayhpdGVtKSB7XG4gICAgICBpZiAodGhpcy5hY2NvcmRpb24pIHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVOYW1lcygodGhpcy5hY3RpdmVOYW1lc1swXSB8fCB0aGlzLmFjdGl2ZU5hbWVzWzBdID09PSAwKSAmJiB0aGlzLmFjdGl2ZU5hbWVzWzBdID09PSBpdGVtLm5hbWUgPyAnJyA6IGl0ZW0ubmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgYWN0aXZlTmFtZXMgPSB0aGlzLmFjdGl2ZU5hbWVzLnNsaWNlKDApO1xuICAgICAgICB2YXIgaW5kZXggPSBhY3RpdmVOYW1lcy5pbmRleE9mKGl0ZW0ubmFtZSk7XG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICBhY3RpdmVOYW1lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjdGl2ZU5hbWVzLnB1c2goaXRlbS5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZU5hbWVzKGFjdGl2ZU5hbWVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLiRvbignaXRlbS1jbGljaycsIHRoaXMuaGFuZGxlSXRlbUNsaWNrKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbGxhcHNlL3NyYy9jb2xsYXBzZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2NvbGxhcHNldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGNvbGxhcHNldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbGxhcHNlL3NyYy9jb2xsYXBzZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBjb2xsYXBzZV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19jb2xsYXBzZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgY29sbGFwc2V2dWVfdHlwZV90ZW1wbGF0ZV9pZF80NjFkNTdmNF9yZW5kZXIsXG4gIGNvbGxhcHNldnVlX3R5cGVfdGVtcGxhdGVfaWRfNDYxZDU3ZjRfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBjb2xsYXBzZV9hcGk7IH1cbmNvbGxhcHNlX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvY29sbGFwc2Uvc3JjL2NvbGxhcHNlLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb2xsYXBzZSA9IChjb2xsYXBzZV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbGxhcHNlL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbGxhcHNlLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoY29sbGFwc2UubmFtZSwgY29sbGFwc2UpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfY29sbGFwc2UgPSAoY29sbGFwc2UpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jb2xsYXBzZS9zcmMvY29sbGFwc2UtaXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmQwNWZhYWMmXG52YXIgY29sbGFwc2VfaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJkMDVmYWFjX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNvbGxhcHNlLWl0ZW1cIixcbiAgICAgIGNsYXNzOiB7IFwiaXMtYWN0aXZlXCI6IF92bS5pc0FjdGl2ZSwgXCJpcy1kaXNhYmxlZFwiOiBfdm0uZGlzYWJsZWQgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgcm9sZTogXCJ0YWJcIixcbiAgICAgICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBfdm0uaXNBY3RpdmUsXG4gICAgICAgICAgICBcImFyaWEtY29udHJvbHNcIjogXCJlbC1jb2xsYXBzZS1jb250ZW50LVwiICsgX3ZtLmlkLFxuICAgICAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IFwiZWwtY29sbGFwc2UtY29udGVudC1cIiArIF92bS5pZFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY29sbGFwc2UtaXRlbV9faGVhZGVyXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgZm9jdXNpbmc6IF92bS5mb2N1c2luZyxcbiAgICAgICAgICAgICAgICBcImlzLWFjdGl2ZVwiOiBfdm0uaXNBY3RpdmVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICByb2xlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgIGlkOiBcImVsLWNvbGxhcHNlLWhlYWQtXCIgKyBfdm0uaWQsXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg6IF92bS5kaXNhYmxlZCA/IHVuZGVmaW5lZCA6IDBcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBjbGljazogX3ZtLmhhbmRsZUhlYWRlckNsaWNrLFxuICAgICAgICAgICAgICAgIGtleXVwOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcInNwYWNlXCIsIDMyLCAkZXZlbnQua2V5LCBbXG4gICAgICAgICAgICAgICAgICAgICAgXCIgXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJTcGFjZWJhclwiXG4gICAgICAgICAgICAgICAgICAgIF0pICYmXG4gICAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMywgJGV2ZW50LmtleSwgXCJFbnRlclwiKVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlRW50ZXJDbGljaygkZXZlbnQpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmb2N1czogX3ZtLmhhbmRsZUZvY3VzLFxuICAgICAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgX3ZtLmZvY3VzaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5fdChcInRpdGxlXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS50aXRsZSkpXSksXG4gICAgICAgICAgICAgIF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY29sbGFwc2UtaXRlbV9fYXJyb3cgZWwtaWNvbi1hcnJvdy1yaWdodFwiLFxuICAgICAgICAgICAgICAgIGNsYXNzOiB7IFwiaXMtYWN0aXZlXCI6IF92bS5pc0FjdGl2ZSB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgXVxuICAgICAgKSxcbiAgICAgIF9jKFwiZWwtY29sbGFwc2UtdHJhbnNpdGlvblwiLCBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmlzQWN0aXZlLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiaXNBY3RpdmVcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY29sbGFwc2UtaXRlbV9fd3JhcFwiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgcm9sZTogXCJ0YWJwYW5lbFwiLFxuICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6ICFfdm0uaXNBY3RpdmUsXG4gICAgICAgICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IFwiZWwtY29sbGFwc2UtaGVhZC1cIiArIF92bS5pZCxcbiAgICAgICAgICAgICAgaWQ6IFwiZWwtY29sbGFwc2UtY29udGVudC1cIiArIF92bS5pZFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtY29sbGFwc2UtaXRlbV9fY29udGVudFwiIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSxcbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgKVxuICAgICAgICAgIF1cbiAgICAgICAgKVxuICAgICAgXSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIGNvbGxhcHNlX2l0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8yZDA1ZmFhY19zdGF0aWNSZW5kZXJGbnMgPSBbXVxuY29sbGFwc2VfaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJkMDVmYWFjX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY29sbGFwc2Uvc3JjL2NvbGxhcHNlLWl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJkMDVmYWFjJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jb2xsYXBzZS9zcmMvY29sbGFwc2UtaXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbGxhcHNlX2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxDb2xsYXBzZUl0ZW0nLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbENvbGxhcHNlSXRlbScsXG5cbiAgbWl4aW5zOiBbZW1pdHRlcl9kZWZhdWx0LmFdLFxuXG4gIGNvbXBvbmVudHM6IHsgRWxDb2xsYXBzZVRyYW5zaXRpb246IGNvbGxhcHNlX3RyYW5zaXRpb25fZGVmYXVsdC5hIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudFdyYXBTdHlsZToge1xuICAgICAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgfSxcbiAgICAgIGNvbnRlbnRIZWlnaHQ6IDAsXG4gICAgICBmb2N1c2luZzogZmFsc2UsXG4gICAgICBpc0NsaWNrOiBmYWxzZSxcbiAgICAgIGlkOiBPYmplY3QodXRpbF9bXCJnZW5lcmF0ZUlkXCJdKSgpXG4gICAgfTtcbiAgfSxcblxuXG4gIGluamVjdDogWydjb2xsYXBzZSddLFxuXG4gIHByb3BzOiB7XG4gICAgdGl0bGU6IFN0cmluZyxcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91aWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICBkaXNhYmxlZDogQm9vbGVhblxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNBY3RpdmU6IGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29sbGFwc2UuYWN0aXZlTmFtZXMuaW5kZXhPZih0aGlzLm5hbWUpID4gLTE7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVGb2N1czogZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFfdGhpcy5pc0NsaWNrKSB7XG4gICAgICAgICAgX3RoaXMuZm9jdXNpbmcgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLmlzQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwgNTApO1xuICAgIH0sXG4gICAgaGFuZGxlSGVhZGVyQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUhlYWRlckNsaWNrKCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsQ29sbGFwc2UnLCAnaXRlbS1jbGljaycsIHRoaXMpO1xuICAgICAgdGhpcy5mb2N1c2luZyA9IGZhbHNlO1xuICAgICAgdGhpcy5pc0NsaWNrID0gdHJ1ZTtcbiAgICB9LFxuICAgIGhhbmRsZUVudGVyQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUVudGVyQ2xpY2soKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoKCdFbENvbGxhcHNlJywgJ2l0ZW0tY2xpY2snLCB0aGlzKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb2xsYXBzZS9zcmMvY29sbGFwc2UtaXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2NvbGxhcHNlX2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoY29sbGFwc2VfaXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb2xsYXBzZS9zcmMvY29sbGFwc2UtaXRlbS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBjb2xsYXBzZV9pdGVtX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX2NvbGxhcHNlX2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGNvbGxhcHNlX2l0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8yZDA1ZmFhY19yZW5kZXIsXG4gIGNvbGxhcHNlX2l0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF8yZDA1ZmFhY19zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGNvbGxhcHNlX2l0ZW1fYXBpOyB9XG5jb2xsYXBzZV9pdGVtX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvY29sbGFwc2Uvc3JjL2NvbGxhcHNlLWl0ZW0udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbGxhcHNlX2l0ZW0gPSAoY29sbGFwc2VfaXRlbV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbGxhcHNlLWl0ZW0vaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29sbGFwc2VfaXRlbS5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGNvbGxhcHNlX2l0ZW0ubmFtZSwgY29sbGFwc2VfaXRlbSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19jb2xsYXBzZV9pdGVtID0gKGNvbGxhcHNlX2l0ZW0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jYXNjYWRlci9zcmMvY2FzY2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAzMjUzN2E2JlxudmFyIGNhc2NhZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMDMyNTM3YTZfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJjbGlja291dHNpZGVcIixcbiAgICAgICAgICByYXdOYW1lOiBcInYtY2xpY2tvdXRzaWRlXCIsXG4gICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIF92bS50b2dnbGVEcm9wRG93blZpc2libGUoZmFsc2UpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBleHByZXNzaW9uOiBcIigpID0+IHRvZ2dsZURyb3BEb3duVmlzaWJsZShmYWxzZSlcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgcmVmOiBcInJlZmVyZW5jZVwiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgXCJlbC1jYXNjYWRlclwiLFxuICAgICAgICBfdm0ucmVhbFNpemUgJiYgXCJlbC1jYXNjYWRlci0tXCIgKyBfdm0ucmVhbFNpemUsXG4gICAgICAgIHsgXCJpcy1kaXNhYmxlZFwiOiBfdm0uaXNEaXNhYmxlZCB9XG4gICAgICBdLFxuICAgICAgb246IHtcbiAgICAgICAgbW91c2VlbnRlcjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLmlucHV0SG92ZXIgPSB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1vdXNlbGVhdmU6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIF92bS5pbnB1dEhvdmVyID0gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBfdm0udG9nZ2xlRHJvcERvd25WaXNpYmxlKF92bS5yZWFkb25seSA/IHVuZGVmaW5lZCA6IHRydWUpXG4gICAgICAgIH0sXG4gICAgICAgIGtleWRvd246IF92bS5oYW5kbGVLZXlEb3duXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJlbC1pbnB1dFwiLFxuICAgICAgICB7XG4gICAgICAgICAgcmVmOiBcImlucHV0XCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpcy1mb2N1c1wiOiBfdm0uZHJvcERvd25WaXNpYmxlIH0sXG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIHNpemU6IF92bS5yZWFsU2l6ZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICByZWFkb25seTogX3ZtLnJlYWRvbmx5LFxuICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5pc0Rpc2FibGVkLFxuICAgICAgICAgICAgXCJ2YWxpZGF0ZS1ldmVudFwiOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGZvY3VzOiBfdm0uaGFuZGxlRm9jdXMsXG4gICAgICAgICAgICBibHVyOiBfdm0uaGFuZGxlQmx1cixcbiAgICAgICAgICAgIGlucHV0OiBfdm0uaGFuZGxlSW5wdXRcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICB2YWx1ZTogX3ZtLm11bHRpcGxlID8gX3ZtLnByZXNlbnRUZXh0IDogX3ZtLmlucHV0VmFsdWUsXG4gICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgIF92bS5tdWx0aXBsZSA/IF92bS5wcmVzZW50VGV4dCA6IChfdm0uaW5wdXRWYWx1ZSA9ICQkdilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHByZXNzaW9uOiBcIm11bHRpcGxlID8gcHJlc2VudFRleHQgOiBpbnB1dFZhbHVlXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcInRlbXBsYXRlXCIsIHsgc2xvdDogXCJzdWZmaXhcIiB9LCBbXG4gICAgICAgICAgICBfdm0uY2xlYXJCdG5WaXNpYmxlXG4gICAgICAgICAgICAgID8gX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICAgIGtleTogXCJjbGVhclwiLFxuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXRfX2ljb24gZWwtaWNvbi1jaXJjbGUtY2xvc2VcIixcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmhhbmRsZUNsZWFyKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICAgIGtleTogXCJhcnJvdy1kb3duXCIsXG4gICAgICAgICAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgICAgICAgICBcImVsLWlucHV0X19pY29uXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZWwtaWNvbi1hcnJvdy1kb3duXCIsXG4gICAgICAgICAgICAgICAgICAgIF92bS5kcm9wRG93blZpc2libGUgJiYgXCJpcy1yZXZlcnNlXCJcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnRvZ2dsZURyb3BEb3duVmlzaWJsZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgICksXG4gICAgICBfdm0ubXVsdGlwbGVcbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWNhc2NhZGVyX190YWdzXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl9sKF92bS5wcmVzZW50VGFncywgZnVuY3Rpb24odGFnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgXCJlbC10YWdcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB0YWcua2V5LFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaW5mb1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHNpemU6IF92bS50YWdTaXplLFxuICAgICAgICAgICAgICAgICAgICAgIGhpdDogdGFnLmhpdFN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0YWcuY2xvc2FibGUsXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaXNhYmxlLXRyYW5zaXRpb25zXCI6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGVsZXRlVGFnKHRhZylcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbX2MoXCJzcGFuXCIsIFtfdm0uX3YoX3ZtLl9zKHRhZy50ZXh0KSldKV1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfdm0uZmlsdGVyYWJsZSAmJiAhX3ZtLmlzRGlzYWJsZWRcbiAgICAgICAgICAgICAgICA/IF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsLnRyaW1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiaW5wdXRWYWx1ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOiB7IHRyaW06IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY2FzY2FkZXJfX3NlYXJjaC1pbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0ucHJlc2VudFRhZ3MubGVuZ3RoID8gXCJcIiA6IF92bS5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLmlucHV0VmFsdWUgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5pbnB1dFZhbHVlID0gJGV2ZW50LnRhcmdldC52YWx1ZS50cmltKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlSW5wdXQoX3ZtLmlucHV0VmFsdWUsIGUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS50b2dnbGVEcm9wRG93blZpc2libGUodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGtleWRvd246IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2soXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmtleUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkZWxldGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbOCwgNDZdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQmFja3NwYWNlXCIsIFwiRGVsZXRlXCIsIFwiRGVsXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVEZWxldGUoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYmx1cjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uJGZvcmNlVXBkYXRlKClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfYyhcbiAgICAgICAgXCJ0cmFuc2l0aW9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyczogeyBuYW1lOiBcImVsLXpvb20taW4tdG9wXCIgfSxcbiAgICAgICAgICBvbjogeyBcImFmdGVyLWxlYXZlXCI6IF92bS5oYW5kbGVEcm9wZG93bkxlYXZlIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZHJvcERvd25WaXNpYmxlLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJkcm9wRG93blZpc2libGVcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVmOiBcInBvcHBlclwiLFxuICAgICAgICAgICAgICBjbGFzczogW1wiZWwtcG9wcGVyXCIsIFwiZWwtY2FzY2FkZXJfX2Ryb3Bkb3duXCIsIF92bS5wb3BwZXJDbGFzc11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwiZWwtY2FzY2FkZXItcGFuZWxcIiwge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhX3ZtLmZpbHRlcmluZyxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIhZmlsdGVyaW5nXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlZjogXCJwYW5lbFwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIHByb3BzOiBfdm0uY29uZmlnLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIFwicmVuZGVyLWxhYmVsXCI6IF92bS4kc2NvcGVkU2xvdHMuZGVmYXVsdFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIFwiZXhwYW5kLWNoYW5nZVwiOiBfdm0uaGFuZGxlRXhwYW5kQ2hhbmdlLFxuICAgICAgICAgICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0udG9nZ2xlRHJvcERvd25WaXNpYmxlKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY2hlY2tlZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0uY2hlY2tlZFZhbHVlID0gJCR2XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjaGVja2VkVmFsdWVcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF92bS5maWx0ZXJhYmxlXG4gICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJlbC1zY3JvbGxiYXJcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZmlsdGVyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImZpbHRlcmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICByZWY6IFwic3VnZ2VzdGlvblBhbmVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY2FzY2FkZXJfX3N1Z2dlc3Rpb24tcGFuZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBcInVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZpZXctY2xhc3NcIjogXCJlbC1jYXNjYWRlcl9fc3VnZ2VzdGlvbi1saXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlkb3duOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVTdWdnZXN0aW9uS2V5RG93bigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnN1Z2dlc3Rpb25zLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfdm0uX2woX3ZtLnN1Z2dlc3Rpb25zLCBmdW5jdGlvbihpdGVtLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBpdGVtLnVpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVsLWNhc2NhZGVyX19zdWdnZXN0aW9uLWl0ZW1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNoZWNrZWQgJiYgXCJpcy1jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgdGFiaW5kZXg6IC0xIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZVN1Z2dlc3Rpb25DbGljayhpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbX3ZtLl92KF92bS5fcyhpdGVtLnRleHQpKV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNoZWNrZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWljb24tY2hlY2tcIiB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fdChcImVtcHR5XCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtY2FzY2FkZXJfX2VtcHR5LXRleHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJlbC5jYXNjYWRlci5ub01hdGNoXCIpKSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIF1cbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIGNhc2NhZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMDMyNTM3YTZfc3RhdGljUmVuZGVyRm5zID0gW11cbmNhc2NhZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMDMyNTM3YTZfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci9zcmMvY2FzY2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAzMjUzN2E2JlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvY2FzY2FkZXItcGFuZWxcIlxudmFyIGNhc2NhZGVyX3BhbmVsXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpO1xudmFyIGNhc2NhZGVyX3BhbmVsX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNhc2NhZGVyX3BhbmVsXyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi91dGlscy9hcmlhLXV0aWxzXCJcbnZhciBhcmlhX3V0aWxzXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xudmFyIGFyaWFfdXRpbHNfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oYXJpYV91dGlsc18pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jYXNjYWRlci9zcmMvY2FzY2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgS2V5Q29kZSA9IGFyaWFfdXRpbHNfZGVmYXVsdC5hLmtleXM7XG5cbnZhciBNaWdyYXRpbmdQcm9wcyA9IHtcbiAgZXhwYW5kVHJpZ2dlcjoge1xuICAgIG5ld1Byb3A6ICdleHBhbmRUcmlnZ2VyJyxcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgY2hhbmdlT25TZWxlY3Q6IHtcbiAgICBuZXdQcm9wOiAnY2hlY2tTdHJpY3RseScsXG4gICAgdHlwZTogQm9vbGVhblxuICB9LFxuICBob3ZlclRocmVzaG9sZDoge1xuICAgIG5ld1Byb3A6ICdob3ZlclRocmVzaG9sZCcsXG4gICAgdHlwZTogTnVtYmVyXG4gIH1cbn07XG5cbnZhciBQb3BwZXJNaXhpbiA9IHtcbiAgcHJvcHM6IHtcbiAgICBwbGFjZW1lbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdib3R0b20tc3RhcnQnXG4gICAgfSxcbiAgICBhcHBlbmRUb0JvZHk6IHZ1ZV9wb3BwZXJfZGVmYXVsdC5hLnByb3BzLmFwcGVuZFRvQm9keSxcbiAgICB2aXNpYmxlQXJyb3c6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBhcnJvd09mZnNldDogdnVlX3BvcHBlcl9kZWZhdWx0LmEucHJvcHMuYXJyb3dPZmZzZXQsXG4gICAgb2Zmc2V0OiB2dWVfcG9wcGVyX2RlZmF1bHQuYS5wcm9wcy5vZmZzZXQsXG4gICAgYm91bmRhcmllc1BhZGRpbmc6IHZ1ZV9wb3BwZXJfZGVmYXVsdC5hLnByb3BzLmJvdW5kYXJpZXNQYWRkaW5nLFxuICAgIHBvcHBlck9wdGlvbnM6IHZ1ZV9wb3BwZXJfZGVmYXVsdC5hLnByb3BzLnBvcHBlck9wdGlvbnMsXG4gICAgdHJhbnNmb3JtT3JpZ2luOiB2dWVfcG9wcGVyX2RlZmF1bHQuYS5wcm9wcy50cmFuc2Zvcm1PcmlnaW5cbiAgfSxcbiAgbWV0aG9kczogdnVlX3BvcHBlcl9kZWZhdWx0LmEubWV0aG9kcyxcbiAgZGF0YTogdnVlX3BvcHBlcl9kZWZhdWx0LmEuZGF0YSxcbiAgYmVmb3JlRGVzdHJveTogdnVlX3BvcHBlcl9kZWZhdWx0LmEuYmVmb3JlRGVzdHJveVxufTtcblxudmFyIElucHV0U2l6ZU1hcCA9IHtcbiAgbWVkaXVtOiAzNixcbiAgc21hbGw6IDMyLFxuICBtaW5pOiAyOFxufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2FzY2FkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxDYXNjYWRlcicsXG5cbiAgZGlyZWN0aXZlczogeyBDbGlja291dHNpZGU6IGNsaWNrb3V0c2lkZV9kZWZhdWx0LmEgfSxcblxuICBtaXhpbnM6IFtQb3BwZXJNaXhpbiwgZW1pdHRlcl9kZWZhdWx0LmEsIGxvY2FsZV9kZWZhdWx0LmEsIG1pZ3JhdGluZ19kZWZhdWx0LmFdLFxuXG4gIGluamVjdDoge1xuICAgIGVsRm9ybToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGVsRm9ybUl0ZW06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBFbElucHV0OiBpbnB1dF9kZWZhdWx0LmEsXG4gICAgRWxUYWc6IHRhZ19kZWZhdWx0LmEsXG4gICAgRWxTY3JvbGxiYXI6IHNjcm9sbGJhcl9kZWZhdWx0LmEsXG4gICAgRWxDYXNjYWRlclBhbmVsOiBjYXNjYWRlcl9wYW5lbF9kZWZhdWx0LmFcbiAgfSxcblxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7fSxcbiAgICBvcHRpb25zOiBBcnJheSxcbiAgICBwcm9wczogT2JqZWN0LFxuICAgIHNpemU6IFN0cmluZyxcbiAgICBwbGFjZWhvbGRlcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QobGliX2xvY2FsZV9bXCJ0XCJdKSgnZWwuY2FzY2FkZXIucGxhY2Vob2xkZXInKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIGNsZWFyYWJsZTogQm9vbGVhbixcbiAgICBmaWx0ZXJhYmxlOiBCb29sZWFuLFxuICAgIGZpbHRlck1ldGhvZDogRnVuY3Rpb24sXG4gICAgc2VwYXJhdG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnIC8gJ1xuICAgIH0sXG4gICAgc2hvd0FsbExldmVsczoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGNvbGxhcHNlVGFnczogQm9vbGVhbixcbiAgICBkZWJvdW5jZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMzAwXG4gICAgfSxcbiAgICBiZWZvcmVGaWx0ZXI6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHBvcHBlckNsYXNzOiBTdHJpbmdcbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkcm9wRG93blZpc2libGU6IGZhbHNlLFxuICAgICAgY2hlY2tlZFZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgaW5wdXRIb3ZlcjogZmFsc2UsXG4gICAgICBpbnB1dFZhbHVlOiBudWxsLFxuICAgICAgcHJlc2VudFRleHQ6IG51bGwsXG4gICAgICBwcmVzZW50VGFnczogW10sXG4gICAgICBjaGVja2VkTm9kZXM6IFtdLFxuICAgICAgZmlsdGVyaW5nOiBmYWxzZSxcbiAgICAgIHN1Z2dlc3Rpb25zOiBbXSxcbiAgICAgIGlucHV0SW5pdGlhbEhlaWdodDogMCxcbiAgICAgIHByZXNzRGVsZXRlQ291bnQ6IDBcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICByZWFsU2l6ZTogZnVuY3Rpb24gcmVhbFNpemUoKSB7XG4gICAgICB2YXIgX2VsRm9ybUl0ZW1TaXplID0gKHRoaXMuZWxGb3JtSXRlbSB8fCB7fSkuZWxGb3JtSXRlbVNpemU7XG4gICAgICByZXR1cm4gdGhpcy5zaXplIHx8IF9lbEZvcm1JdGVtU2l6ZSB8fCAodGhpcy4kRUxFTUVOVCB8fCB7fSkuc2l6ZTtcbiAgICB9LFxuICAgIHRhZ1NpemU6IGZ1bmN0aW9uIHRhZ1NpemUoKSB7XG4gICAgICByZXR1cm4gWydzbWFsbCcsICdtaW5pJ10uaW5kZXhPZih0aGlzLnJlYWxTaXplKSA+IC0xID8gJ21pbmknIDogJ3NtYWxsJztcbiAgICB9LFxuICAgIGlzRGlzYWJsZWQ6IGZ1bmN0aW9uIGlzRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCAodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkO1xuICAgIH0sXG4gICAgY29uZmlnOiBmdW5jdGlvbiBjb25maWcoKSB7XG4gICAgICB2YXIgY29uZmlnID0gdGhpcy5wcm9wcyB8fCB7fTtcbiAgICAgIHZhciAkYXR0cnMgPSB0aGlzLiRhdHRycztcblxuXG4gICAgICBPYmplY3Qua2V5cyhNaWdyYXRpbmdQcm9wcykuZm9yRWFjaChmdW5jdGlvbiAob2xkUHJvcCkge1xuICAgICAgICB2YXIgX01pZ3JhdGluZ1Byb3BzJG9sZFByID0gTWlncmF0aW5nUHJvcHNbb2xkUHJvcF0sXG4gICAgICAgICAgICBuZXdQcm9wID0gX01pZ3JhdGluZ1Byb3BzJG9sZFByLm5ld1Byb3AsXG4gICAgICAgICAgICB0eXBlID0gX01pZ3JhdGluZ1Byb3BzJG9sZFByLnR5cGU7XG5cbiAgICAgICAgdmFyIG9sZFZhbHVlID0gJGF0dHJzW29sZFByb3BdIHx8ICRhdHRyc1tPYmplY3QodXRpbF9bXCJrZWJhYkNhc2VcIl0pKG9sZFByb3ApXTtcbiAgICAgICAgaWYgKE9iamVjdChzaGFyZWRfW1wiaXNEZWZcIl0pKG9sZFByb3ApICYmICFPYmplY3Qoc2hhcmVkX1tcImlzRGVmXCJdKShjb25maWdbbmV3UHJvcF0pKSB7XG4gICAgICAgICAgaWYgKHR5cGUgPT09IEJvb2xlYW4gJiYgb2xkVmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICBvbGRWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbmZpZ1tuZXdQcm9wXSA9IG9sZFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9LFxuICAgIG11bHRpcGxlOiBmdW5jdGlvbiBtdWx0aXBsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5tdWx0aXBsZTtcbiAgICB9LFxuICAgIGxlYWZPbmx5OiBmdW5jdGlvbiBsZWFmT25seSgpIHtcbiAgICAgIHJldHVybiAhdGhpcy5jb25maWcuY2hlY2tTdHJpY3RseTtcbiAgICB9LFxuICAgIHJlYWRvbmx5OiBmdW5jdGlvbiByZWFkb25seSgpIHtcbiAgICAgIHJldHVybiAhdGhpcy5maWx0ZXJhYmxlIHx8IHRoaXMubXVsdGlwbGU7XG4gICAgfSxcbiAgICBjbGVhckJ0blZpc2libGU6IGZ1bmN0aW9uIGNsZWFyQnRuVmlzaWJsZSgpIHtcbiAgICAgIGlmICghdGhpcy5jbGVhcmFibGUgfHwgdGhpcy5pc0Rpc2FibGVkIHx8IHRoaXMuZmlsdGVyaW5nIHx8ICF0aGlzLmlucHV0SG92ZXIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5tdWx0aXBsZSA/ICEhdGhpcy5jaGVja2VkTm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiAhbm9kZS5pc0Rpc2FibGVkO1xuICAgICAgfSkubGVuZ3RoIDogISF0aGlzLnByZXNlbnRUZXh0O1xuICAgIH0sXG4gICAgcGFuZWw6IGZ1bmN0aW9uIHBhbmVsKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHJlZnMucGFuZWw7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgZGlzYWJsZWQ6IGZ1bmN0aW9uIGRpc2FibGVkKCkge1xuICAgICAgdGhpcy5jb21wdXRlUHJlc2VudENvbnRlbnQoKTtcbiAgICB9LFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSh2YWwpIHtcbiAgICAgIGlmICghT2JqZWN0KHV0aWxfW1wiaXNFcXVhbFwiXSkodmFsLCB0aGlzLmNoZWNrZWRWYWx1ZSkpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkVmFsdWUgPSB2YWw7XG4gICAgICAgIHRoaXMuY29tcHV0ZVByZXNlbnRDb250ZW50KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjaGVja2VkVmFsdWU6IGZ1bmN0aW9uIGNoZWNrZWRWYWx1ZSh2YWwpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgZHJvcERvd25WaXNpYmxlID0gdGhpcy5kcm9wRG93blZpc2libGU7XG4gICAgICB2YXIgX2NvbmZpZyA9IHRoaXMuY29uZmlnLFxuICAgICAgICAgIGNoZWNrU3RyaWN0bHkgPSBfY29uZmlnLmNoZWNrU3RyaWN0bHksXG4gICAgICAgICAgbXVsdGlwbGUgPSBfY29uZmlnLm11bHRpcGxlO1xuXG5cbiAgICAgIGlmICghT2JqZWN0KHV0aWxfW1wiaXNFcXVhbFwiXSkodmFsLCB2YWx1ZSkgfHwgT2JqZWN0KHR5cGVzX1tcImlzVW5kZWZpbmVkXCJdKSh2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlUHJlc2VudENvbnRlbnQoKTtcbiAgICAgICAgLy8gaGlkZSBkcm9wZG93biB3aGVuIHNpbmdsZSBtb2RlXG4gICAgICAgIGlmICghbXVsdGlwbGUgJiYgIWNoZWNrU3RyaWN0bHkgJiYgZHJvcERvd25WaXNpYmxlKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVEcm9wRG93blZpc2libGUoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWwpO1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCB2YWwpO1xuICAgICAgICB0aGlzLmRpc3BhdGNoKCdFbEZvcm1JdGVtJywgJ2VsLmZvcm0uY2hhbmdlJywgW3ZhbF0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBvcHRpb25zOiB7XG4gICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgICB0aGlzLiRuZXh0VGljayh0aGlzLmNvbXB1dGVQcmVzZW50Q29udGVudCk7XG4gICAgICB9LFxuICAgICAgZGVlcDogdHJ1ZVxuICAgIH0sXG4gICAgcHJlc2VudFRleHQ6IGZ1bmN0aW9uIHByZXNlbnRUZXh0KHZhbCkge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdmFsO1xuICAgIH0sXG4gICAgcHJlc2VudFRhZ3M6IGZ1bmN0aW9uIHByZXNlbnRUYWdzKHZhbCwgb2xkVmFsKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAodmFsLmxlbmd0aCB8fCBvbGRWYWwubGVuZ3RoKSkge1xuICAgICAgICB0aGlzLiRuZXh0VGljayh0aGlzLnVwZGF0ZVN0eWxlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZpbHRlcmluZzogZnVuY3Rpb24gZmlsdGVyaW5nKHZhbCkge1xuICAgICAgdGhpcy4kbmV4dFRpY2sodGhpcy51cGRhdGVQb3BwZXIpO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgaW5wdXQgPSB0aGlzLiRyZWZzLmlucHV0O1xuXG4gICAgaWYgKGlucHV0ICYmIGlucHV0LiRlbCkge1xuICAgICAgdGhpcy5pbnB1dEluaXRpYWxIZWlnaHQgPSBpbnB1dC4kZWwub2Zmc2V0SGVpZ2h0IHx8IElucHV0U2l6ZU1hcFt0aGlzLnJlYWxTaXplXSB8fCA0MDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNFbXB0eVZhbHVlKHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLmNvbXB1dGVQcmVzZW50Q29udGVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVySGFuZGxlciA9IGRlYm91bmNlX2RlZmF1bHQoKSh0aGlzLmRlYm91bmNlLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaW5wdXRWYWx1ZSA9IF90aGlzLmlucHV0VmFsdWU7XG5cblxuICAgICAgaWYgKCFpbnB1dFZhbHVlKSB7XG4gICAgICAgIF90aGlzLmZpbHRlcmluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBiZWZvcmUgPSBfdGhpcy5iZWZvcmVGaWx0ZXIoaW5wdXRWYWx1ZSk7XG4gICAgICBpZiAoYmVmb3JlICYmIGJlZm9yZS50aGVuKSB7XG4gICAgICAgIGJlZm9yZS50aGVuKF90aGlzLmdldFN1Z2dlc3Rpb25zKTtcbiAgICAgIH0gZWxzZSBpZiAoYmVmb3JlICE9PSBmYWxzZSkge1xuICAgICAgICBfdGhpcy5nZXRTdWdnZXN0aW9ucygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuZmlsdGVyaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBPYmplY3QocmVzaXplX2V2ZW50X1tcImFkZFJlc2l6ZUxpc3RlbmVyXCJdKSh0aGlzLiRlbCwgdGhpcy51cGRhdGVTdHlsZSk7XG4gIH0sXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgT2JqZWN0KHJlc2l6ZV9ldmVudF9bXCJyZW1vdmVSZXNpemVMaXN0ZW5lclwiXSkodGhpcy4kZWwsIHRoaXMudXBkYXRlU3R5bGUpO1xuICB9LFxuXG5cbiAgbWV0aG9kczoge1xuICAgIGdldE1pZ3JhdGluZ0NvbmZpZzogZnVuY3Rpb24gZ2V0TWlncmF0aW5nQ29uZmlnKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAnZXhwYW5kLXRyaWdnZXInOiAnZXhwYW5kLXRyaWdnZXIgaXMgcmVtb3ZlZCwgdXNlIGBwcm9wcy5leHBhbmRUcmlnZ2VyYCBpbnN0ZWFkLicsXG4gICAgICAgICAgJ2NoYW5nZS1vbi1zZWxlY3QnOiAnY2hhbmdlLW9uLXNlbGVjdCBpcyByZW1vdmVkLCB1c2UgYHByb3BzLmNoZWNrU3RyaWN0bHlgIGluc3RlYWQuJyxcbiAgICAgICAgICAnaG92ZXItdGhyZXNob2xkJzogJ2hvdmVyLXRocmVzaG9sZCBpcyByZW1vdmVkLCB1c2UgYHByb3BzLmhvdmVyVGhyZXNob2xkYCBpbnN0ZWFkJ1xuICAgICAgICB9LFxuICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICAnYWN0aXZlLWl0ZW0tY2hhbmdlJzogJ2FjdGl2ZS1pdGVtLWNoYW5nZSBpcyByZW5hbWVkIHRvIGV4cGFuZC1jaGFuZ2UnXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSxcbiAgICB0b2dnbGVEcm9wRG93blZpc2libGU6IGZ1bmN0aW9uIHRvZ2dsZURyb3BEb3duVmlzaWJsZSh2aXNpYmxlKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICB2YXIgZHJvcERvd25WaXNpYmxlID0gdGhpcy5kcm9wRG93blZpc2libGU7XG4gICAgICB2YXIgaW5wdXQgPSB0aGlzLiRyZWZzLmlucHV0O1xuXG4gICAgICB2aXNpYmxlID0gT2JqZWN0KHNoYXJlZF9bXCJpc0RlZlwiXSkodmlzaWJsZSkgPyB2aXNpYmxlIDogIWRyb3BEb3duVmlzaWJsZTtcbiAgICAgIGlmICh2aXNpYmxlICE9PSBkcm9wRG93blZpc2libGUpIHtcbiAgICAgICAgdGhpcy5kcm9wRG93blZpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzMi51cGRhdGVQb3BwZXIoKTtcbiAgICAgICAgICAgIF90aGlzMi5wYW5lbC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0LiRyZWZzLmlucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIHZpc2libGUpO1xuICAgICAgICB0aGlzLiRlbWl0KCd2aXNpYmxlLWNoYW5nZScsIHZpc2libGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlRHJvcGRvd25MZWF2ZTogZnVuY3Rpb24gaGFuZGxlRHJvcGRvd25MZWF2ZSgpIHtcbiAgICAgIHRoaXMuZmlsdGVyaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLnByZXNlbnRUZXh0O1xuICAgICAgdGhpcy5kb0Rlc3Ryb3koKTtcbiAgICB9LFxuICAgIGhhbmRsZUtleURvd246IGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICBjYXNlIEtleUNvZGUuZW50ZXI6XG4gICAgICAgICAgdGhpcy50b2dnbGVEcm9wRG93blZpc2libGUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBLZXlDb2RlLmRvd246XG4gICAgICAgICAgdGhpcy50b2dnbGVEcm9wRG93blZpc2libGUodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5mb2N1c0ZpcnN0Tm9kZSgpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgS2V5Q29kZS5lc2M6XG4gICAgICAgIGNhc2UgS2V5Q29kZS50YWI6XG4gICAgICAgICAgdGhpcy50b2dnbGVEcm9wRG93blZpc2libGUoZmFsc2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlRm9jdXM6IGZ1bmN0aW9uIGhhbmRsZUZvY3VzKGUpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2ZvY3VzJywgZSk7XG4gICAgfSxcbiAgICBoYW5kbGVCbHVyOiBmdW5jdGlvbiBoYW5kbGVCbHVyKGUpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2JsdXInLCBlKTtcbiAgICB9LFxuICAgIGhhbmRsZUlucHV0OiBmdW5jdGlvbiBoYW5kbGVJbnB1dCh2YWwsIGV2ZW50KSB7XG4gICAgICAhdGhpcy5kcm9wRG93blZpc2libGUgJiYgdGhpcy50b2dnbGVEcm9wRG93blZpc2libGUodHJ1ZSk7XG5cbiAgICAgIGlmIChldmVudCAmJiBldmVudC5pc0NvbXBvc2luZykgcmV0dXJuO1xuICAgICAgaWYgKHZhbCkge1xuICAgICAgICB0aGlzLmZpbHRlckhhbmRsZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsdGVyaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDbGVhcjogZnVuY3Rpb24gaGFuZGxlQ2xlYXIoKSB7XG4gICAgICB0aGlzLnByZXNlbnRUZXh0ID0gJyc7XG4gICAgICB0aGlzLnBhbmVsLmNsZWFyQ2hlY2tlZE5vZGVzKCk7XG4gICAgfSxcbiAgICBoYW5kbGVFeHBhbmRDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUV4cGFuZENoYW5nZSh2YWx1ZSkge1xuICAgICAgdGhpcy4kbmV4dFRpY2sodGhpcy51cGRhdGVQb3BwZXIuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLiRlbWl0KCdleHBhbmQtY2hhbmdlJywgdmFsdWUpO1xuICAgICAgdGhpcy4kZW1pdCgnYWN0aXZlLWl0ZW0tY2hhbmdlJywgdmFsdWUpOyAvLyBEZXByZWNhdGVkXG4gICAgfSxcbiAgICBmb2N1c0ZpcnN0Tm9kZTogZnVuY3Rpb24gZm9jdXNGaXJzdE5vZGUoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZmlsdGVyaW5nID0gX3RoaXMzLmZpbHRlcmluZztcbiAgICAgICAgdmFyIF8kcmVmcyA9IF90aGlzMy4kcmVmcyxcbiAgICAgICAgICAgIHBvcHBlciA9IF8kcmVmcy5wb3BwZXIsXG4gICAgICAgICAgICBzdWdnZXN0aW9uUGFuZWwgPSBfJHJlZnMuc3VnZ2VzdGlvblBhbmVsO1xuXG4gICAgICAgIHZhciBmaXJzdE5vZGUgPSBudWxsO1xuXG4gICAgICAgIGlmIChmaWx0ZXJpbmcgJiYgc3VnZ2VzdGlvblBhbmVsKSB7XG4gICAgICAgICAgZmlyc3ROb2RlID0gc3VnZ2VzdGlvblBhbmVsLiRlbC5xdWVyeVNlbGVjdG9yKCcuZWwtY2FzY2FkZXJfX3N1Z2dlc3Rpb24taXRlbScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBmaXJzdE1lbnUgPSBwb3BwZXIucXVlcnlTZWxlY3RvcignLmVsLWNhc2NhZGVyLW1lbnUnKTtcbiAgICAgICAgICBmaXJzdE5vZGUgPSBmaXJzdE1lbnUucXVlcnlTZWxlY3RvcignLmVsLWNhc2NhZGVyLW5vZGVbdGFiaW5kZXg9XCItMVwiXScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpcnN0Tm9kZSkge1xuICAgICAgICAgIGZpcnN0Tm9kZS5mb2N1cygpO1xuICAgICAgICAgICFmaWx0ZXJpbmcgJiYgZmlyc3ROb2RlLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY29tcHV0ZVByZXNlbnRDb250ZW50OiBmdW5jdGlvbiBjb21wdXRlUHJlc2VudENvbnRlbnQoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgLy8gbmV4dFRpY2sgaXMgcmVxdWlyZWQsIGJlY2F1c2UgY2hlY2tlZCBub2RlcyBtYXkgbm90IGNoYW5nZSByaWdodCBub3dcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzNC5jb25maWcubXVsdGlwbGUpIHtcbiAgICAgICAgICBfdGhpczQuY29tcHV0ZVByZXNlbnRUYWdzKCk7XG4gICAgICAgICAgX3RoaXM0LnByZXNlbnRUZXh0ID0gX3RoaXM0LnByZXNlbnRUYWdzLmxlbmd0aCA/ICcgJyA6IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXM0LmNvbXB1dGVQcmVzZW50VGV4dCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzRW1wdHlWYWx1ZTogZnVuY3Rpb24gaXNFbXB0eVZhbHVlKHZhbCkge1xuICAgICAgdmFyIG11bHRpcGxlID0gdGhpcy5tdWx0aXBsZTtcbiAgICAgIHZhciBlbWl0UGF0aCA9IHRoaXMucGFuZWwuY29uZmlnLmVtaXRQYXRoO1xuXG4gICAgICBpZiAobXVsdGlwbGUgfHwgZW1pdFBhdGgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcImlzRW1wdHlcIl0pKHZhbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBjb21wdXRlUHJlc2VudFRleHQ6IGZ1bmN0aW9uIGNvbXB1dGVQcmVzZW50VGV4dCgpIHtcbiAgICAgIHZhciBjaGVja2VkVmFsdWUgPSB0aGlzLmNoZWNrZWRWYWx1ZSxcbiAgICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZztcblxuICAgICAgaWYgKCF0aGlzLmlzRW1wdHlWYWx1ZShjaGVja2VkVmFsdWUpKSB7XG4gICAgICAgIHZhciBub2RlID0gdGhpcy5wYW5lbC5nZXROb2RlQnlWYWx1ZShjaGVja2VkVmFsdWUpO1xuICAgICAgICBpZiAobm9kZSAmJiAoY29uZmlnLmNoZWNrU3RyaWN0bHkgfHwgbm9kZS5pc0xlYWYpKSB7XG4gICAgICAgICAgdGhpcy5wcmVzZW50VGV4dCA9IG5vZGUuZ2V0VGV4dCh0aGlzLnNob3dBbGxMZXZlbHMsIHRoaXMuc2VwYXJhdG9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMucHJlc2VudFRleHQgPSBudWxsO1xuICAgIH0sXG4gICAgY29tcHV0ZVByZXNlbnRUYWdzOiBmdW5jdGlvbiBjb21wdXRlUHJlc2VudFRhZ3MoKSB7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IHRoaXMuaXNEaXNhYmxlZCxcbiAgICAgICAgICBsZWFmT25seSA9IHRoaXMubGVhZk9ubHksXG4gICAgICAgICAgc2hvd0FsbExldmVscyA9IHRoaXMuc2hvd0FsbExldmVscyxcbiAgICAgICAgICBzZXBhcmF0b3IgPSB0aGlzLnNlcGFyYXRvcixcbiAgICAgICAgICBjb2xsYXBzZVRhZ3MgPSB0aGlzLmNvbGxhcHNlVGFncztcblxuICAgICAgdmFyIGNoZWNrZWROb2RlcyA9IHRoaXMuZ2V0Q2hlY2tlZE5vZGVzKGxlYWZPbmx5KTtcbiAgICAgIHZhciB0YWdzID0gW107XG5cbiAgICAgIHZhciBnZW5UYWcgPSBmdW5jdGlvbiBnZW5UYWcobm9kZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAga2V5OiBub2RlLnVpZCxcbiAgICAgICAgICB0ZXh0OiBub2RlLmdldFRleHQoc2hvd0FsbExldmVscywgc2VwYXJhdG9yKSxcbiAgICAgICAgICBoaXRTdGF0ZTogZmFsc2UsXG4gICAgICAgICAgY2xvc2FibGU6ICFpc0Rpc2FibGVkICYmICFub2RlLmlzRGlzYWJsZWRcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIGlmIChjaGVja2VkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBmaXJzdCA9IGNoZWNrZWROb2Rlc1swXSxcbiAgICAgICAgICAgIHJlc3QgPSBjaGVja2VkTm9kZXMuc2xpY2UoMSk7XG5cbiAgICAgICAgdmFyIHJlc3RDb3VudCA9IHJlc3QubGVuZ3RoO1xuICAgICAgICB0YWdzLnB1c2goZ2VuVGFnKGZpcnN0KSk7XG5cbiAgICAgICAgaWYgKHJlc3RDb3VudCkge1xuICAgICAgICAgIGlmIChjb2xsYXBzZVRhZ3MpIHtcbiAgICAgICAgICAgIHRhZ3MucHVzaCh7XG4gICAgICAgICAgICAgIGtleTogLTEsXG4gICAgICAgICAgICAgIHRleHQ6ICcrICcgKyByZXN0Q291bnQsXG4gICAgICAgICAgICAgIGNsb3NhYmxlOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3QuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGFncy5wdXNoKGdlblRhZyhub2RlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGVja2VkTm9kZXMgPSBjaGVja2VkTm9kZXM7XG4gICAgICB0aGlzLnByZXNlbnRUYWdzID0gdGFncztcbiAgICB9LFxuICAgIGdldFN1Z2dlc3Rpb25zOiBmdW5jdGlvbiBnZXRTdWdnZXN0aW9ucygpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICB2YXIgZmlsdGVyTWV0aG9kID0gdGhpcy5maWx0ZXJNZXRob2Q7XG5cblxuICAgICAgaWYgKCFPYmplY3QodHlwZXNfW1wiaXNGdW5jdGlvblwiXSkoZmlsdGVyTWV0aG9kKSkge1xuICAgICAgICBmaWx0ZXJNZXRob2QgPSBmdW5jdGlvbiBmaWx0ZXJNZXRob2Qobm9kZSwga2V5d29yZCkge1xuICAgICAgICAgIHJldHVybiBub2RlLnRleHQuaW5jbHVkZXMoa2V5d29yZCk7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHZhciBzdWdnZXN0aW9ucyA9IHRoaXMucGFuZWwuZ2V0RmxhdHRlZE5vZGVzKHRoaXMubGVhZk9ubHkpLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5pc0Rpc2FibGVkKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIG5vZGUudGV4dCA9IG5vZGUuZ2V0VGV4dChfdGhpczUuc2hvd0FsbExldmVscywgX3RoaXM1LnNlcGFyYXRvcikgfHwgJyc7XG4gICAgICAgIHJldHVybiBmaWx0ZXJNZXRob2Qobm9kZSwgX3RoaXM1LmlucHV0VmFsdWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMucHJlc2VudFRhZ3MuZm9yRWFjaChmdW5jdGlvbiAodGFnKSB7XG4gICAgICAgICAgdGFnLmhpdFN0YXRlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VnZ2VzdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIG5vZGUuY2hlY2tlZCA9IE9iamVjdCh1dGlsX1tcImlzRXF1YWxcIl0pKF90aGlzNS5jaGVja2VkVmFsdWUsIG5vZGUuZ2V0VmFsdWVCeU9wdGlvbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZmlsdGVyaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9ucztcbiAgICAgIHRoaXMuJG5leHRUaWNrKHRoaXMudXBkYXRlUG9wcGVyKTtcbiAgICB9LFxuICAgIGhhbmRsZVN1Z2dlc3Rpb25LZXlEb3duOiBmdW5jdGlvbiBoYW5kbGVTdWdnZXN0aW9uS2V5RG93bihldmVudCkge1xuICAgICAgdmFyIGtleUNvZGUgPSBldmVudC5rZXlDb2RlLFxuICAgICAgICAgIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblxuICAgICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICAgIGNhc2UgS2V5Q29kZS5lbnRlcjpcbiAgICAgICAgICB0YXJnZXQuY2xpY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBLZXlDb2RlLnVwOlxuICAgICAgICAgIHZhciBwcmV2ID0gdGFyZ2V0LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgcHJldiAmJiBwcmV2LmZvY3VzKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgS2V5Q29kZS5kb3duOlxuICAgICAgICAgIHZhciBuZXh0ID0gdGFyZ2V0Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICBuZXh0ICYmIG5leHQuZm9jdXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBLZXlDb2RlLmVzYzpcbiAgICAgICAgY2FzZSBLZXlDb2RlLnRhYjpcbiAgICAgICAgICB0aGlzLnRvZ2dsZURyb3BEb3duVmlzaWJsZShmYWxzZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVEZWxldGU6IGZ1bmN0aW9uIGhhbmRsZURlbGV0ZSgpIHtcbiAgICAgIHZhciBpbnB1dFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlLFxuICAgICAgICAgIHByZXNzRGVsZXRlQ291bnQgPSB0aGlzLnByZXNzRGVsZXRlQ291bnQsXG4gICAgICAgICAgcHJlc2VudFRhZ3MgPSB0aGlzLnByZXNlbnRUYWdzO1xuXG4gICAgICB2YXIgbGFzdEluZGV4ID0gcHJlc2VudFRhZ3MubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBsYXN0VGFnID0gcHJlc2VudFRhZ3NbbGFzdEluZGV4XTtcbiAgICAgIHRoaXMucHJlc3NEZWxldGVDb3VudCA9IGlucHV0VmFsdWUgPyAwIDogcHJlc3NEZWxldGVDb3VudCArIDE7XG5cbiAgICAgIGlmICghbGFzdFRhZykgcmV0dXJuO1xuXG4gICAgICBpZiAodGhpcy5wcmVzc0RlbGV0ZUNvdW50KSB7XG4gICAgICAgIGlmIChsYXN0VGFnLmhpdFN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5kZWxldGVUYWcobGFzdFRhZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGFzdFRhZy5oaXRTdGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljazogZnVuY3Rpb24gaGFuZGxlU3VnZ2VzdGlvbkNsaWNrKGluZGV4KSB7XG4gICAgICB2YXIgbXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlO1xuXG4gICAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRoaXMuc3VnZ2VzdGlvbnNbaW5kZXhdO1xuXG4gICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgdmFyIGNoZWNrZWQgPSB0YXJnZXROb2RlLmNoZWNrZWQ7XG5cbiAgICAgICAgdGFyZ2V0Tm9kZS5kb0NoZWNrKCFjaGVja2VkKTtcbiAgICAgICAgdGhpcy5wYW5lbC5jYWxjdWxhdGVNdWx0aUNoZWNrZWRWYWx1ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGVja2VkVmFsdWUgPSB0YXJnZXROb2RlLmdldFZhbHVlQnlPcHRpb24oKTtcbiAgICAgICAgdGhpcy50b2dnbGVEcm9wRG93blZpc2libGUoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZGVsZXRlVGFnOiBmdW5jdGlvbiBkZWxldGVUYWcodGFnKSB7XG4gICAgICB2YXIgY2hlY2tlZFZhbHVlID0gdGhpcy5jaGVja2VkVmFsdWU7XG5cbiAgICAgIHZhciBjdXJyZW50ID0gdGFnLm5vZGUuZ2V0VmFsdWVCeU9wdGlvbigpO1xuICAgICAgdmFyIHZhbCA9IGNoZWNrZWRWYWx1ZS5maW5kKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QodXRpbF9bXCJpc0VxdWFsXCJdKShuLCBjdXJyZW50KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jaGVja2VkVmFsdWUgPSBjaGVja2VkVmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiAhT2JqZWN0KHV0aWxfW1wiaXNFcXVhbFwiXSkobiwgY3VycmVudCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuJGVtaXQoJ3JlbW92ZS10YWcnLCB2YWwpO1xuICAgIH0sXG4gICAgdXBkYXRlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKCkge1xuICAgICAgdmFyICRlbCA9IHRoaXMuJGVsLFxuICAgICAgICAgIGlucHV0SW5pdGlhbEhlaWdodCA9IHRoaXMuaW5wdXRJbml0aWFsSGVpZ2h0O1xuXG4gICAgICBpZiAodGhpcy4kaXNTZXJ2ZXIgfHwgISRlbCkgcmV0dXJuO1xuXG4gICAgICB2YXIgc3VnZ2VzdGlvblBhbmVsID0gdGhpcy4kcmVmcy5zdWdnZXN0aW9uUGFuZWw7XG5cbiAgICAgIHZhciBpbnB1dElubmVyID0gJGVsLnF1ZXJ5U2VsZWN0b3IoJy5lbC1pbnB1dF9faW5uZXInKTtcblxuICAgICAgaWYgKCFpbnB1dElubmVyKSByZXR1cm47XG5cbiAgICAgIHZhciB0YWdzID0gJGVsLnF1ZXJ5U2VsZWN0b3IoJy5lbC1jYXNjYWRlcl9fdGFncycpO1xuICAgICAgdmFyIHN1Z2dlc3Rpb25QYW5lbEVsID0gbnVsbDtcblxuICAgICAgaWYgKHN1Z2dlc3Rpb25QYW5lbCAmJiAoc3VnZ2VzdGlvblBhbmVsRWwgPSBzdWdnZXN0aW9uUGFuZWwuJGVsKSkge1xuICAgICAgICB2YXIgc3VnZ2VzdGlvbkxpc3QgPSBzdWdnZXN0aW9uUGFuZWxFbC5xdWVyeVNlbGVjdG9yKCcuZWwtY2FzY2FkZXJfX3N1Z2dlc3Rpb24tbGlzdCcpO1xuICAgICAgICBzdWdnZXN0aW9uTGlzdC5zdHlsZS5taW5XaWR0aCA9IGlucHV0SW5uZXIub2Zmc2V0V2lkdGggKyAncHgnO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFncykge1xuICAgICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gTWF0aC5yb3VuZCh0YWdzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG4gICAgICAgIHZhciBoZWlnaHQgPSBNYXRoLm1heChvZmZzZXRIZWlnaHQgKyA2LCBpbnB1dEluaXRpYWxIZWlnaHQpICsgJ3B4JztcbiAgICAgICAgaW5wdXRJbm5lci5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIGlmICh0aGlzLmRyb3BEb3duVmlzaWJsZSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlUG9wcGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiBwdWJsaWMgbWV0aG9kc1xuICAgICovXG4gICAgZ2V0Q2hlY2tlZE5vZGVzOiBmdW5jdGlvbiBnZXRDaGVja2VkTm9kZXMobGVhZk9ubHkpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhbmVsLmdldENoZWNrZWROb2RlcyhsZWFmT25seSk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXIvc3JjL2Nhc2NhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfY2FzY2FkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoY2FzY2FkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXIvc3JjL2Nhc2NhZGVyLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNhc2NhZGVyX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX2Nhc2NhZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBjYXNjYWRlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzAzMjUzN2E2X3JlbmRlcixcbiAgY2FzY2FkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMzI1MzdhNl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGNhc2NhZGVyX2FwaTsgfVxuY2FzY2FkZXJfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9jYXNjYWRlci9zcmMvY2FzY2FkZXIudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNhc2NhZGVyID0gKGNhc2NhZGVyX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXIvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY2FzY2FkZXIuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChjYXNjYWRlci5uYW1lLCBjYXNjYWRlcik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19jYXNjYWRlciA9IChjYXNjYWRlcik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTVjOGFkZTcmXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU1YzhhZGU3X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiY2xpY2tvdXRzaWRlXCIsXG4gICAgICAgICAgcmF3TmFtZTogXCJ2LWNsaWNrb3V0c2lkZVwiLFxuICAgICAgICAgIHZhbHVlOiBfdm0uaGlkZSxcbiAgICAgICAgICBleHByZXNzaW9uOiBcImhpZGVcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgXCJlbC1jb2xvci1waWNrZXJcIixcbiAgICAgICAgX3ZtLmNvbG9yRGlzYWJsZWQgPyBcImlzLWRpc2FibGVkXCIgOiBcIlwiLFxuICAgICAgICBfdm0uY29sb3JTaXplID8gXCJlbC1jb2xvci1waWNrZXItLVwiICsgX3ZtLmNvbG9yU2l6ZSA6IFwiXCJcbiAgICAgIF1cbiAgICB9LFxuICAgIFtcbiAgICAgIF92bS5jb2xvckRpc2FibGVkXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1jb2xvci1waWNrZXJfX21hc2tcIiB9KVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jb2xvci1waWNrZXJfX3RyaWdnZXJcIixcbiAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmhhbmRsZVRyaWdnZXIgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY29sb3ItcGlja2VyX19jb2xvclwiLFxuICAgICAgICAgICAgICBjbGFzczogeyBcImlzLWFscGhhXCI6IF92bS5zaG93QWxwaGEgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jb2xvci1waWNrZXJfX2NvbG9yLWlubmVyXCIsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogX3ZtLmRpc3BsYXllZENvbG9yXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgIV92bS52YWx1ZSAmJiAhX3ZtLnNob3dQYW5lbENvbG9yXG4gICAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jb2xvci1waWNrZXJfX2VtcHR5IGVsLWljb24tY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfYyhcInNwYW5cIiwge1xuICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZhbHVlIHx8IF92bS5zaG93UGFuZWxDb2xvcixcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInZhbHVlIHx8IHNob3dQYW5lbENvbG9yXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLXBpY2tlcl9faWNvbiBlbC1pY29uLWFycm93LWRvd25cIlxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfYyhcInBpY2tlci1kcm9wZG93blwiLCB7XG4gICAgICAgIHJlZjogXCJkcm9wZG93blwiLFxuICAgICAgICBjbGFzczogW1wiZWwtY29sb3ItcGlja2VyX19wYW5lbFwiLCBfdm0ucG9wcGVyQ2xhc3MgfHwgXCJcIl0sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgY29sb3I6IF92bS5jb2xvcixcbiAgICAgICAgICBcInNob3ctYWxwaGFcIjogX3ZtLnNob3dBbHBoYSxcbiAgICAgICAgICBwcmVkZWZpbmU6IF92bS5wcmVkZWZpbmVcbiAgICAgICAgfSxcbiAgICAgICAgb246IHsgcGljazogX3ZtLmNvbmZpcm1WYWx1ZSwgY2xlYXI6IF92bS5jbGVhclZhbHVlIH0sXG4gICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgdmFsdWU6IF92bS5zaG93UGlja2VyLFxuICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgIF92bS5zaG93UGlja2VyID0gJCR2XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dQaWNrZXJcIlxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU1YzhhZGU3X3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNTVjOGFkZTdfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb2xvci1waWNrZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1YzhhZGU3JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29sb3IuanNcbnZhciBjb2xvcl90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5mdW5jdGlvbiBjb2xvcl9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBoc3YyaHNsID0gZnVuY3Rpb24gaHN2MmhzbChodWUsIHNhdCwgdmFsKSB7XG4gIHJldHVybiBbaHVlLCBzYXQgKiB2YWwgLyAoKGh1ZSA9ICgyIC0gc2F0KSAqIHZhbCkgPCAxID8gaHVlIDogMiAtIGh1ZSkgfHwgMCwgaHVlIC8gMl07XG59O1xuXG4vLyBOZWVkIHRvIGhhbmRsZSAxLjAgYXMgMTAwJSwgc2luY2Ugb25jZSBpdCBpcyBhIG51bWJlciwgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIGl0IGFuZCAxXG4vLyA8aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83NDIyMDcyL2phdmFzY3JpcHQtaG93LXRvLWRldGVjdC1udW1iZXItYXMtYS1kZWNpbWFsLWluY2x1ZGluZy0xLTA+XG52YXIgaXNPbmVQb2ludFplcm8gPSBmdW5jdGlvbiBpc09uZVBvaW50WmVybyhuKSB7XG4gIHJldHVybiB0eXBlb2YgbiA9PT0gJ3N0cmluZycgJiYgbi5pbmRleE9mKCcuJykgIT09IC0xICYmIHBhcnNlRmxvYXQobikgPT09IDE7XG59O1xuXG52YXIgaXNQZXJjZW50YWdlID0gZnVuY3Rpb24gaXNQZXJjZW50YWdlKG4pIHtcbiAgcmV0dXJuIHR5cGVvZiBuID09PSAnc3RyaW5nJyAmJiBuLmluZGV4T2YoJyUnKSAhPT0gLTE7XG59O1xuXG4vLyBUYWtlIGlucHV0IGZyb20gWzAsIG5dIGFuZCByZXR1cm4gaXQgYXMgWzAsIDFdXG52YXIgYm91bmQwMSA9IGZ1bmN0aW9uIGJvdW5kMDEodmFsdWUsIG1heCkge1xuICBpZiAoaXNPbmVQb2ludFplcm8odmFsdWUpKSB2YWx1ZSA9ICcxMDAlJztcblxuICB2YXIgcHJvY2Vzc1BlcmNlbnQgPSBpc1BlcmNlbnRhZ2UodmFsdWUpO1xuICB2YWx1ZSA9IE1hdGgubWluKG1heCwgTWF0aC5tYXgoMCwgcGFyc2VGbG9hdCh2YWx1ZSkpKTtcblxuICAvLyBBdXRvbWF0aWNhbGx5IGNvbnZlcnQgcGVyY2VudGFnZSBpbnRvIG51bWJlclxuICBpZiAocHJvY2Vzc1BlcmNlbnQpIHtcbiAgICB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlICogbWF4LCAxMCkgLyAxMDA7XG4gIH1cblxuICAvLyBIYW5kbGUgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgZXJyb3JzXG4gIGlmIChNYXRoLmFicyh2YWx1ZSAtIG1heCkgPCAwLjAwMDAwMSkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgLy8gQ29udmVydCBpbnRvIFswLCAxXSByYW5nZSBpZiBpdCBpc24ndCBhbHJlYWR5XG4gIHJldHVybiB2YWx1ZSAlIG1heCAvIHBhcnNlRmxvYXQobWF4KTtcbn07XG5cbnZhciBJTlRfSEVYX01BUCA9IHsgMTA6ICdBJywgMTE6ICdCJywgMTI6ICdDJywgMTM6ICdEJywgMTQ6ICdFJywgMTU6ICdGJyB9O1xuXG52YXIgdG9IZXggPSBmdW5jdGlvbiB0b0hleChfcmVmKSB7XG4gIHZhciByID0gX3JlZi5yLFxuICAgICAgZyA9IF9yZWYuZyxcbiAgICAgIGIgPSBfcmVmLmI7XG5cbiAgdmFyIGhleE9uZSA9IGZ1bmN0aW9uIGhleE9uZSh2YWx1ZSkge1xuICAgIHZhbHVlID0gTWF0aC5taW4oTWF0aC5yb3VuZCh2YWx1ZSksIDI1NSk7XG4gICAgdmFyIGhpZ2ggPSBNYXRoLmZsb29yKHZhbHVlIC8gMTYpO1xuICAgIHZhciBsb3cgPSB2YWx1ZSAlIDE2O1xuICAgIHJldHVybiAnJyArIChJTlRfSEVYX01BUFtoaWdoXSB8fCBoaWdoKSArIChJTlRfSEVYX01BUFtsb3ddIHx8IGxvdyk7XG4gIH07XG5cbiAgaWYgKGlzTmFOKHIpIHx8IGlzTmFOKGcpIHx8IGlzTmFOKGIpKSByZXR1cm4gJyc7XG5cbiAgcmV0dXJuICcjJyArIGhleE9uZShyKSArIGhleE9uZShnKSArIGhleE9uZShiKTtcbn07XG5cbnZhciBIRVhfSU5UX01BUCA9IHsgQTogMTAsIEI6IDExLCBDOiAxMiwgRDogMTMsIEU6IDE0LCBGOiAxNSB9O1xuXG52YXIgcGFyc2VIZXhDaGFubmVsID0gZnVuY3Rpb24gcGFyc2VIZXhDaGFubmVsKGhleCkge1xuICBpZiAoaGV4Lmxlbmd0aCA9PT0gMikge1xuICAgIHJldHVybiAoSEVYX0lOVF9NQVBbaGV4WzBdLnRvVXBwZXJDYXNlKCldIHx8ICtoZXhbMF0pICogMTYgKyAoSEVYX0lOVF9NQVBbaGV4WzFdLnRvVXBwZXJDYXNlKCldIHx8ICtoZXhbMV0pO1xuICB9XG5cbiAgcmV0dXJuIEhFWF9JTlRfTUFQW2hleFsxXS50b1VwcGVyQ2FzZSgpXSB8fCAraGV4WzFdO1xufTtcblxudmFyIGhzbDJoc3YgPSBmdW5jdGlvbiBoc2wyaHN2KGh1ZSwgc2F0LCBsaWdodCkge1xuICBzYXQgPSBzYXQgLyAxMDA7XG4gIGxpZ2h0ID0gbGlnaHQgLyAxMDA7XG4gIHZhciBzbWluID0gc2F0O1xuICB2YXIgbG1pbiA9IE1hdGgubWF4KGxpZ2h0LCAwLjAxKTtcbiAgdmFyIHN2ID0gdm9pZCAwO1xuICB2YXIgdiA9IHZvaWQgMDtcblxuICBsaWdodCAqPSAyO1xuICBzYXQgKj0gbGlnaHQgPD0gMSA/IGxpZ2h0IDogMiAtIGxpZ2h0O1xuICBzbWluICo9IGxtaW4gPD0gMSA/IGxtaW4gOiAyIC0gbG1pbjtcbiAgdiA9IChsaWdodCArIHNhdCkgLyAyO1xuICBzdiA9IGxpZ2h0ID09PSAwID8gMiAqIHNtaW4gLyAobG1pbiArIHNtaW4pIDogMiAqIHNhdCAvIChsaWdodCArIHNhdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBoOiBodWUsXG4gICAgczogc3YgKiAxMDAsXG4gICAgdjogdiAqIDEwMFxuICB9O1xufTtcblxuLy8gYHJnYlRvSHN2YFxuLy8gQ29udmVydHMgYW4gUkdCIGNvbG9yIHZhbHVlIHRvIEhTVlxuLy8gKkFzc3VtZXM6KiByLCBnLCBhbmQgYiBhcmUgY29udGFpbmVkIGluIHRoZSBzZXQgWzAsIDI1NV0gb3IgWzAsIDFdXG4vLyAqUmV0dXJuczoqIHsgaCwgcywgdiB9IGluIFswLDFdXG52YXIgcmdiMmhzdiA9IGZ1bmN0aW9uIHJnYjJoc3YociwgZywgYikge1xuICByID0gYm91bmQwMShyLCAyNTUpO1xuICBnID0gYm91bmQwMShnLCAyNTUpO1xuICBiID0gYm91bmQwMShiLCAyNTUpO1xuXG4gIHZhciBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgdmFyIG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICB2YXIgaCA9IHZvaWQgMCxcbiAgICAgIHMgPSB2b2lkIDA7XG4gIHZhciB2ID0gbWF4O1xuXG4gIHZhciBkID0gbWF4IC0gbWluO1xuICBzID0gbWF4ID09PSAwID8gMCA6IGQgLyBtYXg7XG5cbiAgaWYgKG1heCA9PT0gbWluKSB7XG4gICAgaCA9IDA7IC8vIGFjaHJvbWF0aWNcbiAgfSBlbHNlIHtcbiAgICBzd2l0Y2ggKG1heCkge1xuICAgICAgY2FzZSByOlxuICAgICAgICBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBnOlxuICAgICAgICBoID0gKGIgLSByKSAvIGQgKyAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgYjpcbiAgICAgICAgaCA9IChyIC0gZykgLyBkICsgNDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGggLz0gNjtcbiAgfVxuXG4gIHJldHVybiB7IGg6IGggKiAzNjAsIHM6IHMgKiAxMDAsIHY6IHYgKiAxMDAgfTtcbn07XG5cbi8vIGBoc3ZUb1JnYmBcbi8vIENvbnZlcnRzIGFuIEhTViBjb2xvciB2YWx1ZSB0byBSR0IuXG4vLyAqQXNzdW1lczoqIGggaXMgY29udGFpbmVkIGluIFswLCAxXSBvciBbMCwgMzYwXSBhbmQgcyBhbmQgdiBhcmUgY29udGFpbmVkIGluIFswLCAxXSBvciBbMCwgMTAwXVxuLy8gKlJldHVybnM6KiB7IHIsIGcsIGIgfSBpbiB0aGUgc2V0IFswLCAyNTVdXG52YXIgaHN2MnJnYiA9IGZ1bmN0aW9uIGhzdjJyZ2IoaCwgcywgdikge1xuICBoID0gYm91bmQwMShoLCAzNjApICogNjtcbiAgcyA9IGJvdW5kMDEocywgMTAwKTtcbiAgdiA9IGJvdW5kMDEodiwgMTAwKTtcblxuICB2YXIgaSA9IE1hdGguZmxvb3IoaCk7XG4gIHZhciBmID0gaCAtIGk7XG4gIHZhciBwID0gdiAqICgxIC0gcyk7XG4gIHZhciBxID0gdiAqICgxIC0gZiAqIHMpO1xuICB2YXIgdCA9IHYgKiAoMSAtICgxIC0gZikgKiBzKTtcbiAgdmFyIG1vZCA9IGkgJSA2O1xuICB2YXIgciA9IFt2LCBxLCBwLCBwLCB0LCB2XVttb2RdO1xuICB2YXIgZyA9IFt0LCB2LCB2LCBxLCBwLCBwXVttb2RdO1xuICB2YXIgYiA9IFtwLCBwLCB0LCB2LCB2LCBxXVttb2RdO1xuXG4gIHJldHVybiB7XG4gICAgcjogTWF0aC5yb3VuZChyICogMjU1KSxcbiAgICBnOiBNYXRoLnJvdW5kKGcgKiAyNTUpLFxuICAgIGI6IE1hdGgucm91bmQoYiAqIDI1NSlcbiAgfTtcbn07XG5cbnZhciBDb2xvciA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQ29sb3Iob3B0aW9ucykge1xuICAgIGNvbG9yX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbG9yKTtcblxuICAgIHRoaXMuX2h1ZSA9IDA7XG4gICAgdGhpcy5fc2F0dXJhdGlvbiA9IDEwMDtcbiAgICB0aGlzLl92YWx1ZSA9IDEwMDtcbiAgICB0aGlzLl9hbHBoYSA9IDEwMDtcblxuICAgIHRoaXMuZW5hYmxlQWxwaGEgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm1hdCA9ICdoZXgnO1xuICAgIHRoaXMudmFsdWUgPSAnJztcblxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgZm9yICh2YXIgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICAgIGlmIChvcHRpb25zLmhhc093blByb3BlcnR5KG9wdGlvbikpIHtcbiAgICAgICAgdGhpc1tvcHRpb25dID0gb3B0aW9uc1tvcHRpb25dO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZG9PbkNoYW5nZSgpO1xuICB9XG5cbiAgQ29sb3IucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIHNldChwcm9wLCB2YWx1ZSkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmICh0eXBlb2YgcHJvcCA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IGNvbG9yX3R5cGVvZihwcm9wKSkgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKHZhciBwIGluIHByb3ApIHtcbiAgICAgICAgaWYgKHByb3AuaGFzT3duUHJvcGVydHkocCkpIHtcbiAgICAgICAgICB0aGlzLnNldChwLCBwcm9wW3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpc1snXycgKyBwcm9wXSA9IHZhbHVlO1xuICAgIHRoaXMuZG9PbkNoYW5nZSgpO1xuICB9O1xuXG4gIENvbG9yLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQocHJvcCkge1xuICAgIHJldHVybiB0aGlzWydfJyArIHByb3BdO1xuICB9O1xuXG4gIENvbG9yLnByb3RvdHlwZS50b1JnYiA9IGZ1bmN0aW9uIHRvUmdiKCkge1xuICAgIHJldHVybiBoc3YycmdiKHRoaXMuX2h1ZSwgdGhpcy5fc2F0dXJhdGlvbiwgdGhpcy5fdmFsdWUpO1xuICB9O1xuXG4gIENvbG9yLnByb3RvdHlwZS5mcm9tU3RyaW5nID0gZnVuY3Rpb24gZnJvbVN0cmluZyh2YWx1ZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLl9odWUgPSAwO1xuICAgICAgdGhpcy5fc2F0dXJhdGlvbiA9IDEwMDtcbiAgICAgIHRoaXMuX3ZhbHVlID0gMTAwO1xuXG4gICAgICB0aGlzLmRvT25DaGFuZ2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZnJvbUhTViA9IGZ1bmN0aW9uIGZyb21IU1YoaCwgcywgdikge1xuICAgICAgX3RoaXMuX2h1ZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDM2MCwgaCkpO1xuICAgICAgX3RoaXMuX3NhdHVyYXRpb24gPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIHMpKTtcbiAgICAgIF90aGlzLl92YWx1ZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgdikpO1xuXG4gICAgICBfdGhpcy5kb09uQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIGlmICh2YWx1ZS5pbmRleE9mKCdoc2wnKSAhPT0gLTEpIHtcbiAgICAgIHZhciBwYXJ0cyA9IHZhbHVlLnJlcGxhY2UoL2hzbGF8aHNsfFxcKHxcXCkvZ20sICcnKS5zcGxpdCgvXFxzfCwvZykuZmlsdGVyKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgcmV0dXJuIHZhbCAhPT0gJyc7XG4gICAgICB9KS5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gMiA/IHBhcnNlRmxvYXQodmFsKSA6IHBhcnNlSW50KHZhbCwgMTApO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgdGhpcy5fYWxwaGEgPSBNYXRoLmZsb29yKHBhcnNlRmxvYXQocGFydHNbM10pICogMTAwKTtcbiAgICAgIH0gZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIHRoaXMuX2FscGhhID0gMTAwO1xuICAgICAgfVxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+PSAzKSB7XG4gICAgICAgIHZhciBfaHNsMmhzdiA9IGhzbDJoc3YocGFydHNbMF0sIHBhcnRzWzFdLCBwYXJ0c1syXSksXG4gICAgICAgICAgICBoID0gX2hzbDJoc3YuaCxcbiAgICAgICAgICAgIHMgPSBfaHNsMmhzdi5zLFxuICAgICAgICAgICAgdiA9IF9oc2wyaHN2LnY7XG5cbiAgICAgICAgZnJvbUhTVihoLCBzLCB2KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmluZGV4T2YoJ2hzdicpICE9PSAtMSkge1xuICAgICAgdmFyIF9wYXJ0cyA9IHZhbHVlLnJlcGxhY2UoL2hzdmF8aHN2fFxcKHxcXCkvZ20sICcnKS5zcGxpdCgvXFxzfCwvZykuZmlsdGVyKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgcmV0dXJuIHZhbCAhPT0gJyc7XG4gICAgICB9KS5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gMiA/IHBhcnNlRmxvYXQodmFsKSA6IHBhcnNlSW50KHZhbCwgMTApO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChfcGFydHMubGVuZ3RoID09PSA0KSB7XG4gICAgICAgIHRoaXMuX2FscGhhID0gTWF0aC5mbG9vcihwYXJzZUZsb2F0KF9wYXJ0c1szXSkgKiAxMDApO1xuICAgICAgfSBlbHNlIGlmIChfcGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIHRoaXMuX2FscGhhID0gMTAwO1xuICAgICAgfVxuICAgICAgaWYgKF9wYXJ0cy5sZW5ndGggPj0gMykge1xuICAgICAgICBmcm9tSFNWKF9wYXJ0c1swXSwgX3BhcnRzWzFdLCBfcGFydHNbMl0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUuaW5kZXhPZigncmdiJykgIT09IC0xKSB7XG4gICAgICB2YXIgX3BhcnRzMiA9IHZhbHVlLnJlcGxhY2UoL3JnYmF8cmdifFxcKHxcXCkvZ20sICcnKS5zcGxpdCgvXFxzfCwvZykuZmlsdGVyKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgcmV0dXJuIHZhbCAhPT0gJyc7XG4gICAgICB9KS5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gMiA/IHBhcnNlRmxvYXQodmFsKSA6IHBhcnNlSW50KHZhbCwgMTApO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChfcGFydHMyLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICB0aGlzLl9hbHBoYSA9IE1hdGguZmxvb3IocGFyc2VGbG9hdChfcGFydHMyWzNdKSAqIDEwMCk7XG4gICAgICB9IGVsc2UgaWYgKF9wYXJ0czIubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIHRoaXMuX2FscGhhID0gMTAwO1xuICAgICAgfVxuICAgICAgaWYgKF9wYXJ0czIubGVuZ3RoID49IDMpIHtcbiAgICAgICAgdmFyIF9yZ2IyaHN2ID0gcmdiMmhzdihfcGFydHMyWzBdLCBfcGFydHMyWzFdLCBfcGFydHMyWzJdKSxcbiAgICAgICAgICAgIF9oID0gX3JnYjJoc3YuaCxcbiAgICAgICAgICAgIF9zID0gX3JnYjJoc3YucyxcbiAgICAgICAgICAgIF92ID0gX3JnYjJoc3YudjtcblxuICAgICAgICBmcm9tSFNWKF9oLCBfcywgX3YpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUuaW5kZXhPZignIycpICE9PSAtMSkge1xuICAgICAgdmFyIGhleCA9IHZhbHVlLnJlcGxhY2UoJyMnLCAnJykudHJpbSgpO1xuICAgICAgaWYgKCEvXig/OlswLTlhLWZBLUZdezN9KXsxLDJ9fFswLTlhLWZBLUZdezh9JC8udGVzdChoZXgpKSByZXR1cm47XG4gICAgICB2YXIgciA9IHZvaWQgMCxcbiAgICAgICAgICBnID0gdm9pZCAwLFxuICAgICAgICAgIGIgPSB2b2lkIDA7XG5cbiAgICAgIGlmIChoZXgubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIHIgPSBwYXJzZUhleENoYW5uZWwoaGV4WzBdICsgaGV4WzBdKTtcbiAgICAgICAgZyA9IHBhcnNlSGV4Q2hhbm5lbChoZXhbMV0gKyBoZXhbMV0pO1xuICAgICAgICBiID0gcGFyc2VIZXhDaGFubmVsKGhleFsyXSArIGhleFsyXSk7XG4gICAgICB9IGVsc2UgaWYgKGhleC5sZW5ndGggPT09IDYgfHwgaGV4Lmxlbmd0aCA9PT0gOCkge1xuICAgICAgICByID0gcGFyc2VIZXhDaGFubmVsKGhleC5zdWJzdHJpbmcoMCwgMikpO1xuICAgICAgICBnID0gcGFyc2VIZXhDaGFubmVsKGhleC5zdWJzdHJpbmcoMiwgNCkpO1xuICAgICAgICBiID0gcGFyc2VIZXhDaGFubmVsKGhleC5zdWJzdHJpbmcoNCwgNikpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGV4Lmxlbmd0aCA9PT0gOCkge1xuICAgICAgICB0aGlzLl9hbHBoYSA9IE1hdGguZmxvb3IocGFyc2VIZXhDaGFubmVsKGhleC5zdWJzdHJpbmcoNikpIC8gMjU1ICogMTAwKTtcbiAgICAgIH0gZWxzZSBpZiAoaGV4Lmxlbmd0aCA9PT0gMyB8fCBoZXgubGVuZ3RoID09PSA2KSB7XG4gICAgICAgIHRoaXMuX2FscGhhID0gMTAwO1xuICAgICAgfVxuXG4gICAgICB2YXIgX3JnYjJoc3YyID0gcmdiMmhzdihyLCBnLCBiKSxcbiAgICAgICAgICBfaDIgPSBfcmdiMmhzdjIuaCxcbiAgICAgICAgICBfczIgPSBfcmdiMmhzdjIucyxcbiAgICAgICAgICBfdjIgPSBfcmdiMmhzdjIudjtcblxuICAgICAgZnJvbUhTVihfaDIsIF9zMiwgX3YyKTtcbiAgICB9XG4gIH07XG5cbiAgQ29sb3IucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlKGNvbG9yKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKGNvbG9yLl9odWUgLSB0aGlzLl9odWUpIDwgMiAmJiBNYXRoLmFicyhjb2xvci5fc2F0dXJhdGlvbiAtIHRoaXMuX3NhdHVyYXRpb24pIDwgMSAmJiBNYXRoLmFicyhjb2xvci5fdmFsdWUgLSB0aGlzLl92YWx1ZSkgPCAxICYmIE1hdGguYWJzKGNvbG9yLl9hbHBoYSAtIHRoaXMuX2FscGhhKSA8IDE7XG4gIH07XG5cbiAgQ29sb3IucHJvdG90eXBlLmRvT25DaGFuZ2UgPSBmdW5jdGlvbiBkb09uQ2hhbmdlKCkge1xuICAgIHZhciBfaHVlID0gdGhpcy5faHVlLFxuICAgICAgICBfc2F0dXJhdGlvbiA9IHRoaXMuX3NhdHVyYXRpb24sXG4gICAgICAgIF92YWx1ZSA9IHRoaXMuX3ZhbHVlLFxuICAgICAgICBfYWxwaGEgPSB0aGlzLl9hbHBoYSxcbiAgICAgICAgZm9ybWF0ID0gdGhpcy5mb3JtYXQ7XG5cblxuICAgIGlmICh0aGlzLmVuYWJsZUFscGhhKSB7XG4gICAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgICBjYXNlICdoc2wnOlxuICAgICAgICAgIHZhciBoc2wgPSBoc3YyaHNsKF9odWUsIF9zYXR1cmF0aW9uIC8gMTAwLCBfdmFsdWUgLyAxMDApO1xuICAgICAgICAgIHRoaXMudmFsdWUgPSAnaHNsYSgnICsgX2h1ZSArICcsICcgKyBNYXRoLnJvdW5kKGhzbFsxXSAqIDEwMCkgKyAnJSwgJyArIE1hdGgucm91bmQoaHNsWzJdICogMTAwKSArICclLCAnICsgX2FscGhhIC8gMTAwICsgJyknO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdoc3YnOlxuICAgICAgICAgIHRoaXMudmFsdWUgPSAnaHN2YSgnICsgX2h1ZSArICcsICcgKyBNYXRoLnJvdW5kKF9zYXR1cmF0aW9uKSArICclLCAnICsgTWF0aC5yb3VuZChfdmFsdWUpICsgJyUsICcgKyBfYWxwaGEgLyAxMDAgKyAnKSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdmFyIF9oc3YycmdiID0gaHN2MnJnYihfaHVlLCBfc2F0dXJhdGlvbiwgX3ZhbHVlKSxcbiAgICAgICAgICAgICAgciA9IF9oc3YycmdiLnIsXG4gICAgICAgICAgICAgIGcgPSBfaHN2MnJnYi5nLFxuICAgICAgICAgICAgICBiID0gX2hzdjJyZ2IuYjtcblxuICAgICAgICAgIHRoaXMudmFsdWUgPSAncmdiYSgnICsgciArICcsICcgKyBnICsgJywgJyArIGIgKyAnLCAnICsgX2FscGhhIC8gMTAwICsgJyknO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgICBjYXNlICdoc2wnOlxuICAgICAgICAgIHZhciBfaHNsID0gaHN2MmhzbChfaHVlLCBfc2F0dXJhdGlvbiAvIDEwMCwgX3ZhbHVlIC8gMTAwKTtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gJ2hzbCgnICsgX2h1ZSArICcsICcgKyBNYXRoLnJvdW5kKF9oc2xbMV0gKiAxMDApICsgJyUsICcgKyBNYXRoLnJvdW5kKF9oc2xbMl0gKiAxMDApICsgJyUpJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaHN2JzpcbiAgICAgICAgICB0aGlzLnZhbHVlID0gJ2hzdignICsgX2h1ZSArICcsICcgKyBNYXRoLnJvdW5kKF9zYXR1cmF0aW9uKSArICclLCAnICsgTWF0aC5yb3VuZChfdmFsdWUpICsgJyUpJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmdiJzpcbiAgICAgICAgICB2YXIgX2hzdjJyZ2IyID0gaHN2MnJnYihfaHVlLCBfc2F0dXJhdGlvbiwgX3ZhbHVlKSxcbiAgICAgICAgICAgICAgX3IgPSBfaHN2MnJnYjIucixcbiAgICAgICAgICAgICAgX2cgPSBfaHN2MnJnYjIuZyxcbiAgICAgICAgICAgICAgX2IgPSBfaHN2MnJnYjIuYjtcblxuICAgICAgICAgIHRoaXMudmFsdWUgPSAncmdiKCcgKyBfciArICcsICcgKyBfZyArICcsICcgKyBfYiArICcpJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdG9IZXgoaHN2MnJnYihfaHVlLCBfc2F0dXJhdGlvbiwgX3ZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBDb2xvcjtcbn0oKTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2NvbG9yID0gKENvbG9yKTtcbjtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL3BpY2tlci1kcm9wZG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDY2MDE2MjUmXG52YXIgcGlja2VyX2Ryb3Bkb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY2MDE2MjVfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwidHJhbnNpdGlvblwiLFxuICAgIHsgYXR0cnM6IHsgbmFtZTogXCJlbC16b29tLWluLXRvcFwiIH0sIG9uOiB7IFwiYWZ0ZXItbGVhdmVcIjogX3ZtLmRvRGVzdHJveSB9IH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dQb3BwZXIsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd1BvcHBlclwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jb2xvci1kcm9wZG93blwiXG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLWRyb3Bkb3duX19tYWluLXdyYXBwZXJcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImh1ZS1zbGlkZXJcIiwge1xuICAgICAgICAgICAgICAgIHJlZjogXCJodWVcIixcbiAgICAgICAgICAgICAgICBzdGF0aWNTdHlsZTogeyBmbG9hdDogXCJyaWdodFwiIH0sXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgY29sb3I6IF92bS5jb2xvciwgdmVydGljYWw6IFwiXCIgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX2MoXCJzdi1wYW5lbFwiLCB7IHJlZjogXCJzbFwiLCBhdHRyczogeyBjb2xvcjogX3ZtLmNvbG9yIH0gfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uc2hvd0FscGhhXG4gICAgICAgICAgICA/IF9jKFwiYWxwaGEtc2xpZGVyXCIsIHsgcmVmOiBcImFscGhhXCIsIGF0dHJzOiB7IGNvbG9yOiBfdm0uY29sb3IgfSB9KVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0ucHJlZGVmaW5lXG4gICAgICAgICAgICA/IF9jKFwicHJlZGVmaW5lXCIsIHtcbiAgICAgICAgICAgICAgICBhdHRyczogeyBjb2xvcjogX3ZtLmNvbG9yLCBjb2xvcnM6IF92bS5wcmVkZWZpbmUgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLWRyb3Bkb3duX19idG5zXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1jb2xvci1kcm9wZG93bl9fdmFsdWVcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiZWwtaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBcInZhbGlkYXRlLWV2ZW50XCI6IGZhbHNlLCBzaXplOiBcIm1pbmlcIiB9LFxuICAgICAgICAgICAgICAgICAgICBvbjogeyBibHVyOiBfdm0uaGFuZGxlQ29uZmlybSB9LFxuICAgICAgICAgICAgICAgICAgICBuYXRpdmVPbjoge1xuICAgICAgICAgICAgICAgICAgICAgIGtleXVwOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXlDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlQ29uZmlybSgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uY3VzdG9tSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmN1c3RvbUlucHV0ID0gJCR2XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImN1c3RvbUlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJlbC1idXR0b25cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jb2xvci1kcm9wZG93bl9fbGluay1idG5cIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNpemU6IFwibWluaVwiLCB0eXBlOiBcInRleHRcIiB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS4kZW1pdChcImNsZWFyXCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLnQoXCJlbC5jb2xvcnBpY2tlci5jbGVhclwiKSkgK1xuICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiZWwtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY29sb3ItZHJvcGRvd25fX2J0blwiLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgcGxhaW46IFwiXCIsIHNpemU6IFwibWluaVwiIH0sXG4gICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmNvbmZpcm1WYWx1ZSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS50KFwiZWwuY29sb3JwaWNrZXIuY29uZmlybVwiKSkgK1xuICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApXG4gICAgXVxuICApXG59XG52YXIgcGlja2VyX2Ryb3Bkb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY2MDE2MjVfc3RhdGljUmVuZGVyRm5zID0gW11cbnBpY2tlcl9kcm9wZG93bnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA2NjAxNjI1X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL3BpY2tlci1kcm9wZG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDY2MDE2MjUmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL3N2LXBhbmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kODU4MzU5NiZcbnZhciBzdl9wYW5lbHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2Q4NTgzNTk2X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLXN2cGFuZWxcIixcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogX3ZtLmJhY2tncm91bmRcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtY29sb3Itc3ZwYW5lbF9fd2hpdGVcIiB9KSxcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtY29sb3Itc3ZwYW5lbF9fYmxhY2tcIiB9KSxcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY29sb3Itc3ZwYW5lbF9fY3Vyc29yXCIsXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHRvcDogX3ZtLmN1cnNvclRvcCArIFwicHhcIixcbiAgICAgICAgICAgIGxlZnQ6IF92bS5jdXJzb3JMZWZ0ICsgXCJweFwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbX2MoXCJkaXZcIildXG4gICAgICApXG4gICAgXVxuICApXG59XG52YXIgc3ZfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF9kODU4MzU5Nl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuc3ZfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF9kODU4MzU5Nl9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9zdi1wYW5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDg1ODM1OTYmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9kcmFnZ2FibGUuanNcblxudmFyIGlzRHJhZ2dpbmcgPSBmYWxzZTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZHJhZ2dhYmxlID0gKGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7XG4gIGlmIChleHRlcm5hbF92dWVfZGVmYXVsdC5hLnByb3RvdHlwZS4kaXNTZXJ2ZXIpIHJldHVybjtcbiAgdmFyIG1vdmVGbiA9IGZ1bmN0aW9uIG1vdmVGbihldmVudCkge1xuICAgIGlmIChvcHRpb25zLmRyYWcpIHtcbiAgICAgIG9wdGlvbnMuZHJhZyhldmVudCk7XG4gICAgfVxuICB9O1xuICB2YXIgdXBGbiA9IGZ1bmN0aW9uIHVwRm4oZXZlbnQpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3ZlRm4pO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cEZuKTtcbiAgICBkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ID0gbnVsbDtcbiAgICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IG51bGw7XG5cbiAgICBpc0RyYWdnaW5nID0gZmFsc2U7XG5cbiAgICBpZiAob3B0aW9ucy5lbmQpIHtcbiAgICAgIG9wdGlvbnMuZW5kKGV2ZW50KTtcbiAgICB9XG4gIH07XG4gIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKGlzRHJhZ2dpbmcpIHJldHVybjtcbiAgICBkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgZG9jdW1lbnQub25kcmFnc3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdmVGbik7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwRm4pO1xuICAgIGlzRHJhZ2dpbmcgPSB0cnVlO1xuXG4gICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgIG9wdGlvbnMuc3RhcnQoZXZlbnQpO1xuICAgIH1cbiAgfSk7XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9zdi1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN2X3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ2VsLXNsLXBhbmVsJyxcblxuICBwcm9wczoge1xuICAgIGNvbG9yOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH1cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGNvbG9yVmFsdWU6IGZ1bmN0aW9uIGNvbG9yVmFsdWUoKSB7XG4gICAgICB2YXIgaHVlID0gdGhpcy5jb2xvci5nZXQoJ2h1ZScpO1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy5jb2xvci5nZXQoJ3ZhbHVlJyk7XG4gICAgICByZXR1cm4geyBodWU6IGh1ZSwgdmFsdWU6IHZhbHVlIH07XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgY29sb3JWYWx1ZTogZnVuY3Rpb24gY29sb3JWYWx1ZSgpIHtcbiAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICAgIHZhciBzYXR1cmF0aW9uID0gdGhpcy5jb2xvci5nZXQoJ3NhdHVyYXRpb24nKTtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuY29sb3IuZ2V0KCd2YWx1ZScpO1xuXG4gICAgICB2YXIgZWwgPSB0aGlzLiRlbDtcbiAgICAgIHZhciB3aWR0aCA9IGVsLmNsaWVudFdpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IGVsLmNsaWVudEhlaWdodDtcblxuXG4gICAgICB0aGlzLmN1cnNvckxlZnQgPSBzYXR1cmF0aW9uICogd2lkdGggLyAxMDA7XG4gICAgICB0aGlzLmN1cnNvclRvcCA9ICgxMDAgLSB2YWx1ZSkgKiBoZWlnaHQgLyAxMDA7XG5cbiAgICAgIHRoaXMuYmFja2dyb3VuZCA9ICdoc2woJyArIHRoaXMuY29sb3IuZ2V0KCdodWUnKSArICcsIDEwMCUsIDUwJSknO1xuICAgIH0sXG4gICAgaGFuZGxlRHJhZzogZnVuY3Rpb24gaGFuZGxlRHJhZyhldmVudCkge1xuICAgICAgdmFyIGVsID0gdGhpcy4kZWw7XG4gICAgICB2YXIgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICB2YXIgbGVmdCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgICB2YXIgdG9wID0gZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wO1xuICAgICAgbGVmdCA9IE1hdGgubWF4KDAsIGxlZnQpO1xuICAgICAgbGVmdCA9IE1hdGgubWluKGxlZnQsIHJlY3Qud2lkdGgpO1xuXG4gICAgICB0b3AgPSBNYXRoLm1heCgwLCB0b3ApO1xuICAgICAgdG9wID0gTWF0aC5taW4odG9wLCByZWN0LmhlaWdodCk7XG5cbiAgICAgIHRoaXMuY3Vyc29yTGVmdCA9IGxlZnQ7XG4gICAgICB0aGlzLmN1cnNvclRvcCA9IHRvcDtcbiAgICAgIHRoaXMuY29sb3Iuc2V0KHtcbiAgICAgICAgc2F0dXJhdGlvbjogbGVmdCAvIHJlY3Qud2lkdGggKiAxMDAsXG4gICAgICAgIHZhbHVlOiAxMDAgLSB0b3AgLyByZWN0LmhlaWdodCAqIDEwMFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGRyYWdnYWJsZSh0aGlzLiRlbCwge1xuICAgICAgZHJhZzogZnVuY3Rpb24gZHJhZyhldmVudCkge1xuICAgICAgICBfdGhpcy5oYW5kbGVEcmFnKGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICBlbmQ6IGZ1bmN0aW9uIGVuZChldmVudCkge1xuICAgICAgICBfdGhpcy5oYW5kbGVEcmFnKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlKCk7XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1cnNvclRvcDogMCxcbiAgICAgIGN1cnNvckxlZnQ6IDAsXG4gICAgICBiYWNrZ3JvdW5kOiAnaHNsKDAsIDEwMCUsIDUwJSknXG4gICAgfTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9zdi1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29tcG9uZW50c19zdl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChzdl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb2xvci1waWNrZXIvc3JjL2NvbXBvbmVudHMvc3YtcGFuZWwudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgc3ZfcGFuZWxfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBjb21wb25lbnRzX3N2X3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBzdl9wYW5lbHZ1ZV90eXBlX3RlbXBsYXRlX2lkX2Q4NTgzNTk2X3JlbmRlcixcbiAgc3ZfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF9kODU4MzU5Nl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHN2X3BhbmVsX2FwaTsgfVxuc3ZfcGFuZWxfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9jb2xvci1waWNrZXIvc3JjL2NvbXBvbmVudHMvc3YtcGFuZWwudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN2X3BhbmVsID0gKHN2X3BhbmVsX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL2h1ZS1zbGlkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVjZGM0M2IxJlxudmFyIGh1ZV9zbGlkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF81Y2RjNDNiMV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1jb2xvci1odWUtc2xpZGVyXCIsXG4gICAgICBjbGFzczogeyBcImlzLXZlcnRpY2FsXCI6IF92bS52ZXJ0aWNhbCB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgIHJlZjogXCJiYXJcIixcbiAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtY29sb3ItaHVlLXNsaWRlcl9fYmFyXCIsXG4gICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGFuZGxlQ2xpY2sgfVxuICAgICAgfSksXG4gICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgIHJlZjogXCJ0aHVtYlwiLFxuICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1jb2xvci1odWUtc2xpZGVyX190aHVtYlwiLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGxlZnQ6IF92bS50aHVtYkxlZnQgKyBcInB4XCIsXG4gICAgICAgICAgdG9wOiBfdm0udGh1bWJUb3AgKyBcInB4XCJcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICBdXG4gIClcbn1cbnZhciBodWVfc2xpZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfNWNkYzQzYjFfc3RhdGljUmVuZGVyRm5zID0gW11cbmh1ZV9zbGlkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF81Y2RjNDNiMV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9odWUtc2xpZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01Y2RjNDNiMSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL2h1ZS1zbGlkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGh1ZV9zbGlkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnZWwtY29sb3ItaHVlLXNsaWRlcicsXG5cbiAgcHJvcHM6IHtcbiAgICBjb2xvcjoge1xuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9LFxuXG4gICAgdmVydGljYWw6IEJvb2xlYW5cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0aHVtYkxlZnQ6IDAsXG4gICAgICB0aHVtYlRvcDogMFxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGh1ZVZhbHVlOiBmdW5jdGlvbiBodWVWYWx1ZSgpIHtcbiAgICAgIHZhciBodWUgPSB0aGlzLmNvbG9yLmdldCgnaHVlJyk7XG4gICAgICByZXR1cm4gaHVlO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGh1ZVZhbHVlOiBmdW5jdGlvbiBodWVWYWx1ZSgpIHtcbiAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVDbGljazogZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIHZhciB0aHVtYiA9IHRoaXMuJHJlZnMudGh1bWI7XG4gICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgICBpZiAodGFyZ2V0ICE9PSB0aHVtYikge1xuICAgICAgICB0aGlzLmhhbmRsZURyYWcoZXZlbnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlRHJhZzogZnVuY3Rpb24gaGFuZGxlRHJhZyhldmVudCkge1xuICAgICAgdmFyIHJlY3QgPSB0aGlzLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHZhciB0aHVtYiA9IHRoaXMuJHJlZnMudGh1bWI7XG5cbiAgICAgIHZhciBodWUgPSB2b2lkIDA7XG5cbiAgICAgIGlmICghdGhpcy52ZXJ0aWNhbCkge1xuICAgICAgICB2YXIgbGVmdCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgICAgIGxlZnQgPSBNYXRoLm1pbihsZWZ0LCByZWN0LndpZHRoIC0gdGh1bWIub2Zmc2V0V2lkdGggLyAyKTtcbiAgICAgICAgbGVmdCA9IE1hdGgubWF4KHRodW1iLm9mZnNldFdpZHRoIC8gMiwgbGVmdCk7XG5cbiAgICAgICAgaHVlID0gTWF0aC5yb3VuZCgobGVmdCAtIHRodW1iLm9mZnNldFdpZHRoIC8gMikgLyAocmVjdC53aWR0aCAtIHRodW1iLm9mZnNldFdpZHRoKSAqIDM2MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdG9wID0gZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wO1xuICAgICAgICB0b3AgPSBNYXRoLm1pbih0b3AsIHJlY3QuaGVpZ2h0IC0gdGh1bWIub2Zmc2V0SGVpZ2h0IC8gMik7XG4gICAgICAgIHRvcCA9IE1hdGgubWF4KHRodW1iLm9mZnNldEhlaWdodCAvIDIsIHRvcCk7XG5cbiAgICAgICAgaHVlID0gTWF0aC5yb3VuZCgodG9wIC0gdGh1bWIub2Zmc2V0SGVpZ2h0IC8gMikgLyAocmVjdC5oZWlnaHQgLSB0aHVtYi5vZmZzZXRIZWlnaHQpICogMzYwKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb2xvci5zZXQoJ2h1ZScsIGh1ZSk7XG4gICAgfSxcbiAgICBnZXRUaHVtYkxlZnQ6IGZ1bmN0aW9uIGdldFRodW1iTGVmdCgpIHtcbiAgICAgIGlmICh0aGlzLnZlcnRpY2FsKSByZXR1cm4gMDtcbiAgICAgIHZhciBlbCA9IHRoaXMuJGVsO1xuICAgICAgdmFyIGh1ZSA9IHRoaXMuY29sb3IuZ2V0KCdodWUnKTtcblxuICAgICAgaWYgKCFlbCkgcmV0dXJuIDA7XG4gICAgICB2YXIgdGh1bWIgPSB0aGlzLiRyZWZzLnRodW1iO1xuICAgICAgcmV0dXJuIE1hdGgucm91bmQoaHVlICogKGVsLm9mZnNldFdpZHRoIC0gdGh1bWIub2Zmc2V0V2lkdGggLyAyKSAvIDM2MCk7XG4gICAgfSxcbiAgICBnZXRUaHVtYlRvcDogZnVuY3Rpb24gZ2V0VGh1bWJUb3AoKSB7XG4gICAgICBpZiAoIXRoaXMudmVydGljYWwpIHJldHVybiAwO1xuICAgICAgdmFyIGVsID0gdGhpcy4kZWw7XG4gICAgICB2YXIgaHVlID0gdGhpcy5jb2xvci5nZXQoJ2h1ZScpO1xuXG4gICAgICBpZiAoIWVsKSByZXR1cm4gMDtcbiAgICAgIHZhciB0aHVtYiA9IHRoaXMuJHJlZnMudGh1bWI7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChodWUgKiAoZWwub2Zmc2V0SGVpZ2h0IC0gdGh1bWIub2Zmc2V0SGVpZ2h0IC8gMikgLyAzNjApO1xuICAgIH0sXG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgICB0aGlzLnRodW1iTGVmdCA9IHRoaXMuZ2V0VGh1bWJMZWZ0KCk7XG4gICAgICB0aGlzLnRodW1iVG9wID0gdGhpcy5nZXRUaHVtYlRvcCgpO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgXyRyZWZzID0gdGhpcy4kcmVmcyxcbiAgICAgICAgYmFyID0gXyRyZWZzLmJhcixcbiAgICAgICAgdGh1bWIgPSBfJHJlZnMudGh1bWI7XG5cblxuICAgIHZhciBkcmFnQ29uZmlnID0ge1xuICAgICAgZHJhZzogZnVuY3Rpb24gZHJhZyhldmVudCkge1xuICAgICAgICBfdGhpcy5oYW5kbGVEcmFnKGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICBlbmQ6IGZ1bmN0aW9uIGVuZChldmVudCkge1xuICAgICAgICBfdGhpcy5oYW5kbGVEcmFnKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZHJhZ2dhYmxlKGJhciwgZHJhZ0NvbmZpZyk7XG4gICAgZHJhZ2dhYmxlKHRodW1iLCBkcmFnQ29uZmlnKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL2h1ZS1zbGlkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbXBvbmVudHNfaHVlX3NsaWRlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChodWVfc2xpZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9odWUtc2xpZGVyLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGh1ZV9zbGlkZXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBjb21wb25lbnRzX2h1ZV9zbGlkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGh1ZV9zbGlkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF81Y2RjNDNiMV9yZW5kZXIsXG4gIGh1ZV9zbGlkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF81Y2RjNDNiMV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGh1ZV9zbGlkZXJfYXBpOyB9XG5odWVfc2xpZGVyX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL2h1ZS1zbGlkZXIudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGh1ZV9zbGlkZXIgPSAoaHVlX3NsaWRlcl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9hbHBoYS1zbGlkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2OGM2NmNiJlxudmFyIGFscGhhX3NsaWRlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA2OGM2NmNiX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLWFscGhhLXNsaWRlclwiLFxuICAgICAgY2xhc3M6IHsgXCJpcy12ZXJ0aWNhbFwiOiBfdm0udmVydGljYWwgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXCJkaXZcIiwge1xuICAgICAgICByZWY6IFwiYmFyXCIsXG4gICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLWFscGhhLXNsaWRlcl9fYmFyXCIsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgYmFja2dyb3VuZDogX3ZtLmJhY2tncm91bmRcbiAgICAgICAgfSxcbiAgICAgICAgb246IHsgY2xpY2s6IF92bS5oYW5kbGVDbGljayB9XG4gICAgICB9KSxcbiAgICAgIF9jKFwiZGl2XCIsIHtcbiAgICAgICAgcmVmOiBcInRodW1iXCIsXG4gICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLWFscGhhLXNsaWRlcl9fdGh1bWJcIixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBsZWZ0OiBfdm0udGh1bWJMZWZ0ICsgXCJweFwiLFxuICAgICAgICAgIHRvcDogX3ZtLnRodW1iVG9wICsgXCJweFwiXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgXVxuICApXG59XG52YXIgYWxwaGFfc2xpZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY4YzY2Y2Jfc3RhdGljUmVuZGVyRm5zID0gW11cbmFscGhhX3NsaWRlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA2OGM2NmNiX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL2FscGhhLXNsaWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDY4YzY2Y2ImXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9hbHBoYS1zbGlkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGFscGhhX3NsaWRlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdlbC1jb2xvci1hbHBoYS1zbGlkZXInLFxuXG4gIHByb3BzOiB7XG4gICAgY29sb3I6IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICB2ZXJ0aWNhbDogQm9vbGVhblxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgJ2NvbG9yLl9hbHBoYSc6IGZ1bmN0aW9uIGNvbG9yX2FscGhhKCkge1xuICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9LFxuICAgICdjb2xvci52YWx1ZSc6IGZ1bmN0aW9uIGNvbG9yVmFsdWUoKSB7XG4gICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICB2YXIgdGh1bWIgPSB0aGlzLiRyZWZzLnRodW1iO1xuICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblxuICAgICAgaWYgKHRhcmdldCAhPT0gdGh1bWIpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVEcmFnKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZURyYWc6IGZ1bmN0aW9uIGhhbmRsZURyYWcoZXZlbnQpIHtcbiAgICAgIHZhciByZWN0ID0gdGhpcy4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB2YXIgdGh1bWIgPSB0aGlzLiRyZWZzLnRodW1iO1xuXG5cbiAgICAgIGlmICghdGhpcy52ZXJ0aWNhbCkge1xuICAgICAgICB2YXIgbGVmdCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgICAgIGxlZnQgPSBNYXRoLm1heCh0aHVtYi5vZmZzZXRXaWR0aCAvIDIsIGxlZnQpO1xuICAgICAgICBsZWZ0ID0gTWF0aC5taW4obGVmdCwgcmVjdC53aWR0aCAtIHRodW1iLm9mZnNldFdpZHRoIC8gMik7XG5cbiAgICAgICAgdGhpcy5jb2xvci5zZXQoJ2FscGhhJywgTWF0aC5yb3VuZCgobGVmdCAtIHRodW1iLm9mZnNldFdpZHRoIC8gMikgLyAocmVjdC53aWR0aCAtIHRodW1iLm9mZnNldFdpZHRoKSAqIDEwMCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHRvcCA9IGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcDtcbiAgICAgICAgdG9wID0gTWF0aC5tYXgodGh1bWIub2Zmc2V0SGVpZ2h0IC8gMiwgdG9wKTtcbiAgICAgICAgdG9wID0gTWF0aC5taW4odG9wLCByZWN0LmhlaWdodCAtIHRodW1iLm9mZnNldEhlaWdodCAvIDIpO1xuXG4gICAgICAgIHRoaXMuY29sb3Iuc2V0KCdhbHBoYScsIE1hdGgucm91bmQoKHRvcCAtIHRodW1iLm9mZnNldEhlaWdodCAvIDIpIC8gKHJlY3QuaGVpZ2h0IC0gdGh1bWIub2Zmc2V0SGVpZ2h0KSAqIDEwMCkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0VGh1bWJMZWZ0OiBmdW5jdGlvbiBnZXRUaHVtYkxlZnQoKSB7XG4gICAgICBpZiAodGhpcy52ZXJ0aWNhbCkgcmV0dXJuIDA7XG4gICAgICB2YXIgZWwgPSB0aGlzLiRlbDtcbiAgICAgIHZhciBhbHBoYSA9IHRoaXMuY29sb3IuX2FscGhhO1xuXG4gICAgICBpZiAoIWVsKSByZXR1cm4gMDtcbiAgICAgIHZhciB0aHVtYiA9IHRoaXMuJHJlZnMudGh1bWI7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChhbHBoYSAqIChlbC5vZmZzZXRXaWR0aCAtIHRodW1iLm9mZnNldFdpZHRoIC8gMikgLyAxMDApO1xuICAgIH0sXG4gICAgZ2V0VGh1bWJUb3A6IGZ1bmN0aW9uIGdldFRodW1iVG9wKCkge1xuICAgICAgaWYgKCF0aGlzLnZlcnRpY2FsKSByZXR1cm4gMDtcbiAgICAgIHZhciBlbCA9IHRoaXMuJGVsO1xuICAgICAgdmFyIGFscGhhID0gdGhpcy5jb2xvci5fYWxwaGE7XG5cbiAgICAgIGlmICghZWwpIHJldHVybiAwO1xuICAgICAgdmFyIHRodW1iID0gdGhpcy4kcmVmcy50aHVtYjtcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKGFscGhhICogKGVsLm9mZnNldEhlaWdodCAtIHRodW1iLm9mZnNldEhlaWdodCAvIDIpIC8gMTAwKTtcbiAgICB9LFxuICAgIGdldEJhY2tncm91bmQ6IGZ1bmN0aW9uIGdldEJhY2tncm91bmQoKSB7XG4gICAgICBpZiAodGhpcy5jb2xvciAmJiB0aGlzLmNvbG9yLnZhbHVlKSB7XG4gICAgICAgIHZhciBfY29sb3IkdG9SZ2IgPSB0aGlzLmNvbG9yLnRvUmdiKCksXG4gICAgICAgICAgICByID0gX2NvbG9yJHRvUmdiLnIsXG4gICAgICAgICAgICBnID0gX2NvbG9yJHRvUmdiLmcsXG4gICAgICAgICAgICBiID0gX2NvbG9yJHRvUmdiLmI7XG5cbiAgICAgICAgcmV0dXJuICdsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoJyArIHIgKyAnLCAnICsgZyArICcsICcgKyBiICsgJywgMCkgMCUsIHJnYmEoJyArIHIgKyAnLCAnICsgZyArICcsICcgKyBiICsgJywgMSkgMTAwJSknO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICAgIHRoaXMudGh1bWJMZWZ0ID0gdGhpcy5nZXRUaHVtYkxlZnQoKTtcbiAgICAgIHRoaXMudGh1bWJUb3AgPSB0aGlzLmdldFRodW1iVG9wKCk7XG4gICAgICB0aGlzLmJhY2tncm91bmQgPSB0aGlzLmdldEJhY2tncm91bmQoKTtcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGh1bWJMZWZ0OiAwLFxuICAgICAgdGh1bWJUb3A6IDAsXG4gICAgICBiYWNrZ3JvdW5kOiBudWxsXG4gICAgfTtcbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF8kcmVmcyA9IHRoaXMuJHJlZnMsXG4gICAgICAgIGJhciA9IF8kcmVmcy5iYXIsXG4gICAgICAgIHRodW1iID0gXyRyZWZzLnRodW1iO1xuXG5cbiAgICB2YXIgZHJhZ0NvbmZpZyA9IHtcbiAgICAgIGRyYWc6IGZ1bmN0aW9uIGRyYWcoZXZlbnQpIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlRHJhZyhldmVudCk7XG4gICAgICB9LFxuICAgICAgZW5kOiBmdW5jdGlvbiBlbmQoZXZlbnQpIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlRHJhZyhldmVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRyYWdnYWJsZShiYXIsIGRyYWdDb25maWcpO1xuICAgIGRyYWdnYWJsZSh0aHVtYiwgZHJhZ0NvbmZpZyk7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9hbHBoYS1zbGlkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbXBvbmVudHNfYWxwaGFfc2xpZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGFscGhhX3NsaWRlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb2xvci1waWNrZXIvc3JjL2NvbXBvbmVudHMvYWxwaGEtc2xpZGVyLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGFscGhhX3NsaWRlcl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIGNvbXBvbmVudHNfYWxwaGFfc2xpZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBhbHBoYV9zbGlkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNjhjNjZjYl9yZW5kZXIsXG4gIGFscGhhX3NsaWRlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA2OGM2NmNiX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgYWxwaGFfc2xpZGVyX2FwaTsgfVxuYWxwaGFfc2xpZGVyX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL2FscGhhLXNsaWRlci52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYWxwaGFfc2xpZGVyID0gKGFscGhhX3NsaWRlcl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9wcmVkZWZpbmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2ZTAzMDkzJlxudmFyIHByZWRlZmluZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA2ZTAzMDkzX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLXByZWRlZmluZVwiIH0sIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLXByZWRlZmluZV9fY29sb3JzXCIgfSxcbiAgICAgIF92bS5fbChfdm0ucmdiYUNvbG9ycywgZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBfdm0uY29sb3JzW2luZGV4XSxcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWNvbG9yLXByZWRlZmluZV9fY29sb3Itc2VsZWN0b3JcIixcbiAgICAgICAgICAgIGNsYXNzOiB7IHNlbGVjdGVkOiBpdGVtLnNlbGVjdGVkLCBcImlzLWFscGhhXCI6IGl0ZW0uX2FscGhhIDwgMTAwIH0sXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgX3ZtLmhhbmRsZVNlbGVjdChpbmRleClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW19jKFwiZGl2XCIsIHsgc3R5bGU6IHsgXCJiYWNrZ3JvdW5kLWNvbG9yXCI6IGl0ZW0udmFsdWUgfSB9KV1cbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgICAwXG4gICAgKVxuICBdKVxufVxudmFyIHByZWRlZmluZXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA2ZTAzMDkzX3N0YXRpY1JlbmRlckZucyA9IFtdXG5wcmVkZWZpbmV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNmUwMzA5M19yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9wcmVkZWZpbmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2ZTAzMDkzJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jb2xvci1waWNrZXIvc3JjL2NvbXBvbmVudHMvcHJlZGVmaW5lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHByZWRlZmluZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIHByb3BzOiB7XG4gICAgY29sb3JzOiB7IHR5cGU6IEFycmF5LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGNvbG9yOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmdiYUNvbG9yczogdGhpcy5wYXJzZUNvbG9ycyh0aGlzLmNvbG9ycywgdGhpcy5jb2xvcilcbiAgICB9O1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVTZWxlY3Q6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdChpbmRleCkge1xuICAgICAgdGhpcy5jb2xvci5mcm9tU3RyaW5nKHRoaXMuY29sb3JzW2luZGV4XSk7XG4gICAgfSxcbiAgICBwYXJzZUNvbG9yczogZnVuY3Rpb24gcGFyc2VDb2xvcnMoY29sb3JzLCBjb2xvcikge1xuICAgICAgcmV0dXJuIGNvbG9ycy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBjID0gbmV3IHNyY19jb2xvcigpO1xuICAgICAgICBjLmVuYWJsZUFscGhhID0gdHJ1ZTtcbiAgICAgICAgYy5mb3JtYXQgPSAncmdiYSc7XG4gICAgICAgIGMuZnJvbVN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGMuc2VsZWN0ZWQgPSBjLnZhbHVlID09PSBjb2xvci52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgJyRwYXJlbnQuY3VycmVudENvbG9yJzogZnVuY3Rpb24gJHBhcmVudEN1cnJlbnRDb2xvcih2YWwpIHtcbiAgICAgIHZhciBjb2xvciA9IG5ldyBzcmNfY29sb3IoKTtcbiAgICAgIGNvbG9yLmZyb21TdHJpbmcodmFsKTtcblxuICAgICAgdGhpcy5yZ2JhQ29sb3JzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGNvbG9yLmNvbXBhcmUoaXRlbSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGNvbG9yczogZnVuY3Rpb24gY29sb3JzKG5ld1ZhbCkge1xuICAgICAgdGhpcy5yZ2JhQ29sb3JzID0gdGhpcy5wYXJzZUNvbG9ycyhuZXdWYWwsIHRoaXMuY29sb3IpO1xuICAgIH0sXG4gICAgY29sb3I6IGZ1bmN0aW9uIGNvbG9yKG5ld1ZhbCkge1xuICAgICAgdGhpcy5yZ2JhQ29sb3JzID0gdGhpcy5wYXJzZUNvbG9ycyh0aGlzLmNvbG9ycywgbmV3VmFsKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb2xvci1waWNrZXIvc3JjL2NvbXBvbmVudHMvcHJlZGVmaW5lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3ByZWRlZmluZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChwcmVkZWZpbmV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL3ByZWRlZmluZS52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBwcmVkZWZpbmVfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBjb21wb25lbnRzX3ByZWRlZmluZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgcHJlZGVmaW5ldnVlX3R5cGVfdGVtcGxhdGVfaWRfMDZlMDMwOTNfcmVuZGVyLFxuICBwcmVkZWZpbmV2dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNmUwMzA5M19zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHByZWRlZmluZV9hcGk7IH1cbnByZWRlZmluZV9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9wcmVkZWZpbmUudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHByZWRlZmluZSA9IChwcmVkZWZpbmVfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL3BpY2tlci1kcm9wZG93bi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwaWNrZXJfZHJvcGRvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnZWwtY29sb3ItcGlja2VyLWRyb3Bkb3duJyxcblxuICBtaXhpbnM6IFt2dWVfcG9wcGVyX2RlZmF1bHQuYSwgbG9jYWxlX2RlZmF1bHQuYV0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIFN2UGFuZWw6IHN2X3BhbmVsLFxuICAgIEh1ZVNsaWRlcjogaHVlX3NsaWRlcixcbiAgICBBbHBoYVNsaWRlcjogYWxwaGFfc2xpZGVyLFxuICAgIEVsSW5wdXQ6IGlucHV0X2RlZmF1bHQuYSxcbiAgICBFbEJ1dHRvbjogYnV0dG9uX2RlZmF1bHQuYSxcbiAgICBQcmVkZWZpbmU6IHByZWRlZmluZVxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgY29sb3I6IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICBzaG93QWxwaGE6IEJvb2xlYW4sXG4gICAgcHJlZGVmaW5lOiBBcnJheVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1c3RvbUlucHV0OiAnJ1xuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGN1cnJlbnRDb2xvcjogZnVuY3Rpb24gY3VycmVudENvbG9yKCkge1xuICAgICAgdmFyIHBhcmVudCA9IHRoaXMuJHBhcmVudDtcbiAgICAgIHJldHVybiAhcGFyZW50LnZhbHVlICYmICFwYXJlbnQuc2hvd1BhbmVsQ29sb3IgPyAnJyA6IHBhcmVudC5jb2xvci52YWx1ZTtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGNvbmZpcm1WYWx1ZTogZnVuY3Rpb24gY29uZmlybVZhbHVlKCkge1xuICAgICAgdGhpcy4kZW1pdCgncGljaycpO1xuICAgIH0sXG4gICAgaGFuZGxlQ29uZmlybTogZnVuY3Rpb24gaGFuZGxlQ29uZmlybSgpIHtcbiAgICAgIHRoaXMuY29sb3IuZnJvbVN0cmluZyh0aGlzLmN1c3RvbUlucHV0KTtcbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLiRwYXJlbnQucG9wcGVyRWxtID0gdGhpcy5wb3BwZXJFbG0gPSB0aGlzLiRlbDtcbiAgICB0aGlzLnJlZmVyZW5jZUVsbSA9IHRoaXMuJHBhcmVudC4kZWw7XG4gIH0sXG5cblxuICB3YXRjaDoge1xuICAgIHNob3dQb3BwZXI6IGZ1bmN0aW9uIHNob3dQb3BwZXIodmFsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodmFsID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgXyRyZWZzID0gX3RoaXMuJHJlZnMsXG4gICAgICAgICAgICAgIHNsID0gXyRyZWZzLnNsLFxuICAgICAgICAgICAgICBodWUgPSBfJHJlZnMuaHVlLFxuICAgICAgICAgICAgICBhbHBoYSA9IF8kcmVmcy5hbHBoYTtcblxuICAgICAgICAgIHNsICYmIHNsLnVwZGF0ZSgpO1xuICAgICAgICAgIGh1ZSAmJiBodWUudXBkYXRlKCk7XG4gICAgICAgICAgYWxwaGEgJiYgYWxwaGEudXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cblxuICAgIGN1cnJlbnRDb2xvcjoge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2YWwpIHtcbiAgICAgICAgdGhpcy5jdXN0b21JbnB1dCA9IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb2xvci1waWNrZXIvc3JjL2NvbXBvbmVudHMvcGlja2VyLWRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb21wb25lbnRzX3BpY2tlcl9kcm9wZG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChwaWNrZXJfZHJvcGRvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9jb21wb25lbnRzL3BpY2tlci1kcm9wZG93bi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBwaWNrZXJfZHJvcGRvd25fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBjb21wb25lbnRzX3BpY2tlcl9kcm9wZG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgcGlja2VyX2Ryb3Bkb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY2MDE2MjVfcmVuZGVyLFxuICBwaWNrZXJfZHJvcGRvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNjYwMTYyNV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHBpY2tlcl9kcm9wZG93bl9hcGk7IH1cbnBpY2tlcl9kcm9wZG93bl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2NvbG9yLXBpY2tlci9zcmMvY29tcG9uZW50cy9waWNrZXItZHJvcGRvd24udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBpY2tlcl9kcm9wZG93biA9IChwaWNrZXJfZHJvcGRvd25fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29sb3JfcGlja2VyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsQ29sb3JQaWNrZXInLFxuXG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hXSxcblxuICBwcm9wczoge1xuICAgIHZhbHVlOiBTdHJpbmcsXG4gICAgc2hvd0FscGhhOiBCb29sZWFuLFxuICAgIGNvbG9yRm9ybWF0OiBTdHJpbmcsXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgc2l6ZTogU3RyaW5nLFxuICAgIHBvcHBlckNsYXNzOiBTdHJpbmcsXG4gICAgcHJlZGVmaW5lOiBBcnJheVxuICB9LFxuXG4gIGluamVjdDoge1xuICAgIGVsRm9ybToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGVsRm9ybUl0ZW06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfVxuICB9LFxuXG4gIGRpcmVjdGl2ZXM6IHsgQ2xpY2tvdXRzaWRlOiBjbGlja291dHNpZGVfZGVmYXVsdC5hIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBkaXNwbGF5ZWRDb2xvcjogZnVuY3Rpb24gZGlzcGxheWVkQ29sb3IoKSB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUgJiYgIXRoaXMuc2hvd1BhbmVsQ29sb3IpIHtcbiAgICAgICAgcmV0dXJuICd0cmFuc3BhcmVudCc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmRpc3BsYXllZFJnYih0aGlzLmNvbG9yLCB0aGlzLnNob3dBbHBoYSk7XG4gICAgfSxcbiAgICBfZWxGb3JtSXRlbVNpemU6IGZ1bmN0aW9uIF9lbEZvcm1JdGVtU2l6ZSgpIHtcbiAgICAgIHJldHVybiAodGhpcy5lbEZvcm1JdGVtIHx8IHt9KS5lbEZvcm1JdGVtU2l6ZTtcbiAgICB9LFxuICAgIGNvbG9yU2l6ZTogZnVuY3Rpb24gY29sb3JTaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZSB8fCB0aGlzLl9lbEZvcm1JdGVtU2l6ZSB8fCAodGhpcy4kRUxFTUVOVCB8fCB7fSkuc2l6ZTtcbiAgICB9LFxuICAgIGNvbG9yRGlzYWJsZWQ6IGZ1bmN0aW9uIGNvbG9yRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCAodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSh2YWwpIHtcbiAgICAgIGlmICghdmFsKSB7XG4gICAgICAgIHRoaXMuc2hvd1BhbmVsQ29sb3IgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsICYmIHZhbCAhPT0gdGhpcy5jb2xvci52YWx1ZSkge1xuICAgICAgICB0aGlzLmNvbG9yLmZyb21TdHJpbmcodmFsKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY29sb3I6IHtcbiAgICAgIGRlZXA6IHRydWUsXG4gICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgICB0aGlzLnNob3dQYW5lbENvbG9yID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRpc3BsYXllZENvbG9yOiBmdW5jdGlvbiBkaXNwbGF5ZWRDb2xvcih2YWwpIHtcbiAgICAgIGlmICghdGhpcy5zaG93UGlja2VyKSByZXR1cm47XG4gICAgICB2YXIgY3VycmVudFZhbHVlQ29sb3IgPSBuZXcgc3JjX2NvbG9yKHtcbiAgICAgICAgZW5hYmxlQWxwaGE6IHRoaXMuc2hvd0FscGhhLFxuICAgICAgICBmb3JtYXQ6IHRoaXMuY29sb3JGb3JtYXRcbiAgICAgIH0pO1xuICAgICAgY3VycmVudFZhbHVlQ29sb3IuZnJvbVN0cmluZyh0aGlzLnZhbHVlKTtcblxuICAgICAgdmFyIGN1cnJlbnRWYWx1ZUNvbG9yUmdiID0gdGhpcy5kaXNwbGF5ZWRSZ2IoY3VycmVudFZhbHVlQ29sb3IsIHRoaXMuc2hvd0FscGhhKTtcbiAgICAgIGlmICh2YWwgIT09IGN1cnJlbnRWYWx1ZUNvbG9yUmdiKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2FjdGl2ZS1jaGFuZ2UnLCB2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlVHJpZ2dlcjogZnVuY3Rpb24gaGFuZGxlVHJpZ2dlcigpIHtcbiAgICAgIGlmICh0aGlzLmNvbG9yRGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHRoaXMuc2hvd1BpY2tlciA9ICF0aGlzLnNob3dQaWNrZXI7XG4gICAgfSxcbiAgICBjb25maXJtVmFsdWU6IGZ1bmN0aW9uIGNvbmZpcm1WYWx1ZSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuY29sb3IudmFsdWU7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbHVlKTtcbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHZhbHVlKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsRm9ybUl0ZW0nLCAnZWwuZm9ybS5jaGFuZ2UnLCB2YWx1ZSk7XG4gICAgICB0aGlzLnNob3dQaWNrZXIgPSBmYWxzZTtcbiAgICB9LFxuICAgIGNsZWFyVmFsdWU6IGZ1bmN0aW9uIGNsZWFyVmFsdWUoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG51bGwpO1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgbnVsbCk7XG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKCdFbEZvcm1JdGVtJywgJ2VsLmZvcm0uY2hhbmdlJywgbnVsbCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNob3dQYW5lbENvbG9yID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dQaWNrZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzZXRDb2xvcigpO1xuICAgIH0sXG4gICAgaGlkZTogZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgIHRoaXMuc2hvd1BpY2tlciA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNldENvbG9yKCk7XG4gICAgfSxcbiAgICByZXNldENvbG9yOiBmdW5jdGlvbiByZXNldENvbG9yKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHtcbiAgICAgICAgaWYgKF90aGlzLnZhbHVlKSB7XG4gICAgICAgICAgX3RoaXMuY29sb3IuZnJvbVN0cmluZyhfdGhpcy52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuc2hvd1BhbmVsQ29sb3IgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBkaXNwbGF5ZWRSZ2I6IGZ1bmN0aW9uIGRpc3BsYXllZFJnYihjb2xvciwgc2hvd0FscGhhKSB7XG4gICAgICBpZiAoIShjb2xvciBpbnN0YW5jZW9mIHNyY19jb2xvcikpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ2NvbG9yIHNob3VsZCBiZSBpbnN0YW5jZSBvZiBDb2xvciBDbGFzcycpO1xuICAgICAgfVxuXG4gICAgICB2YXIgX2NvbG9yJHRvUmdiID0gY29sb3IudG9SZ2IoKSxcbiAgICAgICAgICByID0gX2NvbG9yJHRvUmdiLnIsXG4gICAgICAgICAgZyA9IF9jb2xvciR0b1JnYi5nLFxuICAgICAgICAgIGIgPSBfY29sb3IkdG9SZ2IuYjtcblxuICAgICAgcmV0dXJuIHNob3dBbHBoYSA/ICdyZ2JhKCcgKyByICsgJywgJyArIGcgKyAnLCAnICsgYiArICcsICcgKyBjb2xvci5nZXQoJ2FscGhhJykgLyAxMDAgKyAnKScgOiAncmdiKCcgKyByICsgJywgJyArIGcgKyAnLCAnICsgYiArICcpJztcbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5jb2xvci5mcm9tU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5wb3BwZXJFbG0gPSB0aGlzLiRyZWZzLmRyb3Bkb3duLiRlbDtcbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICB2YXIgY29sb3IgPSBuZXcgc3JjX2NvbG9yKHtcbiAgICAgIGVuYWJsZUFscGhhOiB0aGlzLnNob3dBbHBoYSxcbiAgICAgIGZvcm1hdDogdGhpcy5jb2xvckZvcm1hdFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiBjb2xvcixcbiAgICAgIHNob3dQaWNrZXI6IGZhbHNlLFxuICAgICAgc2hvd1BhbmVsQ29sb3I6IGZhbHNlXG4gICAgfTtcbiAgfSxcblxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBQaWNrZXJEcm9wZG93bjogcGlja2VyX2Ryb3Bkb3duXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb2xvci1waWNrZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2NvbG9yX3BpY2tlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChjb2xvcl9waWNrZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNvbG9yX3BpY2tlcl9zcmNfbWFpbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX2NvbG9yX3BpY2tlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU1YzhhZGU3X3JlbmRlcixcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzU1YzhhZGU3X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgY29sb3JfcGlja2VyX3NyY19tYWluX2FwaTsgfVxuY29sb3JfcGlja2VyX3NyY19tYWluX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvY29sb3ItcGlja2VyL3NyYy9tYWluLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb2xvcl9waWNrZXJfc3JjX21haW4gPSAoY29sb3JfcGlja2VyX3NyY19tYWluX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY29sb3ItcGlja2VyL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbG9yX3BpY2tlcl9zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGNvbG9yX3BpY2tlcl9zcmNfbWFpbi5uYW1lLCBjb2xvcl9waWNrZXJfc3JjX21haW4pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY29sb3JfcGlja2VyID0gKGNvbG9yX3BpY2tlcl9zcmNfbWFpbik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3RyYW5zZmVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YzY1NGRkOCZcbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNWM2NTRkZDhfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgeyBzdGF0aWNDbGFzczogXCJlbC10cmFuc2ZlclwiIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwidHJhbnNmZXItcGFuZWxcIixcbiAgICAgICAgX3ZtLl9iKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZjogXCJsZWZ0UGFuZWxcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIGRhdGE6IF92bS5zb3VyY2VEYXRhLFxuICAgICAgICAgICAgICB0aXRsZTogX3ZtLnRpdGxlc1swXSB8fCBfdm0udChcImVsLnRyYW5zZmVyLnRpdGxlcy4wXCIpLFxuICAgICAgICAgICAgICBcImRlZmF1bHQtY2hlY2tlZFwiOiBfdm0ubGVmdERlZmF1bHRDaGVja2VkLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICBfdm0uZmlsdGVyUGxhY2Vob2xkZXIgfHwgX3ZtLnQoXCJlbC50cmFuc2Zlci5maWx0ZXJQbGFjZWhvbGRlclwiKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiB7IFwiY2hlY2tlZC1jaGFuZ2VcIjogX3ZtLm9uU291cmNlQ2hlY2tlZENoYW5nZSB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInRyYW5zZmVyLXBhbmVsXCIsXG4gICAgICAgICAgX3ZtLiRwcm9wcyxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApLFxuICAgICAgICBbX3ZtLl90KFwibGVmdC1mb290ZXJcIildLFxuICAgICAgICAyXG4gICAgICApLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtdHJhbnNmZXJfX2J1dHRvbnNcIiB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImVsLWJ1dHRvblwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgICAgIFwiZWwtdHJhbnNmZXJfX2J1dHRvblwiLFxuICAgICAgICAgICAgICAgIF92bS5oYXNCdXR0b25UZXh0cyA/IFwiaXMtd2l0aC10ZXh0c1wiIDogXCJcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0ucmlnaHRDaGVja2VkLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuYXRpdmVPbjoge1xuICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uYWRkVG9MZWZ0KCRldmVudClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWljb24tYXJyb3ctbGVmdFwiIH0pLFxuICAgICAgICAgICAgICBfdm0uYnV0dG9uVGV4dHNbMF0gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS5idXR0b25UZXh0c1swXSkpXSlcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZWwtYnV0dG9uXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgICAgICAgXCJlbC10cmFuc2Zlcl9fYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgX3ZtLmhhc0J1dHRvblRleHRzID8gXCJpcy13aXRoLXRleHRzXCIgOiBcIlwiXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sZWZ0Q2hlY2tlZC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmF0aXZlT246IHtcbiAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmFkZFRvUmlnaHQoJGV2ZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLmJ1dHRvblRleHRzWzFdICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbX3ZtLl92KF92bS5fcyhfdm0uYnV0dG9uVGV4dHNbMV0pKV0pXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbi1hcnJvdy1yaWdodFwiIH0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApLFxuICAgICAgX2MoXG4gICAgICAgIFwidHJhbnNmZXItcGFuZWxcIixcbiAgICAgICAgX3ZtLl9iKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZjogXCJyaWdodFBhbmVsXCIsXG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBkYXRhOiBfdm0udGFyZ2V0RGF0YSxcbiAgICAgICAgICAgICAgdGl0bGU6IF92bS50aXRsZXNbMV0gfHwgX3ZtLnQoXCJlbC50cmFuc2Zlci50aXRsZXMuMVwiKSxcbiAgICAgICAgICAgICAgXCJkZWZhdWx0LWNoZWNrZWRcIjogX3ZtLnJpZ2h0RGVmYXVsdENoZWNrZWQsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgIF92bS5maWx0ZXJQbGFjZWhvbGRlciB8fCBfdm0udChcImVsLnRyYW5zZmVyLmZpbHRlclBsYWNlaG9sZGVyXCIpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHsgXCJjaGVja2VkLWNoYW5nZVwiOiBfdm0ub25UYXJnZXRDaGVja2VkQ2hhbmdlIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidHJhbnNmZXItcGFuZWxcIixcbiAgICAgICAgICBfdm0uJHByb3BzLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICksXG4gICAgICAgIFtfdm0uX3QoXCJyaWdodC1mb290ZXJcIildLFxuICAgICAgICAyXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNWM2NTRkZDhfc3RhdGljUmVuZGVyRm5zID0gW11cbm1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF81YzY1NGRkOF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RyYW5zZmVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YzY1NGRkOCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy90cmFuc2Zlci9zcmMvdHJhbnNmZXItcGFuZWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJkZGFiOGJkJlxudmFyIHRyYW5zZmVyX3BhbmVsdnVlX3R5cGVfdGVtcGxhdGVfaWRfMmRkYWI4YmRfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtdHJhbnNmZXItcGFuZWxcIiB9LCBbXG4gICAgX2MoXG4gICAgICBcInBcIixcbiAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtdHJhbnNmZXItcGFuZWxfX2hlYWRlclwiIH0sXG4gICAgICBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZWwtY2hlY2tib3hcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhdHRyczogeyBpbmRldGVybWluYXRlOiBfdm0uaXNJbmRldGVybWluYXRlIH0sXG4gICAgICAgICAgICBvbjogeyBjaGFuZ2U6IF92bS5oYW5kbGVBbGxDaGVja2VkQ2hhbmdlIH0sXG4gICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmFsbENoZWNrZWQsXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICBfdm0uYWxsQ2hlY2tlZCA9ICQkdlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImFsbENoZWNrZWRcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgXCIgKyBfdm0uX3MoX3ZtLnRpdGxlKSArIFwiXFxuICAgICAgXCIpLFxuICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS5jaGVja2VkU3VtbWFyeSkpXSlcbiAgICAgICAgICBdXG4gICAgICAgIClcbiAgICAgIF0sXG4gICAgICAxXG4gICAgKSxcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgXCJlbC10cmFuc2Zlci1wYW5lbF9fYm9keVwiLFxuICAgICAgICAgIF92bS5oYXNGb290ZXIgPyBcImlzLXdpdGgtZm9vdGVyXCIgOiBcIlwiXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIF92bS5maWx0ZXJhYmxlXG4gICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgXCJlbC1pbnB1dFwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdHJhbnNmZXItcGFuZWxfX2ZpbHRlclwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNpemU6IFwic21hbGxcIiwgcGxhY2Vob2xkZXI6IF92bS5wbGFjZWhvbGRlciB9LFxuICAgICAgICAgICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAgICAgICAgICBtb3VzZWVudGVyOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmlucHV0SG92ZXIgPSB0cnVlXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5pbnB1dEhvdmVyID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICBfdm0ucXVlcnkgPSAkJHZcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInF1ZXJ5XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgY2xhc3M6IFtcImVsLWlucHV0X19pY29uXCIsIFwiZWwtaWNvbi1cIiArIF92bS5pbnB1dEljb25dLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgc2xvdDogXCJwcmVmaXhcIiB9LFxuICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5jbGVhclF1ZXJ5IH0sXG4gICAgICAgICAgICAgICAgICBzbG90OiBcInByZWZpeFwiXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZWwtY2hlY2tib3gtZ3JvdXBcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAhX3ZtLmhhc05vTWF0Y2ggJiYgX3ZtLmRhdGEubGVuZ3RoID4gMCxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIiFoYXNOb01hdGNoICYmIGRhdGEubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10cmFuc2Zlci1wYW5lbF9fbGlzdFwiLFxuICAgICAgICAgICAgY2xhc3M6IHsgXCJpcy1maWx0ZXJhYmxlXCI6IF92bS5maWx0ZXJhYmxlIH0sXG4gICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmNoZWNrZWQsXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICBfdm0uY2hlY2tlZCA9ICQkdlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImNoZWNrZWRcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgX3ZtLl9sKF92bS5maWx0ZXJlZERhdGEsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgXCJlbC1jaGVja2JveFwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBpdGVtW192bS5rZXlQcm9wXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10cmFuc2Zlci1wYW5lbF9faXRlbVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbVtfdm0ua2V5UHJvcF0sXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXRlbVtfdm0uZGlzYWJsZWRQcm9wXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW19jKFwib3B0aW9uLWNvbnRlbnRcIiwgeyBhdHRyczogeyBvcHRpb246IGl0ZW0gfSB9KV0sXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAxXG4gICAgICAgICksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwicFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oYXNOb01hdGNoLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiaGFzTm9NYXRjaFwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10cmFuc2Zlci1wYW5lbF9fZW1wdHlcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJlbC50cmFuc2Zlci5ub01hdGNoXCIpKSldXG4gICAgICAgICksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwicFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IF92bS5kYXRhLmxlbmd0aCA9PT0gMCAmJiAhX3ZtLmhhc05vTWF0Y2gsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJkYXRhLmxlbmd0aCA9PT0gMCAmJiAhaGFzTm9NYXRjaFwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10cmFuc2Zlci1wYW5lbF9fZW1wdHlcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJlbC50cmFuc2Zlci5ub0RhdGFcIikpKV1cbiAgICAgICAgKVxuICAgICAgXSxcbiAgICAgIDFcbiAgICApLFxuICAgIF92bS5oYXNGb290ZXJcbiAgICAgID8gX2MoXG4gICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC10cmFuc2Zlci1wYW5lbF9fZm9vdGVyXCIgfSxcbiAgICAgICAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgICAgICAgMlxuICAgICAgICApXG4gICAgICA6IF92bS5fZSgpXG4gIF0pXG59XG52YXIgdHJhbnNmZXJfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yZGRhYjhiZF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxudHJhbnNmZXJfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yZGRhYjhiZF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RyYW5zZmVyL3NyYy90cmFuc2Zlci1wYW5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmRkYWI4YmQmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3RyYW5zZmVyL3NyYy90cmFuc2Zlci1wYW5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRyYW5zZmVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbWl4aW5zOiBbbG9jYWxlX2RlZmF1bHQuYV0sXG5cbiAgbmFtZTogJ0VsVHJhbnNmZXJQYW5lbCcsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsVHJhbnNmZXJQYW5lbCcsXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsQ2hlY2tib3hHcm91cDogY2hlY2tib3hfZ3JvdXBfZGVmYXVsdC5hLFxuICAgIEVsQ2hlY2tib3g6IGNoZWNrYm94X2RlZmF1bHQuYSxcbiAgICBFbElucHV0OiBpbnB1dF9kZWZhdWx0LmEsXG4gICAgT3B0aW9uQ29udGVudDoge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgb3B0aW9uOiBPYmplY3RcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgICAgIHZhciBnZXRQYXJlbnQgPSBmdW5jdGlvbiBnZXRQYXJlbnQodm0pIHtcbiAgICAgICAgICBpZiAodm0uJG9wdGlvbnMuY29tcG9uZW50TmFtZSA9PT0gJ0VsVHJhbnNmZXJQYW5lbCcpIHtcbiAgICAgICAgICAgIHJldHVybiB2bTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHZtLiRwYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnQodm0uJHBhcmVudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2bTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwYW5lbCA9IGdldFBhcmVudCh0aGlzKTtcbiAgICAgICAgdmFyIHRyYW5zZmVyID0gcGFuZWwuJHBhcmVudCB8fCBwYW5lbDtcbiAgICAgICAgcmV0dXJuIHBhbmVsLnJlbmRlckNvbnRlbnQgPyBwYW5lbC5yZW5kZXJDb250ZW50KGgsIHRoaXMub3B0aW9uKSA6IHRyYW5zZmVyLiRzY29wZWRTbG90cy5kZWZhdWx0ID8gdHJhbnNmZXIuJHNjb3BlZFNsb3RzLmRlZmF1bHQoeyBvcHRpb246IHRoaXMub3B0aW9uIH0pIDogaCgnc3BhbicsIFt0aGlzLm9wdGlvbltwYW5lbC5sYWJlbFByb3BdIHx8IHRoaXMub3B0aW9uW3BhbmVsLmtleVByb3BdXSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgZGF0YToge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVuZGVyQ29udGVudDogRnVuY3Rpb24sXG4gICAgcGxhY2Vob2xkZXI6IFN0cmluZyxcbiAgICB0aXRsZTogU3RyaW5nLFxuICAgIGZpbHRlcmFibGU6IEJvb2xlYW4sXG4gICAgZm9ybWF0OiBPYmplY3QsXG4gICAgZmlsdGVyTWV0aG9kOiBGdW5jdGlvbixcbiAgICBkZWZhdWx0Q2hlY2tlZDogQXJyYXksXG4gICAgcHJvcHM6IE9iamVjdFxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNoZWNrZWQ6IFtdLFxuICAgICAgYWxsQ2hlY2tlZDogZmFsc2UsXG4gICAgICBxdWVyeTogJycsXG4gICAgICBpbnB1dEhvdmVyOiBmYWxzZSxcbiAgICAgIGNoZWNrQ2hhbmdlQnlVc2VyOiB0cnVlXG4gICAgfTtcbiAgfSxcblxuXG4gIHdhdGNoOiB7XG4gICAgY2hlY2tlZDogZnVuY3Rpb24gY2hlY2tlZCh2YWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy51cGRhdGVBbGxDaGVja2VkKCk7XG4gICAgICBpZiAodGhpcy5jaGVja0NoYW5nZUJ5VXNlcikge1xuICAgICAgICB2YXIgbW92ZWRLZXlzID0gdmFsLmNvbmNhdChvbGRWYWwpLmZpbHRlcihmdW5jdGlvbiAodikge1xuICAgICAgICAgIHJldHVybiB2YWwuaW5kZXhPZih2KSA9PT0gLTEgfHwgb2xkVmFsLmluZGV4T2YodikgPT09IC0xO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hlY2tlZC1jaGFuZ2UnLCB2YWwsIG1vdmVkS2V5cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGVja2VkLWNoYW5nZScsIHZhbCk7XG4gICAgICAgIHRoaXMuY2hlY2tDaGFuZ2VCeVVzZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBjaGVja2VkID0gW107XG4gICAgICB2YXIgZmlsdGVyZWREYXRhS2V5cyA9IHRoaXMuZmlsdGVyZWREYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbVtfdGhpcy5rZXlQcm9wXTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jaGVja2VkLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaWYgKGZpbHRlcmVkRGF0YUtleXMuaW5kZXhPZihpdGVtKSA+IC0xKSB7XG4gICAgICAgICAgY2hlY2tlZC5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2hlY2tDaGFuZ2VCeVVzZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2hlY2tlZCA9IGNoZWNrZWQ7XG4gICAgfSxcbiAgICBjaGVja2FibGVEYXRhOiBmdW5jdGlvbiBjaGVja2FibGVEYXRhKCkge1xuICAgICAgdGhpcy51cGRhdGVBbGxDaGVja2VkKCk7XG4gICAgfSxcblxuXG4gICAgZGVmYXVsdENoZWNrZWQ6IHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsLCBvbGRWYWwpIHtcbiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgaWYgKG9sZFZhbCAmJiB2YWwubGVuZ3RoID09PSBvbGRWYWwubGVuZ3RoICYmIHZhbC5ldmVyeShmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHJldHVybiBvbGRWYWwuaW5kZXhPZihpdGVtKSA+IC0xO1xuICAgICAgICB9KSkgcmV0dXJuO1xuICAgICAgICB2YXIgY2hlY2tlZCA9IFtdO1xuICAgICAgICB2YXIgY2hlY2thYmxlRGF0YUtleXMgPSB0aGlzLmNoZWNrYWJsZURhdGEubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW1bX3RoaXMyLmtleVByb3BdO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFsLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICBpZiAoY2hlY2thYmxlRGF0YUtleXMuaW5kZXhPZihpdGVtKSA+IC0xKSB7XG4gICAgICAgICAgICBjaGVja2VkLnB1c2goaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGVja0NoYW5nZUJ5VXNlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGZpbHRlcmVkRGF0YTogZnVuY3Rpb24gZmlsdGVyZWREYXRhKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGlmICh0eXBlb2YgX3RoaXMzLmZpbHRlck1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBfdGhpczMuZmlsdGVyTWV0aG9kKF90aGlzMy5xdWVyeSwgaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGxhYmVsID0gaXRlbVtfdGhpczMubGFiZWxQcm9wXSB8fCBpdGVtW190aGlzMy5rZXlQcm9wXS50b1N0cmluZygpO1xuICAgICAgICAgIHJldHVybiBsYWJlbC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoX3RoaXMzLnF1ZXJ5LnRvTG93ZXJDYXNlKCkpID4gLTE7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2hlY2thYmxlRGF0YTogZnVuY3Rpb24gY2hlY2thYmxlRGF0YSgpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZERhdGEuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiAhaXRlbVtfdGhpczQuZGlzYWJsZWRQcm9wXTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2hlY2tlZFN1bW1hcnk6IGZ1bmN0aW9uIGNoZWNrZWRTdW1tYXJ5KCkge1xuICAgICAgdmFyIGNoZWNrZWRMZW5ndGggPSB0aGlzLmNoZWNrZWQubGVuZ3RoO1xuICAgICAgdmFyIGRhdGFMZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoO1xuICAgICAgdmFyIF9mb3JtYXQgPSB0aGlzLmZvcm1hdCxcbiAgICAgICAgICBub0NoZWNrZWQgPSBfZm9ybWF0Lm5vQ2hlY2tlZCxcbiAgICAgICAgICBoYXNDaGVja2VkID0gX2Zvcm1hdC5oYXNDaGVja2VkO1xuXG4gICAgICBpZiAobm9DaGVja2VkICYmIGhhc0NoZWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIGNoZWNrZWRMZW5ndGggPiAwID8gaGFzQ2hlY2tlZC5yZXBsYWNlKC9cXCR7Y2hlY2tlZH0vZywgY2hlY2tlZExlbmd0aCkucmVwbGFjZSgvXFwke3RvdGFsfS9nLCBkYXRhTGVuZ3RoKSA6IG5vQ2hlY2tlZC5yZXBsYWNlKC9cXCR7dG90YWx9L2csIGRhdGFMZW5ndGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNoZWNrZWRMZW5ndGggKyAnLycgKyBkYXRhTGVuZ3RoO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNJbmRldGVybWluYXRlOiBmdW5jdGlvbiBpc0luZGV0ZXJtaW5hdGUoKSB7XG4gICAgICB2YXIgY2hlY2tlZExlbmd0aCA9IHRoaXMuY2hlY2tlZC5sZW5ndGg7XG4gICAgICByZXR1cm4gY2hlY2tlZExlbmd0aCA+IDAgJiYgY2hlY2tlZExlbmd0aCA8IHRoaXMuY2hlY2thYmxlRGF0YS5sZW5ndGg7XG4gICAgfSxcbiAgICBoYXNOb01hdGNoOiBmdW5jdGlvbiBoYXNOb01hdGNoKCkge1xuICAgICAgcmV0dXJuIHRoaXMucXVlcnkubGVuZ3RoID4gMCAmJiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGggPT09IDA7XG4gICAgfSxcbiAgICBpbnB1dEljb246IGZ1bmN0aW9uIGlucHV0SWNvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5Lmxlbmd0aCA+IDAgJiYgdGhpcy5pbnB1dEhvdmVyID8gJ2NpcmNsZS1jbG9zZScgOiAnc2VhcmNoJztcbiAgICB9LFxuICAgIGxhYmVsUHJvcDogZnVuY3Rpb24gbGFiZWxQcm9wKCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMubGFiZWwgfHwgJ2xhYmVsJztcbiAgICB9LFxuICAgIGtleVByb3A6IGZ1bmN0aW9uIGtleVByb3AoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5rZXkgfHwgJ2tleSc7XG4gICAgfSxcbiAgICBkaXNhYmxlZFByb3A6IGZ1bmN0aW9uIGRpc2FibGVkUHJvcCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmRpc2FibGVkIHx8ICdkaXNhYmxlZCc7XG4gICAgfSxcbiAgICBoYXNGb290ZXI6IGZ1bmN0aW9uIGhhc0Zvb3RlcigpIHtcbiAgICAgIHJldHVybiAhIXRoaXMuJHNsb3RzLmRlZmF1bHQ7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICB1cGRhdGVBbGxDaGVja2VkOiBmdW5jdGlvbiB1cGRhdGVBbGxDaGVja2VkKCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHZhciBjaGVja2FibGVEYXRhS2V5cyA9IHRoaXMuY2hlY2thYmxlRGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1bX3RoaXM1LmtleVByb3BdO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFsbENoZWNrZWQgPSBjaGVja2FibGVEYXRhS2V5cy5sZW5ndGggPiAwICYmIGNoZWNrYWJsZURhdGFLZXlzLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBfdGhpczUuY2hlY2tlZC5pbmRleE9mKGl0ZW0pID4gLTE7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGhhbmRsZUFsbENoZWNrZWRDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUFsbENoZWNrZWRDaGFuZ2UodmFsdWUpIHtcbiAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICB0aGlzLmNoZWNrZWQgPSB2YWx1ZSA/IHRoaXMuY2hlY2thYmxlRGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1bX3RoaXM2LmtleVByb3BdO1xuICAgICAgfSkgOiBbXTtcbiAgICB9LFxuICAgIGNsZWFyUXVlcnk6IGZ1bmN0aW9uIGNsZWFyUXVlcnkoKSB7XG4gICAgICBpZiAodGhpcy5pbnB1dEljb24gPT09ICdjaXJjbGUtY2xvc2UnKSB7XG4gICAgICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90cmFuc2Zlci9zcmMvdHJhbnNmZXItcGFuZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY190cmFuc2Zlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh0cmFuc2Zlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90cmFuc2Zlci9zcmMvdHJhbnNmZXItcGFuZWwudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgdHJhbnNmZXJfcGFuZWxfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfdHJhbnNmZXJfcGFuZWx2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHRyYW5zZmVyX3BhbmVsdnVlX3R5cGVfdGVtcGxhdGVfaWRfMmRkYWI4YmRfcmVuZGVyLFxuICB0cmFuc2Zlcl9wYW5lbHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJkZGFiOGJkX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgdHJhbnNmZXJfcGFuZWxfYXBpOyB9XG50cmFuc2Zlcl9wYW5lbF9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3RyYW5zZmVyL3NyYy90cmFuc2Zlci1wYW5lbC52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdHJhbnNmZXJfcGFuZWwgPSAodHJhbnNmZXJfcGFuZWxfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdHJhbnNmZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdHJhbnNmZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxUcmFuc2ZlcicsXG5cbiAgbWl4aW5zOiBbZW1pdHRlcl9kZWZhdWx0LmEsIGxvY2FsZV9kZWZhdWx0LmEsIG1pZ3JhdGluZ19kZWZhdWx0LmFdLFxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBUcmFuc2ZlclBhbmVsOiB0cmFuc2Zlcl9wYW5lbCxcbiAgICBFbEJ1dHRvbjogYnV0dG9uX2RlZmF1bHQuYVxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgZGF0YToge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgdGl0bGVzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSxcbiAgICBidXR0b25UZXh0czoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgZmlsdGVyUGxhY2Vob2xkZXI6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBmaWx0ZXJNZXRob2Q6IEZ1bmN0aW9uLFxuICAgIGxlZnREZWZhdWx0Q2hlY2tlZDoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmlnaHREZWZhdWx0Q2hlY2tlZDoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVuZGVyQ29udGVudDogRnVuY3Rpb24sXG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZpbHRlcmFibGU6IEJvb2xlYW4sXG4gICAgcHJvcHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxhYmVsOiAnbGFiZWwnLFxuICAgICAgICAgIGtleTogJ2tleScsXG4gICAgICAgICAgZGlzYWJsZWQ6ICdkaXNhYmxlZCdcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhcmdldE9yZGVyOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnb3JpZ2luYWwnXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxlZnRDaGVja2VkOiBbXSxcbiAgICAgIHJpZ2h0Q2hlY2tlZDogW11cbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBkYXRhT2JqOiBmdW5jdGlvbiBkYXRhT2JqKCkge1xuICAgICAgdmFyIGtleSA9IHRoaXMucHJvcHMua2V5O1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKG8sIGN1cikge1xuICAgICAgICByZXR1cm4gKG9bY3VyW2tleV1dID0gY3VyKSAmJiBvO1xuICAgICAgfSwge30pO1xuICAgIH0sXG4gICAgc291cmNlRGF0YTogZnVuY3Rpb24gc291cmNlRGF0YSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy52YWx1ZS5pbmRleE9mKGl0ZW1bX3RoaXMucHJvcHMua2V5XSkgPT09IC0xO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB0YXJnZXREYXRhOiBmdW5jdGlvbiB0YXJnZXREYXRhKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLnRhcmdldE9yZGVyID09PSAnb3JpZ2luYWwnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMi52YWx1ZS5pbmRleE9mKGl0ZW1bX3RoaXMyLnByb3BzLmtleV0pID4gLTE7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUucmVkdWNlKGZ1bmN0aW9uIChhcnIsIGN1cikge1xuICAgICAgICAgIHZhciB2YWwgPSBfdGhpczIuZGF0YU9ialtjdXJdO1xuICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgIGFyci5wdXNoKHZhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhcnI7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhc0J1dHRvblRleHRzOiBmdW5jdGlvbiBoYXNCdXR0b25UZXh0cygpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1dHRvblRleHRzLmxlbmd0aCA9PT0gMjtcbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoKCdFbEZvcm1JdGVtJywgJ2VsLmZvcm0uY2hhbmdlJywgdmFsKTtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGdldE1pZ3JhdGluZ0NvbmZpZzogZnVuY3Rpb24gZ2V0TWlncmF0aW5nQ29uZmlnKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAnZm9vdGVyLWZvcm1hdCc6ICdmb290ZXItZm9ybWF0IGlzIHJlbmFtZWQgdG8gZm9ybWF0LidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuICAgIG9uU291cmNlQ2hlY2tlZENoYW5nZTogZnVuY3Rpb24gb25Tb3VyY2VDaGVja2VkQ2hhbmdlKHZhbCwgbW92ZWRLZXlzKSB7XG4gICAgICB0aGlzLmxlZnRDaGVja2VkID0gdmFsO1xuICAgICAgaWYgKG1vdmVkS2V5cyA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICB0aGlzLiRlbWl0KCdsZWZ0LWNoZWNrLWNoYW5nZScsIHZhbCwgbW92ZWRLZXlzKTtcbiAgICB9LFxuICAgIG9uVGFyZ2V0Q2hlY2tlZENoYW5nZTogZnVuY3Rpb24gb25UYXJnZXRDaGVja2VkQ2hhbmdlKHZhbCwgbW92ZWRLZXlzKSB7XG4gICAgICB0aGlzLnJpZ2h0Q2hlY2tlZCA9IHZhbDtcbiAgICAgIGlmIChtb3ZlZEtleXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgdGhpcy4kZW1pdCgncmlnaHQtY2hlY2stY2hhbmdlJywgdmFsLCBtb3ZlZEtleXMpO1xuICAgIH0sXG4gICAgYWRkVG9MZWZ0OiBmdW5jdGlvbiBhZGRUb0xlZnQoKSB7XG4gICAgICB2YXIgY3VycmVudFZhbHVlID0gdGhpcy52YWx1ZS5zbGljZSgpO1xuICAgICAgdGhpcy5yaWdodENoZWNrZWQuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjdXJyZW50VmFsdWUuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICBjdXJyZW50VmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIGN1cnJlbnRWYWx1ZSk7XG4gICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBjdXJyZW50VmFsdWUsICdsZWZ0JywgdGhpcy5yaWdodENoZWNrZWQpO1xuICAgIH0sXG4gICAgYWRkVG9SaWdodDogZnVuY3Rpb24gYWRkVG9SaWdodCgpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgY3VycmVudFZhbHVlID0gdGhpcy52YWx1ZS5zbGljZSgpO1xuICAgICAgdmFyIGl0ZW1zVG9CZU1vdmVkID0gW107XG4gICAgICB2YXIga2V5ID0gdGhpcy5wcm9wcy5rZXk7XG4gICAgICB0aGlzLmRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICB2YXIgaXRlbUtleSA9IGl0ZW1ba2V5XTtcbiAgICAgICAgaWYgKF90aGlzMy5sZWZ0Q2hlY2tlZC5pbmRleE9mKGl0ZW1LZXkpID4gLTEgJiYgX3RoaXMzLnZhbHVlLmluZGV4T2YoaXRlbUtleSkgPT09IC0xKSB7XG4gICAgICAgICAgaXRlbXNUb0JlTW92ZWQucHVzaChpdGVtS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLnRhcmdldE9yZGVyID09PSAndW5zaGlmdCcgPyBpdGVtc1RvQmVNb3ZlZC5jb25jYXQoY3VycmVudFZhbHVlKSA6IGN1cnJlbnRWYWx1ZS5jb25jYXQoaXRlbXNUb0JlTW92ZWQpO1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBjdXJyZW50VmFsdWUpO1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgY3VycmVudFZhbHVlLCAncmlnaHQnLCB0aGlzLmxlZnRDaGVja2VkKTtcbiAgICB9LFxuICAgIGNsZWFyUXVlcnk6IGZ1bmN0aW9uIGNsZWFyUXVlcnkod2hpY2gpIHtcbiAgICAgIGlmICh3aGljaCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIHRoaXMuJHJlZnMubGVmdFBhbmVsLnF1ZXJ5ID0gJyc7XG4gICAgICB9IGVsc2UgaWYgKHdoaWNoID09PSAncmlnaHQnKSB7XG4gICAgICAgIHRoaXMuJHJlZnMucmlnaHRQYW5lbC5xdWVyeSA9ICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RyYW5zZmVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc190cmFuc2Zlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh0cmFuc2Zlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90cmFuc2Zlci9zcmMvbWFpbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB0cmFuc2Zlcl9zcmNfbWFpbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX3RyYW5zZmVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNWM2NTRkZDhfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNWM2NTRkZDhfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciB0cmFuc2Zlcl9zcmNfbWFpbl9hcGk7IH1cbnRyYW5zZmVyX3NyY19tYWluX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvdHJhbnNmZXIvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRyYW5zZmVyX3NyY19tYWluID0gKHRyYW5zZmVyX3NyY19tYWluX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdHJhbnNmZXIvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudHJhbnNmZXJfc3JjX21haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh0cmFuc2Zlcl9zcmNfbWFpbi5uYW1lLCB0cmFuc2Zlcl9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0cmFuc2ZlciA9ICh0cmFuc2Zlcl9zcmNfbWFpbik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2NvbnRhaW5lci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWJmMTgxZDQmXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzViZjE4MWQ0X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInNlY3Rpb25cIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWNvbnRhaW5lclwiLCBjbGFzczogeyBcImlzLXZlcnRpY2FsXCI6IF92bS5pc1ZlcnRpY2FsIH0gfSxcbiAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgMlxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzViZjE4MWQ0X3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNWJmMTgxZDRfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb250YWluZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTViZjE4MWQ0JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jb250YWluZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjb250YWluZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxDb250YWluZXInLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbENvbnRhaW5lcicsXG5cbiAgcHJvcHM6IHtcbiAgICBkaXJlY3Rpb246IFN0cmluZ1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNWZXJ0aWNhbDogZnVuY3Rpb24gaXNWZXJ0aWNhbCgpIHtcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy4kc2xvdHMgJiYgdGhpcy4kc2xvdHMuZGVmYXVsdCA/IHRoaXMuJHNsb3RzLmRlZmF1bHQuc29tZShmdW5jdGlvbiAodm5vZGUpIHtcbiAgICAgICAgdmFyIHRhZyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnMgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucy50YWc7XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdlbC1oZWFkZXInIHx8IHRhZyA9PT0gJ2VsLWZvb3Rlcic7XG4gICAgICB9KSA6IGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NvbnRhaW5lci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfY29udGFpbmVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGNvbnRhaW5lcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb250YWluZXIvc3JjL21haW4udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY29udGFpbmVyX3NyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfY29udGFpbmVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNWJmMTgxZDRfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNWJmMTgxZDRfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBjb250YWluZXJfc3JjX21haW5fYXBpOyB9XG5jb250YWluZXJfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9jb250YWluZXIvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNvbnRhaW5lcl9zcmNfbWFpbiA9IChjb250YWluZXJfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jb250YWluZXIvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29udGFpbmVyX3NyY19tYWluLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoY29udGFpbmVyX3NyY19tYWluLm5hbWUsIGNvbnRhaW5lcl9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19jb250YWluZXIgPSAoY29udGFpbmVyX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvaGVhZGVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYjI5NmFiMiZcbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMmIyOTZhYjJfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiaGVhZGVyXCIsXG4gICAgeyBzdGF0aWNDbGFzczogXCJlbC1oZWFkZXJcIiwgc3R5bGU6IHsgaGVpZ2h0OiBfdm0uaGVpZ2h0IH0gfSxcbiAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgMlxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJiMjk2YWIyX3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMmIyOTZhYjJfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9oZWFkZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiMjk2YWIyJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9oZWFkZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBoZWFkZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxIZWFkZXInLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbEhlYWRlcicsXG5cbiAgcHJvcHM6IHtcbiAgICBoZWlnaHQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICc2MHB4J1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2hlYWRlci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfaGVhZGVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGhlYWRlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9oZWFkZXIvc3JjL21haW4udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgaGVhZGVyX3NyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfaGVhZGVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMmIyOTZhYjJfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMmIyOTZhYjJfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBoZWFkZXJfc3JjX21haW5fYXBpOyB9XG5oZWFkZXJfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9oZWFkZXIvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGhlYWRlcl9zcmNfbWFpbiA9IChoZWFkZXJfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9oZWFkZXIvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuaGVhZGVyX3NyY19tYWluLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoaGVhZGVyX3NyY19tYWluLm5hbWUsIGhlYWRlcl9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBoZWFkZXIgPSAoaGVhZGVyX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYXNpZGUvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAzNDExZGJmJlxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMzQxMWRiZl9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJhc2lkZVwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtYXNpZGVcIiwgc3R5bGU6IHsgd2lkdGg6IF92bS53aWR0aCB9IH0sXG4gICAgW192bS5fdChcImRlZmF1bHRcIildLFxuICAgIDJcbiAgKVxufVxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMzQxMWRiZl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzAzNDExZGJmX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYXNpZGUvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAzNDExZGJmJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9hc2lkZS9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGFzaWRlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsQXNpZGUnLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbEFzaWRlJyxcblxuICBwcm9wczoge1xuICAgIHdpZHRoOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMzAwcHgnXG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYXNpZGUvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2FzaWRlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGFzaWRlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2FzaWRlL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGFzaWRlX3NyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfYXNpZGVfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMzQxMWRiZl9yZW5kZXIsXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMzQxMWRiZl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGFzaWRlX3NyY19tYWluX2FwaTsgfVxuYXNpZGVfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9hc2lkZS9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYXNpZGVfc3JjX21haW4gPSAoYXNpZGVfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9hc2lkZS9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5hc2lkZV9zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGFzaWRlX3NyY19tYWluLm5hbWUsIGFzaWRlX3NyY19tYWluKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGFzaWRlID0gKGFzaWRlX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvbWFpbi9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmEzYTc0MDYmXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJhM2E3NDA2X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcIm1haW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1tYWluXCIgfSwgW192bS5fdChcImRlZmF1bHRcIildLCAyKVxufVxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8yYTNhNzQwNl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzJhM2E3NDA2X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWFpbi9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmEzYTc0MDYmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL21haW4vc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBtYWluX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsTWFpbicsXG4gIGNvbXBvbmVudE5hbWU6ICdFbE1haW4nXG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWFpbi9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfbWFpbl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChtYWluX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL21haW4vc3JjL21haW4udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgbWFpbl9zcmNfbWFpbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX21haW5fc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8yYTNhNzQwNl9yZW5kZXIsXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8yYTNhNzQwNl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIG1haW5fc3JjX21haW5fYXBpOyB9XG5tYWluX3NyY19tYWluX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvbWFpbi9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbWFpbl9zcmNfbWFpbiA9IChtYWluX3NyY19tYWluX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvbWFpbi9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5tYWluX3NyY19tYWluLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQobWFpbl9zcmNfbWFpbi5uYW1lLCBtYWluX3NyY19tYWluKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX21haW4gPSAobWFpbl9zcmNfbWFpbik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2Zvb3Rlci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODAyMTAzMzgmXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzgwMjEwMzM4X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImZvb3RlclwiLFxuICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtZm9vdGVyXCIsIHN0eWxlOiB7IGhlaWdodDogX3ZtLmhlaWdodCB9IH0sXG4gICAgW192bS5fdChcImRlZmF1bHRcIildLFxuICAgIDJcbiAgKVxufVxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF84MDIxMDMzOF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzgwMjEwMzM4X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZm9vdGVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04MDIxMDMzOCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZm9vdGVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZm9vdGVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsRm9vdGVyJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxGb290ZXInLFxuXG4gIHByb3BzOiB7XG4gICAgaGVpZ2h0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnNjBweCdcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9mb290ZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2Zvb3Rlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChmb290ZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZm9vdGVyL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGZvb3Rlcl9zcmNfbWFpbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX2Zvb3Rlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzgwMjEwMzM4X3JlbmRlcixcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzgwMjEwMzM4X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgZm9vdGVyX3NyY19tYWluX2FwaTsgfVxuZm9vdGVyX3NyY19tYWluX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvZm9vdGVyL3NyYy9tYWluLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBmb290ZXJfc3JjX21haW4gPSAoZm9vdGVyX3NyY19tYWluX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZm9vdGVyL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZvb3Rlcl9zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGZvb3Rlcl9zcmNfbWFpbi5uYW1lLCBmb290ZXJfc3JjX21haW4pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZm9vdGVyID0gKGZvb3Rlcl9zcmNfbWFpbik7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy90aW1lbGluZS9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRpbWVsaW5lX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsVGltZWxpbmUnLFxuXG4gIHByb3BzOiB7XG4gICAgcmV2ZXJzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpbWVsaW5lOiB0aGlzXG4gICAgfTtcbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgdmFyIGggPSBhcmd1bWVudHNbMF07XG5cbiAgICB2YXIgcmV2ZXJzZSA9IHRoaXMucmV2ZXJzZTtcbiAgICB2YXIgY2xhc3NlcyA9IHtcbiAgICAgICdlbC10aW1lbGluZSc6IHRydWUsXG4gICAgICAnaXMtcmV2ZXJzZSc6IHJldmVyc2VcbiAgICB9O1xuICAgIHZhciBzbG90cyA9IHRoaXMuJHNsb3RzLmRlZmF1bHQgfHwgW107XG4gICAgaWYgKHJldmVyc2UpIHtcbiAgICAgIHNsb3RzID0gc2xvdHMucmV2ZXJzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gaChcbiAgICAgICd1bCcsXG4gICAgICB7ICdjbGFzcyc6IGNsYXNzZXMgfSxcbiAgICAgIFtzbG90c11cbiAgICApO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGltZWxpbmUvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3RpbWVsaW5lX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHRpbWVsaW5lX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RpbWVsaW5lL3NyYy9tYWluLnZ1ZVxudmFyIG1haW5fcmVuZGVyLCBtYWluX3N0YXRpY1JlbmRlckZuc1xuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciB0aW1lbGluZV9zcmNfbWFpbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX3RpbWVsaW5lX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWluX3JlbmRlcixcbiAgbWFpbl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHRpbWVsaW5lX3NyY19tYWluX2FwaTsgfVxudGltZWxpbmVfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy90aW1lbGluZS9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGltZWxpbmVfc3JjX21haW4gPSAodGltZWxpbmVfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90aW1lbGluZS9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG50aW1lbGluZV9zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHRpbWVsaW5lX3NyY19tYWluLm5hbWUsIHRpbWVsaW5lX3NyY19tYWluKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRpbWVsaW5lID0gKHRpbWVsaW5lX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdGltZWxpbmUvc3JjL2l0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYxYTY5ZTUwJlxudmFyIGl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF82MWE2OWU1MF9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJsaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXRpbWVsaW5lLWl0ZW1cIiB9LCBbXG4gICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC10aW1lbGluZS1pdGVtX190YWlsXCIgfSksXG4gICAgIV92bS4kc2xvdHMuZG90XG4gICAgICA/IF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtdGltZWxpbmUtaXRlbV9fbm9kZVwiLFxuICAgICAgICAgICAgY2xhc3M6IFtcbiAgICAgICAgICAgICAgXCJlbC10aW1lbGluZS1pdGVtX19ub2RlLS1cIiArIChfdm0uc2l6ZSB8fCBcIlwiKSxcbiAgICAgICAgICAgICAgXCJlbC10aW1lbGluZS1pdGVtX19ub2RlLS1cIiArIChfdm0udHlwZSB8fCBcIlwiKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogX3ZtLmNvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfdm0uaWNvblxuICAgICAgICAgICAgICA/IF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC10aW1lbGluZS1pdGVtX19pY29uXCIsXG4gICAgICAgICAgICAgICAgICBjbGFzczogX3ZtLmljb25cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgXVxuICAgICAgICApXG4gICAgICA6IF92bS5fZSgpLFxuICAgIF92bS4kc2xvdHMuZG90XG4gICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtdGltZWxpbmUtaXRlbV9fZG90XCIgfSwgW192bS5fdChcImRvdFwiKV0sIDIpXG4gICAgICA6IF92bS5fZSgpLFxuICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtdGltZWxpbmUtaXRlbV9fd3JhcHBlclwiIH0sIFtcbiAgICAgICFfdm0uaGlkZVRpbWVzdGFtcCAmJiBfdm0ucGxhY2VtZW50ID09PSBcInRvcFwiXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC10aW1lbGluZS1pdGVtX190aW1lc3RhbXAgaXMtdG9wXCIgfSwgW1xuICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgXCIgKyBfdm0uX3MoX3ZtLnRpbWVzdGFtcCkgKyBcIlxcbiAgICBcIilcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtdGltZWxpbmUtaXRlbV9fY29udGVudFwiIH0sXG4gICAgICAgIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSxcbiAgICAgICAgMlxuICAgICAgKSxcbiAgICAgICFfdm0uaGlkZVRpbWVzdGFtcCAmJiBfdm0ucGxhY2VtZW50ID09PSBcImJvdHRvbVwiXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC10aW1lbGluZS1pdGVtX190aW1lc3RhbXAgaXMtYm90dG9tXCIgfSwgW1xuICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgXCIgKyBfdm0uX3MoX3ZtLnRpbWVzdGFtcCkgKyBcIlxcbiAgICBcIilcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpXG4gICAgXSlcbiAgXSlcbn1cbnZhciBpdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfNjFhNjllNTBfc3RhdGljUmVuZGVyRm5zID0gW11cbml0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF82MWE2OWU1MF9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RpbWVsaW5lL3NyYy9pdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MWE2OWU1MCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvdGltZWxpbmUvc3JjL2l0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRpbWVsaW5lX3NyY19pdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsVGltZWxpbmVJdGVtJyxcblxuICBpbmplY3Q6IFsndGltZWxpbmUnXSxcblxuICBwcm9wczoge1xuICAgIHRpbWVzdGFtcDogU3RyaW5nLFxuXG4gICAgaGlkZVRpbWVzdGFtcDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcblxuICAgIHBsYWNlbWVudDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2JvdHRvbSdcbiAgICB9LFxuXG4gICAgdHlwZTogU3RyaW5nLFxuXG4gICAgY29sb3I6IFN0cmluZyxcblxuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdub3JtYWwnXG4gICAgfSxcblxuICAgIGljb246IFN0cmluZ1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvdGltZWxpbmUvc3JjL2l0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3RpbWVsaW5lX3NyY19pdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHRpbWVsaW5lX3NyY19pdGVtdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RpbWVsaW5lL3NyYy9pdGVtLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHNyY19pdGVtX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfdGltZWxpbmVfc3JjX2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF82MWE2OWU1MF9yZW5kZXIsXG4gIGl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF82MWE2OWU1MF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHNyY19pdGVtX2FwaTsgfVxuc3JjX2l0ZW1fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy90aW1lbGluZS9zcmMvaXRlbS52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGltZWxpbmVfc3JjX2l0ZW0gPSAoc3JjX2l0ZW1fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90aW1lbGluZS1pdGVtL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnRpbWVsaW5lX3NyY19pdGVtLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQodGltZWxpbmVfc3JjX2l0ZW0ubmFtZSwgdGltZWxpbmVfc3JjX2l0ZW0pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGltZWxpbmVfaXRlbSA9ICh0aW1lbGluZV9zcmNfaXRlbSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2xpbmsvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxY2YzYjY1JlxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8wMWNmM2I2NV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJhXCIsXG4gICAgX3ZtLl9iKFxuICAgICAge1xuICAgICAgICBjbGFzczogW1xuICAgICAgICAgIFwiZWwtbGlua1wiLFxuICAgICAgICAgIF92bS50eXBlID8gXCJlbC1saW5rLS1cIiArIF92bS50eXBlIDogXCJcIixcbiAgICAgICAgICBfdm0uZGlzYWJsZWQgJiYgXCJpcy1kaXNhYmxlZFwiLFxuICAgICAgICAgIF92bS51bmRlcmxpbmUgJiYgIV92bS5kaXNhYmxlZCAmJiBcImlzLXVuZGVybGluZVwiXG4gICAgICAgIF0sXG4gICAgICAgIGF0dHJzOiB7IGhyZWY6IF92bS5kaXNhYmxlZCA/IG51bGwgOiBfdm0uaHJlZiB9LFxuICAgICAgICBvbjogeyBjbGljazogX3ZtLmhhbmRsZUNsaWNrIH1cbiAgICAgIH0sXG4gICAgICBcImFcIixcbiAgICAgIF92bS4kYXR0cnMsXG4gICAgICBmYWxzZVxuICAgICksXG4gICAgW1xuICAgICAgX3ZtLmljb24gPyBfYyhcImlcIiwgeyBjbGFzczogX3ZtLmljb24gfSkgOiBfdm0uX2UoKSxcbiAgICAgIF92bS4kc2xvdHMuZGVmYXVsdFxuICAgICAgICA/IF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWxpbmstLWlubmVyXCIgfSwgW192bS5fdChcImRlZmF1bHRcIildLCAyKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLiRzbG90cy5pY29uID8gW192bS4kc2xvdHMuaWNvbiA/IF92bS5fdChcImljb25cIikgOiBfdm0uX2UoKV0gOiBfdm0uX2UoKVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzAxY2YzYjY1X3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMDFjZjNiNjVfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9saW5rL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMWNmM2I2NSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvbGluay9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBsaW5rX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsTGluaycsXG5cbiAgcHJvcHM6IHtcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnZGVmYXVsdCdcbiAgICB9LFxuICAgIHVuZGVybGluZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIGhyZWY6IFN0cmluZyxcbiAgICBpY29uOiBTdHJpbmdcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhyZWYpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdjbGljaycsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2xpbmsvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2xpbmtfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAobGlua19zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9saW5rL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGxpbmtfc3JjX21haW5fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19saW5rX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMDFjZjNiNjVfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMDFjZjNiNjVfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBsaW5rX3NyY19tYWluX2FwaTsgfVxubGlua19zcmNfbWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2xpbmsvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGxpbmtfc3JjX21haW4gPSAobGlua19zcmNfbWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2xpbmsvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xubGlua19zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGxpbmtfc3JjX21haW4ubmFtZSwgbGlua19zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19saW5rID0gKGxpbmtfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kaXZpZGVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZmEwMmE3ZSZmdW5jdGlvbmFsPXRydWUmXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzdmYTAyYTdlX2Z1bmN0aW9uYWxfdHJ1ZV9yZW5kZXIgPSBmdW5jdGlvbihfaCwgX3ZtKSB7XG4gIHZhciBfYyA9IF92bS5fY1xuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICBfdm0uX2coXG4gICAgICBfdm0uX2IoXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgX3ZtLmRhdGEuc3RhdGljQ2xhc3MsXG4gICAgICAgICAgICBcImVsLWRpdmlkZXJcIixcbiAgICAgICAgICAgIFwiZWwtZGl2aWRlci0tXCIgKyBfdm0ucHJvcHMuZGlyZWN0aW9uXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICBfdm0uZGF0YS5hdHRycyxcbiAgICAgICAgZmFsc2VcbiAgICAgICksXG4gICAgICBfdm0ubGlzdGVuZXJzXG4gICAgKSxcbiAgICBbXG4gICAgICBfdm0uc2xvdHMoKS5kZWZhdWx0ICYmIF92bS5wcm9wcy5kaXJlY3Rpb24gIT09IFwidmVydGljYWxcIlxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgY2xhc3M6IFtcImVsLWRpdmlkZXJfX3RleHRcIiwgXCJpcy1cIiArIF92bS5wcm9wcy5jb250ZW50UG9zaXRpb25dIH0sXG4gICAgICAgICAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpXG4gICAgXVxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzdmYTAyYTdlX2Z1bmN0aW9uYWxfdHJ1ZV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzdmYTAyYTdlX2Z1bmN0aW9uYWxfdHJ1ZV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RpdmlkZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmYTAyYTdlJmZ1bmN0aW9uYWw9dHJ1ZSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZGl2aWRlci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGRpdmlkZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxEaXZpZGVyJyxcbiAgcHJvcHM6IHtcbiAgICBkaXJlY3Rpb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdob3Jpem9udGFsJyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJ10uaW5kZXhPZih2YWwpICE9PSAtMTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNvbnRlbnRQb3NpdGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2NlbnRlcicsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWwpIHtcbiAgICAgICAgcmV0dXJuIFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnXS5pbmRleE9mKHZhbCkgIT09IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RpdmlkZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2RpdmlkZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoZGl2aWRlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kaXZpZGVyL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGRpdmlkZXJfc3JjX21haW5fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19kaXZpZGVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfN2ZhMDJhN2VfZnVuY3Rpb25hbF90cnVlX3JlbmRlcixcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzdmYTAyYTdlX2Z1bmN0aW9uYWxfdHJ1ZV9zdGF0aWNSZW5kZXJGbnMsXG4gIHRydWUsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgZGl2aWRlcl9zcmNfbWFpbl9hcGk7IH1cbmRpdmlkZXJfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9kaXZpZGVyL3NyYy9tYWluLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkaXZpZGVyX3NyY19tYWluID0gKGRpdmlkZXJfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kaXZpZGVyL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmRpdmlkZXJfc3JjX21haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChkaXZpZGVyX3NyY19tYWluLm5hbWUsIGRpdmlkZXJfc3JjX21haW4pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZGl2aWRlciA9IChkaXZpZGVyX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvaW1hZ2Uvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ0ZDg0YTdjJlxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF80NGQ4NGE3Y19yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWltYWdlXCIgfSxcbiAgICBbXG4gICAgICBfdm0ubG9hZGluZ1xuICAgICAgICA/IF92bS5fdChcInBsYWNlaG9sZGVyXCIsIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW1hZ2VfX3BsYWNlaG9sZGVyXCIgfSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5lcnJvclxuICAgICAgICA/IF92bS5fdChcImVycm9yXCIsIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW1hZ2VfX2Vycm9yXCIgfSwgW1xuICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwiZWwuaW1hZ2UuZXJyb3JcIikpKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IF9jKFxuICAgICAgICAgICAgXCJpbWdcIixcbiAgICAgICAgICAgIF92bS5fZyhcbiAgICAgICAgICAgICAgX3ZtLl9iKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWltYWdlX19pbm5lclwiLFxuICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJlbC1pbWFnZV9faW5uZXItLWNlbnRlclwiOiBfdm0uYWxpZ25DZW50ZXIsXG4gICAgICAgICAgICAgICAgICAgIFwiZWwtaW1hZ2VfX3ByZXZpZXdcIjogX3ZtLnByZXZpZXdcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBzdHlsZTogX3ZtLmltYWdlU3R5bGUsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBzcmM6IF92bS5zcmMgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uY2xpY2tIYW5kbGVyIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiaW1nXCIsXG4gICAgICAgICAgICAgICAgX3ZtLiRhdHRycyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBfdm0uJGxpc3RlbmVyc1xuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICBfdm0ucHJldmlld1xuICAgICAgICA/IFtcbiAgICAgICAgICAgIF92bS5zaG93Vmlld2VyXG4gICAgICAgICAgICAgID8gX2MoXCJpbWFnZS12aWV3ZXJcIiwge1xuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJ6LWluZGV4XCI6IF92bS56SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIFwiaW5pdGlhbC1pbmRleFwiOiBfdm0uaW1hZ2VJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgXCJvbi1jbG9zZVwiOiBfdm0uY2xvc2VWaWV3ZXIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJsLWxpc3RcIjogX3ZtLnByZXZpZXdTcmNMaXN0XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgIF1cbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQ0ZDg0YTdjX3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNDRkODRhN2NfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbWFnZS9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDRkODRhN2MmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvaW1hZ2Uvc3JjL2ltYWdlLXZpZXdlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWU3M2IzMDcmXG52YXIgaW1hZ2Vfdmlld2VydnVlX3R5cGVfdGVtcGxhdGVfaWRfNWU3M2IzMDdfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwidHJhbnNpdGlvblwiLCB7IGF0dHJzOiB7IG5hbWU6IFwidmlld2VyLWZhZGVcIiB9IH0sIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIHJlZjogXCJlbC1pbWFnZS12aWV3ZXJfX3dyYXBwZXJcIixcbiAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtaW1hZ2Utdmlld2VyX193cmFwcGVyXCIsXG4gICAgICAgIHN0eWxlOiB7IFwiei1pbmRleFwiOiBfdm0udmlld2VyWkluZGV4IH0sXG4gICAgICAgIGF0dHJzOiB7IHRhYmluZGV4OiBcIi0xXCIgfVxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXCJkaXZcIiwge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWltYWdlLXZpZXdlcl9fbWFza1wiLFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0ICE9PSAkZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVNYXNrQ2xpY2soJGV2ZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWltYWdlLXZpZXdlcl9fYnRuIGVsLWltYWdlLXZpZXdlcl9fY2xvc2VcIixcbiAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGlkZSB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbi1jbG9zZVwiIH0pXVxuICAgICAgICApLFxuICAgICAgICAhX3ZtLmlzU2luZ2xlXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWltYWdlLXZpZXdlcl9fYnRuIGVsLWltYWdlLXZpZXdlcl9fcHJldlwiLFxuICAgICAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpcy1kaXNhYmxlZFwiOiAhX3ZtLmluZmluaXRlICYmIF92bS5pc0ZpcnN0IH0sXG4gICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnByZXYgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW19jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWljb24tYXJyb3ctbGVmdFwiIH0pXVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pbWFnZS12aWV3ZXJfX2J0biBlbC1pbWFnZS12aWV3ZXJfX25leHRcIixcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiB7IFwiaXMtZGlzYWJsZWRcIjogIV92bS5pbmZpbml0ZSAmJiBfdm0uaXNMYXN0IH0sXG4gICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLm5leHQgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW19jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWljb24tYXJyb3ctcmlnaHRcIiB9KV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1pbWFnZS12aWV3ZXJfX2J0biBlbC1pbWFnZS12aWV3ZXJfX2FjdGlvbnNcIiB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW1hZ2Utdmlld2VyX19hY3Rpb25zX19pbm5lclwiIH0sIFtcbiAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pY29uLXpvb20tb3V0XCIsXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZUFjdGlvbnMoXCJ6b29tT3V0XCIpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pY29uLXpvb20taW5cIixcbiAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQWN0aW9ucyhcInpvb21JblwiKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWltYWdlLXZpZXdlcl9fYWN0aW9uc19fZGl2aWRlclwiIH0pLFxuICAgICAgICAgICAgICBfYyhcImlcIiwgeyBjbGFzczogX3ZtLm1vZGUuaWNvbiwgb246IHsgY2xpY2s6IF92bS50b2dnbGVNb2RlIH0gfSksXG4gICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWltYWdlLXZpZXdlcl9fYWN0aW9uc19fZGl2aWRlclwiIH0pLFxuICAgICAgICAgICAgICBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWljb24tcmVmcmVzaC1sZWZ0XCIsXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZUFjdGlvbnMoXCJhbnRpY2xvY2VsaXNlXCIpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pY29uLXJlZnJlc2gtcmlnaHRcIixcbiAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQWN0aW9ucyhcImNsb2NlbGlzZVwiKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgICBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW1hZ2Utdmlld2VyX19jYW52YXNcIiB9LFxuICAgICAgICAgIF92bS5fbChfdm0udXJsTGlzdCwgZnVuY3Rpb24odXJsLCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gaSA9PT0gX3ZtLmluZGV4XG4gICAgICAgICAgICAgID8gX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgICAga2V5OiB1cmwsXG4gICAgICAgICAgICAgICAgICByZWY6IFwiaW1nXCIsXG4gICAgICAgICAgICAgICAgICByZWZJbkZvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWltYWdlLXZpZXdlcl9faW1nXCIsXG4gICAgICAgICAgICAgICAgICBzdHlsZTogX3ZtLmltZ1N0eWxlLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgc3JjOiBfdm0uY3VycmVudEltZyB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZDogX3ZtLmhhbmRsZUltZ0xvYWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBfdm0uaGFuZGxlSW1nRXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIG1vdXNlZG93bjogX3ZtLmhhbmRsZU1vdXNlRG93blxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAwXG4gICAgICAgIClcbiAgICAgIF0sXG4gICAgICAyXG4gICAgKVxuICBdKVxufVxudmFyIGltYWdlX3ZpZXdlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVlNzNiMzA3X3N0YXRpY1JlbmRlckZucyA9IFtdXG5pbWFnZV92aWV3ZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF81ZTczYjMwN19yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2ltYWdlL3NyYy9pbWFnZS12aWV3ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVlNzNiMzA3JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9pbWFnZS9zcmMvaW1hZ2Utdmlld2VyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbnZhciBpbWFnZV92aWV3ZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxudmFyIE1vZGUgPSB7XG4gIENPTlRBSU46IHtcbiAgICBuYW1lOiAnY29udGFpbicsXG4gICAgaWNvbjogJ2VsLWljb24tZnVsbC1zY3JlZW4nXG4gIH0sXG4gIE9SSUdJTkFMOiB7XG4gICAgbmFtZTogJ29yaWdpbmFsJyxcbiAgICBpY29uOiAnZWwtaWNvbi1jLXNjYWxlLXRvLW9yaWdpbmFsJ1xuICB9XG59O1xuXG52YXIgbW91c2V3aGVlbEV2ZW50TmFtZSA9IE9iamVjdCh1dGlsX1tcImlzRmlyZWZveFwiXSkoKSA/ICdET01Nb3VzZVNjcm9sbCcgOiAnbW91c2V3aGVlbCc7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGltYWdlX3ZpZXdlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdlbEltYWdlVmlld2VyJyxcblxuICBwcm9wczoge1xuICAgIHVybExpc3Q6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHpJbmRleDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMjAwMFxuICAgIH0sXG4gICAgb25Td2l0Y2g6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7fVxuICAgIH0sXG4gICAgb25DbG9zZToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHt9XG4gICAgfSxcbiAgICBpbml0aWFsSW5kZXg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIGFwcGVuZFRvQm9keToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIG1hc2tDbG9zYWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW5kZXg6IHRoaXMuaW5pdGlhbEluZGV4LFxuICAgICAgaXNTaG93OiBmYWxzZSxcbiAgICAgIGluZmluaXRlOiB0cnVlLFxuICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICBtb2RlOiBNb2RlLkNPTlRBSU4sXG4gICAgICB0cmFuc2Zvcm06IHtcbiAgICAgICAgc2NhbGU6IDEsXG4gICAgICAgIGRlZzogMCxcbiAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgb2Zmc2V0WTogMCxcbiAgICAgICAgZW5hYmxlVHJhbnNpdGlvbjogZmFsc2VcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNTaW5nbGU6IGZ1bmN0aW9uIGlzU2luZ2xlKCkge1xuICAgICAgcmV0dXJuIHRoaXMudXJsTGlzdC5sZW5ndGggPD0gMTtcbiAgICB9LFxuICAgIGlzRmlyc3Q6IGZ1bmN0aW9uIGlzRmlyc3QoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmRleCA9PT0gMDtcbiAgICB9LFxuICAgIGlzTGFzdDogZnVuY3Rpb24gaXNMYXN0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IHRoaXMudXJsTGlzdC5sZW5ndGggLSAxO1xuICAgIH0sXG4gICAgY3VycmVudEltZzogZnVuY3Rpb24gY3VycmVudEltZygpIHtcbiAgICAgIHJldHVybiB0aGlzLnVybExpc3RbdGhpcy5pbmRleF07XG4gICAgfSxcbiAgICBpbWdTdHlsZTogZnVuY3Rpb24gaW1nU3R5bGUoKSB7XG4gICAgICB2YXIgX3RyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLFxuICAgICAgICAgIHNjYWxlID0gX3RyYW5zZm9ybS5zY2FsZSxcbiAgICAgICAgICBkZWcgPSBfdHJhbnNmb3JtLmRlZyxcbiAgICAgICAgICBvZmZzZXRYID0gX3RyYW5zZm9ybS5vZmZzZXRYLFxuICAgICAgICAgIG9mZnNldFkgPSBfdHJhbnNmb3JtLm9mZnNldFksXG4gICAgICAgICAgZW5hYmxlVHJhbnNpdGlvbiA9IF90cmFuc2Zvcm0uZW5hYmxlVHJhbnNpdGlvbjtcblxuICAgICAgdmFyIHN0eWxlID0ge1xuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgnICsgc2NhbGUgKyAnKSByb3RhdGUoJyArIGRlZyArICdkZWcpJyxcbiAgICAgICAgdHJhbnNpdGlvbjogZW5hYmxlVHJhbnNpdGlvbiA/ICd0cmFuc2Zvcm0gLjNzJyA6ICcnLFxuICAgICAgICAnbWFyZ2luLWxlZnQnOiBvZmZzZXRYICsgJ3B4JyxcbiAgICAgICAgJ21hcmdpbi10b3AnOiBvZmZzZXRZICsgJ3B4J1xuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09IE1vZGUuQ09OVEFJTikge1xuICAgICAgICBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLm1heEhlaWdodCA9ICcxMDAlJztcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9LFxuICAgIHZpZXdlclpJbmRleDogZnVuY3Rpb24gdmlld2VyWkluZGV4KCkge1xuICAgICAgdmFyIG5leHRaSW5kZXggPSBwb3B1cF9bXCJQb3B1cE1hbmFnZXJcIl0ubmV4dFpJbmRleCgpO1xuICAgICAgcmV0dXJuIHRoaXMuekluZGV4ID4gbmV4dFpJbmRleCA/IHRoaXMuekluZGV4IDogbmV4dFpJbmRleDtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgaW5kZXg6IHtcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgdGhpcy5vblN3aXRjaCh2YWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY3VycmVudEltZzogZnVuY3Rpb24gY3VycmVudEltZyh2YWwpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7XG4gICAgICAgIHZhciAkaW1nID0gX3RoaXMuJHJlZnMuaW1nWzBdO1xuICAgICAgICBpZiAoISRpbWcuY29tcGxldGUpIHtcbiAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgaGlkZTogZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgIHRoaXMuZGV2aWNlU3VwcG9ydFVuaW5zdGFsbCgpO1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfSxcbiAgICBkZXZpY2VTdXBwb3J0SW5zdGFsbDogZnVuY3Rpb24gZGV2aWNlU3VwcG9ydEluc3RhbGwoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy5fa2V5RG93bkhhbmRsZXIgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB2YXIga2V5Q29kZSA9IGUua2V5Q29kZTtcbiAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICAgICAgLy8gRVNDXG4gICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgIF90aGlzMi5oaWRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAvLyBTUEFDRVxuICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICBfdGhpczIudG9nZ2xlTW9kZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgLy8gTEVGVF9BUlJPV1xuICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICBfdGhpczIucHJldigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgLy8gVVBfQVJST1dcbiAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgX3RoaXMyLmhhbmRsZUFjdGlvbnMoJ3pvb21JbicpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgLy8gUklHSFRfQVJST1dcbiAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgX3RoaXMyLm5leHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIC8vIERPV05fQVJST1dcbiAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgX3RoaXMyLmhhbmRsZUFjdGlvbnMoJ3pvb21PdXQnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5fbW91c2VXaGVlbEhhbmRsZXIgPSBPYmplY3QodXRpbF9bXCJyYWZUaHJvdHRsZVwiXSkoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIGRlbHRhID0gZS53aGVlbERlbHRhID8gZS53aGVlbERlbHRhIDogLWUuZGV0YWlsO1xuICAgICAgICBpZiAoZGVsdGEgPiAwKSB7XG4gICAgICAgICAgX3RoaXMyLmhhbmRsZUFjdGlvbnMoJ3pvb21JbicsIHtcbiAgICAgICAgICAgIHpvb21SYXRlOiAwLjAxNSxcbiAgICAgICAgICAgIGVuYWJsZVRyYW5zaXRpb246IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMyLmhhbmRsZUFjdGlvbnMoJ3pvb21PdXQnLCB7XG4gICAgICAgICAgICB6b29tUmF0ZTogMC4wMTUsXG4gICAgICAgICAgICBlbmFibGVUcmFuc2l0aW9uOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKGRvY3VtZW50LCAna2V5ZG93bicsIHRoaXMuX2tleURvd25IYW5kbGVyKTtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKGRvY3VtZW50LCBtb3VzZXdoZWVsRXZlbnROYW1lLCB0aGlzLl9tb3VzZVdoZWVsSGFuZGxlcik7XG4gICAgfSxcbiAgICBkZXZpY2VTdXBwb3J0VW5pbnN0YWxsOiBmdW5jdGlvbiBkZXZpY2VTdXBwb3J0VW5pbnN0YWxsKCkge1xuICAgICAgT2JqZWN0KGRvbV9bXCJvZmZcIl0pKGRvY3VtZW50LCAna2V5ZG93bicsIHRoaXMuX2tleURvd25IYW5kbGVyKTtcbiAgICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShkb2N1bWVudCwgbW91c2V3aGVlbEV2ZW50TmFtZSwgdGhpcy5fbW91c2VXaGVlbEhhbmRsZXIpO1xuICAgICAgdGhpcy5fa2V5RG93bkhhbmRsZXIgPSBudWxsO1xuICAgICAgdGhpcy5fbW91c2VXaGVlbEhhbmRsZXIgPSBudWxsO1xuICAgIH0sXG4gICAgaGFuZGxlSW1nTG9hZDogZnVuY3Rpb24gaGFuZGxlSW1nTG9hZChlKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9LFxuICAgIGhhbmRsZUltZ0Vycm9yOiBmdW5jdGlvbiBoYW5kbGVJbWdFcnJvcihlKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGUudGFyZ2V0LmFsdCA9ICfliqDovb3lpLHotKUnO1xuICAgIH0sXG4gICAgaGFuZGxlTW91c2VEb3duOiBmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZSkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgZS5idXR0b24gIT09IDApIHJldHVybjtcblxuICAgICAgdmFyIF90cmFuc2Zvcm0yID0gdGhpcy50cmFuc2Zvcm0sXG4gICAgICAgICAgb2Zmc2V0WCA9IF90cmFuc2Zvcm0yLm9mZnNldFgsXG4gICAgICAgICAgb2Zmc2V0WSA9IF90cmFuc2Zvcm0yLm9mZnNldFk7XG5cbiAgICAgIHZhciBzdGFydFggPSBlLnBhZ2VYO1xuICAgICAgdmFyIHN0YXJ0WSA9IGUucGFnZVk7XG4gICAgICB0aGlzLl9kcmFnSGFuZGxlciA9IE9iamVjdCh1dGlsX1tcInJhZlRocm90dGxlXCJdKShmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgX3RoaXMzLnRyYW5zZm9ybS5vZmZzZXRYID0gb2Zmc2V0WCArIGV2LnBhZ2VYIC0gc3RhcnRYO1xuICAgICAgICBfdGhpczMudHJhbnNmb3JtLm9mZnNldFkgPSBvZmZzZXRZICsgZXYucGFnZVkgLSBzdGFydFk7XG4gICAgICB9KTtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5fZHJhZ0hhbmRsZXIpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkoZG9jdW1lbnQsICdtb3VzZXVwJywgZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShkb2N1bWVudCwgJ21vdXNlbW92ZScsIF90aGlzMy5fZHJhZ0hhbmRsZXIpO1xuICAgICAgfSk7XG5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9LFxuICAgIGhhbmRsZU1hc2tDbGljazogZnVuY3Rpb24gaGFuZGxlTWFza0NsaWNrKCkge1xuICAgICAgaWYgKHRoaXMubWFza0Nsb3NhYmxlKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm0gPSB7XG4gICAgICAgIHNjYWxlOiAxLFxuICAgICAgICBkZWc6IDAsXG4gICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgIG9mZnNldFk6IDAsXG4gICAgICAgIGVuYWJsZVRyYW5zaXRpb246IGZhbHNlXG4gICAgICB9O1xuICAgIH0sXG4gICAgdG9nZ2xlTW9kZTogZnVuY3Rpb24gdG9nZ2xlTW9kZSgpIHtcbiAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHJldHVybjtcblxuICAgICAgdmFyIG1vZGVOYW1lcyA9IE9iamVjdC5rZXlzKE1vZGUpO1xuICAgICAgdmFyIG1vZGVWYWx1ZXMgPSBPYmplY3QudmFsdWVzKE1vZGUpO1xuICAgICAgdmFyIGluZGV4ID0gbW9kZVZhbHVlcy5pbmRleE9mKHRoaXMubW9kZSk7XG4gICAgICB2YXIgbmV4dEluZGV4ID0gKGluZGV4ICsgMSkgJSBtb2RlTmFtZXMubGVuZ3RoO1xuICAgICAgdGhpcy5tb2RlID0gTW9kZVttb2RlTmFtZXNbbmV4dEluZGV4XV07XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfSxcbiAgICBwcmV2OiBmdW5jdGlvbiBwcmV2KCkge1xuICAgICAgaWYgKHRoaXMuaXNGaXJzdCAmJiAhdGhpcy5pbmZpbml0ZSkgcmV0dXJuO1xuICAgICAgdmFyIGxlbiA9IHRoaXMudXJsTGlzdC5sZW5ndGg7XG4gICAgICB0aGlzLmluZGV4ID0gKHRoaXMuaW5kZXggLSAxICsgbGVuKSAlIGxlbjtcbiAgICB9LFxuICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBpZiAodGhpcy5pc0xhc3QgJiYgIXRoaXMuaW5maW5pdGUpIHJldHVybjtcbiAgICAgIHZhciBsZW4gPSB0aGlzLnVybExpc3QubGVuZ3RoO1xuICAgICAgdGhpcy5pbmRleCA9ICh0aGlzLmluZGV4ICsgMSkgJSBsZW47XG4gICAgfSxcbiAgICBoYW5kbGVBY3Rpb25zOiBmdW5jdGlvbiBoYW5kbGVBY3Rpb25zKGFjdGlvbikge1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm47XG5cbiAgICAgIHZhciBfem9vbVJhdGUkcm90YXRlRGVnJGUgPSBpbWFnZV92aWV3ZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19leHRlbmRzKHtcbiAgICAgICAgem9vbVJhdGU6IDAuMixcbiAgICAgICAgcm90YXRlRGVnOiA5MCxcbiAgICAgICAgZW5hYmxlVHJhbnNpdGlvbjogdHJ1ZVxuICAgICAgfSwgb3B0aW9ucyksXG4gICAgICAgICAgem9vbVJhdGUgPSBfem9vbVJhdGUkcm90YXRlRGVnJGUuem9vbVJhdGUsXG4gICAgICAgICAgcm90YXRlRGVnID0gX3pvb21SYXRlJHJvdGF0ZURlZyRlLnJvdGF0ZURlZyxcbiAgICAgICAgICBlbmFibGVUcmFuc2l0aW9uID0gX3pvb21SYXRlJHJvdGF0ZURlZyRlLmVuYWJsZVRyYW5zaXRpb247XG5cbiAgICAgIHZhciB0cmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybTtcblxuICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgY2FzZSAnem9vbU91dCc6XG4gICAgICAgICAgaWYgKHRyYW5zZm9ybS5zY2FsZSA+IDAuMikge1xuICAgICAgICAgICAgdHJhbnNmb3JtLnNjYWxlID0gcGFyc2VGbG9hdCgodHJhbnNmb3JtLnNjYWxlIC0gem9vbVJhdGUpLnRvRml4ZWQoMykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnem9vbUluJzpcbiAgICAgICAgICB0cmFuc2Zvcm0uc2NhbGUgPSBwYXJzZUZsb2F0KCh0cmFuc2Zvcm0uc2NhbGUgKyB6b29tUmF0ZSkudG9GaXhlZCgzKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Nsb2NlbGlzZSc6XG4gICAgICAgICAgdHJhbnNmb3JtLmRlZyArPSByb3RhdGVEZWc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FudGljbG9jZWxpc2UnOlxuICAgICAgICAgIHRyYW5zZm9ybS5kZWcgLT0gcm90YXRlRGVnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdHJhbnNmb3JtLmVuYWJsZVRyYW5zaXRpb24gPSBlbmFibGVUcmFuc2l0aW9uO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLmRldmljZVN1cHBvcnRJbnN0YWxsKCk7XG4gICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuJGVsKTtcbiAgICB9XG4gICAgLy8gYWRkIHRhYmluZGV4IHRoZW4gd3JhcHBlciBjYW4gYmUgZm9jdXNhYmxlIHZpYSBKYXZhc2NyaXB0XG4gICAgLy8gZm9jdXMgd3JhcHBlciBzbyBhcnJvdyBrZXkgY2FuJ3QgY2F1c2UgaW5uZXIgc2Nyb2xsIGJlaGF2aW9yIHVuZGVybmVhdGhcbiAgICB0aGlzLiRyZWZzWydlbC1pbWFnZS12aWV3ZXJfX3dyYXBwZXInXS5mb2N1cygpO1xuICB9LFxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCgpIHtcbiAgICAvLyBpZiBhcHBlbmRUb0JvZHkgaXMgdHJ1ZSwgcmVtb3ZlIERPTSBub2RlIGFmdGVyIGRlc3Ryb3lcbiAgICBpZiAodGhpcy5hcHBlbmRUb0JvZHkgJiYgdGhpcy4kZWwgJiYgdGhpcy4kZWwucGFyZW50Tm9kZSkge1xuICAgICAgdGhpcy4kZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLiRlbCk7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvaW1hZ2Uvc3JjL2ltYWdlLXZpZXdlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2ltYWdlX3ZpZXdlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChpbWFnZV92aWV3ZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvaW1hZ2Uvc3JjL2ltYWdlLXZpZXdlci52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBpbWFnZV92aWV3ZXJfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfaW1hZ2Vfdmlld2VydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBpbWFnZV92aWV3ZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF81ZTczYjMwN19yZW5kZXIsXG4gIGltYWdlX3ZpZXdlcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzVlNzNiMzA3X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgaW1hZ2Vfdmlld2VyX2FwaTsgfVxuaW1hZ2Vfdmlld2VyX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvaW1hZ2Uvc3JjL2ltYWdlLXZpZXdlci52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgaW1hZ2Vfdmlld2VyID0gKGltYWdlX3ZpZXdlcl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9pbWFnZS9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG5cblxudmFyIGlzU3VwcG9ydE9iamVjdEZpdCA9IGZ1bmN0aW9uIGlzU3VwcG9ydE9iamVjdEZpdCgpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vYmplY3RGaXQgIT09IHVuZGVmaW5lZDtcbn07XG5cbnZhciBPYmplY3RGaXQgPSB7XG4gIE5PTkU6ICdub25lJyxcbiAgQ09OVEFJTjogJ2NvbnRhaW4nLFxuICBDT1ZFUjogJ2NvdmVyJyxcbiAgRklMTDogJ2ZpbGwnLFxuICBTQ0FMRV9ET1dOOiAnc2NhbGUtZG93bidcbn07XG5cbnZhciBwcmV2T3ZlcmZsb3cgPSAnJztcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgaW1hZ2Vfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxJbWFnZScsXG5cbiAgbWl4aW5zOiBbbG9jYWxlX2RlZmF1bHQuYV0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG5cbiAgY29tcG9uZW50czoge1xuICAgIEltYWdlVmlld2VyOiBpbWFnZV92aWV3ZXJcbiAgfSxcblxuICBwcm9wczoge1xuICAgIHNyYzogU3RyaW5nLFxuICAgIGZpdDogU3RyaW5nLFxuICAgIGxhenk6IEJvb2xlYW4sXG4gICAgc2Nyb2xsQ29udGFpbmVyOiB7fSxcbiAgICBwcmV2aWV3U3JjTGlzdDoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgekluZGV4OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAyMDAwXG4gICAgfSxcbiAgICBpbml0aWFsSW5kZXg6IE51bWJlclxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICBlcnJvcjogZmFsc2UsXG4gICAgICBzaG93OiAhdGhpcy5sYXp5LFxuICAgICAgaW1hZ2VXaWR0aDogMCxcbiAgICAgIGltYWdlSGVpZ2h0OiAwLFxuICAgICAgc2hvd1ZpZXdlcjogZmFsc2VcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBpbWFnZVN0eWxlOiBmdW5jdGlvbiBpbWFnZVN0eWxlKCkge1xuICAgICAgdmFyIGZpdCA9IHRoaXMuZml0O1xuXG4gICAgICBpZiAoIXRoaXMuJGlzU2VydmVyICYmIGZpdCkge1xuICAgICAgICByZXR1cm4gaXNTdXBwb3J0T2JqZWN0Rml0KCkgPyB7ICdvYmplY3QtZml0JzogZml0IH0gOiB0aGlzLmdldEltYWdlU3R5bGUoZml0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9LFxuICAgIGFsaWduQ2VudGVyOiBmdW5jdGlvbiBhbGlnbkNlbnRlcigpIHtcbiAgICAgIHJldHVybiAhdGhpcy4kaXNTZXJ2ZXIgJiYgIWlzU3VwcG9ydE9iamVjdEZpdCgpICYmIHRoaXMuZml0ICE9PSBPYmplY3RGaXQuRklMTDtcbiAgICB9LFxuICAgIHByZXZpZXc6IGZ1bmN0aW9uIHByZXZpZXcoKSB7XG4gICAgICB2YXIgcHJldmlld1NyY0xpc3QgPSB0aGlzLnByZXZpZXdTcmNMaXN0O1xuXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwcmV2aWV3U3JjTGlzdCkgJiYgcHJldmlld1NyY0xpc3QubGVuZ3RoID4gMDtcbiAgICB9LFxuICAgIGltYWdlSW5kZXg6IGZ1bmN0aW9uIGltYWdlSW5kZXgoKSB7XG4gICAgICB2YXIgcHJldmlld0luZGV4ID0gMDtcbiAgICAgIHZhciBpbml0aWFsSW5kZXggPSB0aGlzLmluaXRpYWxJbmRleDtcbiAgICAgIGlmIChpbml0aWFsSW5kZXggPj0gMCkge1xuICAgICAgICBwcmV2aWV3SW5kZXggPSBpbml0aWFsSW5kZXg7XG4gICAgICAgIHJldHVybiBwcmV2aWV3SW5kZXg7XG4gICAgICB9XG4gICAgICB2YXIgc3JjSW5kZXggPSB0aGlzLnByZXZpZXdTcmNMaXN0LmluZGV4T2YodGhpcy5zcmMpO1xuICAgICAgaWYgKHNyY0luZGV4ID49IDApIHtcbiAgICAgICAgcHJldmlld0luZGV4ID0gc3JjSW5kZXg7XG4gICAgICAgIHJldHVybiBwcmV2aWV3SW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldmlld0luZGV4O1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHNyYzogZnVuY3Rpb24gc3JjKHZhbCkge1xuICAgICAgdGhpcy5zaG93ICYmIHRoaXMubG9hZEltYWdlKCk7XG4gICAgfSxcbiAgICBzaG93OiBmdW5jdGlvbiBzaG93KHZhbCkge1xuICAgICAgdmFsICYmIHRoaXMubG9hZEltYWdlKCk7XG4gICAgfVxuICB9LFxuXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgaWYgKHRoaXMubGF6eSkge1xuICAgICAgdGhpcy5hZGRMYXp5TG9hZExpc3RlbmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZEltYWdlKCk7XG4gICAgfVxuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMubGF6eSAmJiB0aGlzLnJlbW92ZUxhenlMb2FkTGlzdGVuZXIoKTtcbiAgfSxcblxuXG4gIG1ldGhvZHM6IHtcbiAgICBsb2FkSW1hZ2U6IGZ1bmN0aW9uIGxvYWRJbWFnZSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuXG4gICAgICAvLyByZXNldCBzdGF0dXNcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmVycm9yID0gZmFsc2U7XG5cbiAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMuaGFuZGxlTG9hZChlLCBpbWcpO1xuICAgICAgfTtcbiAgICAgIGltZy5vbmVycm9yID0gdGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpO1xuXG4gICAgICAvLyBiaW5kIGh0bWwgYXR0cnNcbiAgICAgIC8vIHNvIGl0IGNhbiBiZWhhdmUgY29uc2lzdGVudGx5XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLiRhdHRycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IF90aGlzLiRhdHRyc1trZXldO1xuICAgICAgICBpbWcuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgICBpbWcuc3JjID0gdGhpcy5zcmM7XG4gICAgfSxcbiAgICBoYW5kbGVMb2FkOiBmdW5jdGlvbiBoYW5kbGVMb2FkKGUsIGltZykge1xuICAgICAgdGhpcy5pbWFnZVdpZHRoID0gaW1nLndpZHRoO1xuICAgICAgdGhpcy5pbWFnZUhlaWdodCA9IGltZy5oZWlnaHQ7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB9LFxuICAgIGhhbmRsZUVycm9yOiBmdW5jdGlvbiBoYW5kbGVFcnJvcihlKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy4kZW1pdCgnZXJyb3InLCBlKTtcbiAgICB9LFxuICAgIGhhbmRsZUxhenlMb2FkOiBmdW5jdGlvbiBoYW5kbGVMYXp5TG9hZCgpIHtcbiAgICAgIGlmIChPYmplY3QoZG9tX1tcImlzSW5Db250YWluZXJcIl0pKHRoaXMuJGVsLCB0aGlzLl9zY3JvbGxDb250YWluZXIpKSB7XG4gICAgICAgIHRoaXMuc2hvdyA9IHRydWU7XG4gICAgICAgIHRoaXMucmVtb3ZlTGF6eUxvYWRMaXN0ZW5lcigpO1xuICAgICAgfVxuICAgIH0sXG4gICAgYWRkTGF6eUxvYWRMaXN0ZW5lcjogZnVuY3Rpb24gYWRkTGF6eUxvYWRMaXN0ZW5lcigpIHtcbiAgICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuXG4gICAgICB2YXIgc2Nyb2xsQ29udGFpbmVyID0gdGhpcy5zY3JvbGxDb250YWluZXI7XG5cbiAgICAgIHZhciBfc2Nyb2xsQ29udGFpbmVyID0gbnVsbDtcblxuICAgICAgaWYgKE9iamVjdCh0eXBlc19bXCJpc0h0bWxFbGVtZW50XCJdKShzY3JvbGxDb250YWluZXIpKSB7XG4gICAgICAgIF9zY3JvbGxDb250YWluZXIgPSBzY3JvbGxDb250YWluZXI7XG4gICAgICB9IGVsc2UgaWYgKE9iamVjdCh0eXBlc19bXCJpc1N0cmluZ1wiXSkoc2Nyb2xsQ29udGFpbmVyKSkge1xuICAgICAgICBfc2Nyb2xsQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzY3JvbGxDb250YWluZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3Njcm9sbENvbnRhaW5lciA9IE9iamVjdChkb21fW1wiZ2V0U2Nyb2xsQ29udGFpbmVyXCJdKSh0aGlzLiRlbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lciA9IF9zY3JvbGxDb250YWluZXI7XG4gICAgICAgIHRoaXMuX2xhenlMb2FkSGFuZGxlciA9IHRocm90dGxlX2RlZmF1bHQoKSgyMDAsIHRoaXMuaGFuZGxlTGF6eUxvYWQpO1xuICAgICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShfc2Nyb2xsQ29udGFpbmVyLCAnc2Nyb2xsJywgdGhpcy5fbGF6eUxvYWRIYW5kbGVyKTtcbiAgICAgICAgdGhpcy5oYW5kbGVMYXp5TG9hZCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3ZlTGF6eUxvYWRMaXN0ZW5lcjogZnVuY3Rpb24gcmVtb3ZlTGF6eUxvYWRMaXN0ZW5lcigpIHtcbiAgICAgIHZhciBfc2Nyb2xsQ29udGFpbmVyID0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyLFxuICAgICAgICAgIF9sYXp5TG9hZEhhbmRsZXIgPSB0aGlzLl9sYXp5TG9hZEhhbmRsZXI7XG5cblxuICAgICAgaWYgKHRoaXMuJGlzU2VydmVyIHx8ICFfc2Nyb2xsQ29udGFpbmVyIHx8ICFfbGF6eUxvYWRIYW5kbGVyKSByZXR1cm47XG5cbiAgICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShfc2Nyb2xsQ29udGFpbmVyLCAnc2Nyb2xsJywgX2xhenlMb2FkSGFuZGxlcik7XG4gICAgICB0aGlzLl9zY3JvbGxDb250YWluZXIgPSBudWxsO1xuICAgICAgdGhpcy5fbGF6eUxvYWRIYW5kbGVyID0gbnVsbDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogc2ltdWxhdGUgb2JqZWN0LWZpdCBiZWhhdmlvciB0byBjb21wYXRpYmxlIHdpdGggSUUxMSBhbmQgb3RoZXIgYnJvd3NlcnMgd2hpY2ggbm90IHN1cHBvcnQgb2JqZWN0LWZpdFxuICAgICAqL1xuICAgIGdldEltYWdlU3R5bGU6IGZ1bmN0aW9uIGdldEltYWdlU3R5bGUoZml0KSB7XG4gICAgICB2YXIgaW1hZ2VXaWR0aCA9IHRoaXMuaW1hZ2VXaWR0aCxcbiAgICAgICAgICBpbWFnZUhlaWdodCA9IHRoaXMuaW1hZ2VIZWlnaHQ7XG4gICAgICB2YXIgXyRlbCA9IHRoaXMuJGVsLFxuICAgICAgICAgIGNvbnRhaW5lcldpZHRoID0gXyRlbC5jbGllbnRXaWR0aCxcbiAgICAgICAgICBjb250YWluZXJIZWlnaHQgPSBfJGVsLmNsaWVudEhlaWdodDtcblxuXG4gICAgICBpZiAoIWltYWdlV2lkdGggfHwgIWltYWdlSGVpZ2h0IHx8ICFjb250YWluZXJXaWR0aCB8fCAhY29udGFpbmVySGVpZ2h0KSByZXR1cm4ge307XG5cbiAgICAgIHZhciBpbWFnZUFzcGVjdFJhdGlvID0gaW1hZ2VXaWR0aCAvIGltYWdlSGVpZ2h0O1xuICAgICAgdmFyIGNvbnRhaW5lckFzcGVjdFJhdGlvID0gY29udGFpbmVyV2lkdGggLyBjb250YWluZXJIZWlnaHQ7XG5cbiAgICAgIGlmIChmaXQgPT09IE9iamVjdEZpdC5TQ0FMRV9ET1dOKSB7XG4gICAgICAgIHZhciBpc1NtYWxsZXIgPSBpbWFnZVdpZHRoIDwgY29udGFpbmVyV2lkdGggJiYgaW1hZ2VIZWlnaHQgPCBjb250YWluZXJIZWlnaHQ7XG4gICAgICAgIGZpdCA9IGlzU21hbGxlciA/IE9iamVjdEZpdC5OT05FIDogT2JqZWN0Rml0LkNPTlRBSU47XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZml0KSB7XG4gICAgICAgIGNhc2UgT2JqZWN0Rml0Lk5PTkU6XG4gICAgICAgICAgcmV0dXJuIHsgd2lkdGg6ICdhdXRvJywgaGVpZ2h0OiAnYXV0bycgfTtcbiAgICAgICAgY2FzZSBPYmplY3RGaXQuQ09OVEFJTjpcbiAgICAgICAgICByZXR1cm4gaW1hZ2VBc3BlY3RSYXRpbyA8IGNvbnRhaW5lckFzcGVjdFJhdGlvID8geyB3aWR0aDogJ2F1dG8nIH0gOiB7IGhlaWdodDogJ2F1dG8nIH07XG4gICAgICAgIGNhc2UgT2JqZWN0Rml0LkNPVkVSOlxuICAgICAgICAgIHJldHVybiBpbWFnZUFzcGVjdFJhdGlvIDwgY29udGFpbmVyQXNwZWN0UmF0aW8gPyB7IGhlaWdodDogJ2F1dG8nIH0gOiB7IHdpZHRoOiAnYXV0bycgfTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGlja0hhbmRsZXI6IGZ1bmN0aW9uIGNsaWNrSGFuZGxlcigpIHtcbiAgICAgIC8vIGRvbid0IHNob3cgdmlld2VyIHdoZW4gcHJldmlldyBpcyBmYWxzZVxuICAgICAgaWYgKCF0aGlzLnByZXZpZXcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gcHJldmVudCBib2R5IHNjcm9sbFxuICAgICAgcHJldk92ZXJmbG93ID0gZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdztcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgIHRoaXMuc2hvd1ZpZXdlciA9IHRydWU7XG4gICAgfSxcbiAgICBjbG9zZVZpZXdlcjogZnVuY3Rpb24gY2xvc2VWaWV3ZXIoKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gcHJldk92ZXJmbG93O1xuICAgICAgdGhpcy5zaG93Vmlld2VyID0gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvaW1hZ2Uvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2ltYWdlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGltYWdlX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2ltYWdlL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGltYWdlX3NyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfaW1hZ2Vfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF80NGQ4NGE3Y19yZW5kZXIsXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF80NGQ4NGE3Y19zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGltYWdlX3NyY19tYWluX2FwaTsgfVxuaW1hZ2Vfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9pbWFnZS9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgaW1hZ2Vfc3JjX21haW4gPSAoaW1hZ2Vfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbWFnZS9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pbWFnZV9zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGltYWdlX3NyY19tYWluLm5hbWUsIGltYWdlX3NyY19tYWluKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2ltYWdlID0gKGltYWdlX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2FsZW5kYXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZkOTc1NmJlJlxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF82ZDk3NTZiZV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1jYWxlbmRhclwiIH0sIFtcbiAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWNhbGVuZGFyX19oZWFkZXJcIiB9LCBbXG4gICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLWNhbGVuZGFyX190aXRsZVwiIH0sIFtcbiAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgXCIgKyBfdm0uX3MoX3ZtLmkxOG5EYXRlKSArIFwiXFxuICAgIFwiKVxuICAgICAgXSksXG4gICAgICBfdm0udmFsaWRhdGVkUmFuZ2UubGVuZ3RoID09PSAwXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1jYWxlbmRhcl9fYnV0dG9uLWdyb3VwXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJlbC1idXR0b24tZ3JvdXBcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJlbC1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwicGxhaW5cIiwgc2l6ZTogXCJtaW5pXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VsZWN0RGF0ZShcInByZXYtbW9udGhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0udChcImVsLmRhdGVwaWNrZXIucHJldk1vbnRoXCIpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImVsLWJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJwbGFpblwiLCBzaXplOiBcIm1pbmlcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3REYXRlKFwidG9kYXlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0udChcImVsLmRhdGVwaWNrZXIudG9kYXlcIikpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZWwtYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcInBsYWluXCIsIHNpemU6IFwibWluaVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNlbGVjdERhdGUoXCJuZXh0LW1vbnRoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLnQoXCJlbC5kYXRlcGlja2VyLm5leHRNb250aFwiKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKClcbiAgICBdKSxcbiAgICBfdm0udmFsaWRhdGVkUmFuZ2UubGVuZ3RoID09PSAwXG4gICAgICA/IF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBrZXk6IFwibm8tcmFuZ2VcIiwgc3RhdGljQ2xhc3M6IFwiZWwtY2FsZW5kYXJfX2JvZHlcIiB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFwiZGF0ZS10YWJsZVwiLCB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgZGF0ZTogX3ZtLmRhdGUsXG4gICAgICAgICAgICAgICAgXCJzZWxlY3RlZC1kYXlcIjogX3ZtLnJlYWxTZWxlY3RlZERheSxcbiAgICAgICAgICAgICAgICBcImZpcnN0LWRheS1vZi13ZWVrXCI6IF92bS5yZWFsRmlyc3REYXlPZldlZWtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb246IHsgcGljazogX3ZtLnBpY2tEYXkgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdLFxuICAgICAgICAgIDFcbiAgICAgICAgKVxuICAgICAgOiBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHsga2V5OiBcImhhcy1yYW5nZVwiLCBzdGF0aWNDbGFzczogXCJlbC1jYWxlbmRhcl9fYm9keVwiIH0sXG4gICAgICAgICAgX3ZtLl9sKF92bS52YWxpZGF0ZWRSYW5nZSwgZnVuY3Rpb24ocmFuZ2UsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gX2MoXCJkYXRlLXRhYmxlXCIsIHtcbiAgICAgICAgICAgICAga2V5OiBpbmRleCxcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBkYXRlOiByYW5nZVswXSxcbiAgICAgICAgICAgICAgICBcInNlbGVjdGVkLWRheVwiOiBfdm0ucmVhbFNlbGVjdGVkRGF5LFxuICAgICAgICAgICAgICAgIHJhbmdlOiByYW5nZSxcbiAgICAgICAgICAgICAgICBcImhpZGUtaGVhZGVyXCI6IGluZGV4ICE9PSAwLFxuICAgICAgICAgICAgICAgIFwiZmlyc3QtZGF5LW9mLXdlZWtcIjogX3ZtLnJlYWxGaXJzdERheU9mV2Vla1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbjogeyBwaWNrOiBfdm0ucGlja0RheSB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIDFcbiAgICAgICAgKVxuICBdKVxufVxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF82ZDk3NTZiZV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxubWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzZkOTc1NmJlX3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FsZW5kYXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZkOTc1NmJlJlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvZGF0ZVwiXG52YXIgZGF0ZV8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcbnZhciBkYXRlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGRhdGVfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2FsZW5kYXIvc3JjL2RhdGUtdGFibGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfZGF0ZV90YWJsZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIHByb3BzOiB7XG4gICAgc2VsZWN0ZWREYXk6IFN0cmluZywgLy8gZm9ybWF0ZWQgZGF0ZSB5eXl5LU1NLWRkXG4gICAgcmFuZ2U6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgIGlmICghKHZhbCAmJiB2YWwubGVuZ3RoKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIHZhciBzdGFydCA9IHZhbFswXSxcbiAgICAgICAgICAgIGVuZCA9IHZhbFsxXTtcblxuICAgICAgICByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJ2YWxpZGF0ZVJhbmdlSW5PbmVNb250aFwiXSkoc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkYXRlOiBEYXRlLFxuICAgIGhpZGVIZWFkZXI6IEJvb2xlYW4sXG4gICAgZmlyc3REYXlPZldlZWs6IE51bWJlclxuICB9LFxuXG4gIGluamVjdDogWydlbENhbGVuZGFyJ10sXG5cbiAgbWV0aG9kczoge1xuICAgIHRvTmVzdGVkQXJyOiBmdW5jdGlvbiB0b05lc3RlZEFycihkYXlzKSB7XG4gICAgICByZXR1cm4gT2JqZWN0KGRhdGVfdXRpbF9bXCJyYW5nZVwiXSkoZGF5cy5sZW5ndGggLyA3KS5tYXAoZnVuY3Rpb24gKF8sIGluZGV4KSB7XG4gICAgICAgIHZhciBzdGFydCA9IGluZGV4ICogNztcbiAgICAgICAgcmV0dXJuIGRheXMuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgNyk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldEZvcm1hdGVEYXRlOiBmdW5jdGlvbiBnZXRGb3JtYXRlRGF0ZShkYXksIHR5cGUpIHtcbiAgICAgIGlmICghZGF5IHx8IFsncHJldicsICdjdXJyZW50JywgJ25leHQnXS5pbmRleE9mKHR5cGUpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZGF5IG9yIHR5cGUnKTtcbiAgICAgIH1cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmN1ck1vbnRoRGF0ZVByZWZpeDtcbiAgICAgIGlmICh0eXBlID09PSAncHJldicpIHtcbiAgICAgICAgcHJlZml4ID0gdGhpcy5wcmV2TW9udGhEYXRlUHJlZml4O1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbmV4dCcpIHtcbiAgICAgICAgcHJlZml4ID0gdGhpcy5uZXh0TW9udGhEYXRlUHJlZml4O1xuICAgICAgfVxuICAgICAgZGF5ID0gKCcwMCcgKyBkYXkpLnNsaWNlKC0yKTtcbiAgICAgIHJldHVybiBwcmVmaXggKyAnLScgKyBkYXk7XG4gICAgfSxcbiAgICBnZXRDZWxsQ2xhc3M6IGZ1bmN0aW9uIGdldENlbGxDbGFzcyhfcmVmKSB7XG4gICAgICB2YXIgdGV4dCA9IF9yZWYudGV4dCxcbiAgICAgICAgICB0eXBlID0gX3JlZi50eXBlO1xuXG4gICAgICB2YXIgY2xhc3NlcyA9IFt0eXBlXTtcbiAgICAgIGlmICh0eXBlID09PSAnY3VycmVudCcpIHtcbiAgICAgICAgdmFyIGRhdGUgPSB0aGlzLmdldEZvcm1hdGVEYXRlKHRleHQsIHR5cGUpO1xuICAgICAgICBpZiAoZGF0ZSA9PT0gdGhpcy5zZWxlY3RlZERheSkge1xuICAgICAgICAgIGNsYXNzZXMucHVzaCgnaXMtc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0ZSA9PT0gdGhpcy5mb3JtYXRlZFRvZGF5KSB7XG4gICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpcy10b2RheScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9LFxuICAgIHBpY2tEYXk6IGZ1bmN0aW9uIHBpY2tEYXkoX3JlZjIpIHtcbiAgICAgIHZhciB0ZXh0ID0gX3JlZjIudGV4dCxcbiAgICAgICAgICB0eXBlID0gX3JlZjIudHlwZTtcblxuICAgICAgdmFyIGRhdGUgPSB0aGlzLmdldEZvcm1hdGVEYXRlKHRleHQsIHR5cGUpO1xuICAgICAgdGhpcy4kZW1pdCgncGljaycsIGRhdGUpO1xuICAgIH0sXG4gICAgY2VsbFJlbmRlclByb3h5OiBmdW5jdGlvbiBjZWxsUmVuZGVyUHJveHkoX3JlZjMpIHtcbiAgICAgIHZhciB0ZXh0ID0gX3JlZjMudGV4dCxcbiAgICAgICAgICB0eXBlID0gX3JlZjMudHlwZTtcbiAgICAgIHZhciBoID0gdGhpcy4kY3JlYXRlRWxlbWVudDtcblxuICAgICAgdmFyIHJlbmRlciA9IHRoaXMuZWxDYWxlbmRhci4kc2NvcGVkU2xvdHMuZGF0ZUNlbGw7XG4gICAgICBpZiAoIXJlbmRlcikgcmV0dXJuIGgoJ3NwYW4nLCBbdGV4dF0pO1xuXG4gICAgICB2YXIgZGF5ID0gdGhpcy5nZXRGb3JtYXRlRGF0ZSh0ZXh0LCB0eXBlKTtcbiAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoZGF5KTtcbiAgICAgIHZhciBkYXRhID0ge1xuICAgICAgICBpc1NlbGVjdGVkOiB0aGlzLnNlbGVjdGVkRGF5ID09PSBkYXksXG4gICAgICAgIHR5cGU6IHR5cGUgKyAnLW1vbnRoJyxcbiAgICAgICAgZGF5OiBkYXlcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHsgZGF0ZTogZGF0ZSwgZGF0YTogZGF0YSB9KTtcbiAgICB9XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBXRUVLX0RBWVM6IGZ1bmN0aW9uIFdFRUtfREFZUygpIHtcbiAgICAgIHJldHVybiBPYmplY3QoZGF0ZV91dGlsX1tcImdldEkxOG5TZXR0aW5nc1wiXSkoKS5kYXlOYW1lcztcbiAgICB9LFxuICAgIHByZXZNb250aERhdGVQcmVmaXg6IGZ1bmN0aW9uIHByZXZNb250aERhdGVQcmVmaXgoKSB7XG4gICAgICB2YXIgdGVtcCA9IG5ldyBEYXRlKHRoaXMuZGF0ZS5nZXRUaW1lKCkpO1xuICAgICAgdGVtcC5zZXREYXRlKDApO1xuICAgICAgcmV0dXJuIGRhdGVfZGVmYXVsdC5hLmZvcm1hdCh0ZW1wLCAneXl5eS1NTScpO1xuICAgIH0sXG4gICAgY3VyTW9udGhEYXRlUHJlZml4OiBmdW5jdGlvbiBjdXJNb250aERhdGVQcmVmaXgoKSB7XG4gICAgICByZXR1cm4gZGF0ZV9kZWZhdWx0LmEuZm9ybWF0KHRoaXMuZGF0ZSwgJ3l5eXktTU0nKTtcbiAgICB9LFxuICAgIG5leHRNb250aERhdGVQcmVmaXg6IGZ1bmN0aW9uIG5leHRNb250aERhdGVQcmVmaXgoKSB7XG4gICAgICB2YXIgdGVtcCA9IG5ldyBEYXRlKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLmRhdGUuZ2V0TW9udGgoKSArIDEsIDEpO1xuICAgICAgcmV0dXJuIGRhdGVfZGVmYXVsdC5hLmZvcm1hdCh0ZW1wLCAneXl5eS1NTScpO1xuICAgIH0sXG4gICAgZm9ybWF0ZWRUb2RheTogZnVuY3Rpb24gZm9ybWF0ZWRUb2RheSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmVsQ2FsZW5kYXIuZm9ybWF0ZWRUb2RheTtcbiAgICB9LFxuICAgIGlzSW5SYW5nZTogZnVuY3Rpb24gaXNJblJhbmdlKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmFuZ2UgJiYgdGhpcy5yYW5nZS5sZW5ndGg7XG4gICAgfSxcbiAgICByb3dzOiBmdW5jdGlvbiByb3dzKCkge1xuICAgICAgdmFyIGRheXMgPSBbXTtcbiAgICAgIC8vIGlmIHJhbmdlIGV4aXN0cywgc2hvdWxkIHJlbmRlciBkYXlzIGluIHJhbmdlLlxuICAgICAgaWYgKHRoaXMuaXNJblJhbmdlKSB7XG4gICAgICAgIHZhciBfcmFuZ2UgPSB0aGlzLnJhbmdlLFxuICAgICAgICAgICAgc3RhcnQgPSBfcmFuZ2VbMF0sXG4gICAgICAgICAgICBlbmQgPSBfcmFuZ2VbMV07XG5cbiAgICAgICAgdmFyIGN1cnJlbnRNb250aFJhbmdlID0gT2JqZWN0KGRhdGVfdXRpbF9bXCJyYW5nZVwiXSkoZW5kLmdldERhdGUoKSAtIHN0YXJ0LmdldERhdGUoKSArIDEpLm1hcChmdW5jdGlvbiAoXywgaW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dDogc3RhcnQuZ2V0RGF0ZSgpICsgaW5kZXgsXG4gICAgICAgICAgICB0eXBlOiAnY3VycmVudCdcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlbWFpbmluZyA9IGN1cnJlbnRNb250aFJhbmdlLmxlbmd0aCAlIDc7XG4gICAgICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZyA9PT0gMCA/IDAgOiA3IC0gcmVtYWluaW5nO1xuICAgICAgICB2YXIgbmV4dE1vbnRoUmFuZ2UgPSBPYmplY3QoZGF0ZV91dGlsX1tcInJhbmdlXCJdKShyZW1haW5pbmcpLm1hcChmdW5jdGlvbiAoXywgaW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dDogaW5kZXggKyAxLFxuICAgICAgICAgICAgdHlwZTogJ25leHQnXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRheXMgPSBjdXJyZW50TW9udGhSYW5nZS5jb25jYXQobmV4dE1vbnRoUmFuZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGRhdGUgPSB0aGlzLmRhdGU7XG4gICAgICAgIHZhciBmaXJzdERheSA9IE9iamVjdChkYXRlX3V0aWxfW1wiZ2V0Rmlyc3REYXlPZk1vbnRoXCJdKShkYXRlKTtcbiAgICAgICAgZmlyc3REYXkgPSBmaXJzdERheSA9PT0gMCA/IDcgOiBmaXJzdERheTtcbiAgICAgICAgdmFyIGZpcnN0RGF5T2ZXZWVrID0gdHlwZW9mIHRoaXMuZmlyc3REYXlPZldlZWsgPT09ICdudW1iZXInID8gdGhpcy5maXJzdERheU9mV2VlayA6IDE7XG4gICAgICAgIHZhciBvZmZzZXQgPSAoNyArIGZpcnN0RGF5IC0gZmlyc3REYXlPZldlZWspICUgNztcbiAgICAgICAgdmFyIHByZXZNb250aERheXMgPSBPYmplY3QoZGF0ZV91dGlsX1tcImdldFByZXZNb250aExhc3REYXlzXCJdKShkYXRlLCBvZmZzZXQpLm1hcChmdW5jdGlvbiAoZGF5KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRleHQ6IGRheSxcbiAgICAgICAgICAgIHR5cGU6ICdwcmV2J1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY3VycmVudE1vbnRoRGF5cyA9IE9iamVjdChkYXRlX3V0aWxfW1wiZ2V0TW9udGhEYXlzXCJdKShkYXRlKS5tYXAoZnVuY3Rpb24gKGRheSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0OiBkYXksXG4gICAgICAgICAgICB0eXBlOiAnY3VycmVudCdcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgZGF5cyA9IFtdLmNvbmNhdChwcmV2TW9udGhEYXlzLCBjdXJyZW50TW9udGhEYXlzKTtcbiAgICAgICAgdmFyIG5leHRNb250aERheXMgPSBPYmplY3QoZGF0ZV91dGlsX1tcInJhbmdlXCJdKSg0MiAtIGRheXMubGVuZ3RoKS5tYXAoZnVuY3Rpb24gKF8sIGluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRleHQ6IGluZGV4ICsgMSxcbiAgICAgICAgICAgIHR5cGU6ICduZXh0J1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICBkYXlzID0gZGF5cy5jb25jYXQobmV4dE1vbnRoRGF5cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50b05lc3RlZEFycihkYXlzKTtcbiAgICB9LFxuICAgIHdlZWtEYXlzOiBmdW5jdGlvbiB3ZWVrRGF5cygpIHtcbiAgICAgIHZhciBzdGFydCA9IHRoaXMuZmlyc3REYXlPZldlZWs7XG4gICAgICB2YXIgV0VFS19EQVlTID0gdGhpcy5XRUVLX0RBWVM7XG5cblxuICAgICAgaWYgKHR5cGVvZiBzdGFydCAhPT0gJ251bWJlcicgfHwgc3RhcnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFdFRUtfREFZUy5zbGljZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFdFRUtfREFZUy5zbGljZShzdGFydCkuY29uY2F0KFdFRUtfREFZUy5zbGljZSgwLCBzdGFydCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGggPSBhcmd1bWVudHNbMF07XG5cbiAgICB2YXIgdGhlYWQgPSB0aGlzLmhpZGVIZWFkZXIgPyBudWxsIDogaCgndGhlYWQnLCBbdGhpcy53ZWVrRGF5cy5tYXAoZnVuY3Rpb24gKGRheSkge1xuICAgICAgcmV0dXJuIGgoXG4gICAgICAgICd0aCcsXG4gICAgICAgIHsga2V5OiBkYXkgfSxcbiAgICAgICAgW2RheV1cbiAgICAgICk7XG4gICAgfSldKTtcbiAgICByZXR1cm4gaChcbiAgICAgICd0YWJsZScsXG4gICAgICB7XG4gICAgICAgICdjbGFzcyc6IHtcbiAgICAgICAgICAnZWwtY2FsZW5kYXItdGFibGUnOiB0cnVlLFxuICAgICAgICAgICdpcy1yYW5nZSc6IHRoaXMuaXNJblJhbmdlXG4gICAgICAgIH0sXG4gICAgICAgIGF0dHJzOiB7IGNlbGxzcGFjaW5nOiAnMCcsXG4gICAgICAgICAgY2VsbHBhZGRpbmc6ICcwJyB9XG4gICAgICB9LFxuICAgICAgW3RoZWFkLCBoKCd0Ym9keScsIFt0aGlzLnJvd3MubWFwKGZ1bmN0aW9uIChyb3csIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBoKFxuICAgICAgICAgICd0cicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ2NsYXNzJzoge1xuICAgICAgICAgICAgICAnZWwtY2FsZW5kYXItdGFibGVfX3Jvdyc6IHRydWUsXG4gICAgICAgICAgICAgICdlbC1jYWxlbmRhci10YWJsZV9fcm93LS1oaWRlLWJvcmRlcic6IGluZGV4ID09PSAwICYmIF90aGlzLmhpZGVIZWFkZXJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBrZXk6IGluZGV4IH0sXG4gICAgICAgICAgW3Jvdy5tYXAoZnVuY3Rpb24gKGNlbGwsIGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGgoXG4gICAgICAgICAgICAgICd0ZCcsXG4gICAgICAgICAgICAgIHsga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgJ2NsYXNzJzogX3RoaXMuZ2V0Q2VsbENsYXNzKGNlbGwpLFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAnY2xpY2snOiBfdGhpcy5waWNrRGF5LmJpbmQoX3RoaXMsIGNlbGwpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbaChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICB7ICdjbGFzcyc6ICdlbC1jYWxlbmRhci1kYXknIH0sXG4gICAgICAgICAgICAgICAgW190aGlzLmNlbGxSZW5kZXJQcm94eShjZWxsKV1cbiAgICAgICAgICAgICAgKV1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSldXG4gICAgICAgICk7XG4gICAgICB9KV0pXVxuICAgICk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYWxlbmRhci9zcmMvZGF0ZS10YWJsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2FsZW5kYXJfc3JjX2RhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoc3JjX2RhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FsZW5kYXIvc3JjL2RhdGUtdGFibGUudnVlXG52YXIgZGF0ZV90YWJsZV9yZW5kZXIsIGRhdGVfdGFibGVfc3RhdGljUmVuZGVyRm5zXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHNyY19kYXRlX3RhYmxlX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgY2FsZW5kYXJfc3JjX2RhdGVfdGFibGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGRhdGVfdGFibGVfcmVuZGVyLFxuICBkYXRlX3RhYmxlX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgc3JjX2RhdGVfdGFibGVfYXBpOyB9XG5zcmNfZGF0ZV90YWJsZV9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2NhbGVuZGFyL3NyYy9kYXRlLXRhYmxlLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfZGF0ZV90YWJsZSA9IChzcmNfZGF0ZV90YWJsZV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jYWxlbmRhci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cbnZhciB2YWxpZFR5cGVzID0gWydwcmV2LW1vbnRoJywgJ3RvZGF5JywgJ25leHQtbW9udGgnXTtcbnZhciB3ZWVrRGF5cyA9IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXTtcbnZhciBvbmVEYXkgPSA4NjQwMDAwMDtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2FsZW5kYXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxDYWxlbmRhcicsXG5cbiAgbWl4aW5zOiBbbG9jYWxlX2RlZmF1bHQuYV0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIERhdGVUYWJsZTogc3JjX2RhdGVfdGFibGUsXG4gICAgRWxCdXR0b246IGJ1dHRvbl9kZWZhdWx0LmEsXG4gICAgRWxCdXR0b25Hcm91cDogYnV0dG9uX2dyb3VwX2RlZmF1bHQuYVxuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IFtEYXRlLCBTdHJpbmcsIE51bWJlcl0sXG4gICAgcmFuZ2U6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IocmFuZ2UpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmFuZ2UpKSB7XG4gICAgICAgICAgcmV0dXJuIHJhbmdlLmxlbmd0aCA9PT0gMiAmJiByYW5nZS5ldmVyeShmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgfHwgaXRlbSBpbnN0YW5jZW9mIERhdGU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGZpcnN0RGF5T2ZXZWVrOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAxXG4gICAgfVxuICB9LFxuXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVsQ2FsZW5kYXI6IHRoaXNcbiAgICB9O1xuICB9LFxuXG5cbiAgbWV0aG9kczoge1xuICAgIHBpY2tEYXk6IGZ1bmN0aW9uIHBpY2tEYXkoZGF5KSB7XG4gICAgICB0aGlzLnJlYWxTZWxlY3RlZERheSA9IGRheTtcbiAgICB9LFxuICAgIHNlbGVjdERhdGU6IGZ1bmN0aW9uIHNlbGVjdERhdGUodHlwZSkge1xuICAgICAgaWYgKHZhbGlkVHlwZXMuaW5kZXhPZih0eXBlKSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHR5cGUgJyArIHR5cGUpO1xuICAgICAgfVxuICAgICAgdmFyIGRheSA9ICcnO1xuICAgICAgaWYgKHR5cGUgPT09ICdwcmV2LW1vbnRoJykge1xuICAgICAgICBkYXkgPSB0aGlzLnByZXZNb250aERhdGVQcmVmaXggKyAnLTAxJztcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ25leHQtbW9udGgnKSB7XG4gICAgICAgIGRheSA9IHRoaXMubmV4dE1vbnRoRGF0ZVByZWZpeCArICctMDEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF5ID0gdGhpcy5mb3JtYXRlZFRvZGF5O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF5ID09PSB0aGlzLmZvcm1hdGVkRGF0ZSkgcmV0dXJuO1xuICAgICAgdGhpcy5waWNrRGF5KGRheSk7XG4gICAgfSxcbiAgICB0b0RhdGU6IGZ1bmN0aW9uIHRvRGF0ZSh2YWwpIHtcbiAgICAgIGlmICghdmFsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB2YWwnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlID8gdmFsIDogbmV3IERhdGUodmFsKTtcbiAgICB9LFxuICAgIHJhbmdlVmFsaWRhdG9yOiBmdW5jdGlvbiByYW5nZVZhbGlkYXRvcihkYXRlLCBpc1N0YXJ0KSB7XG4gICAgICB2YXIgZmlyc3REYXlPZldlZWsgPSB0aGlzLnJlYWxGaXJzdERheU9mV2VlaztcbiAgICAgIHZhciBleHBlY3RlZCA9IGlzU3RhcnQgPyBmaXJzdERheU9mV2VlayA6IGZpcnN0RGF5T2ZXZWVrID09PSAwID8gNiA6IGZpcnN0RGF5T2ZXZWVrIC0gMTtcbiAgICAgIHZhciBtZXNzYWdlID0gKGlzU3RhcnQgPyAnc3RhcnQnIDogJ2VuZCcpICsgJyBvZiByYW5nZSBzaG91bGQgYmUgJyArIHdlZWtEYXlzW2V4cGVjdGVkXSArICcuJztcbiAgICAgIGlmIChkYXRlLmdldERheSgpICE9PSBleHBlY3RlZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tFbGVtZW50Q2FsZW5kYXJdJywgbWVzc2FnZSwgJ0ludmFsaWQgcmFuZ2Ugd2lsbCBiZSBpZ25vcmVkLicpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBwcmV2TW9udGhEYXRlUHJlZml4OiBmdW5jdGlvbiBwcmV2TW9udGhEYXRlUHJlZml4KCkge1xuICAgICAgdmFyIHRlbXAgPSBuZXcgRGF0ZSh0aGlzLmRhdGUuZ2V0VGltZSgpKTtcbiAgICAgIHRlbXAuc2V0RGF0ZSgwKTtcbiAgICAgIHJldHVybiBkYXRlX2RlZmF1bHQuYS5mb3JtYXQodGVtcCwgJ3l5eXktTU0nKTtcbiAgICB9LFxuICAgIGN1ck1vbnRoRGF0ZVByZWZpeDogZnVuY3Rpb24gY3VyTW9udGhEYXRlUHJlZml4KCkge1xuICAgICAgcmV0dXJuIGRhdGVfZGVmYXVsdC5hLmZvcm1hdCh0aGlzLmRhdGUsICd5eXl5LU1NJyk7XG4gICAgfSxcbiAgICBuZXh0TW9udGhEYXRlUHJlZml4OiBmdW5jdGlvbiBuZXh0TW9udGhEYXRlUHJlZml4KCkge1xuICAgICAgdmFyIHRlbXAgPSBuZXcgRGF0ZSh0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSwgdGhpcy5kYXRlLmdldE1vbnRoKCkgKyAxLCAxKTtcbiAgICAgIHJldHVybiBkYXRlX2RlZmF1bHQuYS5mb3JtYXQodGVtcCwgJ3l5eXktTU0nKTtcbiAgICB9LFxuICAgIGZvcm1hdGVkRGF0ZTogZnVuY3Rpb24gZm9ybWF0ZWREYXRlKCkge1xuICAgICAgcmV0dXJuIGRhdGVfZGVmYXVsdC5hLmZvcm1hdCh0aGlzLmRhdGUsICd5eXl5LU1NLWRkJyk7XG4gICAgfSxcbiAgICBpMThuRGF0ZTogZnVuY3Rpb24gaTE4bkRhdGUoKSB7XG4gICAgICB2YXIgeWVhciA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgdmFyIG1vbnRoID0gdGhpcy5kYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgICAgcmV0dXJuIHllYXIgKyAnICcgKyB0aGlzLnQoJ2VsLmRhdGVwaWNrZXIueWVhcicpICsgJyAnICsgdGhpcy50KCdlbC5kYXRlcGlja2VyLm1vbnRoJyArIG1vbnRoKTtcbiAgICB9LFxuICAgIGZvcm1hdGVkVG9kYXk6IGZ1bmN0aW9uIGZvcm1hdGVkVG9kYXkoKSB7XG4gICAgICByZXR1cm4gZGF0ZV9kZWZhdWx0LmEuZm9ybWF0KHRoaXMubm93LCAneXl5eS1NTS1kZCcpO1xuICAgIH0sXG5cblxuICAgIHJlYWxTZWxlY3RlZERheToge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXk7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdGVkRGF0ZTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERheSA9IHZhbDtcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIGRhdGUpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBkYXRlOiBmdW5jdGlvbiBkYXRlKCkge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWxTZWxlY3RlZERheSkge1xuICAgICAgICAgIHZhciBkID0gdGhpcy5zZWxlY3RlZERheS5zcGxpdCgnLScpO1xuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShkWzBdLCBkWzFdIC0gMSwgZFsyXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52YWxpZGF0ZWRSYW5nZS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZWRSYW5nZVswXVswXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ub3c7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcblxuXG4gICAgLy8gaWYgcmFuZ2UgaXMgdmFsaWQsIHdlIGdldCBhIHR3by1kaWdpdCBhcnJheVxuICAgIHZhbGlkYXRlZFJhbmdlOiBmdW5jdGlvbiB2YWxpZGF0ZWRSYW5nZSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciByYW5nZSA9IHRoaXMucmFuZ2U7XG4gICAgICBpZiAoIXJhbmdlKSByZXR1cm4gW107XG4gICAgICByYW5nZSA9IHJhbmdlLnJlZHVjZShmdW5jdGlvbiAocHJldiwgdmFsLCBpbmRleCkge1xuICAgICAgICB2YXIgZGF0ZSA9IF90aGlzLnRvRGF0ZSh2YWwpO1xuICAgICAgICBpZiAoX3RoaXMucmFuZ2VWYWxpZGF0b3IoZGF0ZSwgaW5kZXggPT09IDApKSB7XG4gICAgICAgICAgcHJldiA9IHByZXYuY29uY2F0KGRhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSwgW10pO1xuICAgICAgaWYgKHJhbmdlLmxlbmd0aCA9PT0gMikge1xuICAgICAgICB2YXIgX3JhbmdlID0gcmFuZ2UsXG4gICAgICAgICAgICBzdGFydCA9IF9yYW5nZVswXSxcbiAgICAgICAgICAgIGVuZCA9IF9yYW5nZVsxXTtcblxuICAgICAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tFbGVtZW50Q2FsZW5kYXJdZW5kIHRpbWUgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBzdGFydCB0aW1lJyk7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YXJ0IHRpbWUgYW5kIGVuZCB0aW1lIGluIG9uZSBtb250aFxuICAgICAgICBpZiAoT2JqZWN0KGRhdGVfdXRpbF9bXCJ2YWxpZGF0ZVJhbmdlSW5PbmVNb250aFwiXSkoc3RhcnQsIGVuZCkpIHtcbiAgICAgICAgICByZXR1cm4gW1tzdGFydCwgZW5kXV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRhdGEgPSBbXTtcbiAgICAgICAgdmFyIHN0YXJ0RGF5ID0gbmV3IERhdGUoc3RhcnQuZ2V0RnVsbFllYXIoKSwgc3RhcnQuZ2V0TW9udGgoKSArIDEsIDEpO1xuICAgICAgICB2YXIgbGFzdERheSA9IHRoaXMudG9EYXRlKHN0YXJ0RGF5LmdldFRpbWUoKSAtIG9uZURheSk7XG4gICAgICAgIGlmICghT2JqZWN0KGRhdGVfdXRpbF9bXCJ2YWxpZGF0ZVJhbmdlSW5PbmVNb250aFwiXSkoc3RhcnREYXksIGVuZCkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tFbGVtZW50Q2FsZW5kYXJdc3RhcnQgdGltZSBhbmQgZW5kIHRpbWUgaW50ZXJ2YWwgbXVzdCBub3QgZXhjZWVkIHR3byBtb250aHMnKTtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8g56ys5LiA5Liq5pyI55qE5pe26Ze06IyD5Zu0XG4gICAgICAgIGRhdGEucHVzaChbc3RhcnQsIGxhc3REYXldKTtcbiAgICAgICAgLy8g5LiL5LiA5pyI55qE5pe26Ze06IyD5Zu077yM6ZyA6KaB6K6h566X5LiA5LiL6K+l5pyI55qE56ys5LiA5Liq5ZGo6LW35aeL5pelXG4gICAgICAgIHZhciBmaXJzdERheU9mV2VlayA9IHRoaXMucmVhbEZpcnN0RGF5T2ZXZWVrO1xuICAgICAgICB2YXIgbmV4dE1vbnRGaXJzdERheSA9IHN0YXJ0RGF5LmdldERheSgpO1xuICAgICAgICB2YXIgaW50ZXJ2YWwgPSAwO1xuICAgICAgICBpZiAobmV4dE1vbnRGaXJzdERheSAhPT0gZmlyc3REYXlPZldlZWspIHtcbiAgICAgICAgICBpZiAoZmlyc3REYXlPZldlZWsgPT09IDApIHtcbiAgICAgICAgICAgIGludGVydmFsID0gNyAtIG5leHRNb250Rmlyc3REYXk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGludGVydmFsID0gZmlyc3REYXlPZldlZWsgLSBuZXh0TW9udEZpcnN0RGF5O1xuICAgICAgICAgICAgaW50ZXJ2YWwgPSBpbnRlcnZhbCA+IDAgPyBpbnRlcnZhbCA6IDcgKyBpbnRlcnZhbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnREYXkgPSB0aGlzLnRvRGF0ZShzdGFydERheS5nZXRUaW1lKCkgKyBpbnRlcnZhbCAqIG9uZURheSk7XG4gICAgICAgIGlmIChzdGFydERheS5nZXREYXRlKCkgPCBlbmQuZ2V0RGF0ZSgpKSB7XG4gICAgICAgICAgZGF0YS5wdXNoKFtzdGFydERheSwgZW5kXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG4gICAgICByZXR1cm4gW107XG4gICAgfSxcbiAgICByZWFsRmlyc3REYXlPZldlZWs6IGZ1bmN0aW9uIHJlYWxGaXJzdERheU9mV2VlaygpIHtcbiAgICAgIGlmICh0aGlzLmZpcnN0RGF5T2ZXZWVrIDwgMSB8fCB0aGlzLmZpcnN0RGF5T2ZXZWVrID4gNikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMuZmlyc3REYXlPZldlZWspO1xuICAgIH1cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3RlZERheTogJycsXG4gICAgICBub3c6IG5ldyBEYXRlKClcbiAgICB9O1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FsZW5kYXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2NhbGVuZGFyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGNhbGVuZGFyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2NhbGVuZGFyL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNhbGVuZGFyX3NyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfY2FsZW5kYXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF82ZDk3NTZiZV9yZW5kZXIsXG4gIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF82ZDk3NTZiZV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGNhbGVuZGFyX3NyY19tYWluX2FwaTsgfVxuY2FsZW5kYXJfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9jYWxlbmRhci9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgY2FsZW5kYXJfc3JjX21haW4gPSAoY2FsZW5kYXJfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYWxlbmRhci9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jYWxlbmRhcl9zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGNhbGVuZGFyX3NyY19tYWluLm5hbWUsIGNhbGVuZGFyX3NyY19tYWluKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNhbGVuZGFyID0gKGNhbGVuZGFyX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvYmFja3RvcC9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjU3ZGQ0YTkmXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzI1N2RkNGE5X3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcInRyYW5zaXRpb25cIiwgeyBhdHRyczogeyBuYW1lOiBcImVsLWZhZGUtaW5cIiB9IH0sIFtcbiAgICBfdm0udmlzaWJsZVxuICAgICAgPyBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWJhY2t0b3BcIixcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgIHJpZ2h0OiBfdm0uc3R5bGVSaWdodCxcbiAgICAgICAgICAgICAgYm90dG9tOiBfdm0uc3R5bGVCb3R0b21cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgcmV0dXJuIF92bS5oYW5kbGVDbGljaygkZXZlbnQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF92bS5fdChcImRlZmF1bHRcIiwgW19jKFwiZWwtaWNvblwiLCB7IGF0dHJzOiB7IG5hbWU6IFwiY2FyZXQtdG9wXCIgfSB9KV0pXG4gICAgICAgICAgXSxcbiAgICAgICAgICAyXG4gICAgICAgIClcbiAgICAgIDogX3ZtLl9lKClcbiAgXSlcbn1cbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMjU3ZGQ0YTlfc3RhdGljUmVuZGVyRm5zID0gW11cbm1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF8yNTdkZDRhOV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2JhY2t0b3Avc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI1N2RkNGE5JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9iYWNrdG9wL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxudmFyIGN1YmljID0gZnVuY3Rpb24gY3ViaWModmFsdWUpIHtcbiAgcmV0dXJuIE1hdGgucG93KHZhbHVlLCAzKTtcbn07XG52YXIgZWFzZUluT3V0Q3ViaWMgPSBmdW5jdGlvbiBlYXNlSW5PdXRDdWJpYyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPCAwLjUgPyBjdWJpYyh2YWx1ZSAqIDIpIC8gMiA6IDEgLSBjdWJpYygoMSAtIHZhbHVlKSAqIDIpIC8gMjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJhY2t0b3Bfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxCYWNrdG9wJyxcblxuICBwcm9wczoge1xuICAgIHZpc2liaWxpdHlIZWlnaHQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDIwMFxuICAgIH0sXG4gICAgdGFyZ2V0OiBbU3RyaW5nXSxcbiAgICByaWdodDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogNDBcbiAgICB9LFxuICAgIGJvdHRvbToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogNDBcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZWw6IG51bGwsXG4gICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICB2aXNpYmxlOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIHN0eWxlQm90dG9tOiBmdW5jdGlvbiBzdHlsZUJvdHRvbSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmJvdHRvbSArICdweCc7XG4gICAgfSxcbiAgICBzdHlsZVJpZ2h0OiBmdW5jdGlvbiBzdHlsZVJpZ2h0KCkge1xuICAgICAgcmV0dXJuIHRoaXMucmlnaHQgKyAncHgnO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMudGhyb3R0bGVkU2Nyb2xsSGFuZGxlciA9IHRocm90dGxlX2RlZmF1bHQoKSgzMDAsIHRoaXMub25TY3JvbGwpO1xuICAgIHRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMudGhyb3R0bGVkU2Nyb2xsSGFuZGxlcik7XG4gIH0sXG5cblxuICBtZXRob2RzOiB7XG4gICAgaW5pdDogZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyID0gZG9jdW1lbnQ7XG4gICAgICB0aGlzLmVsID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgIHRoaXMuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMudGFyZ2V0KTtcbiAgICAgICAgaWYgKCF0aGlzLmVsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0YXJnZXQgaXMgbm90IGV4aXN0ZWQ6ICcgKyB0aGlzLnRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250YWluZXIgPSB0aGlzLmVsO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25TY3JvbGw6IGZ1bmN0aW9uIG9uU2Nyb2xsKCkge1xuICAgICAgdmFyIHNjcm9sbFRvcCA9IHRoaXMuZWwuc2Nyb2xsVG9wO1xuICAgICAgdGhpcy52aXNpYmxlID0gc2Nyb2xsVG9wID49IHRoaXMudmlzaWJpbGl0eUhlaWdodDtcbiAgICB9LFxuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljayhlKSB7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICB0aGlzLiRlbWl0KCdjbGljaycsIGUpO1xuICAgIH0sXG4gICAgc2Nyb2xsVG9Ub3A6IGZ1bmN0aW9uIHNjcm9sbFRvVG9wKCkge1xuICAgICAgdmFyIGVsID0gdGhpcy5lbDtcbiAgICAgIHZhciBiZWdpblRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgdmFyIGJlZ2luVmFsdWUgPSBlbC5zY3JvbGxUb3A7XG4gICAgICB2YXIgckFGID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCBmdW5jdGlvbiAoZnVuYykge1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW5jLCAxNik7XG4gICAgICB9O1xuICAgICAgdmFyIGZyYW1lRnVuYyA9IGZ1bmN0aW9uIGZyYW1lRnVuYygpIHtcbiAgICAgICAgdmFyIHByb2dyZXNzID0gKERhdGUubm93KCkgLSBiZWdpblRpbWUpIC8gNTAwO1xuICAgICAgICBpZiAocHJvZ3Jlc3MgPCAxKSB7XG4gICAgICAgICAgZWwuc2Nyb2xsVG9wID0gYmVnaW5WYWx1ZSAqICgxIC0gZWFzZUluT3V0Q3ViaWMocHJvZ3Jlc3MpKTtcbiAgICAgICAgICByQUYoZnJhbWVGdW5jKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgckFGKGZyYW1lRnVuYyk7XG4gICAgfVxuICB9LFxuXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgdGhpcy5jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy50aHJvdHRsZWRTY3JvbGxIYW5kbGVyKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2JhY2t0b3Avc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2JhY2t0b3Bfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoYmFja3RvcF9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9iYWNrdG9wL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGJhY2t0b3Bfc3JjX21haW5fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19iYWNrdG9wX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMjU3ZGQ0YTlfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMjU3ZGQ0YTlfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBiYWNrdG9wX3NyY19tYWluX2FwaTsgfVxuYmFja3RvcF9zcmNfbWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2JhY2t0b3Avc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGJhY2t0b3Bfc3JjX21haW4gPSAoYmFja3RvcF9zcmNfbWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2JhY2t0b3AvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuYmFja3RvcF9zcmNfbWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGJhY2t0b3Bfc3JjX21haW4ubmFtZSwgYmFja3RvcF9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBiYWNrdG9wID0gKGJhY2t0b3Bfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbmZpbml0ZS1zY3JvbGwvc3JjL21haW4uanNcblxuXG5cblxudmFyIGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eSA9IGZ1bmN0aW9uIGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSkge1xuICBpZiAoZWxlbWVudCA9PT0gd2luZG93KSB7XG4gICAgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgfVxuXG4gIGlmIChlbGVtZW50Lm5vZGVUeXBlICE9PSAxKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIC8vIE5PVEU6IDEgRE9NIGFjY2VzcyBoZXJlXG4gIHZhciBjc3MgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCBudWxsKTtcbiAgcmV0dXJuIHByb3BlcnR5ID8gY3NzW3Byb3BlcnR5XSA6IGNzcztcbn07XG5cbnZhciBlbnRyaWVzID0gZnVuY3Rpb24gZW50cmllcyhvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaiB8fCB7fSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gW2tleSwgb2JqW2tleV1dO1xuICB9KTtcbn07XG5cbnZhciBnZXRQb3NpdGlvblNpemUgPSBmdW5jdGlvbiBnZXRQb3NpdGlvblNpemUoZWwsIHByb3ApIHtcbiAgcmV0dXJuIGVsID09PSB3aW5kb3cgfHwgZWwgPT09IGRvY3VtZW50ID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W3Byb3BdIDogZWxbcHJvcF07XG59O1xuXG52YXIgZ2V0T2Zmc2V0SGVpZ2h0ID0gZnVuY3Rpb24gZ2V0T2Zmc2V0SGVpZ2h0KGVsKSB7XG4gIHJldHVybiBnZXRQb3NpdGlvblNpemUoZWwsICdvZmZzZXRIZWlnaHQnKTtcbn07XG5cbnZhciBnZXRDbGllbnRIZWlnaHQgPSBmdW5jdGlvbiBnZXRDbGllbnRIZWlnaHQoZWwpIHtcbiAgcmV0dXJuIGdldFBvc2l0aW9uU2l6ZShlbCwgJ2NsaWVudEhlaWdodCcpO1xufTtcblxudmFyIHNjb3BlID0gJ0VsSW5maW5pdGVTY3JvbGwnO1xudmFyIGF0dHJpYnV0ZXMgPSB7XG4gIGRlbGF5OiB7XG4gICAgdHlwZTogTnVtYmVyLFxuICAgIGRlZmF1bHQ6IDIwMFxuICB9LFxuICBkaXN0YW5jZToge1xuICAgIHR5cGU6IE51bWJlcixcbiAgICBkZWZhdWx0OiAwXG4gIH0sXG4gIGRpc2FibGVkOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBpbW1lZGlhdGU6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IHRydWVcbiAgfVxufTtcblxudmFyIG1haW5fZ2V0U2Nyb2xsT3B0aW9ucyA9IGZ1bmN0aW9uIGdldFNjcm9sbE9wdGlvbnMoZWwsIHZtKSB7XG4gIGlmICghT2JqZWN0KHR5cGVzX1tcImlzSHRtbEVsZW1lbnRcIl0pKGVsKSkgcmV0dXJuIHt9O1xuXG4gIHJldHVybiBlbnRyaWVzKGF0dHJpYnV0ZXMpLnJlZHVjZShmdW5jdGlvbiAobWFwLCBfcmVmKSB7XG4gICAgdmFyIGtleSA9IF9yZWZbMF0sXG4gICAgICAgIG9wdGlvbiA9IF9yZWZbMV07XG4gICAgdmFyIHR5cGUgPSBvcHRpb24udHlwZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gb3B0aW9uLmRlZmF1bHQ7XG5cbiAgICB2YXIgdmFsdWUgPSBlbC5nZXRBdHRyaWJ1dGUoJ2luZmluaXRlLXNjcm9sbC0nICsga2V5KTtcbiAgICB2YWx1ZSA9IE9iamVjdCh0eXBlc19bXCJpc1VuZGVmaW5lZFwiXSkodm1bdmFsdWVdKSA/IHZhbHVlIDogdm1bdmFsdWVdO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBOdW1iZXI6XG4gICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIuaXNOYU4odmFsdWUpID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCb29sZWFuOlxuICAgICAgICB2YWx1ZSA9IE9iamVjdCh0eXBlc19bXCJpc0RlZmluZWRcIl0pKHZhbHVlKSA/IHZhbHVlID09PSAnZmFsc2UnID8gZmFsc2UgOiBCb29sZWFuKHZhbHVlKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWx1ZSA9IHR5cGUodmFsdWUpO1xuICAgIH1cbiAgICBtYXBba2V5XSA9IHZhbHVlO1xuICAgIHJldHVybiBtYXA7XG4gIH0sIHt9KTtcbn07XG5cbnZhciBnZXRFbGVtZW50VG9wID0gZnVuY3Rpb24gZ2V0RWxlbWVudFRvcChlbCkge1xuICByZXR1cm4gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xufTtcblxudmFyIG1haW5faGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKGNiKSB7XG4gIHZhciBfc2NvcGUgPSB0aGlzW3Njb3BlXSxcbiAgICAgIGVsID0gX3Njb3BlLmVsLFxuICAgICAgdm0gPSBfc2NvcGUudm0sXG4gICAgICBjb250YWluZXIgPSBfc2NvcGUuY29udGFpbmVyLFxuICAgICAgb2JzZXJ2ZXIgPSBfc2NvcGUub2JzZXJ2ZXI7XG5cbiAgdmFyIF9nZXRTY3JvbGxPcHRpb25zID0gbWFpbl9nZXRTY3JvbGxPcHRpb25zKGVsLCB2bSksXG4gICAgICBkaXN0YW5jZSA9IF9nZXRTY3JvbGxPcHRpb25zLmRpc3RhbmNlLFxuICAgICAgZGlzYWJsZWQgPSBfZ2V0U2Nyb2xsT3B0aW9ucy5kaXNhYmxlZDtcblxuICBpZiAoZGlzYWJsZWQpIHJldHVybjtcblxuICB2YXIgY29udGFpbmVySW5mbyA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgaWYgKCFjb250YWluZXJJbmZvLndpZHRoICYmICFjb250YWluZXJJbmZvLmhlaWdodCkgcmV0dXJuO1xuXG4gIHZhciBzaG91bGRUcmlnZ2VyID0gZmFsc2U7XG5cbiAgaWYgKGNvbnRhaW5lciA9PT0gZWwpIHtcbiAgICAvLyBiZSBhd2FyZSBvZiBkaWZmZXJlbmNlIGJldHdlZW4gY2xpZW50SGVpZ2h0ICYgb2Zmc2V0SGVpZ2h0ICYgd2luZG93LmdldENvbXB1dGVkU3R5bGUoKS5oZWlnaHRcbiAgICB2YXIgc2Nyb2xsQm90dG9tID0gY29udGFpbmVyLnNjcm9sbFRvcCArIGdldENsaWVudEhlaWdodChjb250YWluZXIpO1xuICAgIHNob3VsZFRyaWdnZXIgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsQm90dG9tIDw9IGRpc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHZhciBoZWlnaHRCZWxvd1RvcCA9IGdldE9mZnNldEhlaWdodChlbCkgKyBnZXRFbGVtZW50VG9wKGVsKSAtIGdldEVsZW1lbnRUb3AoY29udGFpbmVyKTtcbiAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZ2V0T2Zmc2V0SGVpZ2h0KGNvbnRhaW5lcik7XG4gICAgdmFyIGJvcmRlckJvdHRvbSA9IE51bWJlci5wYXJzZUZsb2F0KGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShjb250YWluZXIsICdib3JkZXJCb3R0b21XaWR0aCcpKTtcbiAgICBzaG91bGRUcmlnZ2VyID0gaGVpZ2h0QmVsb3dUb3AgLSBvZmZzZXRIZWlnaHQgKyBib3JkZXJCb3R0b20gPD0gZGlzdGFuY2U7XG4gIH1cblxuICBpZiAoc2hvdWxkVHJpZ2dlciAmJiBPYmplY3QodHlwZXNfW1wiaXNGdW5jdGlvblwiXSkoY2IpKSB7XG4gICAgY2IuY2FsbCh2bSk7XG4gIH0gZWxzZSBpZiAob2JzZXJ2ZXIpIHtcbiAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpc1tzY29wZV0ub2JzZXJ2ZXIgPSBudWxsO1xuICB9XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBpbmZpbml0ZV9zY3JvbGxfc3JjX21haW4gPSAoe1xuICBuYW1lOiAnSW5maW5pdGVTY3JvbGwnLFxuICBpbnNlcnRlZDogZnVuY3Rpb24gaW5zZXJ0ZWQoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgdmFyIGNiID0gYmluZGluZy52YWx1ZTtcblxuICAgIHZhciB2bSA9IHZub2RlLmNvbnRleHQ7XG4gICAgLy8gb25seSBpbmNsdWRlIHZlcnRpY2FsIHNjcm9sbFxuICAgIHZhciBjb250YWluZXIgPSBPYmplY3QoZG9tX1tcImdldFNjcm9sbENvbnRhaW5lclwiXSkoZWwsIHRydWUpO1xuXG4gICAgdmFyIF9nZXRTY3JvbGxPcHRpb25zMiA9IG1haW5fZ2V0U2Nyb2xsT3B0aW9ucyhlbCwgdm0pLFxuICAgICAgICBkZWxheSA9IF9nZXRTY3JvbGxPcHRpb25zMi5kZWxheSxcbiAgICAgICAgaW1tZWRpYXRlID0gX2dldFNjcm9sbE9wdGlvbnMyLmltbWVkaWF0ZTtcblxuICAgIHZhciBvblNjcm9sbCA9IGRlYm91bmNlX2RlZmF1bHQoKShkZWxheSwgbWFpbl9oYW5kbGVTY3JvbGwuYmluZChlbCwgY2IpKTtcblxuICAgIGVsW3Njb3BlXSA9IHsgZWw6IGVsLCB2bTogdm0sIGNvbnRhaW5lcjogY29udGFpbmVyLCBvblNjcm9sbDogb25TY3JvbGwgfTtcblxuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCk7XG5cbiAgICAgIGlmIChpbW1lZGlhdGUpIHtcbiAgICAgICAgdmFyIG9ic2VydmVyID0gZWxbc2NvcGVdLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIob25TY3JvbGwpO1xuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lciwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4gICAgICAgIG9uU2Nyb2xsKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICB1bmJpbmQ6IGZ1bmN0aW9uIHVuYmluZChlbCkge1xuICAgIHZhciBfZWwkc2NvcGUgPSBlbFtzY29wZV0sXG4gICAgICAgIGNvbnRhaW5lciA9IF9lbCRzY29wZS5jb250YWluZXIsXG4gICAgICAgIG9uU2Nyb2xsID0gX2VsJHNjb3BlLm9uU2Nyb2xsO1xuXG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbmZpbml0ZS1zY3JvbGwvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuaW5maW5pdGVfc2Nyb2xsX3NyY19tYWluLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5kaXJlY3RpdmUoaW5maW5pdGVfc2Nyb2xsX3NyY19tYWluLm5hbWUsIGluZmluaXRlX3Njcm9sbF9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBpbmZpbml0ZV9zY3JvbGwgPSAoaW5maW5pdGVfc2Nyb2xsX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcGFnZS1oZWFkZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUwNzA5NTRjJlxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF81MDcwOTU0Y19yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1wYWdlLWhlYWRlclwiIH0sIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXBhZ2UtaGVhZGVyX19sZWZ0XCIsXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgX3ZtLiRlbWl0KFwiYmFja1wiKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtaWNvbi1iYWNrXCIgfSksXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1wYWdlLWhlYWRlcl9fdGl0bGVcIiB9LFxuICAgICAgICAgIFtfdm0uX3QoXCJ0aXRsZVwiLCBbX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKV0pXSxcbiAgICAgICAgICAyXG4gICAgICAgIClcbiAgICAgIF1cbiAgICApLFxuICAgIF9jKFxuICAgICAgXCJkaXZcIixcbiAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtcGFnZS1oZWFkZXJfX2NvbnRlbnRcIiB9LFxuICAgICAgW192bS5fdChcImNvbnRlbnRcIiwgW192bS5fdihfdm0uX3MoX3ZtLmNvbnRlbnQpKV0pXSxcbiAgICAgIDJcbiAgICApXG4gIF0pXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzUwNzA5NTRjX3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNTA3MDk1NGNfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wYWdlLWhlYWRlci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTA3MDk1NGMmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3BhZ2UtaGVhZGVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhZ2VfaGVhZGVyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsUGFnZUhlYWRlcicsXG5cbiAgcHJvcHM6IHtcbiAgICB0aXRsZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QobGliX2xvY2FsZV9bXCJ0XCJdKSgnZWwucGFnZUhlYWRlci50aXRsZScpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY29udGVudDogU3RyaW5nXG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wYWdlLWhlYWRlci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfcGFnZV9oZWFkZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAocGFnZV9oZWFkZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcGFnZS1oZWFkZXIvc3JjL21haW4udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgcGFnZV9oZWFkZXJfc3JjX21haW5fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19wYWdlX2hlYWRlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzUwNzA5NTRjX3JlbmRlcixcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzUwNzA5NTRjX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgcGFnZV9oZWFkZXJfc3JjX21haW5fYXBpOyB9XG5wYWdlX2hlYWRlcl9zcmNfbWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3BhZ2UtaGVhZGVyL3NyYy9tYWluLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWdlX2hlYWRlcl9zcmNfbWFpbiA9IChwYWdlX2hlYWRlcl9zcmNfbWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3BhZ2UtaGVhZGVyL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnBhZ2VfaGVhZGVyX3NyY19tYWluLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQocGFnZV9oZWFkZXJfc3JjX21haW4ubmFtZSwgcGFnZV9oZWFkZXJfc3JjX21haW4pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFnZV9oZWFkZXIgPSAocGFnZV9oZWFkZXJfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItcGFuZWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0OTMyMzQ2JlxudmFyIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfdGVtcGxhdGVfaWRfMzQ5MzIzNDZfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgY2xhc3M6IFtcImVsLWNhc2NhZGVyLXBhbmVsXCIsIF92bS5ib3JkZXIgJiYgXCJpcy1ib3JkZXJlZFwiXSxcbiAgICAgIG9uOiB7IGtleWRvd246IF92bS5oYW5kbGVLZXlEb3duIH1cbiAgICB9LFxuICAgIF92bS5fbChfdm0ubWVudXMsIGZ1bmN0aW9uKG1lbnUsIGluZGV4KSB7XG4gICAgICByZXR1cm4gX2MoXCJjYXNjYWRlci1tZW51XCIsIHtcbiAgICAgICAga2V5OiBpbmRleCxcbiAgICAgICAgcmVmOiBcIm1lbnVcIixcbiAgICAgICAgcmVmSW5Gb3I6IHRydWUsXG4gICAgICAgIGF0dHJzOiB7IGluZGV4OiBpbmRleCwgbm9kZXM6IG1lbnUgfVxuICAgICAgfSlcbiAgICB9KSxcbiAgICAxXG4gIClcbn1cbnZhciBjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM0OTMyMzQ2X3N0YXRpY1JlbmRlckZucyA9IFtdXG5jYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM0OTMyMzQ2X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLXBhbmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDkzMjM0NiZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3JhZGlvXCJcbnZhciByYWRpb18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ0KTtcbnZhciByYWRpb19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihyYWRpb18pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItbm9kZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG5cblxuXG5cblxuXG52YXIgc3RvcFByb3BhZ2F0aW9uID0gZnVuY3Rpb24gc3RvcFByb3BhZ2F0aW9uKGUpIHtcbiAgcmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjYXNjYWRlcl9ub2RldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgaW5qZWN0OiBbJ3BhbmVsJ10sXG5cbiAgY29tcG9uZW50czoge1xuICAgIEVsQ2hlY2tib3g6IGNoZWNrYm94X2RlZmF1bHQuYSxcbiAgICBFbFJhZGlvOiByYWRpb19kZWZhdWx0LmFcbiAgfSxcblxuICBwcm9wczoge1xuICAgIG5vZGU6IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICBub2RlSWQ6IFN0cmluZ1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgY29uZmlnOiBmdW5jdGlvbiBjb25maWcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYW5lbC5jb25maWc7XG4gICAgfSxcbiAgICBpc0xlYWY6IGZ1bmN0aW9uIGlzTGVhZigpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUuaXNMZWFmO1xuICAgIH0sXG4gICAgaXNEaXNhYmxlZDogZnVuY3Rpb24gaXNEaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUuaXNEaXNhYmxlZDtcbiAgICB9LFxuICAgIGNoZWNrZWRWYWx1ZTogZnVuY3Rpb24gY2hlY2tlZFZhbHVlKCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFuZWwuY2hlY2tlZFZhbHVlO1xuICAgIH0sXG4gICAgaXNDaGVja2VkOiBmdW5jdGlvbiBpc0NoZWNrZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlLmlzU2FtZU5vZGUodGhpcy5jaGVja2VkVmFsdWUpO1xuICAgIH0sXG4gICAgaW5BY3RpdmVQYXRoOiBmdW5jdGlvbiBpbkFjdGl2ZVBhdGgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0luUGF0aCh0aGlzLnBhbmVsLmFjdGl2ZVBhdGgpO1xuICAgIH0sXG4gICAgaW5DaGVja2VkUGF0aDogZnVuY3Rpb24gaW5DaGVja2VkUGF0aCgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5jb25maWcuY2hlY2tTdHJpY3RseSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5wYW5lbC5jaGVja2VkTm9kZVBhdGhzLnNvbWUoZnVuY3Rpb24gKGNoZWNrZWRQYXRoKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5pc0luUGF0aChjaGVja2VkUGF0aCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUuZ2V0VmFsdWVCeU9wdGlvbigpO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlRXhwYW5kOiBmdW5jdGlvbiBoYW5kbGVFeHBhbmQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHBhbmVsID0gdGhpcy5wYW5lbCxcbiAgICAgICAgICBub2RlID0gdGhpcy5ub2RlLFxuICAgICAgICAgIGlzRGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB2YXIgbXVsdGlwbGUgPSBjb25maWcubXVsdGlwbGUsXG4gICAgICAgICAgY2hlY2tTdHJpY3RseSA9IGNvbmZpZy5jaGVja1N0cmljdGx5O1xuXG5cbiAgICAgIGlmICghY2hlY2tTdHJpY3RseSAmJiBpc0Rpc2FibGVkIHx8IG5vZGUubG9hZGluZykgcmV0dXJuO1xuXG4gICAgICBpZiAoY29uZmlnLmxhenkgJiYgIW5vZGUubG9hZGVkKSB7XG4gICAgICAgIHBhbmVsLmxhenlMb2FkKG5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBkbyBub3QgdXNlIGNhY2hlZCBsZWFmIHZhbHVlIGhlcmUsIGludm9rZSB0aGlzLmlzTGVhZiB0byBnZXQgbmV3IHZhbHVlLlxuICAgICAgICAgIHZhciBpc0xlYWYgPSBfdGhpczIuaXNMZWFmO1xuXG5cbiAgICAgICAgICBpZiAoIWlzTGVhZikgX3RoaXMyLmhhbmRsZUV4cGFuZCgpO1xuICAgICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgLy8gaWYgbGVhZiBzeW5jIGNoZWNrZWQgc3RhdGUsIGVsc2UgY2xlYXIgY2hlY2tlZCBzdGF0ZVxuICAgICAgICAgICAgdmFyIGNoZWNrZWQgPSBpc0xlYWYgPyBub2RlLmNoZWNrZWQgOiBmYWxzZTtcbiAgICAgICAgICAgIF90aGlzMi5oYW5kbGVNdWx0aUNoZWNrQ2hhbmdlKGNoZWNrZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYW5lbC5oYW5kbGVFeHBhbmQobm9kZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDaGVja0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hlY2tDaGFuZ2UoKSB7XG4gICAgICB2YXIgcGFuZWwgPSB0aGlzLnBhbmVsLFxuICAgICAgICAgIHZhbHVlID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICBub2RlID0gdGhpcy5ub2RlO1xuXG4gICAgICBwYW5lbC5oYW5kbGVDaGVja0NoYW5nZSh2YWx1ZSk7XG4gICAgICBwYW5lbC5oYW5kbGVFeHBhbmQobm9kZSk7XG4gICAgfSxcbiAgICBoYW5kbGVNdWx0aUNoZWNrQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVNdWx0aUNoZWNrQ2hhbmdlKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMubm9kZS5kb0NoZWNrKGNoZWNrZWQpO1xuICAgICAgdGhpcy5wYW5lbC5jYWxjdWxhdGVNdWx0aUNoZWNrZWRWYWx1ZSgpO1xuICAgIH0sXG4gICAgaXNJblBhdGg6IGZ1bmN0aW9uIGlzSW5QYXRoKHBhdGhOb2Rlcykge1xuICAgICAgdmFyIG5vZGUgPSB0aGlzLm5vZGU7XG5cbiAgICAgIHZhciBzZWxlY3RlZFBhdGhOb2RlID0gcGF0aE5vZGVzW25vZGUubGV2ZWwgLSAxXSB8fCB7fTtcbiAgICAgIHJldHVybiBzZWxlY3RlZFBhdGhOb2RlLnVpZCA9PT0gbm9kZS51aWQ7XG4gICAgfSxcbiAgICByZW5kZXJQcmVmaXg6IGZ1bmN0aW9uIHJlbmRlclByZWZpeChoKSB7XG4gICAgICB2YXIgaXNMZWFmID0gdGhpcy5pc0xlYWYsXG4gICAgICAgICAgaXNDaGVja2VkID0gdGhpcy5pc0NoZWNrZWQsXG4gICAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB2YXIgY2hlY2tTdHJpY3RseSA9IGNvbmZpZy5jaGVja1N0cmljdGx5LFxuICAgICAgICAgIG11bHRpcGxlID0gY29uZmlnLm11bHRpcGxlO1xuXG5cbiAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJDaGVja2JveChoKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hlY2tTdHJpY3RseSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJSYWRpbyhoKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNMZWFmICYmIGlzQ2hlY2tlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJDaGVja0ljb24oaCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgcmVuZGVyUG9zdGZpeDogZnVuY3Rpb24gcmVuZGVyUG9zdGZpeChoKSB7XG4gICAgICB2YXIgbm9kZSA9IHRoaXMubm9kZSxcbiAgICAgICAgICBpc0xlYWYgPSB0aGlzLmlzTGVhZjtcblxuXG4gICAgICBpZiAobm9kZS5sb2FkaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlckxvYWRpbmdJY29uKGgpO1xuICAgICAgfSBlbHNlIGlmICghaXNMZWFmKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlckV4cGFuZEljb24oaCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgcmVuZGVyQ2hlY2tib3g6IGZ1bmN0aW9uIHJlbmRlckNoZWNrYm94KGgpIHtcbiAgICAgIHZhciBub2RlID0gdGhpcy5ub2RlLFxuICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLFxuICAgICAgICAgIGlzRGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQ7XG5cbiAgICAgIHZhciBldmVudHMgPSB7XG4gICAgICAgIG9uOiB7IGNoYW5nZTogdGhpcy5oYW5kbGVNdWx0aUNoZWNrQ2hhbmdlIH0sXG4gICAgICAgIG5hdGl2ZU9uOiB7fVxuICAgICAgfTtcblxuICAgICAgaWYgKGNvbmZpZy5jaGVja1N0cmljdGx5KSB7XG4gICAgICAgIC8vIHdoZW4gZXZlcnkgbm9kZSBpcyBzZWxlY3RhYmxlLCBjbGljayBldmVudCBzaG91bGQgbm90IHRyaWdnZXIgZXhwYW5kIGV2ZW50LlxuICAgICAgICBldmVudHMubmF0aXZlT24uY2xpY2sgPSBzdG9wUHJvcGFnYXRpb247XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBoKCdlbC1jaGVja2JveCcsIGV4dGVybmFsX2JhYmVsX2hlbHBlcl92dWVfanN4X21lcmdlX3Byb3BzX2RlZmF1bHQoKShbe1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHZhbHVlOiBub2RlLmNoZWNrZWQsXG4gICAgICAgICAgaW5kZXRlcm1pbmF0ZTogbm9kZS5pbmRldGVybWluYXRlLFxuICAgICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkXG4gICAgICAgIH1cbiAgICAgIH0sIGV2ZW50c10pKTtcbiAgICB9LFxuICAgIHJlbmRlclJhZGlvOiBmdW5jdGlvbiByZW5kZXJSYWRpbyhoKSB7XG4gICAgICB2YXIgY2hlY2tlZFZhbHVlID0gdGhpcy5jaGVja2VkVmFsdWUsXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgIGlzRGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQ7XG5cbiAgICAgIC8vIHRvIGtlZXAgc2FtZSByZWZlcmVuY2UgaWYgdmFsdWUgY2F1c2UgcmFkaW8ncyBjaGVja2VkIHN0YXRlIGlzIGNhbGN1bGF0ZWQgYnkgcmVmZXJlbmNlIGNvbXBhcmlzaW9uO1xuXG4gICAgICBpZiAoT2JqZWN0KHV0aWxfW1wiaXNFcXVhbFwiXSkodmFsdWUsIGNoZWNrZWRWYWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBjaGVja2VkVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBoKFxuICAgICAgICAnZWwtcmFkaW8nLFxuICAgICAgICB7XG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIHZhbHVlOiBjaGVja2VkVmFsdWUsXG4gICAgICAgICAgICBsYWJlbDogdmFsdWUsXG4gICAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgICdjaGFuZ2UnOiB0aGlzLmhhbmRsZUNoZWNrQ2hhbmdlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYXRpdmVPbjoge1xuICAgICAgICAgICAgJ2NsaWNrJzogc3RvcFByb3BhZ2F0aW9uXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbaCgnc3BhbicpXVxuICAgICAgKTtcbiAgICB9LFxuICAgIHJlbmRlckNoZWNrSWNvbjogZnVuY3Rpb24gcmVuZGVyQ2hlY2tJY29uKGgpIHtcbiAgICAgIHJldHVybiBoKCdpJywgeyAnY2xhc3MnOiAnZWwtaWNvbi1jaGVjayBlbC1jYXNjYWRlci1ub2RlX19wcmVmaXgnIH0pO1xuICAgIH0sXG4gICAgcmVuZGVyTG9hZGluZ0ljb246IGZ1bmN0aW9uIHJlbmRlckxvYWRpbmdJY29uKGgpIHtcbiAgICAgIHJldHVybiBoKCdpJywgeyAnY2xhc3MnOiAnZWwtaWNvbi1sb2FkaW5nIGVsLWNhc2NhZGVyLW5vZGVfX3Bvc3RmaXgnIH0pO1xuICAgIH0sXG4gICAgcmVuZGVyRXhwYW5kSWNvbjogZnVuY3Rpb24gcmVuZGVyRXhwYW5kSWNvbihoKSB7XG4gICAgICByZXR1cm4gaCgnaScsIHsgJ2NsYXNzJzogJ2VsLWljb24tYXJyb3ctcmlnaHQgZWwtY2FzY2FkZXItbm9kZV9fcG9zdGZpeCcgfSk7XG4gICAgfSxcbiAgICByZW5kZXJDb250ZW50OiBmdW5jdGlvbiByZW5kZXJDb250ZW50KGgpIHtcbiAgICAgIHZhciBwYW5lbCA9IHRoaXMucGFuZWwsXG4gICAgICAgICAgbm9kZSA9IHRoaXMubm9kZTtcblxuICAgICAgdmFyIHJlbmRlciA9IHBhbmVsLnJlbmRlckxhYmVsRm47XG4gICAgICB2YXIgdm5vZGUgPSByZW5kZXIgPyByZW5kZXIoeyBub2RlOiBub2RlLCBkYXRhOiBub2RlLmRhdGEgfSkgOiBudWxsO1xuXG4gICAgICByZXR1cm4gaChcbiAgICAgICAgJ3NwYW4nLFxuICAgICAgICB7ICdjbGFzcyc6ICdlbC1jYXNjYWRlci1ub2RlX19sYWJlbCcgfSxcbiAgICAgICAgW3Zub2RlIHx8IG5vZGUubGFiZWxdXG4gICAgICApO1xuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICB2YXIgaW5BY3RpdmVQYXRoID0gdGhpcy5pbkFjdGl2ZVBhdGgsXG4gICAgICAgIGluQ2hlY2tlZFBhdGggPSB0aGlzLmluQ2hlY2tlZFBhdGgsXG4gICAgICAgIGlzQ2hlY2tlZCA9IHRoaXMuaXNDaGVja2VkLFxuICAgICAgICBpc0xlYWYgPSB0aGlzLmlzTGVhZixcbiAgICAgICAgaXNEaXNhYmxlZCA9IHRoaXMuaXNEaXNhYmxlZCxcbiAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWcsXG4gICAgICAgIG5vZGVJZCA9IHRoaXMubm9kZUlkO1xuICAgIHZhciBleHBhbmRUcmlnZ2VyID0gY29uZmlnLmV4cGFuZFRyaWdnZXIsXG4gICAgICAgIGNoZWNrU3RyaWN0bHkgPSBjb25maWcuY2hlY2tTdHJpY3RseSxcbiAgICAgICAgbXVsdGlwbGUgPSBjb25maWcubXVsdGlwbGU7XG5cbiAgICB2YXIgZGlzYWJsZWQgPSAhY2hlY2tTdHJpY3RseSAmJiBpc0Rpc2FibGVkO1xuICAgIHZhciBldmVudHMgPSB7IG9uOiB7fSB9O1xuXG4gICAgaWYgKGV4cGFuZFRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgIGV2ZW50cy5vbi5jbGljayA9IHRoaXMuaGFuZGxlRXhwYW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudHMub24ubW91c2VlbnRlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIF90aGlzMy5oYW5kbGVFeHBhbmQoKTtcbiAgICAgICAgX3RoaXMzLiRlbWl0KCdleHBhbmQnLCBlKTtcbiAgICAgIH07XG4gICAgICBldmVudHMub24uZm9jdXMgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBfdGhpczMuaGFuZGxlRXhwYW5kKCk7XG4gICAgICAgIF90aGlzMy4kZW1pdCgnZXhwYW5kJywgZSk7XG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoaXNMZWFmICYmICFpc0Rpc2FibGVkICYmICFjaGVja1N0cmljdGx5ICYmICFtdWx0aXBsZSkge1xuICAgICAgZXZlbnRzLm9uLmNsaWNrID0gdGhpcy5oYW5kbGVDaGVja0NoYW5nZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaChcbiAgICAgICdsaScsXG4gICAgICBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc19kZWZhdWx0KCkoW3tcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICByb2xlOiAnbWVudWl0ZW0nLFxuICAgICAgICAgIGlkOiBub2RlSWQsXG4gICAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBpbkFjdGl2ZVBhdGgsXG4gICAgICAgICAgdGFiaW5kZXg6IGRpc2FibGVkID8gbnVsbCA6IC0xXG4gICAgICAgIH0sXG4gICAgICAgICdjbGFzcyc6IHtcbiAgICAgICAgICAnZWwtY2FzY2FkZXItbm9kZSc6IHRydWUsXG4gICAgICAgICAgJ2lzLXNlbGVjdGFibGUnOiBjaGVja1N0cmljdGx5LFxuICAgICAgICAgICdpbi1hY3RpdmUtcGF0aCc6IGluQWN0aXZlUGF0aCxcbiAgICAgICAgICAnaW4tY2hlY2tlZC1wYXRoJzogaW5DaGVja2VkUGF0aCxcbiAgICAgICAgICAnaXMtYWN0aXZlJzogaXNDaGVja2VkLFxuICAgICAgICAgICdpcy1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgICAgIH1cbiAgICAgIH0sIGV2ZW50c10pLFxuICAgICAgW3RoaXMucmVuZGVyUHJlZml4KGgpLCB0aGlzLnJlbmRlckNvbnRlbnQoaCksIHRoaXMucmVuZGVyUG9zdGZpeChoKV1cbiAgICApO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLW5vZGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19jYXNjYWRlcl9ub2RldnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGNhc2NhZGVyX25vZGV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLW5vZGUudnVlXG52YXIgY2FzY2FkZXJfbm9kZV9yZW5kZXIsIGNhc2NhZGVyX25vZGVfc3RhdGljUmVuZGVyRm5zXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNhc2NhZGVyX25vZGVfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfY2FzY2FkZXJfbm9kZXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgY2FzY2FkZXJfbm9kZV9yZW5kZXIsXG4gIGNhc2NhZGVyX25vZGVfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBjYXNjYWRlcl9ub2RlX2FwaTsgfVxuY2FzY2FkZXJfbm9kZV9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9jYXNjYWRlci1ub2RlLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjYXNjYWRlcl9ub2RlID0gKGNhc2NhZGVyX25vZGVfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLW1lbnUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG5cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjYXNjYWRlcl9tZW51dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsQ2FzY2FkZXJNZW51JyxcblxuICBtaXhpbnM6IFtsb2NhbGVfZGVmYXVsdC5hXSxcblxuICBpbmplY3Q6IFsncGFuZWwnXSxcblxuICBjb21wb25lbnRzOiB7XG4gICAgRWxTY3JvbGxiYXI6IHNjcm9sbGJhcl9kZWZhdWx0LmEsXG4gICAgQ2FzY2FkZXJOb2RlOiBjYXNjYWRlcl9ub2RlXG4gIH0sXG5cbiAgcHJvcHM6IHtcbiAgICBub2Rlczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgaW5kZXg6IE51bWJlclxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZU5vZGU6IG51bGwsXG4gICAgICBob3ZlclRpbWVyOiBudWxsLFxuICAgICAgaWQ6IE9iamVjdCh1dGlsX1tcImdlbmVyYXRlSWRcIl0pKClcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBpc0VtcHR5OiBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICAgICAgcmV0dXJuICF0aGlzLm5vZGVzLmxlbmd0aDtcbiAgICB9LFxuICAgIG1lbnVJZDogZnVuY3Rpb24gbWVudUlkKCkge1xuICAgICAgcmV0dXJuICdjYXNjYWRlci1tZW51LScgKyB0aGlzLmlkICsgJy0nICsgdGhpcy5pbmRleDtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUV4cGFuZDogZnVuY3Rpb24gaGFuZGxlRXhwYW5kKGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlTm9kZSA9IGUudGFyZ2V0O1xuICAgIH0sXG4gICAgaGFuZGxlTW91c2VNb3ZlOiBmdW5jdGlvbiBoYW5kbGVNb3VzZU1vdmUoZSkge1xuICAgICAgdmFyIGFjdGl2ZU5vZGUgPSB0aGlzLmFjdGl2ZU5vZGUsXG4gICAgICAgICAgaG92ZXJUaW1lciA9IHRoaXMuaG92ZXJUaW1lcjtcbiAgICAgIHZhciBob3ZlclpvbmUgPSB0aGlzLiRyZWZzLmhvdmVyWm9uZTtcblxuXG4gICAgICBpZiAoIWFjdGl2ZU5vZGUgfHwgIWhvdmVyWm9uZSkgcmV0dXJuO1xuXG4gICAgICBpZiAoYWN0aXZlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGhvdmVyVGltZXIpO1xuXG4gICAgICAgIHZhciBfJGVsJGdldEJvdW5kaW5nQ2xpZW4gPSB0aGlzLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICAgIGxlZnQgPSBfJGVsJGdldEJvdW5kaW5nQ2xpZW4ubGVmdDtcblxuICAgICAgICB2YXIgc3RhcnRYID0gZS5jbGllbnRYIC0gbGVmdDtcbiAgICAgICAgdmFyIF8kZWwgPSB0aGlzLiRlbCxcbiAgICAgICAgICAgIG9mZnNldFdpZHRoID0gXyRlbC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgIG9mZnNldEhlaWdodCA9IF8kZWwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgIHZhciB0b3AgPSBhY3RpdmVOb2RlLm9mZnNldFRvcDtcbiAgICAgICAgdmFyIGJvdHRvbSA9IHRvcCArIGFjdGl2ZU5vZGUub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgIGhvdmVyWm9uZS5pbm5lckhUTUwgPSAnXFxuICAgICAgICAgIDxwYXRoIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IGF1dG87XCIgZmlsbD1cInRyYW5zcGFyZW50XCIgZD1cIk0nICsgc3RhcnRYICsgJyAnICsgdG9wICsgJyBMJyArIG9mZnNldFdpZHRoICsgJyAwIFYnICsgdG9wICsgJyBaXCIgLz5cXG4gICAgICAgICAgPHBhdGggc3R5bGU9XCJwb2ludGVyLWV2ZW50czogYXV0bztcIiBmaWxsPVwidHJhbnNwYXJlbnRcIiBkPVwiTScgKyBzdGFydFggKyAnICcgKyBib3R0b20gKyAnIEwnICsgb2Zmc2V0V2lkdGggKyAnICcgKyBvZmZzZXRIZWlnaHQgKyAnIFYnICsgYm90dG9tICsgJyBaXCIgLz5cXG4gICAgICAgICc7XG4gICAgICB9IGVsc2UgaWYgKCFob3ZlclRpbWVyKSB7XG4gICAgICAgIHRoaXMuaG92ZXJUaW1lciA9IHNldFRpbWVvdXQodGhpcy5jbGVhckhvdmVyWm9uZSwgdGhpcy5wYW5lbC5jb25maWcuaG92ZXJUaHJlc2hvbGQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xlYXJIb3ZlclpvbmU6IGZ1bmN0aW9uIGNsZWFySG92ZXJab25lKCkge1xuICAgICAgdmFyIGhvdmVyWm9uZSA9IHRoaXMuJHJlZnMuaG92ZXJab25lO1xuXG4gICAgICBpZiAoIWhvdmVyWm9uZSkgcmV0dXJuO1xuICAgICAgaG92ZXJab25lLmlubmVySFRNTCA9ICcnO1xuICAgIH0sXG4gICAgcmVuZGVyRW1wdHlUZXh0OiBmdW5jdGlvbiByZW5kZXJFbXB0eVRleHQoaCkge1xuICAgICAgcmV0dXJuIGgoXG4gICAgICAgICdkaXYnLFxuICAgICAgICB7ICdjbGFzcyc6ICdlbC1jYXNjYWRlci1tZW51X19lbXB0eS10ZXh0JyB9LFxuICAgICAgICBbdGhpcy50KCdlbC5jYXNjYWRlci5ub0RhdGEnKV1cbiAgICAgICk7XG4gICAgfSxcbiAgICByZW5kZXJOb2RlTGlzdDogZnVuY3Rpb24gcmVuZGVyTm9kZUxpc3QoaCkge1xuICAgICAgdmFyIG1lbnVJZCA9IHRoaXMubWVudUlkO1xuICAgICAgdmFyIGlzSG92ZXJNZW51ID0gdGhpcy5wYW5lbC5pc0hvdmVyTWVudTtcblxuICAgICAgdmFyIGV2ZW50cyA9IHsgb246IHt9IH07XG5cbiAgICAgIGlmIChpc0hvdmVyTWVudSkge1xuICAgICAgICBldmVudHMub24uZXhwYW5kID0gdGhpcy5oYW5kbGVFeHBhbmQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMubWFwKGZ1bmN0aW9uIChub2RlLCBpbmRleCkge1xuICAgICAgICB2YXIgaGFzQ2hpbGRyZW4gPSBub2RlLmhhc0NoaWxkcmVuO1xuXG4gICAgICAgIHJldHVybiBoKCdjYXNjYWRlci1ub2RlJywgZXh0ZXJuYWxfYmFiZWxfaGVscGVyX3Z1ZV9qc3hfbWVyZ2VfcHJvcHNfZGVmYXVsdCgpKFt7XG4gICAgICAgICAga2V5OiBub2RlLnVpZCxcbiAgICAgICAgICBhdHRyczogeyBub2RlOiBub2RlLFxuICAgICAgICAgICAgJ25vZGUtaWQnOiBtZW51SWQgKyAnLScgKyBpbmRleCxcbiAgICAgICAgICAgICdhcmlhLWhhc3BvcHVwJzogaGFzQ2hpbGRyZW4sXG4gICAgICAgICAgICAnYXJpYS1vd25zJzogaGFzQ2hpbGRyZW4gPyBtZW51SWQgOiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICB9LCBldmVudHNdKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIFtdLmNvbmNhdChub2RlcywgW2lzSG92ZXJNZW51ID8gaCgnc3ZnJywgeyByZWY6ICdob3ZlclpvbmUnLCAnY2xhc3MnOiAnZWwtY2FzY2FkZXItbWVudV9faG92ZXItem9uZScgfSkgOiBudWxsXSk7XG4gICAgfVxuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgaXNFbXB0eSA9IHRoaXMuaXNFbXB0eSxcbiAgICAgICAgbWVudUlkID0gdGhpcy5tZW51SWQ7XG5cbiAgICB2YXIgZXZlbnRzID0geyBuYXRpdmVPbjoge30gfTtcblxuICAgIC8vIG9wdGltaXplIGhvdmVyIHRvIGV4cGFuZCBleHBlcmllbmNlICgjODAxMClcbiAgICBpZiAodGhpcy5wYW5lbC5pc0hvdmVyTWVudSkge1xuICAgICAgZXZlbnRzLm5hdGl2ZU9uLm1vdXNlbW92ZSA9IHRoaXMuaGFuZGxlTW91c2VNb3ZlO1xuICAgICAgLy8gZXZlbnRzLm5hdGl2ZU9uLm1vdXNlbGVhdmUgPSB0aGlzLmNsZWFySG92ZXJab25lO1xuICAgIH1cblxuICAgIHJldHVybiBoKFxuICAgICAgJ2VsLXNjcm9sbGJhcicsXG4gICAgICBleHRlcm5hbF9iYWJlbF9oZWxwZXJfdnVlX2pzeF9tZXJnZV9wcm9wc19kZWZhdWx0KCkoW3tcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICB0YWc6ICd1bCcsXG4gICAgICAgICAgcm9sZTogJ21lbnUnLFxuICAgICAgICAgIGlkOiBtZW51SWQsXG5cbiAgICAgICAgICAnd3JhcC1jbGFzcyc6ICdlbC1jYXNjYWRlci1tZW51X193cmFwJyxcbiAgICAgICAgICAndmlldy1jbGFzcyc6IHtcbiAgICAgICAgICAgICdlbC1jYXNjYWRlci1tZW51X19saXN0JzogdHJ1ZSxcbiAgICAgICAgICAgICdpcy1lbXB0eSc6IGlzRW1wdHlcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdjbGFzcyc6ICdlbC1jYXNjYWRlci1tZW51JyB9LCBldmVudHNdKSxcbiAgICAgIFtpc0VtcHR5ID8gdGhpcy5yZW5kZXJFbXB0eVRleHQoaCkgOiB0aGlzLnJlbmRlck5vZGVMaXN0KGgpXVxuICAgICk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItbWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX2Nhc2NhZGVyX21lbnV2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoY2FzY2FkZXJfbWVudXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItbWVudS52dWVcbnZhciBjYXNjYWRlcl9tZW51X3JlbmRlciwgY2FzY2FkZXJfbWVudV9zdGF0aWNSZW5kZXJGbnNcblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY2FzY2FkZXJfbWVudV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19jYXNjYWRlcl9tZW51dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBjYXNjYWRlcl9tZW51X3JlbmRlcixcbiAgY2FzY2FkZXJfbWVudV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGNhc2NhZGVyX21lbnVfYXBpOyB9XG5jYXNjYWRlcl9tZW51X2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLW1lbnUudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNhc2NhZGVyX21lbnUgPSAoY2FzY2FkZXJfbWVudV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Nhc2NhZGVyLXBhbmVsL3NyYy9ub2RlLmpzXG52YXIgbm9kZV9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gc3JjX25vZGVfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5cblxuXG52YXIgdWlkID0gMDtcblxudmFyIHNyY19ub2RlX05vZGUgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoZGF0YSwgY29uZmlnLCBwYXJlbnROb2RlKSB7XG4gICAgc3JjX25vZGVfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZSk7XG5cbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50Tm9kZSB8fCBudWxsO1xuICAgIHRoaXMubGV2ZWwgPSAhdGhpcy5wYXJlbnQgPyAxIDogdGhpcy5wYXJlbnQubGV2ZWwgKyAxO1xuICAgIHRoaXMudWlkID0gdWlkKys7XG5cbiAgICB0aGlzLmluaXRTdGF0ZSgpO1xuICAgIHRoaXMuaW5pdENoaWxkcmVuKCk7XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5pbml0U3RhdGUgPSBmdW5jdGlvbiBpbml0U3RhdGUoKSB7XG4gICAgdmFyIF9jb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgdmFsdWVLZXkgPSBfY29uZmlnLnZhbHVlLFxuICAgICAgICBsYWJlbEtleSA9IF9jb25maWcubGFiZWw7XG5cblxuICAgIHRoaXMudmFsdWUgPSB0aGlzLmRhdGFbdmFsdWVLZXldO1xuICAgIHRoaXMubGFiZWwgPSB0aGlzLmRhdGFbbGFiZWxLZXldO1xuICAgIHRoaXMucGF0aE5vZGVzID0gdGhpcy5jYWxjdWxhdGVQYXRoTm9kZXMoKTtcbiAgICB0aGlzLnBhdGggPSB0aGlzLnBhdGhOb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMucGF0aExhYmVscyA9IHRoaXMucGF0aE5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUubGFiZWw7XG4gICAgfSk7XG5cbiAgICAvLyBsYXp5IGxvYWRcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmluaXRDaGlsZHJlbiA9IGZ1bmN0aW9uIGluaXRDaGlsZHJlbigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGNvbmZpZyA9IHRoaXMuY29uZmlnO1xuXG4gICAgdmFyIGNoaWxkcmVuS2V5ID0gY29uZmlnLmNoaWxkcmVuO1xuICAgIHZhciBjaGlsZHJlbkRhdGEgPSB0aGlzLmRhdGFbY2hpbGRyZW5LZXldO1xuICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuRGF0YSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IChjaGlsZHJlbkRhdGEgfHwgW10pLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIHJldHVybiBuZXcgTm9kZShjaGlsZCwgY29uZmlnLCBfdGhpcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuY2FsY3VsYXRlUGF0aE5vZGVzID0gZnVuY3Rpb24gY2FsY3VsYXRlUGF0aE5vZGVzKCkge1xuICAgIHZhciBub2RlcyA9IFt0aGlzXTtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnQ7XG5cbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICBub2Rlcy51bnNoaWZ0KHBhcmVudCk7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5nZXRQYXRoID0gZnVuY3Rpb24gZ2V0UGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0VmFsdWVCeU9wdGlvbiA9IGZ1bmN0aW9uIGdldFZhbHVlQnlPcHRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmVtaXRQYXRoID8gdGhpcy5nZXRQYXRoKCkgOiB0aGlzLmdldFZhbHVlKCk7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0VGV4dCA9IGZ1bmN0aW9uIGdldFRleHQoYWxsTGV2ZWxzLCBzZXBhcmF0b3IpIHtcbiAgICByZXR1cm4gYWxsTGV2ZWxzID8gdGhpcy5wYXRoTGFiZWxzLmpvaW4oc2VwYXJhdG9yKSA6IHRoaXMubGFiZWw7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuaXNTYW1lTm9kZSA9IGZ1bmN0aW9uIGlzU2FtZU5vZGUoY2hlY2tlZFZhbHVlKSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5nZXRWYWx1ZUJ5T3B0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkoY2hlY2tlZFZhbHVlKSA/IGNoZWNrZWRWYWx1ZS5zb21lKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHJldHVybiBPYmplY3QodXRpbF9bXCJpc0VxdWFsXCJdKSh2YWwsIHZhbHVlKTtcbiAgICB9KSA6IE9iamVjdCh1dGlsX1tcImlzRXF1YWxcIl0pKGNoZWNrZWRWYWx1ZSwgdmFsdWUpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmJyb2FkY2FzdCA9IGZ1bmN0aW9uIGJyb2FkY2FzdChldmVudCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgdmFyIGhhbmRsZXJOYW1lID0gJ29uUGFyZW50JyArIE9iamVjdCh1dGlsX1tcImNhcGl0YWxpemVcIl0pKGV2ZW50KTtcblxuICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAvLyBib3R0b20gdXBcbiAgICAgICAgY2hpbGQuYnJvYWRjYXN0LmFwcGx5KGNoaWxkLCBbZXZlbnRdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgIGNoaWxkW2hhbmRsZXJOYW1lXSAmJiBjaGlsZFtoYW5kbGVyTmFtZV0uYXBwbHkoY2hpbGQsIGFyZ3MpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiBlbWl0KGV2ZW50KSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50O1xuXG4gICAgdmFyIGhhbmRsZXJOYW1lID0gJ29uQ2hpbGQnICsgT2JqZWN0KHV0aWxfW1wiY2FwaXRhbGl6ZVwiXSkoZXZlbnQpO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcGFyZW50W2hhbmRsZXJOYW1lXSAmJiBwYXJlbnRbaGFuZGxlck5hbWVdLmFwcGx5KHBhcmVudCwgYXJncyk7XG4gICAgICBwYXJlbnQuZW1pdC5hcHBseShwYXJlbnQsIFtldmVudF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUub25QYXJlbnRDaGVjayA9IGZ1bmN0aW9uIG9uUGFyZW50Q2hlY2soY2hlY2tlZCkge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLnNldENoZWNrU3RhdGUoY2hlY2tlZCk7XG4gICAgfVxuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLm9uQ2hpbGRDaGVjayA9IGZ1bmN0aW9uIG9uQ2hpbGRDaGVjaygpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xuXG4gICAgdmFyIHZhbGlkQ2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICByZXR1cm4gIWNoaWxkLmlzRGlzYWJsZWQ7XG4gICAgfSk7XG4gICAgdmFyIGNoZWNrZWQgPSB2YWxpZENoaWxkcmVuLmxlbmd0aCA/IHZhbGlkQ2hpbGRyZW4uZXZlcnkoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQuY2hlY2tlZDtcbiAgICB9KSA6IGZhbHNlO1xuXG4gICAgdGhpcy5zZXRDaGVja1N0YXRlKGNoZWNrZWQpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnNldENoZWNrU3RhdGUgPSBmdW5jdGlvbiBzZXRDaGVja1N0YXRlKGNoZWNrZWQpIHtcbiAgICB2YXIgdG90YWxOdW0gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDtcbiAgICB2YXIgY2hlY2tlZE51bSA9IHRoaXMuY2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uIChjLCBwKSB7XG4gICAgICB2YXIgbnVtID0gcC5jaGVja2VkID8gMSA6IHAuaW5kZXRlcm1pbmF0ZSA/IDAuNSA6IDA7XG4gICAgICByZXR1cm4gYyArIG51bTtcbiAgICB9LCAwKTtcblxuICAgIHRoaXMuY2hlY2tlZCA9IGNoZWNrZWQ7XG4gICAgdGhpcy5pbmRldGVybWluYXRlID0gY2hlY2tlZE51bSAhPT0gdG90YWxOdW0gJiYgY2hlY2tlZE51bSA+IDA7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuc3luY0NoZWNrU3RhdGUgPSBmdW5jdGlvbiBzeW5jQ2hlY2tTdGF0ZShjaGVja2VkVmFsdWUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldFZhbHVlQnlPcHRpb24oKTtcbiAgICB2YXIgY2hlY2tlZCA9IHRoaXMuaXNTYW1lTm9kZShjaGVja2VkVmFsdWUsIHZhbHVlKTtcblxuICAgIHRoaXMuZG9DaGVjayhjaGVja2VkKTtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5kb0NoZWNrID0gZnVuY3Rpb24gZG9DaGVjayhjaGVja2VkKSB7XG4gICAgaWYgKHRoaXMuY2hlY2tlZCAhPT0gY2hlY2tlZCkge1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmNoZWNrU3RyaWN0bHkpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGJvdHRvbSB1cCB0byB1bmlmeSB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGluZGV0ZXJtaW5hdGUgc3RhdGVcbiAgICAgICAgdGhpcy5icm9hZGNhc3QoJ2NoZWNrJywgY2hlY2tlZCk7XG4gICAgICAgIHRoaXMuc2V0Q2hlY2tTdGF0ZShjaGVja2VkKTtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGVjaycpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBub2RlX2NyZWF0ZUNsYXNzKE5vZGUsIFt7XG4gICAga2V5OiAnaXNEaXNhYmxlZCcsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSxcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzLnBhcmVudCxcbiAgICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZztcblxuICAgICAgdmFyIGRpc2FibGVkS2V5ID0gY29uZmlnLmRpc2FibGVkO1xuICAgICAgdmFyIGNoZWNrU3RyaWN0bHkgPSBjb25maWcuY2hlY2tTdHJpY3RseTtcblxuICAgICAgcmV0dXJuIGRhdGFbZGlzYWJsZWRLZXldIHx8ICFjaGVja1N0cmljdGx5ICYmIHBhcmVudCAmJiBwYXJlbnQuaXNEaXNhYmxlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdpc0xlYWYnLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEsXG4gICAgICAgICAgbG9hZGVkID0gdGhpcy5sb2FkZWQsXG4gICAgICAgICAgaGFzQ2hpbGRyZW4gPSB0aGlzLmhhc0NoaWxkcmVuLFxuICAgICAgICAgIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICAgIHZhciBfY29uZmlnMiA9IHRoaXMuY29uZmlnLFxuICAgICAgICAgIGxhenkgPSBfY29uZmlnMi5sYXp5LFxuICAgICAgICAgIGxlYWZLZXkgPSBfY29uZmlnMi5sZWFmO1xuXG4gICAgICBpZiAobGF6eSkge1xuICAgICAgICB2YXIgaXNMZWFmID0gT2JqZWN0KHNoYXJlZF9bXCJpc0RlZlwiXSkoZGF0YVtsZWFmS2V5XSkgPyBkYXRhW2xlYWZLZXldIDogbG9hZGVkID8gIWNoaWxkcmVuLmxlbmd0aCA6IGZhbHNlO1xuICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gIWlzTGVhZjtcbiAgICAgICAgcmV0dXJuIGlzTGVhZjtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhaGFzQ2hpbGRyZW47XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE5vZGU7XG59KCk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19ub2RlID0gKHNyY19ub2RlX05vZGUpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvc3RvcmUuanNcbmZ1bmN0aW9uIHN0b3JlX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuXG5cblxudmFyIGZsYXROb2RlcyA9IGZ1bmN0aW9uIGZsYXROb2RlcyhkYXRhLCBsZWFmT25seSkge1xuICByZXR1cm4gZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgbm9kZSkge1xuICAgIGlmIChub2RlLmlzTGVhZikge1xuICAgICAgcmVzLnB1c2gobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICFsZWFmT25seSAmJiByZXMucHVzaChub2RlKTtcbiAgICAgIHJlcyA9IHJlcy5jb25jYXQoZmxhdE5vZGVzKG5vZGUuY2hpbGRyZW4sIGxlYWZPbmx5KSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH0sIFtdKTtcbn07XG5cbnZhciBzdG9yZV9TdG9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3RvcmUoZGF0YSwgY29uZmlnKSB7XG4gICAgc3RvcmVfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RvcmUpO1xuXG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0Tm9kZXMoZGF0YSk7XG4gIH1cblxuICBTdG9yZS5wcm90b3R5cGUuaW5pdE5vZGVzID0gZnVuY3Rpb24gaW5pdE5vZGVzKGRhdGEpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgZGF0YSA9IE9iamVjdCh1dGlsX1tcImNvZXJjZVRydXRoeVZhbHVlVG9BcnJheVwiXSkoZGF0YSk7XG4gICAgdGhpcy5ub2RlcyA9IGRhdGEubWFwKGZ1bmN0aW9uIChub2RlRGF0YSkge1xuICAgICAgcmV0dXJuIG5ldyBzcmNfbm9kZShub2RlRGF0YSwgX3RoaXMuY29uZmlnKTtcbiAgICB9KTtcbiAgICB0aGlzLmZsYXR0ZWROb2RlcyA9IHRoaXMuZ2V0RmxhdHRlZE5vZGVzKGZhbHNlLCBmYWxzZSk7XG4gICAgdGhpcy5sZWFmTm9kZXMgPSB0aGlzLmdldEZsYXR0ZWROb2Rlcyh0cnVlLCBmYWxzZSk7XG4gIH07XG5cbiAgU3RvcmUucHJvdG90eXBlLmFwcGVuZE5vZGUgPSBmdW5jdGlvbiBhcHBlbmROb2RlKG5vZGVEYXRhLCBwYXJlbnROb2RlKSB7XG4gICAgdmFyIG5vZGUgPSBuZXcgc3JjX25vZGUobm9kZURhdGEsIHRoaXMuY29uZmlnLCBwYXJlbnROb2RlKTtcbiAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnROb2RlID8gcGFyZW50Tm9kZS5jaGlsZHJlbiA6IHRoaXMubm9kZXM7XG5cbiAgICBjaGlsZHJlbi5wdXNoKG5vZGUpO1xuICB9O1xuXG4gIFN0b3JlLnByb3RvdHlwZS5hcHBlbmROb2RlcyA9IGZ1bmN0aW9uIGFwcGVuZE5vZGVzKG5vZGVEYXRhTGlzdCwgcGFyZW50Tm9kZSkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgbm9kZURhdGFMaXN0ID0gT2JqZWN0KHV0aWxfW1wiY29lcmNlVHJ1dGh5VmFsdWVUb0FycmF5XCJdKShub2RlRGF0YUxpc3QpO1xuICAgIG5vZGVEYXRhTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRGF0YSkge1xuICAgICAgcmV0dXJuIF90aGlzMi5hcHBlbmROb2RlKG5vZGVEYXRhLCBwYXJlbnROb2RlKTtcbiAgICB9KTtcbiAgfTtcblxuICBTdG9yZS5wcm90b3R5cGUuZ2V0Tm9kZXMgPSBmdW5jdGlvbiBnZXROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcztcbiAgfTtcblxuICBTdG9yZS5wcm90b3R5cGUuZ2V0RmxhdHRlZE5vZGVzID0gZnVuY3Rpb24gZ2V0RmxhdHRlZE5vZGVzKGxlYWZPbmx5KSB7XG4gICAgdmFyIGNhY2hlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcblxuICAgIHZhciBjYWNoZWROb2RlcyA9IGxlYWZPbmx5ID8gdGhpcy5sZWFmTm9kZXMgOiB0aGlzLmZsYXR0ZWROb2RlcztcbiAgICByZXR1cm4gY2FjaGVkID8gY2FjaGVkTm9kZXMgOiBmbGF0Tm9kZXModGhpcy5ub2RlcywgbGVhZk9ubHkpO1xuICB9O1xuXG4gIFN0b3JlLnByb3RvdHlwZS5nZXROb2RlQnlWYWx1ZSA9IGZ1bmN0aW9uIGdldE5vZGVCeVZhbHVlKHZhbHVlKSB7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5nZXRGbGF0dGVkTm9kZXMoZmFsc2UsICF0aGlzLmNvbmZpZy5sYXp5KS5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBPYmplY3QodXRpbF9bXCJ2YWx1ZUVxdWFsc1wiXSkobm9kZS5wYXRoLCB2YWx1ZSkgfHwgbm9kZS52YWx1ZSA9PT0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5vZGVzICYmIG5vZGVzLmxlbmd0aCA/IG5vZGVzWzBdIDogbnVsbDtcbiAgfTtcblxuICByZXR1cm4gU3RvcmU7XG59KCk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNhc2NhZGVyX3BhbmVsX3NyY19zdG9yZSA9IChzdG9yZV9TdG9yZSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItcGFuZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxudmFyIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxuXG5cblxudmFyIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfS2V5Q29kZSA9IGFyaWFfdXRpbHNfZGVmYXVsdC5hLmtleXM7XG5cbnZhciBEZWZhdWx0UHJvcHMgPSB7XG4gIGV4cGFuZFRyaWdnZXI6ICdjbGljaycsIC8vIG9yIGhvdmVyXG4gIG11bHRpcGxlOiBmYWxzZSxcbiAgY2hlY2tTdHJpY3RseTogZmFsc2UsIC8vIHdoZXRoZXIgYWxsIG5vZGVzIGNhbiBiZSBzZWxlY3RlZFxuICBlbWl0UGF0aDogdHJ1ZSwgLy8gd2V0aGVyIHRvIGVtaXQgYW4gYXJyYXkgb2YgYWxsIGxldmVscyB2YWx1ZSBpbiB3aGljaCBub2RlIGlzIGxvY2F0ZWRcbiAgbGF6eTogZmFsc2UsXG4gIGxhenlMb2FkOiB1dGlsX1tcIm5vb3BcIl0sXG4gIHZhbHVlOiAndmFsdWUnLFxuICBsYWJlbDogJ2xhYmVsJyxcbiAgY2hpbGRyZW46ICdjaGlsZHJlbicsXG4gIGxlYWY6ICdsZWFmJyxcbiAgZGlzYWJsZWQ6ICdkaXNhYmxlZCcsXG4gIGhvdmVyVGhyZXNob2xkOiA1MDBcbn07XG5cbnZhciBjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2lzTGVhZiA9IGZ1bmN0aW9uIGlzTGVhZihlbCkge1xuICByZXR1cm4gIWVsLmdldEF0dHJpYnV0ZSgnYXJpYS1vd25zJyk7XG59O1xuXG52YXIgZ2V0U2libGluZyA9IGZ1bmN0aW9uIGdldFNpYmxpbmcoZWwsIGRpc3RhbmNlKSB7XG4gIHZhciBwYXJlbnROb2RlID0gZWwucGFyZW50Tm9kZTtcblxuICBpZiAocGFyZW50Tm9kZSkge1xuICAgIHZhciBzaWJsaW5ncyA9IHBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbCgnLmVsLWNhc2NhZGVyLW5vZGVbdGFiaW5kZXg9XCItMVwiXScpO1xuICAgIHZhciBpbmRleCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoc2libGluZ3MsIGVsKTtcbiAgICByZXR1cm4gc2libGluZ3NbaW5kZXggKyBkaXN0YW5jZV0gfHwgbnVsbDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBnZXRNZW51SW5kZXggPSBmdW5jdGlvbiBnZXRNZW51SW5kZXgoZWwsIGRpc3RhbmNlKSB7XG4gIGlmICghZWwpIHJldHVybjtcbiAgdmFyIHBpZWNlcyA9IGVsLmlkLnNwbGl0KCctJyk7XG4gIHJldHVybiBOdW1iZXIocGllY2VzW3BpZWNlcy5sZW5ndGggLSAyXSk7XG59O1xuXG52YXIgZm9jdXNOb2RlID0gZnVuY3Rpb24gZm9jdXNOb2RlKGVsKSB7XG4gIGlmICghZWwpIHJldHVybjtcbiAgZWwuZm9jdXMoKTtcbiAgIWNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfaXNMZWFmKGVsKSAmJiBlbC5jbGljaygpO1xufTtcblxudmFyIGNoZWNrTm9kZSA9IGZ1bmN0aW9uIGNoZWNrTm9kZShlbCkge1xuICBpZiAoIWVsKSByZXR1cm47XG5cbiAgdmFyIGlucHV0ID0gZWwucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgaWYgKGlucHV0KSB7XG4gICAgaW5wdXQuY2xpY2soKTtcbiAgfSBlbHNlIGlmIChjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2lzTGVhZihlbCkpIHtcbiAgICBlbC5jbGljaygpO1xuICB9XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbENhc2NhZGVyUGFuZWwnLFxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBDYXNjYWRlck1lbnU6IGNhc2NhZGVyX21lbnVcbiAgfSxcblxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7fSxcbiAgICBvcHRpb25zOiBBcnJheSxcbiAgICBwcm9wczogT2JqZWN0LFxuICAgIGJvcmRlcjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIHJlbmRlckxhYmVsOiBGdW5jdGlvblxuICB9LFxuXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhbmVsOiB0aGlzXG4gICAgfTtcbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2hlY2tlZFZhbHVlOiBudWxsLFxuICAgICAgY2hlY2tlZE5vZGVQYXRoczogW10sXG4gICAgICBzdG9yZTogW10sXG4gICAgICBtZW51czogW10sXG4gICAgICBhY3RpdmVQYXRoOiBbXSxcbiAgICAgIGxvYWRDb3VudDogMFxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGNvbmZpZzogZnVuY3Rpb24gY29uZmlnKCkge1xuICAgICAgcmV0dXJuIG1lcmdlX2RlZmF1bHQoKShjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2V4dGVuZHMoe30sIERlZmF1bHRQcm9wcyksIHRoaXMucHJvcHMgfHwge30pO1xuICAgIH0sXG4gICAgbXVsdGlwbGU6IGZ1bmN0aW9uIG11bHRpcGxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLm11bHRpcGxlO1xuICAgIH0sXG4gICAgY2hlY2tTdHJpY3RseTogZnVuY3Rpb24gY2hlY2tTdHJpY3RseSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5jaGVja1N0cmljdGx5O1xuICAgIH0sXG4gICAgbGVhZk9ubHk6IGZ1bmN0aW9uIGxlYWZPbmx5KCkge1xuICAgICAgcmV0dXJuICF0aGlzLmNoZWNrU3RyaWN0bHk7XG4gICAgfSxcbiAgICBpc0hvdmVyTWVudTogZnVuY3Rpb24gaXNIb3Zlck1lbnUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuZXhwYW5kVHJpZ2dlciA9PT0gJ2hvdmVyJztcbiAgICB9LFxuICAgIHJlbmRlckxhYmVsRm46IGZ1bmN0aW9uIHJlbmRlckxhYmVsRm4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJMYWJlbCB8fCB0aGlzLiRzY29wZWRTbG90cy5kZWZhdWx0O1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSgpIHtcbiAgICAgIHRoaXMuc3luY0NoZWNrZWRWYWx1ZSgpO1xuICAgICAgdGhpcy5jaGVja1N0cmljdGx5ICYmIHRoaXMuY2FsY3VsYXRlQ2hlY2tlZE5vZGVQYXRocygpO1xuICAgIH0sXG5cbiAgICBvcHRpb25zOiB7XG4gICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgICB0aGlzLmluaXRTdG9yZSgpO1xuICAgICAgfSxcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGRlZXA6IHRydWVcbiAgICB9LFxuICAgIGNoZWNrZWRWYWx1ZTogZnVuY3Rpb24gY2hlY2tlZFZhbHVlKHZhbCkge1xuICAgICAgaWYgKCFPYmplY3QodXRpbF9bXCJpc0VxdWFsXCJdKSh2YWwsIHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHRoaXMuY2hlY2tTdHJpY3RseSAmJiB0aGlzLmNhbGN1bGF0ZUNoZWNrZWROb2RlUGF0aHMoKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWwpO1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCB2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIGlmICghdGhpcy5pc0VtcHR5VmFsdWUodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuc3luY0NoZWNrZWRWYWx1ZSgpO1xuICAgIH1cbiAgfSxcblxuXG4gIG1ldGhvZHM6IHtcbiAgICBpbml0U3RvcmU6IGZ1bmN0aW9uIGluaXRTdG9yZSgpIHtcbiAgICAgIHZhciBjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG4gICAgICBpZiAoY29uZmlnLmxhenkgJiYgT2JqZWN0KHV0aWxfW1wiaXNFbXB0eVwiXSkob3B0aW9ucykpIHtcbiAgICAgICAgdGhpcy5sYXp5TG9hZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9yZSA9IG5ldyBjYXNjYWRlcl9wYW5lbF9zcmNfc3RvcmUob3B0aW9ucywgY29uZmlnKTtcbiAgICAgICAgdGhpcy5tZW51cyA9IFt0aGlzLnN0b3JlLmdldE5vZGVzKCldO1xuICAgICAgICB0aGlzLnN5bmNNZW51U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN5bmNDaGVja2VkVmFsdWU6IGZ1bmN0aW9uIHN5bmNDaGVja2VkVmFsdWUoKSB7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgIGNoZWNrZWRWYWx1ZSA9IHRoaXMuY2hlY2tlZFZhbHVlO1xuXG4gICAgICBpZiAoIU9iamVjdCh1dGlsX1tcImlzRXF1YWxcIl0pKHZhbHVlLCBjaGVja2VkVmFsdWUpKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlUGF0aCA9IFtdO1xuICAgICAgICB0aGlzLmNoZWNrZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnN5bmNNZW51U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN5bmNNZW51U3RhdGU6IGZ1bmN0aW9uIHN5bmNNZW51U3RhdGUoKSB7XG4gICAgICB2YXIgbXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlLFxuICAgICAgICAgIGNoZWNrU3RyaWN0bHkgPSB0aGlzLmNoZWNrU3RyaWN0bHk7XG5cbiAgICAgIHRoaXMuc3luY0FjdGl2ZVBhdGgoKTtcbiAgICAgIG11bHRpcGxlICYmIHRoaXMuc3luY011bHRpQ2hlY2tTdGF0ZSgpO1xuICAgICAgY2hlY2tTdHJpY3RseSAmJiB0aGlzLmNhbGN1bGF0ZUNoZWNrZWROb2RlUGF0aHMoKTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKHRoaXMuc2Nyb2xsSW50b1ZpZXcpO1xuICAgIH0sXG4gICAgc3luY011bHRpQ2hlY2tTdGF0ZTogZnVuY3Rpb24gc3luY011bHRpQ2hlY2tTdGF0ZSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBub2RlcyA9IHRoaXMuZ2V0RmxhdHRlZE5vZGVzKHRoaXMubGVhZk9ubHkpO1xuXG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIG5vZGUuc3luY0NoZWNrU3RhdGUoX3RoaXMuY2hlY2tlZFZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgaXNFbXB0eVZhbHVlOiBmdW5jdGlvbiBpc0VtcHR5VmFsdWUodmFsKSB7XG4gICAgICB2YXIgbXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlLFxuICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgdmFyIGVtaXRQYXRoID0gY29uZmlnLmVtaXRQYXRoO1xuXG4gICAgICBpZiAobXVsdGlwbGUgfHwgZW1pdFBhdGgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcImlzRW1wdHlcIl0pKHZhbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBzeW5jQWN0aXZlUGF0aDogZnVuY3Rpb24gc3luY0FjdGl2ZVBhdGgoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHN0b3JlID0gdGhpcy5zdG9yZSxcbiAgICAgICAgICBtdWx0aXBsZSA9IHRoaXMubXVsdGlwbGUsXG4gICAgICAgICAgYWN0aXZlUGF0aCA9IHRoaXMuYWN0aXZlUGF0aCxcbiAgICAgICAgICBjaGVja2VkVmFsdWUgPSB0aGlzLmNoZWNrZWRWYWx1ZTtcblxuXG4gICAgICBpZiAoIU9iamVjdCh1dGlsX1tcImlzRW1wdHlcIl0pKGFjdGl2ZVBhdGgpKSB7XG4gICAgICAgIHZhciBub2RlcyA9IGFjdGl2ZVBhdGgubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMi5nZXROb2RlQnlWYWx1ZShub2RlLmdldFZhbHVlKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBhbmROb2Rlcyhub2Rlcyk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRW1wdHlWYWx1ZShjaGVja2VkVmFsdWUpKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG11bHRpcGxlID8gY2hlY2tlZFZhbHVlWzBdIDogY2hlY2tlZFZhbHVlO1xuICAgICAgICB2YXIgY2hlY2tlZE5vZGUgPSB0aGlzLmdldE5vZGVCeVZhbHVlKHZhbHVlKSB8fCB7fTtcbiAgICAgICAgdmFyIF9ub2RlcyA9IChjaGVja2VkTm9kZS5wYXRoTm9kZXMgfHwgW10pLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgdGhpcy5leHBhbmROb2Rlcyhfbm9kZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hY3RpdmVQYXRoID0gW107XG4gICAgICAgIHRoaXMubWVudXMgPSBbc3RvcmUuZ2V0Tm9kZXMoKV07XG4gICAgICB9XG4gICAgfSxcbiAgICBleHBhbmROb2RlczogZnVuY3Rpb24gZXhwYW5kTm9kZXMobm9kZXMpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBfdGhpczMuaGFuZGxlRXhwYW5kKG5vZGUsIHRydWUgLyogc2lsZW50ICovKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY2FsY3VsYXRlQ2hlY2tlZE5vZGVQYXRoczogZnVuY3Rpb24gY2FsY3VsYXRlQ2hlY2tlZE5vZGVQYXRocygpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICB2YXIgY2hlY2tlZFZhbHVlID0gdGhpcy5jaGVja2VkVmFsdWUsXG4gICAgICAgICAgbXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlO1xuXG4gICAgICB2YXIgY2hlY2tlZFZhbHVlcyA9IG11bHRpcGxlID8gT2JqZWN0KHV0aWxfW1wiY29lcmNlVHJ1dGh5VmFsdWVUb0FycmF5XCJdKShjaGVja2VkVmFsdWUpIDogW2NoZWNrZWRWYWx1ZV07XG4gICAgICB0aGlzLmNoZWNrZWROb2RlUGF0aHMgPSBjaGVja2VkVmFsdWVzLm1hcChmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgY2hlY2tlZE5vZGUgPSBfdGhpczQuZ2V0Tm9kZUJ5VmFsdWUodik7XG4gICAgICAgIHJldHVybiBjaGVja2VkTm9kZSA/IGNoZWNrZWROb2RlLnBhdGhOb2RlcyA6IFtdO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBoYW5kbGVLZXlEb3duOiBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGUpIHtcbiAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCxcbiAgICAgICAgICBrZXlDb2RlID0gZS5rZXlDb2RlO1xuXG5cbiAgICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgICBjYXNlIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfS2V5Q29kZS51cDpcbiAgICAgICAgICB2YXIgcHJldiA9IGdldFNpYmxpbmcodGFyZ2V0LCAtMSk7XG4gICAgICAgICAgZm9jdXNOb2RlKHByZXYpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGNhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfS2V5Q29kZS5kb3duOlxuICAgICAgICAgIHZhciBuZXh0ID0gZ2V0U2libGluZyh0YXJnZXQsIDEpO1xuICAgICAgICAgIGZvY3VzTm9kZShuZXh0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0tleUNvZGUubGVmdDpcbiAgICAgICAgICB2YXIgcHJlTWVudSA9IHRoaXMuJHJlZnMubWVudVtnZXRNZW51SW5kZXgodGFyZ2V0KSAtIDFdO1xuICAgICAgICAgIGlmIChwcmVNZW51KSB7XG4gICAgICAgICAgICB2YXIgZXhwYW5kZWROb2RlID0gcHJlTWVudS4kZWwucXVlcnlTZWxlY3RvcignLmVsLWNhc2NhZGVyLW5vZGVbYXJpYS1leHBhbmRlZD1cInRydWVcIl0nKTtcbiAgICAgICAgICAgIGZvY3VzTm9kZShleHBhbmRlZE5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0tleUNvZGUucmlnaHQ6XG4gICAgICAgICAgdmFyIG5leHRNZW51ID0gdGhpcy4kcmVmcy5tZW51W2dldE1lbnVJbmRleCh0YXJnZXQpICsgMV07XG4gICAgICAgICAgaWYgKG5leHRNZW51KSB7XG4gICAgICAgICAgICB2YXIgZmlyc3ROb2RlID0gbmV4dE1lbnUuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5lbC1jYXNjYWRlci1ub2RlW3RhYmluZGV4PVwiLTFcIl0nKTtcbiAgICAgICAgICAgIGZvY3VzTm9kZShmaXJzdE5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0tleUNvZGUuZW50ZXI6XG4gICAgICAgICAgY2hlY2tOb2RlKHRhcmdldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19LZXlDb2RlLmVzYzpcbiAgICAgICAgY2FzZSBjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX0tleUNvZGUudGFiOlxuICAgICAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlRXhwYW5kOiBmdW5jdGlvbiBoYW5kbGVFeHBhbmQobm9kZSwgc2lsZW50KSB7XG4gICAgICB2YXIgYWN0aXZlUGF0aCA9IHRoaXMuYWN0aXZlUGF0aDtcbiAgICAgIHZhciBsZXZlbCA9IG5vZGUubGV2ZWw7XG5cbiAgICAgIHZhciBwYXRoID0gYWN0aXZlUGF0aC5zbGljZSgwLCBsZXZlbCAtIDEpO1xuICAgICAgdmFyIG1lbnVzID0gdGhpcy5tZW51cy5zbGljZSgwLCBsZXZlbCk7XG5cbiAgICAgIGlmICghbm9kZS5pc0xlYWYpIHtcbiAgICAgICAgcGF0aC5wdXNoKG5vZGUpO1xuICAgICAgICBtZW51cy5wdXNoKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFjdGl2ZVBhdGggPSBwYXRoO1xuICAgICAgdGhpcy5tZW51cyA9IG1lbnVzO1xuXG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICB2YXIgcGF0aFZhbHVlcyA9IHBhdGgubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuZ2V0VmFsdWUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBhY3RpdmVQYXRoVmFsdWVzID0gYWN0aXZlUGF0aC5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5nZXRWYWx1ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFPYmplY3QodXRpbF9bXCJ2YWx1ZUVxdWFsc1wiXSkocGF0aFZhbHVlcywgYWN0aXZlUGF0aFZhbHVlcykpIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdhY3RpdmUtaXRlbS1jaGFuZ2UnLCBwYXRoVmFsdWVzKTsgLy8gRGVwcmVjYXRlZFxuICAgICAgICAgIHRoaXMuJGVtaXQoJ2V4cGFuZC1jaGFuZ2UnLCBwYXRoVmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlQ2hlY2tDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoZWNrQ2hhbmdlKHZhbHVlKSB7XG4gICAgICB0aGlzLmNoZWNrZWRWYWx1ZSA9IHZhbHVlO1xuICAgIH0sXG4gICAgbGF6eUxvYWQ6IGZ1bmN0aW9uIGxhenlMb2FkKG5vZGUsIG9uRnVsbGZpbGVkKSB7XG4gICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgdmFyIGNvbmZpZyA9IHRoaXMuY29uZmlnO1xuXG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgbm9kZSA9IG5vZGUgfHwgeyByb290OiB0cnVlLCBsZXZlbDogMCB9O1xuICAgICAgICB0aGlzLnN0b3JlID0gbmV3IGNhc2NhZGVyX3BhbmVsX3NyY19zdG9yZShbXSwgY29uZmlnKTtcbiAgICAgICAgdGhpcy5tZW51cyA9IFt0aGlzLnN0b3JlLmdldE5vZGVzKCldO1xuICAgICAgfVxuICAgICAgbm9kZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZShkYXRhTGlzdCkge1xuICAgICAgICB2YXIgcGFyZW50ID0gbm9kZS5yb290ID8gbnVsbCA6IG5vZGU7XG4gICAgICAgIGRhdGFMaXN0ICYmIGRhdGFMaXN0Lmxlbmd0aCAmJiBfdGhpczUuc3RvcmUuYXBwZW5kTm9kZXMoZGF0YUxpc3QsIHBhcmVudCk7XG4gICAgICAgIG5vZGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICBub2RlLmxvYWRlZCA9IHRydWU7XG5cbiAgICAgICAgLy8gZGlzcG9zZSBkZWZhdWx0IHZhbHVlIG9uIGxhenkgbG9hZCBtb2RlXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF90aGlzNS5jaGVja2VkVmFsdWUpKSB7XG4gICAgICAgICAgdmFyIG5vZGVWYWx1ZSA9IF90aGlzNS5jaGVja2VkVmFsdWVbX3RoaXM1LmxvYWRDb3VudCsrXTtcbiAgICAgICAgICB2YXIgdmFsdWVLZXkgPSBfdGhpczUuY29uZmlnLnZhbHVlO1xuICAgICAgICAgIHZhciBsZWFmS2V5ID0gX3RoaXM1LmNvbmZpZy5sZWFmO1xuXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YUxpc3QpICYmIGRhdGFMaXN0LmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdmFsdWVLZXldID09PSBub2RlVmFsdWU7XG4gICAgICAgICAgfSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyIGNoZWNrZWROb2RlID0gX3RoaXM1LnN0b3JlLmdldE5vZGVCeVZhbHVlKG5vZGVWYWx1ZSk7XG5cbiAgICAgICAgICAgIGlmICghY2hlY2tlZE5vZGUuZGF0YVtsZWFmS2V5XSkge1xuICAgICAgICAgICAgICBfdGhpczUubGF6eUxvYWQoY2hlY2tlZE5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBfdGhpczUuaGFuZGxlRXhwYW5kKGNoZWNrZWROb2RlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfdGhpczUubG9hZENvdW50ID09PSBfdGhpczUuY2hlY2tlZFZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICBfdGhpczUuJHBhcmVudC5jb21wdXRlUHJlc2VudFRleHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBvbkZ1bGxmaWxlZCAmJiBvbkZ1bGxmaWxlZChkYXRhTGlzdCk7XG4gICAgICB9O1xuICAgICAgY29uZmlnLmxhenlMb2FkKG5vZGUsIHJlc29sdmUpO1xuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqIHB1YmxpYyBtZXRob2RzXG4gICAgKi9cbiAgICBjYWxjdWxhdGVNdWx0aUNoZWNrZWRWYWx1ZTogZnVuY3Rpb24gY2FsY3VsYXRlTXVsdGlDaGVja2VkVmFsdWUoKSB7XG4gICAgICB0aGlzLmNoZWNrZWRWYWx1ZSA9IHRoaXMuZ2V0Q2hlY2tlZE5vZGVzKHRoaXMubGVhZk9ubHkpLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5nZXRWYWx1ZUJ5T3B0aW9uKCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNjcm9sbEludG9WaWV3OiBmdW5jdGlvbiBzY3JvbGxJbnRvVmlldygpIHtcbiAgICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuXG4gICAgICB2YXIgbWVudXMgPSB0aGlzLiRyZWZzLm1lbnUgfHwgW107XG4gICAgICBtZW51cy5mb3JFYWNoKGZ1bmN0aW9uIChtZW51KSB7XG4gICAgICAgIHZhciBtZW51RWxlbWVudCA9IG1lbnUuJGVsO1xuICAgICAgICBpZiAobWVudUVsZW1lbnQpIHtcbiAgICAgICAgICB2YXIgY29udGFpbmVyID0gbWVudUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVsLXNjcm9sbGJhcl9fd3JhcCcpO1xuICAgICAgICAgIHZhciBhY3RpdmVOb2RlID0gbWVudUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVsLWNhc2NhZGVyLW5vZGUuaXMtYWN0aXZlJykgfHwgbWVudUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVsLWNhc2NhZGVyLW5vZGUuaW4tYWN0aXZlLXBhdGgnKTtcbiAgICAgICAgICBzY3JvbGxfaW50b192aWV3X2RlZmF1bHQoKShjb250YWluZXIsIGFjdGl2ZU5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldE5vZGVCeVZhbHVlOiBmdW5jdGlvbiBnZXROb2RlQnlWYWx1ZSh2YWwpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JlLmdldE5vZGVCeVZhbHVlKHZhbCk7XG4gICAgfSxcbiAgICBnZXRGbGF0dGVkTm9kZXM6IGZ1bmN0aW9uIGdldEZsYXR0ZWROb2RlcyhsZWFmT25seSkge1xuICAgICAgdmFyIGNhY2hlZCA9ICF0aGlzLmNvbmZpZy5sYXp5O1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0RmxhdHRlZE5vZGVzKGxlYWZPbmx5LCBjYWNoZWQpO1xuICAgIH0sXG4gICAgZ2V0Q2hlY2tlZE5vZGVzOiBmdW5jdGlvbiBnZXRDaGVja2VkTm9kZXMobGVhZk9ubHkpIHtcbiAgICAgIHZhciBjaGVja2VkVmFsdWUgPSB0aGlzLmNoZWNrZWRWYWx1ZSxcbiAgICAgICAgICBtdWx0aXBsZSA9IHRoaXMubXVsdGlwbGU7XG5cbiAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLmdldEZsYXR0ZWROb2RlcyhsZWFmT25seSk7XG4gICAgICAgIHJldHVybiBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5jaGVja2VkO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRW1wdHlWYWx1ZShjaGVja2VkVmFsdWUpID8gW10gOiBbdGhpcy5nZXROb2RlQnlWYWx1ZShjaGVja2VkVmFsdWUpXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsZWFyQ2hlY2tlZE5vZGVzOiBmdW5jdGlvbiBjbGVhckNoZWNrZWROb2RlcygpIHtcbiAgICAgIHZhciBjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBsZWFmT25seSA9IHRoaXMubGVhZk9ubHk7XG4gICAgICB2YXIgbXVsdGlwbGUgPSBjb25maWcubXVsdGlwbGUsXG4gICAgICAgICAgZW1pdFBhdGggPSBjb25maWcuZW1pdFBhdGg7XG5cbiAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmdldENoZWNrZWROb2RlcyhsZWFmT25seSkuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuICFub2RlLmlzRGlzYWJsZWQ7XG4gICAgICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5kb0NoZWNrKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlTXVsdGlDaGVja2VkVmFsdWUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZFZhbHVlID0gZW1pdFBhdGggPyBbXSA6IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLXBhbmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvc3JjL2Nhc2NhZGVyLXBhbmVsLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNhc2NhZGVyX3BhbmVsX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX2Nhc2NhZGVyX3BhbmVsdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBjYXNjYWRlcl9wYW5lbHZ1ZV90eXBlX3RlbXBsYXRlX2lkXzM0OTMyMzQ2X3JlbmRlcixcbiAgY2FzY2FkZXJfcGFuZWx2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDkzMjM0Nl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGNhc2NhZGVyX3BhbmVsX2FwaTsgfVxuY2FzY2FkZXJfcGFuZWxfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9jYXNjYWRlci1wYW5lbC9zcmMvY2FzY2FkZXItcGFuZWwudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGNhc2NhZGVyX3BhbmVsID0gKGNhc2NhZGVyX3BhbmVsX2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvY2FzY2FkZXItcGFuZWwvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY2FzY2FkZXJfcGFuZWwuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChjYXNjYWRlcl9wYW5lbC5uYW1lLCBjYXNjYWRlcl9wYW5lbCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19jYXNjYWRlcl9wYW5lbCA9IChjYXNjYWRlcl9wYW5lbCk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9hdmF0YXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBhdmF0YXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxBdmF0YXInLFxuXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gWydsYXJnZScsICdtZWRpdW0nLCAnc21hbGwnXS5pbmNsdWRlcyh2YWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJztcbiAgICAgIH1cbiAgICB9LFxuICAgIHNoYXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnY2lyY2xlJyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gWydjaXJjbGUnLCAnc3F1YXJlJ10uaW5jbHVkZXModmFsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGljb246IFN0cmluZyxcbiAgICBzcmM6IFN0cmluZyxcbiAgICBhbHQ6IFN0cmluZyxcbiAgICBzcmNTZXQ6IFN0cmluZyxcbiAgICBlcnJvcjogRnVuY3Rpb24sXG4gICAgZml0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnY292ZXInXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzSW1hZ2VFeGlzdDogdHJ1ZVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGF2YXRhckNsYXNzOiBmdW5jdGlvbiBhdmF0YXJDbGFzcygpIHtcbiAgICAgIHZhciBzaXplID0gdGhpcy5zaXplLFxuICAgICAgICAgIGljb24gPSB0aGlzLmljb24sXG4gICAgICAgICAgc2hhcGUgPSB0aGlzLnNoYXBlO1xuXG4gICAgICB2YXIgY2xhc3NMaXN0ID0gWydlbC1hdmF0YXInXTtcblxuICAgICAgaWYgKHNpemUgJiYgdHlwZW9mIHNpemUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNsYXNzTGlzdC5wdXNoKCdlbC1hdmF0YXItLScgKyBzaXplKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2VsLWF2YXRhci0taWNvbicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2hhcGUpIHtcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2VsLWF2YXRhci0tJyArIHNoYXBlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsYXNzTGlzdC5qb2luKCcgJyk7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVFcnJvcjogZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XG4gICAgICB2YXIgZXJyb3IgPSB0aGlzLmVycm9yO1xuXG4gICAgICB2YXIgZXJyb3JGbGFnID0gZXJyb3IgPyBlcnJvcigpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGVycm9yRmxhZyAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5pc0ltYWdlRXhpc3QgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlbmRlckF2YXRhcjogZnVuY3Rpb24gcmVuZGVyQXZhdGFyKCkge1xuICAgICAgdmFyIGggPSB0aGlzLiRjcmVhdGVFbGVtZW50O1xuICAgICAgdmFyIGljb24gPSB0aGlzLmljb24sXG4gICAgICAgICAgc3JjID0gdGhpcy5zcmMsXG4gICAgICAgICAgYWx0ID0gdGhpcy5hbHQsXG4gICAgICAgICAgaXNJbWFnZUV4aXN0ID0gdGhpcy5pc0ltYWdlRXhpc3QsXG4gICAgICAgICAgc3JjU2V0ID0gdGhpcy5zcmNTZXQsXG4gICAgICAgICAgZml0ID0gdGhpcy5maXQ7XG5cblxuICAgICAgaWYgKGlzSW1hZ2VFeGlzdCAmJiBzcmMpIHtcbiAgICAgICAgcmV0dXJuIGgoJ2ltZycsIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgc3JjOiBzcmMsXG5cbiAgICAgICAgICAgIGFsdDogYWx0LFxuICAgICAgICAgICAgc3JjU2V0OiBzcmNTZXRcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAnZXJyb3InOiB0aGlzLmhhbmRsZUVycm9yXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHlsZTogeyAnb2JqZWN0LWZpdCc6IGZpdCB9IH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaWNvbikge1xuICAgICAgICByZXR1cm4gaCgnaScsIHsgJ2NsYXNzJzogaWNvbiB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuJHNsb3RzLmRlZmF1bHQ7XG4gICAgfVxuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHZhciBoID0gYXJndW1lbnRzWzBdO1xuICAgIHZhciBhdmF0YXJDbGFzcyA9IHRoaXMuYXZhdGFyQ2xhc3MsXG4gICAgICAgIHNpemUgPSB0aGlzLnNpemU7XG5cblxuICAgIHZhciBzaXplU3R5bGUgPSB0eXBlb2Ygc2l6ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgICBoZWlnaHQ6IHNpemUgKyAncHgnLFxuICAgICAgd2lkdGg6IHNpemUgKyAncHgnLFxuICAgICAgbGluZUhlaWdodDogc2l6ZSArICdweCdcbiAgICB9IDoge307XG5cbiAgICByZXR1cm4gaChcbiAgICAgICdzcGFuJyxcbiAgICAgIHsgJ2NsYXNzJzogYXZhdGFyQ2xhc3MsIHN0eWxlOiBzaXplU3R5bGUgfSxcbiAgICAgIFt0aGlzLnJlbmRlckF2YXRhcigpXVxuICAgICk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9hdmF0YXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2F2YXRhcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChhdmF0YXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvYXZhdGFyL3NyYy9tYWluLnZ1ZVxudmFyIHNyY19tYWluX3JlbmRlciwgc3JjX21haW5fc3RhdGljUmVuZGVyRm5zXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGF2YXRhcl9zcmNfbWFpbl9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX2F2YXRhcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgc3JjX21haW5fcmVuZGVyLFxuICBzcmNfbWFpbl9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGF2YXRhcl9zcmNfbWFpbl9hcGk7IH1cbmF2YXRhcl9zcmNfbWFpbl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL2F2YXRhci9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgYXZhdGFyX3NyY19tYWluID0gKGF2YXRhcl9zcmNfbWFpbl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2F2YXRhci9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5hdmF0YXJfc3JjX21haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChhdmF0YXJfc3JjX21haW4ubmFtZSwgYXZhdGFyX3NyY19tYWluKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGF2YXRhciA9IChhdmF0YXJfc3JjX21haW4pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kcmF3ZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE0ODg1MjY0JlxudmFyIG1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF9hNDg4NTI2NF9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJ0cmFuc2l0aW9uXCIsXG4gICAge1xuICAgICAgYXR0cnM6IHsgbmFtZTogXCJlbC1kcmF3ZXItZmFkZVwiIH0sXG4gICAgICBvbjogeyBcImFmdGVyLWVudGVyXCI6IF92bS5hZnRlckVudGVyLCBcImFmdGVyLWxlYXZlXCI6IF92bS5hZnRlckxlYXZlIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS52aXNpYmxlLFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInZpc2libGVcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtZHJhd2VyX193cmFwcGVyXCIsXG4gICAgICAgICAgYXR0cnM6IHsgdGFiaW5kZXg6IFwiLTFcIiB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWRyYXdlcl9fY29udGFpbmVyXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiBfdm0udmlzaWJsZSAmJiBcImVsLWRyYXdlcl9fb3BlblwiLFxuICAgICAgICAgICAgICBhdHRyczogeyByb2xlOiBcImRvY3VtZW50XCIsIHRhYmluZGV4OiBcIi0xXCIgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaGFuZGxlV3JhcHBlckNsaWNrKCRldmVudClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgcmVmOiBcImRyYXdlclwiLFxuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtZHJhd2VyXCIsXG4gICAgICAgICAgICAgICAgICBjbGFzczogW192bS5kaXJlY3Rpb24sIF92bS5jdXN0b21DbGFzc10sXG4gICAgICAgICAgICAgICAgICBzdHlsZTogX3ZtLmlzSG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICA/IFwid2lkdGg6IFwiICsgX3ZtLmRyYXdlclNpemVcbiAgICAgICAgICAgICAgICAgICAgOiBcImhlaWdodDogXCIgKyBfdm0uZHJhd2VyU2l6ZSxcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1tb2RhbFwiOiBcInRydWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogXCJlbC1kcmF3ZXJfX3RpdGxlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfdm0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHJvbGU6IFwiZGlhbG9nXCIsXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4OiBcIi0xXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF92bS53aXRoSGVhZGVyXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlYWRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1kcmF3ZXJfX2hlYWRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJlbC1kcmF3ZXJfX3RpdGxlXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl90KFwidGl0bGVcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IHJvbGU6IFwiaGVhZGluZ1wiLCB0aXRsZTogX3ZtLnRpdGxlIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50aXRsZSkpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93Q2xvc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtZHJhd2VyX19jbG9zZS1idG5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2xvc2UgXCIgKyAoX3ZtLnRpdGxlIHx8IFwiZHJhd2VyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5jbG9zZURyYXdlciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtZGlhbG9nX19jbG9zZSBlbC1pY29uIGVsLWljb24tY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgIF92bS5yZW5kZXJlZFxuICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWRyYXdlcl9fYm9keVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICApXG4gICAgXVxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkX2E0ODg1MjY0X3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfYTQ4ODUyNjRfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kcmF3ZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE0ODg1MjY0JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9kcmF3ZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkcmF3ZXJfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxEcmF3ZXInLFxuICBtaXhpbnM6IFtwb3B1cF9kZWZhdWx0LmEsIGVtaXR0ZXJfZGVmYXVsdC5hXSxcbiAgcHJvcHM6IHtcbiAgICBhcHBlbmRUb0JvZHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgYmVmb3JlQ2xvc2U6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uXG4gICAgfSxcbiAgICBjdXN0b21DbGFzczoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGNsb3NlT25QcmVzc0VzY2FwZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGRlc3Ryb3lPbkNsb3NlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG1vZGFsOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgZGlyZWN0aW9uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAncnRsJyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gWydsdHInLCAncnRsJywgJ3R0YicsICdidHQnXS5pbmRleE9mKHZhbCkgIT09IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgbW9kYWxBcHBlbmRUb0JvZHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBzaG93Q2xvc2U6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogJzMwJSdcbiAgICB9LFxuICAgIHRpdGxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgdmlzaWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgd3JhcHBlckNsb3NhYmxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgd2l0aEhlYWRlcjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNIb3Jpem9udGFsOiBmdW5jdGlvbiBpc0hvcml6b250YWwoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXJlY3Rpb24gPT09ICdydGwnIHx8IHRoaXMuZGlyZWN0aW9uID09PSAnbHRyJztcbiAgICB9LFxuICAgIGRyYXdlclNpemU6IGZ1bmN0aW9uIGRyYXdlclNpemUoKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHRoaXMuc2l6ZSA9PT0gJ251bWJlcicgPyB0aGlzLnNpemUgKyAncHgnIDogdGhpcy5zaXplO1xuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2xvc2VkOiBmYWxzZSxcbiAgICAgIHByZXZBY3RpdmVFbGVtZW50OiBudWxsXG4gICAgfTtcbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHZpc2libGU6IGZ1bmN0aW9uIHZpc2libGUodmFsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodmFsKSB7XG4gICAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuJGVtaXQoJ29wZW4nKTtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLiRlbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmV2QWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgdGhpcy4kZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgICBpZiAodGhpcy5kZXN0cm95T25DbG9zZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKF90aGlzLnByZXZBY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBfdGhpcy5wcmV2QWN0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgYWZ0ZXJFbnRlcjogZnVuY3Rpb24gYWZ0ZXJFbnRlcigpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ29wZW5lZCcpO1xuICAgIH0sXG4gICAgYWZ0ZXJMZWF2ZTogZnVuY3Rpb24gYWZ0ZXJMZWF2ZSgpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlZCcpO1xuICAgIH0sXG4gICAgaGlkZTogZnVuY3Rpb24gaGlkZShjYW5jZWwpIHtcbiAgICAgIGlmIChjYW5jZWwgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTp2aXNpYmxlJywgZmFsc2UpO1xuICAgICAgICB0aGlzLiRlbWl0KCdjbG9zZScpO1xuICAgICAgICBpZiAodGhpcy5kZXN0cm95T25DbG9zZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMucmVuZGVyZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVXcmFwcGVyQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZVdyYXBwZXJDbGljaygpIHtcbiAgICAgIGlmICh0aGlzLndyYXBwZXJDbG9zYWJsZSkge1xuICAgICAgICB0aGlzLmNsb3NlRHJhd2VyKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbG9zZURyYXdlcjogZnVuY3Rpb24gY2xvc2VEcmF3ZXIoKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuYmVmb3JlQ2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5iZWZvcmVDbG9zZSh0aGlzLmhpZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVDbG9zZTogZnVuY3Rpb24gaGFuZGxlQ2xvc2UoKSB7XG4gICAgICAvLyBUaGlzIG1ldGhvZCBoZXJlIHdpbGwgYmUgY2FsbGVkIGJ5IFBvcHVwTWFuZ2VyLCB3aGVuIHRoZSBgY2xvc2VPblByZXNzRXNjYXBlYCB3YXMgc2V0IHRvIHRydWVcbiAgICAgIC8vIHByZXNzaW5nIGBFU0NgIHdpbGwgY2FsbCB0aGlzIG1ldGhvZCwgYW5kIGFsc28gY2xvc2UgdGhlIGRyYXdlci5cbiAgICAgIC8vIFRoaXMgbWV0aG9kIGFsc28gY2FsbHMgYGJlZm9yZUNsb3NlYCBpZiB0aGVyZSB3YXMgb25lLlxuICAgICAgdGhpcy5jbG9zZURyYXdlcigpO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy4kZWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgLy8gaWYgYXBwZW5kVG9Cb2R5IGlzIHRydWUsIHJlbW92ZSBET00gbm9kZSBhZnRlciBkZXN0cm95XG4gICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5ICYmIHRoaXMuJGVsICYmIHRoaXMuJGVsLnBhcmVudE5vZGUpIHtcbiAgICAgIHRoaXMuJGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy4kZWwpO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2RyYXdlci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfZHJhd2VyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGRyYXdlcl9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kcmF3ZXIvc3JjL21haW4udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgZHJhd2VyX3NyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfZHJhd2VyX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfYTQ4ODUyNjRfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfYTQ4ODUyNjRfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBkcmF3ZXJfc3JjX21haW5fYXBpOyB9XG5kcmF3ZXJfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9kcmF3ZXIvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGRyYXdlcl9zcmNfbWFpbiA9IChkcmF3ZXJfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kcmF3ZXIvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZHJhd2VyX3NyY19tYWluLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoZHJhd2VyX3NyY19tYWluLm5hbWUsIGRyYXdlcl9zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkcmF3ZXIgPSAoZHJhd2VyX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc3RhdGlzdGljL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NjMzOWFhNyZcbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNzYzMzlhYTdfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtc3RhdGlzdGljXCIgfSwgW1xuICAgIF92bS50aXRsZSB8fCBfdm0uJHNsb3RzLnRpdGxlXG4gICAgICA/IF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJoZWFkXCIgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfdm0uX3QoXCJ0aXRsZVwiLCBbXG4gICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInRpdGxlXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgICAgXCIgKyBfdm0uX3MoX3ZtLnRpdGxlKSArIFwiXFxuICAgICAgXCIpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgMlxuICAgICAgICApXG4gICAgICA6IF92bS5fZSgpLFxuICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY29uXCIgfSwgW1xuICAgICAgX3ZtLnByZWZpeCB8fCBfdm0uJHNsb3RzLnByZWZpeFxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInByZWZpeFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS5fdChcInByZWZpeFwiLCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgICBcIiArIF92bS5fcyhfdm0ucHJlZml4KSArIFwiXFxuICAgICAgXCIpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF9jKFxuICAgICAgICBcInNwYW5cIixcbiAgICAgICAgeyBzdGF0aWNDbGFzczogXCJudW1iZXJcIiwgc3R5bGU6IF92bS52YWx1ZVN0eWxlIH0sXG4gICAgICAgIFtfdm0uX3QoXCJmb3JtYXR0ZXJcIiwgW192bS5fdihcIiBcIiArIF92bS5fcyhfdm0uZGlzcG9zZVZhbHVlKSldKV0sXG4gICAgICAgIDJcbiAgICAgICksXG4gICAgICBfdm0uc3VmZml4IHx8IF92bS4kc2xvdHMuc3VmZml4XG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwic3VmZml4XCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl90KFwic3VmZml4XCIsIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgIFwiICsgX3ZtLl9zKF92bS5zdWZmaXgpICsgXCJcXG4gICAgICBcIilcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpXG4gICAgXSlcbiAgXSlcbn1cbnZhciBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNzYzMzlhYTdfc3RhdGljUmVuZGVyRm5zID0gW11cbm1haW52dWVfdHlwZV90ZW1wbGF0ZV9pZF83NjMzOWFhN19yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3N0YXRpc3RpYy9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzYzMzlhYTcmXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi91dGlscy9sb2Rhc2hcIlxudmFyIGxvZGFzaF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc3RhdGlzdGljL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzdGF0aXN0aWNfc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxTdGF0aXN0aWMnLFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwb3NlVmFsdWU6ICcnLFxuICAgICAgdGltZVRhc2s6IG51bGwsXG4gICAgICBSRUZSRVNIX0lOVEVSVkFMOiAxMDAwIC8gMzBcbiAgICB9O1xuICB9LFxuXG4gIHByb3BzOiB7XG4gICAgZGVjaW1hbFNlcGFyYXRvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJy4nXG4gICAgfSxcbiAgICBncm91cFNlcGFyYXRvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIHByZWNpc2lvbjoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlciwgRGF0ZV0sXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgcHJlZml4OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgc3VmZml4OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgdGltZUluZGljZXM6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgdmFsdWVTdHlsZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ0hIOm1tOnNzOlNTUydcbiAgICB9LFxuICAgIHJhdGU6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDEwMDBcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdGhpcy5icmFuY2goKTtcbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSgpIHtcbiAgICAgIHRoaXMuYnJhbmNoKCk7XG4gICAgfSxcbiAgICBncm91cFNlcGFyYXRvcjogZnVuY3Rpb24gZ3JvdXBTZXBhcmF0b3IoKSB7XG4gICAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgICB9LFxuICAgIG11bHJpcGxlOiBmdW5jdGlvbiBtdWxyaXBsZSgpIHtcbiAgICAgIHRoaXMuZGlzcG9zZSgpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGJyYW5jaDogZnVuY3Rpb24gYnJhbmNoKCkge1xuICAgICAgdmFyIHRpbWVJbmRpY2VzID0gdGhpcy50aW1lSW5kaWNlcyxcbiAgICAgICAgICBjb3VudERvd24gPSB0aGlzLmNvdW50RG93bixcbiAgICAgICAgICBkaXNwb3NlID0gdGhpcy5kaXNwb3NlO1xuXG4gICAgICBpZiAodGltZUluZGljZXMpIHtcbiAgICAgICAgY291bnREb3duKHRoaXMudmFsdWUudmFsdWVPZigpIHx8IHRoaXMudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzcG9zZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbWFnbmlmaWNhdGlvbjogZnVuY3Rpb24gbWFnbmlmaWNhdGlvbihudW0pIHtcbiAgICAgIHZhciBtdWxyaXBsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMTAwMDtcbiAgICAgIHZhciBncm91cFNlcGFyYXRvciA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogJywnO1xuXG4gICAgICAvLyBtYWduaWZpY2F0aW9uIGZhY3RvclxuICAgICAgdmFyIGxldmVsID0gU3RyaW5nKG11bHJpcGxlKS5sZW5ndGg7XG4gICAgICByZXR1cm4gbnVtLnJlcGxhY2UobmV3IFJlZ0V4cCgnKFxcXFxkKSg/PShcXFxcZHsnICsgKGxldmVsIC0gMSkgKyAnfSkrJCknLCAnZycpLCAnJDEnICsgZ3JvdXBTZXBhcmF0b3IpO1xuICAgIH0sXG4gICAgZGlzcG9zZTogZnVuY3Rpb24gZGlzcG9zZSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgcmF0ZSA9IHRoaXMucmF0ZSxcbiAgICAgICAgICBncm91cFNlcGFyYXRvciA9IHRoaXMuZ3JvdXBTZXBhcmF0b3I7XG5cbiAgICAgIGlmICghT2JqZWN0KGxvZGFzaF9bXCJpc051bWJlclwiXSkodmFsdWUpKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAodGhpcy5wcmVjaXNpb24pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50b0ZpeGVkKHRoaXMucHJlY2lzaW9uKTtcbiAgICAgIH1cblxuICAgICAgdmFyIF9TdHJpbmckc3BsaXQgPSBTdHJpbmcodmFsdWUpLnNwbGl0KCcuJyksXG4gICAgICAgICAgaW50ZWdlciA9IF9TdHJpbmckc3BsaXRbMF0sXG4gICAgICAgICAgZGVjaW1hbCA9IF9TdHJpbmckc3BsaXRbMV07XG4gICAgICAvLyAxMDAwIG11bHRpcGx5aW5nIHBvd2VyXG5cblxuICAgICAgaWYgKGdyb3VwU2VwYXJhdG9yKSB7XG4gICAgICAgIGludGVnZXIgPSB0aGlzLm1hZ25pZmljYXRpb24oaW50ZWdlciwgcmF0ZSwgZ3JvdXBTZXBhcmF0b3IpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICcnICsgaW50ZWdlciArIChkZWNpbWFsID8gdGhpcy5kZWNpbWFsU2VwYXJhdG9yICsgZGVjaW1hbCA6ICcnKTtcbiAgICAgIHRoaXMuZGlzcG9zZVZhbHVlID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIGRpZmZEYXRlOiBmdW5jdGlvbiBkaWZmRGF0ZShtaW51ZW5kLCBzdWJ0cmFoZW5kKSB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgobWludWVuZCAtIHN1YnRyYWhlbmQsIDApO1xuICAgIH0sXG4gICAgc3VzcGVuZDogZnVuY3Rpb24gc3VzcGVuZChpc1N0b3ApIHtcbiAgICAgIGlmIChpc1N0b3ApIHtcbiAgICAgICAgaWYgKHRoaXMudGltZVRhc2spIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZVRhc2spO1xuICAgICAgICAgIHRoaXMudGltZVRhc2sgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJyYW5jaCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZGlzcG9zZVZhbHVlO1xuICAgIH0sXG5cbiAgICBmb3JtYXRUaW1lU3RyOiBmdW5jdGlvbiBmb3JtYXRUaW1lU3RyKHRpbWUpIHtcbiAgICAgIHZhciBmb3JtYXQgPSB0aGlzLmZvcm1hdDtcblxuICAgICAgdmFyIGVzY2FwZVJlZ2V4ID0gL1xcW1teXFxdXSpdL2c7XG4gICAgICB2YXIga2VlcExpc3QgPSAoZm9ybWF0Lm1hdGNoKGVzY2FwZVJlZ2V4KSB8fCBbXSkubWFwKGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5zbGljZSgxLCAtMSk7XG4gICAgICB9KTtcbiAgICAgIHZhciB0aW1lVW5pdHMgPSBbWydZJywgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NV0sIC8vIHllYXJzXG4gICAgICBbJ00nLCAxMDAwICogNjAgKiA2MCAqIDI0ICogMzBdLCAvLyBtb250aHNcbiAgICAgIFsnRCcsIDEwMDAgKiA2MCAqIDYwICogMjRdLCAvLyBkYXlzXG4gICAgICBbJ0gnLCAxMDAwICogNjAgKiA2MF0sIC8vIGhvdXJzXG4gICAgICBbJ20nLCAxMDAwICogNjBdLCAvLyBtaW51dGVzXG4gICAgICBbJ3MnLCAxMDAwXSwgLy8gc2Vjb25kc1xuICAgICAgWydTJywgMV0gLy8gbWlsbGlvbiBzZWNvbmRzXG4gICAgICBdO1xuICAgICAgdmFyIGZvcm1hdFRleHQgPSBPYmplY3QobG9kYXNoX1tcInJlZHVjZVwiXSkodGltZVVuaXRzLCBmdW5jdGlvbiAoY29uLCBpdGVtKSB7XG4gICAgICAgIHZhciBuYW1lID0gaXRlbVswXTtcbiAgICAgICAgcmV0dXJuIGNvbi5yZXBsYWNlKG5ldyBSZWdFeHAobmFtZSArICcrJywgJ2cnKSwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgdmFyIHN1bSA9IE9iamVjdChsb2Rhc2hfW1wiY2hhaW5cIl0pKHRpbWUpLmRpdmlkZShpdGVtWzFdKS5mbG9vcigwKS52YWx1ZSgpO1xuICAgICAgICAgIHRpbWUgLT0gT2JqZWN0KGxvZGFzaF9bXCJtdWx0aXBseVwiXSkoc3VtLCBpdGVtWzFdKTtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0KGxvZGFzaF9bXCJwYWRTdGFydFwiXSkoU3RyaW5nKHN1bSksIFN0cmluZyhtYXRjaCkubGVuZ3RoLCAwKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBmb3JtYXQpO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHJldHVybiBmb3JtYXRUZXh0LnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG1hdGNoID0ga2VlcExpc3RbaW5kZXhdO1xuICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHN0b3BUaW1lOiBmdW5jdGlvbiBzdG9wVGltZSh0aW1lKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTsgLy8gc3RvcFxuICAgICAgaWYgKHRpbWUpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgdGltZSk7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdXNwZW5kKHRydWUpO1xuICAgICAgICB0aGlzLiRlbWl0KCdmaW5pc2gnLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBjb3VudERvd246IGZ1bmN0aW9uIGNvdW50RG93bih0aW1lVmxhdWUpIHtcbiAgICAgIHZhciBSRUZSRVNIX0lOVEVSVkFMID0gdGhpcy5SRUZSRVNIX0lOVEVSVkFMLFxuICAgICAgICAgIHRpbWVUYXNrID0gdGhpcy50aW1lVGFzayxcbiAgICAgICAgICBkaWZmRGF0ZSA9IHRoaXMuZGlmZkRhdGUsXG4gICAgICAgICAgZm9ybWF0VGltZVN0ciA9IHRoaXMuZm9ybWF0VGltZVN0cixcbiAgICAgICAgICBzdG9wVGltZSA9IHRoaXMuc3RvcFRpbWUsXG4gICAgICAgICAgc3VzcGVuZCA9IHRoaXMuc3VzcGVuZDtcblxuICAgICAgaWYgKHRpbWVUYXNrKSByZXR1cm47XG4gICAgICB2YXIgdGhhbiA9IHRoaXM7XG4gICAgICB0aGlzLnRpbWVUYXNrID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZGlmZlRpZW0gPSBkaWZmRGF0ZSh0aW1lVmxhdWUsIERhdGUubm93KCkpO1xuICAgICAgICB0aGFuLmRpc3Bvc2VWYWx1ZSA9IGZvcm1hdFRpbWVTdHIoZGlmZlRpZW0pO1xuICAgICAgICBzdG9wVGltZShkaWZmVGllbSk7XG4gICAgICB9LCBSRUZSRVNIX0lOVEVSVkFMKTtcbiAgICAgIHRoaXMuJG9uY2UoJ2hvb2s6YmVmb3JlRGVzdHJveScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc3VzcGVuZCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3N0YXRpc3RpYy9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfc3RhdGlzdGljX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHN0YXRpc3RpY19zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zdGF0aXN0aWMvc3JjL21haW4udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgc3RhdGlzdGljX3NyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfc3RhdGlzdGljX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNzYzMzlhYTdfcmVuZGVyLFxuICBtYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfNzYzMzlhYTdfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBzdGF0aXN0aWNfc3JjX21haW5fYXBpOyB9XG5zdGF0aXN0aWNfc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9zdGF0aXN0aWMvc3JjL21haW4udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHN0YXRpc3RpY19zcmNfbWFpbiA9IChzdGF0aXN0aWNfc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zdGF0aXN0aWMvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc3RhdGlzdGljX3NyY19tYWluLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoc3RhdGlzdGljX3NyY19tYWluLm5hbWUsIHN0YXRpc3RpY19zcmNfbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzdGF0aXN0aWMgPSAoc3RhdGlzdGljX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcG9wY29uZmlybS9zcmMvbWFpbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDQ4ZGU3MzAmXG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA0OGRlNzMwX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImVsLXBvcG92ZXJcIixcbiAgICBfdm0uX2IoXG4gICAgICB7XG4gICAgICAgIGF0dHJzOiB7IHRyaWdnZXI6IFwiY2xpY2tcIiB9LFxuICAgICAgICBtb2RlbDoge1xuICAgICAgICAgIHZhbHVlOiBfdm0udmlzaWJsZSxcbiAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICBfdm0udmlzaWJsZSA9ICQkdlxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhwcmVzc2lvbjogXCJ2aXNpYmxlXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiZWwtcG9wb3ZlclwiLFxuICAgICAgX3ZtLiRhdHRycyxcbiAgICAgIGZhbHNlXG4gICAgKSxcbiAgICBbXG4gICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXBvcGNvbmZpcm1cIiB9LCBbXG4gICAgICAgIF9jKFwicFwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXBvcGNvbmZpcm1fX21haW5cIiB9LCBbXG4gICAgICAgICAgIV92bS5oaWRlSWNvblxuICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXBvcGNvbmZpcm1fX2ljb25cIixcbiAgICAgICAgICAgICAgICBjbGFzczogX3ZtLmljb24sXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgY29sb3I6IF92bS5pY29uQ29sb3IgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICBcIiArIF92bS5fcyhfdm0udGl0bGUpICsgXCJcXG4gICAgXCIpXG4gICAgICAgIF0pLFxuICAgICAgICBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtcG9wY29uZmlybV9fYWN0aW9uXCIgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJlbC1idXR0b25cIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHNpemU6IFwibWluaVwiLCB0eXBlOiBfdm0uY2FuY2VsQnV0dG9uVHlwZSB9LFxuICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uY2FuY2VsIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uZGlzcGxheUNhbmNlbEJ1dHRvblRleHQpICtcbiAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICBcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImVsLWJ1dHRvblwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgc2l6ZTogXCJtaW5pXCIsIHR5cGU6IF92bS5jb25maXJtQnV0dG9uVHlwZSB9LFxuICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uY29uZmlybSB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmRpc3BsYXlDb25maXJtQnV0dG9uVGV4dCkgK1xuICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgIFwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSxcbiAgICAgICAgICAxXG4gICAgICAgIClcbiAgICAgIF0pLFxuICAgICAgX3ZtLl90KFwicmVmZXJlbmNlXCIsIG51bGwsIHsgc2xvdDogXCJyZWZlcmVuY2VcIiB9KVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA0OGRlNzMwX3N0YXRpY1JlbmRlckZucyA9IFtdXG5tYWludnVlX3R5cGVfdGVtcGxhdGVfaWRfMDQ4ZGU3MzBfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wb3Bjb25maXJtL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNDhkZTczMCZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3BvcG92ZXJcIlxudmFyIHBvcG92ZXJfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSk7XG52YXIgcG9wb3Zlcl9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihwb3BvdmVyXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3BvcGNvbmZpcm0vc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwb3Bjb25maXJtX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsUG9wY29uZmlybScsXG4gIHByb3BzOiB7XG4gICAgdGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgY29uZmlybUJ1dHRvblRleHQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgY2FuY2VsQnV0dG9uVGV4dDoge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBjb25maXJtQnV0dG9uVHlwZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3ByaW1hcnknXG4gICAgfSxcbiAgICBjYW5jZWxCdXR0b25UeXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAndGV4dCdcbiAgICB9LFxuICAgIGljb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdlbC1pY29uLXF1ZXN0aW9uJ1xuICAgIH0sXG4gICAgaWNvbkNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnI2Y5MCdcbiAgICB9LFxuICAgIGhpZGVJY29uOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBFbFBvcG92ZXI6IHBvcG92ZXJfZGVmYXVsdC5hLFxuICAgIEVsQnV0dG9uOiBidXR0b25fZGVmYXVsdC5hXG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZpc2libGU6IGZhbHNlXG4gICAgfTtcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGRpc3BsYXlDb25maXJtQnV0dG9uVGV4dDogZnVuY3Rpb24gZGlzcGxheUNvbmZpcm1CdXR0b25UZXh0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlybUJ1dHRvblRleHQgfHwgT2JqZWN0KGxpYl9sb2NhbGVfW1widFwiXSkoJ2VsLnBvcGNvbmZpcm0uY29uZmlybUJ1dHRvblRleHQnKTtcbiAgICB9LFxuICAgIGRpc3BsYXlDYW5jZWxCdXR0b25UZXh0OiBmdW5jdGlvbiBkaXNwbGF5Q2FuY2VsQnV0dG9uVGV4dCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbmNlbEJ1dHRvblRleHQgfHwgT2JqZWN0KGxpYl9sb2NhbGVfW1widFwiXSkoJ2VsLnBvcGNvbmZpcm0uY2FuY2VsQnV0dG9uVGV4dCcpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGNvbmZpcm06IGZ1bmN0aW9uIGNvbmZpcm0oKSB7XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuJGVtaXQoJ2NvbmZpcm0nKTtcbiAgICB9LFxuICAgIGNhbmNlbDogZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICB0aGlzLiRlbWl0KCdjYW5jZWwnKTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wb3Bjb25maXJtL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19wb3Bjb25maXJtX3NyY19tYWludnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHBvcGNvbmZpcm1fc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcG9wY29uZmlybS9zcmMvbWFpbi52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBwb3Bjb25maXJtX3NyY19tYWluX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgcGFja2FnZXNfcG9wY29uZmlybV9zcmNfbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA0OGRlNzMwX3JlbmRlcixcbiAgbWFpbnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA0OGRlNzMwX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgcG9wY29uZmlybV9zcmNfbWFpbl9hcGk7IH1cbnBvcGNvbmZpcm1fc3JjX21haW5fY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9wb3Bjb25maXJtL3NyYy9tYWluLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwb3Bjb25maXJtX3NyY19tYWluID0gKHBvcGNvbmZpcm1fc3JjX21haW5fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wb3Bjb25maXJtL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnBvcGNvbmZpcm1fc3JjX21haW4uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChwb3Bjb25maXJtX3NyY19tYWluLm5hbWUsIHBvcGNvbmZpcm1fc3JjX21haW4pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcG9wY29uZmlybSA9IChwb3Bjb25maXJtX3NyY19tYWluKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2tlbGV0b24vc3JjL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjY1OTI2OSZcbnZhciBzcmN2dWVfdHlwZV90ZW1wbGF0ZV9pZF83ZjY1OTI2OV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICBbXG4gICAgICBfdm0udWlMb2FkaW5nXG4gICAgICAgID8gW1xuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIF92bS5fYihcbiAgICAgICAgICAgICAgICB7IGNsYXNzOiBbXCJlbC1za2VsZXRvblwiLCBfdm0uYW5pbWF0ZWQgPyBcImlzLWFuaW1hdGVkXCIgOiBcIlwiXSB9LFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgX3ZtLiRhdHRycyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5jb3VudCwgZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICA/IF92bS5fdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0ZW1wbGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLnJvd3MsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXCJlbC1za2VsZXRvbi1pdGVtXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogaSArIFwiLVwiICsgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtc2tlbGV0b25fX3BhcmFncmFwaFwiOiBpdGVtICE9PSAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzLWZpcnN0XCI6IGl0ZW0gPT09IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXMtbGFzdFwiOiBpdGVtID09PSBfdm0ucm93cyAmJiBfdm0ucm93cyA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB2YXJpYW50OiBcInBcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgKVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbX3ZtLl90KFwiZGVmYXVsdFwiLCBudWxsLCBudWxsLCBfdm0uJGF0dHJzKV1cbiAgICBdLFxuICAgIDJcbiAgKVxufVxudmFyIHNyY3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzdmNjU5MjY5X3N0YXRpY1JlbmRlckZucyA9IFtdXG5zcmN2dWVfdHlwZV90ZW1wbGF0ZV9pZF83ZjY1OTI2OV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NrZWxldG9uL3NyYy9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Y2NTkyNjkmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3NrZWxldG9uL3NyYy9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBza2VsZXRvbl9zcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxTa2VsZXRvbicsXG4gIHByb3BzOiB7XG4gICAgYW5pbWF0ZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgY291bnQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDFcbiAgICB9LFxuICAgIHJvd3M6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDRcbiAgICB9LFxuICAgIGxvYWRpbmc6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICB0aHJvdHRsZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBsb2FkaW5nOiB7XG4gICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKGxvYWRpbmcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICBpZiAodGhpcy50aHJvdHRsZSA8PSAwKSB7XG4gICAgICAgICAgdGhpcy51aUxvYWRpbmcgPSBsb2FkaW5nO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9hZGluZykge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRIYW5kbGUpO1xuICAgICAgICAgIHRoaXMudGltZW91dEhhbmRsZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMudWlMb2FkaW5nID0gX3RoaXMubG9hZGluZztcbiAgICAgICAgICB9LCB0aGlzLnRocm90dGxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVpTG9hZGluZyA9IGxvYWRpbmc7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdWlMb2FkaW5nOiB0aGlzLnRocm90dGxlIDw9IDAgPyB0aGlzLmxvYWRpbmcgOiBmYWxzZVxuICAgIH07XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9za2VsZXRvbi9zcmMvaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3NrZWxldG9uX3NyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChza2VsZXRvbl9zcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2tlbGV0b24vc3JjL2luZGV4LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHNrZWxldG9uX3NyY19jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHBhY2thZ2VzX3NrZWxldG9uX3NyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgc3JjdnVlX3R5cGVfdGVtcGxhdGVfaWRfN2Y2NTkyNjlfcmVuZGVyLFxuICBzcmN2dWVfdHlwZV90ZW1wbGF0ZV9pZF83ZjY1OTI2OV9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIHNrZWxldG9uX3NyY19hcGk7IH1cbnNrZWxldG9uX3NyY19jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3NrZWxldG9uL3NyYy9pbmRleC52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc2tlbGV0b25fc3JjID0gKHNrZWxldG9uX3NyY19jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NrZWxldG9uL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnNrZWxldG9uX3NyYy5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHNrZWxldG9uX3NyYy5uYW1lLCBza2VsZXRvbl9zcmMpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc2tlbGV0b24gPSAoc2tlbGV0b25fc3JjKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2tlbGV0b24vc3JjL2l0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRiYzg4MDRjJlxudmFyIGl0ZW12dWVfdHlwZV90ZW1wbGF0ZV9pZF80YmM4ODA0Y19yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IGNsYXNzOiBbXCJlbC1za2VsZXRvbl9faXRlbVwiLCBcImVsLXNrZWxldG9uX19cIiArIF92bS52YXJpYW50XSB9LFxuICAgIFtfdm0udmFyaWFudCA9PT0gXCJpbWFnZVwiID8gX2MoXCJpbWctcGxhY2Vob2xkZXJcIikgOiBfdm0uX2UoKV0sXG4gICAgMVxuICApXG59XG52YXIgaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzRiYzg4MDRjX3N0YXRpY1JlbmRlckZucyA9IFtdXG5pdGVtdnVlX3R5cGVfdGVtcGxhdGVfaWRfNGJjODgwNGNfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9za2VsZXRvbi9zcmMvaXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGJjODgwNGMmXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2tlbGV0b24vc3JjL2ltZy1wbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWIyY2I1YzAmXG52YXIgaW1nX3BsYWNlaG9sZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMWIyY2I1YzBfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwic3ZnXCIsXG4gICAge1xuICAgICAgYXR0cnM6IHsgdmlld0JveDogXCIwIDAgMTAyNCAxMDI0XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXCJwYXRoXCIsIHtcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICBkOlxuICAgICAgICAgICAgXCJNNjQgODk2VjEyOGg4OTZ2NzY4SDY0eiBtNjQtMTI4bDE5Mi0xOTIgMTE2LjM1MiAxMTYuMzUyTDY0MCA0NDhsMjU2IDMwNy4yVjE5MkgxMjh2NTc2eiBtMjI0LTQ4MGE5NiA5NiAwIDEgMS0wLjA2NCAxOTIuMDY0QTk2IDk2IDAgMCAxIDM1MiAyODh6XCJcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICBdXG4gIClcbn1cbnZhciBpbWdfcGxhY2Vob2xkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xYjJjYjVjMF9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuaW1nX3BsYWNlaG9sZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMWIyY2I1YzBfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9za2VsZXRvbi9zcmMvaW1nLXBsYWNlaG9sZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYjJjYjVjMCZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2tlbGV0b24vc3JjL2ltZy1wbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgaW1nX3BsYWNlaG9sZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0ltZ1BsYWNlaG9sZGVyJ1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NrZWxldG9uL3NyYy9pbWctcGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19pbWdfcGxhY2Vob2xkZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoaW1nX3BsYWNlaG9sZGVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NrZWxldG9uL3NyYy9pbWctcGxhY2Vob2xkZXIudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgaW1nX3BsYWNlaG9sZGVyX2NvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc3JjX2ltZ19wbGFjZWhvbGRlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgaW1nX3BsYWNlaG9sZGVydnVlX3R5cGVfdGVtcGxhdGVfaWRfMWIyY2I1YzBfcmVuZGVyLFxuICBpbWdfcGxhY2Vob2xkZXJ2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xYjJjYjVjMF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGltZ19wbGFjZWhvbGRlcl9hcGk7IH1cbmltZ19wbGFjZWhvbGRlcl9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3NrZWxldG9uL3NyYy9pbWctcGxhY2Vob2xkZXIudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGltZ19wbGFjZWhvbGRlciA9IChpbWdfcGxhY2Vob2xkZXJfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2tlbGV0b24vc3JjL2l0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxudmFyIF9jb21wb25lbnRzO1xuXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBza2VsZXRvbl9zcmNfaXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFNrZWxldG9uSXRlbScsXG4gIHByb3BzOiB7XG4gICAgdmFyaWFudDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3RleHQnXG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiAoX2NvbXBvbmVudHMgPSB7fSwgX2NvbXBvbmVudHNbaW1nX3BsYWNlaG9sZGVyLm5hbWVdID0gaW1nX3BsYWNlaG9sZGVyLCBfY29tcG9uZW50cylcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9za2VsZXRvbi9zcmMvaXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfc2tlbGV0b25fc3JjX2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoc2tlbGV0b25fc3JjX2l0ZW12dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2tlbGV0b24vc3JjL2l0ZW0udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgc2tlbGV0b25fc3JjX2l0ZW1fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19za2VsZXRvbl9zcmNfaXRlbXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzRiYzg4MDRjX3JlbmRlcixcbiAgaXRlbXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzRiYzg4MDRjX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgc2tlbGV0b25fc3JjX2l0ZW1fYXBpOyB9XG5za2VsZXRvbl9zcmNfaXRlbV9jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3NrZWxldG9uL3NyYy9pdGVtLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBza2VsZXRvbl9zcmNfaXRlbSA9IChza2VsZXRvbl9zcmNfaXRlbV9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NrZWxldG9uLWl0ZW0vaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuc2tlbGV0b25fc3JjX2l0ZW0uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChza2VsZXRvbl9zcmNfaXRlbS5uYW1lLCBza2VsZXRvbl9zcmNfaXRlbSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBza2VsZXRvbl9pdGVtID0gKHNrZWxldG9uX3NyY19pdGVtKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvZW1wdHkvc3JjL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDdjZWQ5MSZcbnZhciBzcmN2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDdjZWQ5MV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1lbXB0eVwiIH0sIFtcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWVtcHR5X19pbWFnZVwiLCBzdHlsZTogX3ZtLmltYWdlU3R5bGUgfSxcbiAgICAgIFtcbiAgICAgICAgX3ZtLmltYWdlXG4gICAgICAgICAgPyBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7IHNyYzogX3ZtLmltYWdlLCBvbmRyYWdzdGFydDogXCJyZXR1cm4gZmFsc2VcIiB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogX3ZtLl90KFwiaW1hZ2VcIiwgW19jKFwiaW1nLWVtcHR5XCIpXSlcbiAgICAgIF0sXG4gICAgICAyXG4gICAgKSxcbiAgICBfYyhcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWVtcHR5X19kZXNjcmlwdGlvblwiIH0sXG4gICAgICBbXG4gICAgICAgIF92bS4kc2xvdHMuZGVzY3JpcHRpb25cbiAgICAgICAgICA/IF92bS5fdChcImRlc2NyaXB0aW9uXCIpXG4gICAgICAgICAgOiBfYyhcInBcIiwgW192bS5fdihfdm0uX3MoX3ZtLmVtcHR5RGVzY3JpcHRpb24pKV0pXG4gICAgICBdLFxuICAgICAgMlxuICAgICksXG4gICAgX3ZtLiRzbG90cy5kZWZhdWx0XG4gICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtZW1wdHlfX2JvdHRvbVwiIH0sIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSwgMilcbiAgICAgIDogX3ZtLl9lKClcbiAgXSlcbn1cbnZhciBzcmN2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDdjZWQ5MV9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuc3JjdnVlX3R5cGVfdGVtcGxhdGVfaWRfMzQ3Y2VkOTFfcmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9lbXB0eS9zcmMvaW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0N2NlZDkxJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2VtcHR5L3NyYy9pbWctZW1wdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQyOTE4YjgyJlxudmFyIGltZ19lbXB0eXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQyOTE4YjgyX3JlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInN2Z1wiLFxuICAgIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDc5IDg2XCIsXG4gICAgICAgIHZlcnNpb246IFwiMS4xXCIsXG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIFwieG1sbnM6eGxpbmtcIjogXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRlZnNcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJsaW5lYXJHcmFkaWVudFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcImxpbmVhckdyYWRpZW50LTEtXCIgKyBfdm0uaWQsXG4gICAgICAgICAgICAgICAgeDE6IFwiMzguODUwMzA4NiVcIixcbiAgICAgICAgICAgICAgICB5MTogXCIwJVwiLFxuICAgICAgICAgICAgICAgIHgyOiBcIjYxLjE0OTY5MTQlXCIsXG4gICAgICAgICAgICAgICAgeTI6IFwiMTAwJVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwic3RvcFwiLCB7IGF0dHJzOiB7IFwic3RvcC1jb2xvclwiOiBcIiNGQ0ZDRkRcIiwgb2Zmc2V0OiBcIjAlXCIgfSB9KSxcbiAgICAgICAgICAgICAgX2MoXCJzdG9wXCIsIHsgYXR0cnM6IHsgXCJzdG9wLWNvbG9yXCI6IFwiI0VFRUZGM1wiLCBvZmZzZXQ6IFwiMTAwJVwiIH0gfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwibGluZWFyR3JhZGllbnRcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBpZDogXCJsaW5lYXJHcmFkaWVudC0yLVwiICsgX3ZtLmlkLFxuICAgICAgICAgICAgICAgIHgxOiBcIjAlXCIsXG4gICAgICAgICAgICAgICAgeTE6IFwiOS41JVwiLFxuICAgICAgICAgICAgICAgIHgyOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICB5MjogXCI5MC41JVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwic3RvcFwiLCB7IGF0dHJzOiB7IFwic3RvcC1jb2xvclwiOiBcIiNGQ0ZDRkRcIiwgb2Zmc2V0OiBcIjAlXCIgfSB9KSxcbiAgICAgICAgICAgICAgX2MoXCJzdG9wXCIsIHsgYXR0cnM6IHsgXCJzdG9wLWNvbG9yXCI6IFwiI0U5RUJFRlwiLCBvZmZzZXQ6IFwiMTAwJVwiIH0gfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfYyhcInJlY3RcIiwge1xuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgaWQ6IFwicGF0aC0zLVwiICsgX3ZtLmlkLFxuICAgICAgICAgICAgICB4OiBcIjBcIixcbiAgICAgICAgICAgICAgeTogXCIwXCIsXG4gICAgICAgICAgICAgIHdpZHRoOiBcIjE3XCIsXG4gICAgICAgICAgICAgIGhlaWdodDogXCIzNlwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKSxcbiAgICAgIF9jKFxuICAgICAgICBcImdcIixcbiAgICAgICAge1xuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBpZDogXCJJbGx1c3RyYXRpb25zXCIsXG4gICAgICAgICAgICBzdHJva2U6IFwibm9uZVwiLFxuICAgICAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIxXCIsXG4gICAgICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgICAgIFwiZmlsbC1ydWxlXCI6IFwiZXZlbm9kZFwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImdcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBpZDogXCJCLXR5cGVcIixcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKC0xMjY4LjAwMDAwMCwgLTUzNS4wMDAwMDApXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJnXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiR3JvdXAtMlwiLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKDEyNjguMDAwMDAwLCA1MzUuMDAwMDAwKVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcInBhdGhcIiwge1xuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIk92YWwtQ29weS0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTTM5LjUsODYgQzYxLjMxNTI0NzYsODYgNzksODMuOTEwNjYyMiA3OSw4MS4zMzMzMzMzIEM3OSw3OC43NTYwMDQ1IDU3LjMxNTI0NzYsNzggMzUuNSw3OCBDMTMuNjg0NzUyNCw3OCAwLDc4Ljc1NjAwNDUgMCw4MS4zMzMzMzMzIEMwLDgzLjkxMDY2MjIgMTcuNjg0NzUyNCw4NiAzOS41LDg2IFpcIixcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBcIiNGN0Y4RkNcIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIF9jKFwicG9seWdvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUmVjdGFuZ2xlLUNvcHktMTRcIixcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBcIiNFNUU3RTlcIixcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYW5zbGF0ZSgyNy41MDAwMDAsIDUxLjUwMDAwMCkgc2NhbGUoMSwgLTEpIHRyYW5zbGF0ZSgtMjcuNTAwMDAwLCAtNTEuNTAwMDAwKSBcIixcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludHM6IFwiMTMgNTggNTMgNTggNDIgNDUgMiA0NVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZ1wiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIkdyb3VwLUNvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFuc2xhdGUoMzQuNTAwMDAwLCAzMS41MDAwMDApIHNjYWxlKC0xLCAxKSByb3RhdGUoLTI1LjAwMDAwMCkgdHJhbnNsYXRlKC0zNC41MDAwMDAsIC0zMS41MDAwMDApIHRyYW5zbGF0ZSg3LjAwMDAwMCwgMTAuMDAwMDAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJwb2x5Z29uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIlJlY3RhbmdsZS1Db3B5LTEwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IFwiI0U1RTdFOVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFuc2xhdGUoMTEuNTAwMDAwLCA1LjAwMDAwMCkgc2NhbGUoMSwgLTEpIHRyYW5zbGF0ZSgtMTEuNTAwMDAwLCAtNS4wMDAwMDApIFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHM6IFwiMi44NDA3ODMxNmUtMTQgMyAxOCAzIDIzIDcgNSA3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInBvbHlnb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUmVjdGFuZ2xlLUNvcHktMTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogXCIjRURFRUYyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50czpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi0zLjY5MTQ5MTU2ZS0xNSA3IDM4IDcgMzggNDMgLTMuNjkxNDkxNTZlLTE1IDQzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInJlY3RcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUmVjdGFuZ2xlLUNvcHktMTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogXCJ1cmwoI2xpbmVhckdyYWRpZW50LTEtXCIgKyBfdm0uaWQgKyBcIilcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhbnNsYXRlKDQ2LjUwMDAwMCwgMjUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC00Ni41MDAwMDAsIC0yNS4wMDAwMDApIFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBcIjM4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHk6IFwiN1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxN1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMzZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIF9jKFwicG9seWdvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJSZWN0YW5nbGUtQ29weS0xM1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBcIiNGOEY5RkJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhbnNsYXRlKDM5LjUwMDAwMCwgMy41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTM5LjUwMDAwMCwgLTMuNTAwMDAwKSBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQgNyA0MSA3IDU1IC0zLjYzODA2MjA3ZS0xMiAzOCAtMy42MzgwNjIwN2UtMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfYyhcInJlY3RcIiwge1xuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIlJlY3RhbmdsZS1Db3B5LTE1XCIsXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbDogXCJ1cmwoI2xpbmVhckdyYWRpZW50LTItXCIgKyBfdm0uaWQgKyBcIilcIixcbiAgICAgICAgICAgICAgICAgICAgICB4OiBcIjEzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgeTogXCI0NVwiLFxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjQwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjM2XCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJnXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUmVjdGFuZ2xlLUNvcHktMTdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoNTMuMDAwMDAwLCA0NS4wMDAwMDApXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWFza1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBpZDogXCJtYXNrLTQtXCIgKyBfdm0uaWQsIGZpbGw6IFwid2hpdGVcIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidXNlXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBcInhsaW5rOmhyZWZcIjogXCIjcGF0aC0zLVwiICsgX3ZtLmlkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIF9jKFwidXNlXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIk1hc2tcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogXCIjRTBFM0U5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYW5zbGF0ZSg4LjUwMDAwMCwgMTguMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC04LjUwMDAwMCwgLTE4LjAwMDAwMCkgXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwieGxpbms6aHJlZlwiOiBcIiNwYXRoLTMtXCIgKyBfdm0uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInBvbHlnb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUmVjdGFuZ2xlLUNvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogXCIjRDVEN0RFXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s6IFwidXJsKCNtYXNrLTQtXCIgKyBfdm0uaWQgKyBcIilcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhbnNsYXRlKDEyLjAwMDAwMCwgOS4wMDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTEyLjAwMDAwMCwgLTkuMDAwMDAwKSBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzOiBcIjcgMCAyNCAwIDIwIDE4IC0xLjcwNTMwMjU3ZS0xMyAxNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwicG9seWdvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUmVjdGFuZ2xlLUNvcHktMThcIixcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBcIiNGOEY5RkJcIixcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06XG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYW5zbGF0ZSg2Ni4wMDAwMDAsIDUxLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNjYuMDAwMDAwLCAtNTEuNTAwMDAwKSBcIixcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludHM6IFwiNjIgNDUgNzkgNDUgNzAgNTggNTMgNThcIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXVxuICAgICAgICAgIClcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIGltZ19lbXB0eXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQyOTE4YjgyX3N0YXRpY1JlbmRlckZucyA9IFtdXG5pbWdfZW1wdHl2dWVfdHlwZV90ZW1wbGF0ZV9pZF80MjkxOGI4Ml9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2VtcHR5L3NyYy9pbWctZW1wdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQyOTE4YjgyJlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9lbXB0eS9zcmMvaW1nLWVtcHR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbnZhciBpbWdfZW1wdHl2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19pZCA9IDA7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBpbWdfZW1wdHl2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnSW1nRW1wdHknLFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogKytpbWdfZW1wdHl2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19pZFxuICAgIH07XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9lbXB0eS9zcmMvaW1nLWVtcHR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfaW1nX2VtcHR5dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGltZ19lbXB0eXZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9lbXB0eS9zcmMvaW1nLWVtcHR5LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGltZ19lbXB0eV9jb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIHNyY19pbWdfZW1wdHl2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIGltZ19lbXB0eXZ1ZV90eXBlX3RlbXBsYXRlX2lkXzQyOTE4YjgyX3JlbmRlcixcbiAgaW1nX2VtcHR5dnVlX3R5cGVfdGVtcGxhdGVfaWRfNDI5MThiODJfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBpbWdfZW1wdHlfYXBpOyB9XG5pbWdfZW1wdHlfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9lbXB0eS9zcmMvaW1nLWVtcHR5LnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBpbWdfZW1wdHkgPSAoaW1nX2VtcHR5X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2VtcHR5L3NyYy9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG52YXIgc3JjdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfY29tcG9uZW50cztcblxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBlbXB0eV9zcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxFbXB0eScsXG4gIGNvbXBvbmVudHM6IChzcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19jb21wb25lbnRzID0ge30sIHNyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2NvbXBvbmVudHNbaW1nX2VtcHR5Lm5hbWVdID0gaW1nX2VtcHR5LCBzcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19jb21wb25lbnRzKSxcbiAgcHJvcHM6IHtcbiAgICBpbWFnZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGltYWdlU2l6ZTogTnVtYmVyLFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBlbXB0eURlc2NyaXB0aW9uOiBmdW5jdGlvbiBlbXB0eURlc2NyaXB0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb24gfHwgT2JqZWN0KGxpYl9sb2NhbGVfW1widFwiXSkoJ2VsLmVtcHR5LmRlc2NyaXB0aW9uJyk7XG4gICAgfSxcbiAgICBpbWFnZVN0eWxlOiBmdW5jdGlvbiBpbWFnZVN0eWxlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHRoaXMuaW1hZ2VTaXplID8gdGhpcy5pbWFnZVNpemUgKyAncHgnIDogJydcbiAgICAgIH07XG4gICAgfVxuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZW1wdHkvc3JjL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19lbXB0eV9zcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoZW1wdHlfc3JjdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2VtcHR5L3NyYy9pbmRleC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBlbXB0eV9zcmNfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19lbXB0eV9zcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHNyY3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzM0N2NlZDkxX3JlbmRlcixcbiAgc3JjdnVlX3R5cGVfdGVtcGxhdGVfaWRfMzQ3Y2VkOTFfc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBlbXB0eV9zcmNfYXBpOyB9XG5lbXB0eV9zcmNfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9lbXB0eS9zcmMvaW5kZXgudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGVtcHR5X3NyYyA9IChlbXB0eV9zcmNfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9lbXB0eS9pbmRleC5qc1xuXG5cbmVtcHR5X3NyYy5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGVtcHR5X3NyYy5uYW1lLCBlbXB0eV9zcmMpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZW1wdHkgPSAoZW1wdHlfc3JjKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvZGVzY3JpcHRpb25zL3NyYy9kZXNjcmlwdGlvbnMtcm93LmpzXG52YXIgZGVzY3JpcHRpb25zX3Jvd19leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZGVzY3JpcHRpb25zX3JvdyA9ICh7XG4gIG5hbWU6ICdFbERlc2NyaXB0aW9uc1JvdycsXG4gIHByb3BzOiB7XG4gICAgcm93OiB7XG4gICAgICB0eXBlOiBBcnJheVxuICAgIH1cbiAgfSxcbiAgaW5qZWN0OiBbJ2VsRGVzY3JpcHRpb25zJ10sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgZWxEZXNjcmlwdGlvbnMgPSB0aGlzLmVsRGVzY3JpcHRpb25zO1xuXG4gICAgdmFyIHJvdyA9ICh0aGlzLnJvdyB8fCBbXSkubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gZGVzY3JpcHRpb25zX3Jvd19leHRlbmRzKHt9LCBpdGVtLCB7XG4gICAgICAgIGxhYmVsOiBpdGVtLnNsb3RzLmxhYmVsIHx8IGl0ZW0ucHJvcHMubGFiZWxcbiAgICAgIH0sIFsnbGFiZWxDbGFzc05hbWUnLCAnY29udGVudENsYXNzTmFtZScsICdsYWJlbFN0eWxlJywgJ2NvbnRlbnRTdHlsZSddLnJlZHVjZShmdW5jdGlvbiAocmVzLCBrZXkpIHtcbiAgICAgICAgcmVzW2tleV0gPSBpdGVtLnByb3BzW2tleV0gfHwgZWxEZXNjcmlwdGlvbnNba2V5XTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0sIHt9KSk7XG4gICAgfSk7XG4gICAgaWYgKGVsRGVzY3JpcHRpb25zLmRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgcmV0dXJuIGgoJ3Rib2R5JywgW2goXG4gICAgICAgICd0cicsXG4gICAgICAgIHsgJ2NsYXNzJzogJ2VsLWRlc2NyaXB0aW9ucy1yb3cnIH0sXG4gICAgICAgIFtyb3cubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgdmFyIF9yZWY7XG5cbiAgICAgICAgICByZXR1cm4gaChcbiAgICAgICAgICAgICd0aCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICdjbGFzcyc6IChfcmVmID0ge1xuICAgICAgICAgICAgICAgICdlbC1kZXNjcmlwdGlvbnMtaXRlbV9fY2VsbCc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2VsLWRlc2NyaXB0aW9ucy1pdGVtX19sYWJlbCc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2hhcy1jb2xvbic6IGVsRGVzY3JpcHRpb25zLmJvcmRlciA/IGZhbHNlIDogZWxEZXNjcmlwdGlvbnMuY29sb24sXG4gICAgICAgICAgICAgICAgJ2lzLWJvcmRlcmVkLWxhYmVsJzogZWxEZXNjcmlwdGlvbnMuYm9yZGVyXG4gICAgICAgICAgICAgIH0sIF9yZWZbaXRlbS5sYWJlbENsYXNzTmFtZV0gPSB0cnVlLCBfcmVmKSxcbiAgICAgICAgICAgICAgc3R5bGU6IGl0ZW0ubGFiZWxTdHlsZSxcbiAgICAgICAgICAgICAgYXR0cnM6IHsgY29sU3BhbjogaXRlbS5wcm9wcy5zcGFuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbaXRlbS5sYWJlbF1cbiAgICAgICAgICApO1xuICAgICAgICB9KV1cbiAgICAgICksIGgoXG4gICAgICAgICd0cicsXG4gICAgICAgIHsgJ2NsYXNzJzogJ2VsLWRlc2NyaXB0aW9ucy1yb3cnIH0sXG4gICAgICAgIFtyb3cubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIGgoXG4gICAgICAgICAgICAndGQnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAnY2xhc3MnOiBbJ2VsLWRlc2NyaXB0aW9ucy1pdGVtX19jZWxsJywgJ2VsLWRlc2NyaXB0aW9ucy1pdGVtX19jb250ZW50JywgaXRlbS5jb250ZW50Q2xhc3NOYW1lXSxcbiAgICAgICAgICAgICAgc3R5bGU6IGl0ZW0uY29udGVudFN0eWxlLFxuICAgICAgICAgICAgICBhdHRyczogeyBjb2xTcGFuOiBpdGVtLnByb3BzLnNwYW5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtpdGVtLnNsb3RzLmRlZmF1bHRdXG4gICAgICAgICAgKTtcbiAgICAgICAgfSldXG4gICAgICApXSk7XG4gICAgfVxuICAgIGlmIChlbERlc2NyaXB0aW9ucy5ib3JkZXIpIHtcbiAgICAgIHJldHVybiBoKCd0Ym9keScsIFtoKFxuICAgICAgICAndHInLFxuICAgICAgICB7ICdjbGFzcyc6ICdlbC1kZXNjcmlwdGlvbnMtcm93JyB9LFxuICAgICAgICBbcm93Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHZhciBfcmVmMjtcblxuICAgICAgICAgIHJldHVybiBbaChcbiAgICAgICAgICAgICd0aCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICdjbGFzcyc6IChfcmVmMiA9IHtcbiAgICAgICAgICAgICAgICAnZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGwnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdlbC1kZXNjcmlwdGlvbnMtaXRlbV9fbGFiZWwnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdpcy1ib3JkZXJlZC1sYWJlbCc6IGVsRGVzY3JpcHRpb25zLmJvcmRlclxuICAgICAgICAgICAgICB9LCBfcmVmMltpdGVtLmxhYmVsQ2xhc3NOYW1lXSA9IHRydWUsIF9yZWYyKSxcbiAgICAgICAgICAgICAgc3R5bGU6IGl0ZW0ubGFiZWxTdHlsZSxcbiAgICAgICAgICAgICAgYXR0cnM6IHsgY29sU3BhbjogJzEnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbaXRlbS5sYWJlbF1cbiAgICAgICAgICApLCBoKFxuICAgICAgICAgICAgJ3RkJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJ2NsYXNzJzogWydlbC1kZXNjcmlwdGlvbnMtaXRlbV9fY2VsbCcsICdlbC1kZXNjcmlwdGlvbnMtaXRlbV9fY29udGVudCcsIGl0ZW0uY29udGVudENsYXNzTmFtZV0sXG4gICAgICAgICAgICAgIHN0eWxlOiBpdGVtLmNvbnRlbnRTdHlsZSxcbiAgICAgICAgICAgICAgYXR0cnM6IHsgY29sU3BhbjogaXRlbS5wcm9wcy5zcGFuICogMiAtIDFcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtpdGVtLnNsb3RzLmRlZmF1bHRdXG4gICAgICAgICAgKV07XG4gICAgICAgIH0pXVxuICAgICAgKV0pO1xuICAgIH1cbiAgICByZXR1cm4gaCgndGJvZHknLCBbaChcbiAgICAgICd0cicsXG4gICAgICB7ICdjbGFzcyc6ICdlbC1kZXNjcmlwdGlvbnMtcm93JyB9LFxuICAgICAgW3Jvdy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgdmFyIF9yZWYzO1xuXG4gICAgICAgIHJldHVybiBoKFxuICAgICAgICAgICd0ZCcsXG4gICAgICAgICAgeyAnY2xhc3MnOiAnZWwtZGVzY3JpcHRpb25zLWl0ZW0gZWwtZGVzY3JpcHRpb25zLWl0ZW1fX2NlbGwnLCBhdHRyczogeyBjb2xTcGFuOiBpdGVtLnByb3BzLnNwYW4gfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW2goXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHsgJ2NsYXNzJzogJ2VsLWRlc2NyaXB0aW9ucy1pdGVtX19jb250YWluZXInIH0sXG4gICAgICAgICAgICBbaChcbiAgICAgICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJ2NsYXNzJzogKF9yZWYzID0ge1xuICAgICAgICAgICAgICAgICAgJ2VsLWRlc2NyaXB0aW9ucy1pdGVtX19sYWJlbCc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAnaGFzLWNvbG9uJzogZWxEZXNjcmlwdGlvbnMuY29sb25cbiAgICAgICAgICAgICAgICB9LCBfcmVmM1tpdGVtLmxhYmVsQ2xhc3NOYW1lXSA9IHRydWUsIF9yZWYzKSxcbiAgICAgICAgICAgICAgICBzdHlsZTogaXRlbS5sYWJlbFN0eWxlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtpdGVtLmxhYmVsXVxuICAgICAgICAgICAgKSwgaChcbiAgICAgICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJ2NsYXNzJzogWydlbC1kZXNjcmlwdGlvbnMtaXRlbV9fY29udGVudCcsIGl0ZW0uY29udGVudENsYXNzTmFtZV0sXG4gICAgICAgICAgICAgICAgc3R5bGU6IGl0ZW0uY29udGVudFN0eWxlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtpdGVtLnNsb3RzLmRlZmF1bHRdXG4gICAgICAgICAgICApXVxuICAgICAgICAgICldXG4gICAgICAgICk7XG4gICAgICB9KV1cbiAgICApXSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9kZXNjcmlwdGlvbnMvc3JjL2luZGV4LmpzXG52YXIgc3JjX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG52YXIgc3JjX2NvbXBvbmVudHM7XG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGRlc2NyaXB0aW9uc19zcmMgPSAoe1xuICBuYW1lOiAnRWxEZXNjcmlwdGlvbnMnLFxuICBjb21wb25lbnRzOiAoc3JjX2NvbXBvbmVudHMgPSB7fSwgc3JjX2NvbXBvbmVudHNbZGVzY3JpcHRpb25zX3Jvdy5uYW1lXSA9IGRlc2NyaXB0aW9uc19yb3csIHNyY19jb21wb25lbnRzKSxcbiAgcHJvcHM6IHtcbiAgICBib3JkZXI6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgY29sdW1uOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAzXG4gICAgfSxcbiAgICBkaXJlY3Rpb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdob3Jpem9udGFsJ1xuICAgIH0sXG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgICAvLyB2YWxpZGF0b3I6IGlzVmFsaWRDb21wb25lbnRTaXplLFxuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBleHRyYToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGxhYmVsU3R5bGU6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgY29udGVudFN0eWxlOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIGxhYmVsQ2xhc3NOYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgY29udGVudENsYXNzTmFtZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGNvbG9uOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBkZXNjcmlwdGlvbnNTaXplOiBmdW5jdGlvbiBkZXNjcmlwdGlvbnNTaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZSB8fCAodGhpcy4kRUxFTUVOVCB8fCB7fSkuc2l6ZTtcbiAgICB9XG4gIH0sXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVsRGVzY3JpcHRpb25zOiB0aGlzXG4gICAgfTtcbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgZ2V0T3B0aW9uUHJvcHM6IGZ1bmN0aW9uIGdldE9wdGlvblByb3BzKHZub2RlKSB7XG4gICAgICBpZiAodm5vZGUuY29tcG9uZW50T3B0aW9ucykge1xuICAgICAgICB2YXIgY29tcG9uZW50T3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgICAgIHZhciBfY29tcG9uZW50T3B0aW9ucyRwcm8gPSBjb21wb25lbnRPcHRpb25zLnByb3BzRGF0YSxcbiAgICAgICAgICAgIHByb3BzRGF0YSA9IF9jb21wb25lbnRPcHRpb25zJHBybyA9PT0gdW5kZWZpbmVkID8ge30gOiBfY29tcG9uZW50T3B0aW9ucyRwcm8sXG4gICAgICAgICAgICBfY29tcG9uZW50T3B0aW9ucyRDdG8gPSBjb21wb25lbnRPcHRpb25zLkN0b3IsXG4gICAgICAgICAgICBDdG9yID0gX2NvbXBvbmVudE9wdGlvbnMkQ3RvID09PSB1bmRlZmluZWQgPyB7fSA6IF9jb21wb25lbnRPcHRpb25zJEN0bztcblxuICAgICAgICB2YXIgcHJvcHMgPSAoQ3Rvci5vcHRpb25zIHx8IHt9KS5wcm9wcyB8fCB7fTtcbiAgICAgICAgdmFyIHJlcyA9IHt9O1xuICAgICAgICBmb3IgKHZhciBrIGluIHByb3BzKSB7XG4gICAgICAgICAgdmFyIHYgPSBwcm9wc1trXTtcbiAgICAgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gdi5kZWZhdWx0O1xuICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVzW2tdID0gT2JqZWN0KHR5cGVzX1tcImlzRnVuY3Rpb25cIl0pKGRlZmF1bHRWYWx1ZSkgPyBkZWZhdWx0VmFsdWUuY2FsbCh2bm9kZSkgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzcmNfZXh0ZW5kcyh7fSwgcmVzLCBwcm9wc0RhdGEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG4gICAgZ2V0U2xvdHM6IGZ1bmN0aW9uIGdldFNsb3RzKHZub2RlKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgY29tcG9uZW50T3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnMgfHwge307XG4gICAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbiB8fCBjb21wb25lbnRPcHRpb25zLmNoaWxkcmVuIHx8IFtdO1xuICAgICAgdmFyIHNsb3RzID0ge307XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBpZiAoIV90aGlzLmlzRW1wdHlFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgIHZhciBuYW1lID0gY2hpbGQuZGF0YSAmJiBjaGlsZC5kYXRhLnNsb3QgfHwgJ2RlZmF1bHQnO1xuICAgICAgICAgIHNsb3RzW25hbWVdID0gc2xvdHNbbmFtZV0gfHwgW107XG4gICAgICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgICAgICAgc2xvdHNbbmFtZV0ucHVzaChjaGlsZC5jaGlsZHJlbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNsb3RzW25hbWVdLnB1c2goY2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3JjX2V4dGVuZHMoe30sIHNsb3RzKTtcbiAgICB9LFxuICAgIGlzRW1wdHlFbGVtZW50OiBmdW5jdGlvbiBpc0VtcHR5RWxlbWVudChjKSB7XG4gICAgICByZXR1cm4gIShjLnRhZyB8fCBjLnRleHQgJiYgYy50ZXh0LnRyaW0oKSAhPT0gJycpO1xuICAgIH0sXG4gICAgZmlsbGVkTm9kZTogZnVuY3Rpb24gZmlsbGVkTm9kZShub2RlLCBzcGFuLCBjb3VudCkge1xuICAgICAgdmFyIGlzTGFzdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogZmFsc2U7XG5cbiAgICAgIGlmICghbm9kZS5wcm9wcykge1xuICAgICAgICBub2RlLnByb3BzID0ge307XG4gICAgICB9XG4gICAgICBpZiAoc3BhbiA+IGNvdW50KSB7XG4gICAgICAgIG5vZGUucHJvcHMuc3BhbiA9IGNvdW50O1xuICAgICAgfVxuICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAvLyBzZXQgdGhlIG1heCBzcGFuLCBjYXVzZSBvZiB0aGUgbGFzdCB0ZFxuICAgICAgICBub2RlLnByb3BzLnNwYW4gPSBjb3VudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlO1xuICAgIH0sXG4gICAgZ2V0Um93czogZnVuY3Rpb24gZ2V0Um93cygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgY2hpbGRyZW4gPSAodGhpcy4kc2xvdHMuZGVmYXVsdCB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uICh2bm9kZSkge1xuICAgICAgICByZXR1cm4gdm5vZGUudGFnICYmIHZub2RlLmNvbXBvbmVudE9wdGlvbnMgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucy5DdG9yLm9wdGlvbnMubmFtZSA9PT0gJ0VsRGVzY3JpcHRpb25zSXRlbSc7XG4gICAgICB9KTtcbiAgICAgIHZhciBub2RlcyA9IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAodm5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcm9wczogX3RoaXMyLmdldE9wdGlvblByb3BzKHZub2RlKSxcbiAgICAgICAgICBzbG90czogX3RoaXMyLmdldFNsb3RzKHZub2RlKSxcbiAgICAgICAgICB2bm9kZTogdm5vZGVcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHJvd3MgPSBbXTtcbiAgICAgIHZhciB0ZW1wID0gW107XG4gICAgICB2YXIgY291bnQgPSB0aGlzLmNvbHVtbjtcblxuICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIHNwYW4gPSBub2RlLnByb3BzLnNwYW4gfHwgMTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IGNoaWxkcmVuLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICB0ZW1wLnB1c2goX3RoaXMyLmZpbGxlZE5vZGUobm9kZSwgc3BhbiwgY291bnQsIHRydWUpKTtcbiAgICAgICAgICByb3dzLnB1c2godGVtcCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNwYW4gPCBjb3VudCkge1xuICAgICAgICAgIGNvdW50IC09IHNwYW47XG4gICAgICAgICAgdGVtcC5wdXNoKG5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRlbXAucHVzaChfdGhpczIuZmlsbGVkTm9kZShub2RlLCBzcGFuLCBjb3VudCkpO1xuICAgICAgICAgIHJvd3MucHVzaCh0ZW1wKTtcbiAgICAgICAgICBjb3VudCA9IF90aGlzMi5jb2x1bW47XG4gICAgICAgICAgdGVtcCA9IFtdO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJvd3M7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgaCA9IGFyZ3VtZW50c1swXTtcbiAgICB2YXIgdGl0bGUgPSB0aGlzLnRpdGxlLFxuICAgICAgICBleHRyYSA9IHRoaXMuZXh0cmEsXG4gICAgICAgIGJvcmRlciA9IHRoaXMuYm9yZGVyLFxuICAgICAgICBkZXNjcmlwdGlvbnNTaXplID0gdGhpcy5kZXNjcmlwdGlvbnNTaXplLFxuICAgICAgICAkc2xvdHMgPSB0aGlzLiRzbG90cztcblxuICAgIHZhciByb3dzID0gdGhpcy5nZXRSb3dzKCk7XG5cbiAgICByZXR1cm4gaChcbiAgICAgICdkaXYnLFxuICAgICAgeyAnY2xhc3MnOiAnZWwtZGVzY3JpcHRpb25zJyB9LFxuICAgICAgW3RpdGxlIHx8IGV4dHJhIHx8ICRzbG90cy50aXRsZSB8fCAkc2xvdHMuZXh0cmEgPyBoKFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyAnY2xhc3MnOiAnZWwtZGVzY3JpcHRpb25zX19oZWFkZXInIH0sXG4gICAgICAgIFtoKFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHsgJ2NsYXNzJzogJ2VsLWRlc2NyaXB0aW9uc19fdGl0bGUnIH0sXG4gICAgICAgICAgWyRzbG90cy50aXRsZSA/ICRzbG90cy50aXRsZSA6IHRpdGxlXVxuICAgICAgICApLCBoKFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHsgJ2NsYXNzJzogJ2VsLWRlc2NyaXB0aW9uc19fZXh0cmEnIH0sXG4gICAgICAgICAgWyRzbG90cy5leHRyYSA/ICRzbG90cy5leHRyYSA6IGV4dHJhXVxuICAgICAgICApXVxuICAgICAgKSA6IG51bGwsIGgoXG4gICAgICAgICdkaXYnLFxuICAgICAgICB7ICdjbGFzcyc6ICdlbC1kZXNjcmlwdGlvbnNfX2JvZHknIH0sXG4gICAgICAgIFtoKFxuICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgeyAnY2xhc3MnOiBbJ2VsLWRlc2NyaXB0aW9uc19fdGFibGUnLCB7ICdpcy1ib3JkZXJlZCc6IGJvcmRlciB9LCBkZXNjcmlwdGlvbnNTaXplID8gJ2VsLWRlc2NyaXB0aW9ucy0tJyArIGRlc2NyaXB0aW9uc1NpemUgOiAnJ10gfSxcbiAgICAgICAgICBbcm93cy5tYXAoZnVuY3Rpb24gKHJvdykge1xuICAgICAgICAgICAgcmV0dXJuIGgoZGVzY3JpcHRpb25zX3Jvdywge1xuICAgICAgICAgICAgICBhdHRyczogeyByb3c6IHJvdyB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KV1cbiAgICAgICAgKV1cbiAgICAgICldXG4gICAgKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Rlc2NyaXB0aW9ucy9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5kZXNjcmlwdGlvbnNfc3JjLmluc3RhbGwgPSBmdW5jdGlvbiBpbnN0YWxsKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGRlc2NyaXB0aW9uc19zcmMubmFtZSwgZGVzY3JpcHRpb25zX3NyYyk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkZXNjcmlwdGlvbnMgPSAoZGVzY3JpcHRpb25zX3NyYyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Rlc2NyaXB0aW9ucy9zcmMvZGVzY3JpcHRpb25zLWl0ZW0uanNcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGRlc2NyaXB0aW9uc19pdGVtID0gKHtcbiAgbmFtZTogJ0VsRGVzY3JpcHRpb25zSXRlbScsXG4gIHByb3BzOiB7XG4gICAgbGFiZWw6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBzcGFuOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAxXG4gICAgfSxcbiAgICBjb250ZW50Q2xhc3NOYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgY29udGVudFN0eWxlOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIGxhYmVsQ2xhc3NOYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgbGFiZWxTdHlsZToge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2Rlc2NyaXB0aW9ucy1pdGVtL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmRlc2NyaXB0aW9uc19pdGVtLmluc3RhbGwgPSBmdW5jdGlvbiBpbnN0YWxsKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KGRlc2NyaXB0aW9uc19pdGVtLm5hbWUsIGRlc2NyaXB0aW9uc19pdGVtKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2Rlc2NyaXB0aW9uc19pdGVtID0gKGRlc2NyaXB0aW9uc19pdGVtKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcmVzdWx0L3NyYy9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzQwOGIxMzkmXG52YXIgc3JjdnVlX3R5cGVfdGVtcGxhdGVfaWRfMzQwOGIxMzlfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtcmVzdWx0XCIgfSwgW1xuICAgIF9jKFxuICAgICAgXCJkaXZcIixcbiAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtcmVzdWx0X19pY29uXCIgfSxcbiAgICAgIFtcbiAgICAgICAgX3ZtLl90KFwiaWNvblwiLCBbXG4gICAgICAgICAgX2MoX3ZtLmljb25FbGVtZW50LCB7IHRhZzogXCJjb21wb25lbnRcIiwgY2xhc3M6IF92bS5pY29uRWxlbWVudCB9KVxuICAgICAgICBdKVxuICAgICAgXSxcbiAgICAgIDJcbiAgICApLFxuICAgIF92bS50aXRsZSB8fCBfdm0uJHNsb3RzLnRpdGxlXG4gICAgICA/IF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1yZXN1bHRfX3RpdGxlXCIgfSxcbiAgICAgICAgICBbX3ZtLl90KFwidGl0bGVcIiwgW19jKFwicFwiLCBbX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKV0pXSldLFxuICAgICAgICAgIDJcbiAgICAgICAgKVxuICAgICAgOiBfdm0uX2UoKSxcbiAgICBfdm0uc3ViVGl0bGUgfHwgX3ZtLiRzbG90cy5zdWJUaXRsZVxuICAgICAgPyBfYyhcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtcmVzdWx0X19zdWJ0aXRsZVwiIH0sXG4gICAgICAgICAgW192bS5fdChcInN1YlRpdGxlXCIsIFtfYyhcInBcIiwgW192bS5fdihfdm0uX3MoX3ZtLnN1YlRpdGxlKSldKV0pXSxcbiAgICAgICAgICAyXG4gICAgICAgIClcbiAgICAgIDogX3ZtLl9lKCksXG4gICAgX3ZtLiRzbG90cy5leHRyYVxuICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXJlc3VsdF9fZXh0cmFcIiB9LCBbX3ZtLl90KFwiZXh0cmFcIildLCAyKVxuICAgICAgOiBfdm0uX2UoKVxuICBdKVxufVxudmFyIHNyY3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzM0MDhiMTM5X3N0YXRpY1JlbmRlckZucyA9IFtdXG5zcmN2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDA4YjEzOV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0MDhiMTM5JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaWNvbi1zdWNjZXNzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xODExOTQxOCZcbnZhciBpY29uX3N1Y2Nlc3N2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xODExOTQxOF9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJzdmdcIixcbiAgICB7IGF0dHJzOiB7IHZpZXdCb3g6IFwiMCAwIDQ4IDQ4XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFwicGF0aFwiLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgZDpcbiAgICAgICAgICAgIFwiTTI0LDQgQzM1LjA0NTY5NSw0IDQ0LDEyLjk1NDMwNSA0NCwyNCBDNDQsMzUuMDQ1Njk1IDM1LjA0NTY5NSw0NCAyNCw0NCBDMTIuOTU0MzA1LDQ0IDQsMzUuMDQ1Njk1IDQsMjQgQzQsMTIuOTU0MzA1IDEyLjk1NDMwNSw0IDI0LDQgWiBNMzQuNTU0ODA5OCwxNi40NDg1NzExIEMzMy45NjEyMjI4LDE1Ljg1MDQ3NjMgMzIuOTk4ODI4MiwxNS44NTA0NzYzIDMyLjQwNTI0MTIsMTYuNDQ4NTcxMSBMMzIuNDA1MjQxMiwxNi40NDg1NzExIEwyMS40MTM3NTcsMjcuNTgwNTgxMSBMMjEuNDEzNzU3LDI3LjU4MDU4MTEgTDIxLjQwMzQ2NDIsMjcuNTkwODU1IEMyMS4wMDk3NTQyLDI3Ljk3ODE2NzQgMjAuMzc2NjEwNSwyNy45NzI5ODExIDE5Ljk4OTI5ODEsMjcuNTc5MjcxMSBMMTkuOTg5Mjk4MSwyNy41NzkyNzExIEwxNS41OTQ3NTg4LDIzLjExMjE0MjggQzE1LjAwMTE3MTgsMjIuNTE0MDQ4IDE0LjAzODc3NzIsMjIuNTE0MDQ4IDEzLjQ0NTE5MDIsMjMuMTEyMTQyOCBDMTIuODUxNjAzMywyMy43MTAyMzc2IDEyLjg1MTYwMzMsMjQuNjc5OTQwOSAxMy40NDUxOTAyLDI1LjI3ODAzNTcgTDEzLjQ0NTE5MDIsMjUuMjc4MDM1NyBMMTkuNjI2MDc4NiwzMS41NTE0Mjg5IEMyMC4yMTk2NjU2LDMyLjE0OTUyMzcgMjEuMTgyMDYwMiwzMi4xNDk1MjM3IDIxLjc3NTY0NzIsMzEuNTUxNDI4OSBMMjEuNzc1NjQ3MiwzMS41NTE0Mjg5IEwzNC41NTQ4MDk4LDE4LjYxNDQ2NCBDMzUuMTQ4Mzk2NywxOC4wMTYzNjkyIDM1LjE0ODM5NjcsMTcuMDQ2NjY1OSAzNC41NTQ4MDk4LDE2LjQ0ODU3MTEgWlwiXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgXVxuICApXG59XG52YXIgaWNvbl9zdWNjZXNzdnVlX3R5cGVfdGVtcGxhdGVfaWRfMTgxMTk0MThfc3RhdGljUmVuZGVyRm5zID0gW11cbmljb25fc3VjY2Vzc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzE4MTE5NDE4X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmVzdWx0L3NyYy9pY29uLXN1Y2Nlc3MudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4MTE5NDE4JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9yZXN1bHQvc3JjL2ljb24tc3VjY2Vzcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgaWNvbl9zdWNjZXNzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0ljb25TdWNjZXNzJ1xufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaWNvbi1zdWNjZXNzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfaWNvbl9zdWNjZXNzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGljb25fc3VjY2Vzc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yZXN1bHQvc3JjL2ljb24tc3VjY2Vzcy52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBpY29uX3N1Y2Nlc3NfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfaWNvbl9zdWNjZXNzdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBpY29uX3N1Y2Nlc3N2dWVfdHlwZV90ZW1wbGF0ZV9pZF8xODExOTQxOF9yZW5kZXIsXG4gIGljb25fc3VjY2Vzc3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzE4MTE5NDE4X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgaWNvbl9zdWNjZXNzX2FwaTsgfVxuaWNvbl9zdWNjZXNzX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvcmVzdWx0L3NyYy9pY29uLXN1Y2Nlc3MudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGljb25fc3VjY2VzcyA9IChpY29uX3N1Y2Nlc3NfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9yZXN1bHQvc3JjL2ljb24tZXJyb3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIxMTk5MjQ2JlxudmFyIGljb25fZXJyb3J2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yMTE5OTI0Nl9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJzdmdcIixcbiAgICB7IGF0dHJzOiB7IHZpZXdCb3g6IFwiMCAwIDQ4IDQ4XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFwicGF0aFwiLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgZDpcbiAgICAgICAgICAgIFwiTTI0LDQgQzM1LjA0NTY5NSw0IDQ0LDEyLjk1NDMwNSA0NCwyNCBDNDQsMzUuMDQ1Njk1IDM1LjA0NTY5NSw0NCAyNCw0NCBDMTIuOTU0MzA1LDQ0IDQsMzUuMDQ1Njk1IDQsMjQgQzQsMTIuOTU0MzA1IDEyLjk1NDMwNSw0IDI0LDQgWiBNMzIuNTc4MTgsMTUuNDIxODIgQzMyLjAxNTc1MzQsMTQuODU5MzkzMyAzMS4xMDM4Nzk3LDE0Ljg1OTM5MzMgMzAuNTQxNDUzLDE1LjQyMTgyIEwzMC41NDE0NTMsMTUuNDIxODIgTDI0LjAwMDY3ODksMjEuOTYyNTk0MSBMMTcuNDU4NTQ3LDE1LjQyMTgyIEMxNi44OTYxMjAzLDE0Ljg1OTM5MzMgMTUuOTg0MjQ2NiwxNC44NTkzOTMzIDE1LjQyMTgyLDE1LjQyMTgyIEMxNC44NTkzOTMzLDE1Ljk4NDI0NjYgMTQuODU5MzkzMywxNi44OTYxMjAzIDE1LjQyMTgyLDE3LjQ1ODU0NyBMMTUuNDIxODIsMTcuNDU4NTQ3IEwyMS45NjM5NTE5LDIzLjk5OTMyMTEgTDE1LjQyMTgyLDMwLjU0MTQ1MyBDMTQuODU5MzkzMywzMS4xMDM4Nzk3IDE0Ljg1OTM5MzMsMzIuMDE1NzUzNCAxNS40MjE4MiwzMi41NzgxOCBDMTUuOTg0MjQ2NiwzMy4xNDA2MDY3IDE2Ljg5NjEyMDMsMzMuMTQwNjA2NyAxNy40NTg1NDcsMzIuNTc4MTggTDE3LjQ1ODU0NywzMi41NzgxOCBMMjQuMDAwNjc4OSwyNi4wMzYwNDgxIEwzMC41NDE0NTMsMzIuNTc4MTggQzMxLjEwMzg3OTcsMzMuMTQwNjA2NyAzMi4wMTU3NTM0LDMzLjE0MDYwNjcgMzIuNTc4MTgsMzIuNTc4MTggQzMzLjE0MDYwNjcsMzIuMDE1NzUzNCAzMy4xNDA2MDY3LDMxLjEwMzg3OTcgMzIuNTc4MTgsMzAuNTQxNDUzIEwzMi41NzgxOCwzMC41NDE0NTMgTDI2LjAzNzQwNTksMjMuOTk5MzIxMSBMMzIuNTc4MTgsMTcuNDU4NTQ3IEMzMy4xNDA2MDY3LDE2Ljg5NjEyMDMgMzMuMTQwNjA2NywxNS45ODQyNDY2IDMyLjU3ODE4LDE1LjQyMTgyIFpcIlxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF1cbiAgKVxufVxudmFyIGljb25fZXJyb3J2dWVfdHlwZV90ZW1wbGF0ZV9pZF8yMTE5OTI0Nl9zdGF0aWNSZW5kZXJGbnMgPSBbXVxuaWNvbl9lcnJvcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzIxMTk5MjQ2X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmVzdWx0L3NyYy9pY29uLWVycm9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMTE5OTI0NiZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcmVzdWx0L3NyYy9pY29uLWVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBpY29uX2Vycm9ydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0ljb25FcnJvcidcbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yZXN1bHQvc3JjL2ljb24tZXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19pY29uX2Vycm9ydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGljb25fZXJyb3J2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmVzdWx0L3NyYy9pY29uLWVycm9yLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGljb25fZXJyb3JfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfaWNvbl9lcnJvcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgaWNvbl9lcnJvcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzIxMTk5MjQ2X3JlbmRlcixcbiAgaWNvbl9lcnJvcnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzIxMTk5MjQ2X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgaWNvbl9lcnJvcl9hcGk7IH1cbmljb25fZXJyb3JfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9yZXN1bHQvc3JjL2ljb24tZXJyb3IudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGljb25fZXJyb3IgPSAoaWNvbl9lcnJvcl9jb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaWNvbi13YXJuaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NmZlOGYzMSZcbnZhciBpY29uX3dhcm5pbmd2dWVfdHlwZV90ZW1wbGF0ZV9pZF80NmZlOGYzMV9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJzdmdcIixcbiAgICB7IGF0dHJzOiB7IHZpZXdCb3g6IFwiMCAwIDQ4IDQ4XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFwicGF0aFwiLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgZDpcbiAgICAgICAgICAgIFwiTTI0LDQgQzM1LjA0NTY5NSw0IDQ0LDEyLjk1NDMwNSA0NCwyNCBDNDQsMzUuMDQ1Njk1IDM1LjA0NTY5NSw0NCAyNCw0NCBDMTIuOTU0MzA1LDQ0IDQsMzUuMDQ1Njk1IDQsMjQgQzQsMTIuOTU0MzA1IDEyLjk1NDMwNSw0IDI0LDQgWiBNMjQsMzEgQzIyLjg5NTQzMDUsMzEgMjIsMzEuODk1NDMwNSAyMiwzMyBDMjIsMzQuMTA0NTY5NSAyMi44OTU0MzA1LDM1IDI0LDM1IEMyNS4xMDQ1Njk1LDM1IDI2LDM0LjEwNDU2OTUgMjYsMzMgQzI2LDMxLjg5NTQzMDUgMjUuMTA0NTY5NSwzMSAyNCwzMSBaIE0yNCwxNCBDMjMuMTcxNTcyOSwxNCAyMi41LDE0LjY3MTU3MjkgMjIuNSwxNS41IEwyMi41LDE1LjUgTDIyLjUsMjcuNSBDMjIuNSwyOC4zMjg0MjcxIDIzLjE3MTU3MjksMjkgMjQsMjkgQzI0LjgyODQyNzEsMjkgMjUuNSwyOC4zMjg0MjcxIDI1LjUsMjcuNSBMMjUuNSwyNy41IEwyNS41LDE1LjUgQzI1LjUsMTQuNjcxNTcyOSAyNC44Mjg0MjcxLDE0IDI0LDE0IFpcIlxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF1cbiAgKVxufVxudmFyIGljb25fd2FybmluZ3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzQ2ZmU4ZjMxX3N0YXRpY1JlbmRlckZucyA9IFtdXG5pY29uX3dhcm5pbmd2dWVfdHlwZV90ZW1wbGF0ZV9pZF80NmZlOGYzMV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaWNvbi13YXJuaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NmZlOGYzMSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaWNvbi13YXJuaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZcblxuXG5cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGljb25fd2FybmluZ3Z1ZV90eXBlX3NjcmlwdF9sYW5nX3RzXyA9ICh7XG4gIG5hbWU6ICdJY29uV2FybmluZydcbn0pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaWNvbi13YXJuaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfaWNvbl93YXJuaW5ndnVlX3R5cGVfc2NyaXB0X2xhbmdfdHNfID0gKGljb25fd2FybmluZ3Z1ZV90eXBlX3NjcmlwdF9sYW5nX3RzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yZXN1bHQvc3JjL2ljb24td2FybmluZy52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBpY29uX3dhcm5pbmdfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfaWNvbl93YXJuaW5ndnVlX3R5cGVfc2NyaXB0X2xhbmdfdHNfLFxuICBpY29uX3dhcm5pbmd2dWVfdHlwZV90ZW1wbGF0ZV9pZF80NmZlOGYzMV9yZW5kZXIsXG4gIGljb25fd2FybmluZ3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzQ2ZmU4ZjMxX3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgaWNvbl93YXJuaW5nX2FwaTsgfVxuaWNvbl93YXJuaW5nX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvcmVzdWx0L3NyYy9pY29uLXdhcm5pbmcudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGljb25fd2FybmluZyA9IChpY29uX3dhcm5pbmdfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9yZXN1bHQvc3JjL2ljb24taW5mby52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTllM2RlNjkmXG52YXIgaWNvbl9pbmZvdnVlX3R5cGVfdGVtcGxhdGVfaWRfMTllM2RlNjlfcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwic3ZnXCIsXG4gICAgeyBhdHRyczogeyB2aWV3Qm94OiBcIjAgMCA0OCA0OFwiLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIH0gfSxcbiAgICBbXG4gICAgICBfYyhcInBhdGhcIiwge1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGQ6XG4gICAgICAgICAgICBcIk0yNCw0IEMzNS4wNDU2OTUsNCA0NCwxMi45NTQzMDUgNDQsMjQgQzQ0LDM1LjA0NTY5NSAzNS4wNDU2OTUsNDQgMjQsNDQgQzEyLjk1NDMwNSw0NCA0LDM1LjA0NTY5NSA0LDI0IEM0LDEyLjk1NDMwNSAxMi45NTQzMDUsNCAyNCw0IFogTTI0LDE5IEwyMSwxOSBDMjAuMTcxNTcyOSwxOSAxOS41LDE5LjY3MTU3MjkgMTkuNSwyMC41IEMxOS41LDIxLjMyODQyNzEgMjAuMTcxNTcyOSwyMiAyMSwyMiBMMjEsMjIgTDIyLjUsMjIgTDIyLjUsMzEgTDIxLDMxIEMyMC4xNzE1NzI5LDMxIDE5LjUsMzEuNjcxNTcyOSAxOS41LDMyLjUgQzE5LjUsMzMuMzI4NDI3MSAyMC4xNzE1NzI5LDM0IDIxLDM0IEwyMSwzNCBMMjcsMzQgQzI3LjgyODQyNzEsMzQgMjguNSwzMy4zMjg0MjcxIDI4LjUsMzIuNSBDMjguNSwzMS42NzE1NzI5IDI3LjgyODQyNzEsMzEgMjcsMzEgTDI3LDMxIEwyNS41LDMxIEwyNS41LDIwLjUgQzI1LjUsMTkuNjcxNTcyOSAyNC44Mjg0MjcxLDE5IDI0LDE5IEwyNCwxOSBaIE0yNCwxMyBDMjIuODk1NDMwNSwxMyAyMiwxMy44OTU0MzA1IDIyLDE1IEMyMiwxNi4xMDQ1Njk1IDIyLjg5NTQzMDUsMTcgMjQsMTcgQzI1LjEwNDU2OTUsMTcgMjYsMTYuMTA0NTY5NSAyNiwxNSBDMjYsMTMuODk1NDMwNSAyNS4xMDQ1Njk1LDEzIDI0LDEzIFpcIlxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF1cbiAgKVxufVxudmFyIGljb25faW5mb3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzE5ZTNkZTY5X3N0YXRpY1JlbmRlckZucyA9IFtdXG5pY29uX2luZm92dWVfdHlwZV90ZW1wbGF0ZV9pZF8xOWUzZGU2OV9yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaWNvbi1pbmZvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xOWUzZGU2OSZcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaWNvbi1pbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZcblxuXG5cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGljb25faW5mb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX3RzXyA9ICh7XG4gIG5hbWU6ICdJY29uSW5mbydcbn0pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaWNvbi1pbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfaWNvbl9pbmZvdnVlX3R5cGVfc2NyaXB0X2xhbmdfdHNfID0gKGljb25faW5mb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX3RzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yZXN1bHQvc3JjL2ljb24taW5mby52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBpY29uX2luZm9fY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzcmNfaWNvbl9pbmZvdnVlX3R5cGVfc2NyaXB0X2xhbmdfdHNfLFxuICBpY29uX2luZm92dWVfdHlwZV90ZW1wbGF0ZV9pZF8xOWUzZGU2OV9yZW5kZXIsXG4gIGljb25faW5mb3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzE5ZTNkZTY5X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgaWNvbl9pbmZvX2FwaTsgfVxuaWNvbl9pbmZvX2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvcmVzdWx0L3NyYy9pY29uLWluZm8udnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGljb25faW5mbyA9IChpY29uX2luZm9fY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcmVzdWx0L3NyYy9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG52YXIgcmVzdWx0X3NyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2NvbXBvbmVudHM7XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxuXG52YXIgSWNvbk1hcCA9IHtcbiAgc3VjY2VzczogJ2ljb24tc3VjY2VzcycsXG4gIHdhcm5pbmc6ICdpY29uLXdhcm5pbmcnLFxuICBlcnJvcjogJ2ljb24tZXJyb3InLFxuICBpbmZvOiAnaWNvbi1pbmZvJ1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcmVzdWx0X3NyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFJlc3VsdCcsXG4gIGNvbXBvbmVudHM6IChyZXN1bHRfc3JjdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfY29tcG9uZW50cyA9IHt9LCByZXN1bHRfc3JjdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfY29tcG9uZW50c1tpY29uX3N1Y2Nlc3MubmFtZV0gPSBpY29uX3N1Y2Nlc3MsIHJlc3VsdF9zcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19jb21wb25lbnRzW2ljb25fZXJyb3IubmFtZV0gPSBpY29uX2Vycm9yLCByZXN1bHRfc3JjdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfY29tcG9uZW50c1tpY29uX3dhcm5pbmcubmFtZV0gPSBpY29uX3dhcm5pbmcsIHJlc3VsdF9zcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc19jb21wb25lbnRzW2ljb25faW5mby5uYW1lXSA9IGljb25faW5mbywgcmVzdWx0X3NyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzX2NvbXBvbmVudHMpLFxuICBwcm9wczoge1xuICAgIHRpdGxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgc3ViVGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBpY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnaW5mbydcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgaWNvbkVsZW1lbnQ6IGZ1bmN0aW9uIGljb25FbGVtZW50KCkge1xuICAgICAgdmFyIGljb24gPSB0aGlzLmljb247XG4gICAgICByZXR1cm4gaWNvbiAmJiBJY29uTWFwW2ljb25dID8gSWNvbk1hcFtpY29uXSA6ICdpY29uLWluZm8nO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Jlc3VsdC9zcmMvaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3Jlc3VsdF9zcmN2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAocmVzdWx0X3NyY3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yZXN1bHQvc3JjL2luZGV4LnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIHJlc3VsdF9zcmNfY29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBwYWNrYWdlc19yZXN1bHRfc3JjdnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICBzcmN2dWVfdHlwZV90ZW1wbGF0ZV9pZF8zNDA4YjEzOV9yZW5kZXIsXG4gIHNyY3Z1ZV90eXBlX3RlbXBsYXRlX2lkXzM0MDhiMTM5X3N0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgcmVzdWx0X3NyY19hcGk7IH1cbnJlc3VsdF9zcmNfY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9yZXN1bHQvc3JjL2luZGV4LnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciByZXN1bHRfc3JjID0gKHJlc3VsdF9zcmNfY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yZXN1bHQvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucmVzdWx0X3NyYy5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KHJlc3VsdF9zcmMubmFtZSwgcmVzdWx0X3NyYyk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwYWNrYWdlc19yZXN1bHQgPSAocmVzdWx0X3NyYyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9pbmRleC5qc1xuLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgJy4vYnVpbGQvYmluL2J1aWxkLWVudHJ5LmpzJyAqL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxudmFyIGNvbXBvbmVudHMgPSBbcGFja2FnZXNfcGFnaW5hdGlvbiwgZGlhbG9nLCBwYWNrYWdlc19hdXRvY29tcGxldGUsIHBhY2thZ2VzX2Ryb3Bkb3duLCBwYWNrYWdlc19kcm9wZG93bl9tZW51LCBwYWNrYWdlc19kcm9wZG93bl9pdGVtLCBwYWNrYWdlc19tZW51LCBwYWNrYWdlc19zdWJtZW51LCBwYWNrYWdlc19tZW51X2l0ZW0sIHBhY2thZ2VzX21lbnVfaXRlbV9ncm91cCwgcGFja2FnZXNfaW5wdXQsIHBhY2thZ2VzX2lucHV0X251bWJlciwgcGFja2FnZXNfcmFkaW8sIHBhY2thZ2VzX3JhZGlvX2dyb3VwLCBwYWNrYWdlc19yYWRpb19idXR0b24sIHBhY2thZ2VzX2NoZWNrYm94LCBwYWNrYWdlc19jaGVja2JveF9idXR0b24sIHBhY2thZ2VzX2NoZWNrYm94X2dyb3VwLCBwYWNrYWdlc19zd2l0Y2gsIHBhY2thZ2VzX3NlbGVjdCwgcGFja2FnZXNfb3B0aW9uLCBwYWNrYWdlc19vcHRpb25fZ3JvdXAsIHBhY2thZ2VzX2J1dHRvbiwgcGFja2FnZXNfYnV0dG9uX2dyb3VwLCBwYWNrYWdlc190YWJsZSwgcGFja2FnZXNfdGFibGVfY29sdW1uLCBwYWNrYWdlc19kYXRlX3BpY2tlciwgcGFja2FnZXNfdGltZV9zZWxlY3QsIHBhY2thZ2VzX3RpbWVfcGlja2VyLCBwb3BvdmVyLCBwYWNrYWdlc190b29sdGlwLCBwYWNrYWdlc19icmVhZGNydW1iLCBwYWNrYWdlc19icmVhZGNydW1iX2l0ZW0sIHBhY2thZ2VzX2Zvcm0sIHBhY2thZ2VzX2Zvcm1faXRlbSwgcGFja2FnZXNfdGFicywgcGFja2FnZXNfdGFiX3BhbmUsIHBhY2thZ2VzX3RhZywgcGFja2FnZXNfdHJlZSwgcGFja2FnZXNfYWxlcnQsIHNsaWRlciwgcGFja2FnZXNfaWNvbiwgcGFja2FnZXNfcm93LCBwYWNrYWdlc19jb2wsIHBhY2thZ2VzX3VwbG9hZCwgcGFja2FnZXNfcHJvZ3Jlc3MsIHBhY2thZ2VzX3NwaW5uZXIsIGJhZGdlLCBjYXJkLCBwYWNrYWdlc19yYXRlLCBwYWNrYWdlc19zdGVwcywgcGFja2FnZXNfc3RlcCwgY2Fyb3VzZWwsIHNjcm9sbGJhciwgY2Fyb3VzZWxfaXRlbSwgcGFja2FnZXNfY29sbGFwc2UsIHBhY2thZ2VzX2NvbGxhcHNlX2l0ZW0sIHBhY2thZ2VzX2Nhc2NhZGVyLCBjb2xvcl9waWNrZXIsIHRyYW5zZmVyLCBwYWNrYWdlc19jb250YWluZXIsIGhlYWRlciwgYXNpZGUsIHBhY2thZ2VzX21haW4sIGZvb3RlciwgdGltZWxpbmUsIHRpbWVsaW5lX2l0ZW0sIHBhY2thZ2VzX2xpbmssIGRpdmlkZXIsIHBhY2thZ2VzX2ltYWdlLCBjYWxlbmRhciwgYmFja3RvcCwgcGFnZV9oZWFkZXIsIHBhY2thZ2VzX2Nhc2NhZGVyX3BhbmVsLCBhdmF0YXIsIGRyYXdlciwgc3RhdGlzdGljLCBwb3Bjb25maXJtLCBza2VsZXRvbiwgc2tlbGV0b25faXRlbSwgZW1wdHksIGRlc2NyaXB0aW9ucywgcGFja2FnZXNfZGVzY3JpcHRpb25zX2l0ZW0sIHBhY2thZ2VzX3Jlc3VsdCwgY29sbGFwc2VfdHJhbnNpdGlvbl9kZWZhdWx0LmFdO1xuXG52YXIgc3JjX2luc3RhbGwgPSBmdW5jdGlvbiBpbnN0YWxsKFZ1ZSkge1xuICB2YXIgb3B0cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgbGliX2xvY2FsZV9kZWZhdWx0LmEudXNlKG9wdHMubG9jYWxlKTtcbiAgbGliX2xvY2FsZV9kZWZhdWx0LmEuaTE4bihvcHRzLmkxOG4pO1xuXG4gIGNvbXBvbmVudHMuZm9yRWFjaChmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgVnVlLmNvbXBvbmVudChjb21wb25lbnQubmFtZSwgY29tcG9uZW50KTtcbiAgfSk7XG5cbiAgVnVlLnVzZShpbmZpbml0ZV9zY3JvbGwpO1xuICBWdWUudXNlKHBhY2thZ2VzX2xvYWRpbmcuZGlyZWN0aXZlKTtcblxuICBWdWUucHJvdG90eXBlLiRFTEVNRU5UID0ge1xuICAgIHNpemU6IG9wdHMuc2l6ZSB8fCAnJyxcbiAgICB6SW5kZXg6IG9wdHMuekluZGV4IHx8IDIwMDBcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRsb2FkaW5nID0gcGFja2FnZXNfbG9hZGluZy5zZXJ2aWNlO1xuICBWdWUucHJvdG90eXBlLiRtc2dib3ggPSBtZXNzYWdlX2JveDtcbiAgVnVlLnByb3RvdHlwZS4kYWxlcnQgPSBtZXNzYWdlX2JveC5hbGVydDtcbiAgVnVlLnByb3RvdHlwZS4kY29uZmlybSA9IG1lc3NhZ2VfYm94LmNvbmZpcm07XG4gIFZ1ZS5wcm90b3R5cGUuJHByb21wdCA9IG1lc3NhZ2VfYm94LnByb21wdDtcbiAgVnVlLnByb3RvdHlwZS4kbm90aWZ5ID0gbm90aWZpY2F0aW9uO1xuICBWdWUucHJvdG90eXBlLiRtZXNzYWdlID0gcGFja2FnZXNfbWVzc2FnZTtcbn07XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WdWUpIHtcbiAgc3JjX2luc3RhbGwod2luZG93LlZ1ZSk7XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY18wID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoe1xuICB2ZXJzaW9uOiAnMi4xNS4xNCcsXG4gIGxvY2FsZTogbGliX2xvY2FsZV9kZWZhdWx0LmEudXNlLFxuICBpMThuOiBsaWJfbG9jYWxlX2RlZmF1bHQuYS5pMThuLFxuICBpbnN0YWxsOiBzcmNfaW5zdGFsbCxcbiAgQ29sbGFwc2VUcmFuc2l0aW9uOiBjb2xsYXBzZV90cmFuc2l0aW9uX2RlZmF1bHQuYSxcbiAgTG9hZGluZzogcGFja2FnZXNfbG9hZGluZyxcbiAgUGFnaW5hdGlvbjogcGFja2FnZXNfcGFnaW5hdGlvbixcbiAgRGlhbG9nOiBkaWFsb2csXG4gIEF1dG9jb21wbGV0ZTogcGFja2FnZXNfYXV0b2NvbXBsZXRlLFxuICBEcm9wZG93bjogcGFja2FnZXNfZHJvcGRvd24sXG4gIERyb3Bkb3duTWVudTogcGFja2FnZXNfZHJvcGRvd25fbWVudSxcbiAgRHJvcGRvd25JdGVtOiBwYWNrYWdlc19kcm9wZG93bl9pdGVtLFxuICBNZW51OiBwYWNrYWdlc19tZW51LFxuICBTdWJtZW51OiBwYWNrYWdlc19zdWJtZW51LFxuICBNZW51SXRlbTogcGFja2FnZXNfbWVudV9pdGVtLFxuICBNZW51SXRlbUdyb3VwOiBwYWNrYWdlc19tZW51X2l0ZW1fZ3JvdXAsXG4gIElucHV0OiBwYWNrYWdlc19pbnB1dCxcbiAgSW5wdXROdW1iZXI6IHBhY2thZ2VzX2lucHV0X251bWJlcixcbiAgUmFkaW86IHBhY2thZ2VzX3JhZGlvLFxuICBSYWRpb0dyb3VwOiBwYWNrYWdlc19yYWRpb19ncm91cCxcbiAgUmFkaW9CdXR0b246IHBhY2thZ2VzX3JhZGlvX2J1dHRvbixcbiAgQ2hlY2tib3g6IHBhY2thZ2VzX2NoZWNrYm94LFxuICBDaGVja2JveEJ1dHRvbjogcGFja2FnZXNfY2hlY2tib3hfYnV0dG9uLFxuICBDaGVja2JveEdyb3VwOiBwYWNrYWdlc19jaGVja2JveF9ncm91cCxcbiAgU3dpdGNoOiBwYWNrYWdlc19zd2l0Y2gsXG4gIFNlbGVjdDogcGFja2FnZXNfc2VsZWN0LFxuICBPcHRpb246IHBhY2thZ2VzX29wdGlvbixcbiAgT3B0aW9uR3JvdXA6IHBhY2thZ2VzX29wdGlvbl9ncm91cCxcbiAgQnV0dG9uOiBwYWNrYWdlc19idXR0b24sXG4gIEJ1dHRvbkdyb3VwOiBwYWNrYWdlc19idXR0b25fZ3JvdXAsXG4gIFRhYmxlOiBwYWNrYWdlc190YWJsZSxcbiAgVGFibGVDb2x1bW46IHBhY2thZ2VzX3RhYmxlX2NvbHVtbixcbiAgRGF0ZVBpY2tlcjogcGFja2FnZXNfZGF0ZV9waWNrZXIsXG4gIFRpbWVTZWxlY3Q6IHBhY2thZ2VzX3RpbWVfc2VsZWN0LFxuICBUaW1lUGlja2VyOiBwYWNrYWdlc190aW1lX3BpY2tlcixcbiAgUG9wb3ZlcjogcG9wb3ZlcixcbiAgVG9vbHRpcDogcGFja2FnZXNfdG9vbHRpcCxcbiAgTWVzc2FnZUJveDogbWVzc2FnZV9ib3gsXG4gIEJyZWFkY3J1bWI6IHBhY2thZ2VzX2JyZWFkY3J1bWIsXG4gIEJyZWFkY3J1bWJJdGVtOiBwYWNrYWdlc19icmVhZGNydW1iX2l0ZW0sXG4gIEZvcm06IHBhY2thZ2VzX2Zvcm0sXG4gIEZvcm1JdGVtOiBwYWNrYWdlc19mb3JtX2l0ZW0sXG4gIFRhYnM6IHBhY2thZ2VzX3RhYnMsXG4gIFRhYlBhbmU6IHBhY2thZ2VzX3RhYl9wYW5lLFxuICBUYWc6IHBhY2thZ2VzX3RhZyxcbiAgVHJlZTogcGFja2FnZXNfdHJlZSxcbiAgQWxlcnQ6IHBhY2thZ2VzX2FsZXJ0LFxuICBOb3RpZmljYXRpb246IG5vdGlmaWNhdGlvbixcbiAgU2xpZGVyOiBzbGlkZXIsXG4gIEljb246IHBhY2thZ2VzX2ljb24sXG4gIFJvdzogcGFja2FnZXNfcm93LFxuICBDb2w6IHBhY2thZ2VzX2NvbCxcbiAgVXBsb2FkOiBwYWNrYWdlc191cGxvYWQsXG4gIFByb2dyZXNzOiBwYWNrYWdlc19wcm9ncmVzcyxcbiAgU3Bpbm5lcjogcGFja2FnZXNfc3Bpbm5lcixcbiAgTWVzc2FnZTogcGFja2FnZXNfbWVzc2FnZSxcbiAgQmFkZ2U6IGJhZGdlLFxuICBDYXJkOiBjYXJkLFxuICBSYXRlOiBwYWNrYWdlc19yYXRlLFxuICBTdGVwczogcGFja2FnZXNfc3RlcHMsXG4gIFN0ZXA6IHBhY2thZ2VzX3N0ZXAsXG4gIENhcm91c2VsOiBjYXJvdXNlbCxcbiAgU2Nyb2xsYmFyOiBzY3JvbGxiYXIsXG4gIENhcm91c2VsSXRlbTogY2Fyb3VzZWxfaXRlbSxcbiAgQ29sbGFwc2U6IHBhY2thZ2VzX2NvbGxhcHNlLFxuICBDb2xsYXBzZUl0ZW06IHBhY2thZ2VzX2NvbGxhcHNlX2l0ZW0sXG4gIENhc2NhZGVyOiBwYWNrYWdlc19jYXNjYWRlcixcbiAgQ29sb3JQaWNrZXI6IGNvbG9yX3BpY2tlcixcbiAgVHJhbnNmZXI6IHRyYW5zZmVyLFxuICBDb250YWluZXI6IHBhY2thZ2VzX2NvbnRhaW5lcixcbiAgSGVhZGVyOiBoZWFkZXIsXG4gIEFzaWRlOiBhc2lkZSxcbiAgTWFpbjogcGFja2FnZXNfbWFpbixcbiAgRm9vdGVyOiBmb290ZXIsXG4gIFRpbWVsaW5lOiB0aW1lbGluZSxcbiAgVGltZWxpbmVJdGVtOiB0aW1lbGluZV9pdGVtLFxuICBMaW5rOiBwYWNrYWdlc19saW5rLFxuICBEaXZpZGVyOiBkaXZpZGVyLFxuICBJbWFnZTogcGFja2FnZXNfaW1hZ2UsXG4gIENhbGVuZGFyOiBjYWxlbmRhcixcbiAgQmFja3RvcDogYmFja3RvcCxcbiAgSW5maW5pdGVTY3JvbGw6IGluZmluaXRlX3Njcm9sbCxcbiAgUGFnZUhlYWRlcjogcGFnZV9oZWFkZXIsXG4gIENhc2NhZGVyUGFuZWw6IHBhY2thZ2VzX2Nhc2NhZGVyX3BhbmVsLFxuICBBdmF0YXI6IGF2YXRhcixcbiAgRHJhd2VyOiBkcmF3ZXIsXG4gIFN0YXRpc3RpYzogc3RhdGlzdGljLFxuICBQb3Bjb25maXJtOiBwb3Bjb25maXJtLFxuICBTa2VsZXRvbjogc2tlbGV0b24sXG4gIFNrZWxldG9uSXRlbTogc2tlbGV0b25faXRlbSxcbiAgRW1wdHk6IGVtcHR5LFxuICBEZXNjcmlwdGlvbnM6IGRlc2NyaXB0aW9ucyxcbiAgRGVzY3JpcHRpb25zSXRlbTogcGFja2FnZXNfZGVzY3JpcHRpb25zX2l0ZW0sXG4gIFJlc3VsdDogcGFja2FnZXNfcmVzdWx0XG59KTtcblxuLyoqKi8gfSlcbi8qKioqKiovIF0pW1wiZGVmYXVsdFwiXTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/element-ui.common.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/input-number.js":
/*!*****************************************************!*\
!*** ./node_modules/element-ui/lib/input-number.js ***!
\*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 87);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 10:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/input */ \"./node_modules/element-ui/lib/input.js\");\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/dom */ \"./node_modules/element-ui/lib/utils/dom.js\");\n\n/***/ }),\n\n/***/ 22:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/focus */ \"./node_modules/element-ui/lib/mixins/focus.js\");\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\n/***/ }),\n\n/***/ 30:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_7021__) {\n\n\"use strict\";\n/* harmony import */ var element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_7021__(2);\n/* harmony import */ var element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nested_webpack_require_7021__.n(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var element_ui_src_utils_util__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_7021__(3);\n/* harmony import */ var element_ui_src_utils_util__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nested_webpack_require_7021__.n(element_ui_src_utils_util__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/* harmony default export */ __nested_webpack_exports__[\"a\"] = ({\n bind: function bind(el, binding, vnode) {\n var interval = null;\n var startTime = void 0;\n var maxIntervals = Object(element_ui_src_utils_util__WEBPACK_IMPORTED_MODULE_1__[\"isMac\"])() ? 100 : 200;\n var handler = function handler() {\n return vnode.context[binding.expression].apply();\n };\n var clear = function clear() {\n if (Date.now() - startTime < maxIntervals) {\n handler();\n }\n clearInterval(interval);\n interval = null;\n };\n\n Object(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"on\"])(el, 'mousedown', function (e) {\n if (e.button !== 0) return;\n startTime = Date.now();\n Object(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"once\"])(document, 'mouseup', clear);\n clearInterval(interval);\n interval = setInterval(handler, maxIntervals);\n });\n }\n});\n\n/***/ }),\n\n/***/ 87:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_8618__) {\n\n\"use strict\";\n__nested_webpack_require_8618__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input-number/src/input-number.vue?vue&type=template&id=42f8cf66&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n \"el-input-number\",\n _vm.inputNumberSize ? \"el-input-number--\" + _vm.inputNumberSize : \"\",\n { \"is-disabled\": _vm.inputNumberDisabled },\n { \"is-without-controls\": !_vm.controls },\n { \"is-controls-right\": _vm.controlsAtRight }\n ],\n on: {\n dragstart: function($event) {\n $event.preventDefault()\n }\n }\n },\n [\n _vm.controls\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.decrease,\n expression: \"decrease\"\n }\n ],\n staticClass: \"el-input-number__decrease\",\n class: { \"is-disabled\": _vm.minDisabled },\n attrs: { role: \"button\" },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.decrease($event)\n }\n }\n },\n [\n _c(\"i\", {\n class:\n \"el-icon-\" + (_vm.controlsAtRight ? \"arrow-down\" : \"minus\")\n })\n ]\n )\n : _vm._e(),\n _vm.controls\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.increase,\n expression: \"increase\"\n }\n ],\n staticClass: \"el-input-number__increase\",\n class: { \"is-disabled\": _vm.maxDisabled },\n attrs: { role: \"button\" },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.increase($event)\n }\n }\n },\n [\n _c(\"i\", {\n class: \"el-icon-\" + (_vm.controlsAtRight ? \"arrow-up\" : \"plus\")\n })\n ]\n )\n : _vm._e(),\n _c(\"el-input\", {\n ref: \"input\",\n attrs: {\n value: _vm.displayValue,\n placeholder: _vm.placeholder,\n disabled: _vm.inputNumberDisabled,\n size: _vm.inputNumberSize,\n max: _vm.max,\n min: _vm.min,\n name: _vm.name,\n label: _vm.label\n },\n on: {\n blur: _vm.handleBlur,\n focus: _vm.handleFocus,\n input: _vm.handleInput,\n change: _vm.handleInputChange\n },\n nativeOn: {\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.increase($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.decrease($event)\n }\n ]\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue?vue&type=template&id=42f8cf66&\n\n// EXTERNAL MODULE: external \"element-ui/lib/input\"\nvar input_ = __nested_webpack_require_8618__(10);\nvar input_default = /*#__PURE__*/__nested_webpack_require_8618__.n(input_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/focus\"\nvar focus_ = __nested_webpack_require_8618__(22);\nvar focus_default = /*#__PURE__*/__nested_webpack_require_8618__.n(focus_);\n\n// EXTERNAL MODULE: ./src/directives/repeat-click.js\nvar repeat_click = __nested_webpack_require_8618__(30);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input-number/src/input-number.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var input_numbervue_type_script_lang_js_ = ({\n name: 'ElInputNumber',\n mixins: [focus_default()('input')],\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n directives: {\n repeatClick: repeat_click[\"a\" /* default */]\n },\n components: {\n ElInput: input_default.a\n },\n props: {\n step: {\n type: Number,\n default: 1\n },\n stepStrictly: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: Infinity\n },\n min: {\n type: Number,\n default: -Infinity\n },\n value: {},\n disabled: Boolean,\n size: String,\n controls: {\n type: Boolean,\n default: true\n },\n controlsPosition: {\n type: String,\n default: ''\n },\n name: String,\n label: String,\n placeholder: String,\n precision: {\n type: Number,\n validator: function validator(val) {\n return val >= 0 && val === parseInt(val, 10);\n }\n }\n },\n data: function data() {\n return {\n currentValue: 0,\n userInput: null\n };\n },\n\n watch: {\n value: {\n immediate: true,\n handler: function handler(value) {\n var newVal = value === undefined ? value : Number(value);\n if (newVal !== undefined) {\n if (isNaN(newVal)) {\n return;\n }\n\n if (this.stepStrictly) {\n var stepPrecision = this.getPrecision(this.step);\n var precisionFactor = Math.pow(10, stepPrecision);\n newVal = Math.round(newVal / this.step) * precisionFactor * this.step / precisionFactor;\n }\n\n if (this.precision !== undefined) {\n newVal = this.toPrecision(newVal, this.precision);\n }\n }\n if (newVal >= this.max) newVal = this.max;\n if (newVal <= this.min) newVal = this.min;\n this.currentValue = newVal;\n this.userInput = null;\n this.$emit('input', newVal);\n }\n }\n },\n computed: {\n minDisabled: function minDisabled() {\n return this._decrease(this.value, this.step) < this.min;\n },\n maxDisabled: function maxDisabled() {\n return this._increase(this.value, this.step) > this.max;\n },\n numPrecision: function numPrecision() {\n var value = this.value,\n step = this.step,\n getPrecision = this.getPrecision,\n precision = this.precision;\n\n var stepPrecision = getPrecision(step);\n if (precision !== undefined) {\n if (stepPrecision > precision) {\n console.warn('[Element Warn][InputNumber]precision should not be less than the decimal places of step');\n }\n return precision;\n } else {\n return Math.max(getPrecision(value), stepPrecision);\n }\n },\n controlsAtRight: function controlsAtRight() {\n return this.controls && this.controlsPosition === 'right';\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n inputNumberSize: function inputNumberSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputNumberDisabled: function inputNumberDisabled() {\n return this.disabled || !!(this.elForm || {}).disabled;\n },\n displayValue: function displayValue() {\n if (this.userInput !== null) {\n return this.userInput;\n }\n\n var currentValue = this.currentValue;\n\n if (typeof currentValue === 'number') {\n if (this.stepStrictly) {\n var stepPrecision = this.getPrecision(this.step);\n var precisionFactor = Math.pow(10, stepPrecision);\n currentValue = Math.round(currentValue / this.step) * precisionFactor * this.step / precisionFactor;\n }\n\n if (this.precision !== undefined) {\n currentValue = currentValue.toFixed(this.precision);\n }\n }\n\n return currentValue;\n }\n },\n methods: {\n toPrecision: function toPrecision(num, precision) {\n if (precision === undefined) precision = this.numPrecision;\n return parseFloat(Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision));\n },\n getPrecision: function getPrecision(value) {\n if (value === undefined) return 0;\n var valueString = value.toString();\n var dotPosition = valueString.indexOf('.');\n var precision = 0;\n if (dotPosition !== -1) {\n precision = valueString.length - dotPosition - 1;\n }\n return precision;\n },\n _increase: function _increase(val, step) {\n if (typeof val !== 'number' && val !== undefined) return this.currentValue;\n\n var precisionFactor = Math.pow(10, this.numPrecision);\n // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n return this.toPrecision((precisionFactor * val + precisionFactor * step) / precisionFactor);\n },\n _decrease: function _decrease(val, step) {\n if (typeof val !== 'number' && val !== undefined) return this.currentValue;\n\n var precisionFactor = Math.pow(10, this.numPrecision);\n\n return this.toPrecision((precisionFactor * val - precisionFactor * step) / precisionFactor);\n },\n increase: function increase() {\n if (this.inputNumberDisabled || this.maxDisabled) return;\n var value = this.value || 0;\n var newVal = this._increase(value, this.step);\n this.setCurrentValue(newVal);\n },\n decrease: function decrease() {\n if (this.inputNumberDisabled || this.minDisabled) return;\n var value = this.value || 0;\n var newVal = this._decrease(value, this.step);\n this.setCurrentValue(newVal);\n },\n handleBlur: function handleBlur(event) {\n this.$emit('blur', event);\n },\n handleFocus: function handleFocus(event) {\n this.$emit('focus', event);\n },\n setCurrentValue: function setCurrentValue(newVal) {\n var oldVal = this.currentValue;\n if (typeof newVal === 'number' && this.precision !== undefined) {\n newVal = this.toPrecision(newVal, this.precision);\n }\n if (newVal >= this.max) newVal = this.max;\n if (newVal <= this.min) newVal = this.min;\n if (oldVal === newVal) return;\n this.userInput = null;\n this.$emit('input', newVal);\n this.$emit('change', newVal, oldVal);\n this.currentValue = newVal;\n },\n handleInput: function handleInput(value) {\n this.userInput = value;\n },\n handleInputChange: function handleInputChange(value) {\n var newVal = value === '' ? undefined : Number(value);\n if (!isNaN(newVal) || value === '') {\n this.setCurrentValue(newVal);\n }\n this.userInput = null;\n },\n select: function select() {\n this.$refs.input.select();\n }\n },\n mounted: function mounted() {\n var innerInput = this.$refs.input.$refs.input;\n innerInput.setAttribute('role', 'spinbutton');\n innerInput.setAttribute('aria-valuemax', this.max);\n innerInput.setAttribute('aria-valuemin', this.min);\n innerInput.setAttribute('aria-valuenow', this.currentValue);\n innerInput.setAttribute('aria-disabled', this.inputNumberDisabled);\n },\n updated: function updated() {\n if (!this.$refs || !this.$refs.input) return;\n var innerInput = this.$refs.input.$refs.input;\n innerInput.setAttribute('aria-valuenow', this.currentValue);\n }\n});\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_input_numbervue_type_script_lang_js_ = (input_numbervue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_8618__(0);\n\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_input_numbervue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/input-number/src/input-number.vue\"\n/* harmony default export */ var input_number = (component.exports);\n// CONCATENATED MODULE: ./packages/input-number/index.js\n\n\n/* istanbul ignore next */\ninput_number.install = function (Vue) {\n Vue.component(input_number.name, input_number);\n};\n\n/* harmony default export */ var packages_input_number = __nested_webpack_exports__[\"default\"] = (input_number);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvaW5wdXQtbnVtYmVyLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDhCQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSw4QkFBbUI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGVBQWUsOEJBQW1CO0FBQ2xDLG1EQUFtRCwrQkFBK0I7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLGlFQUFpRSxpQkFBaUI7QUFDbEY7QUFDQSwwREFBMEQsYUFBYTtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGdDQUFnQyw4QkFBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4QkFBbUI7QUFDOUIsa0RBQWtELGdDQUFnQztBQUNsRiwwRUFBMEUsOEJBQW1CLDRCQUE0QixvQkFBb0I7QUFDN0k7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLG9DQUFvQyw0QkFBNEI7QUFDaEUsMENBQTBDO0FBQzFDLFdBQVcsOEJBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUIsa0NBQWtDO0FBQy9EO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOEJBQW1CLENBQUMsOEJBQW1CO0FBQ3hELFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLDBCQUFtQixFQUFFLCtCQUFt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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG1DQUFtQztBQUNuQyxLQUFLO0FBQ0w7QUFDQSxzRUFBc0U7QUFDdEUsS0FBSztBQUNMO0FBQ0Esa0RBQWtEO0FBQ2xELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsK0JBQW1COztBQUU3Qzs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseURBQXlELDBCQUFtQjs7QUFFNUUsT0FBTzs7QUFFUCxVQUFVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL2lucHV0LW51bWJlci5qcz83OTNmIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID1cbi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vKioqKioqLyBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuLyoqKioqKi8gXHRcdHJldHVybiBucztcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gODcpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoe1xuXG4vKioqLyAwOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gbm9ybWFsaXplQ29tcG9uZW50OyB9KTtcbi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KSB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIDEwOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9pbnB1dFwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL2RvbVwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDIyOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi9taXhpbnMvZm9jdXNcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAzOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy91dGlsXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gMzA6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGVsZW1lbnRfdWlfc3JjX3V0aWxzX2RvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBlbGVtZW50X3VpX3NyY191dGlsc19kb21fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihlbGVtZW50X3VpX3NyY191dGlsc19kb21fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgZWxlbWVudF91aV9zcmNfdXRpbHNfdXRpbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBlbGVtZW50X3VpX3NyY191dGlsc191dGlsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZWxlbWVudF91aV9zcmNfdXRpbHNfdXRpbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fKTtcblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoe1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIHZhciBpbnRlcnZhbCA9IG51bGw7XG4gICAgdmFyIHN0YXJ0VGltZSA9IHZvaWQgMDtcbiAgICB2YXIgbWF4SW50ZXJ2YWxzID0gT2JqZWN0KGVsZW1lbnRfdWlfc3JjX3V0aWxzX3V0aWxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1tcImlzTWFjXCJdKSgpID8gMTAwIDogMjAwO1xuICAgIHZhciBoYW5kbGVyID0gZnVuY3Rpb24gaGFuZGxlcigpIHtcbiAgICAgIHJldHVybiB2bm9kZS5jb250ZXh0W2JpbmRpbmcuZXhwcmVzc2lvbl0uYXBwbHkoKTtcbiAgICB9O1xuICAgIHZhciBjbGVhciA9IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgaWYgKERhdGUubm93KCkgLSBzdGFydFRpbWUgPCBtYXhJbnRlcnZhbHMpIHtcbiAgICAgICAgaGFuZGxlcigpO1xuICAgICAgfVxuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICBpbnRlcnZhbCA9IG51bGw7XG4gICAgfTtcblxuICAgIE9iamVjdChlbGVtZW50X3VpX3NyY191dGlsc19kb21fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcIm9uXCJdKShlbCwgJ21vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZS5idXR0b24gIT09IDApIHJldHVybjtcbiAgICAgIHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICBPYmplY3QoZWxlbWVudF91aV9zcmNfdXRpbHNfZG9tX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXCJvbmNlXCJdKShkb2N1bWVudCwgJ21vdXNldXAnLCBjbGVhcik7XG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgIGludGVydmFsID0gc2V0SW50ZXJ2YWwoaGFuZGxlciwgbWF4SW50ZXJ2YWxzKTtcbiAgICB9KTtcbiAgfVxufSk7XG5cbi8qKiovIH0pLFxuXG4vKioqLyA4Nzpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvaW5wdXQtbnVtYmVyL3NyYy9pbnB1dC1udW1iZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQyZjhjZjY2JlxudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIGNsYXNzOiBbXG4gICAgICAgIFwiZWwtaW5wdXQtbnVtYmVyXCIsXG4gICAgICAgIF92bS5pbnB1dE51bWJlclNpemUgPyBcImVsLWlucHV0LW51bWJlci0tXCIgKyBfdm0uaW5wdXROdW1iZXJTaXplIDogXCJcIixcbiAgICAgICAgeyBcImlzLWRpc2FibGVkXCI6IF92bS5pbnB1dE51bWJlckRpc2FibGVkIH0sXG4gICAgICAgIHsgXCJpcy13aXRob3V0LWNvbnRyb2xzXCI6ICFfdm0uY29udHJvbHMgfSxcbiAgICAgICAgeyBcImlzLWNvbnRyb2xzLXJpZ2h0XCI6IF92bS5jb250cm9sc0F0UmlnaHQgfVxuICAgICAgXSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGRyYWdzdGFydDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLmNvbnRyb2xzXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwicmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtcmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmRlY3JlYXNlLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJkZWNyZWFzZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiB7IFwiaXMtZGlzYWJsZWRcIjogX3ZtLm1pbkRpc2FibGVkIH0sXG4gICAgICAgICAgICAgIGF0dHJzOiB7IHJvbGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBrZXlkb3duOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzLCAkZXZlbnQua2V5LCBcIkVudGVyXCIpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZGVjcmVhc2UoJGV2ZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczpcbiAgICAgICAgICAgICAgICAgIFwiZWwtaWNvbi1cIiArIChfdm0uY29udHJvbHNBdFJpZ2h0ID8gXCJhcnJvdy1kb3duXCIgOiBcIm1pbnVzXCIpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLmNvbnRyb2xzXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwicmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtcmVwZWF0LWNsaWNrXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmluY3JlYXNlLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJpbmNyZWFzZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pbnB1dC1udW1iZXJfX2luY3JlYXNlXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiB7IFwiaXMtZGlzYWJsZWRcIjogX3ZtLm1heERpc2FibGVkIH0sXG4gICAgICAgICAgICAgIGF0dHJzOiB7IHJvbGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBrZXlkb3duOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzLCAkZXZlbnQua2V5LCBcIkVudGVyXCIpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaW5jcmVhc2UoJGV2ZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogXCJlbC1pY29uLVwiICsgKF92bS5jb250cm9sc0F0UmlnaHQgPyBcImFycm93LXVwXCIgOiBcInBsdXNcIilcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfYyhcImVsLWlucHV0XCIsIHtcbiAgICAgICAgcmVmOiBcImlucHV0XCIsXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgdmFsdWU6IF92bS5kaXNwbGF5VmFsdWUsXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS5wbGFjZWhvbGRlcixcbiAgICAgICAgICBkaXNhYmxlZDogX3ZtLmlucHV0TnVtYmVyRGlzYWJsZWQsXG4gICAgICAgICAgc2l6ZTogX3ZtLmlucHV0TnVtYmVyU2l6ZSxcbiAgICAgICAgICBtYXg6IF92bS5tYXgsXG4gICAgICAgICAgbWluOiBfdm0ubWluLFxuICAgICAgICAgIG5hbWU6IF92bS5uYW1lLFxuICAgICAgICAgIGxhYmVsOiBfdm0ubGFiZWxcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBibHVyOiBfdm0uaGFuZGxlQmx1cixcbiAgICAgICAgICBmb2N1czogX3ZtLmhhbmRsZUZvY3VzLFxuICAgICAgICAgIGlucHV0OiBfdm0uaGFuZGxlSW5wdXQsXG4gICAgICAgICAgY2hhbmdlOiBfdm0uaGFuZGxlSW5wdXRDaGFuZ2VcbiAgICAgICAgfSxcbiAgICAgICAgbmF0aXZlT246IHtcbiAgICAgICAgICBrZXlkb3duOiBbXG4gICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcInVwXCIsIDM4LCAkZXZlbnQua2V5LCBbXCJVcFwiLCBcIkFycm93VXBcIl0pXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgcmV0dXJuIF92bS5pbmNyZWFzZSgkZXZlbnQpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJkb3duXCIsIDQwLCAkZXZlbnQua2V5LCBbXG4gICAgICAgICAgICAgICAgICBcIkRvd25cIixcbiAgICAgICAgICAgICAgICAgIFwiQXJyb3dEb3duXCJcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgIHJldHVybiBfdm0uZGVjcmVhc2UoJGV2ZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2lucHV0LW51bWJlci9zcmMvaW5wdXQtbnVtYmVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MmY4Y2Y2NiZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL2lucHV0XCJcbnZhciBpbnB1dF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcbnZhciBpbnB1dF9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihpbnB1dF8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2ZvY3VzXCJcbnZhciBmb2N1c18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTtcbnZhciBmb2N1c19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihmb2N1c18pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vc3JjL2RpcmVjdGl2ZXMvcmVwZWF0LWNsaWNrLmpzXG52YXIgcmVwZWF0X2NsaWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL2lucHV0LW51bWJlci9zcmMvaW5wdXQtbnVtYmVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGlucHV0X251bWJlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbElucHV0TnVtYmVyJyxcbiAgbWl4aW5zOiBbZm9jdXNfZGVmYXVsdCgpKCdpbnB1dCcpXSxcbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgZWxGb3JtSXRlbToge1xuICAgICAgZGVmYXVsdDogJydcbiAgICB9XG4gIH0sXG4gIGRpcmVjdGl2ZXM6IHtcbiAgICByZXBlYXRDbGljazogcmVwZWF0X2NsaWNrW1wiYVwiIC8qIGRlZmF1bHQgKi9dXG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBFbElucHV0OiBpbnB1dF9kZWZhdWx0LmFcbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBzdGVwOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAxXG4gICAgfSxcbiAgICBzdGVwU3RyaWN0bHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbWF4OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiBJbmZpbml0eVxuICAgIH0sXG4gICAgbWluOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAtSW5maW5pdHlcbiAgICB9LFxuICAgIHZhbHVlOiB7fSxcbiAgICBkaXNhYmxlZDogQm9vbGVhbixcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgY29udHJvbHM6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBjb250cm9sc1Bvc2l0aW9uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgbmFtZTogU3RyaW5nLFxuICAgIGxhYmVsOiBTdHJpbmcsXG4gICAgcGxhY2Vob2xkZXI6IFN0cmluZyxcbiAgICBwcmVjaXNpb246IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gdmFsID49IDAgJiYgdmFsID09PSBwYXJzZUludCh2YWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1cnJlbnRWYWx1ZTogMCxcbiAgICAgIHVzZXJJbnB1dDogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZToge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2YWx1ZSkge1xuICAgICAgICB2YXIgbmV3VmFsID0gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKGlzTmFOKG5ld1ZhbCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zdGVwU3RyaWN0bHkpIHtcbiAgICAgICAgICAgIHZhciBzdGVwUHJlY2lzaW9uID0gdGhpcy5nZXRQcmVjaXNpb24odGhpcy5zdGVwKTtcbiAgICAgICAgICAgIHZhciBwcmVjaXNpb25GYWN0b3IgPSBNYXRoLnBvdygxMCwgc3RlcFByZWNpc2lvbik7XG4gICAgICAgICAgICBuZXdWYWwgPSBNYXRoLnJvdW5kKG5ld1ZhbCAvIHRoaXMuc3RlcCkgKiBwcmVjaXNpb25GYWN0b3IgKiB0aGlzLnN0ZXAgLyBwcmVjaXNpb25GYWN0b3I7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMucHJlY2lzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbCA9IHRoaXMudG9QcmVjaXNpb24obmV3VmFsLCB0aGlzLnByZWNpc2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWwgPj0gdGhpcy5tYXgpIG5ld1ZhbCA9IHRoaXMubWF4O1xuICAgICAgICBpZiAobmV3VmFsIDw9IHRoaXMubWluKSBuZXdWYWwgPSB0aGlzLm1pbjtcbiAgICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSBuZXdWYWw7XG4gICAgICAgIHRoaXMudXNlcklucHV0ID0gbnVsbDtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBuZXdWYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBtaW5EaXNhYmxlZDogZnVuY3Rpb24gbWluRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVjcmVhc2UodGhpcy52YWx1ZSwgdGhpcy5zdGVwKSA8IHRoaXMubWluO1xuICAgIH0sXG4gICAgbWF4RGlzYWJsZWQ6IGZ1bmN0aW9uIG1heERpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2luY3JlYXNlKHRoaXMudmFsdWUsIHRoaXMuc3RlcCkgPiB0aGlzLm1heDtcbiAgICB9LFxuICAgIG51bVByZWNpc2lvbjogZnVuY3Rpb24gbnVtUHJlY2lzaW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICBzdGVwID0gdGhpcy5zdGVwLFxuICAgICAgICAgIGdldFByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uLFxuICAgICAgICAgIHByZWNpc2lvbiA9IHRoaXMucHJlY2lzaW9uO1xuXG4gICAgICB2YXIgc3RlcFByZWNpc2lvbiA9IGdldFByZWNpc2lvbihzdGVwKTtcbiAgICAgIGlmIChwcmVjaXNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoc3RlcFByZWNpc2lvbiA+IHByZWNpc2lvbikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignW0VsZW1lbnQgV2Fybl1bSW5wdXROdW1iZXJdcHJlY2lzaW9uIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHRoZSBkZWNpbWFsIHBsYWNlcyBvZiBzdGVwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZWNpc2lvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heChnZXRQcmVjaXNpb24odmFsdWUpLCBzdGVwUHJlY2lzaW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNvbnRyb2xzQXRSaWdodDogZnVuY3Rpb24gY29udHJvbHNBdFJpZ2h0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udHJvbHMgJiYgdGhpcy5jb250cm9sc1Bvc2l0aW9uID09PSAncmlnaHQnO1xuICAgIH0sXG4gICAgX2VsRm9ybUl0ZW1TaXplOiBmdW5jdGlvbiBfZWxGb3JtSXRlbVNpemUoKSB7XG4gICAgICByZXR1cm4gKHRoaXMuZWxGb3JtSXRlbSB8fCB7fSkuZWxGb3JtSXRlbVNpemU7XG4gICAgfSxcbiAgICBpbnB1dE51bWJlclNpemU6IGZ1bmN0aW9uIGlucHV0TnVtYmVyU2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpemUgfHwgdGhpcy5fZWxGb3JtSXRlbVNpemUgfHwgKHRoaXMuJEVMRU1FTlQgfHwge30pLnNpemU7XG4gICAgfSxcbiAgICBpbnB1dE51bWJlckRpc2FibGVkOiBmdW5jdGlvbiBpbnB1dE51bWJlckRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgISEodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkO1xuICAgIH0sXG4gICAgZGlzcGxheVZhbHVlOiBmdW5jdGlvbiBkaXNwbGF5VmFsdWUoKSB7XG4gICAgICBpZiAodGhpcy51c2VySW5wdXQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlcklucHV0O1xuICAgICAgfVxuXG4gICAgICB2YXIgY3VycmVudFZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWU7XG5cbiAgICAgIGlmICh0eXBlb2YgY3VycmVudFZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAodGhpcy5zdGVwU3RyaWN0bHkpIHtcbiAgICAgICAgICB2YXIgc3RlcFByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHRoaXMuc3RlcCk7XG4gICAgICAgICAgdmFyIHByZWNpc2lvbkZhY3RvciA9IE1hdGgucG93KDEwLCBzdGVwUHJlY2lzaW9uKTtcbiAgICAgICAgICBjdXJyZW50VmFsdWUgPSBNYXRoLnJvdW5kKGN1cnJlbnRWYWx1ZSAvIHRoaXMuc3RlcCkgKiBwcmVjaXNpb25GYWN0b3IgKiB0aGlzLnN0ZXAgLyBwcmVjaXNpb25GYWN0b3I7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wcmVjaXNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1ZS50b0ZpeGVkKHRoaXMucHJlY2lzaW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHRvUHJlY2lzaW9uOiBmdW5jdGlvbiB0b1ByZWNpc2lvbihudW0sIHByZWNpc2lvbikge1xuICAgICAgaWYgKHByZWNpc2lvbiA9PT0gdW5kZWZpbmVkKSBwcmVjaXNpb24gPSB0aGlzLm51bVByZWNpc2lvbjtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KE1hdGgucm91bmQobnVtICogTWF0aC5wb3coMTAsIHByZWNpc2lvbikpIC8gTWF0aC5wb3coMTAsIHByZWNpc2lvbikpO1xuICAgIH0sXG4gICAgZ2V0UHJlY2lzaW9uOiBmdW5jdGlvbiBnZXRQcmVjaXNpb24odmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgICAgIHZhciB2YWx1ZVN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICB2YXIgZG90UG9zaXRpb24gPSB2YWx1ZVN0cmluZy5pbmRleE9mKCcuJyk7XG4gICAgICB2YXIgcHJlY2lzaW9uID0gMDtcbiAgICAgIGlmIChkb3RQb3NpdGlvbiAhPT0gLTEpIHtcbiAgICAgICAgcHJlY2lzaW9uID0gdmFsdWVTdHJpbmcubGVuZ3RoIC0gZG90UG9zaXRpb24gLSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZWNpc2lvbjtcbiAgICB9LFxuICAgIF9pbmNyZWFzZTogZnVuY3Rpb24gX2luY3JlYXNlKHZhbCwgc3RlcCkge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInICYmIHZhbCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWU7XG5cbiAgICAgIHZhciBwcmVjaXNpb25GYWN0b3IgPSBNYXRoLnBvdygxMCwgdGhpcy5udW1QcmVjaXNpb24pO1xuICAgICAgLy8gU29sdmUgdGhlIGFjY3VyYWN5IHByb2JsZW0gb2YgSlMgZGVjaW1hbCBjYWxjdWxhdGlvbiBieSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBpbnRlZ2VyLlxuICAgICAgcmV0dXJuIHRoaXMudG9QcmVjaXNpb24oKHByZWNpc2lvbkZhY3RvciAqIHZhbCArIHByZWNpc2lvbkZhY3RvciAqIHN0ZXApIC8gcHJlY2lzaW9uRmFjdG9yKTtcbiAgICB9LFxuICAgIF9kZWNyZWFzZTogZnVuY3Rpb24gX2RlY3JlYXNlKHZhbCwgc3RlcCkge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInICYmIHZhbCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWU7XG5cbiAgICAgIHZhciBwcmVjaXNpb25GYWN0b3IgPSBNYXRoLnBvdygxMCwgdGhpcy5udW1QcmVjaXNpb24pO1xuXG4gICAgICByZXR1cm4gdGhpcy50b1ByZWNpc2lvbigocHJlY2lzaW9uRmFjdG9yICogdmFsIC0gcHJlY2lzaW9uRmFjdG9yICogc3RlcCkgLyBwcmVjaXNpb25GYWN0b3IpO1xuICAgIH0sXG4gICAgaW5jcmVhc2U6IGZ1bmN0aW9uIGluY3JlYXNlKCkge1xuICAgICAgaWYgKHRoaXMuaW5wdXROdW1iZXJEaXNhYmxlZCB8fCB0aGlzLm1heERpc2FibGVkKSByZXR1cm47XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlIHx8IDA7XG4gICAgICB2YXIgbmV3VmFsID0gdGhpcy5faW5jcmVhc2UodmFsdWUsIHRoaXMuc3RlcCk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRWYWx1ZShuZXdWYWwpO1xuICAgIH0sXG4gICAgZGVjcmVhc2U6IGZ1bmN0aW9uIGRlY3JlYXNlKCkge1xuICAgICAgaWYgKHRoaXMuaW5wdXROdW1iZXJEaXNhYmxlZCB8fCB0aGlzLm1pbkRpc2FibGVkKSByZXR1cm47XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlIHx8IDA7XG4gICAgICB2YXIgbmV3VmFsID0gdGhpcy5fZGVjcmVhc2UodmFsdWUsIHRoaXMuc3RlcCk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRWYWx1ZShuZXdWYWwpO1xuICAgIH0sXG4gICAgaGFuZGxlQmx1cjogZnVuY3Rpb24gaGFuZGxlQmx1cihldmVudCkge1xuICAgICAgdGhpcy4kZW1pdCgnYmx1cicsIGV2ZW50KTtcbiAgICB9LFxuICAgIGhhbmRsZUZvY3VzOiBmdW5jdGlvbiBoYW5kbGVGb2N1cyhldmVudCkge1xuICAgICAgdGhpcy4kZW1pdCgnZm9jdXMnLCBldmVudCk7XG4gICAgfSxcbiAgICBzZXRDdXJyZW50VmFsdWU6IGZ1bmN0aW9uIHNldEN1cnJlbnRWYWx1ZShuZXdWYWwpIHtcbiAgICAgIHZhciBvbGRWYWwgPSB0aGlzLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGlmICh0eXBlb2YgbmV3VmFsID09PSAnbnVtYmVyJyAmJiB0aGlzLnByZWNpc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ld1ZhbCA9IHRoaXMudG9QcmVjaXNpb24obmV3VmFsLCB0aGlzLnByZWNpc2lvbik7XG4gICAgICB9XG4gICAgICBpZiAobmV3VmFsID49IHRoaXMubWF4KSBuZXdWYWwgPSB0aGlzLm1heDtcbiAgICAgIGlmIChuZXdWYWwgPD0gdGhpcy5taW4pIG5ld1ZhbCA9IHRoaXMubWluO1xuICAgICAgaWYgKG9sZFZhbCA9PT0gbmV3VmFsKSByZXR1cm47XG4gICAgICB0aGlzLnVzZXJJbnB1dCA9IG51bGw7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG5ld1ZhbCk7XG4gICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCBuZXdWYWwsIG9sZFZhbCk7XG4gICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IG5ld1ZhbDtcbiAgICB9LFxuICAgIGhhbmRsZUlucHV0OiBmdW5jdGlvbiBoYW5kbGVJbnB1dCh2YWx1ZSkge1xuICAgICAgdGhpcy51c2VySW5wdXQgPSB2YWx1ZTtcbiAgICB9LFxuICAgIGhhbmRsZUlucHV0Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVJbnB1dENoYW5nZSh2YWx1ZSkge1xuICAgICAgdmFyIG5ld1ZhbCA9IHZhbHVlID09PSAnJyA/IHVuZGVmaW5lZCA6IE51bWJlcih2YWx1ZSk7XG4gICAgICBpZiAoIWlzTmFOKG5ld1ZhbCkgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFZhbHVlKG5ld1ZhbCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVzZXJJbnB1dCA9IG51bGw7XG4gICAgfSxcbiAgICBzZWxlY3Q6IGZ1bmN0aW9uIHNlbGVjdCgpIHtcbiAgICAgIHRoaXMuJHJlZnMuaW5wdXQuc2VsZWN0KCk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBpbm5lcklucHV0ID0gdGhpcy4kcmVmcy5pbnB1dC4kcmVmcy5pbnB1dDtcbiAgICBpbm5lcklucHV0LnNldEF0dHJpYnV0ZSgncm9sZScsICdzcGluYnV0dG9uJyk7XG4gICAgaW5uZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVtYXgnLCB0aGlzLm1heCk7XG4gICAgaW5uZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVtaW4nLCB0aGlzLm1pbik7XG4gICAgaW5uZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVub3cnLCB0aGlzLmN1cnJlbnRWYWx1ZSk7XG4gICAgaW5uZXJJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnLCB0aGlzLmlucHV0TnVtYmVyRGlzYWJsZWQpO1xuICB9LFxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIGlmICghdGhpcy4kcmVmcyB8fCAhdGhpcy4kcmVmcy5pbnB1dCkgcmV0dXJuO1xuICAgIHZhciBpbm5lcklucHV0ID0gdGhpcy4kcmVmcy5pbnB1dC4kcmVmcy5pbnB1dDtcbiAgICBpbm5lcklucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS12YWx1ZW5vdycsIHRoaXMuY3VycmVudFZhbHVlKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2lucHV0LW51bWJlci9zcmMvaW5wdXQtbnVtYmVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfaW5wdXRfbnVtYmVydnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKGlucHV0X251bWJlcnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcbnZhciBjb21wb25lbnROb3JtYWxpemVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbnB1dC1udW1iZXIvc3JjL2lucHV0LW51bWJlci52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBjb21wb25lbnQgPSBPYmplY3QoY29tcG9uZW50Tm9ybWFsaXplcltcImFcIiAvKiBkZWZhdWx0ICovXSkoXG4gIHNyY19pbnB1dF9udW1iZXJ2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhcGk7IH1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvaW5wdXQtbnVtYmVyL3NyYy9pbnB1dC1udW1iZXIudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGlucHV0X251bWJlciA9IChjb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2lucHV0LW51bWJlci9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pbnB1dF9udW1iZXIuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChpbnB1dF9udW1iZXIubmFtZSwgaW5wdXRfbnVtYmVyKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX2lucHV0X251bWJlciA9IF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKGlucHV0X251bWJlcik7XG5cbi8qKiovIH0pXG5cbi8qKioqKiovIH0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/input-number.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/input.js":
/*!**********************************************!*\
!*** ./node_modules/element-ui/lib/input.js ***!
\**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 75);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/migrating */ \"./node_modules/element-ui/lib/mixins/migrating.js\");\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/shared */ \"./node_modules/element-ui/lib/utils/shared.js\");\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/emitter */ \"./node_modules/element-ui/lib/mixins/emitter.js\");\n\n/***/ }),\n\n/***/ 75:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_6925__) {\n\n\"use strict\";\n__nested_webpack_require_6925__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=template&id=343dd774&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n _vm.type === \"textarea\" ? \"el-textarea\" : \"el-input\",\n _vm.inputSize ? \"el-input--\" + _vm.inputSize : \"\",\n {\n \"is-disabled\": _vm.inputDisabled,\n \"is-exceed\": _vm.inputExceed,\n \"el-input-group\": _vm.$slots.prepend || _vm.$slots.append,\n \"el-input-group--append\": _vm.$slots.append,\n \"el-input-group--prepend\": _vm.$slots.prepend,\n \"el-input--prefix\": _vm.$slots.prefix || _vm.prefixIcon,\n \"el-input--suffix\":\n _vm.$slots.suffix ||\n _vm.suffixIcon ||\n _vm.clearable ||\n _vm.showPassword\n }\n ],\n on: {\n mouseenter: function($event) {\n _vm.hovering = true\n },\n mouseleave: function($event) {\n _vm.hovering = false\n }\n }\n },\n [\n _vm.type !== \"textarea\"\n ? [\n _vm.$slots.prepend\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__prepend\" },\n [_vm._t(\"prepend\")],\n 2\n )\n : _vm._e(),\n _vm.type !== \"textarea\"\n ? _c(\n \"input\",\n _vm._b(\n {\n ref: \"input\",\n staticClass: \"el-input__inner\",\n attrs: {\n tabindex: _vm.tabindex,\n type: _vm.showPassword\n ? _vm.passwordVisible\n ? \"text\"\n : \"password\"\n : _vm.type,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"input\",\n _vm.$attrs,\n false\n )\n )\n : _vm._e(),\n _vm.$slots.prefix || _vm.prefixIcon\n ? _c(\n \"span\",\n { staticClass: \"el-input__prefix\" },\n [\n _vm._t(\"prefix\"),\n _vm.prefixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.prefixIcon\n })\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _vm.getSuffixVisible()\n ? _c(\"span\", { staticClass: \"el-input__suffix\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__suffix-inner\" },\n [\n !_vm.showClear ||\n !_vm.showPwdVisible ||\n !_vm.isWordLimitVisible\n ? [\n _vm._t(\"suffix\"),\n _vm.suffixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.suffixIcon\n })\n : _vm._e()\n ]\n : _vm._e(),\n _vm.showClear\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-circle-close el-input__clear\",\n on: {\n mousedown: function($event) {\n $event.preventDefault()\n },\n click: _vm.clear\n }\n })\n : _vm._e(),\n _vm.showPwdVisible\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-view el-input__clear\",\n on: { click: _vm.handlePasswordVisible }\n })\n : _vm._e(),\n _vm.isWordLimitVisible\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__count-inner\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.textLength) +\n \"/\" +\n _vm._s(_vm.upperLimit) +\n \"\\n \"\n )\n ]\n )\n ])\n : _vm._e()\n ],\n 2\n ),\n _vm.validateState\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: [\"el-input__validateIcon\", _vm.validateIcon]\n })\n : _vm._e()\n ])\n : _vm._e(),\n _vm.$slots.append\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__append\" },\n [_vm._t(\"append\")],\n 2\n )\n : _vm._e()\n ]\n : _c(\n \"textarea\",\n _vm._b(\n {\n ref: \"textarea\",\n staticClass: \"el-textarea__inner\",\n style: _vm.textareaStyle,\n attrs: {\n tabindex: _vm.tabindex,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"textarea\",\n _vm.$attrs,\n false\n )\n ),\n _vm.isWordLimitVisible && _vm.type === \"textarea\"\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _vm._v(_vm._s(_vm.textLength) + \"/\" + _vm._s(_vm.upperLimit))\n ])\n : _vm._e()\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=template&id=343dd774&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __nested_webpack_require_6925__(4);\nvar emitter_default = /*#__PURE__*/__nested_webpack_require_6925__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/migrating\"\nvar migrating_ = __nested_webpack_require_6925__(11);\nvar migrating_default = /*#__PURE__*/__nested_webpack_require_6925__.n(migrating_);\n\n// CONCATENATED MODULE: ./packages/input/src/calcTextareaHeight.js\nvar hiddenTextarea = void 0;\n\nvar HIDDEN_STYLE = '\\n height:0 !important;\\n visibility:hidden !important;\\n overflow:hidden !important;\\n position:absolute !important;\\n z-index:-1000 !important;\\n top:0 !important;\\n right:0 !important\\n';\n\nvar CONTEXT_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];\n\nfunction calculateNodeStyling(targetElement) {\n var style = window.getComputedStyle(targetElement);\n\n var boxSizing = style.getPropertyValue('box-sizing');\n\n var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n\n var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n\n var contextStyle = CONTEXT_STYLE.map(function (name) {\n return name + ':' + style.getPropertyValue(name);\n }).join(';');\n\n return { contextStyle: contextStyle, paddingSize: paddingSize, borderSize: borderSize, boxSizing: boxSizing };\n}\n\nfunction calcTextareaHeight(targetElement) {\n var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var maxRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.appendChild(hiddenTextarea);\n }\n\n var _calculateNodeStyling = calculateNodeStyling(targetElement),\n paddingSize = _calculateNodeStyling.paddingSize,\n borderSize = _calculateNodeStyling.borderSize,\n boxSizing = _calculateNodeStyling.boxSizing,\n contextStyle = _calculateNodeStyling.contextStyle;\n\n hiddenTextarea.setAttribute('style', contextStyle + ';' + HIDDEN_STYLE);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';\n\n var height = hiddenTextarea.scrollHeight;\n var result = {};\n\n if (boxSizing === 'border-box') {\n height = height + borderSize;\n } else if (boxSizing === 'content-box') {\n height = height - paddingSize;\n }\n\n hiddenTextarea.value = '';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n if (minRows !== null) {\n var minHeight = singleRowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n result.minHeight = minHeight + 'px';\n }\n if (maxRows !== null) {\n var maxHeight = singleRowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n }\n result.height = height + 'px';\n hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n hiddenTextarea = null;\n return result;\n};\n// EXTERNAL MODULE: external \"element-ui/lib/utils/merge\"\nvar merge_ = __nested_webpack_require_6925__(9);\nvar merge_default = /*#__PURE__*/__nested_webpack_require_6925__.n(merge_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __nested_webpack_require_6925__(21);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n/* harmony default export */ var inputvue_type_script_lang_js_ = ({\n name: 'ElInput',\n\n componentName: 'ElInput',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n inheritAttrs: false,\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n data: function data() {\n return {\n textareaCalcStyle: {},\n hovering: false,\n focused: false,\n isComposing: false,\n passwordVisible: false\n };\n },\n\n\n props: {\n value: [String, Number],\n size: String,\n resize: String,\n form: String,\n disabled: Boolean,\n readonly: Boolean,\n type: {\n type: String,\n default: 'text'\n },\n autosize: {\n type: [Boolean, Object],\n default: false\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && 0;\n return true;\n }\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n suffixIcon: String,\n prefixIcon: String,\n label: String,\n clearable: {\n type: Boolean,\n default: false\n },\n showPassword: {\n type: Boolean,\n default: false\n },\n showWordLimit: {\n type: Boolean,\n default: false\n },\n tabindex: String\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n validateState: function validateState() {\n return this.elFormItem ? this.elFormItem.validateState : '';\n },\n needStatusIcon: function needStatusIcon() {\n return this.elForm ? this.elForm.statusIcon : false;\n },\n validateIcon: function validateIcon() {\n return {\n validating: 'el-icon-loading',\n success: 'el-icon-circle-check',\n error: 'el-icon-circle-close'\n }[this.validateState];\n },\n textareaStyle: function textareaStyle() {\n return merge_default()({}, this.textareaCalcStyle, { resize: this.resize });\n },\n inputSize: function inputSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputDisabled: function inputDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n nativeInputValue: function nativeInputValue() {\n return this.value === null || this.value === undefined ? '' : String(this.value);\n },\n showClear: function showClear() {\n return this.clearable && !this.inputDisabled && !this.readonly && this.nativeInputValue && (this.focused || this.hovering);\n },\n showPwdVisible: function showPwdVisible() {\n return this.showPassword && !this.inputDisabled && !this.readonly && (!!this.nativeInputValue || this.focused);\n },\n isWordLimitVisible: function isWordLimitVisible() {\n return this.showWordLimit && this.$attrs.maxlength && (this.type === 'text' || this.type === 'textarea') && !this.inputDisabled && !this.readonly && !this.showPassword;\n },\n upperLimit: function upperLimit() {\n return this.$attrs.maxlength;\n },\n textLength: function textLength() {\n if (typeof this.value === 'number') {\n return String(this.value).length;\n }\n\n return (this.value || '').length;\n },\n inputExceed: function inputExceed() {\n // show exceed style if length of initial value greater then maxlength\n return this.isWordLimitVisible && this.textLength > this.upperLimit;\n }\n },\n\n watch: {\n value: function value(val) {\n this.$nextTick(this.resizeTextarea);\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.change', [val]);\n }\n },\n\n // native input value is set explicitly\n // do not use v-model / :value in template\n // see: https://github.com/ElemeFE/element/issues/14521\n nativeInputValue: function nativeInputValue() {\n this.setNativeInputValue();\n },\n\n // when change between <input> and <textarea>,\n // update DOM dependent value and styles\n // https://github.com/ElemeFE/element/issues/14857\n type: function type() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setNativeInputValue();\n _this.resizeTextarea();\n _this.updateIconOffset();\n });\n }\n },\n\n methods: {\n focus: function focus() {\n this.getInput().focus();\n },\n blur: function blur() {\n this.getInput().blur();\n },\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {\n 'icon': 'icon is removed, use suffix-icon / prefix-icon instead.',\n 'on-icon-click': 'on-icon-click is removed.'\n },\n events: {\n 'click': 'click is removed.'\n }\n };\n },\n handleBlur: function handleBlur(event) {\n this.focused = false;\n this.$emit('blur', event);\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.blur', [this.value]);\n }\n },\n select: function select() {\n this.getInput().select();\n },\n resizeTextarea: function resizeTextarea() {\n if (this.$isServer) return;\n var autosize = this.autosize,\n type = this.type;\n\n if (type !== 'textarea') return;\n if (!autosize) {\n this.textareaCalcStyle = {\n minHeight: calcTextareaHeight(this.$refs.textarea).minHeight\n };\n return;\n }\n var minRows = autosize.minRows;\n var maxRows = autosize.maxRows;\n\n this.textareaCalcStyle = calcTextareaHeight(this.$refs.textarea, minRows, maxRows);\n },\n setNativeInputValue: function setNativeInputValue() {\n var input = this.getInput();\n if (!input) return;\n if (input.value === this.nativeInputValue) return;\n input.value = this.nativeInputValue;\n },\n handleFocus: function handleFocus(event) {\n this.focused = true;\n this.$emit('focus', event);\n },\n handleCompositionStart: function handleCompositionStart(event) {\n this.$emit('compositionstart', event);\n this.isComposing = true;\n },\n handleCompositionUpdate: function handleCompositionUpdate(event) {\n this.$emit('compositionupdate', event);\n var text = event.target.value;\n var lastCharacter = text[text.length - 1] || '';\n this.isComposing = !Object(shared_[\"isKorean\"])(lastCharacter);\n },\n handleCompositionEnd: function handleCompositionEnd(event) {\n this.$emit('compositionend', event);\n if (this.isComposing) {\n this.isComposing = false;\n this.handleInput(event);\n }\n },\n handleInput: function handleInput(event) {\n // should not emit input during composition\n // see: https://github.com/ElemeFE/element/issues/10516\n if (this.isComposing) return;\n\n // hack for https://github.com/ElemeFE/element/issues/8548\n // should remove the following line when we don't support IE\n if (event.target.value === this.nativeInputValue) return;\n\n this.$emit('input', event.target.value);\n\n // ensure native input value is controlled\n // see: https://github.com/ElemeFE/element/issues/12850\n this.$nextTick(this.setNativeInputValue);\n },\n handleChange: function handleChange(event) {\n this.$emit('change', event.target.value);\n },\n calcIconOffset: function calcIconOffset(place) {\n var elList = [].slice.call(this.$el.querySelectorAll('.el-input__' + place) || []);\n if (!elList.length) return;\n var el = null;\n for (var i = 0; i < elList.length; i++) {\n if (elList[i].parentNode === this.$el) {\n el = elList[i];\n break;\n }\n }\n if (!el) return;\n var pendantMap = {\n suffix: 'append',\n prefix: 'prepend'\n };\n\n var pendant = pendantMap[place];\n if (this.$slots[pendant]) {\n el.style.transform = 'translateX(' + (place === 'suffix' ? '-' : '') + this.$el.querySelector('.el-input-group__' + pendant).offsetWidth + 'px)';\n } else {\n el.removeAttribute('style');\n }\n },\n updateIconOffset: function updateIconOffset() {\n this.calcIconOffset('prefix');\n this.calcIconOffset('suffix');\n },\n clear: function clear() {\n this.$emit('input', '');\n this.$emit('change', '');\n this.$emit('clear');\n },\n handlePasswordVisible: function handlePasswordVisible() {\n var _this2 = this;\n\n this.passwordVisible = !this.passwordVisible;\n this.$nextTick(function () {\n _this2.focus();\n });\n },\n getInput: function getInput() {\n return this.$refs.input || this.$refs.textarea;\n },\n getSuffixVisible: function getSuffixVisible() {\n return this.$slots.suffix || this.suffixIcon || this.showClear || this.showPassword || this.isWordLimitVisible || this.validateState && this.needStatusIcon;\n }\n },\n\n created: function created() {\n this.$on('inputSelect', this.select);\n },\n mounted: function mounted() {\n this.setNativeInputValue();\n this.resizeTextarea();\n this.updateIconOffset();\n },\n updated: function updated() {\n this.$nextTick(this.updateIconOffset);\n }\n});\n// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_inputvue_type_script_lang_js_ = (inputvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_6925__(0);\n\n// CONCATENATED MODULE: ./packages/input/src/input.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_inputvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/input/src/input.vue\"\n/* harmony default export */ var input = (component.exports);\n// CONCATENATED MODULE: ./packages/input/index.js\n\n\n/* istanbul ignore next */\ninput.install = function (Vue) {\n Vue.component(input.name, input);\n};\n\n/* harmony default export */ var packages_input = __nested_webpack_exports__[\"default\"] = (input);\n\n/***/ }),\n\n/***/ 9:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/merge */ \"./node_modules/element-ui/lib/utils/merge.js\");\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvaW5wdXQuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOEJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDhCQUFtQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZUFBZSw4QkFBbUI7QUFDbEMsbURBQW1ELCtCQUErQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0EsaUVBQWlFLGlCQUFpQjtBQUNsRjtBQUNBLDBEQUEwRCxhQUFhO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZ0NBQWdDLDhCQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDhCQUFtQjtBQUM5QixrREFBa0QsZ0NBQWdDO0FBQ2xGLDBFQUEwRSw4QkFBbUIsNEJBQTRCLG9CQUFvQjtBQUM3STtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0Esb0NBQW9DLDRCQUE0QjtBQUNoRSwwQ0FBMEM7QUFDMUMsV0FBVyw4QkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQixrQ0FBa0M7QUFDL0Q7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4QkFBbUIsQ0FBQyw4QkFBbUI7QUFDeEQsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsMEJBQW1CLEVBQUUsK0JBQW1COztBQUVo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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQVFBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsTUFBSyxJQUFJLENBQUs7QUFDdkI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLCtCQUErQiw0QkFBNEIscUJBQXFCO0FBQ2hGLEtBQUs7QUFDTDtBQUNBLHNFQUFzRTtBQUN0RSxLQUFLO0FBQ0w7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG1CQUFtQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsK0JBQW1COztBQUU3Qzs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0RBQWtELDBCQUFtQjs7QUFFckUsT0FBTzs7QUFFUDtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLGdGQUE0Qjs7QUFFckQsT0FBTzs7QUFFUCxVQUFVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL2lucHV0LmpzPzNkZGEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9kaXN0L1wiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA3NSk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICh7XG5cbi8qKiovIDA6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBub3JtYWxpemVDb21wb25lbnQ7IH0pO1xuLyogZ2xvYmFscyBfX1ZVRV9TU1JfQ09OVEVYVF9fICovXG5cbi8vIElNUE9SVEFOVDogRG8gTk9UIHVzZSBFUzIwMTUgZmVhdHVyZXMgaW4gdGhpcyBmaWxlIChleGNlcHQgZm9yIG1vZHVsZXMpLlxuLy8gVGhpcyBtb2R1bGUgaXMgYSBydW50aW1lIHV0aWxpdHkgZm9yIGNsZWFuZXIgY29tcG9uZW50IG1vZHVsZSBvdXRwdXQgYW5kIHdpbGxcbi8vIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCB3ZWJwYWNrIHVzZXIgYnVuZGxlLlxuXG5mdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICBzY3JpcHRFeHBvcnRzLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZnVuY3Rpb25hbFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIsIC8qIHNlcnZlciBvbmx5ICovXG4gIHNoYWRvd01vZGUgLyogdnVlLWNsaSBvbmx5ICovXG4pIHtcbiAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnNcbiAgICA6IHNjcmlwdEV4cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChyZW5kZXIpIHtcbiAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zXG4gICAgb3B0aW9ucy5fY29tcGlsZWQgPSB0cnVlXG4gIH1cblxuICAvLyBmdW5jdGlvbmFsIHRlbXBsYXRlXG4gIGlmIChmdW5jdGlvbmFsVGVtcGxhdGUpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uYWwgPSB0cnVlXG4gIH1cblxuICAvLyBzY29wZWRJZFxuICBpZiAoc2NvcGVJZCkge1xuICAgIG9wdGlvbnMuX3Njb3BlSWQgPSAnZGF0YS12LScgKyBzY29wZUlkXG4gIH1cblxuICB2YXIgaG9va1xuICBpZiAobW9kdWxlSWRlbnRpZmllcikgeyAvLyBzZXJ2ZXIgYnVpbGRcbiAgICBob29rID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIC8vIDIuMyBpbmplY3Rpb25cbiAgICAgIGNvbnRleHQgPVxuICAgICAgICBjb250ZXh0IHx8IC8vIGNhY2hlZCBjYWxsXG4gICAgICAgICh0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0KSB8fCAvLyBzdGF0ZWZ1bFxuICAgICAgICAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuJHZub2RlICYmIHRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0KSAvLyBmdW5jdGlvbmFsXG4gICAgICAvLyAyLjIgd2l0aCBydW5Jbk5ld0NvbnRleHQ6IHRydWVcbiAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX19cbiAgICAgIH1cbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgc3R5bGVzXG4gICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIGNvbnRleHQpXG4gICAgICB9XG4gICAgICAvLyByZWdpc3RlciBjb21wb25lbnQgbW9kdWxlIGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVycmVuY2VcbiAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7XG4gICAgICAgIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVyKVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZVxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXG4gICAgb3B0aW9ucy5fc3NyUmVnaXN0ZXIgPSBob29rXG4gIH0gZWxzZSBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgaG9vayA9IHNoYWRvd01vZGVcbiAgICAgID8gZnVuY3Rpb24gKCkgeyBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCB0aGlzLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3QpIH1cbiAgICAgIDogaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIGZvciB0ZW1wbGF0ZS1vbmx5IGhvdC1yZWxvYWQgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHJlbmRlciBmbiBkb2Vzbid0XG4gICAgICAvLyBnbyB0aHJvdWdoIHRoZSBub3JtYWxpemVyXG4gICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rXG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb2FsIGNvbXBvbmVudCBpbiB2dWUgZmlsZVxuICAgICAgdmFyIG9yaWdpbmFsUmVuZGVyID0gb3B0aW9ucy5yZW5kZXJcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uIChoLCBjb250ZXh0KSB7XG4gICAgICAgIGhvb2suY2FsbChjb250ZXh0KVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZW5kZXIoaCwgY29udGV4dClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIHZhciBleGlzdGluZyA9IG9wdGlvbnMuYmVmb3JlQ3JlYXRlXG4gICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nXG4gICAgICAgID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKVxuICAgICAgICA6IFtob29rXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gMTE6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL21peGlucy9taWdyYXRpbmdcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAyMTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvc2hhcmVkXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gNDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2VtaXR0ZXJcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyA3NTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvaW5wdXQvc3JjL2lucHV0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDNkZDc3NCZcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBjbGFzczogW1xuICAgICAgICBfdm0udHlwZSA9PT0gXCJ0ZXh0YXJlYVwiID8gXCJlbC10ZXh0YXJlYVwiIDogXCJlbC1pbnB1dFwiLFxuICAgICAgICBfdm0uaW5wdXRTaXplID8gXCJlbC1pbnB1dC0tXCIgKyBfdm0uaW5wdXRTaXplIDogXCJcIixcbiAgICAgICAge1xuICAgICAgICAgIFwiaXMtZGlzYWJsZWRcIjogX3ZtLmlucHV0RGlzYWJsZWQsXG4gICAgICAgICAgXCJpcy1leGNlZWRcIjogX3ZtLmlucHV0RXhjZWVkLFxuICAgICAgICAgIFwiZWwtaW5wdXQtZ3JvdXBcIjogX3ZtLiRzbG90cy5wcmVwZW5kIHx8IF92bS4kc2xvdHMuYXBwZW5kLFxuICAgICAgICAgIFwiZWwtaW5wdXQtZ3JvdXAtLWFwcGVuZFwiOiBfdm0uJHNsb3RzLmFwcGVuZCxcbiAgICAgICAgICBcImVsLWlucHV0LWdyb3VwLS1wcmVwZW5kXCI6IF92bS4kc2xvdHMucHJlcGVuZCxcbiAgICAgICAgICBcImVsLWlucHV0LS1wcmVmaXhcIjogX3ZtLiRzbG90cy5wcmVmaXggfHwgX3ZtLnByZWZpeEljb24sXG4gICAgICAgICAgXCJlbC1pbnB1dC0tc3VmZml4XCI6XG4gICAgICAgICAgICBfdm0uJHNsb3RzLnN1ZmZpeCB8fFxuICAgICAgICAgICAgX3ZtLnN1ZmZpeEljb24gfHxcbiAgICAgICAgICAgIF92bS5jbGVhcmFibGUgfHxcbiAgICAgICAgICAgIF92bS5zaG93UGFzc3dvcmRcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIG9uOiB7XG4gICAgICAgIG1vdXNlZW50ZXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIF92bS5ob3ZlcmluZyA9IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgX3ZtLmhvdmVyaW5nID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLnR5cGUgIT09IFwidGV4dGFyZWFcIlxuICAgICAgICA/IFtcbiAgICAgICAgICAgIF92bS4kc2xvdHMucHJlcGVuZFxuICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXQtZ3JvdXBfX3ByZXBlbmRcIiB9LFxuICAgICAgICAgICAgICAgICAgW192bS5fdChcInByZXBlbmRcIildLFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS50eXBlICE9PSBcInRleHRhcmVhXCJcbiAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIixcbiAgICAgICAgICAgICAgICAgIF92bS5fYihcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWlucHV0X19pbm5lclwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleDogX3ZtLnRhYmluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogX3ZtLnNob3dQYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IF92bS5wYXNzd29yZFZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0udHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uaW5wdXREaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5OiBfdm0ucmVhZG9ubHksXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IF92bS5hdXRvQ29tcGxldGUgfHwgX3ZtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfdm0ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbnN0YXJ0OiBfdm0uaGFuZGxlQ29tcG9zaXRpb25TdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0aW9udXBkYXRlOiBfdm0uaGFuZGxlQ29tcG9zaXRpb25VcGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbmVuZDogX3ZtLmhhbmRsZUNvbXBvc2l0aW9uRW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IF92bS5oYW5kbGVJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOiBfdm0uaGFuZGxlRm9jdXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBibHVyOiBfdm0uaGFuZGxlQmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICBfdm0uJGF0dHJzLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS4kc2xvdHMucHJlZml4IHx8IF92bS5wcmVmaXhJY29uXG4gICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXRfX3ByZWZpeFwiIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdChcInByZWZpeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnByZWZpeEljb25cbiAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWlucHV0X19pY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBfdm0ucHJlZml4SWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS5nZXRTdWZmaXhWaXNpYmxlKClcbiAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1pbnB1dF9fc3VmZml4XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVsLWlucHV0X19zdWZmaXgtaW5uZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgIV92bS5zaG93Q2xlYXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAhX3ZtLnNob3dQd2RWaXNpYmxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIV92bS5pc1dvcmRMaW1pdFZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdChcInN1ZmZpeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc3VmZml4SWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLWlucHV0X19pY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IF92bS5zdWZmaXhJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dDbGVhclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC1pbnB1dF9faWNvbiBlbC1pY29uLWNpcmNsZS1jbG9zZSBlbC1pbnB1dF9fY2xlYXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2Vkb3duOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogX3ZtLmNsZWFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd1B3ZFZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtaW5wdXRfX2ljb24gZWwtaWNvbi12aWV3IGVsLWlucHV0X19jbGVhclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGFuZGxlUGFzc3dvcmRWaXNpYmxlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLmlzV29yZExpbWl0VmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1pbnB1dF9fY291bnRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtaW5wdXRfX2NvdW50LWlubmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS50ZXh0TGVuZ3RoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLnVwcGVyTGltaXQpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfdm0udmFsaWRhdGVTdGF0ZVxuICAgICAgICAgICAgICAgICAgICA/IF9jKFwiaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1pbnB1dF9faWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFtcImVsLWlucHV0X192YWxpZGF0ZUljb25cIiwgX3ZtLnZhbGlkYXRlSWNvbl1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS4kc2xvdHMuYXBwZW5kXG4gICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJlbC1pbnB1dC1ncm91cF9fYXBwZW5kXCIgfSxcbiAgICAgICAgICAgICAgICAgIFtfdm0uX3QoXCJhcHBlbmRcIildLFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgIF1cbiAgICAgICAgOiBfYyhcbiAgICAgICAgICAgIFwidGV4dGFyZWFcIixcbiAgICAgICAgICAgIF92bS5fYihcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlZjogXCJ0ZXh0YXJlYVwiLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXRleHRhcmVhX19pbm5lclwiLFxuICAgICAgICAgICAgICAgIHN0eWxlOiBfdm0udGV4dGFyZWFTdHlsZSxcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg6IF92bS50YWJpbmRleCxcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uaW5wdXREaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgIHJlYWRvbmx5OiBfdm0ucmVhZG9ubHksXG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IF92bS5hdXRvQ29tcGxldGUgfHwgX3ZtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfdm0ubGFiZWxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbnN0YXJ0OiBfdm0uaGFuZGxlQ29tcG9zaXRpb25TdGFydCxcbiAgICAgICAgICAgICAgICAgIGNvbXBvc2l0aW9udXBkYXRlOiBfdm0uaGFuZGxlQ29tcG9zaXRpb25VcGRhdGUsXG4gICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbmVuZDogX3ZtLmhhbmRsZUNvbXBvc2l0aW9uRW5kLFxuICAgICAgICAgICAgICAgICAgaW5wdXQ6IF92bS5oYW5kbGVJbnB1dCxcbiAgICAgICAgICAgICAgICAgIGZvY3VzOiBfdm0uaGFuZGxlRm9jdXMsXG4gICAgICAgICAgICAgICAgICBibHVyOiBfdm0uaGFuZGxlQmx1cixcbiAgICAgICAgICAgICAgICAgIGNoYW5nZTogX3ZtLmhhbmRsZUNoYW5nZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXCJ0ZXh0YXJlYVwiLFxuICAgICAgICAgICAgICBfdm0uJGF0dHJzLFxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICBfdm0uaXNXb3JkTGltaXRWaXNpYmxlICYmIF92bS50eXBlID09PSBcInRleHRhcmVhXCJcbiAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1pbnB1dF9fY291bnRcIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50ZXh0TGVuZ3RoKSArIFwiL1wiICsgX3ZtLl9zKF92bS51cHBlckxpbWl0KSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpXG4gICAgXSxcbiAgICAyXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbnB1dC9zcmMvaW5wdXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0M2RkNzc0JlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2VtaXR0ZXJcIlxudmFyIGVtaXR0ZXJfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBlbWl0dGVyX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGVtaXR0ZXJfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL21peGlucy9taWdyYXRpbmdcIlxudmFyIG1pZ3JhdGluZ18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcbnZhciBtaWdyYXRpbmdfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4obWlncmF0aW5nXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvaW5wdXQvc3JjL2NhbGNUZXh0YXJlYUhlaWdodC5qc1xudmFyIGhpZGRlblRleHRhcmVhID0gdm9pZCAwO1xuXG52YXIgSElEREVOX1NUWUxFID0gJ1xcbiAgaGVpZ2h0OjAgIWltcG9ydGFudDtcXG4gIHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7XFxuICBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDtcXG4gIHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4Oi0xMDAwICFpbXBvcnRhbnQ7XFxuICB0b3A6MCAhaW1wb3J0YW50O1xcbiAgcmlnaHQ6MCAhaW1wb3J0YW50XFxuJztcblxudmFyIENPTlRFWFRfU1RZTEUgPSBbJ2xldHRlci1zcGFjaW5nJywgJ2xpbmUtaGVpZ2h0JywgJ3BhZGRpbmctdG9wJywgJ3BhZGRpbmctYm90dG9tJywgJ2ZvbnQtZmFtaWx5JywgJ2ZvbnQtd2VpZ2h0JywgJ2ZvbnQtc2l6ZScsICd0ZXh0LXJlbmRlcmluZycsICd0ZXh0LXRyYW5zZm9ybScsICd3aWR0aCcsICd0ZXh0LWluZGVudCcsICdwYWRkaW5nLWxlZnQnLCAncGFkZGluZy1yaWdodCcsICdib3JkZXItd2lkdGgnLCAnYm94LXNpemluZyddO1xuXG5mdW5jdGlvbiBjYWxjdWxhdGVOb2RlU3R5bGluZyh0YXJnZXRFbGVtZW50KSB7XG4gIHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldEVsZW1lbnQpO1xuXG4gIHZhciBib3hTaXppbmcgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3gtc2l6aW5nJyk7XG5cbiAgdmFyIHBhZGRpbmdTaXplID0gcGFyc2VGbG9hdChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpKSArIHBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKSk7XG5cbiAgdmFyIGJvcmRlclNpemUgPSBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKSkgKyBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKSk7XG5cbiAgdmFyIGNvbnRleHRTdHlsZSA9IENPTlRFWFRfU1RZTEUubWFwKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIG5hbWUgKyAnOicgKyBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xuICB9KS5qb2luKCc7Jyk7XG5cbiAgcmV0dXJuIHsgY29udGV4dFN0eWxlOiBjb250ZXh0U3R5bGUsIHBhZGRpbmdTaXplOiBwYWRkaW5nU2l6ZSwgYm9yZGVyU2l6ZTogYm9yZGVyU2l6ZSwgYm94U2l6aW5nOiBib3hTaXppbmcgfTtcbn1cblxuZnVuY3Rpb24gY2FsY1RleHRhcmVhSGVpZ2h0KHRhcmdldEVsZW1lbnQpIHtcbiAgdmFyIG1pblJvd3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDE7XG4gIHZhciBtYXhSb3dzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBudWxsO1xuXG4gIGlmICghaGlkZGVuVGV4dGFyZWEpIHtcbiAgICBoaWRkZW5UZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoaWRkZW5UZXh0YXJlYSk7XG4gIH1cblxuICB2YXIgX2NhbGN1bGF0ZU5vZGVTdHlsaW5nID0gY2FsY3VsYXRlTm9kZVN0eWxpbmcodGFyZ2V0RWxlbWVudCksXG4gICAgICBwYWRkaW5nU2l6ZSA9IF9jYWxjdWxhdGVOb2RlU3R5bGluZy5wYWRkaW5nU2l6ZSxcbiAgICAgIGJvcmRlclNpemUgPSBfY2FsY3VsYXRlTm9kZVN0eWxpbmcuYm9yZGVyU2l6ZSxcbiAgICAgIGJveFNpemluZyA9IF9jYWxjdWxhdGVOb2RlU3R5bGluZy5ib3hTaXppbmcsXG4gICAgICBjb250ZXh0U3R5bGUgPSBfY2FsY3VsYXRlTm9kZVN0eWxpbmcuY29udGV4dFN0eWxlO1xuXG4gIGhpZGRlblRleHRhcmVhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBjb250ZXh0U3R5bGUgKyAnOycgKyBISURERU5fU1RZTEUpO1xuICBoaWRkZW5UZXh0YXJlYS52YWx1ZSA9IHRhcmdldEVsZW1lbnQudmFsdWUgfHwgdGFyZ2V0RWxlbWVudC5wbGFjZWhvbGRlciB8fCAnJztcblxuICB2YXIgaGVpZ2h0ID0gaGlkZGVuVGV4dGFyZWEuc2Nyb2xsSGVpZ2h0O1xuICB2YXIgcmVzdWx0ID0ge307XG5cbiAgaWYgKGJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgaGVpZ2h0ID0gaGVpZ2h0ICsgYm9yZGVyU2l6ZTtcbiAgfSBlbHNlIGlmIChib3hTaXppbmcgPT09ICdjb250ZW50LWJveCcpIHtcbiAgICBoZWlnaHQgPSBoZWlnaHQgLSBwYWRkaW5nU2l6ZTtcbiAgfVxuXG4gIGhpZGRlblRleHRhcmVhLnZhbHVlID0gJyc7XG4gIHZhciBzaW5nbGVSb3dIZWlnaHQgPSBoaWRkZW5UZXh0YXJlYS5zY3JvbGxIZWlnaHQgLSBwYWRkaW5nU2l6ZTtcblxuICBpZiAobWluUm93cyAhPT0gbnVsbCkge1xuICAgIHZhciBtaW5IZWlnaHQgPSBzaW5nbGVSb3dIZWlnaHQgKiBtaW5Sb3dzO1xuICAgIGlmIChib3hTaXppbmcgPT09ICdib3JkZXItYm94Jykge1xuICAgICAgbWluSGVpZ2h0ID0gbWluSGVpZ2h0ICsgcGFkZGluZ1NpemUgKyBib3JkZXJTaXplO1xuICAgIH1cbiAgICBoZWlnaHQgPSBNYXRoLm1heChtaW5IZWlnaHQsIGhlaWdodCk7XG4gICAgcmVzdWx0Lm1pbkhlaWdodCA9IG1pbkhlaWdodCArICdweCc7XG4gIH1cbiAgaWYgKG1heFJvd3MgIT09IG51bGwpIHtcbiAgICB2YXIgbWF4SGVpZ2h0ID0gc2luZ2xlUm93SGVpZ2h0ICogbWF4Um93cztcbiAgICBpZiAoYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICAgIG1heEhlaWdodCA9IG1heEhlaWdodCArIHBhZGRpbmdTaXplICsgYm9yZGVyU2l6ZTtcbiAgICB9XG4gICAgaGVpZ2h0ID0gTWF0aC5taW4obWF4SGVpZ2h0LCBoZWlnaHQpO1xuICB9XG4gIHJlc3VsdC5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuICBoaWRkZW5UZXh0YXJlYS5wYXJlbnROb2RlICYmIGhpZGRlblRleHRhcmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaGlkZGVuVGV4dGFyZWEpO1xuICBoaWRkZW5UZXh0YXJlYSA9IG51bGw7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL21lcmdlXCJcbnZhciBtZXJnZV8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xudmFyIG1lcmdlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKG1lcmdlXyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi91dGlscy9zaGFyZWRcIlxudmFyIHNoYXJlZF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvaW5wdXQvc3JjL2lucHV0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGlucHV0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsSW5wdXQnLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbElucHV0JyxcblxuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYSwgbWlncmF0aW5nX2RlZmF1bHQuYV0sXG5cbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcblxuICBpbmplY3Q6IHtcbiAgICBlbEZvcm06IHtcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBlbEZvcm1JdGVtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0YXJlYUNhbGNTdHlsZToge30sXG4gICAgICBob3ZlcmluZzogZmFsc2UsXG4gICAgICBmb2N1c2VkOiBmYWxzZSxcbiAgICAgIGlzQ29tcG9zaW5nOiBmYWxzZSxcbiAgICAgIHBhc3N3b3JkVmlzaWJsZTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG5cbiAgcHJvcHM6IHtcbiAgICB2YWx1ZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgcmVzaXplOiBTdHJpbmcsXG4gICAgZm9ybTogU3RyaW5nLFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIHJlYWRvbmx5OiBCb29sZWFuLFxuICAgIHR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd0ZXh0J1xuICAgIH0sXG4gICAgYXV0b3NpemU6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ29mZidcbiAgICB9LFxuICAgIC8qKiBARGVwcmVjYXRlZCBpbiBuZXh0IG1ham9yIHZlcnNpb24gKi9cbiAgICBhdXRvQ29tcGxldGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICAgZmFsc2UgJiYgZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGVFdmVudDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIHN1ZmZpeEljb246IFN0cmluZyxcbiAgICBwcmVmaXhJY29uOiBTdHJpbmcsXG4gICAgbGFiZWw6IFN0cmluZyxcbiAgICBjbGVhcmFibGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc2hvd1Bhc3N3b3JkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHNob3dXb3JkTGltaXQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgdGFiaW5kZXg6IFN0cmluZ1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgX2VsRm9ybUl0ZW1TaXplOiBmdW5jdGlvbiBfZWxGb3JtSXRlbVNpemUoKSB7XG4gICAgICByZXR1cm4gKHRoaXMuZWxGb3JtSXRlbSB8fCB7fSkuZWxGb3JtSXRlbVNpemU7XG4gICAgfSxcbiAgICB2YWxpZGF0ZVN0YXRlOiBmdW5jdGlvbiB2YWxpZGF0ZVN0YXRlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxGb3JtSXRlbSA/IHRoaXMuZWxGb3JtSXRlbS52YWxpZGF0ZVN0YXRlIDogJyc7XG4gICAgfSxcbiAgICBuZWVkU3RhdHVzSWNvbjogZnVuY3Rpb24gbmVlZFN0YXR1c0ljb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbEZvcm0gPyB0aGlzLmVsRm9ybS5zdGF0dXNJY29uIDogZmFsc2U7XG4gICAgfSxcbiAgICB2YWxpZGF0ZUljb246IGZ1bmN0aW9uIHZhbGlkYXRlSWNvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkYXRpbmc6ICdlbC1pY29uLWxvYWRpbmcnLFxuICAgICAgICBzdWNjZXNzOiAnZWwtaWNvbi1jaXJjbGUtY2hlY2snLFxuICAgICAgICBlcnJvcjogJ2VsLWljb24tY2lyY2xlLWNsb3NlJ1xuICAgICAgfVt0aGlzLnZhbGlkYXRlU3RhdGVdO1xuICAgIH0sXG4gICAgdGV4dGFyZWFTdHlsZTogZnVuY3Rpb24gdGV4dGFyZWFTdHlsZSgpIHtcbiAgICAgIHJldHVybiBtZXJnZV9kZWZhdWx0KCkoe30sIHRoaXMudGV4dGFyZWFDYWxjU3R5bGUsIHsgcmVzaXplOiB0aGlzLnJlc2l6ZSB9KTtcbiAgICB9LFxuICAgIGlucHV0U2l6ZTogZnVuY3Rpb24gaW5wdXRTaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZSB8fCB0aGlzLl9lbEZvcm1JdGVtU2l6ZSB8fCAodGhpcy4kRUxFTUVOVCB8fCB7fSkuc2l6ZTtcbiAgICB9LFxuICAgIGlucHV0RGlzYWJsZWQ6IGZ1bmN0aW9uIGlucHV0RGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCAodGhpcy5lbEZvcm0gfHwge30pLmRpc2FibGVkO1xuICAgIH0sXG4gICAgbmF0aXZlSW5wdXRWYWx1ZTogZnVuY3Rpb24gbmF0aXZlSW5wdXRWYWx1ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBudWxsIHx8IHRoaXMudmFsdWUgPT09IHVuZGVmaW5lZCA/ICcnIDogU3RyaW5nKHRoaXMudmFsdWUpO1xuICAgIH0sXG4gICAgc2hvd0NsZWFyOiBmdW5jdGlvbiBzaG93Q2xlYXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jbGVhcmFibGUgJiYgIXRoaXMuaW5wdXREaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSAmJiB0aGlzLm5hdGl2ZUlucHV0VmFsdWUgJiYgKHRoaXMuZm9jdXNlZCB8fCB0aGlzLmhvdmVyaW5nKTtcbiAgICB9LFxuICAgIHNob3dQd2RWaXNpYmxlOiBmdW5jdGlvbiBzaG93UHdkVmlzaWJsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3dQYXNzd29yZCAmJiAhdGhpcy5pbnB1dERpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5ICYmICghIXRoaXMubmF0aXZlSW5wdXRWYWx1ZSB8fCB0aGlzLmZvY3VzZWQpO1xuICAgIH0sXG4gICAgaXNXb3JkTGltaXRWaXNpYmxlOiBmdW5jdGlvbiBpc1dvcmRMaW1pdFZpc2libGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaG93V29yZExpbWl0ICYmIHRoaXMuJGF0dHJzLm1heGxlbmd0aCAmJiAodGhpcy50eXBlID09PSAndGV4dCcgfHwgdGhpcy50eXBlID09PSAndGV4dGFyZWEnKSAmJiAhdGhpcy5pbnB1dERpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5ICYmICF0aGlzLnNob3dQYXNzd29yZDtcbiAgICB9LFxuICAgIHVwcGVyTGltaXQ6IGZ1bmN0aW9uIHVwcGVyTGltaXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kYXR0cnMubWF4bGVuZ3RoO1xuICAgIH0sXG4gICAgdGV4dExlbmd0aDogZnVuY3Rpb24gdGV4dExlbmd0aCgpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLnZhbHVlKS5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAodGhpcy52YWx1ZSB8fCAnJykubGVuZ3RoO1xuICAgIH0sXG4gICAgaW5wdXRFeGNlZWQ6IGZ1bmN0aW9uIGlucHV0RXhjZWVkKCkge1xuICAgICAgLy8gc2hvdyBleGNlZWQgc3R5bGUgaWYgbGVuZ3RoIG9mIGluaXRpYWwgdmFsdWUgZ3JlYXRlciB0aGVuIG1heGxlbmd0aFxuICAgICAgcmV0dXJuIHRoaXMuaXNXb3JkTGltaXRWaXNpYmxlICYmIHRoaXMudGV4dExlbmd0aCA+IHRoaXMudXBwZXJMaW1pdDtcbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsKSB7XG4gICAgICB0aGlzLiRuZXh0VGljayh0aGlzLnJlc2l6ZVRleHRhcmVhKTtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmNoYW5nZScsIFt2YWxdKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gbmF0aXZlIGlucHV0IHZhbHVlIGlzIHNldCBleHBsaWNpdGx5XG4gICAgLy8gZG8gbm90IHVzZSB2LW1vZGVsIC8gOnZhbHVlIGluIHRlbXBsYXRlXG4gICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vRWxlbWVGRS9lbGVtZW50L2lzc3Vlcy8xNDUyMVxuICAgIG5hdGl2ZUlucHV0VmFsdWU6IGZ1bmN0aW9uIG5hdGl2ZUlucHV0VmFsdWUoKSB7XG4gICAgICB0aGlzLnNldE5hdGl2ZUlucHV0VmFsdWUoKTtcbiAgICB9LFxuXG4gICAgLy8gd2hlbiBjaGFuZ2UgYmV0d2VlbiA8aW5wdXQ+IGFuZCA8dGV4dGFyZWE+LFxuICAgIC8vIHVwZGF0ZSBET00gZGVwZW5kZW50IHZhbHVlIGFuZCBzdHlsZXNcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vRWxlbWVGRS9lbGVtZW50L2lzc3Vlcy8xNDg1N1xuICAgIHR5cGU6IGZ1bmN0aW9uIHR5cGUoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLnNldE5hdGl2ZUlucHV0VmFsdWUoKTtcbiAgICAgICAgX3RoaXMucmVzaXplVGV4dGFyZWEoKTtcbiAgICAgICAgX3RoaXMudXBkYXRlSWNvbk9mZnNldCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBmb2N1czogZnVuY3Rpb24gZm9jdXMoKSB7XG4gICAgICB0aGlzLmdldElucHV0KCkuZm9jdXMoKTtcbiAgICB9LFxuICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoKSB7XG4gICAgICB0aGlzLmdldElucHV0KCkuYmx1cigpO1xuICAgIH0sXG4gICAgZ2V0TWlncmF0aW5nQ29uZmlnOiBmdW5jdGlvbiBnZXRNaWdyYXRpbmdDb25maWcoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICdpY29uJzogJ2ljb24gaXMgcmVtb3ZlZCwgdXNlIHN1ZmZpeC1pY29uIC8gcHJlZml4LWljb24gaW5zdGVhZC4nLFxuICAgICAgICAgICdvbi1pY29uLWNsaWNrJzogJ29uLWljb24tY2xpY2sgaXMgcmVtb3ZlZC4nXG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICdjbGljayc6ICdjbGljayBpcyByZW1vdmVkLidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuICAgIGhhbmRsZUJsdXI6IGZ1bmN0aW9uIGhhbmRsZUJsdXIoZXZlbnQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgdGhpcy4kZW1pdCgnYmx1cicsIGV2ZW50KTtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmJsdXInLCBbdGhpcy52YWx1ZV0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0OiBmdW5jdGlvbiBzZWxlY3QoKSB7XG4gICAgICB0aGlzLmdldElucHV0KCkuc2VsZWN0KCk7XG4gICAgfSxcbiAgICByZXNpemVUZXh0YXJlYTogZnVuY3Rpb24gcmVzaXplVGV4dGFyZWEoKSB7XG4gICAgICBpZiAodGhpcy4kaXNTZXJ2ZXIpIHJldHVybjtcbiAgICAgIHZhciBhdXRvc2l6ZSA9IHRoaXMuYXV0b3NpemUsXG4gICAgICAgICAgdHlwZSA9IHRoaXMudHlwZTtcblxuICAgICAgaWYgKHR5cGUgIT09ICd0ZXh0YXJlYScpIHJldHVybjtcbiAgICAgIGlmICghYXV0b3NpemUpIHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYUNhbGNTdHlsZSA9IHtcbiAgICAgICAgICBtaW5IZWlnaHQ6IGNhbGNUZXh0YXJlYUhlaWdodCh0aGlzLiRyZWZzLnRleHRhcmVhKS5taW5IZWlnaHRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG1pblJvd3MgPSBhdXRvc2l6ZS5taW5Sb3dzO1xuICAgICAgdmFyIG1heFJvd3MgPSBhdXRvc2l6ZS5tYXhSb3dzO1xuXG4gICAgICB0aGlzLnRleHRhcmVhQ2FsY1N0eWxlID0gY2FsY1RleHRhcmVhSGVpZ2h0KHRoaXMuJHJlZnMudGV4dGFyZWEsIG1pblJvd3MsIG1heFJvd3MpO1xuICAgIH0sXG4gICAgc2V0TmF0aXZlSW5wdXRWYWx1ZTogZnVuY3Rpb24gc2V0TmF0aXZlSW5wdXRWYWx1ZSgpIHtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuZ2V0SW5wdXQoKTtcbiAgICAgIGlmICghaW5wdXQpIHJldHVybjtcbiAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gdGhpcy5uYXRpdmVJbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICBpbnB1dC52YWx1ZSA9IHRoaXMubmF0aXZlSW5wdXRWYWx1ZTtcbiAgICB9LFxuICAgIGhhbmRsZUZvY3VzOiBmdW5jdGlvbiBoYW5kbGVGb2N1cyhldmVudCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuJGVtaXQoJ2ZvY3VzJywgZXZlbnQpO1xuICAgIH0sXG4gICAgaGFuZGxlQ29tcG9zaXRpb25TdGFydDogZnVuY3Rpb24gaGFuZGxlQ29tcG9zaXRpb25TdGFydChldmVudCkge1xuICAgICAgdGhpcy4kZW1pdCgnY29tcG9zaXRpb25zdGFydCcsIGV2ZW50KTtcbiAgICAgIHRoaXMuaXNDb21wb3NpbmcgPSB0cnVlO1xuICAgIH0sXG4gICAgaGFuZGxlQ29tcG9zaXRpb25VcGRhdGU6IGZ1bmN0aW9uIGhhbmRsZUNvbXBvc2l0aW9uVXBkYXRlKGV2ZW50KSB7XG4gICAgICB0aGlzLiRlbWl0KCdjb21wb3NpdGlvbnVwZGF0ZScsIGV2ZW50KTtcbiAgICAgIHZhciB0ZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgdmFyIGxhc3RDaGFyYWN0ZXIgPSB0ZXh0W3RleHQubGVuZ3RoIC0gMV0gfHwgJyc7XG4gICAgICB0aGlzLmlzQ29tcG9zaW5nID0gIU9iamVjdChzaGFyZWRfW1wiaXNLb3JlYW5cIl0pKGxhc3RDaGFyYWN0ZXIpO1xuICAgIH0sXG4gICAgaGFuZGxlQ29tcG9zaXRpb25FbmQ6IGZ1bmN0aW9uIGhhbmRsZUNvbXBvc2l0aW9uRW5kKGV2ZW50KSB7XG4gICAgICB0aGlzLiRlbWl0KCdjb21wb3NpdGlvbmVuZCcsIGV2ZW50KTtcbiAgICAgIGlmICh0aGlzLmlzQ29tcG9zaW5nKSB7XG4gICAgICAgIHRoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oYW5kbGVJbnB1dChldmVudCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVJbnB1dDogZnVuY3Rpb24gaGFuZGxlSW5wdXQoZXZlbnQpIHtcbiAgICAgIC8vIHNob3VsZCBub3QgZW1pdCBpbnB1dCBkdXJpbmcgY29tcG9zaXRpb25cbiAgICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9pc3N1ZXMvMTA1MTZcbiAgICAgIGlmICh0aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG5cbiAgICAgIC8vIGhhY2sgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9FbGVtZUZFL2VsZW1lbnQvaXNzdWVzLzg1NDhcbiAgICAgIC8vIHNob3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIHdoZW4gd2UgZG9uJ3Qgc3VwcG9ydCBJRVxuICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gdGhpcy5uYXRpdmVJbnB1dFZhbHVlKSByZXR1cm47XG5cbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgZXZlbnQudGFyZ2V0LnZhbHVlKTtcblxuICAgICAgLy8gZW5zdXJlIG5hdGl2ZSBpbnB1dCB2YWx1ZSBpcyBjb250cm9sbGVkXG4gICAgICAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9FbGVtZUZFL2VsZW1lbnQvaXNzdWVzLzEyODUwXG4gICAgICB0aGlzLiRuZXh0VGljayh0aGlzLnNldE5hdGl2ZUlucHV0VmFsdWUpO1xuICAgIH0sXG4gICAgaGFuZGxlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfSxcbiAgICBjYWxjSWNvbk9mZnNldDogZnVuY3Rpb24gY2FsY0ljb25PZmZzZXQocGxhY2UpIHtcbiAgICAgIHZhciBlbExpc3QgPSBbXS5zbGljZS5jYWxsKHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lbC1pbnB1dF9fJyArIHBsYWNlKSB8fCBbXSk7XG4gICAgICBpZiAoIWVsTGlzdC5sZW5ndGgpIHJldHVybjtcbiAgICAgIHZhciBlbCA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZWxMaXN0W2ldLnBhcmVudE5vZGUgPT09IHRoaXMuJGVsKSB7XG4gICAgICAgICAgZWwgPSBlbExpc3RbaV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZWwpIHJldHVybjtcbiAgICAgIHZhciBwZW5kYW50TWFwID0ge1xuICAgICAgICBzdWZmaXg6ICdhcHBlbmQnLFxuICAgICAgICBwcmVmaXg6ICdwcmVwZW5kJ1xuICAgICAgfTtcblxuICAgICAgdmFyIHBlbmRhbnQgPSBwZW5kYW50TWFwW3BsYWNlXTtcbiAgICAgIGlmICh0aGlzLiRzbG90c1twZW5kYW50XSkge1xuICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgnICsgKHBsYWNlID09PSAnc3VmZml4JyA/ICctJyA6ICcnKSArIHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5lbC1pbnB1dC1ncm91cF9fJyArIHBlbmRhbnQpLm9mZnNldFdpZHRoICsgJ3B4KSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICB1cGRhdGVJY29uT2Zmc2V0OiBmdW5jdGlvbiB1cGRhdGVJY29uT2Zmc2V0KCkge1xuICAgICAgdGhpcy5jYWxjSWNvbk9mZnNldCgncHJlZml4Jyk7XG4gICAgICB0aGlzLmNhbGNJY29uT2Zmc2V0KCdzdWZmaXgnKTtcbiAgICB9LFxuICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgJycpO1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgJycpO1xuICAgICAgdGhpcy4kZW1pdCgnY2xlYXInKTtcbiAgICB9LFxuICAgIGhhbmRsZVBhc3N3b3JkVmlzaWJsZTogZnVuY3Rpb24gaGFuZGxlUGFzc3dvcmRWaXNpYmxlKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMucGFzc3dvcmRWaXNpYmxlID0gIXRoaXMucGFzc3dvcmRWaXNpYmxlO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0SW5wdXQ6IGZ1bmN0aW9uIGdldElucHV0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHJlZnMuaW5wdXQgfHwgdGhpcy4kcmVmcy50ZXh0YXJlYTtcbiAgICB9LFxuICAgIGdldFN1ZmZpeFZpc2libGU6IGZ1bmN0aW9uIGdldFN1ZmZpeFZpc2libGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kc2xvdHMuc3VmZml4IHx8IHRoaXMuc3VmZml4SWNvbiB8fCB0aGlzLnNob3dDbGVhciB8fCB0aGlzLnNob3dQYXNzd29yZCB8fCB0aGlzLmlzV29yZExpbWl0VmlzaWJsZSB8fCB0aGlzLnZhbGlkYXRlU3RhdGUgJiYgdGhpcy5uZWVkU3RhdHVzSWNvbjtcbiAgICB9XG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLiRvbignaW5wdXRTZWxlY3QnLCB0aGlzLnNlbGVjdCk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zZXROYXRpdmVJbnB1dFZhbHVlKCk7XG4gICAgdGhpcy5yZXNpemVUZXh0YXJlYSgpO1xuICAgIHRoaXMudXBkYXRlSWNvbk9mZnNldCgpO1xuICB9LFxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIHRoaXMuJG5leHRUaWNrKHRoaXMudXBkYXRlSWNvbk9mZnNldCk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbnB1dC9zcmMvaW5wdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19pbnB1dHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChpbnB1dHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcbnZhciBjb21wb25lbnROb3JtYWxpemVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9pbnB1dC9zcmMvaW5wdXQudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY29tcG9uZW50ID0gT2JqZWN0KGNvbXBvbmVudE5vcm1hbGl6ZXJbXCJhXCIgLyogZGVmYXVsdCAqL10pKFxuICBzcmNfaW5wdXR2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhcGk7IH1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvaW5wdXQvc3JjL2lucHV0LnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBpbnB1dCA9IChjb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL2lucHV0L2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlucHV0Lmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQoaW5wdXQubmFtZSwgaW5wdXQpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfaW5wdXQgPSBfX3dlYnBhY2tfZXhwb3J0c19fW1wiZGVmYXVsdFwiXSA9IChpbnB1dCk7XG5cbi8qKiovIH0pLFxuXG4vKioqLyA5OlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9tZXJnZVwiKTtcblxuLyoqKi8gfSlcblxuLyoqKioqKi8gfSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/input.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/locale/format.js":
/*!******************************************************!*\
!*** ./node_modules/element-ui/lib/locale/format.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports[\"default\"] = function (Vue) {\n\n /**\n * template\n *\n * @param {String} string\n * @param {Array} ...args\n * @return {String}\n */\n\n function template(string) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (args.length === 1 && _typeof(args[0]) === 'object') {\n args = args[0];\n }\n\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n\n return string.replace(RE_NARGS, function (match, prefix, i, index) {\n var result = void 0;\n\n if (string[index - 1] === '{' && string[index + match.length] === '}') {\n return i;\n } else {\n result = (0, _util.hasOwn)(args, i) ? args[i] : null;\n if (result === null || result === undefined) {\n return '';\n }\n\n return result;\n }\n });\n }\n\n return template;\n};\n\nvar _util = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\nvar RE_NARGS = /(%|)\\{([0-9a-zA-Z_]+)\\}/g;\n/**\n * String format template\n * - Inspired:\n * https://github.com/Matt-Esch/string-template/index.js\n *///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbG9jYWxlL2Zvcm1hdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7O0FBRWxCLHFHQUFxRyxxQkFBcUIsbUJBQW1COztBQUU3SSxrQkFBZTs7QUFFZjtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsYUFBYSxPQUFPO0FBQ3BCLGNBQWM7QUFDZDs7QUFFQTtBQUNBLHVGQUF1RixhQUFhO0FBQ3BHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtDQUFrQyx3Q0FBd0M7QUFDMUU7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBLFlBQVksbUJBQU8sQ0FBQyw4RUFBMkI7O0FBRS9DLHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi9sb2NhbGUvZm9ybWF0LmpzPzVhOTIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChWdWUpIHtcblxuICAvKipcbiAgICogdGVtcGxhdGVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZ1xuICAgKiBAcGFyYW0ge0FycmF5fSAuLi5hcmdzXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICovXG5cbiAgZnVuY3Rpb24gdGVtcGxhdGUoc3RyaW5nKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgX3R5cGVvZihhcmdzWzBdKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGFyZ3MgPSBhcmdzWzBdO1xuICAgIH1cblxuICAgIGlmICghYXJncyB8fCAhYXJncy5oYXNPd25Qcm9wZXJ0eSkge1xuICAgICAgYXJncyA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShSRV9OQVJHUywgZnVuY3Rpb24gKG1hdGNoLCBwcmVmaXgsIGksIGluZGV4KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdm9pZCAwO1xuXG4gICAgICBpZiAoc3RyaW5nW2luZGV4IC0gMV0gPT09ICd7JyAmJiBzdHJpbmdbaW5kZXggKyBtYXRjaC5sZW5ndGhdID09PSAnfScpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSAoMCwgX3V0aWwuaGFzT3duKShhcmdzLCBpKSA/IGFyZ3NbaV0gOiBudWxsO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wbGF0ZTtcbn07XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJ2VsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWwnKTtcblxudmFyIFJFX05BUkdTID0gLyglfClcXHsoWzAtOWEtekEtWl9dKylcXH0vZztcbi8qKlxuICogIFN0cmluZyBmb3JtYXQgdGVtcGxhdGVcbiAqICAtIEluc3BpcmVkOlxuICogICAgaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC9zdHJpbmctdGVtcGxhdGUvaW5kZXguanNcbiAqLyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/locale/format.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/locale/index.js":
/*!*****************************************************!*\
!*** ./node_modules/element-ui/lib/locale/index.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.i18n = exports.use = exports.t = undefined;\n\nvar _zhCN = __webpack_require__(/*! element-ui/lib/locale/lang/zh-CN */ \"./node_modules/element-ui/lib/locale/lang/zh-CN.js\");\n\nvar _zhCN2 = _interopRequireDefault(_zhCN);\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _deepmerge = __webpack_require__(/*! deepmerge */ \"./node_modules/element-ui/node_modules/deepmerge/dist/cjs.js\");\n\nvar _deepmerge2 = _interopRequireDefault(_deepmerge);\n\nvar _format = __webpack_require__(/*! ./format */ \"./node_modules/element-ui/lib/locale/format.js\");\n\nvar _format2 = _interopRequireDefault(_format);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar format = (0, _format2.default)(_vue2.default);\nvar lang = _zhCN2.default;\nvar merged = false;\nvar i18nHandler = function i18nHandler() {\n var vuei18n = Object.getPrototypeOf(this || _vue2.default).$t;\n if (typeof vuei18n === 'function' && !!_vue2.default.locale) {\n if (!merged) {\n merged = true;\n _vue2.default.locale(_vue2.default.config.lang, (0, _deepmerge2.default)(lang, _vue2.default.locale(_vue2.default.config.lang) || {}, { clone: true }));\n }\n return vuei18n.apply(this, arguments);\n }\n};\n\nvar t = exports.t = function t(path, options) {\n var value = i18nHandler.apply(this, arguments);\n if (value !== null && value !== undefined) return value;\n\n var array = path.split('.');\n var current = lang;\n\n for (var i = 0, j = array.length; i < j; i++) {\n var property = array[i];\n value = current[property];\n if (i === j - 1) return format(value, options);\n if (!value) return '';\n current = value;\n }\n return '';\n};\n\nvar use = exports.use = function use(l) {\n lang = l || lang;\n};\n\nvar i18n = exports.i18n = function i18n(fn) {\n i18nHandler = fn || i18nHandler;\n};\n\nexports[\"default\"] = { use: use, t: t, i18n: i18n };//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbG9jYWxlL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQjtBQUNsQixZQUFZLEdBQUcsV0FBVyxHQUFHLFNBQVM7O0FBRXRDLFlBQVksbUJBQU8sQ0FBQyw0RkFBa0M7O0FBRXREOztBQUVBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBSzs7QUFFeEI7O0FBRUEsaUJBQWlCLG1CQUFPLENBQUMsK0VBQVc7O0FBRXBDOztBQUVBLGNBQWMsbUJBQU8sQ0FBQyxnRUFBVTs7QUFFaEM7O0FBRUEsdUNBQXVDLHVDQUF1Qzs7QUFFOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBJQUEwSSxJQUFJLGFBQWE7QUFDM0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSxTQUFTO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxvQ0FBb0MsT0FBTztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsV0FBVztBQUNyQjtBQUNBOztBQUVBLFdBQVcsWUFBWTtBQUN2QjtBQUNBOztBQUVBLGtCQUFlLEtBQUsiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbG9jYWxlL2luZGV4LmpzPzcxOGIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5pMThuID0gZXhwb3J0cy51c2UgPSBleHBvcnRzLnQgPSB1bmRlZmluZWQ7XG5cbnZhciBfemhDTiA9IHJlcXVpcmUoJ2VsZW1lbnQtdWkvbGliL2xvY2FsZS9sYW5nL3poLUNOJyk7XG5cbnZhciBfemhDTjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF96aENOKTtcblxudmFyIF92dWUgPSByZXF1aXJlKCd2dWUnKTtcblxudmFyIF92dWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdnVlKTtcblxudmFyIF9kZWVwbWVyZ2UgPSByZXF1aXJlKCdkZWVwbWVyZ2UnKTtcblxudmFyIF9kZWVwbWVyZ2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVlcG1lcmdlKTtcblxudmFyIF9mb3JtYXQgPSByZXF1aXJlKCcuL2Zvcm1hdCcpO1xuXG52YXIgX2Zvcm1hdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mb3JtYXQpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgZm9ybWF0ID0gKDAsIF9mb3JtYXQyLmRlZmF1bHQpKF92dWUyLmRlZmF1bHQpO1xudmFyIGxhbmcgPSBfemhDTjIuZGVmYXVsdDtcbnZhciBtZXJnZWQgPSBmYWxzZTtcbnZhciBpMThuSGFuZGxlciA9IGZ1bmN0aW9uIGkxOG5IYW5kbGVyKCkge1xuICB2YXIgdnVlaTE4biA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzIHx8IF92dWUyLmRlZmF1bHQpLiR0O1xuICBpZiAodHlwZW9mIHZ1ZWkxOG4gPT09ICdmdW5jdGlvbicgJiYgISFfdnVlMi5kZWZhdWx0LmxvY2FsZSkge1xuICAgIGlmICghbWVyZ2VkKSB7XG4gICAgICBtZXJnZWQgPSB0cnVlO1xuICAgICAgX3Z1ZTIuZGVmYXVsdC5sb2NhbGUoX3Z1ZTIuZGVmYXVsdC5jb25maWcubGFuZywgKDAsIF9kZWVwbWVyZ2UyLmRlZmF1bHQpKGxhbmcsIF92dWUyLmRlZmF1bHQubG9jYWxlKF92dWUyLmRlZmF1bHQuY29uZmlnLmxhbmcpIHx8IHt9LCB7IGNsb25lOiB0cnVlIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIHZ1ZWkxOG4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxufTtcblxudmFyIHQgPSBleHBvcnRzLnQgPSBmdW5jdGlvbiB0KHBhdGgsIG9wdGlvbnMpIHtcbiAgdmFyIHZhbHVlID0gaTE4bkhhbmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHJldHVybiB2YWx1ZTtcblxuICB2YXIgYXJyYXkgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHZhciBjdXJyZW50ID0gbGFuZztcblxuICBmb3IgKHZhciBpID0gMCwgaiA9IGFycmF5Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0eSA9IGFycmF5W2ldO1xuICAgIHZhbHVlID0gY3VycmVudFtwcm9wZXJ0eV07XG4gICAgaWYgKGkgPT09IGogLSAxKSByZXR1cm4gZm9ybWF0KHZhbHVlLCBvcHRpb25zKTtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG4gICAgY3VycmVudCA9IHZhbHVlO1xuICB9XG4gIHJldHVybiAnJztcbn07XG5cbnZhciB1c2UgPSBleHBvcnRzLnVzZSA9IGZ1bmN0aW9uIHVzZShsKSB7XG4gIGxhbmcgPSBsIHx8IGxhbmc7XG59O1xuXG52YXIgaTE4biA9IGV4cG9ydHMuaTE4biA9IGZ1bmN0aW9uIGkxOG4oZm4pIHtcbiAgaTE4bkhhbmRsZXIgPSBmbiB8fCBpMThuSGFuZGxlcjtcbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHsgdXNlOiB1c2UsIHQ6IHQsIGkxOG46IGkxOG4gfTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/locale/index.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/locale/lang/es.js":
/*!*******************************************************!*\
!*** ./node_modules/element-ui/lib/locale/lang/es.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports[\"default\"] = {\n el: {\n colorpicker: {\n confirm: 'Confirmar',\n clear: 'Limpiar'\n },\n datepicker: {\n now: 'Ahora',\n today: 'Hoy',\n cancel: 'Cancelar',\n clear: 'Limpiar',\n confirm: 'Confirmar',\n selectDate: 'Seleccionar fecha',\n selectTime: 'Seleccionar hora',\n startDate: 'Fecha Incial',\n startTime: 'Hora Inicial',\n endDate: 'Fecha Final',\n endTime: 'Hora Final',\n prevYear: 'Año Anterior',\n nextYear: 'Próximo Año',\n prevMonth: 'Mes Anterior',\n nextMonth: 'Próximo Mes',\n year: '',\n month1: 'enero',\n month2: 'febrero',\n month3: 'marzo',\n month4: 'abril',\n month5: 'mayo',\n month6: 'junio',\n month7: 'julio',\n month8: 'agosto',\n month9: 'septiembre',\n month10: 'octubre',\n month11: 'noviembre',\n month12: 'diciembre',\n // week: 'semana',\n weeks: {\n sun: 'dom',\n mon: 'lun',\n tue: 'mar',\n wed: 'mié',\n thu: 'jue',\n fri: 'vie',\n sat: 'sáb'\n },\n months: {\n jan: 'ene',\n feb: 'feb',\n mar: 'mar',\n apr: 'abr',\n may: 'may',\n jun: 'jun',\n jul: 'jul',\n aug: 'ago',\n sep: 'sep',\n oct: 'oct',\n nov: 'nov',\n dec: 'dic'\n }\n },\n select: {\n loading: 'Cargando',\n noMatch: 'No hay datos que coincidan',\n noData: 'Sin datos',\n placeholder: 'Seleccionar'\n },\n cascader: {\n noMatch: 'No hay datos que coincidan',\n loading: 'Cargando',\n placeholder: 'Seleccionar',\n noData: 'Sin datos'\n },\n pagination: {\n goto: 'Ir a',\n pagesize: '/página',\n total: 'Total {total}',\n pageClassifier: ''\n },\n messagebox: {\n confirm: 'Aceptar',\n cancel: 'Cancelar',\n error: 'Entrada inválida'\n },\n upload: {\n deleteTip: 'Pulse Eliminar para retirar',\n delete: 'Eliminar',\n preview: 'Vista Previa',\n continue: 'Continuar'\n },\n table: {\n emptyText: 'Sin Datos',\n confirmFilter: 'Confirmar',\n resetFilter: 'Reiniciar',\n clearFilter: 'Limpiar',\n sumText: 'Suma'\n },\n tree: {\n emptyText: 'Sin Datos'\n },\n transfer: {\n noMatch: 'No hay datos que coincidan',\n noData: 'Sin datos',\n titles: ['Lista 1', 'Lista 2'],\n filterPlaceholder: 'Ingresar palabra clave',\n noCheckedFormat: '{total} artículos',\n hasCheckedFormat: '{checked}/{total} revisados'\n },\n image: {\n error: 'HA FALLADO'\n },\n pageHeader: {\n title: 'Volver'\n },\n popconfirm: {\n confirmButtonText: 'Si',\n cancelButtonText: 'No'\n },\n empty: {\n description: 'Sin Datos'\n }\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbG9jYWxlL2xhbmcvZXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCO0FBQ2xCLGtCQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsTUFBTTtBQUMzQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsT0FBTztBQUNoQywwQkFBMEIsUUFBUSxFQUFFLE9BQU87QUFDM0MsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi9sb2NhbGUvbGFuZy9lcy5qcz9iZjY2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgZWw6IHtcbiAgICBjb2xvcnBpY2tlcjoge1xuICAgICAgY29uZmlybTogJ0NvbmZpcm1hcicsXG4gICAgICBjbGVhcjogJ0xpbXBpYXInXG4gICAgfSxcbiAgICBkYXRlcGlja2VyOiB7XG4gICAgICBub3c6ICdBaG9yYScsXG4gICAgICB0b2RheTogJ0hveScsXG4gICAgICBjYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgICBjbGVhcjogJ0xpbXBpYXInLFxuICAgICAgY29uZmlybTogJ0NvbmZpcm1hcicsXG4gICAgICBzZWxlY3REYXRlOiAnU2VsZWNjaW9uYXIgZmVjaGEnLFxuICAgICAgc2VsZWN0VGltZTogJ1NlbGVjY2lvbmFyIGhvcmEnLFxuICAgICAgc3RhcnREYXRlOiAnRmVjaGEgSW5jaWFsJyxcbiAgICAgIHN0YXJ0VGltZTogJ0hvcmEgSW5pY2lhbCcsXG4gICAgICBlbmREYXRlOiAnRmVjaGEgRmluYWwnLFxuICAgICAgZW5kVGltZTogJ0hvcmEgRmluYWwnLFxuICAgICAgcHJldlllYXI6ICdBw7FvIEFudGVyaW9yJyxcbiAgICAgIG5leHRZZWFyOiAnUHLDs3hpbW8gQcOxbycsXG4gICAgICBwcmV2TW9udGg6ICdNZXMgQW50ZXJpb3InLFxuICAgICAgbmV4dE1vbnRoOiAnUHLDs3hpbW8gTWVzJyxcbiAgICAgIHllYXI6ICcnLFxuICAgICAgbW9udGgxOiAnZW5lcm8nLFxuICAgICAgbW9udGgyOiAnZmVicmVybycsXG4gICAgICBtb250aDM6ICdtYXJ6bycsXG4gICAgICBtb250aDQ6ICdhYnJpbCcsXG4gICAgICBtb250aDU6ICdtYXlvJyxcbiAgICAgIG1vbnRoNjogJ2p1bmlvJyxcbiAgICAgIG1vbnRoNzogJ2p1bGlvJyxcbiAgICAgIG1vbnRoODogJ2Fnb3N0bycsXG4gICAgICBtb250aDk6ICdzZXB0aWVtYnJlJyxcbiAgICAgIG1vbnRoMTA6ICdvY3R1YnJlJyxcbiAgICAgIG1vbnRoMTE6ICdub3ZpZW1icmUnLFxuICAgICAgbW9udGgxMjogJ2RpY2llbWJyZScsXG4gICAgICAvLyB3ZWVrOiAnc2VtYW5hJyxcbiAgICAgIHdlZWtzOiB7XG4gICAgICAgIHN1bjogJ2RvbScsXG4gICAgICAgIG1vbjogJ2x1bicsXG4gICAgICAgIHR1ZTogJ21hcicsXG4gICAgICAgIHdlZDogJ21pw6knLFxuICAgICAgICB0aHU6ICdqdWUnLFxuICAgICAgICBmcmk6ICd2aWUnLFxuICAgICAgICBzYXQ6ICdzw6FiJ1xuICAgICAgfSxcbiAgICAgIG1vbnRoczoge1xuICAgICAgICBqYW46ICdlbmUnLFxuICAgICAgICBmZWI6ICdmZWInLFxuICAgICAgICBtYXI6ICdtYXInLFxuICAgICAgICBhcHI6ICdhYnInLFxuICAgICAgICBtYXk6ICdtYXknLFxuICAgICAgICBqdW46ICdqdW4nLFxuICAgICAgICBqdWw6ICdqdWwnLFxuICAgICAgICBhdWc6ICdhZ28nLFxuICAgICAgICBzZXA6ICdzZXAnLFxuICAgICAgICBvY3Q6ICdvY3QnLFxuICAgICAgICBub3Y6ICdub3YnLFxuICAgICAgICBkZWM6ICdkaWMnXG4gICAgICB9XG4gICAgfSxcbiAgICBzZWxlY3Q6IHtcbiAgICAgIGxvYWRpbmc6ICdDYXJnYW5kbycsXG4gICAgICBub01hdGNoOiAnTm8gaGF5IGRhdG9zIHF1ZSBjb2luY2lkYW4nLFxuICAgICAgbm9EYXRhOiAnU2luIGRhdG9zJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWNjaW9uYXInXG4gICAgfSxcbiAgICBjYXNjYWRlcjoge1xuICAgICAgbm9NYXRjaDogJ05vIGhheSBkYXRvcyBxdWUgY29pbmNpZGFuJyxcbiAgICAgIGxvYWRpbmc6ICdDYXJnYW5kbycsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjY2lvbmFyJyxcbiAgICAgIG5vRGF0YTogJ1NpbiBkYXRvcydcbiAgICB9LFxuICAgIHBhZ2luYXRpb246IHtcbiAgICAgIGdvdG86ICdJciBhJyxcbiAgICAgIHBhZ2VzaXplOiAnL3DDoWdpbmEnLFxuICAgICAgdG90YWw6ICdUb3RhbCB7dG90YWx9JyxcbiAgICAgIHBhZ2VDbGFzc2lmaWVyOiAnJ1xuICAgIH0sXG4gICAgbWVzc2FnZWJveDoge1xuICAgICAgY29uZmlybTogJ0FjZXB0YXInLFxuICAgICAgY2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgICAgZXJyb3I6ICdFbnRyYWRhIGludsOhbGlkYSdcbiAgICB9LFxuICAgIHVwbG9hZDoge1xuICAgICAgZGVsZXRlVGlwOiAnUHVsc2UgRWxpbWluYXIgcGFyYSByZXRpcmFyJyxcbiAgICAgIGRlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICAgIHByZXZpZXc6ICdWaXN0YSBQcmV2aWEnLFxuICAgICAgY29udGludWU6ICdDb250aW51YXInXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgZW1wdHlUZXh0OiAnU2luIERhdG9zJyxcbiAgICAgIGNvbmZpcm1GaWx0ZXI6ICdDb25maXJtYXInLFxuICAgICAgcmVzZXRGaWx0ZXI6ICdSZWluaWNpYXInLFxuICAgICAgY2xlYXJGaWx0ZXI6ICdMaW1waWFyJyxcbiAgICAgIHN1bVRleHQ6ICdTdW1hJ1xuICAgIH0sXG4gICAgdHJlZToge1xuICAgICAgZW1wdHlUZXh0OiAnU2luIERhdG9zJ1xuICAgIH0sXG4gICAgdHJhbnNmZXI6IHtcbiAgICAgIG5vTWF0Y2g6ICdObyBoYXkgZGF0b3MgcXVlIGNvaW5jaWRhbicsXG4gICAgICBub0RhdGE6ICdTaW4gZGF0b3MnLFxuICAgICAgdGl0bGVzOiBbJ0xpc3RhIDEnLCAnTGlzdGEgMiddLFxuICAgICAgZmlsdGVyUGxhY2Vob2xkZXI6ICdJbmdyZXNhciBwYWxhYnJhIGNsYXZlJyxcbiAgICAgIG5vQ2hlY2tlZEZvcm1hdDogJ3t0b3RhbH0gYXJ0w61jdWxvcycsXG4gICAgICBoYXNDaGVja2VkRm9ybWF0OiAne2NoZWNrZWR9L3t0b3RhbH0gcmV2aXNhZG9zJ1xuICAgIH0sXG4gICAgaW1hZ2U6IHtcbiAgICAgIGVycm9yOiAnSEEgRkFMTEFETydcbiAgICB9LFxuICAgIHBhZ2VIZWFkZXI6IHtcbiAgICAgIHRpdGxlOiAnVm9sdmVyJ1xuICAgIH0sXG4gICAgcG9wY29uZmlybToge1xuICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdTaScsXG4gICAgICBjYW5jZWxCdXR0b25UZXh0OiAnTm8nXG4gICAgfSxcbiAgICBlbXB0eToge1xuICAgICAgZGVzY3JpcHRpb246ICdTaW4gRGF0b3MnXG4gICAgfVxuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/locale/lang/es.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/locale/lang/zh-CN.js":
/*!**********************************************************!*\
!*** ./node_modules/element-ui/lib/locale/lang/zh-CN.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports[\"default\"] = {\n el: {\n colorpicker: {\n confirm: '确定',\n clear: '清空'\n },\n datepicker: {\n now: '此刻',\n today: '今天',\n cancel: '取消',\n clear: '清空',\n confirm: '确定',\n selectDate: '选择日期',\n selectTime: '选择时间',\n startDate: '开始日期',\n startTime: '开始时间',\n endDate: '结束日期',\n endTime: '结束时间',\n prevYear: '前一年',\n nextYear: '后一年',\n prevMonth: '上个月',\n nextMonth: '下个月',\n year: '年',\n month1: '1 月',\n month2: '2 月',\n month3: '3 月',\n month4: '4 月',\n month5: '5 月',\n month6: '6 月',\n month7: '7 月',\n month8: '8 月',\n month9: '9 月',\n month10: '10 月',\n month11: '11 月',\n month12: '12 月',\n // week: '周次',\n weeks: {\n sun: '日',\n mon: '一',\n tue: '二',\n wed: '三',\n thu: '四',\n fri: '五',\n sat: '六'\n },\n months: {\n jan: '一月',\n feb: '二月',\n mar: '三月',\n apr: '四月',\n may: '五月',\n jun: '六月',\n jul: '七月',\n aug: '八月',\n sep: '九月',\n oct: '十月',\n nov: '十一月',\n dec: '十二月'\n }\n },\n select: {\n loading: '加载中',\n noMatch: '无匹配数据',\n noData: '无数据',\n placeholder: '请选择'\n },\n cascader: {\n noMatch: '无匹配数据',\n loading: '加载中',\n placeholder: '请选择',\n noData: '暂无数据'\n },\n pagination: {\n goto: '前往',\n pagesize: '条/页',\n total: '共 {total} 条',\n pageClassifier: '页'\n },\n messagebox: {\n title: '提示',\n confirm: '确定',\n cancel: '取消',\n error: '输入的数据不合法!'\n },\n upload: {\n deleteTip: '按 delete 键可删除',\n delete: '删除',\n preview: '查看图片',\n continue: '继续上传'\n },\n table: {\n emptyText: '暂无数据',\n confirmFilter: '筛选',\n resetFilter: '重置',\n clearFilter: '全部',\n sumText: '合计'\n },\n tree: {\n emptyText: '暂无数据'\n },\n transfer: {\n noMatch: '无匹配数据',\n noData: '无数据',\n titles: ['列表 1', '列表 2'],\n filterPlaceholder: '请输入搜索内容',\n noCheckedFormat: '共 {total} 项',\n hasCheckedFormat: '已选 {checked}/{total} 项'\n },\n image: {\n error: '加载失败'\n },\n pageHeader: {\n title: '返回'\n },\n popconfirm: {\n confirmButtonText: '确定',\n cancelButtonText: '取消'\n },\n empty: {\n description: '暂无数据'\n }\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbG9jYWxlL2xhbmcvemgtQ04uanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCO0FBQ2xCLGtCQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixPQUFPO0FBQ2xDLDZCQUE2QixRQUFRLEVBQUUsT0FBTztBQUM5QyxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL2xvY2FsZS9sYW5nL3poLUNOLmpzPzg4ZjIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICBlbDoge1xuICAgIGNvbG9ycGlja2VyOiB7XG4gICAgICBjb25maXJtOiAn56Gu5a6aJyxcbiAgICAgIGNsZWFyOiAn5riF56m6J1xuICAgIH0sXG4gICAgZGF0ZXBpY2tlcjoge1xuICAgICAgbm93OiAn5q2k5Yi7JyxcbiAgICAgIHRvZGF5OiAn5LuK5aSpJyxcbiAgICAgIGNhbmNlbDogJ+WPlua2iCcsXG4gICAgICBjbGVhcjogJ+a4heepuicsXG4gICAgICBjb25maXJtOiAn56Gu5a6aJyxcbiAgICAgIHNlbGVjdERhdGU6ICfpgInmi6nml6XmnJ8nLFxuICAgICAgc2VsZWN0VGltZTogJ+mAieaLqeaXtumXtCcsXG4gICAgICBzdGFydERhdGU6ICflvIDlp4vml6XmnJ8nLFxuICAgICAgc3RhcnRUaW1lOiAn5byA5aeL5pe26Ze0JyxcbiAgICAgIGVuZERhdGU6ICfnu5PmnZ/ml6XmnJ8nLFxuICAgICAgZW5kVGltZTogJ+e7k+adn+aXtumXtCcsXG4gICAgICBwcmV2WWVhcjogJ+WJjeS4gOW5tCcsXG4gICAgICBuZXh0WWVhcjogJ+WQjuS4gOW5tCcsXG4gICAgICBwcmV2TW9udGg6ICfkuIrkuKrmnIgnLFxuICAgICAgbmV4dE1vbnRoOiAn5LiL5Liq5pyIJyxcbiAgICAgIHllYXI6ICflubQnLFxuICAgICAgbW9udGgxOiAnMSDmnIgnLFxuICAgICAgbW9udGgyOiAnMiDmnIgnLFxuICAgICAgbW9udGgzOiAnMyDmnIgnLFxuICAgICAgbW9udGg0OiAnNCDmnIgnLFxuICAgICAgbW9udGg1OiAnNSDmnIgnLFxuICAgICAgbW9udGg2OiAnNiDmnIgnLFxuICAgICAgbW9udGg3OiAnNyDmnIgnLFxuICAgICAgbW9udGg4OiAnOCDmnIgnLFxuICAgICAgbW9udGg5OiAnOSDmnIgnLFxuICAgICAgbW9udGgxMDogJzEwIOaciCcsXG4gICAgICBtb250aDExOiAnMTEg5pyIJyxcbiAgICAgIG1vbnRoMTI6ICcxMiDmnIgnLFxuICAgICAgLy8gd2VlazogJ+WRqOasoScsXG4gICAgICB3ZWVrczoge1xuICAgICAgICBzdW46ICfml6UnLFxuICAgICAgICBtb246ICfkuIAnLFxuICAgICAgICB0dWU6ICfkuownLFxuICAgICAgICB3ZWQ6ICfkuIknLFxuICAgICAgICB0aHU6ICflm5snLFxuICAgICAgICBmcmk6ICfkupQnLFxuICAgICAgICBzYXQ6ICflha0nXG4gICAgICB9LFxuICAgICAgbW9udGhzOiB7XG4gICAgICAgIGphbjogJ+S4gOaciCcsXG4gICAgICAgIGZlYjogJ+S6jOaciCcsXG4gICAgICAgIG1hcjogJ+S4ieaciCcsXG4gICAgICAgIGFwcjogJ+Wbm+aciCcsXG4gICAgICAgIG1heTogJ+S6lOaciCcsXG4gICAgICAgIGp1bjogJ+WFreaciCcsXG4gICAgICAgIGp1bDogJ+S4g+aciCcsXG4gICAgICAgIGF1ZzogJ+WFq+aciCcsXG4gICAgICAgIHNlcDogJ+S5neaciCcsXG4gICAgICAgIG9jdDogJ+WNgeaciCcsXG4gICAgICAgIG5vdjogJ+WNgeS4gOaciCcsXG4gICAgICAgIGRlYzogJ+WNgeS6jOaciCdcbiAgICAgIH1cbiAgICB9LFxuICAgIHNlbGVjdDoge1xuICAgICAgbG9hZGluZzogJ+WKoOi9veS4rScsXG4gICAgICBub01hdGNoOiAn5peg5Yy56YWN5pWw5o2uJyxcbiAgICAgIG5vRGF0YTogJ+aXoOaVsOaNricsXG4gICAgICBwbGFjZWhvbGRlcjogJ+ivt+mAieaLqSdcbiAgICB9LFxuICAgIGNhc2NhZGVyOiB7XG4gICAgICBub01hdGNoOiAn5peg5Yy56YWN5pWw5o2uJyxcbiAgICAgIGxvYWRpbmc6ICfliqDovb3kuK0nLFxuICAgICAgcGxhY2Vob2xkZXI6ICfor7fpgInmi6knLFxuICAgICAgbm9EYXRhOiAn5pqC5peg5pWw5o2uJ1xuICAgIH0sXG4gICAgcGFnaW5hdGlvbjoge1xuICAgICAgZ290bzogJ+WJjeW+gCcsXG4gICAgICBwYWdlc2l6ZTogJ+adoS/pobUnLFxuICAgICAgdG90YWw6ICflhbEge3RvdGFsfSDmnaEnLFxuICAgICAgcGFnZUNsYXNzaWZpZXI6ICfpobUnXG4gICAgfSxcbiAgICBtZXNzYWdlYm94OiB7XG4gICAgICB0aXRsZTogJ+aPkOekuicsXG4gICAgICBjb25maXJtOiAn56Gu5a6aJyxcbiAgICAgIGNhbmNlbDogJ+WPlua2iCcsXG4gICAgICBlcnJvcjogJ+i+k+WFpeeahOaVsOaNruS4jeWQiOazlSEnXG4gICAgfSxcbiAgICB1cGxvYWQ6IHtcbiAgICAgIGRlbGV0ZVRpcDogJ+aMiSBkZWxldGUg6ZSu5Y+v5Yig6ZmkJyxcbiAgICAgIGRlbGV0ZTogJ+WIoOmZpCcsXG4gICAgICBwcmV2aWV3OiAn5p+l55yL5Zu+54mHJyxcbiAgICAgIGNvbnRpbnVlOiAn57un57ut5LiK5LygJ1xuICAgIH0sXG4gICAgdGFibGU6IHtcbiAgICAgIGVtcHR5VGV4dDogJ+aaguaXoOaVsOaNricsXG4gICAgICBjb25maXJtRmlsdGVyOiAn562b6YCJJyxcbiAgICAgIHJlc2V0RmlsdGVyOiAn6YeN572uJyxcbiAgICAgIGNsZWFyRmlsdGVyOiAn5YWo6YOoJyxcbiAgICAgIHN1bVRleHQ6ICflkIjorqEnXG4gICAgfSxcbiAgICB0cmVlOiB7XG4gICAgICBlbXB0eVRleHQ6ICfmmoLml6DmlbDmja4nXG4gICAgfSxcbiAgICB0cmFuc2Zlcjoge1xuICAgICAgbm9NYXRjaDogJ+aXoOWMuemFjeaVsOaNricsXG4gICAgICBub0RhdGE6ICfml6DmlbDmja4nLFxuICAgICAgdGl0bGVzOiBbJ+WIl+ihqCAxJywgJ+WIl+ihqCAyJ10sXG4gICAgICBmaWx0ZXJQbGFjZWhvbGRlcjogJ+ivt+i+k+WFpeaQnOe0ouWGheWuuScsXG4gICAgICBub0NoZWNrZWRGb3JtYXQ6ICflhbEge3RvdGFsfSDpobknLFxuICAgICAgaGFzQ2hlY2tlZEZvcm1hdDogJ+W3sumAiSB7Y2hlY2tlZH0ve3RvdGFsfSDpobknXG4gICAgfSxcbiAgICBpbWFnZToge1xuICAgICAgZXJyb3I6ICfliqDovb3lpLHotKUnXG4gICAgfSxcbiAgICBwYWdlSGVhZGVyOiB7XG4gICAgICB0aXRsZTogJ+i/lOWbnidcbiAgICB9LFxuICAgIHBvcGNvbmZpcm06IHtcbiAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJyxcbiAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognXG4gICAgfSxcbiAgICBlbXB0eToge1xuICAgICAgZGVzY3JpcHRpb246ICfmmoLml6DmlbDmja4nXG4gICAgfVxuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/locale/lang/zh-CN.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/mixins/emitter.js":
/*!*******************************************************!*\
!*** ./node_modules/element-ui/lib/mixins/emitter.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("\n\nexports.__esModule = true;\nfunction _broadcast(componentName, eventName, params) {\n this.$children.forEach(function (child) {\n var name = child.$options.componentName;\n\n if (name === componentName) {\n child.$emit.apply(child, [eventName].concat(params));\n } else {\n _broadcast.apply(child, [componentName, eventName].concat([params]));\n }\n });\n}\nexports[\"default\"] = {\n methods: {\n dispatch: function dispatch(componentName, eventName, params) {\n var parent = this.$parent || this.$root;\n var name = parent.$options.componentName;\n\n while (parent && (!name || name !== componentName)) {\n parent = parent.$parent;\n\n if (parent) {\n name = parent.$options.componentName;\n }\n }\n if (parent) {\n parent.$emit.apply(parent, [eventName].concat(params));\n }\n },\n broadcast: function broadcast(componentName, eventName, params) {\n _broadcast.call(this, componentName, eventName, params);\n }\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbWl4aW5zL2VtaXR0ZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxrQkFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi9taXhpbnMvZW1pdHRlci5qcz9iMTgyIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZnVuY3Rpb24gX2Jyb2FkY2FzdChjb21wb25lbnROYW1lLCBldmVudE5hbWUsIHBhcmFtcykge1xuICB0aGlzLiRjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHZhciBuYW1lID0gY2hpbGQuJG9wdGlvbnMuY29tcG9uZW50TmFtZTtcblxuICAgIGlmIChuYW1lID09PSBjb21wb25lbnROYW1lKSB7XG4gICAgICBjaGlsZC4kZW1pdC5hcHBseShjaGlsZCwgW2V2ZW50TmFtZV0uY29uY2F0KHBhcmFtcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBfYnJvYWRjYXN0LmFwcGx5KGNoaWxkLCBbY29tcG9uZW50TmFtZSwgZXZlbnROYW1lXS5jb25jYXQoW3BhcmFtc10pKTtcbiAgICB9XG4gIH0pO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICBtZXRob2RzOiB7XG4gICAgZGlzcGF0Y2g6IGZ1bmN0aW9uIGRpc3BhdGNoKGNvbXBvbmVudE5hbWUsIGV2ZW50TmFtZSwgcGFyYW1zKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50IHx8IHRoaXMuJHJvb3Q7XG4gICAgICB2YXIgbmFtZSA9IHBhcmVudC4kb3B0aW9ucy5jb21wb25lbnROYW1lO1xuXG4gICAgICB3aGlsZSAocGFyZW50ICYmICghbmFtZSB8fCBuYW1lICE9PSBjb21wb25lbnROYW1lKSkge1xuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcblxuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgbmFtZSA9IHBhcmVudC4kb3B0aW9ucy5jb21wb25lbnROYW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHBhcmVudC4kZW1pdC5hcHBseShwYXJlbnQsIFtldmVudE5hbWVdLmNvbmNhdChwYXJhbXMpKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJyb2FkY2FzdDogZnVuY3Rpb24gYnJvYWRjYXN0KGNvbXBvbmVudE5hbWUsIGV2ZW50TmFtZSwgcGFyYW1zKSB7XG4gICAgICBfYnJvYWRjYXN0LmNhbGwodGhpcywgY29tcG9uZW50TmFtZSwgZXZlbnROYW1lLCBwYXJhbXMpO1xuICAgIH1cbiAgfVxufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/mixins/emitter.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/mixins/focus.js":
/*!*****************************************************!*\
!*** ./node_modules/element-ui/lib/mixins/focus.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nexports[\"default\"] = function (ref) {\n return {\n methods: {\n focus: function focus() {\n this.$refs[ref].focus();\n }\n }\n };\n};\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbWl4aW5zL2ZvY3VzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQjs7QUFFbEIsa0JBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL21peGlucy9mb2N1cy5qcz9kNTY0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAocmVmKSB7XG4gIHJldHVybiB7XG4gICAgbWV0aG9kczoge1xuICAgICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgICB0aGlzLiRyZWZzW3JlZl0uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG47Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/mixins/focus.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/mixins/locale.js":
/*!******************************************************!*\
!*** ./node_modules/element-ui/lib/mixins/locale.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _locale = __webpack_require__(/*! element-ui/lib/locale */ \"./node_modules/element-ui/lib/locale/index.js\");\n\nexports[\"default\"] = {\n methods: {\n t: function t() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _locale.t.apply(this, args);\n }\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbWl4aW5zL2xvY2FsZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7O0FBRWxCLGNBQWMsbUJBQU8sQ0FBQyw0RUFBdUI7O0FBRTdDLGtCQUFlO0FBQ2Y7QUFDQTtBQUNBLHNFQUFzRSxhQUFhO0FBQ25GO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbWl4aW5zL2xvY2FsZS5qcz8xODE3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9sb2NhbGUgPSByZXF1aXJlKCdlbGVtZW50LXVpL2xpYi9sb2NhbGUnKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICBtZXRob2RzOiB7XG4gICAgdDogZnVuY3Rpb24gdCgpIHtcbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfbG9jYWxlLnQuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/mixins/locale.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/mixins/migrating.js":
/*!*********************************************************!*\
!*** ./node_modules/element-ui/lib/mixins/migrating.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _util = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\n/**\n * Show migrating guide in browser console.\n *\n * Usage:\n * import Migrating from 'element-ui/src/mixins/migrating';\n *\n * mixins: [Migrating]\n *\n * add getMigratingConfig method for your component.\n * getMigratingConfig() {\n * return {\n * props: {\n * 'allow-no-selection': 'allow-no-selection is removed.',\n * 'selection-mode': 'selection-mode is removed.'\n * },\n * events: {\n * selectionchange: 'selectionchange is renamed to selection-change.'\n * }\n * };\n * },\n */\nexports[\"default\"] = {\n mounted: function mounted() {\n if (false) {}\n if (!this.$vnode) return;\n\n var _getMigratingConfig = this.getMigratingConfig(),\n _getMigratingConfig$p = _getMigratingConfig.props,\n props = _getMigratingConfig$p === undefined ? {} : _getMigratingConfig$p,\n _getMigratingConfig$e = _getMigratingConfig.events,\n events = _getMigratingConfig$e === undefined ? {} : _getMigratingConfig$e;\n\n var _$vnode = this.$vnode,\n data = _$vnode.data,\n componentOptions = _$vnode.componentOptions;\n\n var definedProps = data.attrs || {};\n var definedEvents = componentOptions.listeners || {};\n\n for (var propName in definedProps) {\n propName = (0, _util.kebabCase)(propName); // compatible with camel case\n if (props[propName]) {\n console.warn('[Element Migrating][' + this.$options.name + '][Attribute]: ' + props[propName]);\n }\n }\n\n for (var eventName in definedEvents) {\n eventName = (0, _util.kebabCase)(eventName); // compatible with camel case\n if (events[eventName]) {\n console.warn('[Element Migrating][' + this.$options.name + '][Event]: ' + events[eventName]);\n }\n }\n },\n\n methods: {\n getMigratingConfig: function getMigratingConfig() {\n return {\n props: {},\n events: {}\n };\n }\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvbWl4aW5zL21pZ3JhdGluZy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7O0FBRWxCLFlBQVksbUJBQU8sQ0FBQyw4RUFBMkI7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrQkFBZTtBQUNmO0FBQ0EsUUFBUSxLQUFxQyxFQUFFLEVBQU87QUFDdEQ7O0FBRUE7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBLDBEQUEwRDs7QUFFMUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL21peGlucy9taWdyYXRpbmcuanM/NGJmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJ2VsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWwnKTtcblxuLyoqXG4gKiBTaG93IG1pZ3JhdGluZyBndWlkZSBpbiBicm93c2VyIGNvbnNvbGUuXG4gKlxuICogVXNhZ2U6XG4gKiBpbXBvcnQgTWlncmF0aW5nIGZyb20gJ2VsZW1lbnQtdWkvc3JjL21peGlucy9taWdyYXRpbmcnO1xuICpcbiAqIG1peGluczogW01pZ3JhdGluZ11cbiAqXG4gKiBhZGQgZ2V0TWlncmF0aW5nQ29uZmlnIG1ldGhvZCBmb3IgeW91ciBjb21wb25lbnQuXG4gKiAgZ2V0TWlncmF0aW5nQ29uZmlnKCkge1xuICogICAgcmV0dXJuIHtcbiAqICAgICAgcHJvcHM6IHtcbiAqICAgICAgICAnYWxsb3ctbm8tc2VsZWN0aW9uJzogJ2FsbG93LW5vLXNlbGVjdGlvbiBpcyByZW1vdmVkLicsXG4gKiAgICAgICAgJ3NlbGVjdGlvbi1tb2RlJzogJ3NlbGVjdGlvbi1tb2RlIGlzIHJlbW92ZWQuJ1xuICogICAgICB9LFxuICogICAgICBldmVudHM6IHtcbiAqICAgICAgICBzZWxlY3Rpb25jaGFuZ2U6ICdzZWxlY3Rpb25jaGFuZ2UgaXMgcmVuYW1lZCB0byBzZWxlY3Rpb24tY2hhbmdlLidcbiAqICAgICAgfVxuICogICAgfTtcbiAqICB9LFxuICovXG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuJHZub2RlKSByZXR1cm47XG5cbiAgICB2YXIgX2dldE1pZ3JhdGluZ0NvbmZpZyA9IHRoaXMuZ2V0TWlncmF0aW5nQ29uZmlnKCksXG4gICAgICAgIF9nZXRNaWdyYXRpbmdDb25maWckcCA9IF9nZXRNaWdyYXRpbmdDb25maWcucHJvcHMsXG4gICAgICAgIHByb3BzID0gX2dldE1pZ3JhdGluZ0NvbmZpZyRwID09PSB1bmRlZmluZWQgPyB7fSA6IF9nZXRNaWdyYXRpbmdDb25maWckcCxcbiAgICAgICAgX2dldE1pZ3JhdGluZ0NvbmZpZyRlID0gX2dldE1pZ3JhdGluZ0NvbmZpZy5ldmVudHMsXG4gICAgICAgIGV2ZW50cyA9IF9nZXRNaWdyYXRpbmdDb25maWckZSA9PT0gdW5kZWZpbmVkID8ge30gOiBfZ2V0TWlncmF0aW5nQ29uZmlnJGU7XG5cbiAgICB2YXIgXyR2bm9kZSA9IHRoaXMuJHZub2RlLFxuICAgICAgICBkYXRhID0gXyR2bm9kZS5kYXRhLFxuICAgICAgICBjb21wb25lbnRPcHRpb25zID0gXyR2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuXG4gICAgdmFyIGRlZmluZWRQcm9wcyA9IGRhdGEuYXR0cnMgfHwge307XG4gICAgdmFyIGRlZmluZWRFdmVudHMgPSBjb21wb25lbnRPcHRpb25zLmxpc3RlbmVycyB8fCB7fTtcblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIGRlZmluZWRQcm9wcykge1xuICAgICAgcHJvcE5hbWUgPSAoMCwgX3V0aWwua2ViYWJDYXNlKShwcm9wTmFtZSk7IC8vIGNvbXBhdGlibGUgd2l0aCBjYW1lbCBjYXNlXG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW0VsZW1lbnQgTWlncmF0aW5nXVsnICsgdGhpcy4kb3B0aW9ucy5uYW1lICsgJ11bQXR0cmlidXRlXTogJyArIHByb3BzW3Byb3BOYW1lXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgZXZlbnROYW1lIGluIGRlZmluZWRFdmVudHMpIHtcbiAgICAgIGV2ZW50TmFtZSA9ICgwLCBfdXRpbC5rZWJhYkNhc2UpKGV2ZW50TmFtZSk7IC8vIGNvbXBhdGlibGUgd2l0aCBjYW1lbCBjYXNlXG4gICAgICBpZiAoZXZlbnRzW2V2ZW50TmFtZV0pIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbRWxlbWVudCBNaWdyYXRpbmddWycgKyB0aGlzLiRvcHRpb25zLm5hbWUgKyAnXVtFdmVudF06ICcgKyBldmVudHNbZXZlbnROYW1lXSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRNaWdyYXRpbmdDb25maWc6IGZ1bmN0aW9uIGdldE1pZ3JhdGluZ0NvbmZpZygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3BzOiB7fSxcbiAgICAgICAgZXZlbnRzOiB7fVxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/mixins/migrating.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/option.js":
/*!***********************************************!*\
!*** ./node_modules/element-ui/lib/option.js ***!
\***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 54);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\n/***/ }),\n\n/***/ 33:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_6687__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=template&id=7a44c642&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-select-dropdown__item\",\n class: {\n selected: _vm.itemSelected,\n \"is-disabled\": _vm.disabled || _vm.groupDisabled || _vm.limitReached,\n hover: _vm.hover\n },\n on: {\n mouseenter: _vm.hoverItem,\n click: function($event) {\n $event.stopPropagation()\n return _vm.selectOptionClick($event)\n }\n }\n },\n [_vm._t(\"default\", [_c(\"span\", [_vm._v(_vm._s(_vm.currentLabel))])])],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=template&id=7a44c642&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __nested_webpack_require_6687__(4);\nvar emitter_default = /*#__PURE__*/__nested_webpack_require_6687__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __nested_webpack_require_6687__(3);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=script&lang=js&\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var optionvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a],\n\n name: 'ElOption',\n\n componentName: 'ElOption',\n\n inject: ['select'],\n\n props: {\n value: {\n required: true\n },\n label: [String, Number],\n created: Boolean,\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n index: -1,\n groupDisabled: false,\n visible: true,\n hitState: false,\n hover: false\n };\n },\n\n\n computed: {\n isObject: function isObject() {\n return Object.prototype.toString.call(this.value).toLowerCase() === '[object object]';\n },\n currentLabel: function currentLabel() {\n return this.label || (this.isObject ? '' : this.value);\n },\n currentValue: function currentValue() {\n return this.value || this.label || '';\n },\n itemSelected: function itemSelected() {\n if (!this.select.multiple) {\n return this.isEqual(this.value, this.select.value);\n } else {\n return this.contains(this.select.value, this.value);\n }\n },\n limitReached: function limitReached() {\n if (this.select.multiple) {\n return !this.itemSelected && (this.select.value || []).length >= this.select.multipleLimit && this.select.multipleLimit > 0;\n } else {\n return false;\n }\n }\n },\n\n watch: {\n currentLabel: function currentLabel() {\n if (!this.created && !this.select.remote) this.dispatch('ElSelect', 'setSelected');\n },\n value: function value(val, oldVal) {\n var _select = this.select,\n remote = _select.remote,\n valueKey = _select.valueKey;\n\n if (!this.created && !remote) {\n if (valueKey && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && (typeof oldVal === 'undefined' ? 'undefined' : _typeof(oldVal)) === 'object' && val[valueKey] === oldVal[valueKey]) {\n return;\n }\n this.dispatch('ElSelect', 'setSelected');\n }\n }\n },\n\n methods: {\n isEqual: function isEqual(a, b) {\n if (!this.isObject) {\n return a === b;\n } else {\n var valueKey = this.select.valueKey;\n return Object(util_[\"getValueByPath\"])(a, valueKey) === Object(util_[\"getValueByPath\"])(b, valueKey);\n }\n },\n contains: function contains() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var target = arguments[1];\n\n if (!this.isObject) {\n return arr && arr.indexOf(target) > -1;\n } else {\n var valueKey = this.select.valueKey;\n return arr && arr.some(function (item) {\n return Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(target, valueKey);\n });\n }\n },\n handleGroupDisabled: function handleGroupDisabled(val) {\n this.groupDisabled = val;\n },\n hoverItem: function hoverItem() {\n if (!this.disabled && !this.groupDisabled) {\n this.select.hoverIndex = this.select.options.indexOf(this);\n }\n },\n selectOptionClick: function selectOptionClick() {\n if (this.disabled !== true && this.groupDisabled !== true) {\n this.dispatch('ElSelect', 'handleOptionClick', [this, true]);\n }\n },\n queryChange: function queryChange(query) {\n this.visible = new RegExp(Object(util_[\"escapeRegexpString\"])(query), 'i').test(this.currentLabel) || this.created;\n if (!this.visible) {\n this.select.filteredOptionsCount--;\n }\n }\n },\n\n created: function created() {\n this.select.options.push(this);\n this.select.cachedOptions.push(this);\n this.select.optionsCount++;\n this.select.filteredOptionsCount++;\n\n this.$on('queryChange', this.queryChange);\n this.$on('handleGroupDisabled', this.handleGroupDisabled);\n },\n beforeDestroy: function beforeDestroy() {\n var _select2 = this.select,\n selected = _select2.selected,\n multiple = _select2.multiple;\n\n var selectedOptions = multiple ? selected : [selected];\n var index = this.select.cachedOptions.indexOf(this);\n var selectedIndex = selectedOptions.indexOf(this);\n\n // if option is not selected, remove it from cache\n if (index > -1 && selectedIndex < 0) {\n this.select.cachedOptions.splice(index, 1);\n }\n this.select.onOptionDestroy(this.select.options.indexOf(this));\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_optionvue_type_script_lang_js_ = (optionvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_6687__(0);\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_optionvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/select/src/option.vue\"\n/* harmony default export */ var src_option = __nested_webpack_exports__[\"a\"] = (component.exports);\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/emitter */ \"./node_modules/element-ui/lib/mixins/emitter.js\");\n\n/***/ }),\n\n/***/ 54:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_13963__) {\n\n\"use strict\";\n__nested_webpack_require_13963__.r(__nested_webpack_exports__);\n/* harmony import */ var _select_src_option__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_13963__(33);\n\n\n/* istanbul ignore next */\n_select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].install = function (Vue) {\n Vue.component(_select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].name, _select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"]);\n};\n\n/* harmony default export */ __nested_webpack_exports__[\"default\"] = (_select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"]);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvb3B0aW9uLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDhCQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSw4QkFBbUI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGVBQWUsOEJBQW1CO0FBQ2xDLG1EQUFtRCwrQkFBK0I7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLGlFQUFpRSxpQkFBaUI7QUFDbEY7QUFDQSwwREFBMEQsYUFBYTtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGdDQUFnQyw4QkFBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4QkFBbUI7QUFDOUIsa0RBQWtELGdDQUFnQztBQUNsRiwwRUFBMEUsOEJBQW1CLDRCQUE0QixvQkFBb0I7QUFDN0k7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLG9DQUFvQyw0QkFBNEI7QUFDaEUsMENBQTBDO0FBQzFDLFdBQVcsOEJBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUIsa0NBQWtDO0FBQy9EO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOEJBQW1CLENBQUMsOEJBQW1CO0FBQ3hELFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLDBCQUFtQixFQUFFLCtCQUFtQjs7QUFFaEU7QUFDQSwrQkFBK0IsK0JBQW1CLEdBQUcsMEJBQW1CLG9CQUFvQiw0QkFBNEI7QUFDeEg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUEsaUJBQWlCLG1CQUFPLENBQUMsOEVBQTJCOztBQUVwRCxPQUFPOztBQUVQO0FBQ0Esd0JBQXdCLDBCQUFtQixFQUFFLCtCQUFtQjs7QUFFaEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQSxlQUFlLCtCQUFtQjtBQUNsQyxtQ0FBbUMsK0JBQW1COztBQUV0RDtBQUNBLFlBQVksK0JBQW1COztBQUUvQjtBQUNBLHFHQUFxRyxxQkFBcUIsbUJBQW1COztBQUU3STtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsK0JBQW1COztBQUU3Qzs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxZQUFZO0FBQ3ZCO0FBQ0EsOENBQThDLDBCQUFtQjs7QUFFakUsT0FBTzs7QUFFUDtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLHNGQUErQjs7QUFFeEQsT0FBTzs7QUFFUDtBQUNBLHdCQUF3QiwwQkFBbUIsRUFBRSxnQ0FBbUI7O0FBRWhFO0FBQ0EsZ0NBQW1CLEdBQUcsMEJBQW1CO0FBQ3pDLDJFQUEyRSxnQ0FBbUI7OztBQUc5RjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkIsMEJBQW1COztBQUVoRCxPQUFPOztBQUVQLFVBQVUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvb3B0aW9uLmpzPzAxOGMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9kaXN0L1wiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA1NCk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICh7XG5cbi8qKiovIDA6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBub3JtYWxpemVDb21wb25lbnQ7IH0pO1xuLyogZ2xvYmFscyBfX1ZVRV9TU1JfQ09OVEVYVF9fICovXG5cbi8vIElNUE9SVEFOVDogRG8gTk9UIHVzZSBFUzIwMTUgZmVhdHVyZXMgaW4gdGhpcyBmaWxlIChleGNlcHQgZm9yIG1vZHVsZXMpLlxuLy8gVGhpcyBtb2R1bGUgaXMgYSBydW50aW1lIHV0aWxpdHkgZm9yIGNsZWFuZXIgY29tcG9uZW50IG1vZHVsZSBvdXRwdXQgYW5kIHdpbGxcbi8vIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCB3ZWJwYWNrIHVzZXIgYnVuZGxlLlxuXG5mdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICBzY3JpcHRFeHBvcnRzLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZnVuY3Rpb25hbFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIsIC8qIHNlcnZlciBvbmx5ICovXG4gIHNoYWRvd01vZGUgLyogdnVlLWNsaSBvbmx5ICovXG4pIHtcbiAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnNcbiAgICA6IHNjcmlwdEV4cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChyZW5kZXIpIHtcbiAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zXG4gICAgb3B0aW9ucy5fY29tcGlsZWQgPSB0cnVlXG4gIH1cblxuICAvLyBmdW5jdGlvbmFsIHRlbXBsYXRlXG4gIGlmIChmdW5jdGlvbmFsVGVtcGxhdGUpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uYWwgPSB0cnVlXG4gIH1cblxuICAvLyBzY29wZWRJZFxuICBpZiAoc2NvcGVJZCkge1xuICAgIG9wdGlvbnMuX3Njb3BlSWQgPSAnZGF0YS12LScgKyBzY29wZUlkXG4gIH1cblxuICB2YXIgaG9va1xuICBpZiAobW9kdWxlSWRlbnRpZmllcikgeyAvLyBzZXJ2ZXIgYnVpbGRcbiAgICBob29rID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIC8vIDIuMyBpbmplY3Rpb25cbiAgICAgIGNvbnRleHQgPVxuICAgICAgICBjb250ZXh0IHx8IC8vIGNhY2hlZCBjYWxsXG4gICAgICAgICh0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0KSB8fCAvLyBzdGF0ZWZ1bFxuICAgICAgICAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuJHZub2RlICYmIHRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0KSAvLyBmdW5jdGlvbmFsXG4gICAgICAvLyAyLjIgd2l0aCBydW5Jbk5ld0NvbnRleHQ6IHRydWVcbiAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX19cbiAgICAgIH1cbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgc3R5bGVzXG4gICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIGNvbnRleHQpXG4gICAgICB9XG4gICAgICAvLyByZWdpc3RlciBjb21wb25lbnQgbW9kdWxlIGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVycmVuY2VcbiAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7XG4gICAgICAgIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVyKVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZVxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXG4gICAgb3B0aW9ucy5fc3NyUmVnaXN0ZXIgPSBob29rXG4gIH0gZWxzZSBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgaG9vayA9IHNoYWRvd01vZGVcbiAgICAgID8gZnVuY3Rpb24gKCkgeyBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCB0aGlzLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3QpIH1cbiAgICAgIDogaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIGZvciB0ZW1wbGF0ZS1vbmx5IGhvdC1yZWxvYWQgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHJlbmRlciBmbiBkb2Vzbid0XG4gICAgICAvLyBnbyB0aHJvdWdoIHRoZSBub3JtYWxpemVyXG4gICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rXG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb2FsIGNvbXBvbmVudCBpbiB2dWUgZmlsZVxuICAgICAgdmFyIG9yaWdpbmFsUmVuZGVyID0gb3B0aW9ucy5yZW5kZXJcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uIChoLCBjb250ZXh0KSB7XG4gICAgICAgIGhvb2suY2FsbChjb250ZXh0KVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZW5kZXIoaCwgY29udGV4dClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIHZhciBleGlzdGluZyA9IG9wdGlvbnMuYmVmb3JlQ3JlYXRlXG4gICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nXG4gICAgICAgID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKVxuICAgICAgICA6IFtob29rXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gMzpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvdXRpbFwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDMzOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E0NGM2NDImXG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwibGlcIixcbiAgICB7XG4gICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgIHZhbHVlOiBfdm0udmlzaWJsZSxcbiAgICAgICAgICBleHByZXNzaW9uOiBcInZpc2libGVcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc2VsZWN0LWRyb3Bkb3duX19pdGVtXCIsXG4gICAgICBjbGFzczoge1xuICAgICAgICBzZWxlY3RlZDogX3ZtLml0ZW1TZWxlY3RlZCxcbiAgICAgICAgXCJpcy1kaXNhYmxlZFwiOiBfdm0uZGlzYWJsZWQgfHwgX3ZtLmdyb3VwRGlzYWJsZWQgfHwgX3ZtLmxpbWl0UmVhY2hlZCxcbiAgICAgICAgaG92ZXI6IF92bS5ob3ZlclxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIG1vdXNlZW50ZXI6IF92bS5ob3Zlckl0ZW0sXG4gICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICByZXR1cm4gX3ZtLnNlbGVjdE9wdGlvbkNsaWNrKCRldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW192bS5fdChcImRlZmF1bHRcIiwgW19jKFwic3BhblwiLCBbX3ZtLl92KF92bS5fcyhfdm0uY3VycmVudExhYmVsKSldKV0pXSxcbiAgICAyXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E0NGM2NDImXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9taXhpbnMvZW1pdHRlclwiXG52YXIgZW1pdHRlcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIGVtaXR0ZXJfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZW1pdHRlcl8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvdXRpbFwiXG52YXIgdXRpbF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBvcHRpb252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sXG5cbiAgbmFtZTogJ0VsT3B0aW9uJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxPcHRpb24nLFxuXG4gIGluamVjdDogWydzZWxlY3QnXSxcblxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgbGFiZWw6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgY3JlYXRlZDogQm9vbGVhbixcbiAgICBkaXNhYmxlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiAtMSxcbiAgICAgIGdyb3VwRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgIGhpdFN0YXRlOiBmYWxzZSxcbiAgICAgIGhvdmVyOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGlzT2JqZWN0OiBmdW5jdGlvbiBpc09iamVjdCgpIHtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcy52YWx1ZSkudG9Mb3dlckNhc2UoKSA9PT0gJ1tvYmplY3Qgb2JqZWN0XSc7XG4gICAgfSxcbiAgICBjdXJyZW50TGFiZWw6IGZ1bmN0aW9uIGN1cnJlbnRMYWJlbCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhYmVsIHx8ICh0aGlzLmlzT2JqZWN0ID8gJycgOiB0aGlzLnZhbHVlKTtcbiAgICB9LFxuICAgIGN1cnJlbnRWYWx1ZTogZnVuY3Rpb24gY3VycmVudFZhbHVlKCkge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgdGhpcy5sYWJlbCB8fCAnJztcbiAgICB9LFxuICAgIGl0ZW1TZWxlY3RlZDogZnVuY3Rpb24gaXRlbVNlbGVjdGVkKCkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdC5tdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VxdWFsKHRoaXMudmFsdWUsIHRoaXMuc2VsZWN0LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zKHRoaXMuc2VsZWN0LnZhbHVlLCB0aGlzLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpbWl0UmVhY2hlZDogZnVuY3Rpb24gbGltaXRSZWFjaGVkKCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0Lm11bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pdGVtU2VsZWN0ZWQgJiYgKHRoaXMuc2VsZWN0LnZhbHVlIHx8IFtdKS5sZW5ndGggPj0gdGhpcy5zZWxlY3QubXVsdGlwbGVMaW1pdCAmJiB0aGlzLnNlbGVjdC5tdWx0aXBsZUxpbWl0ID4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICBjdXJyZW50TGFiZWw6IGZ1bmN0aW9uIGN1cnJlbnRMYWJlbCgpIHtcbiAgICAgIGlmICghdGhpcy5jcmVhdGVkICYmICF0aGlzLnNlbGVjdC5yZW1vdGUpIHRoaXMuZGlzcGF0Y2goJ0VsU2VsZWN0JywgJ3NldFNlbGVjdGVkJyk7XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsLCBvbGRWYWwpIHtcbiAgICAgIHZhciBfc2VsZWN0ID0gdGhpcy5zZWxlY3QsXG4gICAgICAgICAgcmVtb3RlID0gX3NlbGVjdC5yZW1vdGUsXG4gICAgICAgICAgdmFsdWVLZXkgPSBfc2VsZWN0LnZhbHVlS2V5O1xuXG4gICAgICBpZiAoIXRoaXMuY3JlYXRlZCAmJiAhcmVtb3RlKSB7XG4gICAgICAgIGlmICh2YWx1ZUtleSAmJiAodHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodmFsKSkgPT09ICdvYmplY3QnICYmICh0eXBlb2Ygb2xkVmFsID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvbGRWYWwpKSA9PT0gJ29iamVjdCcgJiYgdmFsW3ZhbHVlS2V5XSA9PT0gb2xkVmFsW3ZhbHVlS2V5XSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BhdGNoKCdFbFNlbGVjdCcsICdzZXRTZWxlY3RlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaXNFcXVhbDogZnVuY3Rpb24gaXNFcXVhbChhLCBiKSB7XG4gICAgICBpZiAoIXRoaXMuaXNPYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdmFsdWVLZXkgPSB0aGlzLnNlbGVjdC52YWx1ZUtleTtcbiAgICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKShhLCB2YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKShiLCB2YWx1ZUtleSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjb250YWluczogZnVuY3Rpb24gY29udGFpbnMoKSB7XG4gICAgICB2YXIgYXJyID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTtcbiAgICAgIHZhciB0YXJnZXQgPSBhcmd1bWVudHNbMV07XG5cbiAgICAgIGlmICghdGhpcy5pc09iamVjdCkge1xuICAgICAgICByZXR1cm4gYXJyICYmIGFyci5pbmRleE9mKHRhcmdldCkgPiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB2YWx1ZUtleSA9IHRoaXMuc2VsZWN0LnZhbHVlS2V5O1xuICAgICAgICByZXR1cm4gYXJyICYmIGFyci5zb21lKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKShpdGVtLCB2YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKSh0YXJnZXQsIHZhbHVlS2V5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVHcm91cERpc2FibGVkOiBmdW5jdGlvbiBoYW5kbGVHcm91cERpc2FibGVkKHZhbCkge1xuICAgICAgdGhpcy5ncm91cERpc2FibGVkID0gdmFsO1xuICAgIH0sXG4gICAgaG92ZXJJdGVtOiBmdW5jdGlvbiBob3Zlckl0ZW0oKSB7XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZ3JvdXBEaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdC5ob3ZlckluZGV4ID0gdGhpcy5zZWxlY3Qub3B0aW9ucy5pbmRleE9mKHRoaXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0T3B0aW9uQ2xpY2s6IGZ1bmN0aW9uIHNlbGVjdE9wdGlvbkNsaWNrKCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgIT09IHRydWUgJiYgdGhpcy5ncm91cERpc2FibGVkICE9PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsU2VsZWN0JywgJ2hhbmRsZU9wdGlvbkNsaWNrJywgW3RoaXMsIHRydWVdKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHF1ZXJ5Q2hhbmdlOiBmdW5jdGlvbiBxdWVyeUNoYW5nZShxdWVyeSkge1xuICAgICAgdGhpcy52aXNpYmxlID0gbmV3IFJlZ0V4cChPYmplY3QodXRpbF9bXCJlc2NhcGVSZWdleHBTdHJpbmdcIl0pKHF1ZXJ5KSwgJ2knKS50ZXN0KHRoaXMuY3VycmVudExhYmVsKSB8fCB0aGlzLmNyZWF0ZWQ7XG4gICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLnNlbGVjdC5maWx0ZXJlZE9wdGlvbnNDb3VudC0tO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMuc2VsZWN0Lm9wdGlvbnMucHVzaCh0aGlzKTtcbiAgICB0aGlzLnNlbGVjdC5jYWNoZWRPcHRpb25zLnB1c2godGhpcyk7XG4gICAgdGhpcy5zZWxlY3Qub3B0aW9uc0NvdW50Kys7XG4gICAgdGhpcy5zZWxlY3QuZmlsdGVyZWRPcHRpb25zQ291bnQrKztcblxuICAgIHRoaXMuJG9uKCdxdWVyeUNoYW5nZScsIHRoaXMucXVlcnlDaGFuZ2UpO1xuICAgIHRoaXMuJG9uKCdoYW5kbGVHcm91cERpc2FibGVkJywgdGhpcy5oYW5kbGVHcm91cERpc2FibGVkKTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB2YXIgX3NlbGVjdDIgPSB0aGlzLnNlbGVjdCxcbiAgICAgICAgc2VsZWN0ZWQgPSBfc2VsZWN0Mi5zZWxlY3RlZCxcbiAgICAgICAgbXVsdGlwbGUgPSBfc2VsZWN0Mi5tdWx0aXBsZTtcblxuICAgIHZhciBzZWxlY3RlZE9wdGlvbnMgPSBtdWx0aXBsZSA/IHNlbGVjdGVkIDogW3NlbGVjdGVkXTtcbiAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdC5jYWNoZWRPcHRpb25zLmluZGV4T2YodGhpcyk7XG4gICAgdmFyIHNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZE9wdGlvbnMuaW5kZXhPZih0aGlzKTtcblxuICAgIC8vIGlmIG9wdGlvbiBpcyBub3Qgc2VsZWN0ZWQsIHJlbW92ZSBpdCBmcm9tIGNhY2hlXG4gICAgaWYgKGluZGV4ID4gLTEgJiYgc2VsZWN0ZWRJbmRleCA8IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0LmNhY2hlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Qub25PcHRpb25EZXN0cm95KHRoaXMuc2VsZWN0Lm9wdGlvbnMuaW5kZXhPZih0aGlzKSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX29wdGlvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChvcHRpb252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXG52YXIgY29tcG9uZW50Tm9ybWFsaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY29tcG9uZW50ID0gT2JqZWN0KGNvbXBvbmVudE5vcm1hbGl6ZXJbXCJhXCIgLyogZGVmYXVsdCAqL10pKFxuICBzcmNfb3B0aW9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgYXBpOyB9XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3NlbGVjdC9zcmMvb3B0aW9uLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfb3B0aW9uID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoY29tcG9uZW50LmV4cG9ydHMpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gNDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2VtaXR0ZXJcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyA1NDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3NlbGVjdF9zcmNfb3B0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKTtcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuX3NlbGVjdF9zcmNfb3B0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bLyogZGVmYXVsdCAqLyBcImFcIl0uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChfc2VsZWN0X3NyY19vcHRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1svKiBkZWZhdWx0ICovIFwiYVwiXS5uYW1lLCBfc2VsZWN0X3NyY19vcHRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1svKiBkZWZhdWx0ICovIFwiYVwiXSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKF9zZWxlY3Rfc3JjX29wdGlvbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fWy8qIGRlZmF1bHQgKi8gXCJhXCJdKTtcblxuLyoqKi8gfSlcblxuLyoqKioqKi8gfSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/option.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/popover.js":
/*!************************************************!*\
!*** ./node_modules/element-ui/lib/popover.js ***!
\************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 78);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/dom */ \"./node_modules/element-ui/lib/utils/dom.js\");\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/vue-popper */ \"./node_modules/element-ui/lib/utils/vue-popper.js\");\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\n/***/ }),\n\n/***/ 78:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_7006__) {\n\n\"use strict\";\n__nested_webpack_require_7006__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/popover/src/main.vue?vue&type=template&id=52060272&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"span\",\n [\n _c(\n \"transition\",\n {\n attrs: { name: _vm.transition },\n on: {\n \"after-enter\": _vm.handleAfterEnter,\n \"after-leave\": _vm.handleAfterLeave\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.disabled && _vm.showPopper,\n expression: \"!disabled && showPopper\"\n }\n ],\n ref: \"popper\",\n staticClass: \"el-popover el-popper\",\n class: [_vm.popperClass, _vm.content && \"el-popover--plain\"],\n style: { width: _vm.width + \"px\" },\n attrs: {\n role: \"tooltip\",\n id: _vm.tooltipId,\n \"aria-hidden\":\n _vm.disabled || !_vm.showPopper ? \"true\" : \"false\"\n }\n },\n [\n _vm.title\n ? _c(\"div\", {\n staticClass: \"el-popover__title\",\n domProps: { textContent: _vm._s(_vm.title) }\n })\n : _vm._e(),\n _vm._t(\"default\", [_vm._v(_vm._s(_vm.content))])\n ],\n 2\n )\n ]\n ),\n _c(\n \"span\",\n { ref: \"wrapper\", staticClass: \"el-popover__reference-wrapper\" },\n [_vm._t(\"reference\")],\n 2\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/popover/src/main.vue?vue&type=template&id=52060272&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vue-popper\"\nvar vue_popper_ = __nested_webpack_require_7006__(5);\nvar vue_popper_default = /*#__PURE__*/__nested_webpack_require_7006__.n(vue_popper_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/dom\"\nvar dom_ = __nested_webpack_require_7006__(2);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __nested_webpack_require_7006__(3);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/popover/src/main.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ var mainvue_type_script_lang_js_ = ({\n name: 'ElPopover',\n\n mixins: [vue_popper_default.a],\n\n props: {\n trigger: {\n type: String,\n default: 'click',\n validator: function validator(value) {\n return ['click', 'focus', 'hover', 'manual'].indexOf(value) > -1;\n }\n },\n openDelay: {\n type: Number,\n default: 0\n },\n closeDelay: {\n type: Number,\n default: 200\n },\n title: String,\n disabled: Boolean,\n content: String,\n reference: {},\n popperClass: String,\n width: {},\n visibleArrow: {\n default: true\n },\n arrowOffset: {\n type: Number,\n default: 0\n },\n transition: {\n type: String,\n default: 'fade-in-linear'\n },\n tabindex: {\n type: Number,\n default: 0\n }\n },\n\n computed: {\n tooltipId: function tooltipId() {\n return 'el-popover-' + Object(util_[\"generateId\"])();\n }\n },\n watch: {\n showPopper: function showPopper(val) {\n if (this.disabled) {\n return;\n }\n val ? this.$emit('show') : this.$emit('hide');\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n var reference = this.referenceElm = this.reference || this.$refs.reference;\n var popper = this.popper || this.$refs.popper;\n\n if (!reference && this.$refs.wrapper.children) {\n reference = this.referenceElm = this.$refs.wrapper.children[0];\n }\n // 可访问性\n if (reference) {\n Object(dom_[\"addClass\"])(reference, 'el-popover__reference');\n reference.setAttribute('aria-describedby', this.tooltipId);\n reference.setAttribute('tabindex', this.tabindex); // tab序列\n popper.setAttribute('tabindex', 0);\n\n if (this.trigger !== 'click') {\n Object(dom_[\"on\"])(reference, 'focusin', function () {\n _this.handleFocus();\n var instance = reference.__vue__;\n if (instance && typeof instance.focus === 'function') {\n instance.focus();\n }\n });\n Object(dom_[\"on\"])(popper, 'focusin', this.handleFocus);\n Object(dom_[\"on\"])(reference, 'focusout', this.handleBlur);\n Object(dom_[\"on\"])(popper, 'focusout', this.handleBlur);\n }\n Object(dom_[\"on\"])(reference, 'keydown', this.handleKeydown);\n Object(dom_[\"on\"])(reference, 'click', this.handleClick);\n }\n if (this.trigger === 'click') {\n Object(dom_[\"on\"])(reference, 'click', this.doToggle);\n Object(dom_[\"on\"])(document, 'click', this.handleDocumentClick);\n } else if (this.trigger === 'hover') {\n Object(dom_[\"on\"])(reference, 'mouseenter', this.handleMouseEnter);\n Object(dom_[\"on\"])(popper, 'mouseenter', this.handleMouseEnter);\n Object(dom_[\"on\"])(reference, 'mouseleave', this.handleMouseLeave);\n Object(dom_[\"on\"])(popper, 'mouseleave', this.handleMouseLeave);\n } else if (this.trigger === 'focus') {\n if (this.tabindex < 0) {\n console.warn('[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key');\n }\n if (reference.querySelector('input, textarea')) {\n Object(dom_[\"on\"])(reference, 'focusin', this.doShow);\n Object(dom_[\"on\"])(reference, 'focusout', this.doClose);\n } else {\n Object(dom_[\"on\"])(reference, 'mousedown', this.doShow);\n Object(dom_[\"on\"])(reference, 'mouseup', this.doClose);\n }\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.cleanup();\n },\n deactivated: function deactivated() {\n this.cleanup();\n },\n\n\n methods: {\n doToggle: function doToggle() {\n this.showPopper = !this.showPopper;\n },\n doShow: function doShow() {\n this.showPopper = true;\n },\n doClose: function doClose() {\n this.showPopper = false;\n },\n handleFocus: function handleFocus() {\n Object(dom_[\"addClass\"])(this.referenceElm, 'focusing');\n if (this.trigger === 'click' || this.trigger === 'focus') this.showPopper = true;\n },\n handleClick: function handleClick() {\n Object(dom_[\"removeClass\"])(this.referenceElm, 'focusing');\n },\n handleBlur: function handleBlur() {\n Object(dom_[\"removeClass\"])(this.referenceElm, 'focusing');\n if (this.trigger === 'click' || this.trigger === 'focus') this.showPopper = false;\n },\n handleMouseEnter: function handleMouseEnter() {\n var _this2 = this;\n\n clearTimeout(this._timer);\n if (this.openDelay) {\n this._timer = setTimeout(function () {\n _this2.showPopper = true;\n }, this.openDelay);\n } else {\n this.showPopper = true;\n }\n },\n handleKeydown: function handleKeydown(ev) {\n if (ev.keyCode === 27 && this.trigger !== 'manual') {\n // esc\n this.doClose();\n }\n },\n handleMouseLeave: function handleMouseLeave() {\n var _this3 = this;\n\n clearTimeout(this._timer);\n if (this.closeDelay) {\n this._timer = setTimeout(function () {\n _this3.showPopper = false;\n }, this.closeDelay);\n } else {\n this.showPopper = false;\n }\n },\n handleDocumentClick: function handleDocumentClick(e) {\n var reference = this.reference || this.$refs.reference;\n var popper = this.popper || this.$refs.popper;\n\n if (!reference && this.$refs.wrapper.children) {\n reference = this.referenceElm = this.$refs.wrapper.children[0];\n }\n if (!this.$el || !reference || this.$el.contains(e.target) || reference.contains(e.target) || !popper || popper.contains(e.target)) return;\n this.showPopper = false;\n },\n handleAfterEnter: function handleAfterEnter() {\n this.$emit('after-enter');\n },\n handleAfterLeave: function handleAfterLeave() {\n this.$emit('after-leave');\n this.doDestroy();\n },\n cleanup: function cleanup() {\n if (this.openDelay || this.closeDelay) {\n clearTimeout(this._timer);\n }\n }\n },\n\n destroyed: function destroyed() {\n var reference = this.reference;\n\n Object(dom_[\"off\"])(reference, 'click', this.doToggle);\n Object(dom_[\"off\"])(reference, 'mouseup', this.doClose);\n Object(dom_[\"off\"])(reference, 'mousedown', this.doShow);\n Object(dom_[\"off\"])(reference, 'focusin', this.doShow);\n Object(dom_[\"off\"])(reference, 'focusout', this.doClose);\n Object(dom_[\"off\"])(reference, 'mousedown', this.doShow);\n Object(dom_[\"off\"])(reference, 'mouseup', this.doClose);\n Object(dom_[\"off\"])(reference, 'mouseleave', this.handleMouseLeave);\n Object(dom_[\"off\"])(reference, 'mouseenter', this.handleMouseEnter);\n Object(dom_[\"off\"])(document, 'click', this.handleDocumentClick);\n }\n});\n// CONCATENATED MODULE: ./packages/popover/src/main.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_mainvue_type_script_lang_js_ = (mainvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_7006__(0);\n\n// CONCATENATED MODULE: ./packages/popover/src/main.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_mainvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/popover/src/main.vue\"\n/* harmony default export */ var main = (component.exports);\n// CONCATENATED MODULE: ./packages/popover/src/directive.js\nvar getReference = function getReference(el, binding, vnode) {\n var _ref = binding.expression ? binding.value : binding.arg;\n var popper = vnode.context.$refs[_ref];\n if (popper) {\n if (Array.isArray(popper)) {\n popper[0].$refs.reference = el;\n } else {\n popper.$refs.reference = el;\n }\n }\n};\n\n/* harmony default export */ var directive = ({\n bind: function bind(el, binding, vnode) {\n getReference(el, binding, vnode);\n },\n inserted: function inserted(el, binding, vnode) {\n getReference(el, binding, vnode);\n }\n});\n// EXTERNAL MODULE: external \"vue\"\nvar external_vue_ = __nested_webpack_require_7006__(7);\nvar external_vue_default = /*#__PURE__*/__nested_webpack_require_7006__.n(external_vue_);\n\n// CONCATENATED MODULE: ./packages/popover/index.js\n\n\n\n\nexternal_vue_default.a.directive('popover', directive);\n\n/* istanbul ignore next */\nmain.install = function (Vue) {\n Vue.directive('popover', directive);\n Vue.component(main.name, main);\n};\nmain.directive = directive;\n\n/* harmony default export */ var popover = __nested_webpack_exports__[\"default\"] = (main);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvcG9wb3Zlci5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw4QkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEUsOEJBQW1CO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QixlQUFlLDhCQUFtQjtBQUNsQyxtREFBbUQsK0JBQStCO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQSxpRUFBaUUsaUJBQWlCO0FBQ2xGO0FBQ0EsMERBQTBELGFBQWE7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QixnQ0FBZ0MsOEJBQW1CO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFdBQVcsOEJBQW1CO0FBQzlCLGtEQUFrRCxnQ0FBZ0M7QUFDbEYsMEVBQTBFLDhCQUFtQiw0QkFBNEIsb0JBQW9CO0FBQzdJO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQSxvQ0FBb0MsNEJBQTRCO0FBQ2hFLDBDQUEwQztBQUMxQyxXQUFXLDhCQUFtQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CLGtDQUFrQztBQUMvRDtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDhCQUFtQixDQUFDLDhCQUFtQjtBQUN4RCxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QiwwQkFBbUIsRUFBRSwrQkFBbUI7O0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsK0JBQW1COztBQUU3Qzs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0Esb0JBQW9CLCtCQUFtQjtBQUN2Qyx3Q0FBd0MsK0JBQW1COztBQUUzRDs7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkNBQTJDLDBCQUFtQjs7QUFFOUQsT0FBTzs7QUFFUCxVQUFVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL3BvcG92ZXIuanM/YzVmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9XG4vKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2Rpc3QvXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDc4KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKHtcblxuLyoqKi8gMDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIG5vcm1hbGl6ZUNvbXBvbmVudDsgfSk7XG4vKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7IGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCkgfVxuICAgICAgOiBpbmplY3RTdHlsZXNcbiAgfVxuXG4gIGlmIChob29rKSB7XG4gICAgaWYgKG9wdGlvbnMuZnVuY3Rpb25hbCkge1xuICAgICAgLy8gZm9yIHRlbXBsYXRlLW9ubHkgaG90LXJlbG9hZCBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcmVuZGVyIGZuIGRvZXNuJ3RcbiAgICAgIC8vIGdvIHRocm91Z2ggdGhlIG5vcm1hbGl6ZXJcbiAgICAgIG9wdGlvbnMuX2luamVjdFN0eWxlcyA9IGhvb2tcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyAyOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9kb21cIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAzOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy91dGlsXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gNTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvdnVlLXBvcHBlclwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDc6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDc4OlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9wb3BvdmVyL3NyYy9tYWluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjA2MDI3MiZcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJzcGFuXCIsXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwidHJhbnNpdGlvblwiLFxuICAgICAgICB7XG4gICAgICAgICAgYXR0cnM6IHsgbmFtZTogX3ZtLnRyYW5zaXRpb24gfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgXCJhZnRlci1lbnRlclwiOiBfdm0uaGFuZGxlQWZ0ZXJFbnRlcixcbiAgICAgICAgICAgIFwiYWZ0ZXItbGVhdmVcIjogX3ZtLmhhbmRsZUFmdGVyTGVhdmVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogIV92bS5kaXNhYmxlZCAmJiBfdm0uc2hvd1BvcHBlcixcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiIWRpc2FibGVkICYmIHNob3dQb3BwZXJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVmOiBcInBvcHBlclwiLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1wb3BvdmVyIGVsLXBvcHBlclwiLFxuICAgICAgICAgICAgICBjbGFzczogW192bS5wb3BwZXJDbGFzcywgX3ZtLmNvbnRlbnQgJiYgXCJlbC1wb3BvdmVyLS1wbGFpblwiXSxcbiAgICAgICAgICAgICAgc3R5bGU6IHsgd2lkdGg6IF92bS53aWR0aCArIFwicHhcIiB9LFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHJvbGU6IFwidG9vbHRpcFwiLFxuICAgICAgICAgICAgICAgIGlkOiBfdm0udG9vbHRpcElkLFxuICAgICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjpcbiAgICAgICAgICAgICAgICAgIF92bS5kaXNhYmxlZCB8fCAhX3ZtLnNob3dQb3BwZXIgPyBcInRydWVcIiA6IFwiZmFsc2VcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0udGl0bGVcbiAgICAgICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcG9wb3Zlcl9fdGl0bGVcIixcbiAgICAgICAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdGV4dENvbnRlbnQ6IF92bS5fcyhfdm0udGl0bGUpIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgX3ZtLl90KFwiZGVmYXVsdFwiLCBbX3ZtLl92KF92bS5fcyhfdm0uY29udGVudCkpXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICApLFxuICAgICAgX2MoXG4gICAgICAgIFwic3BhblwiLFxuICAgICAgICB7IHJlZjogXCJ3cmFwcGVyXCIsIHN0YXRpY0NsYXNzOiBcImVsLXBvcG92ZXJfX3JlZmVyZW5jZS13cmFwcGVyXCIgfSxcbiAgICAgICAgW192bS5fdChcInJlZmVyZW5jZVwiKV0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3BvcG92ZXIvc3JjL21haW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUyMDYwMjcyJlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvdnVlLXBvcHBlclwiXG52YXIgdnVlX3BvcHBlcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xudmFyIHZ1ZV9wb3BwZXJfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4odnVlX3BvcHBlcl8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvZG9tXCJcbnZhciBkb21fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWxcIlxudmFyIHV0aWxfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYiEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcG9wb3Zlci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFBvcG92ZXInLFxuXG4gIG1peGluczogW3Z1ZV9wb3BwZXJfZGVmYXVsdC5hXSxcblxuICBwcm9wczoge1xuICAgIHRyaWdnZXI6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdjbGljaycsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gWydjbGljaycsICdmb2N1cycsICdob3ZlcicsICdtYW51YWwnXS5pbmRleE9mKHZhbHVlKSA+IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgb3BlbkRlbGF5OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBjbG9zZURlbGF5OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAyMDBcbiAgICB9LFxuICAgIHRpdGxlOiBTdHJpbmcsXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgY29udGVudDogU3RyaW5nLFxuICAgIHJlZmVyZW5jZToge30sXG4gICAgcG9wcGVyQ2xhc3M6IFN0cmluZyxcbiAgICB3aWR0aDoge30sXG4gICAgdmlzaWJsZUFycm93OiB7XG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBhcnJvd09mZnNldDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2ZhZGUtaW4tbGluZWFyJ1xuICAgIH0sXG4gICAgdGFiaW5kZXg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9XG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICB0b29sdGlwSWQ6IGZ1bmN0aW9uIHRvb2x0aXBJZCgpIHtcbiAgICAgIHJldHVybiAnZWwtcG9wb3Zlci0nICsgT2JqZWN0KHV0aWxfW1wiZ2VuZXJhdGVJZFwiXSkoKTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgc2hvd1BvcHBlcjogZnVuY3Rpb24gc2hvd1BvcHBlcih2YWwpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhbCA/IHRoaXMuJGVtaXQoJ3Nob3cnKSA6IHRoaXMuJGVtaXQoJ2hpZGUnKTtcbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHJlZmVyZW5jZSA9IHRoaXMucmVmZXJlbmNlRWxtID0gdGhpcy5yZWZlcmVuY2UgfHwgdGhpcy4kcmVmcy5yZWZlcmVuY2U7XG4gICAgdmFyIHBvcHBlciA9IHRoaXMucG9wcGVyIHx8IHRoaXMuJHJlZnMucG9wcGVyO1xuXG4gICAgaWYgKCFyZWZlcmVuY2UgJiYgdGhpcy4kcmVmcy53cmFwcGVyLmNoaWxkcmVuKSB7XG4gICAgICByZWZlcmVuY2UgPSB0aGlzLnJlZmVyZW5jZUVsbSA9IHRoaXMuJHJlZnMud3JhcHBlci5jaGlsZHJlblswXTtcbiAgICB9XG4gICAgLy8g5Y+v6K6/6Zeu5oCnXG4gICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgT2JqZWN0KGRvbV9bXCJhZGRDbGFzc1wiXSkocmVmZXJlbmNlLCAnZWwtcG9wb3Zlcl9fcmVmZXJlbmNlJyk7XG4gICAgICByZWZlcmVuY2Uuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgdGhpcy50b29sdGlwSWQpO1xuICAgICAgcmVmZXJlbmNlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCB0aGlzLnRhYmluZGV4KTsgLy8gdGFi5bqP5YiXXG4gICAgICBwb3BwZXIuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIDApO1xuXG4gICAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnY2xpY2snKSB7XG4gICAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHJlZmVyZW5jZSwgJ2ZvY3VzaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMuaGFuZGxlRm9jdXMoKTtcbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSByZWZlcmVuY2UuX192dWVfXztcbiAgICAgICAgICBpZiAoaW5zdGFuY2UgJiYgdHlwZW9mIGluc3RhbmNlLmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHBvcHBlciwgJ2ZvY3VzaW4nLCB0aGlzLmhhbmRsZUZvY3VzKTtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkocmVmZXJlbmNlLCAnZm9jdXNvdXQnLCB0aGlzLmhhbmRsZUJsdXIpO1xuICAgICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShwb3BwZXIsICdmb2N1c291dCcsIHRoaXMuaGFuZGxlQmx1cik7XG4gICAgICB9XG4gICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShyZWZlcmVuY2UsICdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duKTtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHJlZmVyZW5jZSwgJ2NsaWNrJywgdGhpcy5oYW5kbGVDbGljayk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHJlZmVyZW5jZSwgJ2NsaWNrJywgdGhpcy5kb1RvZ2dsZSk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShkb2N1bWVudCwgJ2NsaWNrJywgdGhpcy5oYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2hvdmVyJykge1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkocmVmZXJlbmNlLCAnbW91c2VlbnRlcicsIHRoaXMuaGFuZGxlTW91c2VFbnRlcik7XG4gICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShwb3BwZXIsICdtb3VzZWVudGVyJywgdGhpcy5oYW5kbGVNb3VzZUVudGVyKTtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHJlZmVyZW5jZSwgJ21vdXNlbGVhdmUnLCB0aGlzLmhhbmRsZU1vdXNlTGVhdmUpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkocG9wcGVyLCAnbW91c2VsZWF2ZScsIHRoaXMuaGFuZGxlTW91c2VMZWF2ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRyaWdnZXIgPT09ICdmb2N1cycpIHtcbiAgICAgIGlmICh0aGlzLnRhYmluZGV4IDwgMCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tFbGVtZW50IFdhcm5dW1BvcG92ZXJdYSBuZWdhdGl2ZSB0YWluZGV4IG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgY2Fubm90IGJlIGZvY3VzZWQgYnkgdGFiIGtleScpO1xuICAgICAgfVxuICAgICAgaWYgKHJlZmVyZW5jZS5xdWVyeVNlbGVjdG9yKCdpbnB1dCwgdGV4dGFyZWEnKSkge1xuICAgICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShyZWZlcmVuY2UsICdmb2N1c2luJywgdGhpcy5kb1Nob3cpO1xuICAgICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShyZWZlcmVuY2UsICdmb2N1c291dCcsIHRoaXMuZG9DbG9zZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKShyZWZlcmVuY2UsICdtb3VzZWRvd24nLCB0aGlzLmRvU2hvdyk7XG4gICAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHJlZmVyZW5jZSwgJ21vdXNldXAnLCB0aGlzLmRvQ2xvc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgfSxcbiAgZGVhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGRlYWN0aXZhdGVkKCkge1xuICAgIHRoaXMuY2xlYW51cCgpO1xuICB9LFxuXG5cbiAgbWV0aG9kczoge1xuICAgIGRvVG9nZ2xlOiBmdW5jdGlvbiBkb1RvZ2dsZSgpIHtcbiAgICAgIHRoaXMuc2hvd1BvcHBlciA9ICF0aGlzLnNob3dQb3BwZXI7XG4gICAgfSxcbiAgICBkb1Nob3c6IGZ1bmN0aW9uIGRvU2hvdygpIHtcbiAgICAgIHRoaXMuc2hvd1BvcHBlciA9IHRydWU7XG4gICAgfSxcbiAgICBkb0Nsb3NlOiBmdW5jdGlvbiBkb0Nsb3NlKCkge1xuICAgICAgdGhpcy5zaG93UG9wcGVyID0gZmFsc2U7XG4gICAgfSxcbiAgICBoYW5kbGVGb2N1czogZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICBPYmplY3QoZG9tX1tcImFkZENsYXNzXCJdKSh0aGlzLnJlZmVyZW5jZUVsbSwgJ2ZvY3VzaW5nJyk7XG4gICAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnY2xpY2snIHx8IHRoaXMudHJpZ2dlciA9PT0gJ2ZvY3VzJykgdGhpcy5zaG93UG9wcGVyID0gdHJ1ZTtcbiAgICB9LFxuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIE9iamVjdChkb21fW1wicmVtb3ZlQ2xhc3NcIl0pKHRoaXMucmVmZXJlbmNlRWxtLCAnZm9jdXNpbmcnKTtcbiAgICB9LFxuICAgIGhhbmRsZUJsdXI6IGZ1bmN0aW9uIGhhbmRsZUJsdXIoKSB7XG4gICAgICBPYmplY3QoZG9tX1tcInJlbW92ZUNsYXNzXCJdKSh0aGlzLnJlZmVyZW5jZUVsbSwgJ2ZvY3VzaW5nJyk7XG4gICAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnY2xpY2snIHx8IHRoaXMudHJpZ2dlciA9PT0gJ2ZvY3VzJykgdGhpcy5zaG93UG9wcGVyID0gZmFsc2U7XG4gICAgfSxcbiAgICBoYW5kbGVNb3VzZUVudGVyOiBmdW5jdGlvbiBoYW5kbGVNb3VzZUVudGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7XG4gICAgICBpZiAodGhpcy5vcGVuRGVsYXkpIHtcbiAgICAgICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczIuc2hvd1BvcHBlciA9IHRydWU7XG4gICAgICAgIH0sIHRoaXMub3BlbkRlbGF5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd1BvcHBlciA9IHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVLZXlkb3duOiBmdW5jdGlvbiBoYW5kbGVLZXlkb3duKGV2KSB7XG4gICAgICBpZiAoZXYua2V5Q29kZSA9PT0gMjcgJiYgdGhpcy50cmlnZ2VyICE9PSAnbWFudWFsJykge1xuICAgICAgICAvLyBlc2NcbiAgICAgICAgdGhpcy5kb0Nsb3NlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVNb3VzZUxlYXZlOiBmdW5jdGlvbiBoYW5kbGVNb3VzZUxlYXZlKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7XG4gICAgICBpZiAodGhpcy5jbG9zZURlbGF5KSB7XG4gICAgICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLnNob3dQb3BwZXIgPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5jbG9zZURlbGF5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd1BvcHBlciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlRG9jdW1lbnRDbGljazogZnVuY3Rpb24gaGFuZGxlRG9jdW1lbnRDbGljayhlKSB7XG4gICAgICB2YXIgcmVmZXJlbmNlID0gdGhpcy5yZWZlcmVuY2UgfHwgdGhpcy4kcmVmcy5yZWZlcmVuY2U7XG4gICAgICB2YXIgcG9wcGVyID0gdGhpcy5wb3BwZXIgfHwgdGhpcy4kcmVmcy5wb3BwZXI7XG5cbiAgICAgIGlmICghcmVmZXJlbmNlICYmIHRoaXMuJHJlZnMud3JhcHBlci5jaGlsZHJlbikge1xuICAgICAgICByZWZlcmVuY2UgPSB0aGlzLnJlZmVyZW5jZUVsbSA9IHRoaXMuJHJlZnMud3JhcHBlci5jaGlsZHJlblswXTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy4kZWwgfHwgIXJlZmVyZW5jZSB8fCB0aGlzLiRlbC5jb250YWlucyhlLnRhcmdldCkgfHwgcmVmZXJlbmNlLmNvbnRhaW5zKGUudGFyZ2V0KSB8fCAhcG9wcGVyIHx8IHBvcHBlci5jb250YWlucyhlLnRhcmdldCkpIHJldHVybjtcbiAgICAgIHRoaXMuc2hvd1BvcHBlciA9IGZhbHNlO1xuICAgIH0sXG4gICAgaGFuZGxlQWZ0ZXJFbnRlcjogZnVuY3Rpb24gaGFuZGxlQWZ0ZXJFbnRlcigpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2FmdGVyLWVudGVyJyk7XG4gICAgfSxcbiAgICBoYW5kbGVBZnRlckxlYXZlOiBmdW5jdGlvbiBoYW5kbGVBZnRlckxlYXZlKCkge1xuICAgICAgdGhpcy4kZW1pdCgnYWZ0ZXItbGVhdmUnKTtcbiAgICAgIHRoaXMuZG9EZXN0cm95KCk7XG4gICAgfSxcbiAgICBjbGVhbnVwOiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgaWYgKHRoaXMub3BlbkRlbGF5IHx8IHRoaXMuY2xvc2VEZWxheSkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCgpIHtcbiAgICB2YXIgcmVmZXJlbmNlID0gdGhpcy5yZWZlcmVuY2U7XG5cbiAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnY2xpY2snLCB0aGlzLmRvVG9nZ2xlKTtcbiAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnbW91c2V1cCcsIHRoaXMuZG9DbG9zZSk7XG4gICAgT2JqZWN0KGRvbV9bXCJvZmZcIl0pKHJlZmVyZW5jZSwgJ21vdXNlZG93bicsIHRoaXMuZG9TaG93KTtcbiAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnZm9jdXNpbicsIHRoaXMuZG9TaG93KTtcbiAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnZm9jdXNvdXQnLCB0aGlzLmRvQ2xvc2UpO1xuICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdtb3VzZWRvd24nLCB0aGlzLmRvU2hvdyk7XG4gICAgT2JqZWN0KGRvbV9bXCJvZmZcIl0pKHJlZmVyZW5jZSwgJ21vdXNldXAnLCB0aGlzLmRvQ2xvc2UpO1xuICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdtb3VzZWxlYXZlJywgdGhpcy5oYW5kbGVNb3VzZUxlYXZlKTtcbiAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnbW91c2VlbnRlcicsIHRoaXMuaGFuZGxlTW91c2VFbnRlcik7XG4gICAgT2JqZWN0KGRvbV9bXCJvZmZcIl0pKGRvY3VtZW50LCAnY2xpY2snLCB0aGlzLmhhbmRsZURvY3VtZW50Q2xpY2spO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcG9wb3Zlci9zcmMvbWFpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAobWFpbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcbnZhciBjb21wb25lbnROb3JtYWxpemVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wb3BvdmVyL3NyYy9tYWluLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNvbXBvbmVudCA9IE9iamVjdChjb21wb25lbnROb3JtYWxpemVyW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShcbiAgc3JjX21haW52dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhcGk7IH1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvcG9wb3Zlci9zcmMvbWFpbi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgbWFpbiA9IChjb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3BvcG92ZXIvc3JjL2RpcmVjdGl2ZS5qc1xudmFyIGdldFJlZmVyZW5jZSA9IGZ1bmN0aW9uIGdldFJlZmVyZW5jZShlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgdmFyIF9yZWYgPSBiaW5kaW5nLmV4cHJlc3Npb24gPyBiaW5kaW5nLnZhbHVlIDogYmluZGluZy5hcmc7XG4gIHZhciBwb3BwZXIgPSB2bm9kZS5jb250ZXh0LiRyZWZzW19yZWZdO1xuICBpZiAocG9wcGVyKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocG9wcGVyKSkge1xuICAgICAgcG9wcGVyWzBdLiRyZWZzLnJlZmVyZW5jZSA9IGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3BwZXIuJHJlZnMucmVmZXJlbmNlID0gZWw7XG4gICAgfVxuICB9XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBkaXJlY3RpdmUgPSAoe1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIGdldFJlZmVyZW5jZShlbCwgYmluZGluZywgdm5vZGUpO1xuICB9LFxuICBpbnNlcnRlZDogZnVuY3Rpb24gaW5zZXJ0ZWQoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgZ2V0UmVmZXJlbmNlKGVsLCBiaW5kaW5nLCB2bm9kZSk7XG4gIH1cbn0pO1xuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcInZ1ZVwiXG52YXIgZXh0ZXJuYWxfdnVlXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG52YXIgZXh0ZXJuYWxfdnVlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGV4dGVybmFsX3Z1ZV8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3BvcG92ZXIvaW5kZXguanNcblxuXG5cblxuZXh0ZXJuYWxfdnVlX2RlZmF1bHQuYS5kaXJlY3RpdmUoJ3BvcG92ZXInLCBkaXJlY3RpdmUpO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xubWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuZGlyZWN0aXZlKCdwb3BvdmVyJywgZGlyZWN0aXZlKTtcbiAgVnVlLmNvbXBvbmVudChtYWluLm5hbWUsIG1haW4pO1xufTtcbm1haW4uZGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwb3BvdmVyID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAobWFpbik7XG5cbi8qKiovIH0pXG5cbi8qKioqKiovIH0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/popover.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/progress.js":
/*!*************************************************!*\
!*** ./node_modules/element-ui/lib/progress.js ***!
\*************************************************/
/***/ ((module) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 104);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3673__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3673__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 104:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_6577__) {\n\n\"use strict\";\n__nested_webpack_require_6577__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/progress/src/progress.vue?vue&type=template&id=229ee406&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-progress\",\n class: [\n \"el-progress--\" + _vm.type,\n _vm.status ? \"is-\" + _vm.status : \"\",\n {\n \"el-progress--without-text\": !_vm.showText,\n \"el-progress--text-inside\": _vm.textInside\n }\n ],\n attrs: {\n role: \"progressbar\",\n \"aria-valuenow\": _vm.percentage,\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": \"100\"\n }\n },\n [\n _vm.type === \"line\"\n ? _c(\"div\", { staticClass: \"el-progress-bar\" }, [\n _c(\n \"div\",\n {\n staticClass: \"el-progress-bar__outer\",\n style: {\n height: _vm.strokeWidth + \"px\",\n backgroundColor: _vm.defineBackColor\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"el-progress-bar__inner\",\n style: _vm.barStyle\n },\n [\n _vm.showText && _vm.textInside\n ? _c(\n \"div\",\n {\n staticClass: \"el-progress-bar__innerText\",\n style: { color: _vm.textColor }\n },\n [_vm._v(_vm._s(_vm.content))]\n )\n : _vm._e()\n ]\n )\n ]\n )\n ])\n : _c(\n \"div\",\n {\n staticClass: \"el-progress-circle\",\n style: { height: _vm.width + \"px\", width: _vm.width + \"px\" }\n },\n [\n _c(\"svg\", { attrs: { viewBox: \"0 0 100 100\" } }, [\n _c(\"path\", {\n staticClass: \"el-progress-circle__track\",\n style: _vm.trailPathStyle,\n attrs: {\n d: _vm.trackPath,\n stroke: _vm.defineBackColor,\n \"stroke-width\": _vm.relativeStrokeWidth,\n fill: \"none\"\n }\n }),\n _c(\"path\", {\n staticClass: \"el-progress-circle__path\",\n style: _vm.circlePathStyle,\n attrs: {\n d: _vm.trackPath,\n stroke: _vm.stroke,\n fill: \"none\",\n \"stroke-linecap\": _vm.strokeLinecap,\n \"stroke-width\": _vm.percentage ? _vm.relativeStrokeWidth : 0\n }\n })\n ])\n ]\n ),\n _vm.showText && !_vm.textInside\n ? _c(\n \"div\",\n {\n staticClass: \"el-progress__text\",\n style: {\n fontSize: _vm.progressTextSize + \"px\",\n color: _vm.textColor\n }\n },\n [\n !_vm.status\n ? [_vm._v(_vm._s(_vm.content))]\n : _c(\"i\", { class: _vm.iconClass })\n ],\n 2\n )\n : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/progress/src/progress.vue?vue&type=template&id=229ee406&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/progress/src/progress.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var progressvue_type_script_lang_js_ = ({\n name: 'ElProgress',\n props: {\n type: {\n type: String,\n default: 'line',\n validator: function validator(val) {\n return ['line', 'circle', 'dashboard'].indexOf(val) > -1;\n }\n },\n percentage: {\n type: Number,\n default: 0,\n required: true,\n validator: function validator(val) {\n return val >= 0 && val <= 100;\n }\n },\n status: {\n type: String,\n validator: function validator(val) {\n return ['success', 'exception', 'warning'].indexOf(val) > -1;\n }\n },\n strokeWidth: {\n type: Number,\n default: 6\n },\n strokeLinecap: {\n type: String,\n default: 'round'\n },\n textInside: {\n type: Boolean,\n default: false\n },\n width: {\n type: Number,\n default: 126\n },\n showText: {\n type: Boolean,\n default: true\n },\n color: {\n type: [String, Array, Function],\n default: ''\n },\n defineBackColor: {\n type: [String, Array, Function],\n default: '#ebeef5'\n },\n textColor: {\n type: [String, Array, Function],\n default: '#606266'\n },\n format: Function\n },\n computed: {\n barStyle: function barStyle() {\n var style = {};\n style.width = this.percentage + '%';\n style.backgroundColor = this.getCurrentColor(this.percentage);\n return style;\n },\n relativeStrokeWidth: function relativeStrokeWidth() {\n return (this.strokeWidth / this.width * 100).toFixed(1);\n },\n radius: function radius() {\n if (this.type === 'circle' || this.type === 'dashboard') {\n return parseInt(50 - parseFloat(this.relativeStrokeWidth) / 2, 10);\n } else {\n return 0;\n }\n },\n trackPath: function trackPath() {\n var radius = this.radius;\n var isDashboard = this.type === 'dashboard';\n return '\\n M 50 50\\n m 0 ' + (isDashboard ? '' : '-') + radius + '\\n a ' + radius + ' ' + radius + ' 0 1 1 0 ' + (isDashboard ? '-' : '') + radius * 2 + '\\n a ' + radius + ' ' + radius + ' 0 1 1 0 ' + (isDashboard ? '' : '-') + radius * 2 + '\\n ';\n },\n perimeter: function perimeter() {\n return 2 * Math.PI * this.radius;\n },\n rate: function rate() {\n return this.type === 'dashboard' ? 0.75 : 1;\n },\n strokeDashoffset: function strokeDashoffset() {\n var offset = -1 * this.perimeter * (1 - this.rate) / 2;\n return offset + 'px';\n },\n trailPathStyle: function trailPathStyle() {\n return {\n strokeDasharray: this.perimeter * this.rate + 'px, ' + this.perimeter + 'px',\n strokeDashoffset: this.strokeDashoffset\n };\n },\n circlePathStyle: function circlePathStyle() {\n return {\n strokeDasharray: this.perimeter * this.rate * (this.percentage / 100) + 'px, ' + this.perimeter + 'px',\n strokeDashoffset: this.strokeDashoffset,\n transition: 'stroke-dasharray 0.6s ease 0s, stroke 0.6s ease'\n };\n },\n stroke: function stroke() {\n var ret = void 0;\n if (this.color) {\n ret = this.getCurrentColor(this.percentage);\n } else {\n switch (this.status) {\n case 'success':\n ret = '#13ce66';\n break;\n case 'exception':\n ret = '#ff4949';\n break;\n case 'warning':\n ret = '#e6a23c';\n break;\n default:\n ret = '#20a0ff';\n }\n }\n return ret;\n },\n iconClass: function iconClass() {\n if (this.status === 'warning') {\n return 'el-icon-warning';\n }\n if (this.type === 'line') {\n return this.status === 'success' ? 'el-icon-circle-check' : 'el-icon-circle-close';\n } else {\n return this.status === 'success' ? 'el-icon-check' : 'el-icon-close';\n }\n },\n progressTextSize: function progressTextSize() {\n return this.type === 'line' ? 12 + this.strokeWidth * 0.4 : this.width * 0.111111 + 2;\n },\n content: function content() {\n if (typeof this.format === 'function') {\n return this.format(this.percentage) || '';\n } else {\n return this.percentage + '%';\n }\n }\n },\n methods: {\n getCurrentColor: function getCurrentColor(percentage) {\n if (typeof this.color === 'function') {\n return this.color(percentage);\n } else if (typeof this.color === 'string') {\n return this.color;\n } else {\n return this.getLevelColor(percentage);\n }\n },\n getLevelColor: function getLevelColor(percentage) {\n var colorArray = this.getColorArray().sort(function (a, b) {\n return a.percentage - b.percentage;\n });\n\n for (var i = 0; i < colorArray.length; i++) {\n if (colorArray[i].percentage > percentage) {\n return colorArray[i].color;\n }\n }\n return colorArray[colorArray.length - 1].color;\n },\n getColorArray: function getColorArray() {\n var color = this.color;\n var span = 100 / color.length;\n return color.map(function (seriesColor, index) {\n if (typeof seriesColor === 'string') {\n return {\n color: seriesColor,\n percentage: (index + 1) * span\n };\n }\n return seriesColor;\n });\n }\n }\n});\n// CONCATENATED MODULE: ./packages/progress/src/progress.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_progressvue_type_script_lang_js_ = (progressvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_6577__(0);\n\n// CONCATENATED MODULE: ./packages/progress/src/progress.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_progressvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/progress/src/progress.vue\"\n/* harmony default export */ var progress = (component.exports);\n// CONCATENATED MODULE: ./packages/progress/index.js\n\n\n/* istanbul ignore next */\nprogress.install = function (Vue) {\n Vue.component(progress.name, progress);\n};\n\n/* harmony default export */ var packages_progress = __nested_webpack_exports__[\"default\"] = (progress);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvcHJvZ3Jlc3MuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOEJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDhCQUFtQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZUFBZSw4QkFBbUI7QUFDbEMsbURBQW1ELCtCQUErQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0EsaUVBQWlFLGlCQUFpQjtBQUNsRjtBQUNBLDBEQUEwRCxhQUFhO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZ0NBQWdDLDhCQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDhCQUFtQjtBQUM5QixrREFBa0QsZ0NBQWdDO0FBQ2xGLDBFQUEwRSw4QkFBbUIsNEJBQTRCLG9CQUFvQjtBQUM3STtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0Esb0NBQW9DLDRCQUE0QjtBQUNoRSwwQ0FBMEM7QUFDMUMsV0FBVyw4QkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQixrQ0FBa0M7QUFDL0Q7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4QkFBbUIsQ0FBQyw4QkFBbUI7QUFDeEQsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsMEJBQW1CLEVBQUUsK0JBQW1COztB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QUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVAsc0JBQXNCLHVCQUF1QjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsK0JBQW1COztBQUU3Qzs7Ozs7O0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQUssRUFBRSxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscURBQXFELDBCQUFtQjs7QUFFeEUsT0FBTzs7QUFFUCxVQUFVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL3Byb2dyZXNzLmpzPzI0OWIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9kaXN0L1wiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxMDQpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoe1xuXG4vKioqLyAwOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gbm9ybWFsaXplQ29tcG9uZW50OyB9KTtcbi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KSB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIDEwNDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvcHJvZ3Jlc3Mvc3JjL3Byb2dyZXNzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMjllZTQwNiZcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1wcm9ncmVzc1wiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgXCJlbC1wcm9ncmVzcy0tXCIgKyBfdm0udHlwZSxcbiAgICAgICAgX3ZtLnN0YXR1cyA/IFwiaXMtXCIgKyBfdm0uc3RhdHVzIDogXCJcIixcbiAgICAgICAge1xuICAgICAgICAgIFwiZWwtcHJvZ3Jlc3MtLXdpdGhvdXQtdGV4dFwiOiAhX3ZtLnNob3dUZXh0LFxuICAgICAgICAgIFwiZWwtcHJvZ3Jlc3MtLXRleHQtaW5zaWRlXCI6IF92bS50ZXh0SW5zaWRlXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiBcInByb2dyZXNzYmFyXCIsXG4gICAgICAgIFwiYXJpYS12YWx1ZW5vd1wiOiBfdm0ucGVyY2VudGFnZSxcbiAgICAgICAgXCJhcmlhLXZhbHVlbWluXCI6IFwiMFwiLFxuICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogXCIxMDBcIlxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX3ZtLnR5cGUgPT09IFwibGluZVwiXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJlbC1wcm9ncmVzcy1iYXJcIiB9LCBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXByb2dyZXNzLWJhcl9fb3V0ZXJcIixcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfdm0uc3Ryb2tlV2lkdGggKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IF92bS5kZWZpbmVCYWNrQ29sb3JcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXByb2dyZXNzLWJhcl9faW5uZXJcIixcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IF92bS5iYXJTdHlsZVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dUZXh0ICYmIF92bS50ZXh0SW5zaWRlXG4gICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImVsLXByb2dyZXNzLWJhcl9faW5uZXJUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsgY29sb3I6IF92bS50ZXh0Q29sb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0uY29udGVudCkpXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICA6IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcHJvZ3Jlc3MtY2lyY2xlXCIsXG4gICAgICAgICAgICAgIHN0eWxlOiB7IGhlaWdodDogX3ZtLndpZHRoICsgXCJweFwiLCB3aWR0aDogX3ZtLndpZHRoICsgXCJweFwiIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwic3ZnXCIsIHsgYXR0cnM6IHsgdmlld0JveDogXCIwIDAgMTAwIDEwMFwiIH0gfSwgW1xuICAgICAgICAgICAgICAgIF9jKFwicGF0aFwiLCB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1wcm9ncmVzcy1jaXJjbGVfX3RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICBzdHlsZTogX3ZtLnRyYWlsUGF0aFN0eWxlLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgZDogX3ZtLnRyYWNrUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBfdm0uZGVmaW5lQmFja0NvbG9yLFxuICAgICAgICAgICAgICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBfdm0ucmVsYXRpdmVTdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogXCJub25lXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBfYyhcInBhdGhcIiwge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcHJvZ3Jlc3MtY2lyY2xlX19wYXRoXCIsXG4gICAgICAgICAgICAgICAgICBzdHlsZTogX3ZtLmNpcmNsZVBhdGhTdHlsZSxcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGQ6IF92bS50cmFja1BhdGgsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogX3ZtLnN0cm9rZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogX3ZtLnN0cm9rZUxpbmVjYXAsXG4gICAgICAgICAgICAgICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IF92bS5wZXJjZW50YWdlID8gX3ZtLnJlbGF0aXZlU3Ryb2tlV2lkdGggOiAwXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApLFxuICAgICAgX3ZtLnNob3dUZXh0ICYmICFfdm0udGV4dEluc2lkZVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcHJvZ3Jlc3NfX3RleHRcIixcbiAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogX3ZtLnByb2dyZXNzVGV4dFNpemUgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgY29sb3I6IF92bS50ZXh0Q29sb3JcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIV92bS5zdGF0dXNcbiAgICAgICAgICAgICAgICA/IFtfdm0uX3YoX3ZtLl9zKF92bS5jb250ZW50KSldXG4gICAgICAgICAgICAgICAgOiBfYyhcImlcIiwgeyBjbGFzczogX3ZtLmljb25DbGFzcyB9KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKClcbiAgICBdXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wcm9ncmVzcy9zcmMvcHJvZ3Jlc3MudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIyOWVlNDA2JlxuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9wcm9ncmVzcy9zcmMvcHJvZ3Jlc3MudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcHJvZ3Jlc3N2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxQcm9ncmVzcycsXG4gIHByb3BzOiB7XG4gICAgdHlwZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2xpbmUnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgIHJldHVybiBbJ2xpbmUnLCAnY2lyY2xlJywgJ2Rhc2hib2FyZCddLmluZGV4T2YodmFsKSA+IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGVyY2VudGFnZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMCxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgIHJldHVybiB2YWwgPj0gMCAmJiB2YWwgPD0gMTAwO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWwpIHtcbiAgICAgICAgcmV0dXJuIFsnc3VjY2VzcycsICdleGNlcHRpb24nLCAnd2FybmluZyddLmluZGV4T2YodmFsKSA+IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3Ryb2tlV2lkdGg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDZcbiAgICB9LFxuICAgIHN0cm9rZUxpbmVjYXA6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdyb3VuZCdcbiAgICB9LFxuICAgIHRleHRJbnNpZGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgd2lkdGg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDEyNlxuICAgIH0sXG4gICAgc2hvd1RleHQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIEZ1bmN0aW9uXSxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICBkZWZpbmVCYWNrQ29sb3I6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBGdW5jdGlvbl0sXG4gICAgICBkZWZhdWx0OiAnI2ViZWVmNSdcbiAgICB9LFxuICAgIHRleHRDb2xvcjoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIEZ1bmN0aW9uXSxcbiAgICAgIGRlZmF1bHQ6ICcjNjA2MjY2J1xuICAgIH0sXG4gICAgZm9ybWF0OiBGdW5jdGlvblxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGJhclN0eWxlOiBmdW5jdGlvbiBiYXJTdHlsZSgpIHtcbiAgICAgIHZhciBzdHlsZSA9IHt9O1xuICAgICAgc3R5bGUud2lkdGggPSB0aGlzLnBlcmNlbnRhZ2UgKyAnJSc7XG4gICAgICBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmdldEN1cnJlbnRDb2xvcih0aGlzLnBlcmNlbnRhZ2UpO1xuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH0sXG4gICAgcmVsYXRpdmVTdHJva2VXaWR0aDogZnVuY3Rpb24gcmVsYXRpdmVTdHJva2VXaWR0aCgpIHtcbiAgICAgIHJldHVybiAodGhpcy5zdHJva2VXaWR0aCAvIHRoaXMud2lkdGggKiAxMDApLnRvRml4ZWQoMSk7XG4gICAgfSxcbiAgICByYWRpdXM6IGZ1bmN0aW9uIHJhZGl1cygpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdjaXJjbGUnIHx8IHRoaXMudHlwZSA9PT0gJ2Rhc2hib2FyZCcpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KDUwIC0gcGFyc2VGbG9hdCh0aGlzLnJlbGF0aXZlU3Ryb2tlV2lkdGgpIC8gMiwgMTApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSxcbiAgICB0cmFja1BhdGg6IGZ1bmN0aW9uIHRyYWNrUGF0aCgpIHtcbiAgICAgIHZhciByYWRpdXMgPSB0aGlzLnJhZGl1cztcbiAgICAgIHZhciBpc0Rhc2hib2FyZCA9IHRoaXMudHlwZSA9PT0gJ2Rhc2hib2FyZCc7XG4gICAgICByZXR1cm4gJ1xcbiAgICAgICAgTSA1MCA1MFxcbiAgICAgICAgbSAwICcgKyAoaXNEYXNoYm9hcmQgPyAnJyA6ICctJykgKyByYWRpdXMgKyAnXFxuICAgICAgICBhICcgKyByYWRpdXMgKyAnICcgKyByYWRpdXMgKyAnIDAgMSAxIDAgJyArIChpc0Rhc2hib2FyZCA/ICctJyA6ICcnKSArIHJhZGl1cyAqIDIgKyAnXFxuICAgICAgICBhICcgKyByYWRpdXMgKyAnICcgKyByYWRpdXMgKyAnIDAgMSAxIDAgJyArIChpc0Rhc2hib2FyZCA/ICcnIDogJy0nKSArIHJhZGl1cyAqIDIgKyAnXFxuICAgICAgICAnO1xuICAgIH0sXG4gICAgcGVyaW1ldGVyOiBmdW5jdGlvbiBwZXJpbWV0ZXIoKSB7XG4gICAgICByZXR1cm4gMiAqIE1hdGguUEkgKiB0aGlzLnJhZGl1cztcbiAgICB9LFxuICAgIHJhdGU6IGZ1bmN0aW9uIHJhdGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy50eXBlID09PSAnZGFzaGJvYXJkJyA/IDAuNzUgOiAxO1xuICAgIH0sXG4gICAgc3Ryb2tlRGFzaG9mZnNldDogZnVuY3Rpb24gc3Ryb2tlRGFzaG9mZnNldCgpIHtcbiAgICAgIHZhciBvZmZzZXQgPSAtMSAqIHRoaXMucGVyaW1ldGVyICogKDEgLSB0aGlzLnJhdGUpIC8gMjtcbiAgICAgIHJldHVybiBvZmZzZXQgKyAncHgnO1xuICAgIH0sXG4gICAgdHJhaWxQYXRoU3R5bGU6IGZ1bmN0aW9uIHRyYWlsUGF0aFN0eWxlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiB0aGlzLnBlcmltZXRlciAqIHRoaXMucmF0ZSArICdweCwgJyArIHRoaXMucGVyaW1ldGVyICsgJ3B4JyxcbiAgICAgICAgc3Ryb2tlRGFzaG9mZnNldDogdGhpcy5zdHJva2VEYXNob2Zmc2V0XG4gICAgICB9O1xuICAgIH0sXG4gICAgY2lyY2xlUGF0aFN0eWxlOiBmdW5jdGlvbiBjaXJjbGVQYXRoU3R5bGUoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdHJva2VEYXNoYXJyYXk6IHRoaXMucGVyaW1ldGVyICogdGhpcy5yYXRlICogKHRoaXMucGVyY2VudGFnZSAvIDEwMCkgKyAncHgsICcgKyB0aGlzLnBlcmltZXRlciArICdweCcsXG4gICAgICAgIHN0cm9rZURhc2hvZmZzZXQ6IHRoaXMuc3Ryb2tlRGFzaG9mZnNldCxcbiAgICAgICAgdHJhbnNpdGlvbjogJ3N0cm9rZS1kYXNoYXJyYXkgMC42cyBlYXNlIDBzLCBzdHJva2UgMC42cyBlYXNlJ1xuICAgICAgfTtcbiAgICB9LFxuICAgIHN0cm9rZTogZnVuY3Rpb24gc3Ryb2tlKCkge1xuICAgICAgdmFyIHJldCA9IHZvaWQgMDtcbiAgICAgIGlmICh0aGlzLmNvbG9yKSB7XG4gICAgICAgIHJldCA9IHRoaXMuZ2V0Q3VycmVudENvbG9yKHRoaXMucGVyY2VudGFnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc3RhdHVzKSB7XG4gICAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgICAgICByZXQgPSAnIzEzY2U2Nic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdleGNlcHRpb24nOlxuICAgICAgICAgICAgcmV0ID0gJyNmZjQ5NDknO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgICByZXQgPSAnI2U2YTIzYyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0ID0gJyMyMGEwZmYnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0sXG4gICAgaWNvbkNsYXNzOiBmdW5jdGlvbiBpY29uQ2xhc3MoKSB7XG4gICAgICBpZiAodGhpcy5zdGF0dXMgPT09ICd3YXJuaW5nJykge1xuICAgICAgICByZXR1cm4gJ2VsLWljb24td2FybmluZyc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50eXBlID09PSAnbGluZScpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSAnc3VjY2VzcycgPyAnZWwtaWNvbi1jaXJjbGUtY2hlY2snIDogJ2VsLWljb24tY2lyY2xlLWNsb3NlJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnID8gJ2VsLWljb24tY2hlY2snIDogJ2VsLWljb24tY2xvc2UnO1xuICAgICAgfVxuICAgIH0sXG4gICAgcHJvZ3Jlc3NUZXh0U2l6ZTogZnVuY3Rpb24gcHJvZ3Jlc3NUZXh0U2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdsaW5lJyA/IDEyICsgdGhpcy5zdHJva2VXaWR0aCAqIDAuNCA6IHRoaXMud2lkdGggKiAwLjExMTExMSArIDI7XG4gICAgfSxcbiAgICBjb250ZW50OiBmdW5jdGlvbiBjb250ZW50KCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvcm1hdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQodGhpcy5wZXJjZW50YWdlKSB8fCAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcmNlbnRhZ2UgKyAnJSc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0Q3VycmVudENvbG9yOiBmdW5jdGlvbiBnZXRDdXJyZW50Q29sb3IocGVyY2VudGFnZSkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbG9yKHBlcmNlbnRhZ2UpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRMZXZlbENvbG9yKHBlcmNlbnRhZ2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0TGV2ZWxDb2xvcjogZnVuY3Rpb24gZ2V0TGV2ZWxDb2xvcihwZXJjZW50YWdlKSB7XG4gICAgICB2YXIgY29sb3JBcnJheSA9IHRoaXMuZ2V0Q29sb3JBcnJheSgpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEucGVyY2VudGFnZSAtIGIucGVyY2VudGFnZTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbG9yQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGNvbG9yQXJyYXlbaV0ucGVyY2VudGFnZSA+IHBlcmNlbnRhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gY29sb3JBcnJheVtpXS5jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbG9yQXJyYXlbY29sb3JBcnJheS5sZW5ndGggLSAxXS5jb2xvcjtcbiAgICB9LFxuICAgIGdldENvbG9yQXJyYXk6IGZ1bmN0aW9uIGdldENvbG9yQXJyYXkoKSB7XG4gICAgICB2YXIgY29sb3IgPSB0aGlzLmNvbG9yO1xuICAgICAgdmFyIHNwYW4gPSAxMDAgLyBjb2xvci5sZW5ndGg7XG4gICAgICByZXR1cm4gY29sb3IubWFwKGZ1bmN0aW9uIChzZXJpZXNDb2xvciwgaW5kZXgpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXJpZXNDb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sb3I6IHNlcmllc0NvbG9yLFxuICAgICAgICAgICAgcGVyY2VudGFnZTogKGluZGV4ICsgMSkgKiBzcGFuXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VyaWVzQ29sb3I7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wcm9ncmVzcy9zcmMvcHJvZ3Jlc3MudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19wcm9ncmVzc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChwcm9ncmVzc3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcbnZhciBjb21wb25lbnROb3JtYWxpemVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9wcm9ncmVzcy9zcmMvcHJvZ3Jlc3MudnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY29tcG9uZW50ID0gT2JqZWN0KGNvbXBvbmVudE5vcm1hbGl6ZXJbXCJhXCIgLyogZGVmYXVsdCAqL10pKFxuICBzcmNfcHJvZ3Jlc3N2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhcGk7IH1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvcHJvZ3Jlc3Mvc3JjL3Byb2dyZXNzLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBwcm9ncmVzcyA9IChjb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Byb2dyZXNzL2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnByb2dyZXNzLmluc3RhbGwgPSBmdW5jdGlvbiAoVnVlKSB7XG4gIFZ1ZS5jb21wb25lbnQocHJvZ3Jlc3MubmFtZSwgcHJvZ3Jlc3MpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfcHJvZ3Jlc3MgPSBfX3dlYnBhY2tfZXhwb3J0c19fW1wiZGVmYXVsdFwiXSA9IChwcm9ncmVzcyk7XG5cbi8qKiovIH0pXG5cbi8qKioqKiovIH0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/progress.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/radio.js":
/*!**********************************************!*\
!*** ./node_modules/element-ui/lib/radio.js ***!
\**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 88);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/emitter */ \"./node_modules/element-ui/lib/mixins/emitter.js\");\n\n/***/ }),\n\n/***/ 88:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_6691__) {\n\n\"use strict\";\n__nested_webpack_require_6691__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio.vue?vue&type=template&id=69cd6268&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-radio\",\n class: [\n _vm.border && _vm.radioSize ? \"el-radio--\" + _vm.radioSize : \"\",\n { \"is-disabled\": _vm.isDisabled },\n { \"is-focus\": _vm.focus },\n { \"is-bordered\": _vm.border },\n { \"is-checked\": _vm.model === _vm.label }\n ],\n attrs: {\n role: \"radio\",\n \"aria-checked\": _vm.model === _vm.label,\n \"aria-disabled\": _vm.isDisabled,\n tabindex: _vm.tabIndex\n },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"space\", 32, $event.key, [\" \", \"Spacebar\"])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.model = _vm.isDisabled ? _vm.model : _vm.label\n }\n }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"el-radio__input\",\n class: {\n \"is-disabled\": _vm.isDisabled,\n \"is-checked\": _vm.model === _vm.label\n }\n },\n [\n _c(\"span\", { staticClass: \"el-radio__inner\" }),\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n ref: \"radio\",\n staticClass: \"el-radio__original\",\n attrs: {\n type: \"radio\",\n \"aria-hidden\": \"true\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n tabindex: \"-1\",\n autocomplete: \"off\"\n },\n domProps: {\n value: _vm.label,\n checked: _vm._q(_vm.model, _vm.label)\n },\n on: {\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n },\n change: [\n function($event) {\n _vm.model = _vm.label\n },\n _vm.handleChange\n ]\n }\n })\n ]\n ),\n _c(\n \"span\",\n {\n staticClass: \"el-radio__label\",\n on: {\n keydown: function($event) {\n $event.stopPropagation()\n }\n }\n },\n [\n _vm._t(\"default\"),\n !_vm.$slots.default ? [_vm._v(_vm._s(_vm.label))] : _vm._e()\n ],\n 2\n )\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/radio/src/radio.vue?vue&type=template&id=69cd6268&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __nested_webpack_require_6691__(4);\nvar emitter_default = /*#__PURE__*/__nested_webpack_require_6691__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/radio/src/radio.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var radiovue_type_script_lang_js_ = ({\n name: 'ElRadio',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n\n elFormItem: {\n default: ''\n }\n },\n\n componentName: 'ElRadio',\n\n props: {\n value: {},\n label: {},\n disabled: Boolean,\n name: String,\n border: Boolean,\n size: String\n },\n\n data: function data() {\n return {\n focus: false\n };\n },\n\n computed: {\n isGroup: function isGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElRadioGroup') {\n parent = parent.$parent;\n } else {\n this._radioGroup = parent;\n return true;\n }\n }\n return false;\n },\n\n model: {\n get: function get() {\n return this.isGroup ? this._radioGroup.value : this.value;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.dispatch('ElRadioGroup', 'input', [val]);\n } else {\n this.$emit('input', val);\n }\n this.$refs.radio && (this.$refs.radio.checked = this.model === this.label);\n }\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n radioSize: function radioSize() {\n var temRadioSize = this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n return this.isGroup ? this._radioGroup.radioGroupSize || temRadioSize : temRadioSize;\n },\n isDisabled: function isDisabled() {\n return this.isGroup ? this._radioGroup.disabled || this.disabled || (this.elForm || {}).disabled : this.disabled || (this.elForm || {}).disabled;\n },\n tabIndex: function tabIndex() {\n return this.isDisabled || this.isGroup && this.model !== this.label ? -1 : 0;\n }\n },\n\n methods: {\n handleChange: function handleChange() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.$emit('change', _this.model);\n _this.isGroup && _this.dispatch('ElRadioGroup', 'handleChange', _this.model);\n });\n }\n }\n});\n// CONCATENATED MODULE: ./packages/radio/src/radio.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_radiovue_type_script_lang_js_ = (radiovue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_6691__(0);\n\n// CONCATENATED MODULE: ./packages/radio/src/radio.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_radiovue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/radio/src/radio.vue\"\n/* harmony default export */ var src_radio = (component.exports);\n// CONCATENATED MODULE: ./packages/radio/index.js\n\n\n/* istanbul ignore next */\nsrc_radio.install = function (Vue) {\n Vue.component(src_radio.name, src_radio);\n};\n\n/* harmony default export */ var packages_radio = __nested_webpack_exports__[\"default\"] = (src_radio);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvcmFkaW8uanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOEJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDhCQUFtQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZUFBZSw4QkFBbUI7QUFDbEMsbURBQW1ELCtCQUErQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0EsaUVBQWlFLGlCQUFpQjtBQUNsRjtBQUNBLDBEQUEwRCxhQUFhO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZ0NBQWdDLDhCQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDhCQUFtQjtBQUM5QixrREFBa0QsZ0NBQWdDO0FBQ2xGLDBFQUEwRSw4QkFBbUIsNEJBQTRCLG9CQUFvQjtBQUM3STtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0Esb0NBQW9DLDRCQUE0QjtBQUNoRSwwQ0FBMEM7QUFDMUMsV0FBVyw4QkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQixrQ0FBa0M7QUFDL0Q7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4QkFBbUIsQ0FBQyw4QkFBbUI7QUFDeEQsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsMEJBQW1CLEVBQUUsK0JBQW1COztBQUVo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QTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxtQ0FBbUM7QUFDbkMsS0FBSztBQUNMO0FBQ0Esa0ZBQWtGO0FBQ2xGO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNEZBQTRGLGdEQUFnRDtBQUM1SSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLCtCQUFtQjs7QUFFN0M7Ozs7OztBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFLLEVBQUUsWUFBWTtBQUN2QjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtEQUFrRCwwQkFBbUI7O0FBRXJFLE9BQU87O0FBRVAsVUFBVSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi9yYWRpby5qcz80NWVhIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID1cbi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vKioqKioqLyBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuLyoqKioqKi8gXHRcdHJldHVybiBucztcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gODgpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoe1xuXG4vKioqLyAwOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gbm9ybWFsaXplQ29tcG9uZW50OyB9KTtcbi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KSB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIDQ6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL21peGlucy9lbWl0dGVyXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gODg6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjljZDYyNjgmXG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwibGFiZWxcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1yYWRpb1wiLFxuICAgICAgY2xhc3M6IFtcbiAgICAgICAgX3ZtLmJvcmRlciAmJiBfdm0ucmFkaW9TaXplID8gXCJlbC1yYWRpby0tXCIgKyBfdm0ucmFkaW9TaXplIDogXCJcIixcbiAgICAgICAgeyBcImlzLWRpc2FibGVkXCI6IF92bS5pc0Rpc2FibGVkIH0sXG4gICAgICAgIHsgXCJpcy1mb2N1c1wiOiBfdm0uZm9jdXMgfSxcbiAgICAgICAgeyBcImlzLWJvcmRlcmVkXCI6IF92bS5ib3JkZXIgfSxcbiAgICAgICAgeyBcImlzLWNoZWNrZWRcIjogX3ZtLm1vZGVsID09PSBfdm0ubGFiZWwgfVxuICAgICAgXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6IFwicmFkaW9cIixcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogX3ZtLm1vZGVsID09PSBfdm0ubGFiZWwsXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBfdm0uaXNEaXNhYmxlZCxcbiAgICAgICAgdGFiaW5kZXg6IF92bS50YWJJbmRleFxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGtleWRvd246IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwic3BhY2VcIiwgMzIsICRldmVudC5rZXksIFtcIiBcIiwgXCJTcGFjZWJhclwiXSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgX3ZtLm1vZGVsID0gX3ZtLmlzRGlzYWJsZWQgPyBfdm0ubW9kZWwgOiBfdm0ubGFiZWxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwic3BhblwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcmFkaW9fX2lucHV0XCIsXG4gICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgIFwiaXMtZGlzYWJsZWRcIjogX3ZtLmlzRGlzYWJsZWQsXG4gICAgICAgICAgICBcImlzLWNoZWNrZWRcIjogX3ZtLm1vZGVsID09PSBfdm0ubGFiZWxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1yYWRpb19faW5uZXJcIiB9KSxcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm1vZGVsLFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibW9kZWxcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVmOiBcInJhZGlvXCIsXG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJlbC1yYWRpb19fb3JpZ2luYWxcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwicmFkaW9cIixcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIixcbiAgICAgICAgICAgICAgbmFtZTogX3ZtLm5hbWUsXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uaXNEaXNhYmxlZCxcbiAgICAgICAgICAgICAgdGFiaW5kZXg6IFwiLTFcIixcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS5sYWJlbCxcbiAgICAgICAgICAgICAgY2hlY2tlZDogX3ZtLl9xKF92bS5tb2RlbCwgX3ZtLmxhYmVsKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBfdm0uZm9jdXMgPSB0cnVlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIF92bS5mb2N1cyA9IGZhbHNlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNoYW5nZTogW1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgX3ZtLm1vZGVsID0gX3ZtLmxhYmVsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfdm0uaGFuZGxlQ2hhbmdlXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICApLFxuICAgICAgX2MoXG4gICAgICAgIFwic3BhblwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtcmFkaW9fX2xhYmVsXCIsXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGtleWRvd246IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfdm0uX3QoXCJkZWZhdWx0XCIpLFxuICAgICAgICAgICFfdm0uJHNsb3RzLmRlZmF1bHQgPyBbX3ZtLl92KF92bS5fcyhfdm0ubGFiZWwpKV0gOiBfdm0uX2UoKVxuICAgICAgICBdLFxuICAgICAgICAyXG4gICAgICApXG4gICAgXVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OWNkNjI2OCZcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL21peGlucy9lbWl0dGVyXCJcbnZhciBlbWl0dGVyXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgZW1pdHRlcl9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihlbWl0dGVyXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3JhZGlvL3NyYy9yYWRpby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciByYWRpb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG5hbWU6ICdFbFJhZGlvJyxcblxuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sXG5cbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG5cbiAgICBlbEZvcm1JdGVtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnROYW1lOiAnRWxSYWRpbycsXG5cbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge30sXG4gICAgbGFiZWw6IHt9LFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIG5hbWU6IFN0cmluZyxcbiAgICBib3JkZXI6IEJvb2xlYW4sXG4gICAgc2l6ZTogU3RyaW5nXG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9jdXM6IGZhbHNlXG4gICAgfTtcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGlzR3JvdXA6IGZ1bmN0aW9uIGlzR3JvdXAoKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50LiRvcHRpb25zLmNvbXBvbmVudE5hbWUgIT09ICdFbFJhZGlvR3JvdXAnKSB7XG4gICAgICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fcmFkaW9Hcm91cCA9IHBhcmVudDtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbiAgICBtb2RlbDoge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzR3JvdXAgPyB0aGlzLl9yYWRpb0dyb3VwLnZhbHVlIDogdGhpcy52YWx1ZTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNHcm91cCkge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsUmFkaW9Hcm91cCcsICdpbnB1dCcsIFt2YWxdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4kcmVmcy5yYWRpbyAmJiAodGhpcy4kcmVmcy5yYWRpby5jaGVja2VkID0gdGhpcy5tb2RlbCA9PT0gdGhpcy5sYWJlbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBfZWxGb3JtSXRlbVNpemU6IGZ1bmN0aW9uIF9lbEZvcm1JdGVtU2l6ZSgpIHtcbiAgICAgIHJldHVybiAodGhpcy5lbEZvcm1JdGVtIHx8IHt9KS5lbEZvcm1JdGVtU2l6ZTtcbiAgICB9LFxuICAgIHJhZGlvU2l6ZTogZnVuY3Rpb24gcmFkaW9TaXplKCkge1xuICAgICAgdmFyIHRlbVJhZGlvU2l6ZSA9IHRoaXMuc2l6ZSB8fCB0aGlzLl9lbEZvcm1JdGVtU2l6ZSB8fCAodGhpcy4kRUxFTUVOVCB8fCB7fSkuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzLmlzR3JvdXAgPyB0aGlzLl9yYWRpb0dyb3VwLnJhZGlvR3JvdXBTaXplIHx8IHRlbVJhZGlvU2l6ZSA6IHRlbVJhZGlvU2l6ZTtcbiAgICB9LFxuICAgIGlzRGlzYWJsZWQ6IGZ1bmN0aW9uIGlzRGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5fcmFkaW9Hcm91cC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLmVsRm9ybSB8fCB7fSkuZGlzYWJsZWQgOiB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLmVsRm9ybSB8fCB7fSkuZGlzYWJsZWQ7XG4gICAgfSxcbiAgICB0YWJJbmRleDogZnVuY3Rpb24gdGFiSW5kZXgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkIHx8IHRoaXMuaXNHcm91cCAmJiB0aGlzLm1vZGVsICE9PSB0aGlzLmxhYmVsID8gLTEgOiAwO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaGFuZGxlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLiRlbWl0KCdjaGFuZ2UnLCBfdGhpcy5tb2RlbCk7XG4gICAgICAgIF90aGlzLmlzR3JvdXAgJiYgX3RoaXMuZGlzcGF0Y2goJ0VsUmFkaW9Hcm91cCcsICdoYW5kbGVDaGFuZ2UnLCBfdGhpcy5tb2RlbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yYWRpby9zcmMvcmFkaW8udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19yYWRpb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChyYWRpb3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcbnZhciBjb21wb25lbnROb3JtYWxpemVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yYWRpby9zcmMvcmFkaW8udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY29tcG9uZW50ID0gT2JqZWN0KGNvbXBvbmVudE5vcm1hbGl6ZXJbXCJhXCIgLyogZGVmYXVsdCAqL10pKFxuICBzcmNfcmFkaW92dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhcGk7IH1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvcmFkaW8vc3JjL3JhZGlvLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfcmFkaW8gPSAoY29tcG9uZW50LmV4cG9ydHMpO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9yYWRpby9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5zcmNfcmFkaW8uaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzcmNfcmFkaW8ubmFtZSwgc3JjX3JhZGlvKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3JhZGlvID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoc3JjX3JhZGlvKTtcblxuLyoqKi8gfSlcblxuLyoqKioqKi8gfSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/radio.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/scrollbar.js":
/*!**************************************************!*\
!*** ./node_modules/element-ui/lib/scrollbar.js ***!
\**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 133);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 133:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3675__) {\n\n\"use strict\";\n__nested_webpack_require_3675__.r(__nested_webpack_exports__);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/resize-event\"\nvar resize_event_ = __nested_webpack_require_3675__(16);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/scrollbar-width\"\nvar scrollbar_width_ = __nested_webpack_require_3675__(39);\nvar scrollbar_width_default = /*#__PURE__*/__nested_webpack_require_3675__.n(scrollbar_width_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __nested_webpack_require_3675__(3);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/dom\"\nvar dom_ = __nested_webpack_require_3675__(2);\n\n// CONCATENATED MODULE: ./packages/scrollbar/src/util.js\nvar BAR_MAP = {\n vertical: {\n offset: 'offsetHeight',\n scroll: 'scrollTop',\n scrollSize: 'scrollHeight',\n size: 'height',\n key: 'vertical',\n axis: 'Y',\n client: 'clientY',\n direction: 'top'\n },\n horizontal: {\n offset: 'offsetWidth',\n scroll: 'scrollLeft',\n scrollSize: 'scrollWidth',\n size: 'width',\n key: 'horizontal',\n axis: 'X',\n client: 'clientX',\n direction: 'left'\n }\n};\n\nfunction renderThumbStyle(_ref) {\n var move = _ref.move,\n size = _ref.size,\n bar = _ref.bar;\n\n var style = {};\n var translate = 'translate' + bar.axis + '(' + move + '%)';\n\n style[bar.size] = size;\n style.transform = translate;\n style.msTransform = translate;\n style.webkitTransform = translate;\n\n return style;\n};\n// CONCATENATED MODULE: ./packages/scrollbar/src/bar.js\n\n\n\n/* istanbul ignore next */\n/* harmony default export */ var src_bar = ({\n name: 'Bar',\n\n props: {\n vertical: Boolean,\n size: String,\n move: Number\n },\n\n computed: {\n bar: function bar() {\n return BAR_MAP[this.vertical ? 'vertical' : 'horizontal'];\n },\n wrap: function wrap() {\n return this.$parent.wrap;\n }\n },\n\n render: function render(h) {\n var size = this.size,\n move = this.move,\n bar = this.bar;\n\n\n return h(\n 'div',\n {\n 'class': ['el-scrollbar__bar', 'is-' + bar.key],\n on: {\n 'mousedown': this.clickTrackHandler\n }\n },\n [h('div', {\n ref: 'thumb',\n 'class': 'el-scrollbar__thumb',\n on: {\n 'mousedown': this.clickThumbHandler\n },\n\n style: renderThumbStyle({ size: size, move: move, bar: bar }) })]\n );\n },\n\n\n methods: {\n clickThumbHandler: function clickThumbHandler(e) {\n // prevent click event of right button\n if (e.ctrlKey || e.button === 2) {\n return;\n }\n this.startDrag(e);\n this[this.bar.axis] = e.currentTarget[this.bar.offset] - (e[this.bar.client] - e.currentTarget.getBoundingClientRect()[this.bar.direction]);\n },\n clickTrackHandler: function clickTrackHandler(e) {\n var offset = Math.abs(e.target.getBoundingClientRect()[this.bar.direction] - e[this.bar.client]);\n var thumbHalf = this.$refs.thumb[this.bar.offset] / 2;\n var thumbPositionPercentage = (offset - thumbHalf) * 100 / this.$el[this.bar.offset];\n\n this.wrap[this.bar.scroll] = thumbPositionPercentage * this.wrap[this.bar.scrollSize] / 100;\n },\n startDrag: function startDrag(e) {\n e.stopImmediatePropagation();\n this.cursorDown = true;\n\n Object(dom_[\"on\"])(document, 'mousemove', this.mouseMoveDocumentHandler);\n Object(dom_[\"on\"])(document, 'mouseup', this.mouseUpDocumentHandler);\n document.onselectstart = function () {\n return false;\n };\n },\n mouseMoveDocumentHandler: function mouseMoveDocumentHandler(e) {\n if (this.cursorDown === false) return;\n var prevPage = this[this.bar.axis];\n\n if (!prevPage) return;\n\n var offset = (this.$el.getBoundingClientRect()[this.bar.direction] - e[this.bar.client]) * -1;\n var thumbClickPosition = this.$refs.thumb[this.bar.offset] - prevPage;\n var thumbPositionPercentage = (offset - thumbClickPosition) * 100 / this.$el[this.bar.offset];\n\n this.wrap[this.bar.scroll] = thumbPositionPercentage * this.wrap[this.bar.scrollSize] / 100;\n },\n mouseUpDocumentHandler: function mouseUpDocumentHandler(e) {\n this.cursorDown = false;\n this[this.bar.axis] = 0;\n Object(dom_[\"off\"])(document, 'mousemove', this.mouseMoveDocumentHandler);\n document.onselectstart = null;\n }\n },\n\n destroyed: function destroyed() {\n Object(dom_[\"off\"])(document, 'mouseup', this.mouseUpDocumentHandler);\n }\n});\n// CONCATENATED MODULE: ./packages/scrollbar/src/main.js\n// reference https://github.com/noeldelgado/gemini-scrollbar/blob/master/index.js\n\n\n\n\n\n\n/* istanbul ignore next */\n/* harmony default export */ var main = ({\n name: 'ElScrollbar',\n\n components: { Bar: src_bar },\n\n props: {\n native: Boolean,\n wrapStyle: {},\n wrapClass: {},\n viewClass: {},\n viewStyle: {},\n noresize: Boolean, // 如果 container 尺寸不会发生变化,最好设置它可以优化性能\n tag: {\n type: String,\n default: 'div'\n }\n },\n\n data: function data() {\n return {\n sizeWidth: '0',\n sizeHeight: '0',\n moveX: 0,\n moveY: 0\n };\n },\n\n\n computed: {\n wrap: function wrap() {\n return this.$refs.wrap;\n }\n },\n\n render: function render(h) {\n var gutter = scrollbar_width_default()();\n var style = this.wrapStyle;\n\n if (gutter) {\n var gutterWith = '-' + gutter + 'px';\n var gutterStyle = 'margin-bottom: ' + gutterWith + '; margin-right: ' + gutterWith + ';';\n\n if (Array.isArray(this.wrapStyle)) {\n style = Object(util_[\"toObject\"])(this.wrapStyle);\n style.marginRight = style.marginBottom = gutterWith;\n } else if (typeof this.wrapStyle === 'string') {\n style += gutterStyle;\n } else {\n style = gutterStyle;\n }\n }\n var view = h(this.tag, {\n class: ['el-scrollbar__view', this.viewClass],\n style: this.viewStyle,\n ref: 'resize'\n }, this.$slots.default);\n var wrap = h(\n 'div',\n {\n ref: 'wrap',\n style: style,\n on: {\n 'scroll': this.handleScroll\n },\n\n 'class': [this.wrapClass, 'el-scrollbar__wrap', gutter ? '' : 'el-scrollbar__wrap--hidden-default'] },\n [[view]]\n );\n var nodes = void 0;\n\n if (!this.native) {\n nodes = [wrap, h(src_bar, {\n attrs: {\n move: this.moveX,\n size: this.sizeWidth }\n }), h(src_bar, {\n attrs: {\n vertical: true,\n move: this.moveY,\n size: this.sizeHeight }\n })];\n } else {\n nodes = [h(\n 'div',\n {\n ref: 'wrap',\n 'class': [this.wrapClass, 'el-scrollbar__wrap'],\n style: style },\n [[view]]\n )];\n }\n return h('div', { class: 'el-scrollbar' }, nodes);\n },\n\n\n methods: {\n handleScroll: function handleScroll() {\n var wrap = this.wrap;\n\n this.moveY = wrap.scrollTop * 100 / wrap.clientHeight;\n this.moveX = wrap.scrollLeft * 100 / wrap.clientWidth;\n },\n update: function update() {\n var heightPercentage = void 0,\n widthPercentage = void 0;\n var wrap = this.wrap;\n if (!wrap) return;\n\n heightPercentage = wrap.clientHeight * 100 / wrap.scrollHeight;\n widthPercentage = wrap.clientWidth * 100 / wrap.scrollWidth;\n\n this.sizeHeight = heightPercentage < 100 ? heightPercentage + '%' : '';\n this.sizeWidth = widthPercentage < 100 ? widthPercentage + '%' : '';\n }\n },\n\n mounted: function mounted() {\n if (this.native) return;\n this.$nextTick(this.update);\n !this.noresize && Object(resize_event_[\"addResizeListener\"])(this.$refs.resize, this.update);\n },\n beforeDestroy: function beforeDestroy() {\n if (this.native) return;\n !this.noresize && Object(resize_event_[\"removeResizeListener\"])(this.$refs.resize, this.update);\n }\n});\n// CONCATENATED MODULE: ./packages/scrollbar/index.js\n\n\n/* istanbul ignore next */\nmain.install = function (Vue) {\n Vue.component(main.name, main);\n};\n\n/* harmony default export */ var scrollbar = __nested_webpack_exports__[\"default\"] = (main);\n\n/***/ }),\n\n/***/ 16:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/resize-event */ \"./node_modules/element-ui/lib/utils/resize-event.js\");\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/dom */ \"./node_modules/element-ui/lib/utils/dom.js\");\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\n/***/ }),\n\n/***/ 39:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/scrollbar-width */ \"./node_modules/element-ui/lib/utils/scrollbar-width.js\");\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvc2Nyb2xsYmFyLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDhCQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSw4QkFBbUI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGVBQWUsOEJBQW1CO0FBQ2xDLG1EQUFtRCwrQkFBK0I7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLGlFQUFpRSxpQkFBaUI7QUFDbEY7QUFDQSwwREFBMEQsYUFBYTtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGdDQUFnQyw4QkFBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4QkFBbUI7QUFDOUIsa0RBQWtELGdDQUFnQztBQUNsRiwwRUFBMEUsOEJBQW1CLDRCQUE0QixvQkFBb0I7QUFDN0k7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLG9DQUFvQyw0QkFBNEI7QUFDaEUsMENBQTBDO0FBQzFDLFdBQVcsOEJBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUIsa0NBQWtDO0FBQy9EO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOEJBQW1CLENBQUMsOEJBQW1CO0FBQ3hELFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLDBCQUFtQixFQUFFLCtCQUFtQjs7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QUEyQjs7QUFFcEQsT0FBTzs7QUFFUDtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLG9HQUFzQzs7QUFFL0QsT0FBTzs7QUFFUCxVQUFVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL3Njcm9sbGJhci5qcz8yOWVmIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID1cbi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vKioqKioqLyBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuLyoqKioqKi8gXHRcdHJldHVybiBucztcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMTMzKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKHtcblxuLyoqKi8gMTMzOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3Jlc2l6ZS1ldmVudFwiXG52YXIgcmVzaXplX2V2ZW50XyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvc2Nyb2xsYmFyLXdpZHRoXCJcbnZhciBzY3JvbGxiYXJfd2lkdGhfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7XG52YXIgc2Nyb2xsYmFyX3dpZHRoX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHNjcm9sbGJhcl93aWR0aF8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvdXRpbFwiXG52YXIgdXRpbF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvZG9tXCJcbnZhciBkb21fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zY3JvbGxiYXIvc3JjL3V0aWwuanNcbnZhciBCQVJfTUFQID0ge1xuICB2ZXJ0aWNhbDoge1xuICAgIG9mZnNldDogJ29mZnNldEhlaWdodCcsXG4gICAgc2Nyb2xsOiAnc2Nyb2xsVG9wJyxcbiAgICBzY3JvbGxTaXplOiAnc2Nyb2xsSGVpZ2h0JyxcbiAgICBzaXplOiAnaGVpZ2h0JyxcbiAgICBrZXk6ICd2ZXJ0aWNhbCcsXG4gICAgYXhpczogJ1knLFxuICAgIGNsaWVudDogJ2NsaWVudFknLFxuICAgIGRpcmVjdGlvbjogJ3RvcCdcbiAgfSxcbiAgaG9yaXpvbnRhbDoge1xuICAgIG9mZnNldDogJ29mZnNldFdpZHRoJyxcbiAgICBzY3JvbGw6ICdzY3JvbGxMZWZ0JyxcbiAgICBzY3JvbGxTaXplOiAnc2Nyb2xsV2lkdGgnLFxuICAgIHNpemU6ICd3aWR0aCcsXG4gICAga2V5OiAnaG9yaXpvbnRhbCcsXG4gICAgYXhpczogJ1gnLFxuICAgIGNsaWVudDogJ2NsaWVudFgnLFxuICAgIGRpcmVjdGlvbjogJ2xlZnQnXG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlbmRlclRodW1iU3R5bGUoX3JlZikge1xuICB2YXIgbW92ZSA9IF9yZWYubW92ZSxcbiAgICAgIHNpemUgPSBfcmVmLnNpemUsXG4gICAgICBiYXIgPSBfcmVmLmJhcjtcblxuICB2YXIgc3R5bGUgPSB7fTtcbiAgdmFyIHRyYW5zbGF0ZSA9ICd0cmFuc2xhdGUnICsgYmFyLmF4aXMgKyAnKCcgKyBtb3ZlICsgJyUpJztcblxuICBzdHlsZVtiYXIuc2l6ZV0gPSBzaXplO1xuICBzdHlsZS50cmFuc2Zvcm0gPSB0cmFuc2xhdGU7XG4gIHN0eWxlLm1zVHJhbnNmb3JtID0gdHJhbnNsYXRlO1xuICBzdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSB0cmFuc2xhdGU7XG5cbiAgcmV0dXJuIHN0eWxlO1xufTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2Nyb2xsYmFyL3NyYy9iYXIuanNcblxuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfYmFyID0gKHtcbiAgbmFtZTogJ0JhcicsXG5cbiAgcHJvcHM6IHtcbiAgICB2ZXJ0aWNhbDogQm9vbGVhbixcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgbW92ZTogTnVtYmVyXG4gIH0sXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBiYXI6IGZ1bmN0aW9uIGJhcigpIHtcbiAgICAgIHJldHVybiBCQVJfTUFQW3RoaXMudmVydGljYWwgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnXTtcbiAgICB9LFxuICAgIHdyYXA6IGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcGFyZW50LndyYXA7XG4gICAgfVxuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuc2l6ZSxcbiAgICAgICAgbW92ZSA9IHRoaXMubW92ZSxcbiAgICAgICAgYmFyID0gdGhpcy5iYXI7XG5cblxuICAgIHJldHVybiBoKFxuICAgICAgJ2RpdicsXG4gICAgICB7XG4gICAgICAgICdjbGFzcyc6IFsnZWwtc2Nyb2xsYmFyX19iYXInLCAnaXMtJyArIGJhci5rZXldLFxuICAgICAgICBvbjoge1xuICAgICAgICAgICdtb3VzZWRvd24nOiB0aGlzLmNsaWNrVHJhY2tIYW5kbGVyXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbaCgnZGl2Jywge1xuICAgICAgICByZWY6ICd0aHVtYicsXG4gICAgICAgICdjbGFzcyc6ICdlbC1zY3JvbGxiYXJfX3RodW1iJyxcbiAgICAgICAgb246IHtcbiAgICAgICAgICAnbW91c2Vkb3duJzogdGhpcy5jbGlja1RodW1iSGFuZGxlclxuICAgICAgICB9LFxuXG4gICAgICAgIHN0eWxlOiByZW5kZXJUaHVtYlN0eWxlKHsgc2l6ZTogc2l6ZSwgbW92ZTogbW92ZSwgYmFyOiBiYXIgfSkgfSldXG4gICAgKTtcbiAgfSxcblxuXG4gIG1ldGhvZHM6IHtcbiAgICBjbGlja1RodW1iSGFuZGxlcjogZnVuY3Rpb24gY2xpY2tUaHVtYkhhbmRsZXIoZSkge1xuICAgICAgLy8gcHJldmVudCBjbGljayBldmVudCBvZiByaWdodCBidXR0b25cbiAgICAgIGlmIChlLmN0cmxLZXkgfHwgZS5idXR0b24gPT09IDIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zdGFydERyYWcoZSk7XG4gICAgICB0aGlzW3RoaXMuYmFyLmF4aXNdID0gZS5jdXJyZW50VGFyZ2V0W3RoaXMuYmFyLm9mZnNldF0gLSAoZVt0aGlzLmJhci5jbGllbnRdIC0gZS5jdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW3RoaXMuYmFyLmRpcmVjdGlvbl0pO1xuICAgIH0sXG4gICAgY2xpY2tUcmFja0hhbmRsZXI6IGZ1bmN0aW9uIGNsaWNrVHJhY2tIYW5kbGVyKGUpIHtcbiAgICAgIHZhciBvZmZzZXQgPSBNYXRoLmFicyhlLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0aGlzLmJhci5kaXJlY3Rpb25dIC0gZVt0aGlzLmJhci5jbGllbnRdKTtcbiAgICAgIHZhciB0aHVtYkhhbGYgPSB0aGlzLiRyZWZzLnRodW1iW3RoaXMuYmFyLm9mZnNldF0gLyAyO1xuICAgICAgdmFyIHRodW1iUG9zaXRpb25QZXJjZW50YWdlID0gKG9mZnNldCAtIHRodW1iSGFsZikgKiAxMDAgLyB0aGlzLiRlbFt0aGlzLmJhci5vZmZzZXRdO1xuXG4gICAgICB0aGlzLndyYXBbdGhpcy5iYXIuc2Nyb2xsXSA9IHRodW1iUG9zaXRpb25QZXJjZW50YWdlICogdGhpcy53cmFwW3RoaXMuYmFyLnNjcm9sbFNpemVdIC8gMTAwO1xuICAgIH0sXG4gICAgc3RhcnREcmFnOiBmdW5jdGlvbiBzdGFydERyYWcoZSkge1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuY3Vyc29yRG93biA9IHRydWU7XG5cbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5tb3VzZU1vdmVEb2N1bWVudEhhbmRsZXIpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkoZG9jdW1lbnQsICdtb3VzZXVwJywgdGhpcy5tb3VzZVVwRG9jdW1lbnRIYW5kbGVyKTtcbiAgICAgIGRvY3VtZW50Lm9uc2VsZWN0c3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBtb3VzZU1vdmVEb2N1bWVudEhhbmRsZXI6IGZ1bmN0aW9uIG1vdXNlTW92ZURvY3VtZW50SGFuZGxlcihlKSB7XG4gICAgICBpZiAodGhpcy5jdXJzb3JEb3duID09PSBmYWxzZSkgcmV0dXJuO1xuICAgICAgdmFyIHByZXZQYWdlID0gdGhpc1t0aGlzLmJhci5heGlzXTtcblxuICAgICAgaWYgKCFwcmV2UGFnZSkgcmV0dXJuO1xuXG4gICAgICB2YXIgb2Zmc2V0ID0gKHRoaXMuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW3RoaXMuYmFyLmRpcmVjdGlvbl0gLSBlW3RoaXMuYmFyLmNsaWVudF0pICogLTE7XG4gICAgICB2YXIgdGh1bWJDbGlja1Bvc2l0aW9uID0gdGhpcy4kcmVmcy50aHVtYlt0aGlzLmJhci5vZmZzZXRdIC0gcHJldlBhZ2U7XG4gICAgICB2YXIgdGh1bWJQb3NpdGlvblBlcmNlbnRhZ2UgPSAob2Zmc2V0IC0gdGh1bWJDbGlja1Bvc2l0aW9uKSAqIDEwMCAvIHRoaXMuJGVsW3RoaXMuYmFyLm9mZnNldF07XG5cbiAgICAgIHRoaXMud3JhcFt0aGlzLmJhci5zY3JvbGxdID0gdGh1bWJQb3NpdGlvblBlcmNlbnRhZ2UgKiB0aGlzLndyYXBbdGhpcy5iYXIuc2Nyb2xsU2l6ZV0gLyAxMDA7XG4gICAgfSxcbiAgICBtb3VzZVVwRG9jdW1lbnRIYW5kbGVyOiBmdW5jdGlvbiBtb3VzZVVwRG9jdW1lbnRIYW5kbGVyKGUpIHtcbiAgICAgIHRoaXMuY3Vyc29yRG93biA9IGZhbHNlO1xuICAgICAgdGhpc1t0aGlzLmJhci5heGlzXSA9IDA7XG4gICAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkoZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlTW92ZURvY3VtZW50SGFuZGxlcik7XG4gICAgICBkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ID0gbnVsbDtcbiAgICB9XG4gIH0sXG5cbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgT2JqZWN0KGRvbV9bXCJvZmZcIl0pKGRvY3VtZW50LCAnbW91c2V1cCcsIHRoaXMubW91c2VVcERvY3VtZW50SGFuZGxlcik7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zY3JvbGxiYXIvc3JjL21haW4uanNcbi8vIHJlZmVyZW5jZSBodHRwczovL2dpdGh1Yi5jb20vbm9lbGRlbGdhZG8vZ2VtaW5pLXNjcm9sbGJhci9ibG9iL21hc3Rlci9pbmRleC5qc1xuXG5cblxuXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1haW4gPSAoe1xuICBuYW1lOiAnRWxTY3JvbGxiYXInLFxuXG4gIGNvbXBvbmVudHM6IHsgQmFyOiBzcmNfYmFyIH0sXG5cbiAgcHJvcHM6IHtcbiAgICBuYXRpdmU6IEJvb2xlYW4sXG4gICAgd3JhcFN0eWxlOiB7fSxcbiAgICB3cmFwQ2xhc3M6IHt9LFxuICAgIHZpZXdDbGFzczoge30sXG4gICAgdmlld1N0eWxlOiB7fSxcbiAgICBub3Jlc2l6ZTogQm9vbGVhbiwgLy8g5aaC5p6cIGNvbnRhaW5lciDlsLrlr7jkuI3kvJrlj5HnlJ/lj5jljJbvvIzmnIDlpb3orr7nva7lroPlj6/ku6XkvJjljJbmgKfog71cbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdkaXYnXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNpemVXaWR0aDogJzAnLFxuICAgICAgc2l6ZUhlaWdodDogJzAnLFxuICAgICAgbW92ZVg6IDAsXG4gICAgICBtb3ZlWTogMFxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIHdyYXA6IGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcmVmcy53cmFwO1xuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGd1dHRlciA9IHNjcm9sbGJhcl93aWR0aF9kZWZhdWx0KCkoKTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLndyYXBTdHlsZTtcblxuICAgIGlmIChndXR0ZXIpIHtcbiAgICAgIHZhciBndXR0ZXJXaXRoID0gJy0nICsgZ3V0dGVyICsgJ3B4JztcbiAgICAgIHZhciBndXR0ZXJTdHlsZSA9ICdtYXJnaW4tYm90dG9tOiAnICsgZ3V0dGVyV2l0aCArICc7IG1hcmdpbi1yaWdodDogJyArIGd1dHRlcldpdGggKyAnOyc7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMud3JhcFN0eWxlKSkge1xuICAgICAgICBzdHlsZSA9IE9iamVjdCh1dGlsX1tcInRvT2JqZWN0XCJdKSh0aGlzLndyYXBTdHlsZSk7XG4gICAgICAgIHN0eWxlLm1hcmdpblJpZ2h0ID0gc3R5bGUubWFyZ2luQm90dG9tID0gZ3V0dGVyV2l0aDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMud3JhcFN0eWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICBzdHlsZSArPSBndXR0ZXJTdHlsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0eWxlID0gZ3V0dGVyU3R5bGU7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciB2aWV3ID0gaCh0aGlzLnRhZywge1xuICAgICAgY2xhc3M6IFsnZWwtc2Nyb2xsYmFyX192aWV3JywgdGhpcy52aWV3Q2xhc3NdLFxuICAgICAgc3R5bGU6IHRoaXMudmlld1N0eWxlLFxuICAgICAgcmVmOiAncmVzaXplJ1xuICAgIH0sIHRoaXMuJHNsb3RzLmRlZmF1bHQpO1xuICAgIHZhciB3cmFwID0gaChcbiAgICAgICdkaXYnLFxuICAgICAge1xuICAgICAgICByZWY6ICd3cmFwJyxcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICBvbjoge1xuICAgICAgICAgICdzY3JvbGwnOiB0aGlzLmhhbmRsZVNjcm9sbFxuICAgICAgICB9LFxuXG4gICAgICAgICdjbGFzcyc6IFt0aGlzLndyYXBDbGFzcywgJ2VsLXNjcm9sbGJhcl9fd3JhcCcsIGd1dHRlciA/ICcnIDogJ2VsLXNjcm9sbGJhcl9fd3JhcC0taGlkZGVuLWRlZmF1bHQnXSB9LFxuICAgICAgW1t2aWV3XV1cbiAgICApO1xuICAgIHZhciBub2RlcyA9IHZvaWQgMDtcblxuICAgIGlmICghdGhpcy5uYXRpdmUpIHtcbiAgICAgIG5vZGVzID0gW3dyYXAsIGgoc3JjX2Jhciwge1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIG1vdmU6IHRoaXMubW92ZVgsXG4gICAgICAgICAgc2l6ZTogdGhpcy5zaXplV2lkdGggfVxuICAgICAgfSksIGgoc3JjX2Jhciwge1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgIG1vdmU6IHRoaXMubW92ZVksXG4gICAgICAgICAgc2l6ZTogdGhpcy5zaXplSGVpZ2h0IH1cbiAgICAgIH0pXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZXMgPSBbaChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHtcbiAgICAgICAgICByZWY6ICd3cmFwJyxcbiAgICAgICAgICAnY2xhc3MnOiBbdGhpcy53cmFwQ2xhc3MsICdlbC1zY3JvbGxiYXJfX3dyYXAnXSxcbiAgICAgICAgICBzdHlsZTogc3R5bGUgfSxcbiAgICAgICAgW1t2aWV3XV1cbiAgICAgICldO1xuICAgIH1cbiAgICByZXR1cm4gaCgnZGl2JywgeyBjbGFzczogJ2VsLXNjcm9sbGJhcicgfSwgbm9kZXMpO1xuICB9LFxuXG5cbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZVNjcm9sbDogZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKCkge1xuICAgICAgdmFyIHdyYXAgPSB0aGlzLndyYXA7XG5cbiAgICAgIHRoaXMubW92ZVkgPSB3cmFwLnNjcm9sbFRvcCAqIDEwMCAvIHdyYXAuY2xpZW50SGVpZ2h0O1xuICAgICAgdGhpcy5tb3ZlWCA9IHdyYXAuc2Nyb2xsTGVmdCAqIDEwMCAvIHdyYXAuY2xpZW50V2lkdGg7XG4gICAgfSxcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICAgIHZhciBoZWlnaHRQZXJjZW50YWdlID0gdm9pZCAwLFxuICAgICAgICAgIHdpZHRoUGVyY2VudGFnZSA9IHZvaWQgMDtcbiAgICAgIHZhciB3cmFwID0gdGhpcy53cmFwO1xuICAgICAgaWYgKCF3cmFwKSByZXR1cm47XG5cbiAgICAgIGhlaWdodFBlcmNlbnRhZ2UgPSB3cmFwLmNsaWVudEhlaWdodCAqIDEwMCAvIHdyYXAuc2Nyb2xsSGVpZ2h0O1xuICAgICAgd2lkdGhQZXJjZW50YWdlID0gd3JhcC5jbGllbnRXaWR0aCAqIDEwMCAvIHdyYXAuc2Nyb2xsV2lkdGg7XG5cbiAgICAgIHRoaXMuc2l6ZUhlaWdodCA9IGhlaWdodFBlcmNlbnRhZ2UgPCAxMDAgPyBoZWlnaHRQZXJjZW50YWdlICsgJyUnIDogJyc7XG4gICAgICB0aGlzLnNpemVXaWR0aCA9IHdpZHRoUGVyY2VudGFnZSA8IDEwMCA/IHdpZHRoUGVyY2VudGFnZSArICclJyA6ICcnO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIGlmICh0aGlzLm5hdGl2ZSkgcmV0dXJuO1xuICAgIHRoaXMuJG5leHRUaWNrKHRoaXMudXBkYXRlKTtcbiAgICAhdGhpcy5ub3Jlc2l6ZSAmJiBPYmplY3QocmVzaXplX2V2ZW50X1tcImFkZFJlc2l6ZUxpc3RlbmVyXCJdKSh0aGlzLiRyZWZzLnJlc2l6ZSwgdGhpcy51cGRhdGUpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm5hdGl2ZSkgcmV0dXJuO1xuICAgICF0aGlzLm5vcmVzaXplICYmIE9iamVjdChyZXNpemVfZXZlbnRfW1wicmVtb3ZlUmVzaXplTGlzdGVuZXJcIl0pKHRoaXMuJHJlZnMucmVzaXplLCB0aGlzLnVwZGF0ZSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zY3JvbGxiYXIvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xubWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KG1haW4ubmFtZSwgbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzY3JvbGxiYXIgPSBfX3dlYnBhY2tfZXhwb3J0c19fW1wiZGVmYXVsdFwiXSA9IChtYWluKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDE2OlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9yZXNpemUtZXZlbnRcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAyOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9kb21cIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAzOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy91dGlsXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gMzk6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL3Njcm9sbGJhci13aWR0aFwiKTtcblxuLyoqKi8gfSlcblxuLyoqKioqKi8gfSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/scrollbar.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/select.js":
/*!***********************************************!*\
!*** ./node_modules/element-ui/lib/select.js ***!
\***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 62);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3672__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3672__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 10:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/input */ \"./node_modules/element-ui/lib/input.js\");\n\n/***/ }),\n\n/***/ 12:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/clickoutside */ \"./node_modules/element-ui/lib/utils/clickoutside.js\");\n\n/***/ }),\n\n/***/ 15:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/scrollbar */ \"./node_modules/element-ui/lib/scrollbar.js\");\n\n/***/ }),\n\n/***/ 16:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/resize-event */ \"./node_modules/element-ui/lib/utils/resize-event.js\");\n\n/***/ }),\n\n/***/ 19:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! throttle-debounce/debounce */ \"./node_modules/throttle-debounce/debounce.js\");\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/shared */ \"./node_modules/element-ui/lib/utils/shared.js\");\n\n/***/ }),\n\n/***/ 22:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/focus */ \"./node_modules/element-ui/lib/mixins/focus.js\");\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\n/***/ }),\n\n/***/ 31:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/scroll-into-view */ \"./node_modules/element-ui/lib/utils/scroll-into-view.js\");\n\n/***/ }),\n\n/***/ 33:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_7618__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=template&id=7a44c642&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-select-dropdown__item\",\n class: {\n selected: _vm.itemSelected,\n \"is-disabled\": _vm.disabled || _vm.groupDisabled || _vm.limitReached,\n hover: _vm.hover\n },\n on: {\n mouseenter: _vm.hoverItem,\n click: function($event) {\n $event.stopPropagation()\n return _vm.selectOptionClick($event)\n }\n }\n },\n [_vm._t(\"default\", [_c(\"span\", [_vm._v(_vm._s(_vm.currentLabel))])])],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=template&id=7a44c642&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __nested_webpack_require_7618__(4);\nvar emitter_default = /*#__PURE__*/__nested_webpack_require_7618__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __nested_webpack_require_7618__(3);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=script&lang=js&\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var optionvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a],\n\n name: 'ElOption',\n\n componentName: 'ElOption',\n\n inject: ['select'],\n\n props: {\n value: {\n required: true\n },\n label: [String, Number],\n created: Boolean,\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n index: -1,\n groupDisabled: false,\n visible: true,\n hitState: false,\n hover: false\n };\n },\n\n\n computed: {\n isObject: function isObject() {\n return Object.prototype.toString.call(this.value).toLowerCase() === '[object object]';\n },\n currentLabel: function currentLabel() {\n return this.label || (this.isObject ? '' : this.value);\n },\n currentValue: function currentValue() {\n return this.value || this.label || '';\n },\n itemSelected: function itemSelected() {\n if (!this.select.multiple) {\n return this.isEqual(this.value, this.select.value);\n } else {\n return this.contains(this.select.value, this.value);\n }\n },\n limitReached: function limitReached() {\n if (this.select.multiple) {\n return !this.itemSelected && (this.select.value || []).length >= this.select.multipleLimit && this.select.multipleLimit > 0;\n } else {\n return false;\n }\n }\n },\n\n watch: {\n currentLabel: function currentLabel() {\n if (!this.created && !this.select.remote) this.dispatch('ElSelect', 'setSelected');\n },\n value: function value(val, oldVal) {\n var _select = this.select,\n remote = _select.remote,\n valueKey = _select.valueKey;\n\n if (!this.created && !remote) {\n if (valueKey && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && (typeof oldVal === 'undefined' ? 'undefined' : _typeof(oldVal)) === 'object' && val[valueKey] === oldVal[valueKey]) {\n return;\n }\n this.dispatch('ElSelect', 'setSelected');\n }\n }\n },\n\n methods: {\n isEqual: function isEqual(a, b) {\n if (!this.isObject) {\n return a === b;\n } else {\n var valueKey = this.select.valueKey;\n return Object(util_[\"getValueByPath\"])(a, valueKey) === Object(util_[\"getValueByPath\"])(b, valueKey);\n }\n },\n contains: function contains() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var target = arguments[1];\n\n if (!this.isObject) {\n return arr && arr.indexOf(target) > -1;\n } else {\n var valueKey = this.select.valueKey;\n return arr && arr.some(function (item) {\n return Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(target, valueKey);\n });\n }\n },\n handleGroupDisabled: function handleGroupDisabled(val) {\n this.groupDisabled = val;\n },\n hoverItem: function hoverItem() {\n if (!this.disabled && !this.groupDisabled) {\n this.select.hoverIndex = this.select.options.indexOf(this);\n }\n },\n selectOptionClick: function selectOptionClick() {\n if (this.disabled !== true && this.groupDisabled !== true) {\n this.dispatch('ElSelect', 'handleOptionClick', [this, true]);\n }\n },\n queryChange: function queryChange(query) {\n this.visible = new RegExp(Object(util_[\"escapeRegexpString\"])(query), 'i').test(this.currentLabel) || this.created;\n if (!this.visible) {\n this.select.filteredOptionsCount--;\n }\n }\n },\n\n created: function created() {\n this.select.options.push(this);\n this.select.cachedOptions.push(this);\n this.select.optionsCount++;\n this.select.filteredOptionsCount++;\n\n this.$on('queryChange', this.queryChange);\n this.$on('handleGroupDisabled', this.handleGroupDisabled);\n },\n beforeDestroy: function beforeDestroy() {\n var _select2 = this.select,\n selected = _select2.selected,\n multiple = _select2.multiple;\n\n var selectedOptions = multiple ? selected : [selected];\n var index = this.select.cachedOptions.indexOf(this);\n var selectedIndex = selectedOptions.indexOf(this);\n\n // if option is not selected, remove it from cache\n if (index > -1 && selectedIndex < 0) {\n this.select.cachedOptions.splice(index, 1);\n }\n this.select.onOptionDestroy(this.select.options.indexOf(this));\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_optionvue_type_script_lang_js_ = (optionvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_7618__(0);\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_optionvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/select/src/option.vue\"\n/* harmony default export */ var src_option = __nested_webpack_exports__[\"a\"] = (component.exports);\n\n/***/ }),\n\n/***/ 38:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/tag */ \"./node_modules/element-ui/lib/tag.js\");\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/emitter */ \"./node_modules/element-ui/lib/mixins/emitter.js\");\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/vue-popper */ \"./node_modules/element-ui/lib/utils/vue-popper.js\");\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/mixins/locale */ \"./node_modules/element-ui/lib/mixins/locale.js\");\n\n/***/ }),\n\n/***/ 62:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_15233__) {\n\n\"use strict\";\n__nested_webpack_require_15233__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=template&id=0e4aade6&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"clickoutside\",\n rawName: \"v-clickoutside\",\n value: _vm.handleClose,\n expression: \"handleClose\"\n }\n ],\n staticClass: \"el-select\",\n class: [_vm.selectSize ? \"el-select--\" + _vm.selectSize : \"\"],\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.toggleMenu($event)\n }\n }\n },\n [\n _vm.multiple\n ? _c(\n \"div\",\n {\n ref: \"tags\",\n staticClass: \"el-select__tags\",\n style: { \"max-width\": _vm.inputWidth - 32 + \"px\", width: \"100%\" }\n },\n [\n _vm.collapseTags && _vm.selected.length\n ? _c(\n \"span\",\n [\n _c(\n \"el-tag\",\n {\n attrs: {\n closable: !_vm.selectDisabled,\n size: _vm.collapseTagSize,\n hit: _vm.selected[0].hitState,\n type: \"info\",\n \"disable-transitions\": \"\"\n },\n on: {\n close: function($event) {\n _vm.deleteTag($event, _vm.selected[0])\n }\n }\n },\n [\n _c(\"span\", { staticClass: \"el-select__tags-text\" }, [\n _vm._v(_vm._s(_vm.selected[0].currentLabel))\n ])\n ]\n ),\n _vm.selected.length > 1\n ? _c(\n \"el-tag\",\n {\n attrs: {\n closable: false,\n size: _vm.collapseTagSize,\n type: \"info\",\n \"disable-transitions\": \"\"\n }\n },\n [\n _c(\n \"span\",\n { staticClass: \"el-select__tags-text\" },\n [_vm._v(\"+ \" + _vm._s(_vm.selected.length - 1))]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n !_vm.collapseTags\n ? _c(\n \"transition-group\",\n { on: { \"after-leave\": _vm.resetInputHeight } },\n _vm._l(_vm.selected, function(item) {\n return _c(\n \"el-tag\",\n {\n key: _vm.getValueKey(item),\n attrs: {\n closable: !_vm.selectDisabled,\n size: _vm.collapseTagSize,\n hit: item.hitState,\n type: \"info\",\n \"disable-transitions\": \"\"\n },\n on: {\n close: function($event) {\n _vm.deleteTag($event, item)\n }\n }\n },\n [\n _c(\"span\", { staticClass: \"el-select__tags-text\" }, [\n _vm._v(_vm._s(item.currentLabel))\n ])\n ]\n )\n }),\n 1\n )\n : _vm._e(),\n _vm.filterable\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.query,\n expression: \"query\"\n }\n ],\n ref: \"input\",\n staticClass: \"el-select__input\",\n class: [_vm.selectSize ? \"is-\" + _vm.selectSize : \"\"],\n style: {\n \"flex-grow\": \"1\",\n width: _vm.inputLength / (_vm.inputWidth - 32) + \"%\",\n \"max-width\": _vm.inputWidth - 42 + \"px\"\n },\n attrs: {\n type: \"text\",\n disabled: _vm.selectDisabled,\n autocomplete: _vm.autoComplete || _vm.autocomplete\n },\n domProps: { value: _vm.query },\n on: {\n focus: _vm.handleFocus,\n blur: function($event) {\n _vm.softFocus = false\n },\n keyup: _vm.managePlaceholder,\n keydown: [\n _vm.resetInputState,\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.handleNavigate(\"next\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n _vm.handleNavigate(\"prev\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.selectOption($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.visible = false\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k(\n $event.keyCode,\n \"delete\",\n [8, 46],\n $event.key,\n [\"Backspace\", \"Delete\", \"Del\"]\n )\n ) {\n return null\n }\n return _vm.deletePrevTag($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n _vm.visible = false\n }\n ],\n compositionstart: _vm.handleComposition,\n compositionupdate: _vm.handleComposition,\n compositionend: _vm.handleComposition,\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.query = $event.target.value\n },\n _vm.debouncedQueryChange\n ]\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-input\",\n {\n ref: \"reference\",\n class: { \"is-focus\": _vm.visible },\n attrs: {\n type: \"text\",\n placeholder: _vm.currentPlaceholder,\n name: _vm.name,\n id: _vm.id,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n size: _vm.selectSize,\n disabled: _vm.selectDisabled,\n readonly: _vm.readonly,\n \"validate-event\": false,\n tabindex: _vm.multiple && _vm.filterable ? \"-1\" : null\n },\n on: {\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n input: _vm.debouncedOnInputChange,\n compositionstart: _vm.handleComposition,\n compositionupdate: _vm.handleComposition,\n compositionend: _vm.handleComposition\n },\n nativeOn: {\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.handleNavigate(\"next\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.handleNavigate(\"prev\")\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.selectOption($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n $event.stopPropagation()\n $event.preventDefault()\n _vm.visible = false\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n _vm.visible = false\n }\n ],\n mouseenter: function($event) {\n _vm.inputHovering = true\n },\n mouseleave: function($event) {\n _vm.inputHovering = false\n }\n },\n model: {\n value: _vm.selectedLabel,\n callback: function($$v) {\n _vm.selectedLabel = $$v\n },\n expression: \"selectedLabel\"\n }\n },\n [\n _vm.$slots.prefix\n ? _c(\"template\", { slot: \"prefix\" }, [_vm._t(\"prefix\")], 2)\n : _vm._e(),\n _c(\"template\", { slot: \"suffix\" }, [\n _c(\"i\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.showClose,\n expression: \"!showClose\"\n }\n ],\n class: [\n \"el-select__caret\",\n \"el-input__icon\",\n \"el-icon-\" + _vm.iconClass\n ]\n }),\n _vm.showClose\n ? _c(\"i\", {\n staticClass:\n \"el-select__caret el-input__icon el-icon-circle-close\",\n on: { click: _vm.handleClearClick }\n })\n : _vm._e()\n ])\n ],\n 2\n ),\n _c(\n \"transition\",\n {\n attrs: { name: \"el-zoom-in-top\" },\n on: {\n \"before-enter\": _vm.handleMenuEnter,\n \"after-leave\": _vm.doDestroy\n }\n },\n [\n _c(\n \"el-select-menu\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible && _vm.emptyText !== false,\n expression: \"visible && emptyText !== false\"\n }\n ],\n ref: \"popper\",\n attrs: { \"append-to-body\": _vm.popperAppendToBody }\n },\n [\n _c(\n \"el-scrollbar\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.options.length > 0 && !_vm.loading,\n expression: \"options.length > 0 && !loading\"\n }\n ],\n ref: \"scrollbar\",\n class: {\n \"is-empty\":\n !_vm.allowCreate &&\n _vm.query &&\n _vm.filteredOptionsCount === 0\n },\n attrs: {\n tag: \"ul\",\n \"wrap-class\": \"el-select-dropdown__wrap\",\n \"view-class\": \"el-select-dropdown__list\"\n }\n },\n [\n _vm.showNewOption\n ? _c(\"el-option\", {\n attrs: { value: _vm.query, created: \"\" }\n })\n : _vm._e(),\n _vm._t(\"default\")\n ],\n 2\n ),\n _vm.emptyText &&\n (!_vm.allowCreate ||\n _vm.loading ||\n (_vm.allowCreate && _vm.options.length === 0))\n ? [\n _vm.$slots.empty\n ? _vm._t(\"empty\")\n : _c(\"p\", { staticClass: \"el-select-dropdown__empty\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.emptyText) +\n \"\\n \"\n )\n ])\n ]\n : _vm._e()\n ],\n 2\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=template&id=0e4aade6&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __nested_webpack_require_15233__(4);\nvar emitter_default = /*#__PURE__*/__nested_webpack_require_15233__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/focus\"\nvar focus_ = __nested_webpack_require_15233__(22);\nvar focus_default = /*#__PURE__*/__nested_webpack_require_15233__.n(focus_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/locale\"\nvar locale_ = __nested_webpack_require_15233__(6);\nvar locale_default = /*#__PURE__*/__nested_webpack_require_15233__.n(locale_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/input\"\nvar input_ = __nested_webpack_require_15233__(10);\nvar input_default = /*#__PURE__*/__nested_webpack_require_15233__.n(input_);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=template&id=06828748&\nvar select_dropdownvue_type_template_id_06828748_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"el-select-dropdown el-popper\",\n class: [{ \"is-multiple\": _vm.$parent.multiple }, _vm.popperClass],\n style: { minWidth: _vm.minWidth }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar select_dropdownvue_type_template_id_06828748_staticRenderFns = []\nselect_dropdownvue_type_template_id_06828748_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=template&id=06828748&\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vue-popper\"\nvar vue_popper_ = __nested_webpack_require_15233__(5);\nvar vue_popper_default = /*#__PURE__*/__nested_webpack_require_15233__.n(vue_popper_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select-dropdown.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var select_dropdownvue_type_script_lang_js_ = ({\n name: 'ElSelectDropdown',\n\n componentName: 'ElSelectDropdown',\n\n mixins: [vue_popper_default.a],\n\n props: {\n placement: {\n default: 'bottom-start'\n },\n\n boundariesPadding: {\n default: 0\n },\n\n popperOptions: {\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n },\n\n visibleArrow: {\n default: true\n },\n\n appendToBody: {\n type: Boolean,\n default: true\n }\n },\n\n data: function data() {\n return {\n minWidth: ''\n };\n },\n\n\n computed: {\n popperClass: function popperClass() {\n return this.$parent.popperClass;\n }\n },\n\n watch: {\n '$parent.inputWidth': function $parentInputWidth() {\n this.minWidth = this.$parent.$el.getBoundingClientRect().width + 'px';\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n this.referenceElm = this.$parent.$refs.reference.$el;\n this.$parent.popperElm = this.popperElm = this.$el;\n this.$on('updatePopper', function () {\n if (_this.$parent.visible) _this.updatePopper();\n });\n this.$on('destroyPopper', this.destroyPopper);\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_select_dropdownvue_type_script_lang_js_ = (select_dropdownvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_15233__(0);\n\n// CONCATENATED MODULE: ./packages/select/src/select-dropdown.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_select_dropdownvue_type_script_lang_js_,\n select_dropdownvue_type_template_id_06828748_render,\n select_dropdownvue_type_template_id_06828748_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/select/src/select-dropdown.vue\"\n/* harmony default export */ var select_dropdown = (component.exports);\n// EXTERNAL MODULE: ./packages/select/src/option.vue + 4 modules\nvar src_option = __nested_webpack_require_15233__(33);\n\n// EXTERNAL MODULE: external \"element-ui/lib/tag\"\nvar tag_ = __nested_webpack_require_15233__(38);\nvar tag_default = /*#__PURE__*/__nested_webpack_require_15233__.n(tag_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/scrollbar\"\nvar scrollbar_ = __nested_webpack_require_15233__(15);\nvar scrollbar_default = /*#__PURE__*/__nested_webpack_require_15233__.n(scrollbar_);\n\n// EXTERNAL MODULE: external \"throttle-debounce/debounce\"\nvar debounce_ = __nested_webpack_require_15233__(19);\nvar debounce_default = /*#__PURE__*/__nested_webpack_require_15233__.n(debounce_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/clickoutside\"\nvar clickoutside_ = __nested_webpack_require_15233__(12);\nvar clickoutside_default = /*#__PURE__*/__nested_webpack_require_15233__.n(clickoutside_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/resize-event\"\nvar resize_event_ = __nested_webpack_require_15233__(16);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/scroll-into-view\"\nvar scroll_into_view_ = __nested_webpack_require_15233__(31);\nvar scroll_into_view_default = /*#__PURE__*/__nested_webpack_require_15233__.n(scroll_into_view_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __nested_webpack_require_15233__(3);\n\n// CONCATENATED MODULE: ./packages/select/src/navigation-mixin.js\n/* harmony default export */ var navigation_mixin = ({\n data: function data() {\n return {\n hoverOption: -1\n };\n },\n\n\n computed: {\n optionsAllDisabled: function optionsAllDisabled() {\n return this.options.filter(function (option) {\n return option.visible;\n }).every(function (option) {\n return option.disabled;\n });\n }\n },\n\n watch: {\n hoverIndex: function hoverIndex(val) {\n var _this = this;\n\n if (typeof val === 'number' && val > -1) {\n this.hoverOption = this.options[val] || {};\n }\n this.options.forEach(function (option) {\n option.hover = _this.hoverOption === option;\n });\n }\n },\n\n methods: {\n navigateOptions: function navigateOptions(direction) {\n var _this2 = this;\n\n if (!this.visible) {\n this.visible = true;\n return;\n }\n if (this.options.length === 0 || this.filteredOptionsCount === 0) return;\n if (!this.optionsAllDisabled) {\n if (direction === 'next') {\n this.hoverIndex++;\n if (this.hoverIndex === this.options.length) {\n this.hoverIndex = 0;\n }\n } else if (direction === 'prev') {\n this.hoverIndex--;\n if (this.hoverIndex < 0) {\n this.hoverIndex = this.options.length - 1;\n }\n }\n var option = this.options[this.hoverIndex];\n if (option.disabled === true || option.groupDisabled === true || !option.visible) {\n this.navigateOptions(direction);\n }\n this.$nextTick(function () {\n return _this2.scrollToOption(_this2.hoverOption);\n });\n }\n }\n }\n});\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __nested_webpack_require_15233__(21);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var selectvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a, locale_default.a, focus_default()('reference'), navigation_mixin],\n\n name: 'ElSelect',\n\n componentName: 'ElSelect',\n\n inject: {\n elForm: {\n default: ''\n },\n\n elFormItem: {\n default: ''\n }\n },\n\n provide: function provide() {\n return {\n 'select': this\n };\n },\n\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n readonly: function readonly() {\n return !this.filterable || this.multiple || !Object(util_[\"isIE\"])() && !Object(util_[\"isEdge\"])() && !this.visible;\n },\n showClose: function showClose() {\n var hasValue = this.multiple ? Array.isArray(this.value) && this.value.length > 0 : this.value !== undefined && this.value !== null && this.value !== '';\n var criteria = this.clearable && !this.selectDisabled && this.inputHovering && hasValue;\n return criteria;\n },\n iconClass: function iconClass() {\n return this.remote && this.filterable ? '' : this.visible ? 'arrow-up is-reverse' : 'arrow-up';\n },\n debounce: function debounce() {\n return this.remote ? 300 : 0;\n },\n emptyText: function emptyText() {\n if (this.loading) {\n return this.loadingText || this.t('el.select.loading');\n } else {\n if (this.remote && this.query === '' && this.options.length === 0) return false;\n if (this.filterable && this.query && this.options.length > 0 && this.filteredOptionsCount === 0) {\n return this.noMatchText || this.t('el.select.noMatch');\n }\n if (this.options.length === 0) {\n return this.noDataText || this.t('el.select.noData');\n }\n }\n return null;\n },\n showNewOption: function showNewOption() {\n var _this = this;\n\n var hasExistingOption = this.options.filter(function (option) {\n return !option.created;\n }).some(function (option) {\n return option.currentLabel === _this.query;\n });\n return this.filterable && this.allowCreate && this.query !== '' && !hasExistingOption;\n },\n selectSize: function selectSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n selectDisabled: function selectDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n collapseTagSize: function collapseTagSize() {\n return ['small', 'mini'].indexOf(this.selectSize) > -1 ? 'mini' : 'small';\n },\n propPlaceholder: function propPlaceholder() {\n return typeof this.placeholder !== 'undefined' ? this.placeholder : this.t('el.select.placeholder');\n }\n },\n\n components: {\n ElInput: input_default.a,\n ElSelectMenu: select_dropdown,\n ElOption: src_option[\"a\" /* default */],\n ElTag: tag_default.a,\n ElScrollbar: scrollbar_default.a\n },\n\n directives: { Clickoutside: clickoutside_default.a },\n\n props: {\n name: String,\n id: String,\n value: {\n required: true\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && 0;\n return true;\n }\n },\n automaticDropdown: Boolean,\n size: String,\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n allowCreate: Boolean,\n loading: Boolean,\n popperClass: String,\n remote: Boolean,\n loadingText: String,\n noMatchText: String,\n noDataText: String,\n remoteMethod: Function,\n filterMethod: Function,\n multiple: Boolean,\n multipleLimit: {\n type: Number,\n default: 0\n },\n placeholder: {\n type: String,\n required: false\n },\n defaultFirstOption: Boolean,\n reserveKeyword: Boolean,\n valueKey: {\n type: String,\n default: 'value'\n },\n collapseTags: Boolean,\n popperAppendToBody: {\n type: Boolean,\n default: true\n }\n },\n\n data: function data() {\n return {\n options: [],\n cachedOptions: [],\n createdLabel: null,\n createdSelected: false,\n selected: this.multiple ? [] : {},\n inputLength: 20,\n inputWidth: 0,\n initialInputHeight: 0,\n cachedPlaceHolder: '',\n optionsCount: 0,\n filteredOptionsCount: 0,\n visible: false,\n softFocus: false,\n selectedLabel: '',\n hoverIndex: -1,\n query: '',\n previousQuery: null,\n inputHovering: false,\n currentPlaceholder: '',\n menuVisibleOnFocus: false,\n isOnComposition: false,\n isSilentBlur: false\n };\n },\n\n\n watch: {\n selectDisabled: function selectDisabled() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.resetInputHeight();\n });\n },\n propPlaceholder: function propPlaceholder(val) {\n this.cachedPlaceHolder = this.currentPlaceholder = val;\n },\n value: function value(val, oldVal) {\n if (this.multiple) {\n this.resetInputHeight();\n if (val && val.length > 0 || this.$refs.input && this.query !== '') {\n this.currentPlaceholder = '';\n } else {\n this.currentPlaceholder = this.cachedPlaceHolder;\n }\n if (this.filterable && !this.reserveKeyword) {\n this.query = '';\n this.handleQueryChange(this.query);\n }\n }\n this.setSelected();\n if (this.filterable && !this.multiple) {\n this.inputLength = 20;\n }\n if (!Object(util_[\"valueEquals\"])(val, oldVal)) {\n this.dispatch('ElFormItem', 'el.form.change', val);\n }\n },\n visible: function visible(val) {\n var _this3 = this;\n\n if (!val) {\n this.broadcast('ElSelectDropdown', 'destroyPopper');\n if (this.$refs.input) {\n this.$refs.input.blur();\n }\n this.query = '';\n this.previousQuery = null;\n this.selectedLabel = '';\n this.inputLength = 20;\n this.menuVisibleOnFocus = false;\n this.resetHoverIndex();\n this.$nextTick(function () {\n if (_this3.$refs.input && _this3.$refs.input.value === '' && _this3.selected.length === 0) {\n _this3.currentPlaceholder = _this3.cachedPlaceHolder;\n }\n });\n if (!this.multiple) {\n if (this.selected) {\n if (this.filterable && this.allowCreate && this.createdSelected && this.createdLabel) {\n this.selectedLabel = this.createdLabel;\n } else {\n this.selectedLabel = this.selected.currentLabel;\n }\n if (this.filterable) this.query = this.selectedLabel;\n }\n\n if (this.filterable) {\n this.currentPlaceholder = this.cachedPlaceHolder;\n }\n }\n } else {\n this.broadcast('ElSelectDropdown', 'updatePopper');\n if (this.filterable) {\n this.query = this.remote ? '' : this.selectedLabel;\n this.handleQueryChange(this.query);\n if (this.multiple) {\n this.$refs.input.focus();\n } else {\n if (!this.remote) {\n this.broadcast('ElOption', 'queryChange', '');\n this.broadcast('ElOptionGroup', 'queryChange');\n }\n\n if (this.selectedLabel) {\n this.currentPlaceholder = this.selectedLabel;\n this.selectedLabel = '';\n }\n }\n }\n }\n this.$emit('visible-change', val);\n },\n options: function options() {\n var _this4 = this;\n\n if (this.$isServer) return;\n this.$nextTick(function () {\n _this4.broadcast('ElSelectDropdown', 'updatePopper');\n });\n if (this.multiple) {\n this.resetInputHeight();\n }\n var inputs = this.$el.querySelectorAll('input');\n if ([].indexOf.call(inputs, document.activeElement) === -1) {\n this.setSelected();\n }\n if (this.defaultFirstOption && (this.filterable || this.remote) && this.filteredOptionsCount) {\n this.checkDefaultFirstOption();\n }\n }\n },\n\n methods: {\n handleNavigate: function handleNavigate(direction) {\n if (this.isOnComposition) return;\n\n this.navigateOptions(direction);\n },\n handleComposition: function handleComposition(event) {\n var _this5 = this;\n\n var text = event.target.value;\n if (event.type === 'compositionend') {\n this.isOnComposition = false;\n this.$nextTick(function (_) {\n return _this5.handleQueryChange(text);\n });\n } else {\n var lastCharacter = text[text.length - 1] || '';\n this.isOnComposition = !Object(shared_[\"isKorean\"])(lastCharacter);\n }\n },\n handleQueryChange: function handleQueryChange(val) {\n var _this6 = this;\n\n if (this.previousQuery === val || this.isOnComposition) return;\n if (this.previousQuery === null && (typeof this.filterMethod === 'function' || typeof this.remoteMethod === 'function')) {\n this.previousQuery = val;\n return;\n }\n this.previousQuery = val;\n this.$nextTick(function () {\n if (_this6.visible) _this6.broadcast('ElSelectDropdown', 'updatePopper');\n });\n this.hoverIndex = -1;\n if (this.multiple && this.filterable) {\n this.$nextTick(function () {\n var length = _this6.$refs.input.value.length * 15 + 20;\n _this6.inputLength = _this6.collapseTags ? Math.min(50, length) : length;\n _this6.managePlaceholder();\n _this6.resetInputHeight();\n });\n }\n if (this.remote && typeof this.remoteMethod === 'function') {\n this.hoverIndex = -1;\n this.remoteMethod(val);\n } else if (typeof this.filterMethod === 'function') {\n this.filterMethod(val);\n this.broadcast('ElOptionGroup', 'queryChange');\n } else {\n this.filteredOptionsCount = this.optionsCount;\n this.broadcast('ElOption', 'queryChange', val);\n this.broadcast('ElOptionGroup', 'queryChange');\n }\n if (this.defaultFirstOption && (this.filterable || this.remote) && this.filteredOptionsCount) {\n this.checkDefaultFirstOption();\n }\n },\n scrollToOption: function scrollToOption(option) {\n var target = Array.isArray(option) && option[0] ? option[0].$el : option.$el;\n if (this.$refs.popper && target) {\n var menu = this.$refs.popper.$el.querySelector('.el-select-dropdown__wrap');\n scroll_into_view_default()(menu, target);\n }\n this.$refs.scrollbar && this.$refs.scrollbar.handleScroll();\n },\n handleMenuEnter: function handleMenuEnter() {\n var _this7 = this;\n\n this.$nextTick(function () {\n return _this7.scrollToOption(_this7.selected);\n });\n },\n emitChange: function emitChange(val) {\n if (!Object(util_[\"valueEquals\"])(this.value, val)) {\n this.$emit('change', val);\n }\n },\n getOption: function getOption(value) {\n var option = void 0;\n var isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]';\n var isNull = Object.prototype.toString.call(value).toLowerCase() === '[object null]';\n var isUndefined = Object.prototype.toString.call(value).toLowerCase() === '[object undefined]';\n\n for (var i = this.cachedOptions.length - 1; i >= 0; i--) {\n var cachedOption = this.cachedOptions[i];\n var isEqual = isObject ? Object(util_[\"getValueByPath\"])(cachedOption.value, this.valueKey) === Object(util_[\"getValueByPath\"])(value, this.valueKey) : cachedOption.value === value;\n if (isEqual) {\n option = cachedOption;\n break;\n }\n }\n if (option) return option;\n var label = !isObject && !isNull && !isUndefined ? String(value) : '';\n var newOption = {\n value: value,\n currentLabel: label\n };\n if (this.multiple) {\n newOption.hitState = false;\n }\n return newOption;\n },\n setSelected: function setSelected() {\n var _this8 = this;\n\n if (!this.multiple) {\n var option = this.getOption(this.value);\n if (option.created) {\n this.createdLabel = option.currentLabel;\n this.createdSelected = true;\n } else {\n this.createdSelected = false;\n }\n this.selectedLabel = option.currentLabel;\n this.selected = option;\n if (this.filterable) this.query = this.selectedLabel;\n return;\n }\n var result = [];\n if (Array.isArray(this.value)) {\n this.value.forEach(function (value) {\n result.push(_this8.getOption(value));\n });\n }\n this.selected = result;\n this.$nextTick(function () {\n _this8.resetInputHeight();\n });\n },\n handleFocus: function handleFocus(event) {\n if (!this.softFocus) {\n if (this.automaticDropdown || this.filterable) {\n if (this.filterable && !this.visible) {\n this.menuVisibleOnFocus = true;\n }\n this.visible = true;\n }\n this.$emit('focus', event);\n } else {\n this.softFocus = false;\n }\n },\n blur: function blur() {\n this.visible = false;\n this.$refs.reference.blur();\n },\n handleBlur: function handleBlur(event) {\n var _this9 = this;\n\n setTimeout(function () {\n if (_this9.isSilentBlur) {\n _this9.isSilentBlur = false;\n } else {\n _this9.$emit('blur', event);\n }\n }, 50);\n this.softFocus = false;\n },\n handleClearClick: function handleClearClick(event) {\n this.deleteSelected(event);\n },\n doDestroy: function doDestroy() {\n this.$refs.popper && this.$refs.popper.doDestroy();\n },\n handleClose: function handleClose() {\n this.visible = false;\n },\n toggleLastOptionHitState: function toggleLastOptionHitState(hit) {\n if (!Array.isArray(this.selected)) return;\n var option = this.selected[this.selected.length - 1];\n if (!option) return;\n\n if (hit === true || hit === false) {\n option.hitState = hit;\n return hit;\n }\n\n option.hitState = !option.hitState;\n return option.hitState;\n },\n deletePrevTag: function deletePrevTag(e) {\n if (e.target.value.length <= 0 && !this.toggleLastOptionHitState()) {\n var value = this.value.slice();\n value.pop();\n this.$emit('input', value);\n this.emitChange(value);\n }\n },\n managePlaceholder: function managePlaceholder() {\n if (this.currentPlaceholder !== '') {\n this.currentPlaceholder = this.$refs.input.value ? '' : this.cachedPlaceHolder;\n }\n },\n resetInputState: function resetInputState(e) {\n if (e.keyCode !== 8) this.toggleLastOptionHitState(false);\n this.inputLength = this.$refs.input.value.length * 15 + 20;\n this.resetInputHeight();\n },\n resetInputHeight: function resetInputHeight() {\n var _this10 = this;\n\n if (this.collapseTags && !this.filterable) return;\n this.$nextTick(function () {\n if (!_this10.$refs.reference) return;\n var inputChildNodes = _this10.$refs.reference.$el.childNodes;\n var input = [].filter.call(inputChildNodes, function (item) {\n return item.tagName === 'INPUT';\n })[0];\n var tags = _this10.$refs.tags;\n var tagsHeight = tags ? Math.round(tags.getBoundingClientRect().height) : 0;\n var sizeInMap = _this10.initialInputHeight || 40;\n input.style.height = _this10.selected.length === 0 ? sizeInMap + 'px' : Math.max(tags ? tagsHeight + (tagsHeight > sizeInMap ? 6 : 0) : 0, sizeInMap) + 'px';\n if (_this10.visible && _this10.emptyText !== false) {\n _this10.broadcast('ElSelectDropdown', 'updatePopper');\n }\n });\n },\n resetHoverIndex: function resetHoverIndex() {\n var _this11 = this;\n\n setTimeout(function () {\n if (!_this11.multiple) {\n _this11.hoverIndex = _this11.options.indexOf(_this11.selected);\n } else {\n if (_this11.selected.length > 0) {\n _this11.hoverIndex = Math.min.apply(null, _this11.selected.map(function (item) {\n return _this11.options.indexOf(item);\n }));\n } else {\n _this11.hoverIndex = -1;\n }\n }\n }, 300);\n },\n handleOptionSelect: function handleOptionSelect(option, byClick) {\n var _this12 = this;\n\n if (this.multiple) {\n var value = (this.value || []).slice();\n var optionIndex = this.getValueIndex(value, option.value);\n if (optionIndex > -1) {\n value.splice(optionIndex, 1);\n } else if (this.multipleLimit <= 0 || value.length < this.multipleLimit) {\n value.push(option.value);\n }\n this.$emit('input', value);\n this.emitChange(value);\n if (option.created) {\n this.query = '';\n this.handleQueryChange('');\n this.inputLength = 20;\n }\n if (this.filterable) this.$refs.input.focus();\n } else {\n this.$emit('input', option.value);\n this.emitChange(option.value);\n this.visible = false;\n }\n this.isSilentBlur = byClick;\n this.setSoftFocus();\n if (this.visible) return;\n this.$nextTick(function () {\n _this12.scrollToOption(option);\n });\n },\n setSoftFocus: function setSoftFocus() {\n this.softFocus = true;\n var input = this.$refs.input || this.$refs.reference;\n if (input) {\n input.focus();\n }\n },\n getValueIndex: function getValueIndex() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var value = arguments[1];\n\n var isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]';\n if (!isObject) {\n return arr.indexOf(value);\n } else {\n var valueKey = this.valueKey;\n var index = -1;\n arr.some(function (item, i) {\n if (Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(value, valueKey)) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n }\n },\n toggleMenu: function toggleMenu() {\n if (!this.selectDisabled) {\n if (this.menuVisibleOnFocus) {\n this.menuVisibleOnFocus = false;\n } else {\n this.visible = !this.visible;\n }\n if (this.visible) {\n (this.$refs.input || this.$refs.reference).focus();\n }\n }\n },\n selectOption: function selectOption() {\n if (!this.visible) {\n this.toggleMenu();\n } else {\n if (this.options[this.hoverIndex]) {\n this.handleOptionSelect(this.options[this.hoverIndex]);\n }\n }\n },\n deleteSelected: function deleteSelected(event) {\n event.stopPropagation();\n var value = this.multiple ? [] : '';\n this.$emit('input', value);\n this.emitChange(value);\n this.visible = false;\n this.$emit('clear');\n },\n deleteTag: function deleteTag(event, tag) {\n var index = this.selected.indexOf(tag);\n if (index > -1 && !this.selectDisabled) {\n var value = this.value.slice();\n value.splice(index, 1);\n this.$emit('input', value);\n this.emitChange(value);\n this.$emit('remove-tag', tag.value);\n }\n event.stopPropagation();\n },\n onInputChange: function onInputChange() {\n if (this.filterable && this.query !== this.selectedLabel) {\n this.query = this.selectedLabel;\n this.handleQueryChange(this.query);\n }\n },\n onOptionDestroy: function onOptionDestroy(index) {\n if (index > -1) {\n this.optionsCount--;\n this.filteredOptionsCount--;\n this.options.splice(index, 1);\n }\n },\n resetInputWidth: function resetInputWidth() {\n this.inputWidth = this.$refs.reference.$el.getBoundingClientRect().width;\n },\n handleResize: function handleResize() {\n this.resetInputWidth();\n if (this.multiple) this.resetInputHeight();\n },\n checkDefaultFirstOption: function checkDefaultFirstOption() {\n this.hoverIndex = -1;\n // highlight the created option\n var hasCreated = false;\n for (var i = this.options.length - 1; i >= 0; i--) {\n if (this.options[i].created) {\n hasCreated = true;\n this.hoverIndex = i;\n break;\n }\n }\n if (hasCreated) return;\n for (var _i = 0; _i !== this.options.length; ++_i) {\n var option = this.options[_i];\n if (this.query) {\n // highlight first options that passes the filter\n if (!option.disabled && !option.groupDisabled && option.visible) {\n this.hoverIndex = _i;\n break;\n }\n } else {\n // highlight currently selected option\n if (option.itemSelected) {\n this.hoverIndex = _i;\n break;\n }\n }\n }\n },\n getValueKey: function getValueKey(item) {\n if (Object.prototype.toString.call(item.value).toLowerCase() !== '[object object]') {\n return item.value;\n } else {\n return Object(util_[\"getValueByPath\"])(item.value, this.valueKey);\n }\n }\n },\n\n created: function created() {\n var _this13 = this;\n\n this.cachedPlaceHolder = this.currentPlaceholder = this.propPlaceholder;\n if (this.multiple && !Array.isArray(this.value)) {\n this.$emit('input', []);\n }\n if (!this.multiple && Array.isArray(this.value)) {\n this.$emit('input', '');\n }\n\n this.debouncedOnInputChange = debounce_default()(this.debounce, function () {\n _this13.onInputChange();\n });\n\n this.debouncedQueryChange = debounce_default()(this.debounce, function (e) {\n _this13.handleQueryChange(e.target.value);\n });\n\n this.$on('handleOptionClick', this.handleOptionSelect);\n this.$on('setSelected', this.setSelected);\n },\n mounted: function mounted() {\n var _this14 = this;\n\n if (this.multiple && Array.isArray(this.value) && this.value.length > 0) {\n this.currentPlaceholder = '';\n }\n Object(resize_event_[\"addResizeListener\"])(this.$el, this.handleResize);\n\n var reference = this.$refs.reference;\n if (reference && reference.$el) {\n var sizeMap = {\n medium: 36,\n small: 32,\n mini: 28\n };\n var input = reference.$el.querySelector('input');\n this.initialInputHeight = input.getBoundingClientRect().height || sizeMap[this.selectSize];\n }\n if (this.remote && this.multiple) {\n this.resetInputHeight();\n }\n this.$nextTick(function () {\n if (reference && reference.$el) {\n _this14.inputWidth = reference.$el.getBoundingClientRect().width;\n }\n });\n this.setSelected();\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$el && this.handleResize) Object(resize_event_[\"removeResizeListener\"])(this.$el, this.handleResize);\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_selectvue_type_script_lang_js_ = (selectvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./packages/select/src/select.vue\n\n\n\n\n\n/* normalize component */\n\nvar select_component = Object(componentNormalizer[\"a\" /* default */])(\n src_selectvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var select_api; }\nselect_component.options.__file = \"packages/select/src/select.vue\"\n/* harmony default export */ var src_select = (select_component.exports);\n// CONCATENATED MODULE: ./packages/select/index.js\n\n\n/* istanbul ignore next */\nsrc_select.install = function (Vue) {\n Vue.component(src_select.name, src_select);\n};\n\n/* harmony default export */ var packages_select = __nested_webpack_exports__[\"default\"] = (src_select);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvc2VsZWN0LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDhCQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSw4QkFBbUI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGVBQWUsOEJBQW1CO0FBQ2xDLG1EQUFtRCwrQkFBK0I7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLGlFQUFpRSxpQkFBaUI7QUFDbEY7QUFDQSwwREFBMEQsYUFBYTtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGdDQUFnQyw4QkFBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4QkFBbUI7QUFDOUIsa0RBQWtELGdDQUFnQztBQUNsRiwwRUFBMEUsOEJBQW1CLDRCQUE0QixvQkFBb0I7QUFDN0k7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLG9DQUFvQyw0QkFBNEI7QUFDaEUsMENBQTBDO0FBQzFDLFdBQVcsOEJBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUIsa0NBQWtDO0FBQy9EO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOEJBQW1CLENBQUMsOEJBQW1CO0FBQ3hELFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLDBCQUFtQixFQUFFLCtCQUFtQjs7QUFF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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIseUJBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0VBQXNFO0FBQ3RFLEtBQUs7QUFDTDtBQUNBLGdEQUFnRDtBQUNoRCxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsZ0JBQWdCLHNDQUFzQzs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLE1BQUssSUFBSSxDQUFLO0FBQ3ZCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrREFBa0QsUUFBUTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsUUFBUTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw0QkFBNEI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOzs7Ozs7QUFNQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLG1CQUFtQjtBQUM5QjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1EQUFtRCwwQkFBbUI7O0FBRXRFLE9BQU87O0FBRVAsVUFBVSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi9zZWxlY3QuanM/NDc2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9XG4vKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2Rpc3QvXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDYyKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKHtcblxuLyoqKi8gMDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIG5vcm1hbGl6ZUNvbXBvbmVudDsgfSk7XG4vKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7IGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCkgfVxuICAgICAgOiBpbmplY3RTdHlsZXNcbiAgfVxuXG4gIGlmIChob29rKSB7XG4gICAgaWYgKG9wdGlvbnMuZnVuY3Rpb25hbCkge1xuICAgICAgLy8gZm9yIHRlbXBsYXRlLW9ubHkgaG90LXJlbG9hZCBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcmVuZGVyIGZuIGRvZXNuJ3RcbiAgICAgIC8vIGdvIHRocm91Z2ggdGhlIG5vcm1hbGl6ZXJcbiAgICAgIG9wdGlvbnMuX2luamVjdFN0eWxlcyA9IGhvb2tcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyAxMDpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvaW5wdXRcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAxMjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvY2xpY2tvdXRzaWRlXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gMTU6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3Njcm9sbGJhclwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDE2OlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9yZXNpemUtZXZlbnRcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAxOTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGhyb3R0bGUtZGVib3VuY2UvZGVib3VuY2VcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAyMTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvc2hhcmVkXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gMjI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL21peGlucy9mb2N1c1wiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDM6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWxcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAzMTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvc2Nyb2xsLWludG8tdmlld1wiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDMzOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E0NGM2NDImXG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwibGlcIixcbiAgICB7XG4gICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgIHZhbHVlOiBfdm0udmlzaWJsZSxcbiAgICAgICAgICBleHByZXNzaW9uOiBcInZpc2libGVcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc2VsZWN0LWRyb3Bkb3duX19pdGVtXCIsXG4gICAgICBjbGFzczoge1xuICAgICAgICBzZWxlY3RlZDogX3ZtLml0ZW1TZWxlY3RlZCxcbiAgICAgICAgXCJpcy1kaXNhYmxlZFwiOiBfdm0uZGlzYWJsZWQgfHwgX3ZtLmdyb3VwRGlzYWJsZWQgfHwgX3ZtLmxpbWl0UmVhY2hlZCxcbiAgICAgICAgaG92ZXI6IF92bS5ob3ZlclxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIG1vdXNlZW50ZXI6IF92bS5ob3Zlckl0ZW0sXG4gICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICByZXR1cm4gX3ZtLnNlbGVjdE9wdGlvbkNsaWNrKCRldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW192bS5fdChcImRlZmF1bHRcIiwgW19jKFwic3BhblwiLCBbX3ZtLl92KF92bS5fcyhfdm0uY3VycmVudExhYmVsKSldKV0pXSxcbiAgICAyXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E0NGM2NDImXG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9taXhpbnMvZW1pdHRlclwiXG52YXIgZW1pdHRlcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIGVtaXR0ZXJfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZW1pdHRlcl8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvdXRpbFwiXG52YXIgdXRpbF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBvcHRpb252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBtaXhpbnM6IFtlbWl0dGVyX2RlZmF1bHQuYV0sXG5cbiAgbmFtZTogJ0VsT3B0aW9uJyxcblxuICBjb21wb25lbnROYW1lOiAnRWxPcHRpb24nLFxuXG4gIGluamVjdDogWydzZWxlY3QnXSxcblxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgbGFiZWw6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgY3JlYXRlZDogQm9vbGVhbixcbiAgICBkaXNhYmxlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiAtMSxcbiAgICAgIGdyb3VwRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgIGhpdFN0YXRlOiBmYWxzZSxcbiAgICAgIGhvdmVyOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIGlzT2JqZWN0OiBmdW5jdGlvbiBpc09iamVjdCgpIHtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcy52YWx1ZSkudG9Mb3dlckNhc2UoKSA9PT0gJ1tvYmplY3Qgb2JqZWN0XSc7XG4gICAgfSxcbiAgICBjdXJyZW50TGFiZWw6IGZ1bmN0aW9uIGN1cnJlbnRMYWJlbCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhYmVsIHx8ICh0aGlzLmlzT2JqZWN0ID8gJycgOiB0aGlzLnZhbHVlKTtcbiAgICB9LFxuICAgIGN1cnJlbnRWYWx1ZTogZnVuY3Rpb24gY3VycmVudFZhbHVlKCkge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgdGhpcy5sYWJlbCB8fCAnJztcbiAgICB9LFxuICAgIGl0ZW1TZWxlY3RlZDogZnVuY3Rpb24gaXRlbVNlbGVjdGVkKCkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdC5tdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VxdWFsKHRoaXMudmFsdWUsIHRoaXMuc2VsZWN0LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zKHRoaXMuc2VsZWN0LnZhbHVlLCB0aGlzLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpbWl0UmVhY2hlZDogZnVuY3Rpb24gbGltaXRSZWFjaGVkKCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0Lm11bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pdGVtU2VsZWN0ZWQgJiYgKHRoaXMuc2VsZWN0LnZhbHVlIHx8IFtdKS5sZW5ndGggPj0gdGhpcy5zZWxlY3QubXVsdGlwbGVMaW1pdCAmJiB0aGlzLnNlbGVjdC5tdWx0aXBsZUxpbWl0ID4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICBjdXJyZW50TGFiZWw6IGZ1bmN0aW9uIGN1cnJlbnRMYWJlbCgpIHtcbiAgICAgIGlmICghdGhpcy5jcmVhdGVkICYmICF0aGlzLnNlbGVjdC5yZW1vdGUpIHRoaXMuZGlzcGF0Y2goJ0VsU2VsZWN0JywgJ3NldFNlbGVjdGVkJyk7XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsLCBvbGRWYWwpIHtcbiAgICAgIHZhciBfc2VsZWN0ID0gdGhpcy5zZWxlY3QsXG4gICAgICAgICAgcmVtb3RlID0gX3NlbGVjdC5yZW1vdGUsXG4gICAgICAgICAgdmFsdWVLZXkgPSBfc2VsZWN0LnZhbHVlS2V5O1xuXG4gICAgICBpZiAoIXRoaXMuY3JlYXRlZCAmJiAhcmVtb3RlKSB7XG4gICAgICAgIGlmICh2YWx1ZUtleSAmJiAodHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodmFsKSkgPT09ICdvYmplY3QnICYmICh0eXBlb2Ygb2xkVmFsID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvbGRWYWwpKSA9PT0gJ29iamVjdCcgJiYgdmFsW3ZhbHVlS2V5XSA9PT0gb2xkVmFsW3ZhbHVlS2V5XSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BhdGNoKCdFbFNlbGVjdCcsICdzZXRTZWxlY3RlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgaXNFcXVhbDogZnVuY3Rpb24gaXNFcXVhbChhLCBiKSB7XG4gICAgICBpZiAoIXRoaXMuaXNPYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdmFsdWVLZXkgPSB0aGlzLnNlbGVjdC52YWx1ZUtleTtcbiAgICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKShhLCB2YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKShiLCB2YWx1ZUtleSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjb250YWluczogZnVuY3Rpb24gY29udGFpbnMoKSB7XG4gICAgICB2YXIgYXJyID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTtcbiAgICAgIHZhciB0YXJnZXQgPSBhcmd1bWVudHNbMV07XG5cbiAgICAgIGlmICghdGhpcy5pc09iamVjdCkge1xuICAgICAgICByZXR1cm4gYXJyICYmIGFyci5pbmRleE9mKHRhcmdldCkgPiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB2YWx1ZUtleSA9IHRoaXMuc2VsZWN0LnZhbHVlS2V5O1xuICAgICAgICByZXR1cm4gYXJyICYmIGFyci5zb21lKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKShpdGVtLCB2YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKSh0YXJnZXQsIHZhbHVlS2V5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVHcm91cERpc2FibGVkOiBmdW5jdGlvbiBoYW5kbGVHcm91cERpc2FibGVkKHZhbCkge1xuICAgICAgdGhpcy5ncm91cERpc2FibGVkID0gdmFsO1xuICAgIH0sXG4gICAgaG92ZXJJdGVtOiBmdW5jdGlvbiBob3Zlckl0ZW0oKSB7XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZ3JvdXBEaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdC5ob3ZlckluZGV4ID0gdGhpcy5zZWxlY3Qub3B0aW9ucy5pbmRleE9mKHRoaXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0T3B0aW9uQ2xpY2s6IGZ1bmN0aW9uIHNlbGVjdE9wdGlvbkNsaWNrKCkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgIT09IHRydWUgJiYgdGhpcy5ncm91cERpc2FibGVkICE9PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goJ0VsU2VsZWN0JywgJ2hhbmRsZU9wdGlvbkNsaWNrJywgW3RoaXMsIHRydWVdKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHF1ZXJ5Q2hhbmdlOiBmdW5jdGlvbiBxdWVyeUNoYW5nZShxdWVyeSkge1xuICAgICAgdGhpcy52aXNpYmxlID0gbmV3IFJlZ0V4cChPYmplY3QodXRpbF9bXCJlc2NhcGVSZWdleHBTdHJpbmdcIl0pKHF1ZXJ5KSwgJ2knKS50ZXN0KHRoaXMuY3VycmVudExhYmVsKSB8fCB0aGlzLmNyZWF0ZWQ7XG4gICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLnNlbGVjdC5maWx0ZXJlZE9wdGlvbnNDb3VudC0tO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMuc2VsZWN0Lm9wdGlvbnMucHVzaCh0aGlzKTtcbiAgICB0aGlzLnNlbGVjdC5jYWNoZWRPcHRpb25zLnB1c2godGhpcyk7XG4gICAgdGhpcy5zZWxlY3Qub3B0aW9uc0NvdW50Kys7XG4gICAgdGhpcy5zZWxlY3QuZmlsdGVyZWRPcHRpb25zQ291bnQrKztcblxuICAgIHRoaXMuJG9uKCdxdWVyeUNoYW5nZScsIHRoaXMucXVlcnlDaGFuZ2UpO1xuICAgIHRoaXMuJG9uKCdoYW5kbGVHcm91cERpc2FibGVkJywgdGhpcy5oYW5kbGVHcm91cERpc2FibGVkKTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB2YXIgX3NlbGVjdDIgPSB0aGlzLnNlbGVjdCxcbiAgICAgICAgc2VsZWN0ZWQgPSBfc2VsZWN0Mi5zZWxlY3RlZCxcbiAgICAgICAgbXVsdGlwbGUgPSBfc2VsZWN0Mi5tdWx0aXBsZTtcblxuICAgIHZhciBzZWxlY3RlZE9wdGlvbnMgPSBtdWx0aXBsZSA/IHNlbGVjdGVkIDogW3NlbGVjdGVkXTtcbiAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdC5jYWNoZWRPcHRpb25zLmluZGV4T2YodGhpcyk7XG4gICAgdmFyIHNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZE9wdGlvbnMuaW5kZXhPZih0aGlzKTtcblxuICAgIC8vIGlmIG9wdGlvbiBpcyBub3Qgc2VsZWN0ZWQsIHJlbW92ZSBpdCBmcm9tIGNhY2hlXG4gICAgaWYgKGluZGV4ID4gLTEgJiYgc2VsZWN0ZWRJbmRleCA8IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0LmNhY2hlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Qub25PcHRpb25EZXN0cm95KHRoaXMuc2VsZWN0Lm9wdGlvbnMuaW5kZXhPZih0aGlzKSk7XG4gIH1cbn0pO1xuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4gLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjX29wdGlvbnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9IChvcHRpb252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18pOyBcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXG52YXIgY29tcG9uZW50Tm9ybWFsaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9vcHRpb24udnVlXG5cblxuXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuXG52YXIgY29tcG9uZW50ID0gT2JqZWN0KGNvbXBvbmVudE5vcm1hbGl6ZXJbXCJhXCIgLyogZGVmYXVsdCAqL10pKFxuICBzcmNfb3B0aW9udnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgYXBpOyB9XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhY2thZ2VzL3NlbGVjdC9zcmMvb3B0aW9uLnZ1ZVwiXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfb3B0aW9uID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoY29tcG9uZW50LmV4cG9ydHMpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gMzg6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL3RhZ1wiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDQ6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL21peGlucy9lbWl0dGVyXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gNTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvdnVlLXBvcHBlclwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDY6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZW1lbnQtdWkvbGliL21peGlucy9sb2NhbGVcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyA2Mjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYj8/dnVlLWxvYWRlci1vcHRpb25zIS4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNGFhZGU2JlxudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiY2xpY2tvdXRzaWRlXCIsXG4gICAgICAgICAgcmF3TmFtZTogXCJ2LWNsaWNrb3V0c2lkZVwiLFxuICAgICAgICAgIHZhbHVlOiBfdm0uaGFuZGxlQ2xvc2UsXG4gICAgICAgICAgZXhwcmVzc2lvbjogXCJoYW5kbGVDbG9zZVwiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1zZWxlY3RcIixcbiAgICAgIGNsYXNzOiBbX3ZtLnNlbGVjdFNpemUgPyBcImVsLXNlbGVjdC0tXCIgKyBfdm0uc2VsZWN0U2l6ZSA6IFwiXCJdLFxuICAgICAgb246IHtcbiAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIHJldHVybiBfdm0udG9nZ2xlTWVudSgkZXZlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF92bS5tdWx0aXBsZVxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmVmOiBcInRhZ3NcIixcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc2VsZWN0X190YWdzXCIsXG4gICAgICAgICAgICAgIHN0eWxlOiB7IFwibWF4LXdpZHRoXCI6IF92bS5pbnB1dFdpZHRoIC0gMzIgKyBcInB4XCIsIHdpZHRoOiBcIjEwMCVcIiB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0uY29sbGFwc2VUYWdzICYmIF92bS5zZWxlY3RlZC5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJlbC10YWdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zYWJsZTogIV92bS5zZWxlY3REaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBfdm0uY29sbGFwc2VUYWdTaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpdDogX3ZtLnNlbGVjdGVkWzBdLmhpdFN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaW5mb1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlzYWJsZS10cmFuc2l0aW9uc1wiOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRlbGV0ZVRhZygkZXZlbnQsIF92bS5zZWxlY3RlZFswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImVsLXNlbGVjdF9fdGFncy10ZXh0XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnNlbGVjdGVkWzBdLmN1cnJlbnRMYWJlbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VsZWN0ZWQubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVsLXRhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogX3ZtLmNvbGxhcHNlVGFnU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpbmZvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlzYWJsZS10cmFuc2l0aW9uc1wiOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZWwtc2VsZWN0X190YWdzLXRleHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiKyBcIiArIF92bS5fcyhfdm0uc2VsZWN0ZWQubGVuZ3RoIC0gMSkpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgIV92bS5jb2xsYXBzZVRhZ3NcbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcInRyYW5zaXRpb24tZ3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgeyBvbjogeyBcImFmdGVyLWxlYXZlXCI6IF92bS5yZXNldElucHV0SGVpZ2h0IH0gfSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5zZWxlY3RlZCwgZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZWwtdGFnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogX3ZtLmdldFZhbHVlS2V5KGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NhYmxlOiAhX3ZtLnNlbGVjdERpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IF92bS5jb2xsYXBzZVRhZ1NpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGl0OiBpdGVtLmhpdFN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaW5mb1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlzYWJsZS10cmFuc2l0aW9uc1wiOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRlbGV0ZVRhZygkZXZlbnQsIGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJlbC1zZWxlY3RfX3RhZ3MtdGV4dFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKGl0ZW0uY3VycmVudExhYmVsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgX3ZtLmZpbHRlcmFibGVcbiAgICAgICAgICAgICAgICA/IF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICByZWY6IFwiaW5wdXRcIixcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZWwtc2VsZWN0X19pbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczogW192bS5zZWxlY3RTaXplID8gXCJpcy1cIiArIF92bS5zZWxlY3RTaXplIDogXCJcIl0sXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgXCJmbGV4LWdyb3dcIjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IF92bS5pbnB1dExlbmd0aCAvIChfdm0uaW5wdXRXaWR0aCAtIDMyKSArIFwiJVwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwibWF4LXdpZHRoXCI6IF92bS5pbnB1dFdpZHRoIC0gNDIgKyBcInB4XCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLnNlbGVjdERpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogX3ZtLmF1dG9Db21wbGV0ZSB8fCBfdm0uYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0ucXVlcnkgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb2N1czogX3ZtLmhhbmRsZUZvY3VzLFxuICAgICAgICAgICAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNvZnRGb2N1cyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBrZXl1cDogX3ZtLm1hbmFnZVBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgIGtleWRvd246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5yZXNldElucHV0U3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImRvd25cIiwgNDAsICRldmVudC5rZXksIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRG93blwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnJvd0Rvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmhhbmRsZU5hdmlnYXRlKFwibmV4dFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwidXBcIiwgMzgsICRldmVudC5rZXksIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyb3dVcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFuZGxlTmF2aWdhdGUoXCJwcmV2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fayhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXlDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uc2VsZWN0T3B0aW9uKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVzY1wiLCAyNywgJGV2ZW50LmtleSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFc2NcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXNjYXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0udmlzaWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fayhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXlDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkZWxldGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs4LCA0Nl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQmFja3NwYWNlXCIsIFwiRGVsZXRlXCIsIFwiRGVsXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZGVsZXRlUHJldlRhZygkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJ0YWJcIiwgOSwgJGV2ZW50LmtleSwgXCJUYWJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0udmlzaWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbnN0YXJ0OiBfdm0uaGFuZGxlQ29tcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgY29tcG9zaXRpb251cGRhdGU6IF92bS5oYW5kbGVDb21wb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGlvbmVuZDogX3ZtLmhhbmRsZUNvbXBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnF1ZXJ5ID0gJGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kZWJvdW5jZWRRdWVyeUNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF9jKFxuICAgICAgICBcImVsLWlucHV0XCIsXG4gICAgICAgIHtcbiAgICAgICAgICByZWY6IFwicmVmZXJlbmNlXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpcy1mb2N1c1wiOiBfdm0udmlzaWJsZSB9LFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0uY3VycmVudFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgbmFtZTogX3ZtLm5hbWUsXG4gICAgICAgICAgICBpZDogX3ZtLmlkLFxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBfdm0uYXV0b0NvbXBsZXRlIHx8IF92bS5hdXRvY29tcGxldGUsXG4gICAgICAgICAgICBzaXplOiBfdm0uc2VsZWN0U2l6ZSxcbiAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uc2VsZWN0RGlzYWJsZWQsXG4gICAgICAgICAgICByZWFkb25seTogX3ZtLnJlYWRvbmx5LFxuICAgICAgICAgICAgXCJ2YWxpZGF0ZS1ldmVudFwiOiBmYWxzZSxcbiAgICAgICAgICAgIHRhYmluZGV4OiBfdm0ubXVsdGlwbGUgJiYgX3ZtLmZpbHRlcmFibGUgPyBcIi0xXCIgOiBudWxsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgZm9jdXM6IF92bS5oYW5kbGVGb2N1cyxcbiAgICAgICAgICAgIGJsdXI6IF92bS5oYW5kbGVCbHVyLFxuICAgICAgICAgICAgaW5wdXQ6IF92bS5kZWJvdW5jZWRPbklucHV0Q2hhbmdlLFxuICAgICAgICAgICAgY29tcG9zaXRpb25zdGFydDogX3ZtLmhhbmRsZUNvbXBvc2l0aW9uLFxuICAgICAgICAgICAgY29tcG9zaXRpb251cGRhdGU6IF92bS5oYW5kbGVDb21wb3NpdGlvbixcbiAgICAgICAgICAgIGNvbXBvc2l0aW9uZW5kOiBfdm0uaGFuZGxlQ29tcG9zaXRpb25cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hdGl2ZU9uOiB7XG4gICAgICAgICAgICBrZXlkb3duOiBbXG4gICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZG93blwiLCA0MCwgJGV2ZW50LmtleSwgW1xuICAgICAgICAgICAgICAgICAgICBcIkRvd25cIixcbiAgICAgICAgICAgICAgICAgICAgXCJBcnJvd0Rvd25cIlxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgX3ZtLmhhbmRsZU5hdmlnYXRlKFwibmV4dFwiKVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhKFwiYnV0dG9uXCIgaW4gJGV2ZW50KSAmJlxuICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcInVwXCIsIDM4LCAkZXZlbnQua2V5LCBbXG4gICAgICAgICAgICAgICAgICAgIFwiVXBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJBcnJvd1VwXCJcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIF92bS5oYW5kbGVOYXZpZ2F0ZShcInByZXZcIilcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMywgJGV2ZW50LmtleSwgXCJFbnRlclwiKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnNlbGVjdE9wdGlvbigkZXZlbnQpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICEoXCJidXR0b25cIiBpbiAkZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZXNjXCIsIDI3LCAkZXZlbnQua2V5LCBbXG4gICAgICAgICAgICAgICAgICAgIFwiRXNjXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiRXNjYXBlXCJcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIF92bS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgIShcImJ1dHRvblwiIGluICRldmVudCkgJiZcbiAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJ0YWJcIiwgOSwgJGV2ZW50LmtleSwgXCJUYWJcIilcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF92bS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG1vdXNlZW50ZXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICBfdm0uaW5wdXRIb3ZlcmluZyA9IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb3VzZWxlYXZlOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgX3ZtLmlucHV0SG92ZXJpbmcgPSBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgIHZhbHVlOiBfdm0uc2VsZWN0ZWRMYWJlbCxcbiAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgX3ZtLnNlbGVjdGVkTGFiZWwgPSAkJHZcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHByZXNzaW9uOiBcInNlbGVjdGVkTGFiZWxcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF92bS4kc2xvdHMucHJlZml4XG4gICAgICAgICAgICA/IF9jKFwidGVtcGxhdGVcIiwgeyBzbG90OiBcInByZWZpeFwiIH0sIFtfdm0uX3QoXCJwcmVmaXhcIildLCAyKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfYyhcInRlbXBsYXRlXCIsIHsgc2xvdDogXCJzdWZmaXhcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImlcIiwge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6ICFfdm0uc2hvd0Nsb3NlLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCIhc2hvd0Nsb3NlXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGNsYXNzOiBbXG4gICAgICAgICAgICAgICAgXCJlbC1zZWxlY3RfX2NhcmV0XCIsXG4gICAgICAgICAgICAgICAgXCJlbC1pbnB1dF9faWNvblwiLFxuICAgICAgICAgICAgICAgIFwiZWwtaWNvbi1cIiArIF92bS5pY29uQ2xhc3NcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uc2hvd0Nsb3NlXG4gICAgICAgICAgICAgID8gX2MoXCJpXCIsIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOlxuICAgICAgICAgICAgICAgICAgICBcImVsLXNlbGVjdF9fY2FyZXQgZWwtaW5wdXRfX2ljb24gZWwtaWNvbi1jaXJjbGUtY2xvc2VcIixcbiAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGFuZGxlQ2xlYXJDbGljayB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgICksXG4gICAgICBfYyhcbiAgICAgICAgXCJ0cmFuc2l0aW9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyczogeyBuYW1lOiBcImVsLXpvb20taW4tdG9wXCIgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgXCJiZWZvcmUtZW50ZXJcIjogX3ZtLmhhbmRsZU1lbnVFbnRlcixcbiAgICAgICAgICAgIFwiYWZ0ZXItbGVhdmVcIjogX3ZtLmRvRGVzdHJveVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJlbC1zZWxlY3QtbWVudVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS52aXNpYmxlICYmIF92bS5lbXB0eVRleHQgIT09IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2aXNpYmxlICYmIGVtcHR5VGV4dCAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVmOiBcInBvcHBlclwiLFxuICAgICAgICAgICAgICBhdHRyczogeyBcImFwcGVuZC10by1ib2R5XCI6IF92bS5wb3BwZXJBcHBlbmRUb0JvZHkgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJlbC1zY3JvbGxiYXJcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ub3B0aW9ucy5sZW5ndGggPiAwICYmICFfdm0ubG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm9wdGlvbnMubGVuZ3RoID4gMCAmJiAhbG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICByZWY6IFwic2Nyb2xsYmFyXCIsXG4gICAgICAgICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICAgICAgICBcImlzLWVtcHR5XCI6XG4gICAgICAgICAgICAgICAgICAgICAgIV92bS5hbGxvd0NyZWF0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgIF92bS5xdWVyeSAmJlxuICAgICAgICAgICAgICAgICAgICAgIF92bS5maWx0ZXJlZE9wdGlvbnNDb3VudCA9PT0gMFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogXCJ1bFwiLFxuICAgICAgICAgICAgICAgICAgICBcIndyYXAtY2xhc3NcIjogXCJlbC1zZWxlY3QtZHJvcGRvd25fX3dyYXBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ2aWV3LWNsYXNzXCI6IFwiZWwtc2VsZWN0LWRyb3Bkb3duX19saXN0XCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF92bS5zaG93TmV3T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXCJlbC1vcHRpb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgdmFsdWU6IF92bS5xdWVyeSwgY3JlYXRlZDogXCJcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdChcImRlZmF1bHRcIilcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLmVtcHR5VGV4dCAmJlxuICAgICAgICAgICAgICAoIV92bS5hbGxvd0NyZWF0ZSB8fFxuICAgICAgICAgICAgICAgIF92bS5sb2FkaW5nIHx8XG4gICAgICAgICAgICAgICAgKF92bS5hbGxvd0NyZWF0ZSAmJiBfdm0ub3B0aW9ucy5sZW5ndGggPT09IDApKVxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICBfdm0uJHNsb3RzLmVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgPyBfdm0uX3QoXCJlbXB0eVwiKVxuICAgICAgICAgICAgICAgICAgICAgIDogX2MoXCJwXCIsIHsgc3RhdGljQ2xhc3M6IFwiZWwtc2VsZWN0LWRyb3Bkb3duX19lbXB0eVwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uZW1wdHlUZXh0KSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNGFhZGU2JlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvbWl4aW5zL2VtaXR0ZXJcIlxudmFyIGVtaXR0ZXJfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBlbWl0dGVyX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGVtaXR0ZXJfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL21peGlucy9mb2N1c1wiXG52YXIgZm9jdXNfID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG52YXIgZm9jdXNfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZm9jdXNfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL21peGlucy9sb2NhbGVcIlxudmFyIGxvY2FsZV8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xudmFyIGxvY2FsZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihsb2NhbGVfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL2lucHV0XCJcbnZhciBpbnB1dF8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcbnZhciBpbnB1dF9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihpbnB1dF8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LWRyb3Bkb3duLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjgyODc0OCZcbnZhciBzZWxlY3RfZHJvcGRvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNjgyODc0OF9yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJlbC1zZWxlY3QtZHJvcGRvd24gZWwtcG9wcGVyXCIsXG4gICAgICBjbGFzczogW3sgXCJpcy1tdWx0aXBsZVwiOiBfdm0uJHBhcmVudC5tdWx0aXBsZSB9LCBfdm0ucG9wcGVyQ2xhc3NdLFxuICAgICAgc3R5bGU6IHsgbWluV2lkdGg6IF92bS5taW5XaWR0aCB9XG4gICAgfSxcbiAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgMlxuICApXG59XG52YXIgc2VsZWN0X2Ryb3Bkb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY4Mjg3NDhfc3RhdGljUmVuZGVyRm5zID0gW11cbnNlbGVjdF9kcm9wZG93bnZ1ZV90eXBlX3RlbXBsYXRlX2lkXzA2ODI4NzQ4X3JlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QtZHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2ODI4NzQ4JlxuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvdnVlLXBvcHBlclwiXG52YXIgdnVlX3BvcHBlcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xudmFyIHZ1ZV9wb3BwZXJfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4odnVlX3BvcHBlcl8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC1kcm9wZG93bi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzZWxlY3RfZHJvcGRvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoe1xuICBuYW1lOiAnRWxTZWxlY3REcm9wZG93bicsXG5cbiAgY29tcG9uZW50TmFtZTogJ0VsU2VsZWN0RHJvcGRvd24nLFxuXG4gIG1peGluczogW3Z1ZV9wb3BwZXJfZGVmYXVsdC5hXSxcblxuICBwcm9wczoge1xuICAgIHBsYWNlbWVudDoge1xuICAgICAgZGVmYXVsdDogJ2JvdHRvbS1zdGFydCdcbiAgICB9LFxuXG4gICAgYm91bmRhcmllc1BhZGRpbmc6IHtcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuXG4gICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZ3B1QWNjZWxlcmF0aW9uOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICB2aXNpYmxlQXJyb3c6IHtcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuXG4gICAgYXBwZW5kVG9Cb2R5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH1cbiAgfSxcblxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBtaW5XaWR0aDogJydcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBwb3BwZXJDbGFzczogZnVuY3Rpb24gcG9wcGVyQ2xhc3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcGFyZW50LnBvcHBlckNsYXNzO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgICckcGFyZW50LmlucHV0V2lkdGgnOiBmdW5jdGlvbiAkcGFyZW50SW5wdXRXaWR0aCgpIHtcbiAgICAgIHRoaXMubWluV2lkdGggPSB0aGlzLiRwYXJlbnQuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICsgJ3B4JztcbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5yZWZlcmVuY2VFbG0gPSB0aGlzLiRwYXJlbnQuJHJlZnMucmVmZXJlbmNlLiRlbDtcbiAgICB0aGlzLiRwYXJlbnQucG9wcGVyRWxtID0gdGhpcy5wb3BwZXJFbG0gPSB0aGlzLiRlbDtcbiAgICB0aGlzLiRvbigndXBkYXRlUG9wcGVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzLiRwYXJlbnQudmlzaWJsZSkgX3RoaXMudXBkYXRlUG9wcGVyKCk7XG4gICAgfSk7XG4gICAgdGhpcy4kb24oJ2Rlc3Ryb3lQb3BwZXInLCB0aGlzLmRlc3Ryb3lQb3BwZXIpO1xuICB9XG59KTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QtZHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlxuIC8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19zZWxlY3RfZHJvcGRvd252dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18gPSAoc2VsZWN0X2Ryb3Bkb3dudnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfKTsgXG4vLyBFWFRFUk5BTCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1xudmFyIGNvbXBvbmVudE5vcm1hbGl6ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LWRyb3Bkb3duLnZ1ZVxuXG5cblxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cblxudmFyIGNvbXBvbmVudCA9IE9iamVjdChjb21wb25lbnROb3JtYWxpemVyW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShcbiAgc3JjX3NlbGVjdF9kcm9wZG93bnZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyxcbiAgc2VsZWN0X2Ryb3Bkb3dudnVlX3R5cGVfdGVtcGxhdGVfaWRfMDY4Mjg3NDhfcmVuZGVyLFxuICBzZWxlY3RfZHJvcGRvd252dWVfdHlwZV90ZW1wbGF0ZV9pZF8wNjgyODc0OF9zdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAoZmFsc2UpIHsgdmFyIGFwaTsgfVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC1kcm9wZG93bi52dWVcIlxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc2VsZWN0X2Ryb3Bkb3duID0gKGNvbXBvbmVudC5leHBvcnRzKTtcbi8vIEVYVEVSTkFMIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL29wdGlvbi52dWUgKyA0IG1vZHVsZXNcbnZhciBzcmNfb3B0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi90YWdcIlxudmFyIHRhZ18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KTtcbnZhciB0YWdfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4odGFnXyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJlbGVtZW50LXVpL2xpYi9zY3JvbGxiYXJcIlxudmFyIHNjcm9sbGJhcl8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcbnZhciBzY3JvbGxiYXJfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oc2Nyb2xsYmFyXyk7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwgXCJ0aHJvdHRsZS1kZWJvdW5jZS9kZWJvdW5jZVwiXG52YXIgZGVib3VuY2VfID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG52YXIgZGVib3VuY2VfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZGVib3VuY2VfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL2NsaWNrb3V0c2lkZVwiXG52YXIgY2xpY2tvdXRzaWRlXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xudmFyIGNsaWNrb3V0c2lkZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjbGlja291dHNpZGVfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3Jlc2l6ZS1ldmVudFwiXG52YXIgcmVzaXplX2V2ZW50XyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvc2Nyb2xsLWludG8tdmlld1wiXG52YXIgc2Nyb2xsX2ludG9fdmlld18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKTtcbnZhciBzY3JvbGxfaW50b192aWV3X2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHNjcm9sbF9pbnRvX3ZpZXdfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWxcIlxudmFyIHV0aWxfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL25hdmlnYXRpb24tbWl4aW4uanNcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG5hdmlnYXRpb25fbWl4aW4gPSAoe1xuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBob3Zlck9wdGlvbjogLTFcbiAgICB9O1xuICB9LFxuXG5cbiAgY29tcHV0ZWQ6IHtcbiAgICBvcHRpb25zQWxsRGlzYWJsZWQ6IGZ1bmN0aW9uIG9wdGlvbnNBbGxEaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbi52aXNpYmxlO1xuICAgICAgfSkuZXZlcnkoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLmRpc2FibGVkO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgaG92ZXJJbmRleDogZnVuY3Rpb24gaG92ZXJJbmRleCh2YWwpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiB2YWwgPiAtMSkge1xuICAgICAgICB0aGlzLmhvdmVyT3B0aW9uID0gdGhpcy5vcHRpb25zW3ZhbF0gfHwge307XG4gICAgICB9XG4gICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgIG9wdGlvbi5ob3ZlciA9IF90aGlzLmhvdmVyT3B0aW9uID09PSBvcHRpb247XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIG5hdmlnYXRlT3B0aW9uczogZnVuY3Rpb24gbmF2aWdhdGVPcHRpb25zKGRpcmVjdGlvbikge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwIHx8IHRoaXMuZmlsdGVyZWRPcHRpb25zQ291bnQgPT09IDApIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5vcHRpb25zQWxsRGlzYWJsZWQpIHtcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ25leHQnKSB7XG4gICAgICAgICAgdGhpcy5ob3ZlckluZGV4Kys7XG4gICAgICAgICAgaWYgKHRoaXMuaG92ZXJJbmRleCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ob3ZlckluZGV4ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncHJldicpIHtcbiAgICAgICAgICB0aGlzLmhvdmVySW5kZXgtLTtcbiAgICAgICAgICBpZiAodGhpcy5ob3ZlckluZGV4IDwgMCkge1xuICAgICAgICAgICAgdGhpcy5ob3ZlckluZGV4ID0gdGhpcy5vcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBvcHRpb24gPSB0aGlzLm9wdGlvbnNbdGhpcy5ob3ZlckluZGV4XTtcbiAgICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBvcHRpb24uZ3JvdXBEaXNhYmxlZCA9PT0gdHJ1ZSB8fCAhb3B0aW9uLnZpc2libGUpIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlT3B0aW9ucyhkaXJlY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMyLnNjcm9sbFRvT3B0aW9uKF90aGlzMi5ob3Zlck9wdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvc2hhcmVkXCJcbnZhciBzaGFyZWRfID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyA9ICh7XG4gIG1peGluczogW2VtaXR0ZXJfZGVmYXVsdC5hLCBsb2NhbGVfZGVmYXVsdC5hLCBmb2N1c19kZWZhdWx0KCkoJ3JlZmVyZW5jZScpLCBuYXZpZ2F0aW9uX21peGluXSxcblxuICBuYW1lOiAnRWxTZWxlY3QnLFxuXG4gIGNvbXBvbmVudE5hbWU6ICdFbFNlbGVjdCcsXG5cbiAgaW5qZWN0OiB7XG4gICAgZWxGb3JtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG5cbiAgICBlbEZvcm1JdGVtOiB7XG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH1cbiAgfSxcblxuICBwcm92aWRlOiBmdW5jdGlvbiBwcm92aWRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnc2VsZWN0JzogdGhpc1xuICAgIH07XG4gIH0sXG5cblxuICBjb21wdXRlZDoge1xuICAgIF9lbEZvcm1JdGVtU2l6ZTogZnVuY3Rpb24gX2VsRm9ybUl0ZW1TaXplKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmVsRm9ybUl0ZW0gfHwge30pLmVsRm9ybUl0ZW1TaXplO1xuICAgIH0sXG4gICAgcmVhZG9ubHk6IGZ1bmN0aW9uIHJlYWRvbmx5KCkge1xuICAgICAgcmV0dXJuICF0aGlzLmZpbHRlcmFibGUgfHwgdGhpcy5tdWx0aXBsZSB8fCAhT2JqZWN0KHV0aWxfW1wiaXNJRVwiXSkoKSAmJiAhT2JqZWN0KHV0aWxfW1wiaXNFZGdlXCJdKSgpICYmICF0aGlzLnZpc2libGU7XG4gICAgfSxcbiAgICBzaG93Q2xvc2U6IGZ1bmN0aW9uIHNob3dDbG9zZSgpIHtcbiAgICAgIHZhciBoYXNWYWx1ZSA9IHRoaXMubXVsdGlwbGUgPyBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCA6IHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbHVlICE9PSBudWxsICYmIHRoaXMudmFsdWUgIT09ICcnO1xuICAgICAgdmFyIGNyaXRlcmlhID0gdGhpcy5jbGVhcmFibGUgJiYgIXRoaXMuc2VsZWN0RGlzYWJsZWQgJiYgdGhpcy5pbnB1dEhvdmVyaW5nICYmIGhhc1ZhbHVlO1xuICAgICAgcmV0dXJuIGNyaXRlcmlhO1xuICAgIH0sXG4gICAgaWNvbkNsYXNzOiBmdW5jdGlvbiBpY29uQ2xhc3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW1vdGUgJiYgdGhpcy5maWx0ZXJhYmxlID8gJycgOiB0aGlzLnZpc2libGUgPyAnYXJyb3ctdXAgaXMtcmV2ZXJzZScgOiAnYXJyb3ctdXAnO1xuICAgIH0sXG4gICAgZGVib3VuY2U6IGZ1bmN0aW9uIGRlYm91bmNlKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVtb3RlID8gMzAwIDogMDtcbiAgICB9LFxuICAgIGVtcHR5VGV4dDogZnVuY3Rpb24gZW1wdHlUZXh0KCkge1xuICAgICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nVGV4dCB8fCB0aGlzLnQoJ2VsLnNlbGVjdC5sb2FkaW5nJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5yZW1vdGUgJiYgdGhpcy5xdWVyeSA9PT0gJycgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlICYmIHRoaXMucXVlcnkgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDAgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm5vTWF0Y2hUZXh0IHx8IHRoaXMudCgnZWwuc2VsZWN0Lm5vTWF0Y2gnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm5vRGF0YVRleHQgfHwgdGhpcy50KCdlbC5zZWxlY3Qubm9EYXRhJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgc2hvd05ld09wdGlvbjogZnVuY3Rpb24gc2hvd05ld09wdGlvbigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBoYXNFeGlzdGluZ09wdGlvbiA9IHRoaXMub3B0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gIW9wdGlvbi5jcmVhdGVkO1xuICAgICAgfSkuc29tZShmdW5jdGlvbiAob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24uY3VycmVudExhYmVsID09PSBfdGhpcy5xdWVyeTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyYWJsZSAmJiB0aGlzLmFsbG93Q3JlYXRlICYmIHRoaXMucXVlcnkgIT09ICcnICYmICFoYXNFeGlzdGluZ09wdGlvbjtcbiAgICB9LFxuICAgIHNlbGVjdFNpemU6IGZ1bmN0aW9uIHNlbGVjdFNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaXplIHx8IHRoaXMuX2VsRm9ybUl0ZW1TaXplIHx8ICh0aGlzLiRFTEVNRU5UIHx8IHt9KS5zaXplO1xuICAgIH0sXG4gICAgc2VsZWN0RGlzYWJsZWQ6IGZ1bmN0aW9uIHNlbGVjdERpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgKHRoaXMuZWxGb3JtIHx8IHt9KS5kaXNhYmxlZDtcbiAgICB9LFxuICAgIGNvbGxhcHNlVGFnU2l6ZTogZnVuY3Rpb24gY29sbGFwc2VUYWdTaXplKCkge1xuICAgICAgcmV0dXJuIFsnc21hbGwnLCAnbWluaSddLmluZGV4T2YodGhpcy5zZWxlY3RTaXplKSA+IC0xID8gJ21pbmknIDogJ3NtYWxsJztcbiAgICB9LFxuICAgIHByb3BQbGFjZWhvbGRlcjogZnVuY3Rpb24gcHJvcFBsYWNlaG9sZGVyKCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnBsYWNlaG9sZGVyICE9PSAndW5kZWZpbmVkJyA/IHRoaXMucGxhY2Vob2xkZXIgOiB0aGlzLnQoJ2VsLnNlbGVjdC5wbGFjZWhvbGRlcicpO1xuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnRzOiB7XG4gICAgRWxJbnB1dDogaW5wdXRfZGVmYXVsdC5hLFxuICAgIEVsU2VsZWN0TWVudTogc2VsZWN0X2Ryb3Bkb3duLFxuICAgIEVsT3B0aW9uOiBzcmNfb3B0aW9uW1wiYVwiIC8qIGRlZmF1bHQgKi9dLFxuICAgIEVsVGFnOiB0YWdfZGVmYXVsdC5hLFxuICAgIEVsU2Nyb2xsYmFyOiBzY3JvbGxiYXJfZGVmYXVsdC5hXG4gIH0sXG5cbiAgZGlyZWN0aXZlczogeyBDbGlja291dHNpZGU6IGNsaWNrb3V0c2lkZV9kZWZhdWx0LmEgfSxcblxuICBwcm9wczoge1xuICAgIG5hbWU6IFN0cmluZyxcbiAgICBpZDogU3RyaW5nLFxuICAgIHZhbHVlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgYXV0b2NvbXBsZXRlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnb2ZmJ1xuICAgIH0sXG4gICAgLyoqIEBEZXByZWNhdGVkIGluIG5leHQgbWFqb3IgdmVyc2lvbiAqL1xuICAgIGF1dG9Db21wbGV0ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgICBmYWxzZSAmJiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBhdXRvbWF0aWNEcm9wZG93bjogQm9vbGVhbixcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgY2xlYXJhYmxlOiBCb29sZWFuLFxuICAgIGZpbHRlcmFibGU6IEJvb2xlYW4sXG4gICAgYWxsb3dDcmVhdGU6IEJvb2xlYW4sXG4gICAgbG9hZGluZzogQm9vbGVhbixcbiAgICBwb3BwZXJDbGFzczogU3RyaW5nLFxuICAgIHJlbW90ZTogQm9vbGVhbixcbiAgICBsb2FkaW5nVGV4dDogU3RyaW5nLFxuICAgIG5vTWF0Y2hUZXh0OiBTdHJpbmcsXG4gICAgbm9EYXRhVGV4dDogU3RyaW5nLFxuICAgIHJlbW90ZU1ldGhvZDogRnVuY3Rpb24sXG4gICAgZmlsdGVyTWV0aG9kOiBGdW5jdGlvbixcbiAgICBtdWx0aXBsZTogQm9vbGVhbixcbiAgICBtdWx0aXBsZUxpbWl0OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBwbGFjZWhvbGRlcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgfSxcbiAgICBkZWZhdWx0Rmlyc3RPcHRpb246IEJvb2xlYW4sXG4gICAgcmVzZXJ2ZUtleXdvcmQ6IEJvb2xlYW4sXG4gICAgdmFsdWVLZXk6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd2YWx1ZSdcbiAgICB9LFxuICAgIGNvbGxhcHNlVGFnczogQm9vbGVhbixcbiAgICBwb3BwZXJBcHBlbmRUb0JvZHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgY2FjaGVkT3B0aW9uczogW10sXG4gICAgICBjcmVhdGVkTGFiZWw6IG51bGwsXG4gICAgICBjcmVhdGVkU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMubXVsdGlwbGUgPyBbXSA6IHt9LFxuICAgICAgaW5wdXRMZW5ndGg6IDIwLFxuICAgICAgaW5wdXRXaWR0aDogMCxcbiAgICAgIGluaXRpYWxJbnB1dEhlaWdodDogMCxcbiAgICAgIGNhY2hlZFBsYWNlSG9sZGVyOiAnJyxcbiAgICAgIG9wdGlvbnNDb3VudDogMCxcbiAgICAgIGZpbHRlcmVkT3B0aW9uc0NvdW50OiAwLFxuICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICBzb2Z0Rm9jdXM6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWRMYWJlbDogJycsXG4gICAgICBob3ZlckluZGV4OiAtMSxcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHByZXZpb3VzUXVlcnk6IG51bGwsXG4gICAgICBpbnB1dEhvdmVyaW5nOiBmYWxzZSxcbiAgICAgIGN1cnJlbnRQbGFjZWhvbGRlcjogJycsXG4gICAgICBtZW51VmlzaWJsZU9uRm9jdXM6IGZhbHNlLFxuICAgICAgaXNPbkNvbXBvc2l0aW9uOiBmYWxzZSxcbiAgICAgIGlzU2lsZW50Qmx1cjogZmFsc2VcbiAgICB9O1xuICB9LFxuXG5cbiAgd2F0Y2g6IHtcbiAgICBzZWxlY3REaXNhYmxlZDogZnVuY3Rpb24gc2VsZWN0RGlzYWJsZWQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIucmVzZXRJbnB1dEhlaWdodCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBwcm9wUGxhY2Vob2xkZXI6IGZ1bmN0aW9uIHByb3BQbGFjZWhvbGRlcih2YWwpIHtcbiAgICAgIHRoaXMuY2FjaGVkUGxhY2VIb2xkZXIgPSB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHZhbDtcbiAgICB9LFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSh2YWwsIG9sZFZhbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5yZXNldElucHV0SGVpZ2h0KCk7XG4gICAgICAgIGlmICh2YWwgJiYgdmFsLmxlbmd0aCA+IDAgfHwgdGhpcy4kcmVmcy5pbnB1dCAmJiB0aGlzLnF1ZXJ5ICE9PSAnJykge1xuICAgICAgICAgIHRoaXMuY3VycmVudFBsYWNlaG9sZGVyID0gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50UGxhY2Vob2xkZXIgPSB0aGlzLmNhY2hlZFBsYWNlSG9sZGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUgJiYgIXRoaXMucmVzZXJ2ZUtleXdvcmQpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUNoYW5nZSh0aGlzLnF1ZXJ5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5zZXRTZWxlY3RlZCgpO1xuICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSAmJiAhdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmlucHV0TGVuZ3RoID0gMjA7XG4gICAgICB9XG4gICAgICBpZiAoIU9iamVjdCh1dGlsX1tcInZhbHVlRXF1YWxzXCJdKSh2YWwsIG9sZFZhbCkpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCgnRWxGb3JtSXRlbScsICdlbC5mb3JtLmNoYW5nZScsIHZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB2aXNpYmxlOiBmdW5jdGlvbiB2aXNpYmxlKHZhbCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGlmICghdmFsKSB7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbFNlbGVjdERyb3Bkb3duJywgJ2Rlc3Ryb3lQb3BwZXInKTtcbiAgICAgICAgaWYgKHRoaXMuJHJlZnMuaW5wdXQpIHtcbiAgICAgICAgICB0aGlzLiRyZWZzLmlucHV0LmJsdXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgIHRoaXMucHJldmlvdXNRdWVyeSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbCA9ICcnO1xuICAgICAgICB0aGlzLmlucHV0TGVuZ3RoID0gMjA7XG4gICAgICAgIHRoaXMubWVudVZpc2libGVPbkZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVzZXRIb3ZlckluZGV4KCk7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoX3RoaXMzLiRyZWZzLmlucHV0ICYmIF90aGlzMy4kcmVmcy5pbnB1dC52YWx1ZSA9PT0gJycgJiYgX3RoaXMzLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgX3RoaXMzLmN1cnJlbnRQbGFjZWhvbGRlciA9IF90aGlzMy5jYWNoZWRQbGFjZUhvbGRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSAmJiB0aGlzLmFsbG93Q3JlYXRlICYmIHRoaXMuY3JlYXRlZFNlbGVjdGVkICYmIHRoaXMuY3JlYXRlZExhYmVsKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbCA9IHRoaXMuY3JlYXRlZExhYmVsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsID0gdGhpcy5zZWxlY3RlZC5jdXJyZW50TGFiZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlKSB0aGlzLnF1ZXJ5ID0gdGhpcy5zZWxlY3RlZExhYmVsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBsYWNlaG9sZGVyID0gdGhpcy5jYWNoZWRQbGFjZUhvbGRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbFNlbGVjdERyb3Bkb3duJywgJ3VwZGF0ZVBvcHBlcicpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJhYmxlKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMucmVtb3RlID8gJycgOiB0aGlzLnNlbGVjdGVkTGFiZWw7XG4gICAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUNoYW5nZSh0aGlzLnF1ZXJ5KTtcbiAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy4kcmVmcy5pbnB1dC5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbicsICdxdWVyeUNoYW5nZScsICcnKTtcbiAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsT3B0aW9uR3JvdXAnLCAncXVlcnlDaGFuZ2UnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMYWJlbCkge1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHRoaXMuc2VsZWN0ZWRMYWJlbDtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLiRlbWl0KCd2aXNpYmxlLWNoYW5nZScsIHZhbCk7XG4gICAgfSxcbiAgICBvcHRpb25zOiBmdW5jdGlvbiBvcHRpb25zKCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczQuYnJvYWRjYXN0KCdFbFNlbGVjdERyb3Bkb3duJywgJ3VwZGF0ZVBvcHBlcicpO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLnJlc2V0SW5wdXRIZWlnaHQoKTtcbiAgICAgIH1cbiAgICAgIHZhciBpbnB1dHMgPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCcpO1xuICAgICAgaWYgKFtdLmluZGV4T2YuY2FsbChpbnB1dHMsIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpID09PSAtMSkge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgKHRoaXMuZmlsdGVyYWJsZSB8fCB0aGlzLnJlbW90ZSkgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCkge1xuICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdEZpcnN0T3B0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVOYXZpZ2F0ZTogZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUoZGlyZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5pc09uQ29tcG9zaXRpb24pIHJldHVybjtcblxuICAgICAgdGhpcy5uYXZpZ2F0ZU9wdGlvbnMoZGlyZWN0aW9uKTtcbiAgICB9LFxuICAgIGhhbmRsZUNvbXBvc2l0aW9uOiBmdW5jdGlvbiBoYW5kbGVDb21wb3NpdGlvbihldmVudCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHZhciB0ZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb21wb3NpdGlvbmVuZCcpIHtcbiAgICAgICAgdGhpcy5pc09uQ29tcG9zaXRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXM1LmhhbmRsZVF1ZXJ5Q2hhbmdlKHRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBsYXN0Q2hhcmFjdGVyID0gdGV4dFt0ZXh0Lmxlbmd0aCAtIDFdIHx8ICcnO1xuICAgICAgICB0aGlzLmlzT25Db21wb3NpdGlvbiA9ICFPYmplY3Qoc2hhcmVkX1tcImlzS29yZWFuXCJdKShsYXN0Q2hhcmFjdGVyKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVF1ZXJ5Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVRdWVyeUNoYW5nZSh2YWwpIHtcbiAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5wcmV2aW91c1F1ZXJ5ID09PSB2YWwgfHwgdGhpcy5pc09uQ29tcG9zaXRpb24pIHJldHVybjtcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzUXVlcnkgPT09IG51bGwgJiYgKHR5cGVvZiB0aGlzLmZpbHRlck1ldGhvZCA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5yZW1vdGVNZXRob2QgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNRdWVyeSA9IHZhbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5wcmV2aW91c1F1ZXJ5ID0gdmFsO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXM2LnZpc2libGUpIF90aGlzNi5icm9hZGNhc3QoJ0VsU2VsZWN0RHJvcGRvd24nLCAndXBkYXRlUG9wcGVyJyk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaG92ZXJJbmRleCA9IC0xO1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5maWx0ZXJhYmxlKSB7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgbGVuZ3RoID0gX3RoaXM2LiRyZWZzLmlucHV0LnZhbHVlLmxlbmd0aCAqIDE1ICsgMjA7XG4gICAgICAgICAgX3RoaXM2LmlucHV0TGVuZ3RoID0gX3RoaXM2LmNvbGxhcHNlVGFncyA/IE1hdGgubWluKDUwLCBsZW5ndGgpIDogbGVuZ3RoO1xuICAgICAgICAgIF90aGlzNi5tYW5hZ2VQbGFjZWhvbGRlcigpO1xuICAgICAgICAgIF90aGlzNi5yZXNldElucHV0SGVpZ2h0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucmVtb3RlICYmIHR5cGVvZiB0aGlzLnJlbW90ZU1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmhvdmVySW5kZXggPSAtMTtcbiAgICAgICAgdGhpcy5yZW1vdGVNZXRob2QodmFsKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuZmlsdGVyTWV0aG9kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyTWV0aG9kKHZhbCk7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbkdyb3VwJywgJ3F1ZXJ5Q2hhbmdlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc0NvdW50ID0gdGhpcy5vcHRpb25zQ291bnQ7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbicsICdxdWVyeUNoYW5nZScsIHZhbCk7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KCdFbE9wdGlvbkdyb3VwJywgJ3F1ZXJ5Q2hhbmdlJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgKHRoaXMuZmlsdGVyYWJsZSB8fCB0aGlzLnJlbW90ZSkgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCkge1xuICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdEZpcnN0T3B0aW9uKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzY3JvbGxUb09wdGlvbjogZnVuY3Rpb24gc2Nyb2xsVG9PcHRpb24ob3B0aW9uKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gQXJyYXkuaXNBcnJheShvcHRpb24pICYmIG9wdGlvblswXSA/IG9wdGlvblswXS4kZWwgOiBvcHRpb24uJGVsO1xuICAgICAgaWYgKHRoaXMuJHJlZnMucG9wcGVyICYmIHRhcmdldCkge1xuICAgICAgICB2YXIgbWVudSA9IHRoaXMuJHJlZnMucG9wcGVyLiRlbC5xdWVyeVNlbGVjdG9yKCcuZWwtc2VsZWN0LWRyb3Bkb3duX193cmFwJyk7XG4gICAgICAgIHNjcm9sbF9pbnRvX3ZpZXdfZGVmYXVsdCgpKG1lbnUsIHRhcmdldCk7XG4gICAgICB9XG4gICAgICB0aGlzLiRyZWZzLnNjcm9sbGJhciAmJiB0aGlzLiRyZWZzLnNjcm9sbGJhci5oYW5kbGVTY3JvbGwoKTtcbiAgICB9LFxuICAgIGhhbmRsZU1lbnVFbnRlcjogZnVuY3Rpb24gaGFuZGxlTWVudUVudGVyKCkge1xuICAgICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNy5zY3JvbGxUb09wdGlvbihfdGhpczcuc2VsZWN0ZWQpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBlbWl0Q2hhbmdlOiBmdW5jdGlvbiBlbWl0Q2hhbmdlKHZhbCkge1xuICAgICAgaWYgKCFPYmplY3QodXRpbF9bXCJ2YWx1ZUVxdWFsc1wiXSkodGhpcy52YWx1ZSwgdmFsKSkge1xuICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UnLCB2YWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0T3B0aW9uOiBmdW5jdGlvbiBnZXRPcHRpb24odmFsdWUpIHtcbiAgICAgIHZhciBvcHRpb24gPSB2b2lkIDA7XG4gICAgICB2YXIgaXNPYmplY3QgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnRvTG93ZXJDYXNlKCkgPT09ICdbb2JqZWN0IG9iamVjdF0nO1xuICAgICAgdmFyIGlzTnVsbCA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkudG9Mb3dlckNhc2UoKSA9PT0gJ1tvYmplY3QgbnVsbF0nO1xuICAgICAgdmFyIGlzVW5kZWZpbmVkID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS50b0xvd2VyQ2FzZSgpID09PSAnW29iamVjdCB1bmRlZmluZWRdJztcblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMuY2FjaGVkT3B0aW9ucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgY2FjaGVkT3B0aW9uID0gdGhpcy5jYWNoZWRPcHRpb25zW2ldO1xuICAgICAgICB2YXIgaXNFcXVhbCA9IGlzT2JqZWN0ID8gT2JqZWN0KHV0aWxfW1wiZ2V0VmFsdWVCeVBhdGhcIl0pKGNhY2hlZE9wdGlvbi52YWx1ZSwgdGhpcy52YWx1ZUtleSkgPT09IE9iamVjdCh1dGlsX1tcImdldFZhbHVlQnlQYXRoXCJdKSh2YWx1ZSwgdGhpcy52YWx1ZUtleSkgOiBjYWNoZWRPcHRpb24udmFsdWUgPT09IHZhbHVlO1xuICAgICAgICBpZiAoaXNFcXVhbCkge1xuICAgICAgICAgIG9wdGlvbiA9IGNhY2hlZE9wdGlvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbikgcmV0dXJuIG9wdGlvbjtcbiAgICAgIHZhciBsYWJlbCA9ICFpc09iamVjdCAmJiAhaXNOdWxsICYmICFpc1VuZGVmaW5lZCA/IFN0cmluZyh2YWx1ZSkgOiAnJztcbiAgICAgIHZhciBuZXdPcHRpb24gPSB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgY3VycmVudExhYmVsOiBsYWJlbFxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIG5ld09wdGlvbi5oaXRTdGF0ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld09wdGlvbjtcbiAgICB9LFxuICAgIHNldFNlbGVjdGVkOiBmdW5jdGlvbiBzZXRTZWxlY3RlZCgpIHtcbiAgICAgIHZhciBfdGhpczggPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdmFyIG9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uKHRoaXMudmFsdWUpO1xuICAgICAgICBpZiAob3B0aW9uLmNyZWF0ZWQpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZWRMYWJlbCA9IG9wdGlvbi5jdXJyZW50TGFiZWw7XG4gICAgICAgICAgdGhpcy5jcmVhdGVkU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY3JlYXRlZFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsID0gb3B0aW9uLmN1cnJlbnRMYWJlbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IG9wdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSkgdGhpcy5xdWVyeSA9IHRoaXMuc2VsZWN0ZWRMYWJlbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKF90aGlzOC5nZXRPcHRpb24odmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkID0gcmVzdWx0O1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczgucmVzZXRJbnB1dEhlaWdodCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBoYW5kbGVGb2N1czogZnVuY3Rpb24gaGFuZGxlRm9jdXMoZXZlbnQpIHtcbiAgICAgIGlmICghdGhpcy5zb2Z0Rm9jdXMpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b21hdGljRHJvcGRvd24gfHwgdGhpcy5maWx0ZXJhYmxlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyYWJsZSAmJiAhdGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVWaXNpYmxlT25Gb2N1cyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4kZW1pdCgnZm9jdXMnLCBldmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvZnRGb2N1cyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy4kcmVmcy5yZWZlcmVuY2UuYmx1cigpO1xuICAgIH0sXG4gICAgaGFuZGxlQmx1cjogZnVuY3Rpb24gaGFuZGxlQmx1cihldmVudCkge1xuICAgICAgdmFyIF90aGlzOSA9IHRoaXM7XG5cbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXM5LmlzU2lsZW50Qmx1cikge1xuICAgICAgICAgIF90aGlzOS5pc1NpbGVudEJsdXIgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpczkuJGVtaXQoJ2JsdXInLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDUwKTtcbiAgICAgIHRoaXMuc29mdEZvY3VzID0gZmFsc2U7XG4gICAgfSxcbiAgICBoYW5kbGVDbGVhckNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGVhckNsaWNrKGV2ZW50KSB7XG4gICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkKGV2ZW50KTtcbiAgICB9LFxuICAgIGRvRGVzdHJveTogZnVuY3Rpb24gZG9EZXN0cm95KCkge1xuICAgICAgdGhpcy4kcmVmcy5wb3BwZXIgJiYgdGhpcy4kcmVmcy5wb3BwZXIuZG9EZXN0cm95KCk7XG4gICAgfSxcbiAgICBoYW5kbGVDbG9zZTogZnVuY3Rpb24gaGFuZGxlQ2xvc2UoKSB7XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9LFxuICAgIHRvZ2dsZUxhc3RPcHRpb25IaXRTdGF0ZTogZnVuY3Rpb24gdG9nZ2xlTGFzdE9wdGlvbkhpdFN0YXRlKGhpdCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWQpKSByZXR1cm47XG4gICAgICB2YXIgb3B0aW9uID0gdGhpcy5zZWxlY3RlZFt0aGlzLnNlbGVjdGVkLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKCFvcHRpb24pIHJldHVybjtcblxuICAgICAgaWYgKGhpdCA9PT0gdHJ1ZSB8fCBoaXQgPT09IGZhbHNlKSB7XG4gICAgICAgIG9wdGlvbi5oaXRTdGF0ZSA9IGhpdDtcbiAgICAgICAgcmV0dXJuIGhpdDtcbiAgICAgIH1cblxuICAgICAgb3B0aW9uLmhpdFN0YXRlID0gIW9wdGlvbi5oaXRTdGF0ZTtcbiAgICAgIHJldHVybiBvcHRpb24uaGl0U3RhdGU7XG4gICAgfSxcbiAgICBkZWxldGVQcmV2VGFnOiBmdW5jdGlvbiBkZWxldGVQcmV2VGFnKGUpIHtcbiAgICAgIGlmIChlLnRhcmdldC52YWx1ZS5sZW5ndGggPD0gMCAmJiAhdGhpcy50b2dnbGVMYXN0T3B0aW9uSGl0U3RhdGUoKSkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlLnNsaWNlKCk7XG4gICAgICAgIHZhbHVlLnBvcCgpO1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1hbmFnZVBsYWNlaG9sZGVyOiBmdW5jdGlvbiBtYW5hZ2VQbGFjZWhvbGRlcigpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciAhPT0gJycpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGxhY2Vob2xkZXIgPSB0aGlzLiRyZWZzLmlucHV0LnZhbHVlID8gJycgOiB0aGlzLmNhY2hlZFBsYWNlSG9sZGVyO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVzZXRJbnB1dFN0YXRlOiBmdW5jdGlvbiByZXNldElucHV0U3RhdGUoZSkge1xuICAgICAgaWYgKGUua2V5Q29kZSAhPT0gOCkgdGhpcy50b2dnbGVMYXN0T3B0aW9uSGl0U3RhdGUoZmFsc2UpO1xuICAgICAgdGhpcy5pbnB1dExlbmd0aCA9IHRoaXMuJHJlZnMuaW5wdXQudmFsdWUubGVuZ3RoICogMTUgKyAyMDtcbiAgICAgIHRoaXMucmVzZXRJbnB1dEhlaWdodCgpO1xuICAgIH0sXG4gICAgcmVzZXRJbnB1dEhlaWdodDogZnVuY3Rpb24gcmVzZXRJbnB1dEhlaWdodCgpIHtcbiAgICAgIHZhciBfdGhpczEwID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuY29sbGFwc2VUYWdzICYmICF0aGlzLmZpbHRlcmFibGUpIHJldHVybjtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFfdGhpczEwLiRyZWZzLnJlZmVyZW5jZSkgcmV0dXJuO1xuICAgICAgICB2YXIgaW5wdXRDaGlsZE5vZGVzID0gX3RoaXMxMC4kcmVmcy5yZWZlcmVuY2UuJGVsLmNoaWxkTm9kZXM7XG4gICAgICAgIHZhciBpbnB1dCA9IFtdLmZpbHRlci5jYWxsKGlucHV0Q2hpbGROb2RlcywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gaXRlbS50YWdOYW1lID09PSAnSU5QVVQnO1xuICAgICAgICB9KVswXTtcbiAgICAgICAgdmFyIHRhZ3MgPSBfdGhpczEwLiRyZWZzLnRhZ3M7XG4gICAgICAgIHZhciB0YWdzSGVpZ2h0ID0gdGFncyA/IE1hdGgucm91bmQodGFncy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpIDogMDtcbiAgICAgICAgdmFyIHNpemVJbk1hcCA9IF90aGlzMTAuaW5pdGlhbElucHV0SGVpZ2h0IHx8IDQwO1xuICAgICAgICBpbnB1dC5zdHlsZS5oZWlnaHQgPSBfdGhpczEwLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCA/IHNpemVJbk1hcCArICdweCcgOiBNYXRoLm1heCh0YWdzID8gdGFnc0hlaWdodCArICh0YWdzSGVpZ2h0ID4gc2l6ZUluTWFwID8gNiA6IDApIDogMCwgc2l6ZUluTWFwKSArICdweCc7XG4gICAgICAgIGlmIChfdGhpczEwLnZpc2libGUgJiYgX3RoaXMxMC5lbXB0eVRleHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgX3RoaXMxMC5icm9hZGNhc3QoJ0VsU2VsZWN0RHJvcGRvd24nLCAndXBkYXRlUG9wcGVyJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmVzZXRIb3ZlckluZGV4OiBmdW5jdGlvbiByZXNldEhvdmVySW5kZXgoKSB7XG4gICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7XG5cbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIV90aGlzMTEubXVsdGlwbGUpIHtcbiAgICAgICAgICBfdGhpczExLmhvdmVySW5kZXggPSBfdGhpczExLm9wdGlvbnMuaW5kZXhPZihfdGhpczExLnNlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoX3RoaXMxMS5zZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBfdGhpczExLmhvdmVySW5kZXggPSBNYXRoLm1pbi5hcHBseShudWxsLCBfdGhpczExLnNlbGVjdGVkLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMxMS5vcHRpb25zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzMTEuaG92ZXJJbmRleCA9IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMzAwKTtcbiAgICB9LFxuICAgIGhhbmRsZU9wdGlvblNlbGVjdDogZnVuY3Rpb24gaGFuZGxlT3B0aW9uU2VsZWN0KG9wdGlvbiwgYnlDbGljaykge1xuICAgICAgdmFyIF90aGlzMTIgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB2YXIgdmFsdWUgPSAodGhpcy52YWx1ZSB8fCBbXSkuc2xpY2UoKTtcbiAgICAgICAgdmFyIG9wdGlvbkluZGV4ID0gdGhpcy5nZXRWYWx1ZUluZGV4KHZhbHVlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICBpZiAob3B0aW9uSW5kZXggPiAtMSkge1xuICAgICAgICAgIHZhbHVlLnNwbGljZShvcHRpb25JbmRleCwgMSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tdWx0aXBsZUxpbWl0IDw9IDAgfHwgdmFsdWUubGVuZ3RoIDwgdGhpcy5tdWx0aXBsZUxpbWl0KSB7XG4gICAgICAgICAgdmFsdWUucHVzaChvcHRpb24udmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsdWUpO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UodmFsdWUpO1xuICAgICAgICBpZiAob3B0aW9uLmNyZWF0ZWQpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUNoYW5nZSgnJyk7XG4gICAgICAgICAgdGhpcy5pbnB1dExlbmd0aCA9IDIwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUpIHRoaXMuJHJlZnMuaW5wdXQuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0Jywgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5pc1NpbGVudEJsdXIgPSBieUNsaWNrO1xuICAgICAgdGhpcy5zZXRTb2Z0Rm9jdXMoKTtcbiAgICAgIGlmICh0aGlzLnZpc2libGUpIHJldHVybjtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMxMi5zY3JvbGxUb09wdGlvbihvcHRpb24pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBzZXRTb2Z0Rm9jdXM6IGZ1bmN0aW9uIHNldFNvZnRGb2N1cygpIHtcbiAgICAgIHRoaXMuc29mdEZvY3VzID0gdHJ1ZTtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuJHJlZnMuaW5wdXQgfHwgdGhpcy4kcmVmcy5yZWZlcmVuY2U7XG4gICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldFZhbHVlSW5kZXg6IGZ1bmN0aW9uIGdldFZhbHVlSW5kZXgoKSB7XG4gICAgICB2YXIgYXJyID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTtcbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3VtZW50c1sxXTtcblxuICAgICAgdmFyIGlzT2JqZWN0ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS50b0xvd2VyQ2FzZSgpID09PSAnW29iamVjdCBvYmplY3RdJztcbiAgICAgIGlmICghaXNPYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGFyci5pbmRleE9mKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB2YWx1ZUtleSA9IHRoaXMudmFsdWVLZXk7XG4gICAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgICBhcnIuc29tZShmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgICAgICAgIGlmIChPYmplY3QodXRpbF9bXCJnZXRWYWx1ZUJ5UGF0aFwiXSkoaXRlbSwgdmFsdWVLZXkpID09PSBPYmplY3QodXRpbF9bXCJnZXRWYWx1ZUJ5UGF0aFwiXSkodmFsdWUsIHZhbHVlS2V5KSkge1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRvZ2dsZU1lbnU6IGZ1bmN0aW9uIHRvZ2dsZU1lbnUoKSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0RGlzYWJsZWQpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudVZpc2libGVPbkZvY3VzKSB7XG4gICAgICAgICAgdGhpcy5tZW51VmlzaWJsZU9uRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpc2libGUgPSAhdGhpcy52aXNpYmxlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAodGhpcy4kcmVmcy5pbnB1dCB8fCB0aGlzLiRyZWZzLnJlZmVyZW5jZSkuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0T3B0aW9uOiBmdW5jdGlvbiBzZWxlY3RPcHRpb24oKSB7XG4gICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZU1lbnUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNbdGhpcy5ob3ZlckluZGV4XSkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlT3B0aW9uU2VsZWN0KHRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZGVsZXRlU2VsZWN0ZWQ6IGZ1bmN0aW9uIGRlbGV0ZVNlbGVjdGVkKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMubXVsdGlwbGUgPyBbXSA6ICcnO1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWx1ZSk7XG4gICAgICB0aGlzLmVtaXRDaGFuZ2UodmFsdWUpO1xuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICB0aGlzLiRlbWl0KCdjbGVhcicpO1xuICAgIH0sXG4gICAgZGVsZXRlVGFnOiBmdW5jdGlvbiBkZWxldGVUYWcoZXZlbnQsIHRhZykge1xuICAgICAgdmFyIGluZGV4ID0gdGhpcy5zZWxlY3RlZC5pbmRleE9mKHRhZyk7XG4gICAgICBpZiAoaW5kZXggPiAtMSAmJiAhdGhpcy5zZWxlY3REaXNhYmxlZCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlLnNsaWNlKCk7XG4gICAgICAgIHZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdmFsdWUpO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLiRlbWl0KCdyZW1vdmUtdGFnJywgdGFnLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0sXG4gICAgb25JbnB1dENoYW5nZTogZnVuY3Rpb24gb25JbnB1dENoYW5nZSgpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlcmFibGUgJiYgdGhpcy5xdWVyeSAhPT0gdGhpcy5zZWxlY3RlZExhYmVsKSB7XG4gICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlbGVjdGVkTGFiZWw7XG4gICAgICAgIHRoaXMuaGFuZGxlUXVlcnlDaGFuZ2UodGhpcy5xdWVyeSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbk9wdGlvbkRlc3Ryb3k6IGZ1bmN0aW9uIG9uT3B0aW9uRGVzdHJveShpbmRleCkge1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ291bnQtLTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudC0tO1xuICAgICAgICB0aGlzLm9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc2V0SW5wdXRXaWR0aDogZnVuY3Rpb24gcmVzZXRJbnB1dFdpZHRoKCkge1xuICAgICAgdGhpcy5pbnB1dFdpZHRoID0gdGhpcy4kcmVmcy5yZWZlcmVuY2UuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH0sXG4gICAgaGFuZGxlUmVzaXplOiBmdW5jdGlvbiBoYW5kbGVSZXNpemUoKSB7XG4gICAgICB0aGlzLnJlc2V0SW5wdXRXaWR0aCgpO1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHRoaXMucmVzZXRJbnB1dEhlaWdodCgpO1xuICAgIH0sXG4gICAgY2hlY2tEZWZhdWx0Rmlyc3RPcHRpb246IGZ1bmN0aW9uIGNoZWNrRGVmYXVsdEZpcnN0T3B0aW9uKCkge1xuICAgICAgdGhpcy5ob3ZlckluZGV4ID0gLTE7XG4gICAgICAvLyBoaWdobGlnaHQgdGhlIGNyZWF0ZWQgb3B0aW9uXG4gICAgICB2YXIgaGFzQ3JlYXRlZCA9IGZhbHNlO1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMub3B0aW9ucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zW2ldLmNyZWF0ZWQpIHtcbiAgICAgICAgICBoYXNDcmVhdGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmhvdmVySW5kZXggPSBpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaGFzQ3JlYXRlZCkgcmV0dXJuO1xuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSAhPT0gdGhpcy5vcHRpb25zLmxlbmd0aDsgKytfaSkge1xuICAgICAgICB2YXIgb3B0aW9uID0gdGhpcy5vcHRpb25zW19pXTtcbiAgICAgICAgaWYgKHRoaXMucXVlcnkpIHtcbiAgICAgICAgICAvLyBoaWdobGlnaHQgZmlyc3Qgb3B0aW9ucyB0aGF0IHBhc3NlcyB0aGUgZmlsdGVyXG4gICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQgJiYgIW9wdGlvbi5ncm91cERpc2FibGVkICYmIG9wdGlvbi52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmhvdmVySW5kZXggPSBfaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBoaWdobGlnaHQgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvblxuICAgICAgICAgIGlmIChvcHRpb24uaXRlbVNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmhvdmVySW5kZXggPSBfaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0VmFsdWVLZXk6IGZ1bmN0aW9uIGdldFZhbHVlS2V5KGl0ZW0pIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaXRlbS52YWx1ZSkudG9Mb3dlckNhc2UoKSAhPT0gJ1tvYmplY3Qgb2JqZWN0XScpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gT2JqZWN0KHV0aWxfW1wiZ2V0VmFsdWVCeVBhdGhcIl0pKGl0ZW0udmFsdWUsIHRoaXMudmFsdWVLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpczEzID0gdGhpcztcblxuICAgIHRoaXMuY2FjaGVkUGxhY2VIb2xkZXIgPSB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHRoaXMucHJvcFBsYWNlaG9sZGVyO1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIFtdKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgJycpO1xuICAgIH1cblxuICAgIHRoaXMuZGVib3VuY2VkT25JbnB1dENoYW5nZSA9IGRlYm91bmNlX2RlZmF1bHQoKSh0aGlzLmRlYm91bmNlLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczEzLm9uSW5wdXRDaGFuZ2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGVib3VuY2VkUXVlcnlDaGFuZ2UgPSBkZWJvdW5jZV9kZWZhdWx0KCkodGhpcy5kZWJvdW5jZSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzMTMuaGFuZGxlUXVlcnlDaGFuZ2UoZS50YXJnZXQudmFsdWUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kb24oJ2hhbmRsZU9wdGlvbkNsaWNrJywgdGhpcy5oYW5kbGVPcHRpb25TZWxlY3QpO1xuICAgIHRoaXMuJG9uKCdzZXRTZWxlY3RlZCcsIHRoaXMuc2V0U2VsZWN0ZWQpO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpczE0ID0gdGhpcztcblxuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9ICcnO1xuICAgIH1cbiAgICBPYmplY3QocmVzaXplX2V2ZW50X1tcImFkZFJlc2l6ZUxpc3RlbmVyXCJdKSh0aGlzLiRlbCwgdGhpcy5oYW5kbGVSZXNpemUpO1xuXG4gICAgdmFyIHJlZmVyZW5jZSA9IHRoaXMuJHJlZnMucmVmZXJlbmNlO1xuICAgIGlmIChyZWZlcmVuY2UgJiYgcmVmZXJlbmNlLiRlbCkge1xuICAgICAgdmFyIHNpemVNYXAgPSB7XG4gICAgICAgIG1lZGl1bTogMzYsXG4gICAgICAgIHNtYWxsOiAzMixcbiAgICAgICAgbWluaTogMjhcbiAgICAgIH07XG4gICAgICB2YXIgaW5wdXQgPSByZWZlcmVuY2UuJGVsLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICB0aGlzLmluaXRpYWxJbnB1dEhlaWdodCA9IGlucHV0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCB8fCBzaXplTWFwW3RoaXMuc2VsZWN0U2l6ZV07XG4gICAgfVxuICAgIGlmICh0aGlzLnJlbW90ZSAmJiB0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnJlc2V0SW5wdXRIZWlnaHQoKTtcbiAgICB9XG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHJlZmVyZW5jZSAmJiByZWZlcmVuY2UuJGVsKSB7XG4gICAgICAgIF90aGlzMTQuaW5wdXRXaWR0aCA9IHJlZmVyZW5jZS4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZXRTZWxlY3RlZCgpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLmhhbmRsZVJlc2l6ZSkgT2JqZWN0KHJlc2l6ZV9ldmVudF9bXCJyZW1vdmVSZXNpemVMaXN0ZW5lclwiXSkodGhpcy4kZWwsIHRoaXMuaGFuZGxlUmVzaXplKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3NlbGVjdC9zcmMvc2VsZWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfc2VsZWN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHNlbGVjdHZ1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy9zZWxlY3Qvc3JjL3NlbGVjdC52dWVcblxuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBzZWxlY3RfY29tcG9uZW50ID0gT2JqZWN0KGNvbXBvbmVudE5vcm1hbGl6ZXJbXCJhXCIgLyogZGVmYXVsdCAqL10pKFxuICBzcmNfc2VsZWN0dnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChmYWxzZSkgeyB2YXIgc2VsZWN0X2FwaTsgfVxuc2VsZWN0X2NvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvc2VsZWN0L3NyYy9zZWxlY3QudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY19zZWxlY3QgPSAoc2VsZWN0X2NvbXBvbmVudC5leHBvcnRzKTtcbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vcGFja2FnZXMvc2VsZWN0L2luZGV4LmpzXG5cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnNyY19zZWxlY3QuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudChzcmNfc2VsZWN0Lm5hbWUsIHNyY19zZWxlY3QpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgcGFja2FnZXNfc2VsZWN0ID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoc3JjX3NlbGVjdCk7XG5cbi8qKiovIH0pXG5cbi8qKioqKiovIH0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/select.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/tag.js":
/*!********************************************!*\
!*** ./node_modules/element-ui/lib/tag.js ***!
\********************************************/
/***/ ((module) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 132);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3673__) {\n\n\"use strict\";\n/* harmony export (binding) */ __nested_webpack_require_3673__.d(__nested_webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 132:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_6577__) {\n\n\"use strict\";\n__nested_webpack_require_6577__.r(__nested_webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/tag/src/tag.vue?vue&type=script&lang=js&\n\n/* harmony default export */ var tagvue_type_script_lang_js_ = ({\n name: 'ElTag',\n props: {\n text: String,\n closable: Boolean,\n type: String,\n hit: Boolean,\n disableTransitions: Boolean,\n color: String,\n size: String,\n effect: {\n type: String,\n default: 'light',\n validator: function validator(val) {\n return ['dark', 'light', 'plain'].indexOf(val) !== -1;\n }\n }\n },\n methods: {\n handleClose: function handleClose(event) {\n event.stopPropagation();\n this.$emit('close', event);\n },\n handleClick: function handleClick(event) {\n this.$emit('click', event);\n }\n },\n computed: {\n tagSize: function tagSize() {\n return this.size || (this.$ELEMENT || {}).size;\n }\n },\n render: function render(h) {\n var type = this.type,\n tagSize = this.tagSize,\n hit = this.hit,\n effect = this.effect;\n\n var classes = ['el-tag', type ? 'el-tag--' + type : '', tagSize ? 'el-tag--' + tagSize : '', effect ? 'el-tag--' + effect : '', hit && 'is-hit'];\n var tagEl = h(\n 'span',\n {\n 'class': classes,\n style: { backgroundColor: this.color },\n on: {\n 'click': this.handleClick\n }\n },\n [this.$slots.default, this.closable && h('i', { 'class': 'el-tag__close el-icon-close', on: {\n 'click': this.handleClose\n }\n })]\n );\n\n return this.disableTransitions ? tagEl : h(\n 'transition',\n {\n attrs: { name: 'el-zoom-in-center' }\n },\n [tagEl]\n );\n }\n});\n// CONCATENATED MODULE: ./packages/tag/src/tag.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_tagvue_type_script_lang_js_ = (tagvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __nested_webpack_require_6577__(0);\n\n// CONCATENATED MODULE: ./packages/tag/src/tag.vue\nvar render, staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_tagvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/tag/src/tag.vue\"\n/* harmony default export */ var tag = (component.exports);\n// CONCATENATED MODULE: ./packages/tag/index.js\n\n\n/* istanbul ignore next */\ntag.install = function (Vue) {\n Vue.component(tag.name, tag);\n};\n\n/* harmony default export */ var packages_tag = __nested_webpack_exports__[\"default\"] = (tag);\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLCtCQUFtQjs7QUFFN0M7QUFDQTs7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBSyxFQUFFLFlBQVk7QUFDdkI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnREFBZ0QsMEJBQW1COztBQUVuRSxPQUFPOztBQUVQLFVBQVUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdGFnLmpzP2I2OTgiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9kaXN0L1wiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxMzIpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoe1xuXG4vKioqLyAwOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gbm9ybWFsaXplQ29tcG9uZW50OyB9KTtcbi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KSB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIDEzMjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWI/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3BhY2thZ2VzL3RhZy9zcmMvdGFnLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdGFndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHtcbiAgbmFtZTogJ0VsVGFnJyxcbiAgcHJvcHM6IHtcbiAgICB0ZXh0OiBTdHJpbmcsXG4gICAgY2xvc2FibGU6IEJvb2xlYW4sXG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGhpdDogQm9vbGVhbixcbiAgICBkaXNhYmxlVHJhbnNpdGlvbnM6IEJvb2xlYW4sXG4gICAgY29sb3I6IFN0cmluZyxcbiAgICBzaXplOiBTdHJpbmcsXG4gICAgZWZmZWN0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnbGlnaHQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsKSB7XG4gICAgICAgIHJldHVybiBbJ2RhcmsnLCAnbGlnaHQnLCAncGxhaW4nXS5pbmRleE9mKHZhbCkgIT09IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUNsb3NlOiBmdW5jdGlvbiBoYW5kbGVDbG9zZShldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLiRlbWl0KCdjbG9zZScsIGV2ZW50KTtcbiAgICB9LFxuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgdGhpcy4kZW1pdCgnY2xpY2snLCBldmVudCk7XG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHRhZ1NpemU6IGZ1bmN0aW9uIHRhZ1NpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaXplIHx8ICh0aGlzLiRFTEVNRU5UIHx8IHt9KS5zaXplO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciB0eXBlID0gdGhpcy50eXBlLFxuICAgICAgICB0YWdTaXplID0gdGhpcy50YWdTaXplLFxuICAgICAgICBoaXQgPSB0aGlzLmhpdCxcbiAgICAgICAgZWZmZWN0ID0gdGhpcy5lZmZlY3Q7XG5cbiAgICB2YXIgY2xhc3NlcyA9IFsnZWwtdGFnJywgdHlwZSA/ICdlbC10YWctLScgKyB0eXBlIDogJycsIHRhZ1NpemUgPyAnZWwtdGFnLS0nICsgdGFnU2l6ZSA6ICcnLCBlZmZlY3QgPyAnZWwtdGFnLS0nICsgZWZmZWN0IDogJycsIGhpdCAmJiAnaXMtaGl0J107XG4gICAgdmFyIHRhZ0VsID0gaChcbiAgICAgICdzcGFuJyxcbiAgICAgIHtcbiAgICAgICAgJ2NsYXNzJzogY2xhc3NlcyxcbiAgICAgICAgc3R5bGU6IHsgYmFja2dyb3VuZENvbG9yOiB0aGlzLmNvbG9yIH0sXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgJ2NsaWNrJzogdGhpcy5oYW5kbGVDbGlja1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW3RoaXMuJHNsb3RzLmRlZmF1bHQsIHRoaXMuY2xvc2FibGUgJiYgaCgnaScsIHsgJ2NsYXNzJzogJ2VsLXRhZ19fY2xvc2UgZWwtaWNvbi1jbG9zZScsIG9uOiB7XG4gICAgICAgICAgJ2NsaWNrJzogdGhpcy5oYW5kbGVDbG9zZVxuICAgICAgICB9XG4gICAgICB9KV1cbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZVRyYW5zaXRpb25zID8gdGFnRWwgOiBoKFxuICAgICAgJ3RyYW5zaXRpb24nLFxuICAgICAge1xuICAgICAgICBhdHRyczogeyBuYW1lOiAnZWwtem9vbS1pbi1jZW50ZXInIH1cbiAgICAgIH0sXG4gICAgICBbdGFnRWxdXG4gICAgKTtcbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhZy9zcmMvdGFnLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcbiAvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzcmNfdGFndnVlX3R5cGVfc2NyaXB0X2xhbmdfanNfID0gKHRhZ3Z1ZV90eXBlX3NjcmlwdF9sYW5nX2pzXyk7IFxuLy8gRVhURVJOQUwgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcbnZhciBjb21wb25lbnROb3JtYWxpemVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9wYWNrYWdlcy90YWcvc3JjL3RhZy52dWVcbnZhciByZW5kZXIsIHN0YXRpY1JlbmRlckZuc1xuXG5cblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5cbnZhciBjb21wb25lbnQgPSBPYmplY3QoY29tcG9uZW50Tm9ybWFsaXplcltcImFcIiAvKiBkZWZhdWx0ICovXSkoXG4gIHNyY190YWd2dWVfdHlwZV9zY3JpcHRfbGFuZ19qc18sXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKGZhbHNlKSB7IHZhciBhcGk7IH1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFja2FnZXMvdGFnL3NyYy90YWcudnVlXCJcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHRhZyA9IChjb21wb25lbnQuZXhwb3J0cyk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3RhZy9pbmRleC5qc1xuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG50YWcuaW5zdGFsbCA9IGZ1bmN0aW9uIChWdWUpIHtcbiAgVnVlLmNvbXBvbmVudCh0YWcubmFtZSwgdGFnKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHBhY2thZ2VzX3RhZyA9IF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKHRhZyk7XG5cbi8qKiovIH0pXG5cbi8qKioqKiovIH0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/tag.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/tooltip.js":
/*!************************************************!*\
!*** ./node_modules/element-ui/lib/tooltip.js ***!
\************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_187__(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, __nested_webpack_require_187__);\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__nested_webpack_require_187__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_187__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_187__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __nested_webpack_require_187__(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__nested_webpack_require_187__.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) __nested_webpack_require_187__.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__nested_webpack_require_187__.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__nested_webpack_require_187__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_187__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_187__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_187__(__nested_webpack_require_187__.s = 138);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 138:\n/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_3675__) {\n\n\"use strict\";\n__nested_webpack_require_3675__.r(__nested_webpack_exports__);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/vue-popper\"\nvar vue_popper_ = __nested_webpack_require_3675__(5);\nvar vue_popper_default = /*#__PURE__*/__nested_webpack_require_3675__.n(vue_popper_);\n\n// EXTERNAL MODULE: external \"throttle-debounce/debounce\"\nvar debounce_ = __nested_webpack_require_3675__(19);\nvar debounce_default = /*#__PURE__*/__nested_webpack_require_3675__.n(debounce_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/dom\"\nvar dom_ = __nested_webpack_require_3675__(2);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __nested_webpack_require_3675__(3);\n\n// EXTERNAL MODULE: external \"vue\"\nvar external_vue_ = __nested_webpack_require_3675__(7);\nvar external_vue_default = /*#__PURE__*/__nested_webpack_require_3675__.n(external_vue_);\n\n// CONCATENATED MODULE: ./packages/tooltip/src/main.js\n\n\n\n\n\n\n/* harmony default export */ var main = ({\n name: 'ElTooltip',\n\n mixins: [vue_popper_default.a],\n\n props: {\n openDelay: {\n type: Number,\n default: 0\n },\n disabled: Boolean,\n manual: Boolean,\n effect: {\n type: String,\n default: 'dark'\n },\n arrowOffset: {\n type: Number,\n default: 0\n },\n popperClass: String,\n content: String,\n visibleArrow: {\n default: true\n },\n transition: {\n type: String,\n default: 'el-fade-in-linear'\n },\n popperOptions: {\n default: function _default() {\n return {\n boundariesPadding: 10,\n gpuAcceleration: false\n };\n }\n },\n enterable: {\n type: Boolean,\n default: true\n },\n hideAfter: {\n type: Number,\n default: 0\n },\n tabindex: {\n type: Number,\n default: 0\n }\n },\n\n data: function data() {\n return {\n tooltipId: 'el-tooltip-' + Object(util_[\"generateId\"])(),\n timeoutPending: null,\n focusing: false\n };\n },\n beforeCreate: function beforeCreate() {\n var _this = this;\n\n if (this.$isServer) return;\n\n this.popperVM = new external_vue_default.a({\n data: { node: '' },\n render: function render(h) {\n return this.node;\n }\n }).$mount();\n\n this.debounceClose = debounce_default()(200, function () {\n return _this.handleClosePopper();\n });\n },\n render: function render(h) {\n var _this2 = this;\n\n if (this.popperVM) {\n this.popperVM.node = h(\n 'transition',\n {\n attrs: {\n name: this.transition\n },\n on: {\n 'afterLeave': this.doDestroy\n }\n },\n [h(\n 'div',\n {\n on: {\n 'mouseleave': function mouseleave() {\n _this2.setExpectedState(false);_this2.debounceClose();\n },\n 'mouseenter': function mouseenter() {\n _this2.setExpectedState(true);\n }\n },\n\n ref: 'popper',\n attrs: { role: 'tooltip',\n id: this.tooltipId,\n 'aria-hidden': this.disabled || !this.showPopper ? 'true' : 'false'\n },\n directives: [{\n name: 'show',\n value: !this.disabled && this.showPopper\n }],\n\n 'class': ['el-tooltip__popper', 'is-' + this.effect, this.popperClass] },\n [this.$slots.content || this.content]\n )]\n );\n }\n\n var firstElement = this.getFirstElement();\n if (!firstElement) return null;\n\n var data = firstElement.data = firstElement.data || {};\n data.staticClass = this.addTooltipClass(data.staticClass);\n\n return firstElement;\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.referenceElm = this.$el;\n if (this.$el.nodeType === 1) {\n this.$el.setAttribute('aria-describedby', this.tooltipId);\n this.$el.setAttribute('tabindex', this.tabindex);\n Object(dom_[\"on\"])(this.referenceElm, 'mouseenter', this.show);\n Object(dom_[\"on\"])(this.referenceElm, 'mouseleave', this.hide);\n Object(dom_[\"on\"])(this.referenceElm, 'focus', function () {\n if (!_this3.$slots.default || !_this3.$slots.default.length) {\n _this3.handleFocus();\n return;\n }\n var instance = _this3.$slots.default[0].componentInstance;\n if (instance && instance.focus) {\n instance.focus();\n } else {\n _this3.handleFocus();\n }\n });\n Object(dom_[\"on\"])(this.referenceElm, 'blur', this.handleBlur);\n Object(dom_[\"on\"])(this.referenceElm, 'click', this.removeFocusing);\n }\n // fix issue https://github.com/ElemeFE/element/issues/14424\n if (this.value && this.popperVM) {\n this.popperVM.$nextTick(function () {\n if (_this3.value) {\n _this3.updatePopper();\n }\n });\n }\n },\n\n watch: {\n focusing: function focusing(val) {\n if (val) {\n Object(dom_[\"addClass\"])(this.referenceElm, 'focusing');\n } else {\n Object(dom_[\"removeClass\"])(this.referenceElm, 'focusing');\n }\n }\n },\n methods: {\n show: function show() {\n this.setExpectedState(true);\n this.handleShowPopper();\n },\n hide: function hide() {\n this.setExpectedState(false);\n this.debounceClose();\n },\n handleFocus: function handleFocus() {\n this.focusing = true;\n this.show();\n },\n handleBlur: function handleBlur() {\n this.focusing = false;\n this.hide();\n },\n removeFocusing: function removeFocusing() {\n this.focusing = false;\n },\n addTooltipClass: function addTooltipClass(prev) {\n if (!prev) {\n return 'el-tooltip';\n } else {\n return 'el-tooltip ' + prev.replace('el-tooltip', '');\n }\n },\n handleShowPopper: function handleShowPopper() {\n var _this4 = this;\n\n if (!this.expectedState || this.manual) return;\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this4.showPopper = true;\n }, this.openDelay);\n\n if (this.hideAfter > 0) {\n this.timeoutPending = setTimeout(function () {\n _this4.showPopper = false;\n }, this.hideAfter);\n }\n },\n handleClosePopper: function handleClosePopper() {\n if (this.enterable && this.expectedState || this.manual) return;\n clearTimeout(this.timeout);\n\n if (this.timeoutPending) {\n clearTimeout(this.timeoutPending);\n }\n this.showPopper = false;\n\n if (this.disabled) {\n this.doDestroy();\n }\n },\n setExpectedState: function setExpectedState(expectedState) {\n if (expectedState === false) {\n clearTimeout(this.timeoutPending);\n }\n this.expectedState = expectedState;\n },\n getFirstElement: function getFirstElement() {\n var slots = this.$slots.default;\n if (!Array.isArray(slots)) return null;\n var element = null;\n for (var index = 0; index < slots.length; index++) {\n if (slots[index] && slots[index].tag) {\n element = slots[index];\n break;\n };\n }\n return element;\n }\n },\n\n beforeDestroy: function beforeDestroy() {\n this.popperVM && this.popperVM.$destroy();\n },\n destroyed: function destroyed() {\n var reference = this.referenceElm;\n if (reference.nodeType === 1) {\n Object(dom_[\"off\"])(reference, 'mouseenter', this.show);\n Object(dom_[\"off\"])(reference, 'mouseleave', this.hide);\n Object(dom_[\"off\"])(reference, 'focus', this.handleFocus);\n Object(dom_[\"off\"])(reference, 'blur', this.handleBlur);\n Object(dom_[\"off\"])(reference, 'click', this.removeFocusing);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/tooltip/index.js\n\n\n/* istanbul ignore next */\nmain.install = function (Vue) {\n Vue.component(main.name, main);\n};\n\n/* harmony default export */ var tooltip = __nested_webpack_exports__[\"default\"] = (main);\n\n/***/ }),\n\n/***/ 19:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! throttle-debounce/debounce */ \"./node_modules/throttle-debounce/debounce.js\");\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/dom */ \"./node_modules/element-ui/lib/utils/dom.js\");\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! element-ui/lib/utils/vue-popper */ \"./node_modules/element-ui/lib/utils/vue-popper.js\");\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\n/***/ })\n\n/******/ });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdG9vbHRpcC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw4QkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEUsOEJBQW1CO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QixlQUFlLDhCQUFtQjtBQUNsQyxtREFBbUQsK0JBQStCO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQSxpRUFBaUUsaUJBQWlCO0FBQ2xGO0FBQ0EsMERBQTBELGFBQWE7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QixnQ0FBZ0MsOEJBQW1CO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFdBQVcsOEJBQW1CO0FBQzlCLGtEQUFrRCxnQ0FBZ0M7QUFDbEYsMEVBQTBFLDhCQUFtQiw0QkFBNEIsb0JBQW9CO0FBQzdJO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQSxvQ0FBb0MsNEJBQTRCO0FBQ2hFLDBDQUEwQztBQUMxQyxXQUFXLDhCQUFtQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CLGtDQUFrQztBQUMvRDtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDhCQUFtQixDQUFDLDhCQUFtQjtBQUN4RCxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QiwwQkFBbUIsRUFBRSwrQkFBbUI7O0FB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QUFFUDtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLDRFQUEwQjs7QUFFbkQsT0FBTzs7QUFFUDtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLDhFQUEyQjs7QUFFcEQsT0FBTzs7QUFFUDtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLDBGQUFpQzs7QUFFMUQsT0FBTzs7QUFFUDtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLCtDQUFLOztBQUU5QixPQUFPOztBQUVQLFVBQVUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdG9vbHRpcC5qcz8xOTAzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID1cbi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vKioqKioqLyBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4vKioqKioqLyBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuLyoqKioqKi8gXHRcdHJldHVybiBucztcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMTM4KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKHtcblxuLyoqKi8gMTM4OlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3Z1ZS1wb3BwZXJcIlxudmFyIHZ1ZV9wb3BwZXJfID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbnZhciB2dWVfcG9wcGVyX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHZ1ZV9wb3BwZXJfKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcInRocm90dGxlLWRlYm91bmNlL2RlYm91bmNlXCJcbnZhciBkZWJvdW5jZV8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTtcbnZhciBkZWJvdW5jZV9kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihkZWJvdW5jZV8pO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIFwiZWxlbWVudC11aS9saWIvdXRpbHMvZG9tXCJcbnZhciBkb21fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcImVsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWxcIlxudmFyIHV0aWxfID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCBcInZ1ZVwiXG52YXIgZXh0ZXJuYWxfdnVlXyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG52YXIgZXh0ZXJuYWxfdnVlX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGV4dGVybmFsX3Z1ZV8pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Rvb2x0aXAvc3JjL21haW4uanNcblxuXG5cblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIG1haW4gPSAoe1xuICBuYW1lOiAnRWxUb29sdGlwJyxcblxuICBtaXhpbnM6IFt2dWVfcG9wcGVyX2RlZmF1bHQuYV0sXG5cbiAgcHJvcHM6IHtcbiAgICBvcGVuRGVsYXk6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgIG1hbnVhbDogQm9vbGVhbixcbiAgICBlZmZlY3Q6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdkYXJrJ1xuICAgIH0sXG4gICAgYXJyb3dPZmZzZXQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIHBvcHBlckNsYXNzOiBTdHJpbmcsXG4gICAgY29udGVudDogU3RyaW5nLFxuICAgIHZpc2libGVBcnJvdzoge1xuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2VsLWZhZGUtaW4tbGluZWFyJ1xuICAgIH0sXG4gICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYm91bmRhcmllc1BhZGRpbmc6IDEwLFxuICAgICAgICAgIGdwdUFjY2VsZXJhdGlvbjogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVudGVyYWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGhpZGVBZnRlcjoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgdGFiaW5kZXg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9XG4gIH0sXG5cbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9vbHRpcElkOiAnZWwtdG9vbHRpcC0nICsgT2JqZWN0KHV0aWxfW1wiZ2VuZXJhdGVJZFwiXSkoKSxcbiAgICAgIHRpbWVvdXRQZW5kaW5nOiBudWxsLFxuICAgICAgZm9jdXNpbmc6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgYmVmb3JlQ3JlYXRlOiBmdW5jdGlvbiBiZWZvcmVDcmVhdGUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuXG4gICAgdGhpcy5wb3BwZXJWTSA9IG5ldyBleHRlcm5hbF92dWVfZGVmYXVsdC5hKHtcbiAgICAgIGRhdGE6IHsgbm9kZTogJycgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgICAgIH1cbiAgICB9KS4kbW91bnQoKTtcblxuICAgIHRoaXMuZGVib3VuY2VDbG9zZSA9IGRlYm91bmNlX2RlZmF1bHQoKSgyMDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVDbG9zZVBvcHBlcigpO1xuICAgIH0pO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICBpZiAodGhpcy5wb3BwZXJWTSkge1xuICAgICAgdGhpcy5wb3BwZXJWTS5ub2RlID0gaChcbiAgICAgICAgJ3RyYW5zaXRpb24nLFxuICAgICAgICB7XG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMudHJhbnNpdGlvblxuICAgICAgICAgIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgICdhZnRlckxlYXZlJzogdGhpcy5kb0Rlc3Ryb3lcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtoKFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICdtb3VzZWxlYXZlJzogZnVuY3Rpb24gbW91c2VsZWF2ZSgpIHtcbiAgICAgICAgICAgICAgICBfdGhpczIuc2V0RXhwZWN0ZWRTdGF0ZShmYWxzZSk7X3RoaXMyLmRlYm91bmNlQ2xvc2UoKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ21vdXNlZW50ZXInOiBmdW5jdGlvbiBtb3VzZWVudGVyKCkge1xuICAgICAgICAgICAgICAgIF90aGlzMi5zZXRFeHBlY3RlZFN0YXRlKHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZWY6ICdwb3BwZXInLFxuICAgICAgICAgICAgYXR0cnM6IHsgcm9sZTogJ3Rvb2x0aXAnLFxuICAgICAgICAgICAgICBpZDogdGhpcy50b29sdGlwSWQsXG4gICAgICAgICAgICAgICdhcmlhLWhpZGRlbic6IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuc2hvd1BvcHBlciA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG4gICAgICAgICAgICAgIHZhbHVlOiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLnNob3dQb3BwZXJcbiAgICAgICAgICAgIH1dLFxuXG4gICAgICAgICAgICAnY2xhc3MnOiBbJ2VsLXRvb2x0aXBfX3BvcHBlcicsICdpcy0nICsgdGhpcy5lZmZlY3QsIHRoaXMucG9wcGVyQ2xhc3NdIH0sXG4gICAgICAgICAgW3RoaXMuJHNsb3RzLmNvbnRlbnQgfHwgdGhpcy5jb250ZW50XVxuICAgICAgICApXVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgZmlyc3RFbGVtZW50ID0gdGhpcy5nZXRGaXJzdEVsZW1lbnQoKTtcbiAgICBpZiAoIWZpcnN0RWxlbWVudCkgcmV0dXJuIG51bGw7XG5cbiAgICB2YXIgZGF0YSA9IGZpcnN0RWxlbWVudC5kYXRhID0gZmlyc3RFbGVtZW50LmRhdGEgfHwge307XG4gICAgZGF0YS5zdGF0aWNDbGFzcyA9IHRoaXMuYWRkVG9vbHRpcENsYXNzKGRhdGEuc3RhdGljQ2xhc3MpO1xuXG4gICAgcmV0dXJuIGZpcnN0RWxlbWVudDtcbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHRoaXMucmVmZXJlbmNlRWxtID0gdGhpcy4kZWw7XG4gICAgaWYgKHRoaXMuJGVsLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICB0aGlzLiRlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLnRvb2x0aXBJZCk7XG4gICAgICB0aGlzLiRlbC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgdGhpcy50YWJpbmRleCk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKSh0aGlzLnJlZmVyZW5jZUVsbSwgJ21vdXNlZW50ZXInLCB0aGlzLnNob3cpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkodGhpcy5yZWZlcmVuY2VFbG0sICdtb3VzZWxlYXZlJywgdGhpcy5oaWRlKTtcbiAgICAgIE9iamVjdChkb21fW1wib25cIl0pKHRoaXMucmVmZXJlbmNlRWxtLCAnZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghX3RoaXMzLiRzbG90cy5kZWZhdWx0IHx8ICFfdGhpczMuJHNsb3RzLmRlZmF1bHQubGVuZ3RoKSB7XG4gICAgICAgICAgX3RoaXMzLmhhbmRsZUZvY3VzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbnN0YW5jZSA9IF90aGlzMy4kc2xvdHMuZGVmYXVsdFswXS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgICAgaWYgKGluc3RhbmNlICYmIGluc3RhbmNlLmZvY3VzKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpczMuaGFuZGxlRm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9uXCJdKSh0aGlzLnJlZmVyZW5jZUVsbSwgJ2JsdXInLCB0aGlzLmhhbmRsZUJsdXIpO1xuICAgICAgT2JqZWN0KGRvbV9bXCJvblwiXSkodGhpcy5yZWZlcmVuY2VFbG0sICdjbGljaycsIHRoaXMucmVtb3ZlRm9jdXNpbmcpO1xuICAgIH1cbiAgICAvLyBmaXggaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL0VsZW1lRkUvZWxlbWVudC9pc3N1ZXMvMTQ0MjRcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnBvcHBlclZNKSB7XG4gICAgICB0aGlzLnBvcHBlclZNLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpczMudmFsdWUpIHtcbiAgICAgICAgICBfdGhpczMudXBkYXRlUG9wcGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGZvY3VzaW5nOiBmdW5jdGlvbiBmb2N1c2luZyh2YWwpIHtcbiAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJhZGRDbGFzc1wiXSkodGhpcy5yZWZlcmVuY2VFbG0sICdmb2N1c2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgT2JqZWN0KGRvbV9bXCJyZW1vdmVDbGFzc1wiXSkodGhpcy5yZWZlcmVuY2VFbG0sICdmb2N1c2luZycpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHNob3c6IGZ1bmN0aW9uIHNob3coKSB7XG4gICAgICB0aGlzLnNldEV4cGVjdGVkU3RhdGUodHJ1ZSk7XG4gICAgICB0aGlzLmhhbmRsZVNob3dQb3BwZXIoKTtcbiAgICB9LFxuICAgIGhpZGU6IGZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgICB0aGlzLnNldEV4cGVjdGVkU3RhdGUoZmFsc2UpO1xuICAgICAgdGhpcy5kZWJvdW5jZUNsb3NlKCk7XG4gICAgfSxcbiAgICBoYW5kbGVGb2N1czogZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICB0aGlzLmZvY3VzaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH0sXG4gICAgaGFuZGxlQmx1cjogZnVuY3Rpb24gaGFuZGxlQmx1cigpIHtcbiAgICAgIHRoaXMuZm9jdXNpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH0sXG4gICAgcmVtb3ZlRm9jdXNpbmc6IGZ1bmN0aW9uIHJlbW92ZUZvY3VzaW5nKCkge1xuICAgICAgdGhpcy5mb2N1c2luZyA9IGZhbHNlO1xuICAgIH0sXG4gICAgYWRkVG9vbHRpcENsYXNzOiBmdW5jdGlvbiBhZGRUb29sdGlwQ2xhc3MocHJldikge1xuICAgICAgaWYgKCFwcmV2KSB7XG4gICAgICAgIHJldHVybiAnZWwtdG9vbHRpcCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ2VsLXRvb2x0aXAgJyArIHByZXYucmVwbGFjZSgnZWwtdG9vbHRpcCcsICcnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVNob3dQb3BwZXI6IGZ1bmN0aW9uIGhhbmRsZVNob3dQb3BwZXIoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLmV4cGVjdGVkU3RhdGUgfHwgdGhpcy5tYW51YWwpIHJldHVybjtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzNC5zaG93UG9wcGVyID0gdHJ1ZTtcbiAgICAgIH0sIHRoaXMub3BlbkRlbGF5KTtcblxuICAgICAgaWYgKHRoaXMuaGlkZUFmdGVyID4gMCkge1xuICAgICAgICB0aGlzLnRpbWVvdXRQZW5kaW5nID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXM0LnNob3dQb3BwZXIgPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5oaWRlQWZ0ZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlQ2xvc2VQb3BwZXI6IGZ1bmN0aW9uIGhhbmRsZUNsb3NlUG9wcGVyKCkge1xuICAgICAgaWYgKHRoaXMuZW50ZXJhYmxlICYmIHRoaXMuZXhwZWN0ZWRTdGF0ZSB8fCB0aGlzLm1hbnVhbCkgcmV0dXJuO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG5cbiAgICAgIGlmICh0aGlzLnRpbWVvdXRQZW5kaW5nKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRQZW5kaW5nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2hvd1BvcHBlciA9IGZhbHNlO1xuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmRvRGVzdHJveSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0RXhwZWN0ZWRTdGF0ZTogZnVuY3Rpb24gc2V0RXhwZWN0ZWRTdGF0ZShleHBlY3RlZFN0YXRlKSB7XG4gICAgICBpZiAoZXhwZWN0ZWRTdGF0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFBlbmRpbmcpO1xuICAgICAgfVxuICAgICAgdGhpcy5leHBlY3RlZFN0YXRlID0gZXhwZWN0ZWRTdGF0ZTtcbiAgICB9LFxuICAgIGdldEZpcnN0RWxlbWVudDogZnVuY3Rpb24gZ2V0Rmlyc3RFbGVtZW50KCkge1xuICAgICAgdmFyIHNsb3RzID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShzbG90cykpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGVsZW1lbnQgPSBudWxsO1xuICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHNsb3RzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBpZiAoc2xvdHNbaW5kZXhdICYmIHNsb3RzW2luZGV4XS50YWcpIHtcbiAgICAgICAgICBlbGVtZW50ID0gc2xvdHNbaW5kZXhdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICB9LFxuXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgdGhpcy5wb3BwZXJWTSAmJiB0aGlzLnBvcHBlclZNLiRkZXN0cm95KCk7XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIHZhciByZWZlcmVuY2UgPSB0aGlzLnJlZmVyZW5jZUVsbTtcbiAgICBpZiAocmVmZXJlbmNlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnbW91c2VlbnRlcicsIHRoaXMuc2hvdyk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnbW91c2VsZWF2ZScsIHRoaXMuaGlkZSk7XG4gICAgICBPYmplY3QoZG9tX1tcIm9mZlwiXSkocmVmZXJlbmNlLCAnZm9jdXMnLCB0aGlzLmhhbmRsZUZvY3VzKTtcbiAgICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdibHVyJywgdGhpcy5oYW5kbGVCbHVyKTtcbiAgICAgIE9iamVjdChkb21fW1wib2ZmXCJdKShyZWZlcmVuY2UsICdjbGljaycsIHRoaXMucmVtb3ZlRm9jdXNpbmcpO1xuICAgIH1cbiAgfVxufSk7XG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3BhY2thZ2VzL3Rvb2x0aXAvaW5kZXguanNcblxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xubWFpbi5pbnN0YWxsID0gZnVuY3Rpb24gKFZ1ZSkge1xuICBWdWUuY29tcG9uZW50KG1haW4ubmFtZSwgbWFpbik7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciB0b29sdGlwID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAobWFpbik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAxOTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGhyb3R0bGUtZGVib3VuY2UvZGVib3VuY2VcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAyOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy9kb21cIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAzOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVtZW50LXVpL2xpYi91dGlscy91dGlsXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gNTpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlbWVudC11aS9saWIvdXRpbHMvdnVlLXBvcHBlclwiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIDc6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLyoqKi8gfSlcblxuLyoqKioqKi8gfSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/tooltip.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/transitions/collapse-transition.js":
/*!************************************************************************!*\
!*** ./node_modules/element-ui/lib/transitions/collapse-transition.js ***!
\************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _dom = __webpack_require__(/*! element-ui/lib/utils/dom */ \"./node_modules/element-ui/lib/utils/dom.js\");\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Transition = function () {\n function Transition() {\n _classCallCheck(this, Transition);\n }\n\n Transition.prototype.beforeEnter = function beforeEnter(el) {\n (0, _dom.addClass)(el, 'collapse-transition');\n if (!el.dataset) el.dataset = {};\n\n el.dataset.oldPaddingTop = el.style.paddingTop;\n el.dataset.oldPaddingBottom = el.style.paddingBottom;\n\n el.style.height = '0';\n el.style.paddingTop = 0;\n el.style.paddingBottom = 0;\n };\n\n Transition.prototype.enter = function enter(el) {\n el.dataset.oldOverflow = el.style.overflow;\n if (el.scrollHeight !== 0) {\n el.style.height = el.scrollHeight + 'px';\n el.style.paddingTop = el.dataset.oldPaddingTop;\n el.style.paddingBottom = el.dataset.oldPaddingBottom;\n } else {\n el.style.height = '';\n el.style.paddingTop = el.dataset.oldPaddingTop;\n el.style.paddingBottom = el.dataset.oldPaddingBottom;\n }\n\n el.style.overflow = 'hidden';\n };\n\n Transition.prototype.afterEnter = function afterEnter(el) {\n // for safari: remove class then reset height is necessary\n (0, _dom.removeClass)(el, 'collapse-transition');\n el.style.height = '';\n el.style.overflow = el.dataset.oldOverflow;\n };\n\n Transition.prototype.beforeLeave = function beforeLeave(el) {\n if (!el.dataset) el.dataset = {};\n el.dataset.oldPaddingTop = el.style.paddingTop;\n el.dataset.oldPaddingBottom = el.style.paddingBottom;\n el.dataset.oldOverflow = el.style.overflow;\n\n el.style.height = el.scrollHeight + 'px';\n el.style.overflow = 'hidden';\n };\n\n Transition.prototype.leave = function leave(el) {\n if (el.scrollHeight !== 0) {\n // for safari: add class after set height, or it will jump to zero height suddenly, weired\n (0, _dom.addClass)(el, 'collapse-transition');\n el.style.height = 0;\n el.style.paddingTop = 0;\n el.style.paddingBottom = 0;\n }\n };\n\n Transition.prototype.afterLeave = function afterLeave(el) {\n (0, _dom.removeClass)(el, 'collapse-transition');\n el.style.height = '';\n el.style.overflow = el.dataset.oldOverflow;\n el.style.paddingTop = el.dataset.oldPaddingTop;\n el.style.paddingBottom = el.dataset.oldPaddingBottom;\n };\n\n return Transition;\n}();\n\nexports[\"default\"] = {\n name: 'ElCollapseTransition',\n functional: true,\n render: function render(h, _ref) {\n var children = _ref.children;\n\n var data = {\n on: new Transition()\n };\n\n return h('transition', data, children);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdHJhbnNpdGlvbnMvY29sbGFwc2UtdHJhbnNpdGlvbi5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7O0FBRWxCLFdBQVcsbUJBQU8sQ0FBQyw0RUFBMEI7O0FBRTdDLGtEQUFrRCwwQ0FBMEM7O0FBRTVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVELGtCQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi90cmFuc2l0aW9ucy9jb2xsYXBzZS10cmFuc2l0aW9uLmpzPzg4MWYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2RvbSA9IHJlcXVpcmUoJ2VsZW1lbnQtdWkvbGliL3V0aWxzL2RvbScpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgVHJhbnNpdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVHJhbnNpdGlvbigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhbnNpdGlvbik7XG4gIH1cblxuICBUcmFuc2l0aW9uLnByb3RvdHlwZS5iZWZvcmVFbnRlciA9IGZ1bmN0aW9uIGJlZm9yZUVudGVyKGVsKSB7XG4gICAgKDAsIF9kb20uYWRkQ2xhc3MpKGVsLCAnY29sbGFwc2UtdHJhbnNpdGlvbicpO1xuICAgIGlmICghZWwuZGF0YXNldCkgZWwuZGF0YXNldCA9IHt9O1xuXG4gICAgZWwuZGF0YXNldC5vbGRQYWRkaW5nVG9wID0gZWwuc3R5bGUucGFkZGluZ1RvcDtcbiAgICBlbC5kYXRhc2V0Lm9sZFBhZGRpbmdCb3R0b20gPSBlbC5zdHlsZS5wYWRkaW5nQm90dG9tO1xuXG4gICAgZWwuc3R5bGUuaGVpZ2h0ID0gJzAnO1xuICAgIGVsLnN0eWxlLnBhZGRpbmdUb3AgPSAwO1xuICAgIGVsLnN0eWxlLnBhZGRpbmdCb3R0b20gPSAwO1xuICB9O1xuXG4gIFRyYW5zaXRpb24ucHJvdG90eXBlLmVudGVyID0gZnVuY3Rpb24gZW50ZXIoZWwpIHtcbiAgICBlbC5kYXRhc2V0Lm9sZE92ZXJmbG93ID0gZWwuc3R5bGUub3ZlcmZsb3c7XG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAhPT0gMCkge1xuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gZWwuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcbiAgICAgIGVsLnN0eWxlLnBhZGRpbmdUb3AgPSBlbC5kYXRhc2V0Lm9sZFBhZGRpbmdUb3A7XG4gICAgICBlbC5zdHlsZS5wYWRkaW5nQm90dG9tID0gZWwuZGF0YXNldC5vbGRQYWRkaW5nQm90dG9tO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAnJztcbiAgICAgIGVsLnN0eWxlLnBhZGRpbmdUb3AgPSBlbC5kYXRhc2V0Lm9sZFBhZGRpbmdUb3A7XG4gICAgICBlbC5zdHlsZS5wYWRkaW5nQm90dG9tID0gZWwuZGF0YXNldC5vbGRQYWRkaW5nQm90dG9tO1xuICAgIH1cblxuICAgIGVsLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gIH07XG5cbiAgVHJhbnNpdGlvbi5wcm90b3R5cGUuYWZ0ZXJFbnRlciA9IGZ1bmN0aW9uIGFmdGVyRW50ZXIoZWwpIHtcbiAgICAvLyBmb3Igc2FmYXJpOiByZW1vdmUgY2xhc3MgdGhlbiByZXNldCBoZWlnaHQgaXMgbmVjZXNzYXJ5XG4gICAgKDAsIF9kb20ucmVtb3ZlQ2xhc3MpKGVsLCAnY29sbGFwc2UtdHJhbnNpdGlvbicpO1xuICAgIGVsLnN0eWxlLmhlaWdodCA9ICcnO1xuICAgIGVsLnN0eWxlLm92ZXJmbG93ID0gZWwuZGF0YXNldC5vbGRPdmVyZmxvdztcbiAgfTtcblxuICBUcmFuc2l0aW9uLnByb3RvdHlwZS5iZWZvcmVMZWF2ZSA9IGZ1bmN0aW9uIGJlZm9yZUxlYXZlKGVsKSB7XG4gICAgaWYgKCFlbC5kYXRhc2V0KSBlbC5kYXRhc2V0ID0ge307XG4gICAgZWwuZGF0YXNldC5vbGRQYWRkaW5nVG9wID0gZWwuc3R5bGUucGFkZGluZ1RvcDtcbiAgICBlbC5kYXRhc2V0Lm9sZFBhZGRpbmdCb3R0b20gPSBlbC5zdHlsZS5wYWRkaW5nQm90dG9tO1xuICAgIGVsLmRhdGFzZXQub2xkT3ZlcmZsb3cgPSBlbC5zdHlsZS5vdmVyZmxvdztcblxuICAgIGVsLnN0eWxlLmhlaWdodCA9IGVsLnNjcm9sbEhlaWdodCArICdweCc7XG4gICAgZWwuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgfTtcblxuICBUcmFuc2l0aW9uLnByb3RvdHlwZS5sZWF2ZSA9IGZ1bmN0aW9uIGxlYXZlKGVsKSB7XG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAhPT0gMCkge1xuICAgICAgLy8gZm9yIHNhZmFyaTogYWRkIGNsYXNzIGFmdGVyIHNldCBoZWlnaHQsIG9yIGl0IHdpbGwganVtcCB0byB6ZXJvIGhlaWdodCBzdWRkZW5seSwgd2VpcmVkXG4gICAgICAoMCwgX2RvbS5hZGRDbGFzcykoZWwsICdjb2xsYXBzZS10cmFuc2l0aW9uJyk7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAwO1xuICAgICAgZWwuc3R5bGUucGFkZGluZ1RvcCA9IDA7XG4gICAgICBlbC5zdHlsZS5wYWRkaW5nQm90dG9tID0gMDtcbiAgICB9XG4gIH07XG5cbiAgVHJhbnNpdGlvbi5wcm90b3R5cGUuYWZ0ZXJMZWF2ZSA9IGZ1bmN0aW9uIGFmdGVyTGVhdmUoZWwpIHtcbiAgICAoMCwgX2RvbS5yZW1vdmVDbGFzcykoZWwsICdjb2xsYXBzZS10cmFuc2l0aW9uJyk7XG4gICAgZWwuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgZWwuc3R5bGUub3ZlcmZsb3cgPSBlbC5kYXRhc2V0Lm9sZE92ZXJmbG93O1xuICAgIGVsLnN0eWxlLnBhZGRpbmdUb3AgPSBlbC5kYXRhc2V0Lm9sZFBhZGRpbmdUb3A7XG4gICAgZWwuc3R5bGUucGFkZGluZ0JvdHRvbSA9IGVsLmRhdGFzZXQub2xkUGFkZGluZ0JvdHRvbTtcbiAgfTtcblxuICByZXR1cm4gVHJhbnNpdGlvbjtcbn0oKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICBuYW1lOiAnRWxDb2xsYXBzZVRyYW5zaXRpb24nLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcblxuICAgIHZhciBkYXRhID0ge1xuICAgICAgb246IG5ldyBUcmFuc2l0aW9uKClcbiAgICB9O1xuXG4gICAgcmV0dXJuIGgoJ3RyYW5zaXRpb24nLCBkYXRhLCBjaGlsZHJlbik7XG4gIH1cbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/transitions/collapse-transition.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/after-leave.js":
/*!**********************************************************!*\
!*** ./node_modules/element-ui/lib/utils/after-leave.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nexports[\"default\"] = function (instance, callback) {\n var speed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var once = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (!instance || !callback) throw new Error('instance & callback is required');\n var called = false;\n var afterLeaveCallback = function afterLeaveCallback() {\n if (called) return;\n called = true;\n if (callback) {\n callback.apply(null, arguments);\n }\n };\n if (once) {\n instance.$once('after-leave', afterLeaveCallback);\n } else {\n instance.$on('after-leave', afterLeaveCallback);\n }\n setTimeout(function () {\n afterLeaveCallback();\n }, speed + 100);\n};\n\n; /**\n * Bind after-leave event for vue instance. Make sure after-leave is called in any browsers.\n *\n * @param {Vue} instance Vue instance.\n * @param {Function} callback callback of after-leave event\n * @param {Number} speed the speed of transition, default value is 300ms\n * @param {Boolean} once weather bind after-leave once. default value is false.\n *///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvYWZ0ZXItbGVhdmUuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCOztBQUVsQixrQkFBZTtBQUNmO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLFVBQVU7QUFDdkIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsU0FBUztBQUN0QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi91dGlscy9hZnRlci1sZWF2ZS5qcz81NGExIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBjYWxsYmFjaykge1xuICB2YXIgc3BlZWQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDMwMDtcbiAgdmFyIG9uY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IGZhbHNlO1xuXG4gIGlmICghaW5zdGFuY2UgfHwgIWNhbGxiYWNrKSB0aHJvdyBuZXcgRXJyb3IoJ2luc3RhbmNlICYgY2FsbGJhY2sgaXMgcmVxdWlyZWQnKTtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICB2YXIgYWZ0ZXJMZWF2ZUNhbGxiYWNrID0gZnVuY3Rpb24gYWZ0ZXJMZWF2ZUNhbGxiYWNrKCkge1xuICAgIGlmIChjYWxsZWQpIHJldHVybjtcbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9XG4gIH07XG4gIGlmIChvbmNlKSB7XG4gICAgaW5zdGFuY2UuJG9uY2UoJ2FmdGVyLWxlYXZlJywgYWZ0ZXJMZWF2ZUNhbGxiYWNrKTtcbiAgfSBlbHNlIHtcbiAgICBpbnN0YW5jZS4kb24oJ2FmdGVyLWxlYXZlJywgYWZ0ZXJMZWF2ZUNhbGxiYWNrKTtcbiAgfVxuICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBhZnRlckxlYXZlQ2FsbGJhY2soKTtcbiAgfSwgc3BlZWQgKyAxMDApO1xufTtcblxuOyAvKipcbiAgICogQmluZCBhZnRlci1sZWF2ZSBldmVudCBmb3IgdnVlIGluc3RhbmNlLiBNYWtlIHN1cmUgYWZ0ZXItbGVhdmUgaXMgY2FsbGVkIGluIGFueSBicm93c2Vycy5cbiAgICpcbiAgICogQHBhcmFtIHtWdWV9IGluc3RhbmNlIFZ1ZSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgY2FsbGJhY2sgb2YgYWZ0ZXItbGVhdmUgZXZlbnRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHNwZWVkIHRoZSBzcGVlZCBvZiB0cmFuc2l0aW9uLCBkZWZhdWx0IHZhbHVlIGlzIDMwMG1zXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gb25jZSB3ZWF0aGVyIGJpbmQgYWZ0ZXItbGVhdmUgb25jZS4gZGVmYXVsdCB2YWx1ZSBpcyBmYWxzZS5cbiAgICovIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/after-leave.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/aria-dialog.js":
/*!**********************************************************!*\
!*** ./node_modules/element-ui/lib/utils/aria-dialog.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _ariaUtils = __webpack_require__(/*! ./aria-utils */ \"./node_modules/element-ui/lib/utils/aria-utils.js\");\n\nvar _ariaUtils2 = _interopRequireDefault(_ariaUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @constructor\n * @desc Dialog object providing modal focus management.\n *\n * Assumptions: The element serving as the dialog container is present in the\n * DOM and hidden. The dialog container has role='dialog'.\n *\n * @param dialogId\n * The ID of the element serving as the dialog container.\n * @param focusAfterClosed\n * Either the DOM node or the ID of the DOM node to focus when the\n * dialog closes.\n * @param focusFirst\n * Optional parameter containing either the DOM node or the ID of the\n * DOM node to focus when the dialog opens. If not specified, the\n * first focusable element in the dialog will receive focus.\n */\nvar aria = aria || {};\nvar tabEvent;\n\naria.Dialog = function (dialog, focusAfterClosed, focusFirst) {\n var _this = this;\n\n this.dialogNode = dialog;\n if (this.dialogNode === null || this.dialogNode.getAttribute('role') !== 'dialog') {\n throw new Error('Dialog() requires a DOM element with ARIA role of dialog.');\n }\n\n if (typeof focusAfterClosed === 'string') {\n this.focusAfterClosed = document.getElementById(focusAfterClosed);\n } else if ((typeof focusAfterClosed === 'undefined' ? 'undefined' : _typeof(focusAfterClosed)) === 'object') {\n this.focusAfterClosed = focusAfterClosed;\n } else {\n this.focusAfterClosed = null;\n }\n\n if (typeof focusFirst === 'string') {\n this.focusFirst = document.getElementById(focusFirst);\n } else if ((typeof focusFirst === 'undefined' ? 'undefined' : _typeof(focusFirst)) === 'object') {\n this.focusFirst = focusFirst;\n } else {\n this.focusFirst = null;\n }\n\n if (this.focusFirst) {\n this.focusFirst.focus();\n } else {\n _ariaUtils2.default.focusFirstDescendant(this.dialogNode);\n }\n\n this.lastFocus = document.activeElement;\n tabEvent = function tabEvent(e) {\n _this.trapFocus(e);\n };\n this.addListeners();\n};\n\naria.Dialog.prototype.addListeners = function () {\n document.addEventListener('focus', tabEvent, true);\n};\n\naria.Dialog.prototype.removeListeners = function () {\n document.removeEventListener('focus', tabEvent, true);\n};\n\naria.Dialog.prototype.closeDialog = function () {\n var _this2 = this;\n\n this.removeListeners();\n if (this.focusAfterClosed) {\n setTimeout(function () {\n _this2.focusAfterClosed.focus();\n });\n }\n};\n\naria.Dialog.prototype.trapFocus = function (event) {\n if (_ariaUtils2.default.IgnoreUtilFocusChanges) {\n return;\n }\n if (this.dialogNode.contains(event.target)) {\n this.lastFocus = event.target;\n } else {\n _ariaUtils2.default.focusFirstDescendant(this.dialogNode);\n if (this.lastFocus === document.activeElement) {\n _ariaUtils2.default.focusLastDescendant(this.dialogNode);\n }\n this.lastFocus = document.activeElement;\n }\n};\n\nexports[\"default\"] = aria.Dialog;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvYXJpYS1kaWFsb2cuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCOztBQUVsQixxR0FBcUcscUJBQXFCLG1CQUFtQjs7QUFFN0ksaUJBQWlCLG1CQUFPLENBQUMsdUVBQWM7O0FBRXZDOztBQUVBLHVDQUF1Qyx1Q0FBdUM7O0FBRTlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBZSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi91dGlscy9hcmlhLWRpYWxvZy5qcz9mNmM5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG52YXIgX2FyaWFVdGlscyA9IHJlcXVpcmUoJy4vYXJpYS11dGlscycpO1xuXG52YXIgX2FyaWFVdGlsczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hcmlhVXRpbHMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIEBjb25zdHJ1Y3RvclxuICogQGRlc2MgRGlhbG9nIG9iamVjdCBwcm92aWRpbmcgbW9kYWwgZm9jdXMgbWFuYWdlbWVudC5cbiAqXG4gKiBBc3N1bXB0aW9uczogVGhlIGVsZW1lbnQgc2VydmluZyBhcyB0aGUgZGlhbG9nIGNvbnRhaW5lciBpcyBwcmVzZW50IGluIHRoZVxuICogRE9NIGFuZCBoaWRkZW4uIFRoZSBkaWFsb2cgY29udGFpbmVyIGhhcyByb2xlPSdkaWFsb2cnLlxuICpcbiAqIEBwYXJhbSBkaWFsb2dJZFxuICogICAgICAgICAgVGhlIElEIG9mIHRoZSBlbGVtZW50IHNlcnZpbmcgYXMgdGhlIGRpYWxvZyBjb250YWluZXIuXG4gKiBAcGFyYW0gZm9jdXNBZnRlckNsb3NlZFxuICogICAgICAgICAgRWl0aGVyIHRoZSBET00gbm9kZSBvciB0aGUgSUQgb2YgdGhlIERPTSBub2RlIHRvIGZvY3VzIHdoZW4gdGhlXG4gKiAgICAgICAgICBkaWFsb2cgY2xvc2VzLlxuICogQHBhcmFtIGZvY3VzRmlyc3RcbiAqICAgICAgICAgIE9wdGlvbmFsIHBhcmFtZXRlciBjb250YWluaW5nIGVpdGhlciB0aGUgRE9NIG5vZGUgb3IgdGhlIElEIG9mIHRoZVxuICogICAgICAgICAgRE9NIG5vZGUgdG8gZm9jdXMgd2hlbiB0aGUgZGlhbG9nIG9wZW5zLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGVcbiAqICAgICAgICAgIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50IGluIHRoZSBkaWFsb2cgd2lsbCByZWNlaXZlIGZvY3VzLlxuICovXG52YXIgYXJpYSA9IGFyaWEgfHwge307XG52YXIgdGFiRXZlbnQ7XG5cbmFyaWEuRGlhbG9nID0gZnVuY3Rpb24gKGRpYWxvZywgZm9jdXNBZnRlckNsb3NlZCwgZm9jdXNGaXJzdCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMuZGlhbG9nTm9kZSA9IGRpYWxvZztcbiAgaWYgKHRoaXMuZGlhbG9nTm9kZSA9PT0gbnVsbCB8fCB0aGlzLmRpYWxvZ05vZGUuZ2V0QXR0cmlidXRlKCdyb2xlJykgIT09ICdkaWFsb2cnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2coKSByZXF1aXJlcyBhIERPTSBlbGVtZW50IHdpdGggQVJJQSByb2xlIG9mIGRpYWxvZy4nKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZm9jdXNBZnRlckNsb3NlZCA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLmZvY3VzQWZ0ZXJDbG9zZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmb2N1c0FmdGVyQ2xvc2VkKTtcbiAgfSBlbHNlIGlmICgodHlwZW9mIGZvY3VzQWZ0ZXJDbG9zZWQgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGZvY3VzQWZ0ZXJDbG9zZWQpKSA9PT0gJ29iamVjdCcpIHtcbiAgICB0aGlzLmZvY3VzQWZ0ZXJDbG9zZWQgPSBmb2N1c0FmdGVyQ2xvc2VkO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZm9jdXNBZnRlckNsb3NlZCA9IG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIGZvY3VzRmlyc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgdGhpcy5mb2N1c0ZpcnN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZm9jdXNGaXJzdCk7XG4gIH0gZWxzZSBpZiAoKHR5cGVvZiBmb2N1c0ZpcnN0ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihmb2N1c0ZpcnN0KSkgPT09ICdvYmplY3QnKSB7XG4gICAgdGhpcy5mb2N1c0ZpcnN0ID0gZm9jdXNGaXJzdDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmZvY3VzRmlyc3QgPSBudWxsO1xuICB9XG5cbiAgaWYgKHRoaXMuZm9jdXNGaXJzdCkge1xuICAgIHRoaXMuZm9jdXNGaXJzdC5mb2N1cygpO1xuICB9IGVsc2Uge1xuICAgIF9hcmlhVXRpbHMyLmRlZmF1bHQuZm9jdXNGaXJzdERlc2NlbmRhbnQodGhpcy5kaWFsb2dOb2RlKTtcbiAgfVxuXG4gIHRoaXMubGFzdEZvY3VzID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgdGFiRXZlbnQgPSBmdW5jdGlvbiB0YWJFdmVudChlKSB7XG4gICAgX3RoaXMudHJhcEZvY3VzKGUpO1xuICB9O1xuICB0aGlzLmFkZExpc3RlbmVycygpO1xufTtcblxuYXJpYS5EaWFsb2cucHJvdG90eXBlLmFkZExpc3RlbmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0YWJFdmVudCwgdHJ1ZSk7XG59O1xuXG5hcmlhLkRpYWxvZy5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXJzID0gZnVuY3Rpb24gKCkge1xuICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRhYkV2ZW50LCB0cnVlKTtcbn07XG5cbmFyaWEuRGlhbG9nLnByb3RvdHlwZS5jbG9zZURpYWxvZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcbiAgaWYgKHRoaXMuZm9jdXNBZnRlckNsb3NlZCkge1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLmZvY3VzQWZ0ZXJDbG9zZWQuZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxufTtcblxuYXJpYS5EaWFsb2cucHJvdG90eXBlLnRyYXBGb2N1cyA9IGZ1bmN0aW9uIChldmVudCkge1xuICBpZiAoX2FyaWFVdGlsczIuZGVmYXVsdC5JZ25vcmVVdGlsRm9jdXNDaGFuZ2VzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0aGlzLmRpYWxvZ05vZGUuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgIHRoaXMubGFzdEZvY3VzID0gZXZlbnQudGFyZ2V0O1xuICB9IGVsc2Uge1xuICAgIF9hcmlhVXRpbHMyLmRlZmF1bHQuZm9jdXNGaXJzdERlc2NlbmRhbnQodGhpcy5kaWFsb2dOb2RlKTtcbiAgICBpZiAodGhpcy5sYXN0Rm9jdXMgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIF9hcmlhVXRpbHMyLmRlZmF1bHQuZm9jdXNMYXN0RGVzY2VuZGFudCh0aGlzLmRpYWxvZ05vZGUpO1xuICAgIH1cbiAgICB0aGlzLmxhc3RGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gIH1cbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGFyaWEuRGlhbG9nOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/aria-dialog.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/aria-utils.js":
/*!*********************************************************!*\
!*** ./node_modules/element-ui/lib/utils/aria-utils.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("\n\nexports.__esModule = true;\nvar aria = aria || {};\n\naria.Utils = aria.Utils || {};\n\n/**\n * @desc Set focus on descendant nodes until the first focusable element is\n * found.\n * @param element\n * DOM node for which to find the first focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\naria.Utils.focusFirstDescendant = function (element) {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Find the last descendant node that is focusable.\n * @param element\n * DOM node for which to find the last focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\n\naria.Utils.focusLastDescendant = function (element) {\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Set Attempt to set focus on the current node.\n * @param element\n * The node to attempt to focus on.\n * @returns\n * true if element is focused.\n */\naria.Utils.attemptFocus = function (element) {\n if (!aria.Utils.isFocusable(element)) {\n return false;\n }\n aria.Utils.IgnoreUtilFocusChanges = true;\n try {\n element.focus();\n } catch (e) {}\n aria.Utils.IgnoreUtilFocusChanges = false;\n return document.activeElement === element;\n};\n\naria.Utils.isFocusable = function (element) {\n if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute('tabIndex') !== null) {\n return true;\n }\n\n if (element.disabled) {\n return false;\n }\n\n switch (element.nodeName) {\n case 'A':\n return !!element.href && element.rel !== 'ignore';\n case 'INPUT':\n return element.type !== 'hidden' && element.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n};\n\n/**\n * 触发一个事件\n * mouseenter, mouseleave, mouseover, keyup, change, click 等\n * @param {Element} elm\n * @param {String} name\n * @param {*} opts\n */\naria.Utils.triggerEvent = function (elm, name) {\n var eventName = void 0;\n\n if (/^mouse|click/.test(name)) {\n eventName = 'MouseEvents';\n } else if (/^key/.test(name)) {\n eventName = 'KeyboardEvent';\n } else {\n eventName = 'HTMLEvents';\n }\n var evt = document.createEvent(eventName);\n\n for (var _len = arguments.length, opts = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n opts[_key - 2] = arguments[_key];\n }\n\n evt.initEvent.apply(evt, [name].concat(opts));\n elm.dispatchEvent ? elm.dispatchEvent(evt) : elm.fireEvent('on' + name, evt);\n\n return elm;\n};\n\naria.Utils.keys = {\n tab: 9,\n enter: 13,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n esc: 27\n};\n\nexports[\"default\"] = aria.Utils;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvYXJpYS11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7QUFDbEI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLCtCQUErQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFNBQVM7QUFDckIsWUFBWSxRQUFRO0FBQ3BCLFlBQVksR0FBRztBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQSxxRkFBcUYsYUFBYTtBQUNsRztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBZSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi91dGlscy9hcmlhLXV0aWxzLmpzPzM1YzciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xudmFyIGFyaWEgPSBhcmlhIHx8IHt9O1xuXG5hcmlhLlV0aWxzID0gYXJpYS5VdGlscyB8fCB7fTtcblxuLyoqXG4gKiBAZGVzYyBTZXQgZm9jdXMgb24gZGVzY2VuZGFudCBub2RlcyB1bnRpbCB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgaXNcbiAqICAgICAgIGZvdW5kLlxuICogQHBhcmFtIGVsZW1lbnRcbiAqICAgICAgICAgIERPTSBub2RlIGZvciB3aGljaCB0byBmaW5kIHRoZSBmaXJzdCBmb2N1c2FibGUgZGVzY2VuZGFudC5cbiAqIEByZXR1cm5zXG4gKiAgdHJ1ZSBpZiBhIGZvY3VzYWJsZSBlbGVtZW50IGlzIGZvdW5kIGFuZCBmb2N1cyBpcyBzZXQuXG4gKi9cbmFyaWEuVXRpbHMuZm9jdXNGaXJzdERlc2NlbmRhbnQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGVsZW1lbnQuY2hpbGROb2Rlc1tpXTtcbiAgICBpZiAoYXJpYS5VdGlscy5hdHRlbXB0Rm9jdXMoY2hpbGQpIHx8IGFyaWEuVXRpbHMuZm9jdXNGaXJzdERlc2NlbmRhbnQoY2hpbGQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBAZGVzYyBGaW5kIHRoZSBsYXN0IGRlc2NlbmRhbnQgbm9kZSB0aGF0IGlzIGZvY3VzYWJsZS5cbiAqIEBwYXJhbSBlbGVtZW50XG4gKiAgICAgICAgICBET00gbm9kZSBmb3Igd2hpY2ggdG8gZmluZCB0aGUgbGFzdCBmb2N1c2FibGUgZGVzY2VuZGFudC5cbiAqIEByZXR1cm5zXG4gKiAgdHJ1ZSBpZiBhIGZvY3VzYWJsZSBlbGVtZW50IGlzIGZvdW5kIGFuZCBmb2N1cyBpcyBzZXQuXG4gKi9cblxuYXJpYS5VdGlscy5mb2N1c0xhc3REZXNjZW5kYW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgZm9yICh2YXIgaSA9IGVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBjaGlsZCA9IGVsZW1lbnQuY2hpbGROb2Rlc1tpXTtcbiAgICBpZiAoYXJpYS5VdGlscy5hdHRlbXB0Rm9jdXMoY2hpbGQpIHx8IGFyaWEuVXRpbHMuZm9jdXNMYXN0RGVzY2VuZGFudChjaGlsZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIEBkZXNjIFNldCBBdHRlbXB0IHRvIHNldCBmb2N1cyBvbiB0aGUgY3VycmVudCBub2RlLlxuICogQHBhcmFtIGVsZW1lbnRcbiAqICAgICAgICAgIFRoZSBub2RlIHRvIGF0dGVtcHQgdG8gZm9jdXMgb24uXG4gKiBAcmV0dXJuc1xuICogIHRydWUgaWYgZWxlbWVudCBpcyBmb2N1c2VkLlxuICovXG5hcmlhLlV0aWxzLmF0dGVtcHRGb2N1cyA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGlmICghYXJpYS5VdGlscy5pc0ZvY3VzYWJsZShlbGVtZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBhcmlhLlV0aWxzLklnbm9yZVV0aWxGb2N1c0NoYW5nZXMgPSB0cnVlO1xuICB0cnkge1xuICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgfSBjYXRjaCAoZSkge31cbiAgYXJpYS5VdGlscy5JZ25vcmVVdGlsRm9jdXNDaGFuZ2VzID0gZmFsc2U7XG4gIHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlbGVtZW50O1xufTtcblxuYXJpYS5VdGlscy5pc0ZvY3VzYWJsZSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50LnRhYkluZGV4ID4gMCB8fCBlbGVtZW50LnRhYkluZGV4ID09PSAwICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0YWJJbmRleCcpICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoZWxlbWVudC5kaXNhYmxlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN3aXRjaCAoZWxlbWVudC5ub2RlTmFtZSkge1xuICAgIGNhc2UgJ0EnOlxuICAgICAgcmV0dXJuICEhZWxlbWVudC5ocmVmICYmIGVsZW1lbnQucmVsICE9PSAnaWdub3JlJztcbiAgICBjYXNlICdJTlBVVCc6XG4gICAgICByZXR1cm4gZWxlbWVudC50eXBlICE9PSAnaGlkZGVuJyAmJiBlbGVtZW50LnR5cGUgIT09ICdmaWxlJztcbiAgICBjYXNlICdCVVRUT04nOlxuICAgIGNhc2UgJ1NFTEVDVCc6XG4gICAgY2FzZSAnVEVYVEFSRUEnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuLyoqXG4gKiDop6blj5HkuIDkuKrkuovku7ZcbiAqIG1vdXNlZW50ZXIsIG1vdXNlbGVhdmUsIG1vdXNlb3Zlciwga2V5dXAsIGNoYW5nZSwgY2xpY2sg562JXG4gKiBAcGFyYW0gIHtFbGVtZW50fSBlbG1cbiAqIEBwYXJhbSAge1N0cmluZ30gbmFtZVxuICogQHBhcmFtICB7Kn0gb3B0c1xuICovXG5hcmlhLlV0aWxzLnRyaWdnZXJFdmVudCA9IGZ1bmN0aW9uIChlbG0sIG5hbWUpIHtcbiAgdmFyIGV2ZW50TmFtZSA9IHZvaWQgMDtcblxuICBpZiAoL15tb3VzZXxjbGljay8udGVzdChuYW1lKSkge1xuICAgIGV2ZW50TmFtZSA9ICdNb3VzZUV2ZW50cyc7XG4gIH0gZWxzZSBpZiAoL15rZXkvLnRlc3QobmFtZSkpIHtcbiAgICBldmVudE5hbWUgPSAnS2V5Ym9hcmRFdmVudCc7XG4gIH0gZWxzZSB7XG4gICAgZXZlbnROYW1lID0gJ0hUTUxFdmVudHMnO1xuICB9XG4gIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudChldmVudE5hbWUpO1xuXG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBvcHRzID0gQXJyYXkoX2xlbiA+IDIgPyBfbGVuIC0gMiA6IDApLCBfa2V5ID0gMjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIG9wdHNbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgZXZ0LmluaXRFdmVudC5hcHBseShldnQsIFtuYW1lXS5jb25jYXQob3B0cykpO1xuICBlbG0uZGlzcGF0Y2hFdmVudCA/IGVsbS5kaXNwYXRjaEV2ZW50KGV2dCkgOiBlbG0uZmlyZUV2ZW50KCdvbicgKyBuYW1lLCBldnQpO1xuXG4gIHJldHVybiBlbG07XG59O1xuXG5hcmlhLlV0aWxzLmtleXMgPSB7XG4gIHRhYjogOSxcbiAgZW50ZXI6IDEzLFxuICBzcGFjZTogMzIsXG4gIGxlZnQ6IDM3LFxuICB1cDogMzgsXG4gIHJpZ2h0OiAzOSxcbiAgZG93bjogNDAsXG4gIGVzYzogMjdcbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGFyaWEuVXRpbHM7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/aria-utils.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/clickoutside.js":
/*!***********************************************************!*\
!*** ./node_modules/element-ui/lib/utils/clickoutside.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _dom = __webpack_require__(/*! element-ui/lib/utils/dom */ \"./node_modules/element-ui/lib/utils/dom.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar nodeList = [];\nvar ctx = '@@clickoutsideContext';\n\nvar startClick = void 0;\nvar seed = 0;\n\n!_vue2.default.prototype.$isServer && (0, _dom.on)(document, 'mousedown', function (e) {\n return startClick = e;\n});\n\n!_vue2.default.prototype.$isServer && (0, _dom.on)(document, 'mouseup', function (e) {\n nodeList.forEach(function (node) {\n return node[ctx].documentHandler(e, startClick);\n });\n});\n\nfunction createDocumentHandler(el, binding, vnode) {\n return function () {\n var mouseup = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var mousedown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!vnode || !vnode.context || !mouseup.target || !mousedown.target || el.contains(mouseup.target) || el.contains(mousedown.target) || el === mouseup.target || vnode.context.popperElm && (vnode.context.popperElm.contains(mouseup.target) || vnode.context.popperElm.contains(mousedown.target))) return;\n\n if (binding.expression && el[ctx].methodName && vnode.context[el[ctx].methodName]) {\n vnode.context[el[ctx].methodName]();\n } else {\n el[ctx].bindingFn && el[ctx].bindingFn();\n }\n };\n}\n\n/**\n * v-clickoutside\n * @desc 点击元素外面才会触发的事件\n * @example\n * ```vue\n * <div v-element-clickoutside=\"handleClose\">\n * ```\n */\nexports[\"default\"] = {\n bind: function bind(el, binding, vnode) {\n nodeList.push(el);\n var id = seed++;\n el[ctx] = {\n id: id,\n documentHandler: createDocumentHandler(el, binding, vnode),\n methodName: binding.expression,\n bindingFn: binding.value\n };\n },\n update: function update(el, binding, vnode) {\n el[ctx].documentHandler = createDocumentHandler(el, binding, vnode);\n el[ctx].methodName = binding.expression;\n el[ctx].bindingFn = binding.value;\n },\n unbind: function unbind(el) {\n var len = nodeList.length;\n\n for (var i = 0; i < len; i++) {\n if (nodeList[i][ctx].id === el[ctx].id) {\n nodeList.splice(i, 1);\n break;\n }\n }\n delete el[ctx];\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvY2xpY2tvdXRzaWRlLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQjs7QUFFbEIsV0FBVyxtQkFBTyxDQUFDLCtDQUFLOztBQUV4Qjs7QUFFQSxXQUFXLG1CQUFPLENBQUMsNEVBQTBCOztBQUU3Qyx1Q0FBdUMsdUNBQXVDOztBQUU5RTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxvQkFBb0IsU0FBUztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL3V0aWxzL2NsaWNrb3V0c2lkZS5qcz85NGZkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF92dWUgPSByZXF1aXJlKCd2dWUnKTtcblxudmFyIF92dWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdnVlKTtcblxudmFyIF9kb20gPSByZXF1aXJlKCdlbGVtZW50LXVpL2xpYi91dGlscy9kb20nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIG5vZGVMaXN0ID0gW107XG52YXIgY3R4ID0gJ0BAY2xpY2tvdXRzaWRlQ29udGV4dCc7XG5cbnZhciBzdGFydENsaWNrID0gdm9pZCAwO1xudmFyIHNlZWQgPSAwO1xuXG4hX3Z1ZTIuZGVmYXVsdC5wcm90b3R5cGUuJGlzU2VydmVyICYmICgwLCBfZG9tLm9uKShkb2N1bWVudCwgJ21vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gIHJldHVybiBzdGFydENsaWNrID0gZTtcbn0pO1xuXG4hX3Z1ZTIuZGVmYXVsdC5wcm90b3R5cGUuJGlzU2VydmVyICYmICgwLCBfZG9tLm9uKShkb2N1bWVudCwgJ21vdXNldXAnLCBmdW5jdGlvbiAoZSkge1xuICBub2RlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGVbY3R4XS5kb2N1bWVudEhhbmRsZXIoZSwgc3RhcnRDbGljayk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZURvY3VtZW50SGFuZGxlcihlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbW91c2V1cCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgdmFyIG1vdXNlZG93biA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICBpZiAoIXZub2RlIHx8ICF2bm9kZS5jb250ZXh0IHx8ICFtb3VzZXVwLnRhcmdldCB8fCAhbW91c2Vkb3duLnRhcmdldCB8fCBlbC5jb250YWlucyhtb3VzZXVwLnRhcmdldCkgfHwgZWwuY29udGFpbnMobW91c2Vkb3duLnRhcmdldCkgfHwgZWwgPT09IG1vdXNldXAudGFyZ2V0IHx8IHZub2RlLmNvbnRleHQucG9wcGVyRWxtICYmICh2bm9kZS5jb250ZXh0LnBvcHBlckVsbS5jb250YWlucyhtb3VzZXVwLnRhcmdldCkgfHwgdm5vZGUuY29udGV4dC5wb3BwZXJFbG0uY29udGFpbnMobW91c2Vkb3duLnRhcmdldCkpKSByZXR1cm47XG5cbiAgICBpZiAoYmluZGluZy5leHByZXNzaW9uICYmIGVsW2N0eF0ubWV0aG9kTmFtZSAmJiB2bm9kZS5jb250ZXh0W2VsW2N0eF0ubWV0aG9kTmFtZV0pIHtcbiAgICAgIHZub2RlLmNvbnRleHRbZWxbY3R4XS5tZXRob2ROYW1lXSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbFtjdHhdLmJpbmRpbmdGbiAmJiBlbFtjdHhdLmJpbmRpbmdGbigpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB2LWNsaWNrb3V0c2lkZVxuICogQGRlc2Mg54K55Ye75YWD57Sg5aSW6Z2i5omN5Lya6Kem5Y+R55qE5LqL5Lu2XG4gKiBAZXhhbXBsZVxuICogYGBgdnVlXG4gKiA8ZGl2IHYtZWxlbWVudC1jbGlja291dHNpZGU9XCJoYW5kbGVDbG9zZVwiPlxuICogYGBgXG4gKi9cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBub2RlTGlzdC5wdXNoKGVsKTtcbiAgICB2YXIgaWQgPSBzZWVkKys7XG4gICAgZWxbY3R4XSA9IHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGRvY3VtZW50SGFuZGxlcjogY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGVsLCBiaW5kaW5nLCB2bm9kZSksXG4gICAgICBtZXRob2ROYW1lOiBiaW5kaW5nLmV4cHJlc3Npb24sXG4gICAgICBiaW5kaW5nRm46IGJpbmRpbmcudmFsdWVcbiAgICB9O1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBlbFtjdHhdLmRvY3VtZW50SGFuZGxlciA9IGNyZWF0ZURvY3VtZW50SGFuZGxlcihlbCwgYmluZGluZywgdm5vZGUpO1xuICAgIGVsW2N0eF0ubWV0aG9kTmFtZSA9IGJpbmRpbmcuZXhwcmVzc2lvbjtcbiAgICBlbFtjdHhdLmJpbmRpbmdGbiA9IGJpbmRpbmcudmFsdWU7XG4gIH0sXG4gIHVuYmluZDogZnVuY3Rpb24gdW5iaW5kKGVsKSB7XG4gICAgdmFyIGxlbiA9IG5vZGVMaXN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmIChub2RlTGlzdFtpXVtjdHhdLmlkID09PSBlbFtjdHhdLmlkKSB7XG4gICAgICAgIG5vZGVMaXN0LnNwbGljZShpLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGRlbGV0ZSBlbFtjdHhdO1xuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/clickoutside.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/date-util.js":
/*!********************************************************!*\
!*** ./node_modules/element-ui/lib/utils/date-util.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.validateRangeInOneMonth = exports.extractTimeFormat = exports.extractDateFormat = exports.nextYear = exports.prevYear = exports.nextMonth = exports.prevMonth = exports.changeYearMonthAndClampDate = exports.timeWithinRange = exports.limitTimeRange = exports.clearMilliseconds = exports.clearTime = exports.modifyWithTimeString = exports.modifyTime = exports.modifyDate = exports.range = exports.getRangeMinutes = exports.getMonthDays = exports.getPrevMonthLastDays = exports.getRangeHours = exports.getWeekNumber = exports.getStartDateOfMonth = exports.nextDate = exports.prevDate = exports.getFirstDayOfMonth = exports.getDayCountOfYear = exports.getDayCountOfMonth = exports.parseDate = exports.formatDate = exports.isDateObject = exports.isDate = exports.toDate = exports.getI18nSettings = undefined;\n\nvar _date = __webpack_require__(/*! element-ui/lib/utils/date */ \"./node_modules/element-ui/lib/utils/date.js\");\n\nvar _date2 = _interopRequireDefault(_date);\n\nvar _locale = __webpack_require__(/*! element-ui/lib/locale */ \"./node_modules/element-ui/lib/locale/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar weeks = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];\n\nvar newArray = function newArray(start, end) {\n var result = [];\n for (var i = start; i <= end; i++) {\n result.push(i);\n }\n return result;\n};\n\nvar getI18nSettings = exports.getI18nSettings = function getI18nSettings() {\n return {\n dayNamesShort: weeks.map(function (week) {\n return (0, _locale.t)('el.datepicker.weeks.' + week);\n }),\n dayNames: weeks.map(function (week) {\n return (0, _locale.t)('el.datepicker.weeks.' + week);\n }),\n monthNamesShort: months.map(function (month) {\n return (0, _locale.t)('el.datepicker.months.' + month);\n }),\n monthNames: months.map(function (month, index) {\n return (0, _locale.t)('el.datepicker.month' + (index + 1));\n }),\n amPm: ['am', 'pm']\n };\n};\n\nvar toDate = exports.toDate = function toDate(date) {\n return isDate(date) ? new Date(date) : null;\n};\n\nvar isDate = exports.isDate = function isDate(date) {\n if (date === null || date === undefined) return false;\n if (isNaN(new Date(date).getTime())) return false;\n if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`\n return true;\n};\n\nvar isDateObject = exports.isDateObject = function isDateObject(val) {\n return val instanceof Date;\n};\n\nvar formatDate = exports.formatDate = function formatDate(date, format) {\n date = toDate(date);\n if (!date) return '';\n return _date2.default.format(date, format || 'yyyy-MM-dd', getI18nSettings());\n};\n\nvar parseDate = exports.parseDate = function parseDate(string, format) {\n return _date2.default.parse(string, format || 'yyyy-MM-dd', getI18nSettings());\n};\n\nvar getDayCountOfMonth = exports.getDayCountOfMonth = function getDayCountOfMonth(year, month) {\n if (isNaN(+month)) return 31;\n\n return new Date(year, +month + 1, 0).getDate();\n};\n\nvar getDayCountOfYear = exports.getDayCountOfYear = function getDayCountOfYear(year) {\n var isLeapYear = year % 400 === 0 || year % 100 !== 0 && year % 4 === 0;\n return isLeapYear ? 366 : 365;\n};\n\nvar getFirstDayOfMonth = exports.getFirstDayOfMonth = function getFirstDayOfMonth(date) {\n var temp = new Date(date.getTime());\n temp.setDate(1);\n return temp.getDay();\n};\n\n// see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript\n// {prev, next} Date should work for Daylight Saving Time\n// Adding 24 * 60 * 60 * 1000 does not work in the above scenario\nvar prevDate = exports.prevDate = function prevDate(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);\n};\n\nvar nextDate = exports.nextDate = function nextDate(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n};\n\nvar getStartDateOfMonth = exports.getStartDateOfMonth = function getStartDateOfMonth(year, month) {\n var result = new Date(year, month, 1);\n var day = result.getDay();\n\n if (day === 0) {\n return prevDate(result, 7);\n } else {\n return prevDate(result, day);\n }\n};\n\nvar getWeekNumber = exports.getWeekNumber = function getWeekNumber(src) {\n if (!isDate(src)) return null;\n var date = new Date(src.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week 1.\n // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n};\n\nvar getRangeHours = exports.getRangeHours = function getRangeHours(ranges) {\n var hours = [];\n var disabledHours = [];\n\n (ranges || []).forEach(function (range) {\n var value = range.map(function (date) {\n return date.getHours();\n });\n\n disabledHours = disabledHours.concat(newArray(value[0], value[1]));\n });\n\n if (disabledHours.length) {\n for (var i = 0; i < 24; i++) {\n hours[i] = disabledHours.indexOf(i) === -1;\n }\n } else {\n for (var _i = 0; _i < 24; _i++) {\n hours[_i] = false;\n }\n }\n\n return hours;\n};\n\nvar getPrevMonthLastDays = exports.getPrevMonthLastDays = function getPrevMonthLastDays(date, amount) {\n if (amount <= 0) return [];\n var temp = new Date(date.getTime());\n temp.setDate(0);\n var lastDay = temp.getDate();\n return range(amount).map(function (_, index) {\n return lastDay - (amount - index - 1);\n });\n};\n\nvar getMonthDays = exports.getMonthDays = function getMonthDays(date) {\n var temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n var days = temp.getDate();\n return range(days).map(function (_, index) {\n return index + 1;\n });\n};\n\nfunction setRangeData(arr, start, end, value) {\n for (var i = start; i < end; i++) {\n arr[i] = value;\n }\n}\n\nvar getRangeMinutes = exports.getRangeMinutes = function getRangeMinutes(ranges, hour) {\n var minutes = new Array(60);\n\n if (ranges.length > 0) {\n ranges.forEach(function (range) {\n var start = range[0];\n var end = range[1];\n var startHour = start.getHours();\n var startMinute = start.getMinutes();\n var endHour = end.getHours();\n var endMinute = end.getMinutes();\n if (startHour === hour && endHour !== hour) {\n setRangeData(minutes, startMinute, 60, true);\n } else if (startHour === hour && endHour === hour) {\n setRangeData(minutes, startMinute, endMinute + 1, true);\n } else if (startHour !== hour && endHour === hour) {\n setRangeData(minutes, 0, endMinute + 1, true);\n } else if (startHour < hour && endHour > hour) {\n setRangeData(minutes, 0, 60, true);\n }\n });\n } else {\n setRangeData(minutes, 0, 60, true);\n }\n return minutes;\n};\n\nvar range = exports.range = function range(n) {\n // see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n\n return Array.apply(null, { length: n }).map(function (_, n) {\n return n;\n });\n};\n\nvar modifyDate = exports.modifyDate = function modifyDate(date, y, m, d) {\n return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n\nvar modifyTime = exports.modifyTime = function modifyTime(date, h, m, s) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds());\n};\n\nvar modifyWithTimeString = exports.modifyWithTimeString = function modifyWithTimeString(date, time) {\n if (date == null || !time) {\n return date;\n }\n time = parseDate(time, 'HH:mm:ss');\n return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());\n};\n\nvar clearTime = exports.clearTime = function clearTime(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n};\n\nvar clearMilliseconds = exports.clearMilliseconds = function clearMilliseconds(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);\n};\n\nvar limitTimeRange = exports.limitTimeRange = function limitTimeRange(date, ranges) {\n var format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'HH:mm:ss';\n\n // TODO: refactory a more elegant solution\n if (ranges.length === 0) return date;\n var normalizeDate = function normalizeDate(date) {\n return _date2.default.parse(_date2.default.format(date, format), format);\n };\n var ndate = normalizeDate(date);\n var nranges = ranges.map(function (range) {\n return range.map(normalizeDate);\n });\n if (nranges.some(function (nrange) {\n return ndate >= nrange[0] && ndate <= nrange[1];\n })) return date;\n\n var minDate = nranges[0][0];\n var maxDate = nranges[0][0];\n\n nranges.forEach(function (nrange) {\n minDate = new Date(Math.min(nrange[0], minDate));\n maxDate = new Date(Math.max(nrange[1], minDate));\n });\n\n var ret = ndate < minDate ? minDate : maxDate;\n // preserve Year/Month/Date\n return modifyDate(ret, date.getFullYear(), date.getMonth(), date.getDate());\n};\n\nvar timeWithinRange = exports.timeWithinRange = function timeWithinRange(date, selectableRange, format) {\n var limitedDate = limitTimeRange(date, selectableRange, format);\n return limitedDate.getTime() === date.getTime();\n};\n\nvar changeYearMonthAndClampDate = exports.changeYearMonthAndClampDate = function changeYearMonthAndClampDate(date, year, month) {\n // clamp date to the number of days in `year`, `month`\n // eg: (2010-1-31, 2010, 2) => 2010-2-28\n var monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));\n return modifyDate(date, year, month, monthDate);\n};\n\nvar prevMonth = exports.prevMonth = function prevMonth(date) {\n var year = date.getFullYear();\n var month = date.getMonth();\n return month === 0 ? changeYearMonthAndClampDate(date, year - 1, 11) : changeYearMonthAndClampDate(date, year, month - 1);\n};\n\nvar nextMonth = exports.nextMonth = function nextMonth(date) {\n var year = date.getFullYear();\n var month = date.getMonth();\n return month === 11 ? changeYearMonthAndClampDate(date, year + 1, 0) : changeYearMonthAndClampDate(date, year, month + 1);\n};\n\nvar prevYear = exports.prevYear = function prevYear(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var year = date.getFullYear();\n var month = date.getMonth();\n return changeYearMonthAndClampDate(date, year - amount, month);\n};\n\nvar nextYear = exports.nextYear = function nextYear(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var year = date.getFullYear();\n var month = date.getMonth();\n return changeYearMonthAndClampDate(date, year + amount, month);\n};\n\nvar extractDateFormat = exports.extractDateFormat = function extractDateFormat(format) {\n return format.replace(/\\W?m{1,2}|\\W?ZZ/g, '').replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi, '').trim();\n};\n\nvar extractTimeFormat = exports.extractTimeFormat = function extractTimeFormat(format) {\n return format.replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?y{2,4}/g, '').trim();\n};\n\nvar validateRangeInOneMonth = exports.validateRangeInOneMonth = function validateRangeInOneMonth(start, end) {\n return start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear();\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvZGF0ZS11dGlsLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQjtBQUNsQiwrQkFBK0IsR0FBRyx5QkFBeUIsR0FBRyx5QkFBeUIsR0FBRyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxpQkFBaUIsR0FBRyxpQkFBaUIsR0FBRyxtQ0FBbUMsR0FBRyx1QkFBdUIsR0FBRyxzQkFBc0IsR0FBRyx5QkFBeUIsR0FBRyxpQkFBaUIsR0FBRyw0QkFBNEIsR0FBRyxrQkFBa0IsR0FBRyxrQkFBa0IsR0FBRyxhQUFhLEdBQUcsdUJBQXVCLEdBQUcsb0JBQW9CLEdBQUcsNEJBQTRCLEdBQUcscUJBQXFCLEdBQUcscUJBQXFCLEdBQUcsMkJBQTJCLEdBQUcsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsMEJBQTBCLEdBQUcseUJBQXlCLEdBQUcsMEJBQTBCLEdBQUcsaUJBQWlCLEdBQUcsa0JBQWtCLEdBQUcsb0JBQW9CLEdBQUcsY0FBYyxHQUFHLGNBQWMsR0FBRyx1QkFBdUI7O0FBRTd4QixZQUFZLG1CQUFPLENBQUMsOEVBQTJCOztBQUUvQzs7QUFFQSxjQUFjLG1CQUFPLENBQUMsNEVBQXVCOztBQUU3Qyx1Q0FBdUMsdUNBQXVDOztBQUU5RTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0IsVUFBVTtBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdUJBQXVCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxjQUFjO0FBQzNCO0FBQ0E7O0FBRUEsYUFBYSxjQUFjO0FBQzNCO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7O0FBRUEseUJBQXlCLDBCQUEwQjtBQUNuRDs7QUFFQTtBQUNBOztBQUVBLHdCQUF3Qix5QkFBeUI7QUFDakQ7QUFDQTtBQUNBOztBQUVBLHlCQUF5QiwwQkFBMEI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLFlBQVk7QUFDaEI7QUFDQSxlQUFlLGdCQUFnQjtBQUMvQjs7QUFFQTtBQUNBOztBQUVBLGVBQWUsZ0JBQWdCO0FBQy9COztBQUVBO0FBQ0E7O0FBRUEsMEJBQTBCLDJCQUEyQjtBQUNyRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixxQkFBcUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IscUJBQXFCO0FBQ3pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0EsSUFBSTtBQUNKLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDJCQUEyQiw0QkFBNEI7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxzQkFBc0IsU0FBUztBQUMvQjtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLHVCQUF1QjtBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLGFBQWE7QUFDekI7QUFDQSw2QkFBNkIsV0FBVztBQUN4QztBQUNBLEdBQUc7QUFDSDs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBOztBQUVBLDJCQUEyQiw0QkFBNEI7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQixpQkFBaUI7QUFDakM7QUFDQTs7QUFFQSx3QkFBd0IseUJBQXlCO0FBQ2pEO0FBQ0E7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdUJBQXVCO0FBQzdDO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0MsbUNBQW1DO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsZ0JBQWdCO0FBQy9COztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsZ0JBQWdCO0FBQy9COztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3Qix5QkFBeUI7QUFDakQsOEJBQThCLElBQUksNEJBQTRCLElBQUksTUFBTSxJQUFJO0FBQzVFOztBQUVBLHdCQUF3Qix5QkFBeUI7QUFDakQsOEJBQThCLElBQUksWUFBWSxJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUk7QUFDdEU7O0FBRUEsOEJBQThCLCtCQUErQjtBQUM3RDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL3V0aWxzL2RhdGUtdXRpbC5qcz9kYjYxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMudmFsaWRhdGVSYW5nZUluT25lTW9udGggPSBleHBvcnRzLmV4dHJhY3RUaW1lRm9ybWF0ID0gZXhwb3J0cy5leHRyYWN0RGF0ZUZvcm1hdCA9IGV4cG9ydHMubmV4dFllYXIgPSBleHBvcnRzLnByZXZZZWFyID0gZXhwb3J0cy5uZXh0TW9udGggPSBleHBvcnRzLnByZXZNb250aCA9IGV4cG9ydHMuY2hhbmdlWWVhck1vbnRoQW5kQ2xhbXBEYXRlID0gZXhwb3J0cy50aW1lV2l0aGluUmFuZ2UgPSBleHBvcnRzLmxpbWl0VGltZVJhbmdlID0gZXhwb3J0cy5jbGVhck1pbGxpc2Vjb25kcyA9IGV4cG9ydHMuY2xlYXJUaW1lID0gZXhwb3J0cy5tb2RpZnlXaXRoVGltZVN0cmluZyA9IGV4cG9ydHMubW9kaWZ5VGltZSA9IGV4cG9ydHMubW9kaWZ5RGF0ZSA9IGV4cG9ydHMucmFuZ2UgPSBleHBvcnRzLmdldFJhbmdlTWludXRlcyA9IGV4cG9ydHMuZ2V0TW9udGhEYXlzID0gZXhwb3J0cy5nZXRQcmV2TW9udGhMYXN0RGF5cyA9IGV4cG9ydHMuZ2V0UmFuZ2VIb3VycyA9IGV4cG9ydHMuZ2V0V2Vla051bWJlciA9IGV4cG9ydHMuZ2V0U3RhcnREYXRlT2ZNb250aCA9IGV4cG9ydHMubmV4dERhdGUgPSBleHBvcnRzLnByZXZEYXRlID0gZXhwb3J0cy5nZXRGaXJzdERheU9mTW9udGggPSBleHBvcnRzLmdldERheUNvdW50T2ZZZWFyID0gZXhwb3J0cy5nZXREYXlDb3VudE9mTW9udGggPSBleHBvcnRzLnBhcnNlRGF0ZSA9IGV4cG9ydHMuZm9ybWF0RGF0ZSA9IGV4cG9ydHMuaXNEYXRlT2JqZWN0ID0gZXhwb3J0cy5pc0RhdGUgPSBleHBvcnRzLnRvRGF0ZSA9IGV4cG9ydHMuZ2V0STE4blNldHRpbmdzID0gdW5kZWZpbmVkO1xuXG52YXIgX2RhdGUgPSByZXF1aXJlKCdlbGVtZW50LXVpL2xpYi91dGlscy9kYXRlJyk7XG5cbnZhciBfZGF0ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kYXRlKTtcblxudmFyIF9sb2NhbGUgPSByZXF1aXJlKCdlbGVtZW50LXVpL2xpYi9sb2NhbGUnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIHdlZWtzID0gWydzdW4nLCAnbW9uJywgJ3R1ZScsICd3ZWQnLCAndGh1JywgJ2ZyaScsICdzYXQnXTtcbnZhciBtb250aHMgPSBbJ2phbicsICdmZWInLCAnbWFyJywgJ2FwcicsICdtYXknLCAnanVuJywgJ2p1bCcsICdhdWcnLCAnc2VwJywgJ29jdCcsICdub3YnLCAnZGVjJ107XG5cbnZhciBuZXdBcnJheSA9IGZ1bmN0aW9uIG5ld0FycmF5KHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICByZXN1bHQucHVzaChpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIGdldEkxOG5TZXR0aW5ncyA9IGV4cG9ydHMuZ2V0STE4blNldHRpbmdzID0gZnVuY3Rpb24gZ2V0STE4blNldHRpbmdzKCkge1xuICByZXR1cm4ge1xuICAgIGRheU5hbWVzU2hvcnQ6IHdlZWtzLm1hcChmdW5jdGlvbiAod2Vlaykge1xuICAgICAgcmV0dXJuICgwLCBfbG9jYWxlLnQpKCdlbC5kYXRlcGlja2VyLndlZWtzLicgKyB3ZWVrKTtcbiAgICB9KSxcbiAgICBkYXlOYW1lczogd2Vla3MubWFwKGZ1bmN0aW9uICh3ZWVrKSB7XG4gICAgICByZXR1cm4gKDAsIF9sb2NhbGUudCkoJ2VsLmRhdGVwaWNrZXIud2Vla3MuJyArIHdlZWspO1xuICAgIH0pLFxuICAgIG1vbnRoTmFtZXNTaG9ydDogbW9udGhzLm1hcChmdW5jdGlvbiAobW9udGgpIHtcbiAgICAgIHJldHVybiAoMCwgX2xvY2FsZS50KSgnZWwuZGF0ZXBpY2tlci5tb250aHMuJyArIG1vbnRoKTtcbiAgICB9KSxcbiAgICBtb250aE5hbWVzOiBtb250aHMubWFwKGZ1bmN0aW9uIChtb250aCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiAoMCwgX2xvY2FsZS50KSgnZWwuZGF0ZXBpY2tlci5tb250aCcgKyAoaW5kZXggKyAxKSk7XG4gICAgfSksXG4gICAgYW1QbTogWydhbScsICdwbSddXG4gIH07XG59O1xuXG52YXIgdG9EYXRlID0gZXhwb3J0cy50b0RhdGUgPSBmdW5jdGlvbiB0b0RhdGUoZGF0ZSkge1xuICByZXR1cm4gaXNEYXRlKGRhdGUpID8gbmV3IERhdGUoZGF0ZSkgOiBudWxsO1xufTtcblxudmFyIGlzRGF0ZSA9IGV4cG9ydHMuaXNEYXRlID0gZnVuY3Rpb24gaXNEYXRlKGRhdGUpIHtcbiAgaWYgKGRhdGUgPT09IG51bGwgfHwgZGF0ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gIGlmIChpc05hTihuZXcgRGF0ZShkYXRlKS5nZXRUaW1lKCkpKSByZXR1cm4gZmFsc2U7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGUpKSByZXR1cm4gZmFsc2U7IC8vIGRlYWwgd2l0aCBgbmV3IERhdGUoWyBuZXcgRGF0ZSgpIF0pIC0+IG5ldyBEYXRlKClgXG4gIHJldHVybiB0cnVlO1xufTtcblxudmFyIGlzRGF0ZU9iamVjdCA9IGV4cG9ydHMuaXNEYXRlT2JqZWN0ID0gZnVuY3Rpb24gaXNEYXRlT2JqZWN0KHZhbCkge1xuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRGF0ZTtcbn07XG5cbnZhciBmb3JtYXREYXRlID0gZXhwb3J0cy5mb3JtYXREYXRlID0gZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlLCBmb3JtYXQpIHtcbiAgZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKCFkYXRlKSByZXR1cm4gJyc7XG4gIHJldHVybiBfZGF0ZTIuZGVmYXVsdC5mb3JtYXQoZGF0ZSwgZm9ybWF0IHx8ICd5eXl5LU1NLWRkJywgZ2V0STE4blNldHRpbmdzKCkpO1xufTtcblxudmFyIHBhcnNlRGF0ZSA9IGV4cG9ydHMucGFyc2VEYXRlID0gZnVuY3Rpb24gcGFyc2VEYXRlKHN0cmluZywgZm9ybWF0KSB7XG4gIHJldHVybiBfZGF0ZTIuZGVmYXVsdC5wYXJzZShzdHJpbmcsIGZvcm1hdCB8fCAneXl5eS1NTS1kZCcsIGdldEkxOG5TZXR0aW5ncygpKTtcbn07XG5cbnZhciBnZXREYXlDb3VudE9mTW9udGggPSBleHBvcnRzLmdldERheUNvdW50T2ZNb250aCA9IGZ1bmN0aW9uIGdldERheUNvdW50T2ZNb250aCh5ZWFyLCBtb250aCkge1xuICBpZiAoaXNOYU4oK21vbnRoKSkgcmV0dXJuIDMxO1xuXG4gIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCArbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XG59O1xuXG52YXIgZ2V0RGF5Q291bnRPZlllYXIgPSBleHBvcnRzLmdldERheUNvdW50T2ZZZWFyID0gZnVuY3Rpb24gZ2V0RGF5Q291bnRPZlllYXIoeWVhcikge1xuICB2YXIgaXNMZWFwWWVhciA9IHllYXIgJSA0MDAgPT09IDAgfHwgeWVhciAlIDEwMCAhPT0gMCAmJiB5ZWFyICUgNCA9PT0gMDtcbiAgcmV0dXJuIGlzTGVhcFllYXIgPyAzNjYgOiAzNjU7XG59O1xuXG52YXIgZ2V0Rmlyc3REYXlPZk1vbnRoID0gZXhwb3J0cy5nZXRGaXJzdERheU9mTW9udGggPSBmdW5jdGlvbiBnZXRGaXJzdERheU9mTW9udGgoZGF0ZSkge1xuICB2YXIgdGVtcCA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTtcbiAgdGVtcC5zZXREYXRlKDEpO1xuICByZXR1cm4gdGVtcC5nZXREYXkoKTtcbn07XG5cbi8vIHNlZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzY3NDUzOS9pbmNyZW1lbnRpbmctYS1kYXRlLWluLWphdmFzY3JpcHRcbi8vIHtwcmV2LCBuZXh0fSBEYXRlIHNob3VsZCB3b3JrIGZvciBEYXlsaWdodCBTYXZpbmcgVGltZVxuLy8gQWRkaW5nIDI0ICogNjAgKiA2MCAqIDEwMDAgZG9lcyBub3Qgd29yayBpbiB0aGUgYWJvdmUgc2NlbmFyaW9cbnZhciBwcmV2RGF0ZSA9IGV4cG9ydHMucHJldkRhdGUgPSBmdW5jdGlvbiBwcmV2RGF0ZShkYXRlKSB7XG4gIHZhciBhbW91bnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDE7XG5cbiAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSAtIGFtb3VudCk7XG59O1xuXG52YXIgbmV4dERhdGUgPSBleHBvcnRzLm5leHREYXRlID0gZnVuY3Rpb24gbmV4dERhdGUoZGF0ZSkge1xuICB2YXIgYW1vdW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAxO1xuXG4gIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xufTtcblxudmFyIGdldFN0YXJ0RGF0ZU9mTW9udGggPSBleHBvcnRzLmdldFN0YXJ0RGF0ZU9mTW9udGggPSBmdW5jdGlvbiBnZXRTdGFydERhdGVPZk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gIHZhciBkYXkgPSByZXN1bHQuZ2V0RGF5KCk7XG5cbiAgaWYgKGRheSA9PT0gMCkge1xuICAgIHJldHVybiBwcmV2RGF0ZShyZXN1bHQsIDcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcmV2RGF0ZShyZXN1bHQsIGRheSk7XG4gIH1cbn07XG5cbnZhciBnZXRXZWVrTnVtYmVyID0gZXhwb3J0cy5nZXRXZWVrTnVtYmVyID0gZnVuY3Rpb24gZ2V0V2Vla051bWJlcihzcmMpIHtcbiAgaWYgKCFpc0RhdGUoc3JjKSkgcmV0dXJuIG51bGw7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoc3JjLmdldFRpbWUoKSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIC8vIFRodXJzZGF5IGluIGN1cnJlbnQgd2VlayBkZWNpZGVzIHRoZSB5ZWFyLlxuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAzIC0gKGRhdGUuZ2V0RGF5KCkgKyA2KSAlIDcpO1xuICAvLyBKYW51YXJ5IDQgaXMgYWx3YXlzIGluIHdlZWsgMS5cbiAgdmFyIHdlZWsxID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCA0KTtcbiAgLy8gQWRqdXN0IHRvIFRodXJzZGF5IGluIHdlZWsgMSBhbmQgY291bnQgbnVtYmVyIG9mIHdlZWtzIGZyb20gZGF0ZSB0byB3ZWVrIDEuXG4gIC8vIFJvdW5kaW5nIHNob3VsZCBiZSBmaW5lIGZvciBEYXlsaWdodCBTYXZpbmcgVGltZS4gSXRzIHNoaWZ0IHNob3VsZCBuZXZlciBiZSBtb3JlIHRoYW4gMTIgaG91cnMuXG4gIHJldHVybiAxICsgTWF0aC5yb3VuZCgoKGRhdGUuZ2V0VGltZSgpIC0gd2VlazEuZ2V0VGltZSgpKSAvIDg2NDAwMDAwIC0gMyArICh3ZWVrMS5nZXREYXkoKSArIDYpICUgNykgLyA3KTtcbn07XG5cbnZhciBnZXRSYW5nZUhvdXJzID0gZXhwb3J0cy5nZXRSYW5nZUhvdXJzID0gZnVuY3Rpb24gZ2V0UmFuZ2VIb3VycyhyYW5nZXMpIHtcbiAgdmFyIGhvdXJzID0gW107XG4gIHZhciBkaXNhYmxlZEhvdXJzID0gW107XG5cbiAgKHJhbmdlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAocmFuZ2UpIHtcbiAgICB2YXIgdmFsdWUgPSByYW5nZS5tYXAoZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgIHJldHVybiBkYXRlLmdldEhvdXJzKCk7XG4gICAgfSk7XG5cbiAgICBkaXNhYmxlZEhvdXJzID0gZGlzYWJsZWRIb3Vycy5jb25jYXQobmV3QXJyYXkodmFsdWVbMF0sIHZhbHVlWzFdKSk7XG4gIH0pO1xuXG4gIGlmIChkaXNhYmxlZEhvdXJzLmxlbmd0aCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjQ7IGkrKykge1xuICAgICAgaG91cnNbaV0gPSBkaXNhYmxlZEhvdXJzLmluZGV4T2YoaSkgPT09IC0xO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgMjQ7IF9pKyspIHtcbiAgICAgIGhvdXJzW19pXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBob3Vycztcbn07XG5cbnZhciBnZXRQcmV2TW9udGhMYXN0RGF5cyA9IGV4cG9ydHMuZ2V0UHJldk1vbnRoTGFzdERheXMgPSBmdW5jdGlvbiBnZXRQcmV2TW9udGhMYXN0RGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgaWYgKGFtb3VudCA8PSAwKSByZXR1cm4gW107XG4gIHZhciB0ZW1wID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuICB0ZW1wLnNldERhdGUoMCk7XG4gIHZhciBsYXN0RGF5ID0gdGVtcC5nZXREYXRlKCk7XG4gIHJldHVybiByYW5nZShhbW91bnQpLm1hcChmdW5jdGlvbiAoXywgaW5kZXgpIHtcbiAgICByZXR1cm4gbGFzdERheSAtIChhbW91bnQgLSBpbmRleCAtIDEpO1xuICB9KTtcbn07XG5cbnZhciBnZXRNb250aERheXMgPSBleHBvcnRzLmdldE1vbnRoRGF5cyA9IGZ1bmN0aW9uIGdldE1vbnRoRGF5cyhkYXRlKSB7XG4gIHZhciB0ZW1wID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgKyAxLCAwKTtcbiAgdmFyIGRheXMgPSB0ZW1wLmdldERhdGUoKTtcbiAgcmV0dXJuIHJhbmdlKGRheXMpLm1hcChmdW5jdGlvbiAoXywgaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXggKyAxO1xuICB9KTtcbn07XG5cbmZ1bmN0aW9uIHNldFJhbmdlRGF0YShhcnIsIHN0YXJ0LCBlbmQsIHZhbHVlKSB7XG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgYXJyW2ldID0gdmFsdWU7XG4gIH1cbn1cblxudmFyIGdldFJhbmdlTWludXRlcyA9IGV4cG9ydHMuZ2V0UmFuZ2VNaW51dGVzID0gZnVuY3Rpb24gZ2V0UmFuZ2VNaW51dGVzKHJhbmdlcywgaG91cikge1xuICB2YXIgbWludXRlcyA9IG5ldyBBcnJheSg2MCk7XG5cbiAgaWYgKHJhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgcmFuZ2VzLmZvckVhY2goZnVuY3Rpb24gKHJhbmdlKSB7XG4gICAgICB2YXIgc3RhcnQgPSByYW5nZVswXTtcbiAgICAgIHZhciBlbmQgPSByYW5nZVsxXTtcbiAgICAgIHZhciBzdGFydEhvdXIgPSBzdGFydC5nZXRIb3VycygpO1xuICAgICAgdmFyIHN0YXJ0TWludXRlID0gc3RhcnQuZ2V0TWludXRlcygpO1xuICAgICAgdmFyIGVuZEhvdXIgPSBlbmQuZ2V0SG91cnMoKTtcbiAgICAgIHZhciBlbmRNaW51dGUgPSBlbmQuZ2V0TWludXRlcygpO1xuICAgICAgaWYgKHN0YXJ0SG91ciA9PT0gaG91ciAmJiBlbmRIb3VyICE9PSBob3VyKSB7XG4gICAgICAgIHNldFJhbmdlRGF0YShtaW51dGVzLCBzdGFydE1pbnV0ZSwgNjAsIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdGFydEhvdXIgPT09IGhvdXIgJiYgZW5kSG91ciA9PT0gaG91cikge1xuICAgICAgICBzZXRSYW5nZURhdGEobWludXRlcywgc3RhcnRNaW51dGUsIGVuZE1pbnV0ZSArIDEsIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdGFydEhvdXIgIT09IGhvdXIgJiYgZW5kSG91ciA9PT0gaG91cikge1xuICAgICAgICBzZXRSYW5nZURhdGEobWludXRlcywgMCwgZW5kTWludXRlICsgMSwgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXJ0SG91ciA8IGhvdXIgJiYgZW5kSG91ciA+IGhvdXIpIHtcbiAgICAgICAgc2V0UmFuZ2VEYXRhKG1pbnV0ZXMsIDAsIDYwLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBzZXRSYW5nZURhdGEobWludXRlcywgMCwgNjAsIHRydWUpO1xuICB9XG4gIHJldHVybiBtaW51dGVzO1xufTtcblxudmFyIHJhbmdlID0gZXhwb3J0cy5yYW5nZSA9IGZ1bmN0aW9uIHJhbmdlKG4pIHtcbiAgLy8gc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM3NDY3MjUvY3JlYXRlLWEtamF2YXNjcmlwdC1hcnJheS1jb250YWluaW5nLTEtblxuICByZXR1cm4gQXJyYXkuYXBwbHkobnVsbCwgeyBsZW5ndGg6IG4gfSkubWFwKGZ1bmN0aW9uIChfLCBuKSB7XG4gICAgcmV0dXJuIG47XG4gIH0pO1xufTtcblxudmFyIG1vZGlmeURhdGUgPSBleHBvcnRzLm1vZGlmeURhdGUgPSBmdW5jdGlvbiBtb2RpZnlEYXRlKGRhdGUsIHksIG0sIGQpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKHksIG0sIGQsIGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpLCBkYXRlLmdldE1pbGxpc2Vjb25kcygpKTtcbn07XG5cbnZhciBtb2RpZnlUaW1lID0gZXhwb3J0cy5tb2RpZnlUaW1lID0gZnVuY3Rpb24gbW9kaWZ5VGltZShkYXRlLCBoLCBtLCBzKSB7XG4gIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIGgsIG0sIHMsIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xufTtcblxudmFyIG1vZGlmeVdpdGhUaW1lU3RyaW5nID0gZXhwb3J0cy5tb2RpZnlXaXRoVGltZVN0cmluZyA9IGZ1bmN0aW9uIG1vZGlmeVdpdGhUaW1lU3RyaW5nKGRhdGUsIHRpbWUpIHtcbiAgaWYgKGRhdGUgPT0gbnVsbCB8fCAhdGltZSkge1xuICAgIHJldHVybiBkYXRlO1xuICB9XG4gIHRpbWUgPSBwYXJzZURhdGUodGltZSwgJ0hIOm1tOnNzJyk7XG4gIHJldHVybiBtb2RpZnlUaW1lKGRhdGUsIHRpbWUuZ2V0SG91cnMoKSwgdGltZS5nZXRNaW51dGVzKCksIHRpbWUuZ2V0U2Vjb25kcygpKTtcbn07XG5cbnZhciBjbGVhclRpbWUgPSBleHBvcnRzLmNsZWFyVGltZSA9IGZ1bmN0aW9uIGNsZWFyVGltZShkYXRlKSB7XG4gIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xufTtcblxudmFyIGNsZWFyTWlsbGlzZWNvbmRzID0gZXhwb3J0cy5jbGVhck1pbGxpc2Vjb25kcyA9IGZ1bmN0aW9uIGNsZWFyTWlsbGlzZWNvbmRzKGRhdGUpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSwgZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCksIDApO1xufTtcblxudmFyIGxpbWl0VGltZVJhbmdlID0gZXhwb3J0cy5saW1pdFRpbWVSYW5nZSA9IGZ1bmN0aW9uIGxpbWl0VGltZVJhbmdlKGRhdGUsIHJhbmdlcykge1xuICB2YXIgZm9ybWF0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAnSEg6bW06c3MnO1xuXG4gIC8vIFRPRE86IHJlZmFjdG9yeSBhIG1vcmUgZWxlZ2FudCBzb2x1dGlvblxuICBpZiAocmFuZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGRhdGU7XG4gIHZhciBub3JtYWxpemVEYXRlID0gZnVuY3Rpb24gbm9ybWFsaXplRGF0ZShkYXRlKSB7XG4gICAgcmV0dXJuIF9kYXRlMi5kZWZhdWx0LnBhcnNlKF9kYXRlMi5kZWZhdWx0LmZvcm1hdChkYXRlLCBmb3JtYXQpLCBmb3JtYXQpO1xuICB9O1xuICB2YXIgbmRhdGUgPSBub3JtYWxpemVEYXRlKGRhdGUpO1xuICB2YXIgbnJhbmdlcyA9IHJhbmdlcy5tYXAoZnVuY3Rpb24gKHJhbmdlKSB7XG4gICAgcmV0dXJuIHJhbmdlLm1hcChub3JtYWxpemVEYXRlKTtcbiAgfSk7XG4gIGlmIChucmFuZ2VzLnNvbWUoZnVuY3Rpb24gKG5yYW5nZSkge1xuICAgIHJldHVybiBuZGF0ZSA+PSBucmFuZ2VbMF0gJiYgbmRhdGUgPD0gbnJhbmdlWzFdO1xuICB9KSkgcmV0dXJuIGRhdGU7XG5cbiAgdmFyIG1pbkRhdGUgPSBucmFuZ2VzWzBdWzBdO1xuICB2YXIgbWF4RGF0ZSA9IG5yYW5nZXNbMF1bMF07XG5cbiAgbnJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uIChucmFuZ2UpIHtcbiAgICBtaW5EYXRlID0gbmV3IERhdGUoTWF0aC5taW4obnJhbmdlWzBdLCBtaW5EYXRlKSk7XG4gICAgbWF4RGF0ZSA9IG5ldyBEYXRlKE1hdGgubWF4KG5yYW5nZVsxXSwgbWluRGF0ZSkpO1xuICB9KTtcblxuICB2YXIgcmV0ID0gbmRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IG1heERhdGU7XG4gIC8vIHByZXNlcnZlIFllYXIvTW9udGgvRGF0ZVxuICByZXR1cm4gbW9kaWZ5RGF0ZShyZXQsIGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG59O1xuXG52YXIgdGltZVdpdGhpblJhbmdlID0gZXhwb3J0cy50aW1lV2l0aGluUmFuZ2UgPSBmdW5jdGlvbiB0aW1lV2l0aGluUmFuZ2UoZGF0ZSwgc2VsZWN0YWJsZVJhbmdlLCBmb3JtYXQpIHtcbiAgdmFyIGxpbWl0ZWREYXRlID0gbGltaXRUaW1lUmFuZ2UoZGF0ZSwgc2VsZWN0YWJsZVJhbmdlLCBmb3JtYXQpO1xuICByZXR1cm4gbGltaXRlZERhdGUuZ2V0VGltZSgpID09PSBkYXRlLmdldFRpbWUoKTtcbn07XG5cbnZhciBjaGFuZ2VZZWFyTW9udGhBbmRDbGFtcERhdGUgPSBleHBvcnRzLmNoYW5nZVllYXJNb250aEFuZENsYW1wRGF0ZSA9IGZ1bmN0aW9uIGNoYW5nZVllYXJNb250aEFuZENsYW1wRGF0ZShkYXRlLCB5ZWFyLCBtb250aCkge1xuICAvLyBjbGFtcCBkYXRlIHRvIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBgeWVhcmAsIGBtb250aGBcbiAgLy8gZWc6ICgyMDEwLTEtMzEsIDIwMTAsIDIpID0+IDIwMTAtMi0yOFxuICB2YXIgbW9udGhEYXRlID0gTWF0aC5taW4oZGF0ZS5nZXREYXRlKCksIGdldERheUNvdW50T2ZNb250aCh5ZWFyLCBtb250aCkpO1xuICByZXR1cm4gbW9kaWZ5RGF0ZShkYXRlLCB5ZWFyLCBtb250aCwgbW9udGhEYXRlKTtcbn07XG5cbnZhciBwcmV2TW9udGggPSBleHBvcnRzLnByZXZNb250aCA9IGZ1bmN0aW9uIHByZXZNb250aChkYXRlKSB7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIHJldHVybiBtb250aCA9PT0gMCA/IGNoYW5nZVllYXJNb250aEFuZENsYW1wRGF0ZShkYXRlLCB5ZWFyIC0gMSwgMTEpIDogY2hhbmdlWWVhck1vbnRoQW5kQ2xhbXBEYXRlKGRhdGUsIHllYXIsIG1vbnRoIC0gMSk7XG59O1xuXG52YXIgbmV4dE1vbnRoID0gZXhwb3J0cy5uZXh0TW9udGggPSBmdW5jdGlvbiBuZXh0TW9udGgoZGF0ZSkge1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICByZXR1cm4gbW9udGggPT09IDExID8gY2hhbmdlWWVhck1vbnRoQW5kQ2xhbXBEYXRlKGRhdGUsIHllYXIgKyAxLCAwKSA6IGNoYW5nZVllYXJNb250aEFuZENsYW1wRGF0ZShkYXRlLCB5ZWFyLCBtb250aCArIDEpO1xufTtcblxudmFyIHByZXZZZWFyID0gZXhwb3J0cy5wcmV2WWVhciA9IGZ1bmN0aW9uIHByZXZZZWFyKGRhdGUpIHtcbiAgdmFyIGFtb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMTtcblxuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICByZXR1cm4gY2hhbmdlWWVhck1vbnRoQW5kQ2xhbXBEYXRlKGRhdGUsIHllYXIgLSBhbW91bnQsIG1vbnRoKTtcbn07XG5cbnZhciBuZXh0WWVhciA9IGV4cG9ydHMubmV4dFllYXIgPSBmdW5jdGlvbiBuZXh0WWVhcihkYXRlKSB7XG4gIHZhciBhbW91bnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDE7XG5cbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgcmV0dXJuIGNoYW5nZVllYXJNb250aEFuZENsYW1wRGF0ZShkYXRlLCB5ZWFyICsgYW1vdW50LCBtb250aCk7XG59O1xuXG52YXIgZXh0cmFjdERhdGVGb3JtYXQgPSBleHBvcnRzLmV4dHJhY3REYXRlRm9ybWF0ID0gZnVuY3Rpb24gZXh0cmFjdERhdGVGb3JtYXQoZm9ybWF0KSB7XG4gIHJldHVybiBmb3JtYXQucmVwbGFjZSgvXFxXP217MSwyfXxcXFc/WlovZywgJycpLnJlcGxhY2UoL1xcVz9oezEsMn18XFxXP3N7MSwzfXxcXFc/YS9naSwgJycpLnRyaW0oKTtcbn07XG5cbnZhciBleHRyYWN0VGltZUZvcm1hdCA9IGV4cG9ydHMuZXh0cmFjdFRpbWVGb3JtYXQgPSBmdW5jdGlvbiBleHRyYWN0VGltZUZvcm1hdChmb3JtYXQpIHtcbiAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC9cXFc/RHsxLDJ9fFxcVz9Eb3xcXFc/ZHsxLDR9fFxcVz9NezEsNH18XFxXP3l7Miw0fS9nLCAnJykudHJpbSgpO1xufTtcblxudmFyIHZhbGlkYXRlUmFuZ2VJbk9uZU1vbnRoID0gZXhwb3J0cy52YWxpZGF0ZVJhbmdlSW5PbmVNb250aCA9IGZ1bmN0aW9uIHZhbGlkYXRlUmFuZ2VJbk9uZU1vbnRoKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIHN0YXJ0LmdldE1vbnRoKCkgPT09IGVuZC5nZXRNb250aCgpICYmIHN0YXJ0LmdldEZ1bGxZZWFyKCkgPT09IGVuZC5nZXRGdWxsWWVhcigpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/date-util.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/date.js":
/*!***************************************************!*\
!*** ./node_modules/element-ui/lib/utils/date.js ***!
\***************************************************/
/***/ ((module, exports, __webpack_require__) => {
"use strict";
eval("var __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* Modified from https://github.com/taylorhakes/fecha\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Taylor Hakes\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/*eslint-disable*/\n// 把 YYYY-MM-DD 改成了 yyyy-MM-dd\n(function (main) {\n 'use strict';\n\n /**\n * Parse or format dates\n * @class fecha\n */\n\n var fecha = {};\n var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\n var twoDigits = '\\\\d\\\\d?';\n var threeDigits = '\\\\d{3}';\n var fourDigits = '\\\\d{4}';\n var word = '[^\\\\s]+';\n var literal = /\\[([^]*?)\\]/gm;\n var noop = function noop() {};\n\n function regexEscape(str) {\n return str.replace(/[|\\\\{()[^$+*?.-]/g, '\\\\$&');\n }\n\n function shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n }\n\n function monthUpdate(arrName) {\n return function (d, v, i18n) {\n var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase());\n if (~index) {\n d.month = index;\n }\n };\n }\n\n function pad(val, len) {\n val = String(val);\n len = len || 2;\n while (val.length < len) {\n val = '0' + val;\n }\n return val;\n }\n\n var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var monthNamesShort = shorten(monthNames, 3);\n var dayNamesShort = shorten(dayNames, 3);\n fecha.i18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: ['am', 'pm'],\n DoFn: function DoFn(D) {\n return D + ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D - D % 10 !== 10) * D % 10];\n }\n };\n\n var formatFlags = {\n D: function D(dateObj) {\n return dateObj.getDay();\n },\n DD: function DD(dateObj) {\n return pad(dateObj.getDay());\n },\n Do: function Do(dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function d(dateObj) {\n return dateObj.getDate();\n },\n dd: function dd(dateObj) {\n return pad(dateObj.getDate());\n },\n ddd: function ddd(dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function dddd(dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function M(dateObj) {\n return dateObj.getMonth() + 1;\n },\n MM: function MM(dateObj) {\n return pad(dateObj.getMonth() + 1);\n },\n MMM: function MMM(dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function MMMM(dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n yy: function yy(dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n yyyy: function yyyy(dateObj) {\n return pad(dateObj.getFullYear(), 4);\n },\n h: function h(dateObj) {\n return dateObj.getHours() % 12 || 12;\n },\n hh: function hh(dateObj) {\n return pad(dateObj.getHours() % 12 || 12);\n },\n H: function H(dateObj) {\n return dateObj.getHours();\n },\n HH: function HH(dateObj) {\n return pad(dateObj.getHours());\n },\n m: function m(dateObj) {\n return dateObj.getMinutes();\n },\n mm: function mm(dateObj) {\n return pad(dateObj.getMinutes());\n },\n s: function s(dateObj) {\n return dateObj.getSeconds();\n },\n ss: function ss(dateObj) {\n return pad(dateObj.getSeconds());\n },\n S: function S(dateObj) {\n return Math.round(dateObj.getMilliseconds() / 100);\n },\n SS: function SS(dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function SSS(dateObj) {\n return pad(dateObj.getMilliseconds(), 3);\n },\n a: function a(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function A(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();\n },\n ZZ: function ZZ(dateObj) {\n var o = dateObj.getTimezoneOffset();\n return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);\n }\n };\n\n var parseFlags = {\n d: [twoDigits, function (d, v) {\n d.day = v;\n }],\n Do: [twoDigits + word, function (d, v) {\n d.day = parseInt(v, 10);\n }],\n M: [twoDigits, function (d, v) {\n d.month = v - 1;\n }],\n yy: [twoDigits, function (d, v) {\n var da = new Date(),\n cent = +('' + da.getFullYear()).substr(0, 2);\n d.year = '' + (v > 68 ? cent - 1 : cent) + v;\n }],\n h: [twoDigits, function (d, v) {\n d.hour = v;\n }],\n m: [twoDigits, function (d, v) {\n d.minute = v;\n }],\n s: [twoDigits, function (d, v) {\n d.second = v;\n }],\n yyyy: [fourDigits, function (d, v) {\n d.year = v;\n }],\n S: ['\\\\d', function (d, v) {\n d.millisecond = v * 100;\n }],\n SS: ['\\\\d{2}', function (d, v) {\n d.millisecond = v * 10;\n }],\n SSS: [threeDigits, function (d, v) {\n d.millisecond = v;\n }],\n D: [twoDigits, noop],\n ddd: [word, noop],\n MMM: [word, monthUpdate('monthNamesShort')],\n MMMM: [word, monthUpdate('monthNames')],\n a: [word, function (d, v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n d.isPm = false;\n } else if (val === i18n.amPm[1]) {\n d.isPm = true;\n }\n }],\n ZZ: ['[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z', function (d, v) {\n var parts = (v + '').match(/([+-]|\\d\\d)/gi),\n minutes;\n\n if (parts) {\n minutes = +(parts[1] * 60) + parseInt(parts[2], 10);\n d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;\n }\n }]\n };\n parseFlags.dd = parseFlags.d;\n parseFlags.dddd = parseFlags.ddd;\n parseFlags.DD = parseFlags.D;\n parseFlags.mm = parseFlags.m;\n parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;\n parseFlags.MM = parseFlags.M;\n parseFlags.ss = parseFlags.s;\n parseFlags.A = parseFlags.a;\n\n // Some common format strings\n fecha.masks = {\n default: 'ddd MMM dd yyyy HH:mm:ss',\n shortDate: 'M/D/yy',\n mediumDate: 'MMM d, yyyy',\n longDate: 'MMMM d, yyyy',\n fullDate: 'dddd, MMMM d, yyyy',\n shortTime: 'HH:mm',\n mediumTime: 'HH:mm:ss',\n longTime: 'HH:mm:ss.SSS'\n };\n\n /***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n */\n fecha.format = function (dateObj, mask, i18nSettings) {\n var i18n = i18nSettings || fecha.i18n;\n\n if (typeof dateObj === 'number') {\n dateObj = new Date(dateObj);\n }\n\n if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {\n throw new Error('Invalid Date in fecha.format');\n }\n\n mask = fecha.masks[mask] || mask || fecha.masks['default'];\n\n var literals = [];\n\n // Make literals inactive by replacing them with ??\n mask = mask.replace(literal, function ($0, $1) {\n literals.push($1);\n return '@@@';\n });\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function () {\n return literals.shift();\n });\n };\n\n /**\n * Parse a date string into an object, changes - into /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @returns {Date|boolean}\n */\n fecha.parse = function (dateStr, format, i18nSettings) {\n var i18n = i18nSettings || fecha.i18n;\n\n if (typeof format !== 'string') {\n throw new Error('Invalid format in fecha.parse');\n }\n\n format = fecha.masks[format] || format;\n\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n\n var dateInfo = {};\n var parseInfo = [];\n var literals = [];\n format = format.replace(literal, function ($0, $1) {\n literals.push($1);\n return '@@@';\n });\n var newFormat = regexEscape(format).replace(token, function ($0) {\n if (parseFlags[$0]) {\n var info = parseFlags[$0];\n parseInfo.push(info[1]);\n return '(' + info[0] + ')';\n }\n\n return $0;\n });\n newFormat = newFormat.replace(/@@@/g, function () {\n return literals.shift();\n });\n var matches = dateStr.match(new RegExp(newFormat, 'i'));\n if (!matches) {\n return null;\n }\n\n for (var i = 1; i < matches.length; i++) {\n parseInfo[i - 1](dateInfo, matches[i], i18n);\n }\n\n var today = new Date();\n if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n } else if (dateInfo.isPm === false && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n\n var date;\n if (dateInfo.timezoneOffset != null) {\n dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;\n date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));\n } else {\n date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);\n }\n return date;\n };\n\n /* istanbul ignore next */\n if ( true && module.exports) {\n module.exports = fecha;\n } else if (true) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return fecha;\n }).call(exports, __webpack_require__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(undefined);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvZGF0ZS5qcyIsIm1hcHBpbmdzIjoiQUFBQSxrQ0FBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsSUFBSSxHQUFHLElBQUksYUFBYSxJQUFJO0FBQzdDO0FBQ0EseUJBQXlCLEVBQUU7QUFDM0Isd0JBQXdCLEVBQUU7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkJBQTZCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQSxzQ0FBc0MsU0FBUztBQUMvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLGNBQWMsRUFBRTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxhQUFhO0FBQzFCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLG9CQUFvQjtBQUN4QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxLQUE2QjtBQUNuQztBQUNBLElBQUksU0FBUyxJQUEwQztBQUN2RCxJQUFJLG1DQUFPO0FBQ1g7QUFDQSxLQUFLO0FBQUEsa0dBQUM7QUFDTixJQUFJLEtBQUssRUFFTjtBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvZGF0ZS5qcz9iYzA0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyogTW9kaWZpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdGF5bG9yaGFrZXMvZmVjaGFcbiAqXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgVGF5bG9yIEhha2VzXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqICAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqICAgICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuLyplc2xpbnQtZGlzYWJsZSovXG4vLyDmioogWVlZWS1NTS1ERCDmlLnmiJDkuoYgeXl5eS1NTS1kZFxuKGZ1bmN0aW9uIChtYWluKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvKipcbiAgICogUGFyc2Ugb3IgZm9ybWF0IGRhdGVzXG4gICAqIEBjbGFzcyBmZWNoYVxuICAgKi9cblxuICB2YXIgZmVjaGEgPSB7fTtcbiAgdmFyIHRva2VuID0gL2R7MSw0fXxNezEsNH18eXkoPzp5eSk/fFN7MSwzfXxEb3xaWnwoW0hoTXNEbV0pXFwxP3xbYUFdfFwiW15cIl0qXCJ8J1teJ10qJy9nO1xuICB2YXIgdHdvRGlnaXRzID0gJ1xcXFxkXFxcXGQ/JztcbiAgdmFyIHRocmVlRGlnaXRzID0gJ1xcXFxkezN9JztcbiAgdmFyIGZvdXJEaWdpdHMgPSAnXFxcXGR7NH0nO1xuICB2YXIgd29yZCA9ICdbXlxcXFxzXSsnO1xuICB2YXIgbGl0ZXJhbCA9IC9cXFsoW15dKj8pXFxdL2dtO1xuICB2YXIgbm9vcCA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuICBmdW5jdGlvbiByZWdleEVzY2FwZShzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1t8XFxcXHsoKVteJCsqPy4tXS9nLCAnXFxcXCQmJyk7XG4gIH1cblxuICBmdW5jdGlvbiBzaG9ydGVuKGFyciwgc0xlbikge1xuICAgIHZhciBuZXdBcnIgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYXJyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBuZXdBcnIucHVzaChhcnJbaV0uc3Vic3RyKDAsIHNMZW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0FycjtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vbnRoVXBkYXRlKGFyck5hbWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIHYsIGkxOG4pIHtcbiAgICAgIHZhciBpbmRleCA9IGkxOG5bYXJyTmFtZV0uaW5kZXhPZih2LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdi5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKSk7XG4gICAgICBpZiAofmluZGV4KSB7XG4gICAgICAgIGQubW9udGggPSBpbmRleDtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGFkKHZhbCwgbGVuKSB7XG4gICAgdmFsID0gU3RyaW5nKHZhbCk7XG4gICAgbGVuID0gbGVuIHx8IDI7XG4gICAgd2hpbGUgKHZhbC5sZW5ndGggPCBsZW4pIHtcbiAgICAgIHZhbCA9ICcwJyArIHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHZhciBkYXlOYW1lcyA9IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXTtcbiAgdmFyIG1vbnRoTmFtZXMgPSBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXTtcbiAgdmFyIG1vbnRoTmFtZXNTaG9ydCA9IHNob3J0ZW4obW9udGhOYW1lcywgMyk7XG4gIHZhciBkYXlOYW1lc1Nob3J0ID0gc2hvcnRlbihkYXlOYW1lcywgMyk7XG4gIGZlY2hhLmkxOG4gPSB7XG4gICAgZGF5TmFtZXNTaG9ydDogZGF5TmFtZXNTaG9ydCxcbiAgICBkYXlOYW1lczogZGF5TmFtZXMsXG4gICAgbW9udGhOYW1lc1Nob3J0OiBtb250aE5hbWVzU2hvcnQsXG4gICAgbW9udGhOYW1lczogbW9udGhOYW1lcyxcbiAgICBhbVBtOiBbJ2FtJywgJ3BtJ10sXG4gICAgRG9GbjogZnVuY3Rpb24gRG9GbihEKSB7XG4gICAgICByZXR1cm4gRCArIFsndGgnLCAnc3QnLCAnbmQnLCAncmQnXVtEICUgMTAgPiAzID8gMCA6IChEIC0gRCAlIDEwICE9PSAxMCkgKiBEICUgMTBdO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZm9ybWF0RmxhZ3MgPSB7XG4gICAgRDogZnVuY3Rpb24gRChkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gZGF0ZU9iai5nZXREYXkoKTtcbiAgICB9LFxuICAgIEREOiBmdW5jdGlvbiBERChkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gcGFkKGRhdGVPYmouZ2V0RGF5KCkpO1xuICAgIH0sXG4gICAgRG86IGZ1bmN0aW9uIERvKGRhdGVPYmosIGkxOG4pIHtcbiAgICAgIHJldHVybiBpMThuLkRvRm4oZGF0ZU9iai5nZXREYXRlKCkpO1xuICAgIH0sXG4gICAgZDogZnVuY3Rpb24gZChkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gZGF0ZU9iai5nZXREYXRlKCk7XG4gICAgfSxcbiAgICBkZDogZnVuY3Rpb24gZGQoZGF0ZU9iaikge1xuICAgICAgcmV0dXJuIHBhZChkYXRlT2JqLmdldERhdGUoKSk7XG4gICAgfSxcbiAgICBkZGQ6IGZ1bmN0aW9uIGRkZChkYXRlT2JqLCBpMThuKSB7XG4gICAgICByZXR1cm4gaTE4bi5kYXlOYW1lc1Nob3J0W2RhdGVPYmouZ2V0RGF5KCldO1xuICAgIH0sXG4gICAgZGRkZDogZnVuY3Rpb24gZGRkZChkYXRlT2JqLCBpMThuKSB7XG4gICAgICByZXR1cm4gaTE4bi5kYXlOYW1lc1tkYXRlT2JqLmdldERheSgpXTtcbiAgICB9LFxuICAgIE06IGZ1bmN0aW9uIE0oZGF0ZU9iaikge1xuICAgICAgcmV0dXJuIGRhdGVPYmouZ2V0TW9udGgoKSArIDE7XG4gICAgfSxcbiAgICBNTTogZnVuY3Rpb24gTU0oZGF0ZU9iaikge1xuICAgICAgcmV0dXJuIHBhZChkYXRlT2JqLmdldE1vbnRoKCkgKyAxKTtcbiAgICB9LFxuICAgIE1NTTogZnVuY3Rpb24gTU1NKGRhdGVPYmosIGkxOG4pIHtcbiAgICAgIHJldHVybiBpMThuLm1vbnRoTmFtZXNTaG9ydFtkYXRlT2JqLmdldE1vbnRoKCldO1xuICAgIH0sXG4gICAgTU1NTTogZnVuY3Rpb24gTU1NTShkYXRlT2JqLCBpMThuKSB7XG4gICAgICByZXR1cm4gaTE4bi5tb250aE5hbWVzW2RhdGVPYmouZ2V0TW9udGgoKV07XG4gICAgfSxcbiAgICB5eTogZnVuY3Rpb24geXkoZGF0ZU9iaikge1xuICAgICAgcmV0dXJuIHBhZChTdHJpbmcoZGF0ZU9iai5nZXRGdWxsWWVhcigpKSwgNCkuc3Vic3RyKDIpO1xuICAgIH0sXG4gICAgeXl5eTogZnVuY3Rpb24geXl5eShkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gcGFkKGRhdGVPYmouZ2V0RnVsbFllYXIoKSwgNCk7XG4gICAgfSxcbiAgICBoOiBmdW5jdGlvbiBoKGRhdGVPYmopIHtcbiAgICAgIHJldHVybiBkYXRlT2JqLmdldEhvdXJzKCkgJSAxMiB8fCAxMjtcbiAgICB9LFxuICAgIGhoOiBmdW5jdGlvbiBoaChkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gcGFkKGRhdGVPYmouZ2V0SG91cnMoKSAlIDEyIHx8IDEyKTtcbiAgICB9LFxuICAgIEg6IGZ1bmN0aW9uIEgoZGF0ZU9iaikge1xuICAgICAgcmV0dXJuIGRhdGVPYmouZ2V0SG91cnMoKTtcbiAgICB9LFxuICAgIEhIOiBmdW5jdGlvbiBISChkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gcGFkKGRhdGVPYmouZ2V0SG91cnMoKSk7XG4gICAgfSxcbiAgICBtOiBmdW5jdGlvbiBtKGRhdGVPYmopIHtcbiAgICAgIHJldHVybiBkYXRlT2JqLmdldE1pbnV0ZXMoKTtcbiAgICB9LFxuICAgIG1tOiBmdW5jdGlvbiBtbShkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gcGFkKGRhdGVPYmouZ2V0TWludXRlcygpKTtcbiAgICB9LFxuICAgIHM6IGZ1bmN0aW9uIHMoZGF0ZU9iaikge1xuICAgICAgcmV0dXJuIGRhdGVPYmouZ2V0U2Vjb25kcygpO1xuICAgIH0sXG4gICAgc3M6IGZ1bmN0aW9uIHNzKGRhdGVPYmopIHtcbiAgICAgIHJldHVybiBwYWQoZGF0ZU9iai5nZXRTZWNvbmRzKCkpO1xuICAgIH0sXG4gICAgUzogZnVuY3Rpb24gUyhkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChkYXRlT2JqLmdldE1pbGxpc2Vjb25kcygpIC8gMTAwKTtcbiAgICB9LFxuICAgIFNTOiBmdW5jdGlvbiBTUyhkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gcGFkKE1hdGgucm91bmQoZGF0ZU9iai5nZXRNaWxsaXNlY29uZHMoKSAvIDEwKSwgMik7XG4gICAgfSxcbiAgICBTU1M6IGZ1bmN0aW9uIFNTUyhkYXRlT2JqKSB7XG4gICAgICByZXR1cm4gcGFkKGRhdGVPYmouZ2V0TWlsbGlzZWNvbmRzKCksIDMpO1xuICAgIH0sXG4gICAgYTogZnVuY3Rpb24gYShkYXRlT2JqLCBpMThuKSB7XG4gICAgICByZXR1cm4gZGF0ZU9iai5nZXRIb3VycygpIDwgMTIgPyBpMThuLmFtUG1bMF0gOiBpMThuLmFtUG1bMV07XG4gICAgfSxcbiAgICBBOiBmdW5jdGlvbiBBKGRhdGVPYmosIGkxOG4pIHtcbiAgICAgIHJldHVybiBkYXRlT2JqLmdldEhvdXJzKCkgPCAxMiA/IGkxOG4uYW1QbVswXS50b1VwcGVyQ2FzZSgpIDogaTE4bi5hbVBtWzFdLnRvVXBwZXJDYXNlKCk7XG4gICAgfSxcbiAgICBaWjogZnVuY3Rpb24gWlooZGF0ZU9iaikge1xuICAgICAgdmFyIG8gPSBkYXRlT2JqLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICByZXR1cm4gKG8gPiAwID8gJy0nIDogJysnKSArIHBhZChNYXRoLmZsb29yKE1hdGguYWJzKG8pIC8gNjApICogMTAwICsgTWF0aC5hYnMobykgJSA2MCwgNCk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBwYXJzZUZsYWdzID0ge1xuICAgIGQ6IFt0d29EaWdpdHMsIGZ1bmN0aW9uIChkLCB2KSB7XG4gICAgICBkLmRheSA9IHY7XG4gICAgfV0sXG4gICAgRG86IFt0d29EaWdpdHMgKyB3b3JkLCBmdW5jdGlvbiAoZCwgdikge1xuICAgICAgZC5kYXkgPSBwYXJzZUludCh2LCAxMCk7XG4gICAgfV0sXG4gICAgTTogW3R3b0RpZ2l0cywgZnVuY3Rpb24gKGQsIHYpIHtcbiAgICAgIGQubW9udGggPSB2IC0gMTtcbiAgICB9XSxcbiAgICB5eTogW3R3b0RpZ2l0cywgZnVuY3Rpb24gKGQsIHYpIHtcbiAgICAgIHZhciBkYSA9IG5ldyBEYXRlKCksXG4gICAgICAgICAgY2VudCA9ICsoJycgKyBkYS5nZXRGdWxsWWVhcigpKS5zdWJzdHIoMCwgMik7XG4gICAgICBkLnllYXIgPSAnJyArICh2ID4gNjggPyBjZW50IC0gMSA6IGNlbnQpICsgdjtcbiAgICB9XSxcbiAgICBoOiBbdHdvRGlnaXRzLCBmdW5jdGlvbiAoZCwgdikge1xuICAgICAgZC5ob3VyID0gdjtcbiAgICB9XSxcbiAgICBtOiBbdHdvRGlnaXRzLCBmdW5jdGlvbiAoZCwgdikge1xuICAgICAgZC5taW51dGUgPSB2O1xuICAgIH1dLFxuICAgIHM6IFt0d29EaWdpdHMsIGZ1bmN0aW9uIChkLCB2KSB7XG4gICAgICBkLnNlY29uZCA9IHY7XG4gICAgfV0sXG4gICAgeXl5eTogW2ZvdXJEaWdpdHMsIGZ1bmN0aW9uIChkLCB2KSB7XG4gICAgICBkLnllYXIgPSB2O1xuICAgIH1dLFxuICAgIFM6IFsnXFxcXGQnLCBmdW5jdGlvbiAoZCwgdikge1xuICAgICAgZC5taWxsaXNlY29uZCA9IHYgKiAxMDA7XG4gICAgfV0sXG4gICAgU1M6IFsnXFxcXGR7Mn0nLCBmdW5jdGlvbiAoZCwgdikge1xuICAgICAgZC5taWxsaXNlY29uZCA9IHYgKiAxMDtcbiAgICB9XSxcbiAgICBTU1M6IFt0aHJlZURpZ2l0cywgZnVuY3Rpb24gKGQsIHYpIHtcbiAgICAgIGQubWlsbGlzZWNvbmQgPSB2O1xuICAgIH1dLFxuICAgIEQ6IFt0d29EaWdpdHMsIG5vb3BdLFxuICAgIGRkZDogW3dvcmQsIG5vb3BdLFxuICAgIE1NTTogW3dvcmQsIG1vbnRoVXBkYXRlKCdtb250aE5hbWVzU2hvcnQnKV0sXG4gICAgTU1NTTogW3dvcmQsIG1vbnRoVXBkYXRlKCdtb250aE5hbWVzJyldLFxuICAgIGE6IFt3b3JkLCBmdW5jdGlvbiAoZCwgdiwgaTE4bikge1xuICAgICAgdmFyIHZhbCA9IHYudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICh2YWwgPT09IGkxOG4uYW1QbVswXSkge1xuICAgICAgICBkLmlzUG0gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsID09PSBpMThuLmFtUG1bMV0pIHtcbiAgICAgICAgZC5pc1BtID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XSxcbiAgICBaWjogWydbXlxcXFxzXSo/W1xcXFwrXFxcXC1dXFxcXGRcXFxcZDo/XFxcXGRcXFxcZHxbXlxcXFxzXSo/WicsIGZ1bmN0aW9uIChkLCB2KSB7XG4gICAgICB2YXIgcGFydHMgPSAodiArICcnKS5tYXRjaCgvKFsrLV18XFxkXFxkKS9naSksXG4gICAgICAgICAgbWludXRlcztcblxuICAgICAgaWYgKHBhcnRzKSB7XG4gICAgICAgIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgcGFyc2VJbnQocGFydHNbMl0sIDEwKTtcbiAgICAgICAgZC50aW1lem9uZU9mZnNldCA9IHBhcnRzWzBdID09PSAnKycgPyBtaW51dGVzIDogLW1pbnV0ZXM7XG4gICAgICB9XG4gICAgfV1cbiAgfTtcbiAgcGFyc2VGbGFncy5kZCA9IHBhcnNlRmxhZ3MuZDtcbiAgcGFyc2VGbGFncy5kZGRkID0gcGFyc2VGbGFncy5kZGQ7XG4gIHBhcnNlRmxhZ3MuREQgPSBwYXJzZUZsYWdzLkQ7XG4gIHBhcnNlRmxhZ3MubW0gPSBwYXJzZUZsYWdzLm07XG4gIHBhcnNlRmxhZ3MuaGggPSBwYXJzZUZsYWdzLkggPSBwYXJzZUZsYWdzLkhIID0gcGFyc2VGbGFncy5oO1xuICBwYXJzZUZsYWdzLk1NID0gcGFyc2VGbGFncy5NO1xuICBwYXJzZUZsYWdzLnNzID0gcGFyc2VGbGFncy5zO1xuICBwYXJzZUZsYWdzLkEgPSBwYXJzZUZsYWdzLmE7XG5cbiAgLy8gU29tZSBjb21tb24gZm9ybWF0IHN0cmluZ3NcbiAgZmVjaGEubWFza3MgPSB7XG4gICAgZGVmYXVsdDogJ2RkZCBNTU0gZGQgeXl5eSBISDptbTpzcycsXG4gICAgc2hvcnREYXRlOiAnTS9EL3l5JyxcbiAgICBtZWRpdW1EYXRlOiAnTU1NIGQsIHl5eXknLFxuICAgIGxvbmdEYXRlOiAnTU1NTSBkLCB5eXl5JyxcbiAgICBmdWxsRGF0ZTogJ2RkZGQsIE1NTU0gZCwgeXl5eScsXG4gICAgc2hvcnRUaW1lOiAnSEg6bW0nLFxuICAgIG1lZGl1bVRpbWU6ICdISDptbTpzcycsXG4gICAgbG9uZ1RpbWU6ICdISDptbTpzcy5TU1MnXG4gIH07XG5cbiAgLyoqKlxuICAgKiBGb3JtYXQgYSBkYXRlXG4gICAqIEBtZXRob2QgZm9ybWF0XG4gICAqIEBwYXJhbSB7RGF0ZXxudW1iZXJ9IGRhdGVPYmpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hc2sgRm9ybWF0IG9mIHRoZSBkYXRlLCBpLmUuICdtbS1kZC15eScgb3IgJ3Nob3J0RGF0ZSdcbiAgICovXG4gIGZlY2hhLmZvcm1hdCA9IGZ1bmN0aW9uIChkYXRlT2JqLCBtYXNrLCBpMThuU2V0dGluZ3MpIHtcbiAgICB2YXIgaTE4biA9IGkxOG5TZXR0aW5ncyB8fCBmZWNoYS5pMThuO1xuXG4gICAgaWYgKHR5cGVvZiBkYXRlT2JqID09PSAnbnVtYmVyJykge1xuICAgICAgZGF0ZU9iaiA9IG5ldyBEYXRlKGRhdGVPYmopO1xuICAgIH1cblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZGF0ZU9iaikgIT09ICdbb2JqZWN0IERhdGVdJyB8fCBpc05hTihkYXRlT2JqLmdldFRpbWUoKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBEYXRlIGluIGZlY2hhLmZvcm1hdCcpO1xuICAgIH1cblxuICAgIG1hc2sgPSBmZWNoYS5tYXNrc1ttYXNrXSB8fCBtYXNrIHx8IGZlY2hhLm1hc2tzWydkZWZhdWx0J107XG5cbiAgICB2YXIgbGl0ZXJhbHMgPSBbXTtcblxuICAgIC8vIE1ha2UgbGl0ZXJhbHMgaW5hY3RpdmUgYnkgcmVwbGFjaW5nIHRoZW0gd2l0aCA/P1xuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UobGl0ZXJhbCwgZnVuY3Rpb24gKCQwLCAkMSkge1xuICAgICAgbGl0ZXJhbHMucHVzaCgkMSk7XG4gICAgICByZXR1cm4gJ0BAQCc7XG4gICAgfSk7XG4gICAgLy8gQXBwbHkgZm9ybWF0dGluZyBydWxlc1xuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UodG9rZW4sIGZ1bmN0aW9uICgkMCkge1xuICAgICAgcmV0dXJuICQwIGluIGZvcm1hdEZsYWdzID8gZm9ybWF0RmxhZ3NbJDBdKGRhdGVPYmosIGkxOG4pIDogJDAuc2xpY2UoMSwgJDAubGVuZ3RoIC0gMSk7XG4gICAgfSk7XG4gICAgLy8gSW5saW5lIGxpdGVyYWwgdmFsdWVzIGJhY2sgaW50byB0aGUgZm9ybWF0dGVkIHZhbHVlXG4gICAgcmV0dXJuIG1hc2sucmVwbGFjZSgvQEBAL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBsaXRlcmFscy5zaGlmdCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQYXJzZSBhIGRhdGUgc3RyaW5nIGludG8gYW4gb2JqZWN0LCBjaGFuZ2VzIC0gaW50byAvXG4gICAqIEBtZXRob2QgcGFyc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVTdHIgRGF0ZSBzdHJpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCBEYXRlIHBhcnNlIGZvcm1hdFxuICAgKiBAcmV0dXJucyB7RGF0ZXxib29sZWFufVxuICAgKi9cbiAgZmVjaGEucGFyc2UgPSBmdW5jdGlvbiAoZGF0ZVN0ciwgZm9ybWF0LCBpMThuU2V0dGluZ3MpIHtcbiAgICB2YXIgaTE4biA9IGkxOG5TZXR0aW5ncyB8fCBmZWNoYS5pMThuO1xuXG4gICAgaWYgKHR5cGVvZiBmb3JtYXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZm9ybWF0IGluIGZlY2hhLnBhcnNlJyk7XG4gICAgfVxuXG4gICAgZm9ybWF0ID0gZmVjaGEubWFza3NbZm9ybWF0XSB8fCBmb3JtYXQ7XG5cbiAgICAvLyBBdm9pZCByZWd1bGFyIGV4cHJlc3Npb24gZGVuaWFsIG9mIHNlcnZpY2UsIGZhaWwgZWFybHkgZm9yIHJlYWxseSBsb25nIHN0cmluZ3NcbiAgICAvLyBodHRwczovL3d3dy5vd2FzcC5vcmcvaW5kZXgucGhwL1JlZ3VsYXJfZXhwcmVzc2lvbl9EZW5pYWxfb2ZfU2VydmljZV8tX1JlRG9TXG4gICAgaWYgKGRhdGVTdHIubGVuZ3RoID4gMTAwMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGRhdGVJbmZvID0ge307XG4gICAgdmFyIHBhcnNlSW5mbyA9IFtdO1xuICAgIHZhciBsaXRlcmFscyA9IFtdO1xuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKGxpdGVyYWwsIGZ1bmN0aW9uICgkMCwgJDEpIHtcbiAgICAgIGxpdGVyYWxzLnB1c2goJDEpO1xuICAgICAgcmV0dXJuICdAQEAnO1xuICAgIH0pO1xuICAgIHZhciBuZXdGb3JtYXQgPSByZWdleEVzY2FwZShmb3JtYXQpLnJlcGxhY2UodG9rZW4sIGZ1bmN0aW9uICgkMCkge1xuICAgICAgaWYgKHBhcnNlRmxhZ3NbJDBdKSB7XG4gICAgICAgIHZhciBpbmZvID0gcGFyc2VGbGFnc1skMF07XG4gICAgICAgIHBhcnNlSW5mby5wdXNoKGluZm9bMV0pO1xuICAgICAgICByZXR1cm4gJygnICsgaW5mb1swXSArICcpJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICQwO1xuICAgIH0pO1xuICAgIG5ld0Zvcm1hdCA9IG5ld0Zvcm1hdC5yZXBsYWNlKC9AQEAvZywgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGxpdGVyYWxzLnNoaWZ0KCk7XG4gICAgfSk7XG4gICAgdmFyIG1hdGNoZXMgPSBkYXRlU3RyLm1hdGNoKG5ldyBSZWdFeHAobmV3Rm9ybWF0LCAnaScpKTtcbiAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbWF0Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgICAgcGFyc2VJbmZvW2kgLSAxXShkYXRlSW5mbywgbWF0Y2hlc1tpXSwgaTE4bik7XG4gICAgfVxuXG4gICAgdmFyIHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBpZiAoZGF0ZUluZm8uaXNQbSA9PT0gdHJ1ZSAmJiBkYXRlSW5mby5ob3VyICE9IG51bGwgJiYgK2RhdGVJbmZvLmhvdXIgIT09IDEyKSB7XG4gICAgICBkYXRlSW5mby5ob3VyID0gK2RhdGVJbmZvLmhvdXIgKyAxMjtcbiAgICB9IGVsc2UgaWYgKGRhdGVJbmZvLmlzUG0gPT09IGZhbHNlICYmICtkYXRlSW5mby5ob3VyID09PSAxMikge1xuICAgICAgZGF0ZUluZm8uaG91ciA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGRhdGU7XG4gICAgaWYgKGRhdGVJbmZvLnRpbWV6b25lT2Zmc2V0ICE9IG51bGwpIHtcbiAgICAgIGRhdGVJbmZvLm1pbnV0ZSA9ICsoZGF0ZUluZm8ubWludXRlIHx8IDApIC0gK2RhdGVJbmZvLnRpbWV6b25lT2Zmc2V0O1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKGRhdGVJbmZvLnllYXIgfHwgdG9kYXkuZ2V0RnVsbFllYXIoKSwgZGF0ZUluZm8ubW9udGggfHwgMCwgZGF0ZUluZm8uZGF5IHx8IDEsIGRhdGVJbmZvLmhvdXIgfHwgMCwgZGF0ZUluZm8ubWludXRlIHx8IDAsIGRhdGVJbmZvLnNlY29uZCB8fCAwLCBkYXRlSW5mby5taWxsaXNlY29uZCB8fCAwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlSW5mby55ZWFyIHx8IHRvZGF5LmdldEZ1bGxZZWFyKCksIGRhdGVJbmZvLm1vbnRoIHx8IDAsIGRhdGVJbmZvLmRheSB8fCAxLCBkYXRlSW5mby5ob3VyIHx8IDAsIGRhdGVJbmZvLm1pbnV0ZSB8fCAwLCBkYXRlSW5mby5zZWNvbmQgfHwgMCwgZGF0ZUluZm8ubWlsbGlzZWNvbmQgfHwgMCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmVjaGE7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgZGVmaW5lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmZWNoYTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBtYWluLmZlY2hhID0gZmVjaGE7XG4gIH1cbn0pKHVuZGVmaW5lZCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/date.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/dom.js":
/*!**************************************************!*\
!*** ./node_modules/element-ui/lib/utils/dom.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.isInContainer = exports.getScrollContainer = exports.isScroll = exports.getStyle = exports.once = exports.off = exports.on = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /* istanbul ignore next */\n\nexports.hasClass = hasClass;\nexports.addClass = addClass;\nexports.removeClass = removeClass;\nexports.setStyle = setStyle;\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isServer = _vue2.default.prototype.$isServer;\nvar SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g;\nvar MOZ_HACK_REGEXP = /^moz([A-Z])/;\nvar ieVersion = isServer ? 0 : Number(document.documentMode);\n\n/* istanbul ignore next */\nvar trim = function trim(string) {\n return (string || '').replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, '');\n};\n/* istanbul ignore next */\nvar camelCase = function camelCase(name) {\n return name.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) {\n return offset ? letter.toUpperCase() : letter;\n }).replace(MOZ_HACK_REGEXP, 'Moz$1');\n};\n\n/* istanbul ignore next */\nvar on = exports.on = function () {\n if (!isServer && document.addEventListener) {\n return function (element, event, handler) {\n if (element && event && handler) {\n element.addEventListener(event, handler, false);\n }\n };\n } else {\n return function (element, event, handler) {\n if (element && event && handler) {\n element.attachEvent('on' + event, handler);\n }\n };\n }\n}();\n\n/* istanbul ignore next */\nvar off = exports.off = function () {\n if (!isServer && document.removeEventListener) {\n return function (element, event, handler) {\n if (element && event) {\n element.removeEventListener(event, handler, false);\n }\n };\n } else {\n return function (element, event, handler) {\n if (element && event) {\n element.detachEvent('on' + event, handler);\n }\n };\n }\n}();\n\n/* istanbul ignore next */\nvar once = exports.once = function once(el, event, fn) {\n var listener = function listener() {\n if (fn) {\n fn.apply(this, arguments);\n }\n off(el, event, listener);\n };\n on(el, event, listener);\n};\n\n/* istanbul ignore next */\nfunction hasClass(el, cls) {\n if (!el || !cls) return false;\n if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');\n if (el.classList) {\n return el.classList.contains(cls);\n } else {\n return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;\n }\n};\n\n/* istanbul ignore next */\nfunction addClass(el, cls) {\n if (!el) return;\n var curClass = el.className;\n var classes = (cls || '').split(' ');\n\n for (var i = 0, j = classes.length; i < j; i++) {\n var clsName = classes[i];\n if (!clsName) continue;\n\n if (el.classList) {\n el.classList.add(clsName);\n } else if (!hasClass(el, clsName)) {\n curClass += ' ' + clsName;\n }\n }\n if (!el.classList) {\n el.setAttribute('class', curClass);\n }\n};\n\n/* istanbul ignore next */\nfunction removeClass(el, cls) {\n if (!el || !cls) return;\n var classes = cls.split(' ');\n var curClass = ' ' + el.className + ' ';\n\n for (var i = 0, j = classes.length; i < j; i++) {\n var clsName = classes[i];\n if (!clsName) continue;\n\n if (el.classList) {\n el.classList.remove(clsName);\n } else if (hasClass(el, clsName)) {\n curClass = curClass.replace(' ' + clsName + ' ', ' ');\n }\n }\n if (!el.classList) {\n el.setAttribute('class', trim(curClass));\n }\n};\n\n/* istanbul ignore next */\nvar getStyle = exports.getStyle = ieVersion < 9 ? function (element, styleName) {\n if (isServer) return;\n if (!element || !styleName) return null;\n styleName = camelCase(styleName);\n if (styleName === 'float') {\n styleName = 'styleFloat';\n }\n try {\n switch (styleName) {\n case 'opacity':\n try {\n return element.filters.item('alpha').opacity / 100;\n } catch (e) {\n return 1.0;\n }\n default:\n return element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null;\n }\n } catch (e) {\n return element.style[styleName];\n }\n} : function (element, styleName) {\n if (isServer) return;\n if (!element || !styleName) return null;\n styleName = camelCase(styleName);\n if (styleName === 'float') {\n styleName = 'cssFloat';\n }\n try {\n var computed = document.defaultView.getComputedStyle(element, '');\n return element.style[styleName] || computed ? computed[styleName] : null;\n } catch (e) {\n return element.style[styleName];\n }\n};\n\n/* istanbul ignore next */\nfunction setStyle(element, styleName, value) {\n if (!element || !styleName) return;\n\n if ((typeof styleName === 'undefined' ? 'undefined' : _typeof(styleName)) === 'object') {\n for (var prop in styleName) {\n if (styleName.hasOwnProperty(prop)) {\n setStyle(element, prop, styleName[prop]);\n }\n }\n } else {\n styleName = camelCase(styleName);\n if (styleName === 'opacity' && ieVersion < 9) {\n element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';\n } else {\n element.style[styleName] = value;\n }\n }\n};\n\nvar isScroll = exports.isScroll = function isScroll(el, vertical) {\n if (isServer) return;\n\n var determinedDirection = vertical !== null && vertical !== undefined;\n var overflow = determinedDirection ? vertical ? getStyle(el, 'overflow-y') : getStyle(el, 'overflow-x') : getStyle(el, 'overflow');\n\n return overflow.match(/(scroll|auto|overlay)/);\n};\n\nvar getScrollContainer = exports.getScrollContainer = function getScrollContainer(el, vertical) {\n if (isServer) return;\n\n var parent = el;\n while (parent) {\n if ([window, document, document.documentElement].includes(parent)) {\n return window;\n }\n if (isScroll(parent, vertical)) {\n return parent;\n }\n parent = parent.parentNode;\n }\n\n return parent;\n};\n\nvar isInContainer = exports.isInContainer = function isInContainer(el, container) {\n if (isServer || !el || !container) return false;\n\n var elRect = el.getBoundingClientRect();\n var containerRect = void 0;\n\n if ([window, document, document.documentElement, null, undefined].includes(container)) {\n containerRect = {\n top: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n left: 0\n };\n } else {\n containerRect = container.getBoundingClientRect();\n }\n\n return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvZG9tLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQjtBQUNsQixxQkFBcUIsR0FBRywwQkFBMEIsR0FBRyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxZQUFZLEdBQUcsV0FBVyxHQUFHLFVBQVU7O0FBRWxJLHFHQUFxRyxxQkFBcUIsbUJBQW1CLGlJQUFpSTs7QUFFOVEsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixtQkFBbUI7QUFDbkIsZ0JBQWdCOztBQUVoQixXQUFXLG1CQUFPLENBQUMsK0NBQUs7O0FBRXhCOztBQUVBLHVDQUF1Qyx1Q0FBdUM7O0FBRTlFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxTQUFTLFVBQVU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSxVQUFVLFdBQVc7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSxXQUFXLFlBQVk7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0NBQXNDLE9BQU87QUFDN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0NBQXNDLE9BQU87QUFDN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxnQkFBZ0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLGdCQUFnQjtBQUMvQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEseUJBQXlCLDBCQUEwQjtBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQixxQkFBcUI7QUFDekM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvZG9tLmpzP2MzMmUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5pc0luQ29udGFpbmVyID0gZXhwb3J0cy5nZXRTY3JvbGxDb250YWluZXIgPSBleHBvcnRzLmlzU2Nyb2xsID0gZXhwb3J0cy5nZXRTdHlsZSA9IGV4cG9ydHMub25jZSA9IGV4cG9ydHMub2ZmID0gZXhwb3J0cy5vbiA9IHVuZGVmaW5lZDtcblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXG5leHBvcnRzLmhhc0NsYXNzID0gaGFzQ2xhc3M7XG5leHBvcnRzLmFkZENsYXNzID0gYWRkQ2xhc3M7XG5leHBvcnRzLnJlbW92ZUNsYXNzID0gcmVtb3ZlQ2xhc3M7XG5leHBvcnRzLnNldFN0eWxlID0gc2V0U3R5bGU7XG5cbnZhciBfdnVlID0gcmVxdWlyZSgndnVlJyk7XG5cbnZhciBfdnVlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Z1ZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBpc1NlcnZlciA9IF92dWUyLmRlZmF1bHQucHJvdG90eXBlLiRpc1NlcnZlcjtcbnZhciBTUEVDSUFMX0NIQVJTX1JFR0VYUCA9IC8oW1xcOlxcLVxcX10rKC4pKS9nO1xudmFyIE1PWl9IQUNLX1JFR0VYUCA9IC9ebW96KFtBLVpdKS87XG52YXIgaWVWZXJzaW9uID0gaXNTZXJ2ZXIgPyAwIDogTnVtYmVyKGRvY3VtZW50LmRvY3VtZW50TW9kZSk7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG52YXIgdHJpbSA9IGZ1bmN0aW9uIHRyaW0oc3RyaW5nKSB7XG4gIHJldHVybiAoc3RyaW5nIHx8ICcnKS5yZXBsYWNlKC9eW1xcc1xcdUZFRkZdK3xbXFxzXFx1RkVGRl0rJC9nLCAnJyk7XG59O1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnZhciBjYW1lbENhc2UgPSBmdW5jdGlvbiBjYW1lbENhc2UobmFtZSkge1xuICByZXR1cm4gbmFtZS5yZXBsYWNlKFNQRUNJQUxfQ0hBUlNfUkVHRVhQLCBmdW5jdGlvbiAoXywgc2VwYXJhdG9yLCBsZXR0ZXIsIG9mZnNldCkge1xuICAgIHJldHVybiBvZmZzZXQgPyBsZXR0ZXIudG9VcHBlckNhc2UoKSA6IGxldHRlcjtcbiAgfSkucmVwbGFjZShNT1pfSEFDS19SRUdFWFAsICdNb3okMScpO1xufTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnZhciBvbiA9IGV4cG9ydHMub24gPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghaXNTZXJ2ZXIgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIpIHtcbiAgICAgIGlmIChlbGVtZW50ICYmIGV2ZW50ICYmIGhhbmRsZXIpIHtcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgICBpZiAoZWxlbWVudCAmJiBldmVudCAmJiBoYW5kbGVyKSB7XG4gICAgICAgIGVsZW1lbnQuYXR0YWNoRXZlbnQoJ29uJyArIGV2ZW50LCBoYW5kbGVyKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KCk7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG52YXIgb2ZmID0gZXhwb3J0cy5vZmYgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghaXNTZXJ2ZXIgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIpIHtcbiAgICAgIGlmIChlbGVtZW50ICYmIGV2ZW50KSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCBldmVudCwgaGFuZGxlcikge1xuICAgICAgaWYgKGVsZW1lbnQgJiYgZXZlbnQpIHtcbiAgICAgICAgZWxlbWVudC5kZXRhY2hFdmVudCgnb24nICsgZXZlbnQsIGhhbmRsZXIpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn0oKTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnZhciBvbmNlID0gZXhwb3J0cy5vbmNlID0gZnVuY3Rpb24gb25jZShlbCwgZXZlbnQsIGZuKSB7XG4gIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uIGxpc3RlbmVyKCkge1xuICAgIGlmIChmbikge1xuICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gICAgb2ZmKGVsLCBldmVudCwgbGlzdGVuZXIpO1xuICB9O1xuICBvbihlbCwgZXZlbnQsIGxpc3RlbmVyKTtcbn07XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBoYXNDbGFzcyhlbCwgY2xzKSB7XG4gIGlmICghZWwgfHwgIWNscykgcmV0dXJuIGZhbHNlO1xuICBpZiAoY2xzLmluZGV4T2YoJyAnKSAhPT0gLTEpIHRocm93IG5ldyBFcnJvcignY2xhc3NOYW1lIHNob3VsZCBub3QgY29udGFpbiBzcGFjZS4nKTtcbiAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgIHJldHVybiBlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKCcgJyArIGVsLmNsYXNzTmFtZSArICcgJykuaW5kZXhPZignICcgKyBjbHMgKyAnICcpID4gLTE7XG4gIH1cbn07XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBhZGRDbGFzcyhlbCwgY2xzKSB7XG4gIGlmICghZWwpIHJldHVybjtcbiAgdmFyIGN1ckNsYXNzID0gZWwuY2xhc3NOYW1lO1xuICB2YXIgY2xhc3NlcyA9IChjbHMgfHwgJycpLnNwbGl0KCcgJyk7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGogPSBjbGFzc2VzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgIHZhciBjbHNOYW1lID0gY2xhc3Nlc1tpXTtcbiAgICBpZiAoIWNsc05hbWUpIGNvbnRpbnVlO1xuXG4gICAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZChjbHNOYW1lKTtcbiAgICB9IGVsc2UgaWYgKCFoYXNDbGFzcyhlbCwgY2xzTmFtZSkpIHtcbiAgICAgIGN1ckNsYXNzICs9ICcgJyArIGNsc05hbWU7XG4gICAgfVxuICB9XG4gIGlmICghZWwuY2xhc3NMaXN0KSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGN1ckNsYXNzKTtcbiAgfVxufTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsLCBjbHMpIHtcbiAgaWYgKCFlbCB8fCAhY2xzKSByZXR1cm47XG4gIHZhciBjbGFzc2VzID0gY2xzLnNwbGl0KCcgJyk7XG4gIHZhciBjdXJDbGFzcyA9ICcgJyArIGVsLmNsYXNzTmFtZSArICcgJztcblxuICBmb3IgKHZhciBpID0gMCwgaiA9IGNsYXNzZXMubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgdmFyIGNsc05hbWUgPSBjbGFzc2VzW2ldO1xuICAgIGlmICghY2xzTmFtZSkgY29udGludWU7XG5cbiAgICBpZiAoZWwuY2xhc3NMaXN0KSB7XG4gICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKGNsc05hbWUpO1xuICAgIH0gZWxzZSBpZiAoaGFzQ2xhc3MoZWwsIGNsc05hbWUpKSB7XG4gICAgICBjdXJDbGFzcyA9IGN1ckNsYXNzLnJlcGxhY2UoJyAnICsgY2xzTmFtZSArICcgJywgJyAnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFlbC5jbGFzc0xpc3QpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgdHJpbShjdXJDbGFzcykpO1xuICB9XG59O1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudmFyIGdldFN0eWxlID0gZXhwb3J0cy5nZXRTdHlsZSA9IGllVmVyc2lvbiA8IDkgPyBmdW5jdGlvbiAoZWxlbWVudCwgc3R5bGVOYW1lKSB7XG4gIGlmIChpc1NlcnZlcikgcmV0dXJuO1xuICBpZiAoIWVsZW1lbnQgfHwgIXN0eWxlTmFtZSkgcmV0dXJuIG51bGw7XG4gIHN0eWxlTmFtZSA9IGNhbWVsQ2FzZShzdHlsZU5hbWUpO1xuICBpZiAoc3R5bGVOYW1lID09PSAnZmxvYXQnKSB7XG4gICAgc3R5bGVOYW1lID0gJ3N0eWxlRmxvYXQnO1xuICB9XG4gIHRyeSB7XG4gICAgc3dpdGNoIChzdHlsZU5hbWUpIHtcbiAgICAgIGNhc2UgJ29wYWNpdHknOlxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBlbGVtZW50LmZpbHRlcnMuaXRlbSgnYWxwaGEnKS5vcGFjaXR5IC8gMTAwO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmV0dXJuIDEuMDtcbiAgICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuc3R5bGVbc3R5bGVOYW1lXSB8fCBlbGVtZW50LmN1cnJlbnRTdHlsZSA/IGVsZW1lbnQuY3VycmVudFN0eWxlW3N0eWxlTmFtZV0gOiBudWxsO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBlbGVtZW50LnN0eWxlW3N0eWxlTmFtZV07XG4gIH1cbn0gOiBmdW5jdGlvbiAoZWxlbWVudCwgc3R5bGVOYW1lKSB7XG4gIGlmIChpc1NlcnZlcikgcmV0dXJuO1xuICBpZiAoIWVsZW1lbnQgfHwgIXN0eWxlTmFtZSkgcmV0dXJuIG51bGw7XG4gIHN0eWxlTmFtZSA9IGNhbWVsQ2FzZShzdHlsZU5hbWUpO1xuICBpZiAoc3R5bGVOYW1lID09PSAnZmxvYXQnKSB7XG4gICAgc3R5bGVOYW1lID0gJ2Nzc0Zsb2F0JztcbiAgfVxuICB0cnkge1xuICAgIHZhciBjb21wdXRlZCA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgJycpO1xuICAgIHJldHVybiBlbGVtZW50LnN0eWxlW3N0eWxlTmFtZV0gfHwgY29tcHV0ZWQgPyBjb21wdXRlZFtzdHlsZU5hbWVdIDogbnVsbDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBlbGVtZW50LnN0eWxlW3N0eWxlTmFtZV07XG4gIH1cbn07XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBzZXRTdHlsZShlbGVtZW50LCBzdHlsZU5hbWUsIHZhbHVlKSB7XG4gIGlmICghZWxlbWVudCB8fCAhc3R5bGVOYW1lKSByZXR1cm47XG5cbiAgaWYgKCh0eXBlb2Ygc3R5bGVOYW1lID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihzdHlsZU5hbWUpKSA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKHZhciBwcm9wIGluIHN0eWxlTmFtZSkge1xuICAgICAgaWYgKHN0eWxlTmFtZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICBzZXRTdHlsZShlbGVtZW50LCBwcm9wLCBzdHlsZU5hbWVbcHJvcF0pO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzdHlsZU5hbWUgPSBjYW1lbENhc2Uoc3R5bGVOYW1lKTtcbiAgICBpZiAoc3R5bGVOYW1lID09PSAnb3BhY2l0eScgJiYgaWVWZXJzaW9uIDwgOSkge1xuICAgICAgZWxlbWVudC5zdHlsZS5maWx0ZXIgPSBpc05hTih2YWx1ZSkgPyAnJyA6ICdhbHBoYShvcGFjaXR5PScgKyB2YWx1ZSAqIDEwMCArICcpJztcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5zdHlsZVtzdHlsZU5hbWVdID0gdmFsdWU7XG4gICAgfVxuICB9XG59O1xuXG52YXIgaXNTY3JvbGwgPSBleHBvcnRzLmlzU2Nyb2xsID0gZnVuY3Rpb24gaXNTY3JvbGwoZWwsIHZlcnRpY2FsKSB7XG4gIGlmIChpc1NlcnZlcikgcmV0dXJuO1xuXG4gIHZhciBkZXRlcm1pbmVkRGlyZWN0aW9uID0gdmVydGljYWwgIT09IG51bGwgJiYgdmVydGljYWwgIT09IHVuZGVmaW5lZDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZXJtaW5lZERpcmVjdGlvbiA/IHZlcnRpY2FsID8gZ2V0U3R5bGUoZWwsICdvdmVyZmxvdy15JykgOiBnZXRTdHlsZShlbCwgJ292ZXJmbG93LXgnKSA6IGdldFN0eWxlKGVsLCAnb3ZlcmZsb3cnKTtcblxuICByZXR1cm4gb3ZlcmZsb3cubWF0Y2goLyhzY3JvbGx8YXV0b3xvdmVybGF5KS8pO1xufTtcblxudmFyIGdldFNjcm9sbENvbnRhaW5lciA9IGV4cG9ydHMuZ2V0U2Nyb2xsQ29udGFpbmVyID0gZnVuY3Rpb24gZ2V0U2Nyb2xsQ29udGFpbmVyKGVsLCB2ZXJ0aWNhbCkge1xuICBpZiAoaXNTZXJ2ZXIpIHJldHVybjtcblxuICB2YXIgcGFyZW50ID0gZWw7XG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBpZiAoW3dpbmRvdywgZG9jdW1lbnQsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudF0uaW5jbHVkZXMocGFyZW50KSkge1xuICAgICAgcmV0dXJuIHdpbmRvdztcbiAgICB9XG4gICAgaWYgKGlzU2Nyb2xsKHBhcmVudCwgdmVydGljYWwpKSB7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH1cbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTtcbiAgfVxuXG4gIHJldHVybiBwYXJlbnQ7XG59O1xuXG52YXIgaXNJbkNvbnRhaW5lciA9IGV4cG9ydHMuaXNJbkNvbnRhaW5lciA9IGZ1bmN0aW9uIGlzSW5Db250YWluZXIoZWwsIGNvbnRhaW5lcikge1xuICBpZiAoaXNTZXJ2ZXIgfHwgIWVsIHx8ICFjb250YWluZXIpIHJldHVybiBmYWxzZTtcblxuICB2YXIgZWxSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBjb250YWluZXJSZWN0ID0gdm9pZCAwO1xuXG4gIGlmIChbd2luZG93LCBkb2N1bWVudCwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBudWxsLCB1bmRlZmluZWRdLmluY2x1ZGVzKGNvbnRhaW5lcikpIHtcbiAgICBjb250YWluZXJSZWN0ID0ge1xuICAgICAgdG9wOiAwLFxuICAgICAgcmlnaHQ6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgYm90dG9tOiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICBsZWZ0OiAwXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB9XG5cbiAgcmV0dXJuIGVsUmVjdC50b3AgPCBjb250YWluZXJSZWN0LmJvdHRvbSAmJiBlbFJlY3QuYm90dG9tID4gY29udGFpbmVyUmVjdC50b3AgJiYgZWxSZWN0LnJpZ2h0ID4gY29udGFpbmVyUmVjdC5sZWZ0ICYmIGVsUmVjdC5sZWZ0IDwgY29udGFpbmVyUmVjdC5yaWdodDtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/dom.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/lodash.js":
/*!*****************************************************!*\
!*** ./node_modules/element-ui/lib/utils/lodash.js ***!
\*****************************************************/
/***/ ((module, exports, __webpack_require__) => {
"use strict";
eval("/* module decorator */ module = __webpack_require__.nmd(module);\nvar __WEBPACK_AMD_DEFINE_RESULT__;var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright JS Foundation and other contributors <https://js.foundation/>\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 *//*eslint-disable*/(function(){/** Used as a safe reference for `undefined` in pre-ES5 environments. */var undefined;/** Used as the semantic version number. */var VERSION='4.17.10';/** Used as the size to enable large array optimizations. */var LARGE_ARRAY_SIZE=200;/** Error message constants. */var CORE_ERROR_TEXT='Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',FUNC_ERROR_TEXT='Expected a function';/** Used to stand-in for `undefined` hash values. */var HASH_UNDEFINED='__lodash_hash_undefined__';/** Used as the maximum memoize cache size. */var MAX_MEMOIZE_SIZE=500;/** Used as the internal argument placeholder. */var PLACEHOLDER='__lodash_placeholder__';/** Used to compose bitmasks for cloning. */var CLONE_DEEP_FLAG=1,CLONE_FLAT_FLAG=2,CLONE_SYMBOLS_FLAG=4;/** Used to compose bitmasks for value comparisons. */var COMPARE_PARTIAL_FLAG=1,COMPARE_UNORDERED_FLAG=2;/** Used to compose bitmasks for function metadata. */var WRAP_BIND_FLAG=1,WRAP_BIND_KEY_FLAG=2,WRAP_CURRY_BOUND_FLAG=4,WRAP_CURRY_FLAG=8,WRAP_CURRY_RIGHT_FLAG=16,WRAP_PARTIAL_FLAG=32,WRAP_PARTIAL_RIGHT_FLAG=64,WRAP_ARY_FLAG=128,WRAP_REARG_FLAG=256,WRAP_FLIP_FLAG=512;/** Used as default options for `_.truncate`. */var DEFAULT_TRUNC_LENGTH=30,DEFAULT_TRUNC_OMISSION='...';/** Used to detect hot functions by number of calls within a span of milliseconds. */var HOT_COUNT=800,HOT_SPAN=16;/** Used to indicate the type of lazy iteratees. */var LAZY_FILTER_FLAG=1,LAZY_MAP_FLAG=2,LAZY_WHILE_FLAG=3;/** Used as references for various `Number` constants. */var INFINITY=1/0,MAX_SAFE_INTEGER=9007199254740991,MAX_INTEGER=1.7976931348623157e308,NAN=0/0;/** Used as references for the maximum length and index of an array. */var MAX_ARRAY_LENGTH=4294967295,MAX_ARRAY_INDEX=MAX_ARRAY_LENGTH-1,HALF_MAX_ARRAY_LENGTH=MAX_ARRAY_LENGTH>>>1;/** Used to associate wrap methods with their bit flags. */var wrapFlags=[['ary',WRAP_ARY_FLAG],['bind',WRAP_BIND_FLAG],['bindKey',WRAP_BIND_KEY_FLAG],['curry',WRAP_CURRY_FLAG],['curryRight',WRAP_CURRY_RIGHT_FLAG],['flip',WRAP_FLIP_FLAG],['partial',WRAP_PARTIAL_FLAG],['partialRight',WRAP_PARTIAL_RIGHT_FLAG],['rearg',WRAP_REARG_FLAG]];/** `Object#toString` result references. */var argsTag='[object Arguments]',arrayTag='[object Array]',asyncTag='[object AsyncFunction]',boolTag='[object Boolean]',dateTag='[object Date]',domExcTag='[object DOMException]',errorTag='[object Error]',funcTag='[object Function]',genTag='[object GeneratorFunction]',mapTag='[object Map]',numberTag='[object Number]',nullTag='[object Null]',objectTag='[object Object]',promiseTag='[object Promise]',proxyTag='[object Proxy]',regexpTag='[object RegExp]',setTag='[object Set]',stringTag='[object String]',symbolTag='[object Symbol]',undefinedTag='[object Undefined]',weakMapTag='[object WeakMap]',weakSetTag='[object WeakSet]';var arrayBufferTag='[object ArrayBuffer]',dataViewTag='[object DataView]',float32Tag='[object Float32Array]',float64Tag='[object Float64Array]',int8Tag='[object Int8Array]',int16Tag='[object Int16Array]',int32Tag='[object Int32Array]',uint8Tag='[object Uint8Array]',uint8ClampedTag='[object Uint8ClampedArray]',uint16Tag='[object Uint16Array]',uint32Tag='[object Uint32Array]';/** Used to match empty string literals in compiled template source. */var reEmptyStringLeading=/\\b__p \\+= '';/g,reEmptyStringMiddle=/\\b(__p \\+=) '' \\+/g,reEmptyStringTrailing=/(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;/** Used to match HTML entities and HTML characters. */var reEscapedHtml=/&(?:amp|lt|gt|quot|#39);/g,reUnescapedHtml=/[&<>\"']/g,reHasEscapedHtml=RegExp(reEscapedHtml.source),reHasUnescapedHtml=RegExp(reUnescapedHtml.source);/** Used to match template delimiters. */var reEscape=/<%-([\\s\\S]+?)%>/g,reEvaluate=/<%([\\s\\S]+?)%>/g,reInterpolate=/<%=([\\s\\S]+?)%>/g;/** Used to match property names within property paths. */var reIsDeepProp=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,reIsPlainProp=/^\\w*$/,rePropName=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */var reRegExpChar=/[\\\\^$.*+?()[\\]{}|]/g,reHasRegExpChar=RegExp(reRegExpChar.source);/** Used to match leading and trailing whitespace. */var reTrim=/^\\s+|\\s+$/g,reTrimStart=/^\\s+/,reTrimEnd=/\\s+$/;/** Used to match wrap detail comments. */var reWrapComment=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,reWrapDetails=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,reSplitDetails=/,? & /;/** Used to match words composed of alphanumeric characters. */var reAsciiWord=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;/** Used to match backslashes in property paths. */var reEscapeChar=/\\\\(\\\\)?/g;/**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */var reEsTemplate=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;/** Used to match `RegExp` flags from their coerced string values. */var reFlags=/\\w*$/;/** Used to detect bad signed hexadecimal string values. */var reIsBadHex=/^[-+]0x[0-9a-f]+$/i;/** Used to detect binary string values. */var reIsBinary=/^0b[01]+$/i;/** Used to detect host constructors (Safari). */var reIsHostCtor=/^\\[object .+?Constructor\\]$/;/** Used to detect octal string values. */var reIsOctal=/^0o[0-7]+$/i;/** Used to detect unsigned integer values. */var reIsUint=/^(?:0|[1-9]\\d*)$/;/** Used to match Latin Unicode letters (excluding mathematical operators). */var reLatin=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;/** Used to ensure capturing order of template delimiters. */var reNoMatch=/($^)/;/** Used to match unescaped characters in compiled string literals. */var reUnescapedString=/['\\n\\r\\u2028\\u2029\\\\]/g;/** Used to compose unicode character classes. */var rsAstralRange='\\\\ud800-\\\\udfff',rsComboMarksRange='\\\\u0300-\\\\u036f',reComboHalfMarksRange='\\\\ufe20-\\\\ufe2f',rsComboSymbolsRange='\\\\u20d0-\\\\u20ff',rsComboRange=rsComboMarksRange+reComboHalfMarksRange+rsComboSymbolsRange,rsDingbatRange='\\\\u2700-\\\\u27bf',rsLowerRange='a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',rsMathOpRange='\\\\xac\\\\xb1\\\\xd7\\\\xf7',rsNonCharRange='\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',rsPunctuationRange='\\\\u2000-\\\\u206f',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',rsUpperRange='A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',rsVarRange='\\\\ufe0e\\\\ufe0f',rsBreakRange=rsMathOpRange+rsNonCharRange+rsPunctuationRange+rsSpaceRange;/** Used to compose unicode capture groups. */var rsApos='[\\'\\u2019]',rsAstral='['+rsAstralRange+']',rsBreak='['+rsBreakRange+']',rsCombo='['+rsComboRange+']',rsDigits='\\\\d+',rsDingbat='['+rsDingbatRange+']',rsLower='['+rsLowerRange+']',rsMisc='[^'+rsAstralRange+rsBreakRange+rsDigits+rsDingbatRange+rsLowerRange+rsUpperRange+']',rsFitz='\\\\ud83c[\\\\udffb-\\\\udfff]',rsModifier='(?:'+rsCombo+'|'+rsFitz+')',rsNonAstral='[^'+rsAstralRange+']',rsRegional='(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',rsSurrPair='[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',rsUpper='['+rsUpperRange+']',rsZWJ='\\\\u200d';/** Used to compose unicode regexes. */var rsMiscLower='(?:'+rsLower+'|'+rsMisc+')',rsMiscUpper='(?:'+rsUpper+'|'+rsMisc+')',rsOptContrLower='(?:'+rsApos+'(?:d|ll|m|re|s|t|ve))?',rsOptContrUpper='(?:'+rsApos+'(?:D|LL|M|RE|S|T|VE))?',reOptMod=rsModifier+'?',rsOptVar='['+rsVarRange+']?',rsOptJoin='(?:'+rsZWJ+'(?:'+[rsNonAstral,rsRegional,rsSurrPair].join('|')+')'+rsOptVar+reOptMod+')*',rsOrdLower='\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',rsOrdUpper='\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',rsSeq=rsOptVar+reOptMod+rsOptJoin,rsEmoji='(?:'+[rsDingbat,rsRegional,rsSurrPair].join('|')+')'+rsSeq,rsSymbol='(?:'+[rsNonAstral+rsCombo+'?',rsCombo,rsRegional,rsSurrPair,rsAstral].join('|')+')';/** Used to match apostrophes. */var reApos=RegExp(rsApos,'g');/**\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 */var reComboMark=RegExp(rsCombo,'g');/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */var reUnicode=RegExp(rsFitz+'(?='+rsFitz+')|'+rsSymbol+rsSeq,'g');/** Used to match complex or compound words. */var reUnicodeWord=RegExp([rsUpper+'?'+rsLower+'+'+rsOptContrLower+'(?='+[rsBreak,rsUpper,'$'].join('|')+')',rsMiscUpper+'+'+rsOptContrUpper+'(?='+[rsBreak,rsUpper+rsMiscLower,'$'].join('|')+')',rsUpper+'?'+rsMiscLower+'+'+rsOptContrLower,rsUpper+'+'+rsOptContrUpper,rsOrdUpper,rsOrdLower,rsDigits,rsEmoji].join('|'),'g');/** 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/). */var reHasUnicode=RegExp('['+rsZWJ+rsAstralRange+rsComboRange+rsVarRange+']');/** Used to detect strings that need a more robust regexp to match words. */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 ]/;/** Used to assign default `context` object properties. */var contextProps=['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'];/** Used to make template sourceURLs easier to identify. */var templateCounter=-1;/** Used to identify `toStringTag` values of typed arrays. */var typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=true;typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=false;/** Used to identify `toStringTag` values supported by `_.clone`. */var cloneableTags={};cloneableTags[argsTag]=cloneableTags[arrayTag]=cloneableTags[arrayBufferTag]=cloneableTags[dataViewTag]=cloneableTags[boolTag]=cloneableTags[dateTag]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[mapTag]=cloneableTags[numberTag]=cloneableTags[objectTag]=cloneableTags[regexpTag]=cloneableTags[setTag]=cloneableTags[stringTag]=cloneableTags[symbolTag]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=true;cloneableTags[errorTag]=cloneableTags[funcTag]=cloneableTags[weakMapTag]=false;/** Used to map Latin Unicode letters to basic Latin letters. */var deburredLetters={// Latin-1 Supplement block.\nÀ:'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',// Latin Extended-A block.\nĀ:'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'};/** Used to map characters to HTML entities. */var htmlEscapes={'&':'&','<':'<','>':'>','\"':'"',\"'\":'''};/** Used to map HTML entities to characters. */var htmlUnescapes={'&':'&','<':'<','>':'>','"':'\"',''':\"'\"};/** Used to escape characters for inclusion in compiled string literals. */var stringEscapes={'\\\\':'\\\\',\"'\":\"'\",'\\n':'n','\\r':'r','\\u2028':'u2028','\\u2029':'u2029'};/** Built-in method references without a dependency on `root`. */var freeParseFloat=parseFloat,freeParseInt=parseInt;/** Detect free variable `global` from Node.js. */var freeGlobal=(typeof __webpack_require__.g==='undefined'?'undefined':_typeof(__webpack_require__.g))==='object'&&__webpack_require__.g&&__webpack_require__.g.Object===Object&&__webpack_require__.g;/** Detect free variable `self`. */var freeSelf=(typeof self==='undefined'?'undefined':_typeof(self))==='object'&&self&&self.Object===Object&&self;/** Used as a reference to the global object. */var root=freeGlobal||freeSelf||Function('return this')();/** Detect free variable `exports`. */var freeExports=( false?0:_typeof(exports))==='object'&&exports&&!exports.nodeType&&exports;/** Detect free variable `module`. */var freeModule=freeExports&&( false?0:_typeof(module))==='object'&&module&&!module.nodeType&&module;/** Detect the popular CommonJS extension `module.exports`. */var moduleExports=freeModule&&freeModule.exports===freeExports;/** Detect free variable `process` from Node.js. */var freeProcess=moduleExports&&freeGlobal.process;/** Used to access faster Node.js helpers. */var nodeUtil=function(){try{// Use `util.types` for Node.js 10+.\nvar types=freeModule&&freeModule.require&&freeModule.require('util').types;if(types){return types;}// Legacy `process.binding('util')` for Node.js < 10.\nreturn freeProcess&&freeProcess.binding&&freeProcess.binding('util');}catch(e){}}();/* Node.js helper references. */var nodeIsArrayBuffer=nodeUtil&&nodeUtil.isArrayBuffer,nodeIsDate=nodeUtil&&nodeUtil.isDate,nodeIsMap=nodeUtil&&nodeUtil.isMap,nodeIsRegExp=nodeUtil&&nodeUtil.isRegExp,nodeIsSet=nodeUtil&&nodeUtil.isSet,nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray;/* --------------------------------------------------------------------------*//**\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 */function apply(func,thisArg,args){switch(args.length){case 0:return func.call(thisArg);case 1:return func.call(thisArg,args[0]);case 2:return func.call(thisArg,args[0],args[1]);case 3:return func.call(thisArg,args[0],args[1],args[2]);}return func.apply(thisArg,args);}/**\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 */function arrayAggregator(array,setter,iteratee,accumulator){var index=-1,length=array==null?0:array.length;while(++index<length){var value=array[index];setter(accumulator,value,iteratee(value),array);}return accumulator;}/**\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 */function arrayEach(array,iteratee){var index=-1,length=array==null?0:array.length;while(++index<length){if(iteratee(array[index],index,array)===false){break;}}return array;}/**\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 */function arrayEachRight(array,iteratee){var length=array==null?0:array.length;while(length--){if(iteratee(array[length],length,array)===false){break;}}return array;}/**\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 */function arrayEvery(array,predicate){var index=-1,length=array==null?0:array.length;while(++index<length){if(!predicate(array[index],index,array)){return false;}}return true;}/**\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 */function arrayFilter(array,predicate){var index=-1,length=array==null?0:array.length,resIndex=0,result=[];while(++index<length){var value=array[index];if(predicate(value,index,array)){result[resIndex++]=value;}}return result;}/**\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 */function arrayIncludes(array,value){var length=array==null?0:array.length;return!!length&&baseIndexOf(array,value,0)>-1;}/**\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 */function arrayIncludesWith(array,value,comparator){var index=-1,length=array==null?0:array.length;while(++index<length){if(comparator(value,array[index])){return true;}}return false;}/**\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 */function arrayMap(array,iteratee){var index=-1,length=array==null?0:array.length,result=Array(length);while(++index<length){result[index]=iteratee(array[index],index,array);}return result;}/**\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 */function arrayPush(array,values){var index=-1,length=values.length,offset=array.length;while(++index<length){array[offset+index]=values[index];}return array;}/**\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 */function arrayReduce(array,iteratee,accumulator,initAccum){var index=-1,length=array==null?0:array.length;if(initAccum&&length){accumulator=array[++index];}while(++index<length){accumulator=iteratee(accumulator,array[index],index,array);}return accumulator;}/**\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 */function arrayReduceRight(array,iteratee,accumulator,initAccum){var length=array==null?0:array.length;if(initAccum&&length){accumulator=array[--length];}while(length--){accumulator=iteratee(accumulator,array[length],length,array);}return accumulator;}/**\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 */function arraySome(array,predicate){var index=-1,length=array==null?0:array.length;while(++index<length){if(predicate(array[index],index,array)){return true;}}return false;}/**\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 */var asciiSize=baseProperty('length');/**\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 */function asciiToArray(string){return string.split('');}/**\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 */function asciiWords(string){return string.match(reAsciiWord)||[];}/**\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 */function baseFindKey(collection,predicate,eachFunc){var result;eachFunc(collection,function(value,key,collection){if(predicate(value,key,collection)){result=key;return false;}});return result;}/**\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 */function baseFindIndex(array,predicate,fromIndex,fromRight){var length=array.length,index=fromIndex+(fromRight?1:-1);while(fromRight?index--:++index<length){if(predicate(array[index],index,array)){return index;}}return-1;}/**\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 */function baseIndexOf(array,value,fromIndex){return value===value?strictIndexOf(array,value,fromIndex):baseFindIndex(array,baseIsNaN,fromIndex);}/**\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 */function baseIndexOfWith(array,value,fromIndex,comparator){var index=fromIndex-1,length=array.length;while(++index<length){if(comparator(array[index],value)){return index;}}return-1;}/**\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 */function baseIsNaN(value){return value!==value;}/**\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 */function baseMean(array,iteratee){var length=array==null?0:array.length;return length?baseSum(array,iteratee)/length:NAN;}/**\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 */function baseProperty(key){return function(object){return object==null?undefined:object[key];};}/**\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 */function basePropertyOf(object){return function(key){return object==null?undefined:object[key];};}/**\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 */function baseReduce(collection,iteratee,accumulator,initAccum,eachFunc){eachFunc(collection,function(value,index,collection){accumulator=initAccum?(initAccum=false,value):iteratee(accumulator,value,index,collection);});return accumulator;}/**\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 */function baseSortBy(array,comparer){var length=array.length;array.sort(comparer);while(length--){array[length]=array[length].value;}return array;}/**\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 */function baseSum(array,iteratee){var result,index=-1,length=array.length;while(++index<length){var current=iteratee(array[index]);if(current!==undefined){result=result===undefined?current:result+current;}}return result;}/**\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 */function baseTimes(n,iteratee){var index=-1,result=Array(n);while(++index<n){result[index]=iteratee(index);}return result;}/**\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 */function baseToPairs(object,props){return arrayMap(props,function(key){return[key,object[key]];});}/**\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 */function baseUnary(func){return function(value){return func(value);};}/**\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 */function baseValues(object,props){return arrayMap(props,function(key){return object[key];});}/**\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 */function cacheHas(cache,key){return cache.has(key);}/**\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 */function charsStartIndex(strSymbols,chrSymbols){var index=-1,length=strSymbols.length;while(++index<length&&baseIndexOf(chrSymbols,strSymbols[index],0)>-1){}return index;}/**\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 */function charsEndIndex(strSymbols,chrSymbols){var index=strSymbols.length;while(index--&&baseIndexOf(chrSymbols,strSymbols[index],0)>-1){}return index;}/**\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 */function countHolders(array,placeholder){var length=array.length,result=0;while(length--){if(array[length]===placeholder){++result;}}return result;}/**\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 */var deburrLetter=basePropertyOf(deburredLetters);/**\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 */var escapeHtmlChar=basePropertyOf(htmlEscapes);/**\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 */function escapeStringChar(chr){return'\\\\'+stringEscapes[chr];}/**\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 */function getValue(object,key){return object==null?undefined:object[key];}/**\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 */function hasUnicode(string){return reHasUnicode.test(string);}/**\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 */function hasUnicodeWord(string){return reHasUnicodeWord.test(string);}/**\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 */function iteratorToArray(iterator){var data,result=[];while(!(data=iterator.next()).done){result.push(data.value);}return result;}/**\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 */function mapToArray(map){var index=-1,result=Array(map.size);map.forEach(function(value,key){result[++index]=[key,value];});return result;}/**\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 */function overArg(func,transform){return function(arg){return func(transform(arg));};}/**\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 */function replaceHolders(array,placeholder){var index=-1,length=array.length,resIndex=0,result=[];while(++index<length){var value=array[index];if(value===placeholder||value===PLACEHOLDER){array[index]=PLACEHOLDER;result[resIndex++]=index;}}return result;}/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\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 */function safeGet(object,key){return key=='__proto__'?undefined:object[key];}/**\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 */function setToArray(set){var index=-1,result=Array(set.size);set.forEach(function(value){result[++index]=value;});return result;}/**\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 */function setToPairs(set){var index=-1,result=Array(set.size);set.forEach(function(value){result[++index]=[value,value];});return result;}/**\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 */function strictIndexOf(array,value,fromIndex){var index=fromIndex-1,length=array.length;while(++index<length){if(array[index]===value){return index;}}return-1;}/**\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 */function strictLastIndexOf(array,value,fromIndex){var index=fromIndex+1;while(index--){if(array[index]===value){return index;}}return index;}/**\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 */function stringSize(string){return hasUnicode(string)?unicodeSize(string):asciiSize(string);}/**\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 */function stringToArray(string){return hasUnicode(string)?unicodeToArray(string):asciiToArray(string);}/**\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 */var unescapeHtmlChar=basePropertyOf(htmlUnescapes);/**\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 */function unicodeSize(string){var result=reUnicode.lastIndex=0;while(reUnicode.test(string)){++result;}return result;}/**\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 */function unicodeToArray(string){return string.match(reUnicode)||[];}/**\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 */function unicodeWords(string){return string.match(reUnicodeWord)||[];}/* --------------------------------------------------------------------------*//**\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 */var runInContext=function runInContext(context){context=context==null?root:_.defaults(root.Object(),context,_.pick(root,contextProps));/** Built-in constructor references. */var Array=context.Array,Date=context.Date,Error=context.Error,Function=context.Function,Math=context.Math,Object=context.Object,RegExp=context.RegExp,String=context.String,TypeError=context.TypeError;/** Used for built-in method references. */var arrayProto=Array.prototype,funcProto=Function.prototype,objectProto=Object.prototype;/** Used to detect overreaching core-js shims. */var coreJsData=context['__core-js_shared__'];/** Used to resolve the decompiled source of functions. */var funcToString=funcProto.toString;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/** Used to generate unique IDs. */var idCounter=0;/** Used to detect methods masquerading as native. */var maskSrcKey=function(){var uid=/[^.]+$/.exec(coreJsData&&coreJsData.keys&&coreJsData.keys.IE_PROTO||'');return uid?'Symbol(src)_1.'+uid:'';}();/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */var nativeObjectToString=objectProto.toString;/** Used to infer the `Object` constructor. */var objectCtorString=funcToString.call(Object);/** Used to restore the original `_` reference in `_.noConflict`. */var oldDash=root._;/** Used to detect if a method is native. */var reIsNative=RegExp('^'+funcToString.call(hasOwnProperty).replace(reRegExpChar,'\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,'$1.*?')+'$');/** Built-in value references. */var Buffer=moduleExports?context.Buffer:undefined,_Symbol=context.Symbol,Uint8Array=context.Uint8Array,allocUnsafe=Buffer?Buffer.allocUnsafe:undefined,getPrototype=overArg(Object.getPrototypeOf,Object),objectCreate=Object.create,propertyIsEnumerable=objectProto.propertyIsEnumerable,splice=arrayProto.splice,spreadableSymbol=_Symbol?_Symbol.isConcatSpreadable:undefined,symIterator=_Symbol?_Symbol.iterator:undefined,symToStringTag=_Symbol?_Symbol.toStringTag:undefined;var defineProperty=function(){try{var func=getNative(Object,'defineProperty');func({},'',{});return func;}catch(e){}}();/** Mocked built-ins. */var ctxClearTimeout=context.clearTimeout!==root.clearTimeout&&context.clearTimeout,ctxNow=Date&&Date.now!==root.Date.now&&Date.now,ctxSetTimeout=context.setTimeout!==root.setTimeout&&context.setTimeout;/* Built-in method references for those with the same name as other `lodash` methods. */var nativeCeil=Math.ceil,nativeFloor=Math.floor,nativeGetSymbols=Object.getOwnPropertySymbols,nativeIsBuffer=Buffer?Buffer.isBuffer:undefined,nativeIsFinite=context.isFinite,nativeJoin=arrayProto.join,nativeKeys=overArg(Object.keys,Object),nativeMax=Math.max,nativeMin=Math.min,nativeNow=Date.now,nativeParseInt=context.parseInt,nativeRandom=Math.random,nativeReverse=arrayProto.reverse;/* Built-in method references that are verified to be native. */var DataView=getNative(context,'DataView'),Map=getNative(context,'Map'),Promise=getNative(context,'Promise'),Set=getNative(context,'Set'),WeakMap=getNative(context,'WeakMap'),nativeCreate=getNative(Object,'create');/** Used to store function metadata. */var metaMap=WeakMap&&new WeakMap();/** Used to lookup unminified function names. */var realNames={};/** Used to detect maps, sets, and weakmaps. */var dataViewCtorString=toSource(DataView),mapCtorString=toSource(Map),promiseCtorString=toSource(Promise),setCtorString=toSource(Set),weakMapCtorString=toSource(WeakMap);/** Used to convert symbols to primitives and strings. */var symbolProto=_Symbol?_Symbol.prototype:undefined,symbolValueOf=symbolProto?symbolProto.valueOf:undefined,symbolToString=symbolProto?symbolProto.toString:undefined;/* ------------------------------------------------------------------------*//**\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 */function lodash(value){if(isObjectLike(value)&&!isArray(value)&&!(value instanceof LazyWrapper)){if(value instanceof LodashWrapper){return value;}if(hasOwnProperty.call(value,'__wrapped__')){return wrapperClone(value);}}return new LodashWrapper(value);}/**\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 */var baseCreate=function(){function object(){}return function(proto){if(!isObject(proto)){return{};}if(objectCreate){return objectCreate(proto);}object.prototype=proto;var result=new object();object.prototype=undefined;return result;};}();/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */function baseLodash(){}// No operation performed.\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 */function LodashWrapper(value,chainAll){this.__wrapped__=value;this.__actions__=[];this.__chain__=!!chainAll;this.__index__=0;this.__values__=undefined;}/**\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 */lodash.templateSettings={/**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */escape:reEscape,/**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */evaluate:reEvaluate,/**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */interpolate:reInterpolate,/**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */variable:'',/**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */imports:{/**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */_:lodash}};// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype=baseLodash.prototype;lodash.prototype.constructor=lodash;LodashWrapper.prototype=baseCreate(baseLodash.prototype);LodashWrapper.prototype.constructor=LodashWrapper;/* ------------------------------------------------------------------------*//**\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 */function LazyWrapper(value){this.__wrapped__=value;this.__actions__=[];this.__dir__=1;this.__filtered__=false;this.__iteratees__=[];this.__takeCount__=MAX_ARRAY_LENGTH;this.__views__=[];}/**\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 */function lazyClone(){var result=new LazyWrapper(this.__wrapped__);result.__actions__=copyArray(this.__actions__);result.__dir__=this.__dir__;result.__filtered__=this.__filtered__;result.__iteratees__=copyArray(this.__iteratees__);result.__takeCount__=this.__takeCount__;result.__views__=copyArray(this.__views__);return result;}/**\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 */function lazyReverse(){if(this.__filtered__){var result=new LazyWrapper(this);result.__dir__=-1;result.__filtered__=true;}else{result=this.clone();result.__dir__*=-1;}return result;}/**\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 */function lazyValue(){var array=this.__wrapped__.value(),dir=this.__dir__,isArr=isArray(array),isRight=dir<0,arrLength=isArr?array.length:0,view=getView(0,arrLength,this.__views__),start=view.start,end=view.end,length=end-start,index=isRight?end:start-1,iteratees=this.__iteratees__,iterLength=iteratees.length,resIndex=0,takeCount=nativeMin(length,this.__takeCount__);if(!isArr||!isRight&&arrLength==length&&takeCount==length){return baseWrapperValue(array,this.__actions__);}var result=[];outer:while(length--&&resIndex<takeCount){index+=dir;var iterIndex=-1,value=array[index];while(++iterIndex<iterLength){var data=iteratees[iterIndex],iteratee=data.iteratee,type=data.type,computed=iteratee(value);if(type==LAZY_MAP_FLAG){value=computed;}else if(!computed){if(type==LAZY_FILTER_FLAG){continue outer;}else{break outer;}}}result[resIndex++]=value;}return result;}// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype=baseCreate(baseLodash.prototype);LazyWrapper.prototype.constructor=LazyWrapper;/* ------------------------------------------------------------------------*//**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */function Hash(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1]);}}/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */function hashClear(){this.__data__=nativeCreate?nativeCreate(null):{};this.size=0;}/**\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 */function hashDelete(key){var result=this.has(key)&&delete this.__data__[key];this.size-=result?1:0;return result;}/**\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 */function hashGet(key){var data=this.__data__;if(nativeCreate){var result=data[key];return result===HASH_UNDEFINED?undefined:result;}return hasOwnProperty.call(data,key)?data[key]:undefined;}/**\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 */function hashHas(key){var data=this.__data__;return nativeCreate?data[key]!==undefined:hasOwnProperty.call(data,key);}/**\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 */function hashSet(key,value){var data=this.__data__;this.size+=this.has(key)?0:1;data[key]=nativeCreate&&value===undefined?HASH_UNDEFINED:value;return this;}// Add methods to `Hash`.\nHash.prototype.clear=hashClear;Hash.prototype['delete']=hashDelete;Hash.prototype.get=hashGet;Hash.prototype.has=hashHas;Hash.prototype.set=hashSet;/* ------------------------------------------------------------------------*//**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */function ListCache(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1]);}}/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */function listCacheClear(){this.__data__=[];this.size=0;}/**\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 */function listCacheDelete(key){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){return false;}var lastIndex=data.length-1;if(index==lastIndex){data.pop();}else{splice.call(data,index,1);}--this.size;return true;}/**\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 */function listCacheGet(key){var data=this.__data__,index=assocIndexOf(data,key);return index<0?undefined:data[index][1];}/**\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 */function listCacheHas(key){return assocIndexOf(this.__data__,key)>-1;}/**\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 */function listCacheSet(key,value){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){++this.size;data.push([key,value]);}else{data[index][1]=value;}return this;}// Add methods to `ListCache`.\nListCache.prototype.clear=listCacheClear;ListCache.prototype['delete']=listCacheDelete;ListCache.prototype.get=listCacheGet;ListCache.prototype.has=listCacheHas;ListCache.prototype.set=listCacheSet;/* ------------------------------------------------------------------------*//**\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 */function MapCache(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1]);}}/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */function mapCacheClear(){this.size=0;this.__data__={hash:new Hash(),map:new(Map||ListCache)(),string:new Hash()};}/**\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 */function mapCacheDelete(key){var result=getMapData(this,key)['delete'](key);this.size-=result?1:0;return result;}/**\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 */function mapCacheGet(key){return getMapData(this,key).get(key);}/**\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 */function mapCacheHas(key){return getMapData(this,key).has(key);}/**\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 */function mapCacheSet(key,value){var data=getMapData(this,key),size=data.size;data.set(key,value);this.size+=data.size==size?0:1;return this;}// Add methods to `MapCache`.\nMapCache.prototype.clear=mapCacheClear;MapCache.prototype['delete']=mapCacheDelete;MapCache.prototype.get=mapCacheGet;MapCache.prototype.has=mapCacheHas;MapCache.prototype.set=mapCacheSet;/* ------------------------------------------------------------------------*//**\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 */function SetCache(values){var index=-1,length=values==null?0:values.length;this.__data__=new MapCache();while(++index<length){this.add(values[index]);}}/**\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 */function setCacheAdd(value){this.__data__.set(value,HASH_UNDEFINED);return this;}/**\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 */function setCacheHas(value){return this.__data__.has(value);}// Add methods to `SetCache`.\nSetCache.prototype.add=SetCache.prototype.push=setCacheAdd;SetCache.prototype.has=setCacheHas;/* ------------------------------------------------------------------------*//**\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 */function Stack(entries){var data=this.__data__=new ListCache(entries);this.size=data.size;}/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */function stackClear(){this.__data__=new ListCache();this.size=0;}/**\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 */function stackDelete(key){var data=this.__data__,result=data['delete'](key);this.size=data.size;return result;}/**\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 */function stackGet(key){return this.__data__.get(key);}/**\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 */function stackHas(key){return this.__data__.has(key);}/**\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 */function stackSet(key,value){var data=this.__data__;if(data instanceof ListCache){var pairs=data.__data__;if(!Map||pairs.length<LARGE_ARRAY_SIZE-1){pairs.push([key,value]);this.size=++data.size;return this;}data=this.__data__=new MapCache(pairs);}data.set(key,value);this.size=data.size;return this;}// Add methods to `Stack`.\nStack.prototype.clear=stackClear;Stack.prototype['delete']=stackDelete;Stack.prototype.get=stackGet;Stack.prototype.has=stackHas;Stack.prototype.set=stackSet;/* ------------------------------------------------------------------------*//**\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 */function arrayLikeKeys(value,inherited){var isArr=isArray(value),isArg=!isArr&&isArguments(value),isBuff=!isArr&&!isArg&&isBuffer(value),isType=!isArr&&!isArg&&!isBuff&&isTypedArray(value),skipIndexes=isArr||isArg||isBuff||isType,result=skipIndexes?baseTimes(value.length,String):[],length=result.length;for(var key in value){if((inherited||hasOwnProperty.call(value,key))&&!(skipIndexes&&(// Safari 9 has enumerable `arguments.length` in strict mode.\nkey=='length'||// Node.js 0.10 has enumerable non-index properties on buffers.\nisBuff&&(key=='offset'||key=='parent')||// PhantomJS 2 has enumerable non-index properties on typed arrays.\nisType&&(key=='buffer'||key=='byteLength'||key=='byteOffset')||// Skip index properties.\nisIndex(key,length)))){result.push(key);}}return result;}/**\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 */function arraySample(array){var length=array.length;return length?array[baseRandom(0,length-1)]:undefined;}/**\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 */function arraySampleSize(array,n){return shuffleSelf(copyArray(array),baseClamp(n,0,array.length));}/**\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 */function arrayShuffle(array){return shuffleSelf(copyArray(array));}/**\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 */function assignMergeValue(object,key,value){if(value!==undefined&&!eq(object[key],value)||value===undefined&&!(key in object)){baseAssignValue(object,key,value);}}/**\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 */function assignValue(object,key,value){var objValue=object[key];if(!(hasOwnProperty.call(object,key)&&eq(objValue,value))||value===undefined&&!(key in object)){baseAssignValue(object,key,value);}}/**\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 */function assocIndexOf(array,key){var length=array.length;while(length--){if(eq(array[length][0],key)){return length;}}return-1;}/**\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 */function baseAggregator(collection,setter,iteratee,accumulator){baseEach(collection,function(value,key,collection){setter(accumulator,value,iteratee(value),collection);});return accumulator;}/**\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 */function baseAssign(object,source){return object&©Object(source,keys(source),object);}/**\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 */function baseAssignIn(object,source){return object&©Object(source,keysIn(source),object);}/**\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 */function baseAssignValue(object,key,value){if(key=='__proto__'&&defineProperty){defineProperty(object,key,{configurable:true,enumerable:true,value:value,writable:true});}else{object[key]=value;}}/**\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 */function baseAt(object,paths){var index=-1,length=paths.length,result=Array(length),skip=object==null;while(++index<length){result[index]=skip?undefined:get(object,paths[index]);}return result;}/**\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 */function baseClamp(number,lower,upper){if(number===number){if(upper!==undefined){number=number<=upper?number:upper;}if(lower!==undefined){number=number>=lower?number:lower;}}return number;}/**\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 */function baseClone(value,bitmask,customizer,key,object,stack){var result,isDeep=bitmask&CLONE_DEEP_FLAG,isFlat=bitmask&CLONE_FLAT_FLAG,isFull=bitmask&CLONE_SYMBOLS_FLAG;if(customizer){result=object?customizer(value,key,object,stack):customizer(value);}if(result!==undefined){return result;}if(!isObject(value)){return value;}var isArr=isArray(value);if(isArr){result=initCloneArray(value);if(!isDeep){return copyArray(value,result);}}else{var tag=getTag(value),isFunc=tag==funcTag||tag==genTag;if(isBuffer(value)){return cloneBuffer(value,isDeep);}if(tag==objectTag||tag==argsTag||isFunc&&!object){result=isFlat||isFunc?{}:initCloneObject(value);if(!isDeep){return isFlat?copySymbolsIn(value,baseAssignIn(result,value)):copySymbols(value,baseAssign(result,value));}}else{if(!cloneableTags[tag]){return object?value:{};}result=initCloneByTag(value,tag,isDeep);}}// Check for circular references and return its corresponding clone.\nstack||(stack=new Stack());var stacked=stack.get(value);if(stacked){return stacked;}stack.set(value,result);if(isSet(value)){value.forEach(function(subValue){result.add(baseClone(subValue,bitmask,customizer,subValue,value,stack));});return result;}if(isMap(value)){value.forEach(function(subValue,key){result.set(key,baseClone(subValue,bitmask,customizer,key,value,stack));});return result;}var keysFunc=isFull?isFlat?getAllKeysIn:getAllKeys:isFlat?keysIn:keys;var props=isArr?undefined:keysFunc(value);arrayEach(props||value,function(subValue,key){if(props){key=subValue;subValue=value[key];}// Recursively populate clone (susceptible to call stack limits).\nassignValue(result,key,baseClone(subValue,bitmask,customizer,key,value,stack));});return result;}/**\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 */function baseConforms(source){var props=keys(source);return function(object){return baseConformsTo(object,source,props);};}/**\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 */function baseConformsTo(object,source,props){var length=props.length;if(object==null){return!length;}object=Object(object);while(length--){var key=props[length],predicate=source[key],value=object[key];if(value===undefined&&!(key in object)||!predicate(value)){return false;}}return true;}/**\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 */function baseDelay(func,wait,args){if(typeof func!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}return setTimeout(function(){func.apply(undefined,args);},wait);}/**\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 */function baseDifference(array,values,iteratee,comparator){var index=-1,includes=arrayIncludes,isCommon=true,length=array.length,result=[],valuesLength=values.length;if(!length){return result;}if(iteratee){values=arrayMap(values,baseUnary(iteratee));}if(comparator){includes=arrayIncludesWith;isCommon=false;}else if(values.length>=LARGE_ARRAY_SIZE){includes=cacheHas;isCommon=false;values=new SetCache(values);}outer:while(++index<length){var value=array[index],computed=iteratee==null?value:iteratee(value);value=comparator||value!==0?value:0;if(isCommon&&computed===computed){var valuesIndex=valuesLength;while(valuesIndex--){if(values[valuesIndex]===computed){continue outer;}}result.push(value);}else if(!includes(values,computed,comparator)){result.push(value);}}return result;}/**\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 */var baseEach=createBaseEach(baseForOwn);/**\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 */var baseEachRight=createBaseEach(baseForOwnRight,true);/**\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 */function baseEvery(collection,predicate){var result=true;baseEach(collection,function(value,index,collection){result=!!predicate(value,index,collection);return result;});return result;}/**\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 */function baseExtremum(array,iteratee,comparator){var index=-1,length=array.length;while(++index<length){var value=array[index],current=iteratee(value);if(current!=null&&(computed===undefined?current===current&&!isSymbol(current):comparator(current,computed))){var computed=current,result=value;}}return result;}/**\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 */function baseFill(array,value,start,end){var length=array.length;start=toInteger(start);if(start<0){start=-start>length?0:length+start;}end=end===undefined||end>length?length:toInteger(end);if(end<0){end+=length;}end=start>end?0:toLength(end);while(start<end){array[start++]=value;}return array;}/**\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 */function baseFilter(collection,predicate){var result=[];baseEach(collection,function(value,index,collection){if(predicate(value,index,collection)){result.push(value);}});return result;}/**\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 */function baseFlatten(array,depth,predicate,isStrict,result){var index=-1,length=array.length;predicate||(predicate=isFlattenable);result||(result=[]);while(++index<length){var value=array[index];if(depth>0&&predicate(value)){if(depth>1){// Recursively flatten arrays (susceptible to call stack limits).\nbaseFlatten(value,depth-1,predicate,isStrict,result);}else{arrayPush(result,value);}}else if(!isStrict){result[result.length]=value;}}return result;}/**\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 */var baseFor=createBaseFor();/**\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 */var baseForRight=createBaseFor(true);/**\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 */function baseForOwn(object,iteratee){return object&&baseFor(object,iteratee,keys);}/**\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 */function baseForOwnRight(object,iteratee){return object&&baseForRight(object,iteratee,keys);}/**\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 */function baseFunctions(object,props){return arrayFilter(props,function(key){return isFunction(object[key]);});}/**\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 */function baseGet(object,path){path=castPath(path,object);var index=0,length=path.length;while(object!=null&&index<length){object=object[toKey(path[index++])];}return index&&index==length?object:undefined;}/**\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 */function baseGetAllKeys(object,keysFunc,symbolsFunc){var result=keysFunc(object);return isArray(object)?result:arrayPush(result,symbolsFunc(object));}/**\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 */function baseGetTag(value){if(value==null){return value===undefined?undefinedTag:nullTag;}return symToStringTag&&symToStringTag in Object(value)?getRawTag(value):objectToString(value);}/**\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 */function baseGt(value,other){return value>other;}/**\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 */function baseHas(object,key){return object!=null&&hasOwnProperty.call(object,key);}/**\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 */function baseHasIn(object,key){return object!=null&&key in Object(object);}/**\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 */function baseInRange(number,start,end){return number>=nativeMin(start,end)&&number<nativeMax(start,end);}/**\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 */function baseIntersection(arrays,iteratee,comparator){var includes=comparator?arrayIncludesWith:arrayIncludes,length=arrays[0].length,othLength=arrays.length,othIndex=othLength,caches=Array(othLength),maxLength=Infinity,result=[];while(othIndex--){var array=arrays[othIndex];if(othIndex&&iteratee){array=arrayMap(array,baseUnary(iteratee));}maxLength=nativeMin(array.length,maxLength);caches[othIndex]=!comparator&&(iteratee||length>=120&&array.length>=120)?new SetCache(othIndex&&array):undefined;}array=arrays[0];var index=-1,seen=caches[0];outer:while(++index<length&&result.length<maxLength){var value=array[index],computed=iteratee?iteratee(value):value;value=comparator||value!==0?value:0;if(!(seen?cacheHas(seen,computed):includes(result,computed,comparator))){othIndex=othLength;while(--othIndex){var cache=caches[othIndex];if(!(cache?cacheHas(cache,computed):includes(arrays[othIndex],computed,comparator))){continue outer;}}if(seen){seen.push(computed);}result.push(value);}}return result;}/**\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 */function baseInverter(object,setter,iteratee,accumulator){baseForOwn(object,function(value,key,object){setter(accumulator,iteratee(value),key,object);});return accumulator;}/**\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 */function baseInvoke(object,path,args){path=castPath(path,object);object=parent(object,path);var func=object==null?object:object[toKey(last(path))];return func==null?undefined:apply(func,object,args);}/**\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 */function baseIsArguments(value){return isObjectLike(value)&&baseGetTag(value)==argsTag;}/**\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 */function baseIsArrayBuffer(value){return isObjectLike(value)&&baseGetTag(value)==arrayBufferTag;}/**\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 */function baseIsDate(value){return isObjectLike(value)&&baseGetTag(value)==dateTag;}/**\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 */function baseIsEqual(value,other,bitmask,customizer,stack){if(value===other){return true;}if(value==null||other==null||!isObjectLike(value)&&!isObjectLike(other)){return value!==value&&other!==other;}return baseIsEqualDeep(value,other,bitmask,customizer,baseIsEqual,stack);}/**\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 */function baseIsEqualDeep(object,other,bitmask,customizer,equalFunc,stack){var objIsArr=isArray(object),othIsArr=isArray(other),objTag=objIsArr?arrayTag:getTag(object),othTag=othIsArr?arrayTag:getTag(other);objTag=objTag==argsTag?objectTag:objTag;othTag=othTag==argsTag?objectTag:othTag;var objIsObj=objTag==objectTag,othIsObj=othTag==objectTag,isSameTag=objTag==othTag;if(isSameTag&&isBuffer(object)){if(!isBuffer(other)){return false;}objIsArr=true;objIsObj=false;}if(isSameTag&&!objIsObj){stack||(stack=new Stack());return objIsArr||isTypedArray(object)?equalArrays(object,other,bitmask,customizer,equalFunc,stack):equalByTag(object,other,objTag,bitmask,customizer,equalFunc,stack);}if(!(bitmask&COMPARE_PARTIAL_FLAG)){var objIsWrapped=objIsObj&&hasOwnProperty.call(object,'__wrapped__'),othIsWrapped=othIsObj&&hasOwnProperty.call(other,'__wrapped__');if(objIsWrapped||othIsWrapped){var objUnwrapped=objIsWrapped?object.value():object,othUnwrapped=othIsWrapped?other.value():other;stack||(stack=new Stack());return equalFunc(objUnwrapped,othUnwrapped,bitmask,customizer,stack);}}if(!isSameTag){return false;}stack||(stack=new Stack());return equalObjects(object,other,bitmask,customizer,equalFunc,stack);}/**\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 */function baseIsMap(value){return isObjectLike(value)&&getTag(value)==mapTag;}/**\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 */function baseIsMatch(object,source,matchData,customizer){var index=matchData.length,length=index,noCustomizer=!customizer;if(object==null){return!length;}object=Object(object);while(index--){var data=matchData[index];if(noCustomizer&&data[2]?data[1]!==object[data[0]]:!(data[0]in object)){return false;}}while(++index<length){data=matchData[index];var key=data[0],objValue=object[key],srcValue=data[1];if(noCustomizer&&data[2]){if(objValue===undefined&&!(key in object)){return false;}}else{var stack=new Stack();if(customizer){var result=customizer(objValue,srcValue,key,object,source,stack);}if(!(result===undefined?baseIsEqual(srcValue,objValue,COMPARE_PARTIAL_FLAG|COMPARE_UNORDERED_FLAG,customizer,stack):result)){return false;}}}return true;}/**\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 */function baseIsNative(value){if(!isObject(value)||isMasked(value)){return false;}var pattern=isFunction(value)?reIsNative:reIsHostCtor;return pattern.test(toSource(value));}/**\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 */function baseIsRegExp(value){return isObjectLike(value)&&baseGetTag(value)==regexpTag;}/**\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 */function baseIsSet(value){return isObjectLike(value)&&getTag(value)==setTag;}/**\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 */function baseIsTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[baseGetTag(value)];}/**\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 */function baseIteratee(value){// 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.\nif(typeof value==='function'){return value;}if(value==null){return identity;}if((typeof value==='undefined'?'undefined':_typeof(value))==='object'){return isArray(value)?baseMatchesProperty(value[0],value[1]):baseMatches(value);}return property(value);}/**\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 */function baseKeys(object){if(!isPrototype(object)){return nativeKeys(object);}var result=[];for(var key in Object(object)){if(hasOwnProperty.call(object,key)&&key!='constructor'){result.push(key);}}return result;}/**\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 */function baseKeysIn(object){if(!isObject(object)){return nativeKeysIn(object);}var isProto=isPrototype(object),result=[];for(var key in object){if(!(key=='constructor'&&(isProto||!hasOwnProperty.call(object,key)))){result.push(key);}}return result;}/**\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 */function baseLt(value,other){return value<other;}/**\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 */function baseMap(collection,iteratee){var index=-1,result=isArrayLike(collection)?Array(collection.length):[];baseEach(collection,function(value,key,collection){result[++index]=iteratee(value,key,collection);});return result;}/**\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 */function baseMatches(source){var matchData=getMatchData(source);if(matchData.length==1&&matchData[0][2]){return matchesStrictComparable(matchData[0][0],matchData[0][1]);}return function(object){return object===source||baseIsMatch(object,source,matchData);};}/**\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 */function baseMatchesProperty(path,srcValue){if(isKey(path)&&isStrictComparable(srcValue)){return matchesStrictComparable(toKey(path),srcValue);}return function(object){var objValue=get(object,path);return objValue===undefined&&objValue===srcValue?hasIn(object,path):baseIsEqual(srcValue,objValue,COMPARE_PARTIAL_FLAG|COMPARE_UNORDERED_FLAG);};}/**\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 */function baseMerge(object,source,srcIndex,customizer,stack){if(object===source){return;}baseFor(source,function(srcValue,key){if(isObject(srcValue)){stack||(stack=new Stack());baseMergeDeep(object,source,key,srcIndex,baseMerge,customizer,stack);}else{var newValue=customizer?customizer(safeGet(object,key),srcValue,key+'',object,source,stack):undefined;if(newValue===undefined){newValue=srcValue;}assignMergeValue(object,key,newValue);}},keysIn);}/**\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 */function baseMergeDeep(object,source,key,srcIndex,mergeFunc,customizer,stack){var objValue=safeGet(object,key),srcValue=safeGet(source,key),stacked=stack.get(srcValue);if(stacked){assignMergeValue(object,key,stacked);return;}var newValue=customizer?customizer(objValue,srcValue,key+'',object,source,stack):undefined;var isCommon=newValue===undefined;if(isCommon){var isArr=isArray(srcValue),isBuff=!isArr&&isBuffer(srcValue),isTyped=!isArr&&!isBuff&&isTypedArray(srcValue);newValue=srcValue;if(isArr||isBuff||isTyped){if(isArray(objValue)){newValue=objValue;}else if(isArrayLikeObject(objValue)){newValue=copyArray(objValue);}else if(isBuff){isCommon=false;newValue=cloneBuffer(srcValue,true);}else if(isTyped){isCommon=false;newValue=cloneTypedArray(srcValue,true);}else{newValue=[];}}else if(isPlainObject(srcValue)||isArguments(srcValue)){newValue=objValue;if(isArguments(objValue)){newValue=toPlainObject(objValue);}else if(!isObject(objValue)||srcIndex&&isFunction(objValue)){newValue=initCloneObject(srcValue);}}else{isCommon=false;}}if(isCommon){// Recursively merge objects and arrays (susceptible to call stack limits).\nstack.set(srcValue,newValue);mergeFunc(newValue,srcValue,srcIndex,customizer,stack);stack['delete'](srcValue);}assignMergeValue(object,key,newValue);}/**\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 */function baseNth(array,n){var length=array.length;if(!length){return;}n+=n<0?length:0;return isIndex(n,length)?array[n]:undefined;}/**\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 */function baseOrderBy(collection,iteratees,orders){var index=-1;iteratees=arrayMap(iteratees.length?iteratees:[identity],baseUnary(getIteratee()));var result=baseMap(collection,function(value,key,collection){var criteria=arrayMap(iteratees,function(iteratee){return iteratee(value);});return{criteria:criteria,index:++index,value:value};});return baseSortBy(result,function(object,other){return compareMultiple(object,other,orders);});}/**\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 */function basePick(object,paths){return basePickBy(object,paths,function(value,path){return hasIn(object,path);});}/**\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 */function basePickBy(object,paths,predicate){var index=-1,length=paths.length,result={};while(++index<length){var path=paths[index],value=baseGet(object,path);if(predicate(value,path)){baseSet(result,castPath(path,object),value);}}return result;}/**\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 */function basePropertyDeep(path){return function(object){return baseGet(object,path);};}/**\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 */function basePullAll(array,values,iteratee,comparator){var indexOf=comparator?baseIndexOfWith:baseIndexOf,index=-1,length=values.length,seen=array;if(array===values){values=copyArray(values);}if(iteratee){seen=arrayMap(array,baseUnary(iteratee));}while(++index<length){var fromIndex=0,value=values[index],computed=iteratee?iteratee(value):value;while((fromIndex=indexOf(seen,computed,fromIndex,comparator))>-1){if(seen!==array){splice.call(seen,fromIndex,1);}splice.call(array,fromIndex,1);}}return array;}/**\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 */function basePullAt(array,indexes){var length=array?indexes.length:0,lastIndex=length-1;while(length--){var index=indexes[length];if(length==lastIndex||index!==previous){var previous=index;if(isIndex(index)){splice.call(array,index,1);}else{baseUnset(array,index);}}}return array;}/**\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 */function baseRandom(lower,upper){return lower+nativeFloor(nativeRandom()*(upper-lower+1));}/**\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 */function baseRange(start,end,step,fromRight){var index=-1,length=nativeMax(nativeCeil((end-start)/(step||1)),0),result=Array(length);while(length--){result[fromRight?length:++index]=start;start+=step;}return result;}/**\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 */function baseRepeat(string,n){var result='';if(!string||n<1||n>MAX_SAFE_INTEGER){return result;}// Leverage the exponentiation by squaring algorithm for a faster repeat.\n// See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\ndo{if(n%2){result+=string;}n=nativeFloor(n/2);if(n){string+=string;}}while(n);return result;}/**\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 */function baseRest(func,start){return setToString(overRest(func,start,identity),func+'');}/**\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 */function baseSample(collection){return arraySample(values(collection));}/**\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 */function baseSampleSize(collection,n){var array=values(collection);return shuffleSelf(array,baseClamp(n,0,array.length));}/**\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 */function baseSet(object,path,value,customizer){if(!isObject(object)){return object;}path=castPath(path,object);var index=-1,length=path.length,lastIndex=length-1,nested=object;while(nested!=null&&++index<length){var key=toKey(path[index]),newValue=value;if(index!=lastIndex){var objValue=nested[key];newValue=customizer?customizer(objValue,key,nested):undefined;if(newValue===undefined){newValue=isObject(objValue)?objValue:isIndex(path[index+1])?[]:{};}}assignValue(nested,key,newValue);nested=nested[key];}return object;}/**\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 */var baseSetData=!metaMap?identity:function(func,data){metaMap.set(func,data);return func;};/**\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 */var baseSetToString=!defineProperty?identity:function(func,string){return defineProperty(func,'toString',{configurable:true,enumerable:false,value:constant(string),writable:true});};/**\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 */function baseShuffle(collection){return shuffleSelf(values(collection));}/**\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 */function baseSlice(array,start,end){var index=-1,length=array.length;if(start<0){start=-start>length?0:length+start;}end=end>length?length:end;if(end<0){end+=length;}length=start>end?0:end-start>>>0;start>>>=0;var result=Array(length);while(++index<length){result[index]=array[index+start];}return result;}/**\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 */function baseSome(collection,predicate){var result;baseEach(collection,function(value,index,collection){result=predicate(value,index,collection);return!result;});return!!result;}/**\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 */function baseSortedIndex(array,value,retHighest){var low=0,high=array==null?low:array.length;if(typeof value==='number'&&value===value&&high<=HALF_MAX_ARRAY_LENGTH){while(low<high){var mid=low+high>>>1,computed=array[mid];if(computed!==null&&!isSymbol(computed)&&(retHighest?computed<=value:computed<value)){low=mid+1;}else{high=mid;}}return high;}return baseSortedIndexBy(array,value,identity,retHighest);}/**\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 */function baseSortedIndexBy(array,value,iteratee,retHighest){value=iteratee(value);var low=0,high=array==null?0:array.length,valIsNaN=value!==value,valIsNull=value===null,valIsSymbol=isSymbol(value),valIsUndefined=value===undefined;while(low<high){var mid=nativeFloor((low+high)/2),computed=iteratee(array[mid]),othIsDefined=computed!==undefined,othIsNull=computed===null,othIsReflexive=computed===computed,othIsSymbol=isSymbol(computed);if(valIsNaN){var setLow=retHighest||othIsReflexive;}else if(valIsUndefined){setLow=othIsReflexive&&(retHighest||othIsDefined);}else if(valIsNull){setLow=othIsReflexive&&othIsDefined&&(retHighest||!othIsNull);}else if(valIsSymbol){setLow=othIsReflexive&&othIsDefined&&!othIsNull&&(retHighest||!othIsSymbol);}else if(othIsNull||othIsSymbol){setLow=false;}else{setLow=retHighest?computed<=value:computed<value;}if(setLow){low=mid+1;}else{high=mid;}}return nativeMin(high,MAX_ARRAY_INDEX);}/**\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 */function baseSortedUniq(array,iteratee){var index=-1,length=array.length,resIndex=0,result=[];while(++index<length){var value=array[index],computed=iteratee?iteratee(value):value;if(!index||!eq(computed,seen)){var seen=computed;result[resIndex++]=value===0?0:value;}}return result;}/**\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 */function baseToNumber(value){if(typeof value==='number'){return value;}if(isSymbol(value)){return NAN;}return+value;}/**\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 */function baseToString(value){// Exit early for strings to avoid a performance hit in some environments.\nif(typeof value==='string'){return value;}if(isArray(value)){// Recursively convert values (susceptible to call stack limits).\nreturn arrayMap(value,baseToString)+'';}if(isSymbol(value)){return symbolToString?symbolToString.call(value):'';}var result=value+'';return result=='0'&&1/value==-INFINITY?'-0':result;}/**\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 */function baseUniq(array,iteratee,comparator){var index=-1,includes=arrayIncludes,length=array.length,isCommon=true,result=[],seen=result;if(comparator){isCommon=false;includes=arrayIncludesWith;}else if(length>=LARGE_ARRAY_SIZE){var set=iteratee?null:createSet(array);if(set){return setToArray(set);}isCommon=false;includes=cacheHas;seen=new SetCache();}else{seen=iteratee?[]:result;}outer:while(++index<length){var value=array[index],computed=iteratee?iteratee(value):value;value=comparator||value!==0?value:0;if(isCommon&&computed===computed){var seenIndex=seen.length;while(seenIndex--){if(seen[seenIndex]===computed){continue outer;}}if(iteratee){seen.push(computed);}result.push(value);}else if(!includes(seen,computed,comparator)){if(seen!==result){seen.push(computed);}result.push(value);}}return result;}/**\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 */function baseUnset(object,path){path=castPath(path,object);object=parent(object,path);return object==null||delete object[toKey(last(path))];}/**\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 */function baseUpdate(object,path,updater,customizer){return baseSet(object,path,updater(baseGet(object,path)),customizer);}/**\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 */function baseWhile(array,predicate,isDrop,fromRight){var length=array.length,index=fromRight?length:-1;while((fromRight?index--:++index<length)&&predicate(array[index],index,array)){}return isDrop?baseSlice(array,fromRight?0:index,fromRight?index+1:length):baseSlice(array,fromRight?index+1:0,fromRight?length:index);}/**\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 */function baseWrapperValue(value,actions){var result=value;if(result instanceof LazyWrapper){result=result.value();}return arrayReduce(actions,function(result,action){return action.func.apply(action.thisArg,arrayPush([result],action.args));},result);}/**\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 */function baseXor(arrays,iteratee,comparator){var length=arrays.length;if(length<2){return length?baseUniq(arrays[0]):[];}var index=-1,result=Array(length);while(++index<length){var array=arrays[index],othIndex=-1;while(++othIndex<length){if(othIndex!=index){result[index]=baseDifference(result[index]||array,arrays[othIndex],iteratee,comparator);}}}return baseUniq(baseFlatten(result,1),iteratee,comparator);}/**\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 */function baseZipObject(props,values,assignFunc){var index=-1,length=props.length,valsLength=values.length,result={};while(++index<length){var value=index<valsLength?values[index]:undefined;assignFunc(result,props[index],value);}return result;}/**\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 */function castArrayLikeObject(value){return isArrayLikeObject(value)?value:[];}/**\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 */function castFunction(value){return typeof value==='function'?value:identity;}/**\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 */function castPath(value,object){if(isArray(value)){return value;}return isKey(value,object)?[value]:stringToPath(toString(value));}/**\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 */var castRest=baseRest;/**\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 */function castSlice(array,start,end){var length=array.length;end=end===undefined?length:end;return!start&&end>=length?array:baseSlice(array,start,end);}/**\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 */var clearTimeout=ctxClearTimeout||function(id){return root.clearTimeout(id);};/**\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 */function cloneBuffer(buffer,isDeep){if(isDeep){return buffer.slice();}var length=buffer.length,result=allocUnsafe?allocUnsafe(length):new buffer.constructor(length);buffer.copy(result);return result;}/**\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 */function cloneArrayBuffer(arrayBuffer){var result=new arrayBuffer.constructor(arrayBuffer.byteLength);new Uint8Array(result).set(new Uint8Array(arrayBuffer));return result;}/**\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 */function cloneDataView(dataView,isDeep){var buffer=isDeep?cloneArrayBuffer(dataView.buffer):dataView.buffer;return new dataView.constructor(buffer,dataView.byteOffset,dataView.byteLength);}/**\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 */function cloneRegExp(regexp){var result=new regexp.constructor(regexp.source,reFlags.exec(regexp));result.lastIndex=regexp.lastIndex;return result;}/**\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 */function cloneSymbol(symbol){return symbolValueOf?Object(symbolValueOf.call(symbol)):{};}/**\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 */function cloneTypedArray(typedArray,isDeep){var buffer=isDeep?cloneArrayBuffer(typedArray.buffer):typedArray.buffer;return new typedArray.constructor(buffer,typedArray.byteOffset,typedArray.length);}/**\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 */function compareAscending(value,other){if(value!==other){var valIsDefined=value!==undefined,valIsNull=value===null,valIsReflexive=value===value,valIsSymbol=isSymbol(value);var othIsDefined=other!==undefined,othIsNull=other===null,othIsReflexive=other===other,othIsSymbol=isSymbol(other);if(!othIsNull&&!othIsSymbol&&!valIsSymbol&&value>other||valIsSymbol&&othIsDefined&&othIsReflexive&&!othIsNull&&!othIsSymbol||valIsNull&&othIsDefined&&othIsReflexive||!valIsDefined&&othIsReflexive||!valIsReflexive){return 1;}if(!valIsNull&&!valIsSymbol&&!othIsSymbol&&value<other||othIsSymbol&&valIsDefined&&valIsReflexive&&!valIsNull&&!valIsSymbol||othIsNull&&valIsDefined&&valIsReflexive||!othIsDefined&&valIsReflexive||!othIsReflexive){return-1;}}return 0;}/**\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 */function compareMultiple(object,other,orders){var index=-1,objCriteria=object.criteria,othCriteria=other.criteria,length=objCriteria.length,ordersLength=orders.length;while(++index<length){var result=compareAscending(objCriteria[index],othCriteria[index]);if(result){if(index>=ordersLength){return result;}var order=orders[index];return result*(order=='desc'?-1:1);}}// 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.\nreturn object.index-other.index;}/**\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 */function composeArgs(args,partials,holders,isCurried){var argsIndex=-1,argsLength=args.length,holdersLength=holders.length,leftIndex=-1,leftLength=partials.length,rangeLength=nativeMax(argsLength-holdersLength,0),result=Array(leftLength+rangeLength),isUncurried=!isCurried;while(++leftIndex<leftLength){result[leftIndex]=partials[leftIndex];}while(++argsIndex<holdersLength){if(isUncurried||argsIndex<argsLength){result[holders[argsIndex]]=args[argsIndex];}}while(rangeLength--){result[leftIndex++]=args[argsIndex++];}return result;}/**\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 */function composeArgsRight(args,partials,holders,isCurried){var argsIndex=-1,argsLength=args.length,holdersIndex=-1,holdersLength=holders.length,rightIndex=-1,rightLength=partials.length,rangeLength=nativeMax(argsLength-holdersLength,0),result=Array(rangeLength+rightLength),isUncurried=!isCurried;while(++argsIndex<rangeLength){result[argsIndex]=args[argsIndex];}var offset=argsIndex;while(++rightIndex<rightLength){result[offset+rightIndex]=partials[rightIndex];}while(++holdersIndex<holdersLength){if(isUncurried||argsIndex<argsLength){result[offset+holders[holdersIndex]]=args[argsIndex++];}}return result;}/**\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 */function copyArray(source,array){var index=-1,length=source.length;array||(array=Array(length));while(++index<length){array[index]=source[index];}return array;}/**\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 */function copyObject(source,props,object,customizer){var isNew=!object;object||(object={});var index=-1,length=props.length;while(++index<length){var key=props[index];var newValue=customizer?customizer(object[key],source[key],key,object,source):undefined;if(newValue===undefined){newValue=source[key];}if(isNew){baseAssignValue(object,key,newValue);}else{assignValue(object,key,newValue);}}return object;}/**\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 */function copySymbols(source,object){return copyObject(source,getSymbols(source),object);}/**\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 */function copySymbolsIn(source,object){return copyObject(source,getSymbolsIn(source),object);}/**\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 */function createAggregator(setter,initializer){return function(collection,iteratee){var func=isArray(collection)?arrayAggregator:baseAggregator,accumulator=initializer?initializer():{};return func(collection,setter,getIteratee(iteratee,2),accumulator);};}/**\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 */function createAssigner(assigner){return baseRest(function(object,sources){var index=-1,length=sources.length,customizer=length>1?sources[length-1]:undefined,guard=length>2?sources[2]:undefined;customizer=assigner.length>3&&typeof customizer==='function'?(length--,customizer):undefined;if(guard&&isIterateeCall(sources[0],sources[1],guard)){customizer=length<3?undefined:customizer;length=1;}object=Object(object);while(++index<length){var source=sources[index];if(source){assigner(object,source,index,customizer);}}return object;});}/**\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 */function createBaseEach(eachFunc,fromRight){return function(collection,iteratee){if(collection==null){return collection;}if(!isArrayLike(collection)){return eachFunc(collection,iteratee);}var length=collection.length,index=fromRight?length:-1,iterable=Object(collection);while(fromRight?index--:++index<length){if(iteratee(iterable[index],index,iterable)===false){break;}}return collection;};}/**\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 */function createBaseFor(fromRight){return function(object,iteratee,keysFunc){var index=-1,iterable=Object(object),props=keysFunc(object),length=props.length;while(length--){var key=props[fromRight?length:++index];if(iteratee(iterable[key],key,iterable)===false){break;}}return object;};}/**\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 */function createBind(func,bitmask,thisArg){var isBind=bitmask&WRAP_BIND_FLAG,Ctor=createCtor(func);function wrapper(){var fn=this&&this!==root&&this instanceof wrapper?Ctor:func;return fn.apply(isBind?thisArg:this,arguments);}return wrapper;}/**\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 */function createCaseFirst(methodName){return function(string){string=toString(string);var strSymbols=hasUnicode(string)?stringToArray(string):undefined;var chr=strSymbols?strSymbols[0]:string.charAt(0);var trailing=strSymbols?castSlice(strSymbols,1).join(''):string.slice(1);return chr[methodName]()+trailing;};}/**\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 */function createCompounder(callback){return function(string){return arrayReduce(words(deburr(string).replace(reApos,'')),callback,'');};}/**\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 */function createCtor(Ctor){return function(){// 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.\nvar args=arguments;switch(args.length){case 0:return new Ctor();case 1:return new Ctor(args[0]);case 2:return new Ctor(args[0],args[1]);case 3:return new Ctor(args[0],args[1],args[2]);case 4:return new Ctor(args[0],args[1],args[2],args[3]);case 5:return new Ctor(args[0],args[1],args[2],args[3],args[4]);case 6:return new Ctor(args[0],args[1],args[2],args[3],args[4],args[5]);case 7:return new Ctor(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);}var thisBinding=baseCreate(Ctor.prototype),result=Ctor.apply(thisBinding,args);// Mimic the constructor's `return` behavior.\n// See https://es5.github.io/#x13.2.2 for more details.\nreturn isObject(result)?result:thisBinding;};}/**\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 */function createCurry(func,bitmask,arity){var Ctor=createCtor(func);function wrapper(){var length=arguments.length,args=Array(length),index=length,placeholder=getHolder(wrapper);while(index--){args[index]=arguments[index];}var holders=length<3&&args[0]!==placeholder&&args[length-1]!==placeholder?[]:replaceHolders(args,placeholder);length-=holders.length;if(length<arity){return createRecurry(func,bitmask,createHybrid,wrapper.placeholder,undefined,args,holders,undefined,undefined,arity-length);}var fn=this&&this!==root&&this instanceof wrapper?Ctor:func;return apply(fn,this,args);}return wrapper;}/**\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 */function createFind(findIndexFunc){return function(collection,predicate,fromIndex){var iterable=Object(collection);if(!isArrayLike(collection)){var iteratee=getIteratee(predicate,3);collection=keys(collection);predicate=function predicate(key){return iteratee(iterable[key],key,iterable);};}var index=findIndexFunc(collection,predicate,fromIndex);return index>-1?iterable[iteratee?collection[index]:index]:undefined;};}/**\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 */function createFlow(fromRight){return flatRest(function(funcs){var length=funcs.length,index=length,prereq=LodashWrapper.prototype.thru;if(fromRight){funcs.reverse();}while(index--){var func=funcs[index];if(typeof func!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}if(prereq&&!wrapper&&getFuncName(func)=='wrapper'){var wrapper=new LodashWrapper([],true);}}index=wrapper?index:length;while(++index<length){func=funcs[index];var funcName=getFuncName(func),data=funcName=='wrapper'?getData(func):undefined;if(data&&isLaziable(data[0])&&data[1]==(WRAP_ARY_FLAG|WRAP_CURRY_FLAG|WRAP_PARTIAL_FLAG|WRAP_REARG_FLAG)&&!data[4].length&&data[9]==1){wrapper=wrapper[getFuncName(data[0])].apply(wrapper,data[3]);}else{wrapper=func.length==1&&isLaziable(func)?wrapper[funcName]():wrapper.thru(func);}}return function(){var args=arguments,value=args[0];if(wrapper&&args.length==1&&isArray(value)){return wrapper.plant(value).value();}var index=0,result=length?funcs[index].apply(this,args):value;while(++index<length){result=funcs[index].call(this,result);}return result;};});}/**\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 */function createHybrid(func,bitmask,thisArg,partials,holders,partialsRight,holdersRight,argPos,ary,arity){var isAry=bitmask&WRAP_ARY_FLAG,isBind=bitmask&WRAP_BIND_FLAG,isBindKey=bitmask&WRAP_BIND_KEY_FLAG,isCurried=bitmask&(WRAP_CURRY_FLAG|WRAP_CURRY_RIGHT_FLAG),isFlip=bitmask&WRAP_FLIP_FLAG,Ctor=isBindKey?undefined:createCtor(func);function wrapper(){var length=arguments.length,args=Array(length),index=length;while(index--){args[index]=arguments[index];}if(isCurried){var placeholder=getHolder(wrapper),holdersCount=countHolders(args,placeholder);}if(partials){args=composeArgs(args,partials,holders,isCurried);}if(partialsRight){args=composeArgsRight(args,partialsRight,holdersRight,isCurried);}length-=holdersCount;if(isCurried&&length<arity){var newHolders=replaceHolders(args,placeholder);return createRecurry(func,bitmask,createHybrid,wrapper.placeholder,thisArg,args,newHolders,argPos,ary,arity-length);}var thisBinding=isBind?thisArg:this,fn=isBindKey?thisBinding[func]:func;length=args.length;if(argPos){args=reorder(args,argPos);}else if(isFlip&&length>1){args.reverse();}if(isAry&&ary<length){args.length=ary;}if(this&&this!==root&&this instanceof wrapper){fn=Ctor||createCtor(fn);}return fn.apply(thisBinding,args);}return wrapper;}/**\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 */function createInverter(setter,toIteratee){return function(object,iteratee){return baseInverter(object,setter,toIteratee(iteratee),{});};}/**\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 */function createMathOperation(operator,defaultValue){return function(value,other){var result;if(value===undefined&&other===undefined){return defaultValue;}if(value!==undefined){result=value;}if(other!==undefined){if(result===undefined){return other;}if(typeof value==='string'||typeof other==='string'){value=baseToString(value);other=baseToString(other);}else{value=baseToNumber(value);other=baseToNumber(other);}result=operator(value,other);}return result;};}/**\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 */function createOver(arrayFunc){return flatRest(function(iteratees){iteratees=arrayMap(iteratees,baseUnary(getIteratee()));return baseRest(function(args){var thisArg=this;return arrayFunc(iteratees,function(iteratee){return apply(iteratee,thisArg,args);});});});}/**\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 */function createPadding(length,chars){chars=chars===undefined?' ':baseToString(chars);var charsLength=chars.length;if(charsLength<2){return charsLength?baseRepeat(chars,length):chars;}var result=baseRepeat(chars,nativeCeil(length/stringSize(chars)));return hasUnicode(chars)?castSlice(stringToArray(result),0,length).join(''):result.slice(0,length);}/**\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 */function createPartial(func,bitmask,thisArg,partials){var isBind=bitmask&WRAP_BIND_FLAG,Ctor=createCtor(func);function wrapper(){var argsIndex=-1,argsLength=arguments.length,leftIndex=-1,leftLength=partials.length,args=Array(leftLength+argsLength),fn=this&&this!==root&&this instanceof wrapper?Ctor:func;while(++leftIndex<leftLength){args[leftIndex]=partials[leftIndex];}while(argsLength--){args[leftIndex++]=arguments[++argsIndex];}return apply(fn,isBind?thisArg:this,args);}return wrapper;}/**\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 */function createRange(fromRight){return function(start,end,step){if(step&&typeof step!=='number'&&isIterateeCall(start,end,step)){end=step=undefined;}// Ensure the sign of `-0` is preserved.\nstart=toFinite(start);if(end===undefined){end=start;start=0;}else{end=toFinite(end);}step=step===undefined?start<end?1:-1:toFinite(step);return baseRange(start,end,step,fromRight);};}/**\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 */function createRelationalOperation(operator){return function(value,other){if(!(typeof value==='string'&&typeof other==='string')){value=toNumber(value);other=toNumber(other);}return operator(value,other);};}/**\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 */function createRecurry(func,bitmask,wrapFunc,placeholder,thisArg,partials,holders,argPos,ary,arity){var isCurry=bitmask&WRAP_CURRY_FLAG,newHolders=isCurry?holders:undefined,newHoldersRight=isCurry?undefined:holders,newPartials=isCurry?partials:undefined,newPartialsRight=isCurry?undefined:partials;bitmask|=isCurry?WRAP_PARTIAL_FLAG:WRAP_PARTIAL_RIGHT_FLAG;bitmask&=~(isCurry?WRAP_PARTIAL_RIGHT_FLAG:WRAP_PARTIAL_FLAG);if(!(bitmask&WRAP_CURRY_BOUND_FLAG)){bitmask&=~(WRAP_BIND_FLAG|WRAP_BIND_KEY_FLAG);}var newData=[func,bitmask,thisArg,newPartials,newHolders,newPartialsRight,newHoldersRight,argPos,ary,arity];var result=wrapFunc.apply(undefined,newData);if(isLaziable(func)){setData(result,newData);}result.placeholder=placeholder;return setWrapToString(result,func,bitmask);}/**\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 */function createRound(methodName){var func=Math[methodName];return function(number,precision){number=toNumber(number);precision=precision==null?0:nativeMin(toInteger(precision),292);if(precision){// Shift with exponential notation to avoid floating-point issues.\n// See [MDN](https://mdn.io/round#Examples) for more details.\nvar pair=(toString(number)+'e').split('e'),value=func(pair[0]+'e'+(+pair[1]+precision));pair=(toString(value)+'e').split('e');return+(pair[0]+'e'+(+pair[1]-precision));}return func(number);};}/**\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 */var createSet=!(Set&&1/setToArray(new Set([,-0]))[1]==INFINITY)?noop:function(values){return new Set(values);};/**\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 */function createToPairs(keysFunc){return function(object){var tag=getTag(object);if(tag==mapTag){return mapToArray(object);}if(tag==setTag){return setToPairs(object);}return baseToPairs(object,keysFunc(object));};}/**\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 */function createWrap(func,bitmask,thisArg,partials,holders,argPos,ary,arity){var isBindKey=bitmask&WRAP_BIND_KEY_FLAG;if(!isBindKey&&typeof func!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}var length=partials?partials.length:0;if(!length){bitmask&=~(WRAP_PARTIAL_FLAG|WRAP_PARTIAL_RIGHT_FLAG);partials=holders=undefined;}ary=ary===undefined?ary:nativeMax(toInteger(ary),0);arity=arity===undefined?arity:toInteger(arity);length-=holders?holders.length:0;if(bitmask&WRAP_PARTIAL_RIGHT_FLAG){var partialsRight=partials,holdersRight=holders;partials=holders=undefined;}var data=isBindKey?undefined:getData(func);var newData=[func,bitmask,thisArg,partials,holders,partialsRight,holdersRight,argPos,ary,arity];if(data){mergeData(newData,data);}func=newData[0];bitmask=newData[1];thisArg=newData[2];partials=newData[3];holders=newData[4];arity=newData[9]=newData[9]===undefined?isBindKey?0:func.length:nativeMax(newData[9]-length,0);if(!arity&&bitmask&(WRAP_CURRY_FLAG|WRAP_CURRY_RIGHT_FLAG)){bitmask&=~(WRAP_CURRY_FLAG|WRAP_CURRY_RIGHT_FLAG);}if(!bitmask||bitmask==WRAP_BIND_FLAG){var result=createBind(func,bitmask,thisArg);}else if(bitmask==WRAP_CURRY_FLAG||bitmask==WRAP_CURRY_RIGHT_FLAG){result=createCurry(func,bitmask,arity);}else if((bitmask==WRAP_PARTIAL_FLAG||bitmask==(WRAP_BIND_FLAG|WRAP_PARTIAL_FLAG))&&!holders.length){result=createPartial(func,bitmask,thisArg,partials);}else{result=createHybrid.apply(undefined,newData);}var setter=data?baseSetData:setData;return setWrapToString(setter(result,newData),func,bitmask);}/**\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 */function customDefaultsAssignIn(objValue,srcValue,key,object){if(objValue===undefined||eq(objValue,objectProto[key])&&!hasOwnProperty.call(object,key)){return srcValue;}return objValue;}/**\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 */function customDefaultsMerge(objValue,srcValue,key,object,source,stack){if(isObject(objValue)&&isObject(srcValue)){// Recursively merge objects and arrays (susceptible to call stack limits).\nstack.set(srcValue,objValue);baseMerge(objValue,srcValue,undefined,customDefaultsMerge,stack);stack['delete'](srcValue);}return objValue;}/**\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 */function customOmitClone(value){return isPlainObject(value)?undefined:value;}/**\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 */function equalArrays(array,other,bitmask,customizer,equalFunc,stack){var isPartial=bitmask&COMPARE_PARTIAL_FLAG,arrLength=array.length,othLength=other.length;if(arrLength!=othLength&&!(isPartial&&othLength>arrLength)){return false;}// Assume cyclic values are equal.\nvar stacked=stack.get(array);if(stacked&&stack.get(other)){return stacked==other;}var index=-1,result=true,seen=bitmask&COMPARE_UNORDERED_FLAG?new SetCache():undefined;stack.set(array,other);stack.set(other,array);// Ignore non-index properties.\nwhile(++index<arrLength){var arrValue=array[index],othValue=other[index];if(customizer){var compared=isPartial?customizer(othValue,arrValue,index,other,array,stack):customizer(arrValue,othValue,index,array,other,stack);}if(compared!==undefined){if(compared){continue;}result=false;break;}// Recursively compare arrays (susceptible to call stack limits).\nif(seen){if(!arraySome(other,function(othValue,othIndex){if(!cacheHas(seen,othIndex)&&(arrValue===othValue||equalFunc(arrValue,othValue,bitmask,customizer,stack))){return seen.push(othIndex);}})){result=false;break;}}else if(!(arrValue===othValue||equalFunc(arrValue,othValue,bitmask,customizer,stack))){result=false;break;}}stack['delete'](array);stack['delete'](other);return result;}/**\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 */function equalByTag(object,other,tag,bitmask,customizer,equalFunc,stack){switch(tag){case dataViewTag:if(object.byteLength!=other.byteLength||object.byteOffset!=other.byteOffset){return false;}object=object.buffer;other=other.buffer;case arrayBufferTag:if(object.byteLength!=other.byteLength||!equalFunc(new Uint8Array(object),new Uint8Array(other))){return false;}return true;case boolTag:case dateTag:case numberTag:// Coerce booleans to `1` or `0` and dates to milliseconds.\n// Invalid dates are coerced to `NaN`.\nreturn eq(+object,+other);case errorTag:return object.name==other.name&&object.message==other.message;case regexpTag:case stringTag:// 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.\nreturn object==other+'';case mapTag:var convert=mapToArray;case setTag:var isPartial=bitmask&COMPARE_PARTIAL_FLAG;convert||(convert=setToArray);if(object.size!=other.size&&!isPartial){return false;}// Assume cyclic values are equal.\nvar stacked=stack.get(object);if(stacked){return stacked==other;}bitmask|=COMPARE_UNORDERED_FLAG;// Recursively compare objects (susceptible to call stack limits).\nstack.set(object,other);var result=equalArrays(convert(object),convert(other),bitmask,customizer,equalFunc,stack);stack['delete'](object);return result;case symbolTag:if(symbolValueOf){return symbolValueOf.call(object)==symbolValueOf.call(other);}}return false;}/**\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 */function equalObjects(object,other,bitmask,customizer,equalFunc,stack){var isPartial=bitmask&COMPARE_PARTIAL_FLAG,objProps=getAllKeys(object),objLength=objProps.length,othProps=getAllKeys(other),othLength=othProps.length;if(objLength!=othLength&&!isPartial){return false;}var index=objLength;while(index--){var key=objProps[index];if(!(isPartial?key in other:hasOwnProperty.call(other,key))){return false;}}// Assume cyclic values are equal.\nvar stacked=stack.get(object);if(stacked&&stack.get(other)){return stacked==other;}var result=true;stack.set(object,other);stack.set(other,object);var skipCtor=isPartial;while(++index<objLength){key=objProps[index];var objValue=object[key],othValue=other[key];if(customizer){var compared=isPartial?customizer(othValue,objValue,key,other,object,stack):customizer(objValue,othValue,key,object,other,stack);}// Recursively compare objects (susceptible to call stack limits).\nif(!(compared===undefined?objValue===othValue||equalFunc(objValue,othValue,bitmask,customizer,stack):compared)){result=false;break;}skipCtor||(skipCtor=key=='constructor');}if(result&&!skipCtor){var objCtor=object.constructor,othCtor=other.constructor;// Non `Object` object instances with different constructors are not equal.\nif(objCtor!=othCtor&&'constructor'in object&&'constructor'in other&&!(typeof objCtor==='function'&&objCtor instanceof objCtor&&typeof othCtor==='function'&&othCtor instanceof othCtor)){result=false;}}stack['delete'](object);stack['delete'](other);return result;}/**\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 */function flatRest(func){return setToString(overRest(func,undefined,flatten),func+'');}/**\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 */function getAllKeys(object){return baseGetAllKeys(object,keys,getSymbols);}/**\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 */function getAllKeysIn(object){return baseGetAllKeys(object,keysIn,getSymbolsIn);}/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */var getData=!metaMap?noop:function(func){return metaMap.get(func);};/**\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 */function getFuncName(func){var result=func.name+'',array=realNames[result],length=hasOwnProperty.call(realNames,result)?array.length:0;while(length--){var data=array[length],otherFunc=data.func;if(otherFunc==null||otherFunc==func){return data.name;}}return result;}/**\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 */function getHolder(func){var object=hasOwnProperty.call(lodash,'placeholder')?lodash:func;return object.placeholder;}/**\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 */function getIteratee(){var result=lodash.iteratee||iteratee;result=result===iteratee?baseIteratee:result;return arguments.length?result(arguments[0],arguments[1]):result;}/**\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 */function getMapData(map,key){var data=map.__data__;return isKeyable(key)?data[typeof key==='string'?'string':'hash']:data.map;}/**\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 */function getMatchData(object){var result=keys(object),length=result.length;while(length--){var key=result[length],value=object[key];result[length]=[key,value,isStrictComparable(value)];}return result;}/**\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 */function getNative(object,key){var value=getValue(object,key);return baseIsNative(value)?value:undefined;}/**\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 */function getRawTag(value){var isOwn=hasOwnProperty.call(value,symToStringTag),tag=value[symToStringTag];try{value[symToStringTag]=undefined;var unmasked=true;}catch(e){}var result=nativeObjectToString.call(value);if(unmasked){if(isOwn){value[symToStringTag]=tag;}else{delete value[symToStringTag];}}return result;}/**\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 */var getSymbols=!nativeGetSymbols?stubArray:function(object){if(object==null){return[];}object=Object(object);return arrayFilter(nativeGetSymbols(object),function(symbol){return propertyIsEnumerable.call(object,symbol);});};/**\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 */var getSymbolsIn=!nativeGetSymbols?stubArray:function(object){var result=[];while(object){arrayPush(result,getSymbols(object));object=getPrototype(object);}return result;};/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */var getTag=baseGetTag;// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif(DataView&&getTag(new DataView(new ArrayBuffer(1)))!=dataViewTag||Map&&getTag(new Map())!=mapTag||Promise&&getTag(Promise.resolve())!=promiseTag||Set&&getTag(new Set())!=setTag||WeakMap&&getTag(new WeakMap())!=weakMapTag){getTag=function getTag(value){var result=baseGetTag(value),Ctor=result==objectTag?value.constructor:undefined,ctorString=Ctor?toSource(Ctor):'';if(ctorString){switch(ctorString){case dataViewCtorString:return dataViewTag;case mapCtorString:return mapTag;case promiseCtorString:return promiseTag;case setCtorString:return setTag;case weakMapCtorString:return weakMapTag;}}return result;};}/**\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 */function getView(start,end,transforms){var index=-1,length=transforms.length;while(++index<length){var data=transforms[index],size=data.size;switch(data.type){case'drop':start+=size;break;case'dropRight':end-=size;break;case'take':end=nativeMin(end,start+size);break;case'takeRight':start=nativeMax(start,end-size);break;}}return{start:start,end:end};}/**\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 */function getWrapDetails(source){var match=source.match(reWrapDetails);return match?match[1].split(reSplitDetails):[];}/**\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 */function hasPath(object,path,hasFunc){path=castPath(path,object);var index=-1,length=path.length,result=false;while(++index<length){var key=toKey(path[index]);if(!(result=object!=null&&hasFunc(object,key))){break;}object=object[key];}if(result||++index!=length){return result;}length=object==null?0:object.length;return!!length&&isLength(length)&&isIndex(key,length)&&(isArray(object)||isArguments(object));}/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */function initCloneArray(array){var length=array.length,result=new array.constructor(length);// Add properties assigned by `RegExp#exec`.\nif(length&&typeof array[0]==='string'&&hasOwnProperty.call(array,'index')){result.index=array.index;result.input=array.input;}return result;}/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */function initCloneObject(object){return typeof object.constructor==='function'&&!isPrototype(object)?baseCreate(getPrototype(object)):{};}/**\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 */function initCloneByTag(object,tag,isDeep){var Ctor=object.constructor;switch(tag){case arrayBufferTag:return cloneArrayBuffer(object);case boolTag:case dateTag:return new Ctor(+object);case dataViewTag:return cloneDataView(object,isDeep);case float32Tag:case float64Tag:case int8Tag:case int16Tag:case int32Tag:case uint8Tag:case uint8ClampedTag:case uint16Tag:case uint32Tag:return cloneTypedArray(object,isDeep);case mapTag:return new Ctor();case numberTag:case stringTag:return new Ctor(object);case regexpTag:return cloneRegExp(object);case setTag:return new Ctor();case symbolTag:return cloneSymbol(object);}}/**\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 */function insertWrapDetails(source,details){var length=details.length;if(!length){return source;}var lastIndex=length-1;details[lastIndex]=(length>1?'& ':'')+details[lastIndex];details=details.join(length>2?', ':' ');return source.replace(reWrapComment,'{\\n/* [wrapped with '+details+'] */\\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 */function isFlattenable(value){return isArray(value)||isArguments(value)||!!(spreadableSymbol&&value&&value[spreadableSymbol]);}/**\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 */function isIndex(value,length){var type=typeof value==='undefined'?'undefined':_typeof(value);length=length==null?MAX_SAFE_INTEGER:length;return!!length&&(type=='number'||type!='symbol'&&reIsUint.test(value))&&value>-1&&value%1==0&&value<length;}/**\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 */function isIterateeCall(value,index,object){if(!isObject(object)){return false;}var type=typeof index==='undefined'?'undefined':_typeof(index);if(type=='number'?isArrayLike(object)&&isIndex(index,object.length):type=='string'&&index in object){return eq(object[index],value);}return false;}/**\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 */function isKey(value,object){if(isArray(value)){return false;}var type=typeof value==='undefined'?'undefined':_typeof(value);if(type=='number'||type=='symbol'||type=='boolean'||value==null||isSymbol(value)){return true;}return reIsPlainProp.test(value)||!reIsDeepProp.test(value)||object!=null&&value in Object(object);}/**\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 */function isKeyable(value){var type=typeof value==='undefined'?'undefined':_typeof(value);return type=='string'||type=='number'||type=='symbol'||type=='boolean'?value!=='__proto__':value===null;}/**\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 */function isLaziable(func){var funcName=getFuncName(func),other=lodash[funcName];if(typeof other!=='function'||!(funcName in LazyWrapper.prototype)){return false;}if(func===other){return true;}var data=getData(other);return!!data&&func===data[0];}/**\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 */function isMasked(func){return!!maskSrcKey&&maskSrcKey in func;}/**\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 */var isMaskable=coreJsData?isFunction:stubFalse;/**\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 */function isPrototype(value){var Ctor=value&&value.constructor,proto=typeof Ctor==='function'&&Ctor.prototype||objectProto;return value===proto;}/**\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 */function isStrictComparable(value){return value===value&&!isObject(value);}/**\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 */function matchesStrictComparable(key,srcValue){return function(object){if(object==null){return false;}return object[key]===srcValue&&(srcValue!==undefined||key in Object(object));};}/**\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 */function memoizeCapped(func){var result=memoize(func,function(key){if(cache.size===MAX_MEMOIZE_SIZE){cache.clear();}return key;});var cache=result.cache;return result;}/**\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 */function mergeData(data,source){var bitmask=data[1],srcBitmask=source[1],newBitmask=bitmask|srcBitmask,isCommon=newBitmask<(WRAP_BIND_FLAG|WRAP_BIND_KEY_FLAG|WRAP_ARY_FLAG);var isCombo=srcBitmask==WRAP_ARY_FLAG&&bitmask==WRAP_CURRY_FLAG||srcBitmask==WRAP_ARY_FLAG&&bitmask==WRAP_REARG_FLAG&&data[7].length<=source[8]||srcBitmask==(WRAP_ARY_FLAG|WRAP_REARG_FLAG)&&source[7].length<=source[8]&&bitmask==WRAP_CURRY_FLAG;// Exit early if metadata can't be merged.\nif(!(isCommon||isCombo)){return data;}// Use source `thisArg` if available.\nif(srcBitmask&WRAP_BIND_FLAG){data[2]=source[2];// Set when currying a bound function.\nnewBitmask|=bitmask&WRAP_BIND_FLAG?0:WRAP_CURRY_BOUND_FLAG;}// Compose partial arguments.\nvar value=source[3];if(value){var partials=data[3];data[3]=partials?composeArgs(partials,value,source[4]):value;data[4]=partials?replaceHolders(data[3],PLACEHOLDER):source[4];}// Compose partial right arguments.\nvalue=source[5];if(value){partials=data[5];data[5]=partials?composeArgsRight(partials,value,source[6]):value;data[6]=partials?replaceHolders(data[5],PLACEHOLDER):source[6];}// Use source `argPos` if available.\nvalue=source[7];if(value){data[7]=value;}// Use source `ary` if it's smaller.\nif(srcBitmask&WRAP_ARY_FLAG){data[8]=data[8]==null?source[8]:nativeMin(data[8],source[8]);}// Use source `arity` if one is not provided.\nif(data[9]==null){data[9]=source[9];}// Use source `func` and merge bitmasks.\ndata[0]=source[0];data[1]=newBitmask;return data;}/**\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 */function nativeKeysIn(object){var result=[];if(object!=null){for(var key in Object(object)){result.push(key);}}return result;}/**\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 */function objectToString(value){return nativeObjectToString.call(value);}/**\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 */function overRest(func,start,transform){start=nativeMax(start===undefined?func.length-1:start,0);return function(){var args=arguments,index=-1,length=nativeMax(args.length-start,0),array=Array(length);while(++index<length){array[index]=args[start+index];}index=-1;var otherArgs=Array(start+1);while(++index<start){otherArgs[index]=args[index];}otherArgs[start]=transform(array);return apply(func,this,otherArgs);};}/**\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 */function parent(object,path){return path.length<2?object:baseGet(object,baseSlice(path,0,-1));}/**\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 */function reorder(array,indexes){var arrLength=array.length,length=nativeMin(indexes.length,arrLength),oldArray=copyArray(array);while(length--){var index=indexes[length];array[length]=isIndex(index,arrLength)?oldArray[index]:undefined;}return array;}/**\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 */var setData=shortOut(baseSetData);/**\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 */var setTimeout=ctxSetTimeout||function(func,wait){return root.setTimeout(func,wait);};/**\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 */var setToString=shortOut(baseSetToString);/**\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 */function setWrapToString(wrapper,reference,bitmask){var source=reference+'';return setToString(wrapper,insertWrapDetails(source,updateWrapDetails(getWrapDetails(source),bitmask)));}/**\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 */function shortOut(func){var count=0,lastCalled=0;return function(){var stamp=nativeNow(),remaining=HOT_SPAN-(stamp-lastCalled);lastCalled=stamp;if(remaining>0){if(++count>=HOT_COUNT){return arguments[0];}}else{count=0;}return func.apply(undefined,arguments);};}/**\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 */function shuffleSelf(array,size){var index=-1,length=array.length,lastIndex=length-1;size=size===undefined?length:size;while(++index<size){var rand=baseRandom(index,lastIndex),value=array[rand];array[rand]=array[index];array[index]=value;}array.length=size;return array;}/**\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 */var stringToPath=memoizeCapped(function(string){var result=[];if(string.charCodeAt(0)===46/* . */){result.push('');}string.replace(rePropName,function(match,number,quote,subString){result.push(quote?subString.replace(reEscapeChar,'$1'):number||match);});return result;});/**\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 */function toKey(value){if(typeof value==='string'||isSymbol(value)){return value;}var result=value+'';return result=='0'&&1/value==-INFINITY?'-0':result;}/**\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 */function toSource(func){if(func!=null){try{return funcToString.call(func);}catch(e){}try{return func+'';}catch(e){}}return'';}/**\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 */function updateWrapDetails(details,bitmask){arrayEach(wrapFlags,function(pair){var value='_.'+pair[0];if(bitmask&pair[1]&&!arrayIncludes(details,value)){details.push(value);}});return details.sort();}/**\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 */function wrapperClone(wrapper){if(wrapper instanceof LazyWrapper){return wrapper.clone();}var result=new LodashWrapper(wrapper.__wrapped__,wrapper.__chain__);result.__actions__=copyArray(wrapper.__actions__);result.__index__=wrapper.__index__;result.__values__=wrapper.__values__;return result;}/* ------------------------------------------------------------------------*//**\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 */function chunk(array,size,guard){if(guard?isIterateeCall(array,size,guard):size===undefined){size=1;}else{size=nativeMax(toInteger(size),0);}var length=array==null?0:array.length;if(!length||size<1){return[];}var index=0,resIndex=0,result=Array(nativeCeil(length/size));while(index<length){result[resIndex++]=baseSlice(array,index,index+=size);}return result;}/**\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 */function compact(array){var index=-1,length=array==null?0:array.length,resIndex=0,result=[];while(++index<length){var value=array[index];if(value){result[resIndex++]=value;}}return result;}/**\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 */function concat(){var length=arguments.length;if(!length){return[];}var args=Array(length-1),array=arguments[0],index=length;while(index--){args[index-1]=arguments[index];}return arrayPush(isArray(array)?copyArray(array):[array],baseFlatten(args,1));}/**\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 */var difference=baseRest(function(array,values){return isArrayLikeObject(array)?baseDifference(array,baseFlatten(values,1,isArrayLikeObject,true)):[];});/**\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 */var differenceBy=baseRest(function(array,values){var iteratee=last(values);if(isArrayLikeObject(iteratee)){iteratee=undefined;}return isArrayLikeObject(array)?baseDifference(array,baseFlatten(values,1,isArrayLikeObject,true),getIteratee(iteratee,2)):[];});/**\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 */var differenceWith=baseRest(function(array,values){var comparator=last(values);if(isArrayLikeObject(comparator)){comparator=undefined;}return isArrayLikeObject(array)?baseDifference(array,baseFlatten(values,1,isArrayLikeObject,true),undefined,comparator):[];});/**\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 */function drop(array,n,guard){var length=array==null?0:array.length;if(!length){return[];}n=guard||n===undefined?1:toInteger(n);return baseSlice(array,n<0?0:n,length);}/**\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 */function dropRight(array,n,guard){var length=array==null?0:array.length;if(!length){return[];}n=guard||n===undefined?1:toInteger(n);n=length-n;return baseSlice(array,0,n<0?0: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 */function dropRightWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3),true,true):[];}/**\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 */function dropWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3),true):[];}/**\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 */function fill(array,value,start,end){var length=array==null?0:array.length;if(!length){return[];}if(start&&typeof start!=='number'&&isIterateeCall(array,value,start)){start=0;end=length;}return baseFill(array,value,start,end);}/**\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 */function findIndex(array,predicate,fromIndex){var length=array==null?0:array.length;if(!length){return-1;}var index=fromIndex==null?0:toInteger(fromIndex);if(index<0){index=nativeMax(length+index,0);}return baseFindIndex(array,getIteratee(predicate,3),index);}/**\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 */function findLastIndex(array,predicate,fromIndex){var length=array==null?0:array.length;if(!length){return-1;}var index=length-1;if(fromIndex!==undefined){index=toInteger(fromIndex);index=fromIndex<0?nativeMax(length+index,0):nativeMin(index,length-1);}return baseFindIndex(array,getIteratee(predicate,3),index,true);}/**\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 */function flatten(array){var length=array==null?0:array.length;return length?baseFlatten(array,1):[];}/**\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 */function flattenDeep(array){var length=array==null?0:array.length;return length?baseFlatten(array,INFINITY):[];}/**\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 */function flattenDepth(array,depth){var length=array==null?0:array.length;if(!length){return[];}depth=depth===undefined?1:toInteger(depth);return baseFlatten(array,depth);}/**\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 */function fromPairs(pairs){var index=-1,length=pairs==null?0:pairs.length,result={};while(++index<length){var pair=pairs[index];result[pair[0]]=pair[1];}return result;}/**\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 */function head(array){return array&&array.length?array[0]:undefined;}/**\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 */function indexOf(array,value,fromIndex){var length=array==null?0:array.length;if(!length){return-1;}var index=fromIndex==null?0:toInteger(fromIndex);if(index<0){index=nativeMax(length+index,0);}return baseIndexOf(array,value,index);}/**\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 */function initial(array){var length=array==null?0:array.length;return length?baseSlice(array,0,-1):[];}/**\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 */var intersection=baseRest(function(arrays){var mapped=arrayMap(arrays,castArrayLikeObject);return mapped.length&&mapped[0]===arrays[0]?baseIntersection(mapped):[];});/**\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 */var intersectionBy=baseRest(function(arrays){var iteratee=last(arrays),mapped=arrayMap(arrays,castArrayLikeObject);if(iteratee===last(mapped)){iteratee=undefined;}else{mapped.pop();}return mapped.length&&mapped[0]===arrays[0]?baseIntersection(mapped,getIteratee(iteratee,2)):[];});/**\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 */var intersectionWith=baseRest(function(arrays){var comparator=last(arrays),mapped=arrayMap(arrays,castArrayLikeObject);comparator=typeof comparator==='function'?comparator:undefined;if(comparator){mapped.pop();}return mapped.length&&mapped[0]===arrays[0]?baseIntersection(mapped,undefined,comparator):[];});/**\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 */function join(array,separator){return array==null?'':nativeJoin.call(array,separator);}/**\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 */function last(array){var length=array==null?0:array.length;return length?array[length-1]:undefined;}/**\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 */function lastIndexOf(array,value,fromIndex){var length=array==null?0:array.length;if(!length){return-1;}var index=length;if(fromIndex!==undefined){index=toInteger(fromIndex);index=index<0?nativeMax(length+index,0):nativeMin(index,length-1);}return value===value?strictLastIndexOf(array,value,index):baseFindIndex(array,baseIsNaN,index,true);}/**\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 */function nth(array,n){return array&&array.length?baseNth(array,toInteger(n)):undefined;}/**\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 */var pull=baseRest(pullAll);/**\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 */function pullAll(array,values){return array&&array.length&&values&&values.length?basePullAll(array,values):array;}/**\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 */function pullAllBy(array,values,iteratee){return array&&array.length&&values&&values.length?basePullAll(array,values,getIteratee(iteratee,2)):array;}/**\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 */function pullAllWith(array,values,comparator){return array&&array.length&&values&&values.length?basePullAll(array,values,undefined,comparator):array;}/**\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 */var pullAt=flatRest(function(array,indexes){var length=array==null?0:array.length,result=baseAt(array,indexes);basePullAt(array,arrayMap(indexes,function(index){return isIndex(index,length)?+index:index;}).sort(compareAscending));return result;});/**\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 */function remove(array,predicate){var result=[];if(!(array&&array.length)){return result;}var index=-1,indexes=[],length=array.length;predicate=getIteratee(predicate,3);while(++index<length){var value=array[index];if(predicate(value,index,array)){result.push(value);indexes.push(index);}}basePullAt(array,indexes);return result;}/**\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 */function reverse(array){return array==null?array:nativeReverse.call(array);}/**\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 */function slice(array,start,end){var length=array==null?0:array.length;if(!length){return[];}if(end&&typeof end!=='number'&&isIterateeCall(array,start,end)){start=0;end=length;}else{start=start==null?0:toInteger(start);end=end===undefined?length:toInteger(end);}return baseSlice(array,start,end);}/**\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 */function sortedIndex(array,value){return baseSortedIndex(array,value);}/**\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 */function sortedIndexBy(array,value,iteratee){return baseSortedIndexBy(array,value,getIteratee(iteratee,2));}/**\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 */function sortedIndexOf(array,value){var length=array==null?0:array.length;if(length){var index=baseSortedIndex(array,value);if(index<length&&eq(array[index],value)){return index;}}return-1;}/**\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 */function sortedLastIndex(array,value){return baseSortedIndex(array,value,true);}/**\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 */function sortedLastIndexBy(array,value,iteratee){return baseSortedIndexBy(array,value,getIteratee(iteratee,2),true);}/**\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 */function sortedLastIndexOf(array,value){var length=array==null?0:array.length;if(length){var index=baseSortedIndex(array,value,true)-1;if(eq(array[index],value)){return index;}}return-1;}/**\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 */function sortedUniq(array){return array&&array.length?baseSortedUniq(array):[];}/**\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 */function sortedUniqBy(array,iteratee){return array&&array.length?baseSortedUniq(array,getIteratee(iteratee,2)):[];}/**\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 */function tail(array){var length=array==null?0:array.length;return length?baseSlice(array,1,length):[];}/**\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 */function take(array,n,guard){if(!(array&&array.length)){return[];}n=guard||n===undefined?1:toInteger(n);return baseSlice(array,0,n<0?0: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 */function takeRight(array,n,guard){var length=array==null?0:array.length;if(!length){return[];}n=guard||n===undefined?1:toInteger(n);n=length-n;return baseSlice(array,n<0?0:n,length);}/**\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 */function takeRightWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3),false,true):[];}/**\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 */function takeWhile(array,predicate){return array&&array.length?baseWhile(array,getIteratee(predicate,3)):[];}/**\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 */var union=baseRest(function(arrays){return baseUniq(baseFlatten(arrays,1,isArrayLikeObject,true));});/**\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 */var unionBy=baseRest(function(arrays){var iteratee=last(arrays);if(isArrayLikeObject(iteratee)){iteratee=undefined;}return baseUniq(baseFlatten(arrays,1,isArrayLikeObject,true),getIteratee(iteratee,2));});/**\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 */var unionWith=baseRest(function(arrays){var comparator=last(arrays);comparator=typeof comparator==='function'?comparator:undefined;return baseUniq(baseFlatten(arrays,1,isArrayLikeObject,true),undefined,comparator);});/**\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 */function uniq(array){return array&&array.length?baseUniq(array):[];}/**\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 */function uniqBy(array,iteratee){return array&&array.length?baseUniq(array,getIteratee(iteratee,2)):[];}/**\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 */function uniqWith(array,comparator){comparator=typeof comparator==='function'?comparator:undefined;return array&&array.length?baseUniq(array,undefined,comparator):[];}/**\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 */function unzip(array){if(!(array&&array.length)){return[];}var length=0;array=arrayFilter(array,function(group){if(isArrayLikeObject(group)){length=nativeMax(group.length,length);return true;}});return baseTimes(length,function(index){return arrayMap(array,baseProperty(index));});}/**\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 */function unzipWith(array,iteratee){if(!(array&&array.length)){return[];}var result=unzip(array);if(iteratee==null){return result;}return arrayMap(result,function(group){return apply(iteratee,undefined,group);});}/**\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 */var without=baseRest(function(array,values){return isArrayLikeObject(array)?baseDifference(array,values):[];});/**\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 */var xor=baseRest(function(arrays){return baseXor(arrayFilter(arrays,isArrayLikeObject));});/**\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 */var xorBy=baseRest(function(arrays){var iteratee=last(arrays);if(isArrayLikeObject(iteratee)){iteratee=undefined;}return baseXor(arrayFilter(arrays,isArrayLikeObject),getIteratee(iteratee,2));});/**\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 */var xorWith=baseRest(function(arrays){var comparator=last(arrays);comparator=typeof comparator==='function'?comparator:undefined;return baseXor(arrayFilter(arrays,isArrayLikeObject),undefined,comparator);});/**\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 */var zip=baseRest(unzip);/**\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 */function zipObject(props,values){return baseZipObject(props||[],values||[],assignValue);}/**\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 */function zipObjectDeep(props,values){return baseZipObject(props||[],values||[],baseSet);}/**\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 */var zipWith=baseRest(function(arrays){var length=arrays.length,iteratee=length>1?arrays[length-1]:undefined;iteratee=typeof iteratee==='function'?(arrays.pop(),iteratee):undefined;return unzipWith(arrays,iteratee);});/* ------------------------------------------------------------------------*//**\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 */function chain(value){var result=lodash(value);result.__chain__=true;return result;}/**\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 */function tap(value,interceptor){interceptor(value);return value;}/**\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 */function thru(value,interceptor){return interceptor(value);}/**\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 */var wrapperAt=flatRest(function(paths){var length=paths.length,start=length?paths[0]:0,value=this.__wrapped__,interceptor=function interceptor(object){return baseAt(object,paths);};if(length>1||this.__actions__.length||!(value instanceof LazyWrapper)||!isIndex(start)){return this.thru(interceptor);}value=value.slice(start,+start+(length?1:0));value.__actions__.push({func:thru,args:[interceptor],thisArg:undefined});return new LodashWrapper(value,this.__chain__).thru(function(array){if(length&&!array.length){array.push(undefined);}return array;});});/**\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 */function wrapperChain(){return chain(this);}/**\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 */function wrapperCommit(){return new LodashWrapper(this.value(),this.__chain__);}/**\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 */function wrapperNext(){if(this.__values__===undefined){this.__values__=toArray(this.value());}var done=this.__index__>=this.__values__.length,value=done?undefined:this.__values__[this.__index__++];return{done:done,value:value};}/**\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 */function wrapperToIterator(){return this;}/**\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 */function wrapperPlant(value){var result,parent=this;while(parent instanceof baseLodash){var clone=wrapperClone(parent);clone.__index__=0;clone.__values__=undefined;if(result){previous.__wrapped__=clone;}else{result=clone;}var previous=clone;parent=parent.__wrapped__;}previous.__wrapped__=value;return result;}/**\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 */function wrapperReverse(){var value=this.__wrapped__;if(value instanceof LazyWrapper){var wrapped=value;if(this.__actions__.length){wrapped=new LazyWrapper(this);}wrapped=wrapped.reverse();wrapped.__actions__.push({func:thru,args:[reverse],thisArg:undefined});return new LodashWrapper(wrapped,this.__chain__);}return this.thru(reverse);}/**\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 */function wrapperValue(){return baseWrapperValue(this.__wrapped__,this.__actions__);}/* ------------------------------------------------------------------------*//**\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 */var countBy=createAggregator(function(result,value,key){if(hasOwnProperty.call(result,key)){++result[key];}else{baseAssignValue(result,key,1);}});/**\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 */function every(collection,predicate,guard){var func=isArray(collection)?arrayEvery:baseEvery;if(guard&&isIterateeCall(collection,predicate,guard)){predicate=undefined;}return func(collection,getIteratee(predicate,3));}/**\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 */function filter(collection,predicate){var func=isArray(collection)?arrayFilter:baseFilter;return func(collection,getIteratee(predicate,3));}/**\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 */var find=createFind(findIndex);/**\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 */var findLast=createFind(findLastIndex);/**\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 */function flatMap(collection,iteratee){return baseFlatten(map(collection,iteratee),1);}/**\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 */function flatMapDeep(collection,iteratee){return baseFlatten(map(collection,iteratee),INFINITY);}/**\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 */function flatMapDepth(collection,iteratee,depth){depth=depth===undefined?1:toInteger(depth);return baseFlatten(map(collection,iteratee),depth);}/**\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 */function forEach(collection,iteratee){var func=isArray(collection)?arrayEach:baseEach;return func(collection,getIteratee(iteratee,3));}/**\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 */function forEachRight(collection,iteratee){var func=isArray(collection)?arrayEachRight:baseEachRight;return func(collection,getIteratee(iteratee,3));}/**\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 */var groupBy=createAggregator(function(result,value,key){if(hasOwnProperty.call(result,key)){result[key].push(value);}else{baseAssignValue(result,key,[value]);}});/**\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 */function includes(collection,value,fromIndex,guard){collection=isArrayLike(collection)?collection:values(collection);fromIndex=fromIndex&&!guard?toInteger(fromIndex):0;var length=collection.length;if(fromIndex<0){fromIndex=nativeMax(length+fromIndex,0);}return isString(collection)?fromIndex<=length&&collection.indexOf(value,fromIndex)>-1:!!length&&baseIndexOf(collection,value,fromIndex)>-1;}/**\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 */var invokeMap=baseRest(function(collection,path,args){var index=-1,isFunc=typeof path==='function',result=isArrayLike(collection)?Array(collection.length):[];baseEach(collection,function(value){result[++index]=isFunc?apply(path,value,args):baseInvoke(value,path,args);});return result;});/**\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 */var keyBy=createAggregator(function(result,value,key){baseAssignValue(result,key,value);});/**\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 */function map(collection,iteratee){var func=isArray(collection)?arrayMap:baseMap;return func(collection,getIteratee(iteratee,3));}/**\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 */function orderBy(collection,iteratees,orders,guard){if(collection==null){return[];}if(!isArray(iteratees)){iteratees=iteratees==null?[]:[iteratees];}orders=guard?undefined:orders;if(!isArray(orders)){orders=orders==null?[]:[orders];}return baseOrderBy(collection,iteratees,orders);}/**\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 */var partition=createAggregator(function(result,value,key){result[key?0:1].push(value);},function(){return[[],[]];});/**\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 */function reduce(collection,iteratee,accumulator){var func=isArray(collection)?arrayReduce:baseReduce,initAccum=arguments.length<3;return func(collection,getIteratee(iteratee,4),accumulator,initAccum,baseEach);}/**\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 */function reduceRight(collection,iteratee,accumulator){var func=isArray(collection)?arrayReduceRight:baseReduce,initAccum=arguments.length<3;return func(collection,getIteratee(iteratee,4),accumulator,initAccum,baseEachRight);}/**\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 */function reject(collection,predicate){var func=isArray(collection)?arrayFilter:baseFilter;return func(collection,negate(getIteratee(predicate,3)));}/**\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 */function sample(collection){var func=isArray(collection)?arraySample:baseSample;return func(collection);}/**\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 */function sampleSize(collection,n,guard){if(guard?isIterateeCall(collection,n,guard):n===undefined){n=1;}else{n=toInteger(n);}var func=isArray(collection)?arraySampleSize:baseSampleSize;return func(collection,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 */function shuffle(collection){var func=isArray(collection)?arrayShuffle:baseShuffle;return func(collection);}/**\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 */function size(collection){if(collection==null){return 0;}if(isArrayLike(collection)){return isString(collection)?stringSize(collection):collection.length;}var tag=getTag(collection);if(tag==mapTag||tag==setTag){return collection.size;}return baseKeys(collection).length;}/**\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 */function some(collection,predicate,guard){var func=isArray(collection)?arraySome:baseSome;if(guard&&isIterateeCall(collection,predicate,guard)){predicate=undefined;}return func(collection,getIteratee(predicate,3));}/**\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 */var sortBy=baseRest(function(collection,iteratees){if(collection==null){return[];}var length=iteratees.length;if(length>1&&isIterateeCall(collection,iteratees[0],iteratees[1])){iteratees=[];}else if(length>2&&isIterateeCall(iteratees[0],iteratees[1],iteratees[2])){iteratees=[iteratees[0]];}return baseOrderBy(collection,baseFlatten(iteratees,1),[]);});/* ------------------------------------------------------------------------*//**\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 */var now=ctxNow||function(){return root.Date.now();};/* ------------------------------------------------------------------------*//**\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 */function after(n,func){if(typeof func!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}n=toInteger(n);return function(){if(--n<1){return func.apply(this,arguments);}};}/**\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 */function ary(func,n,guard){n=guard?undefined:n;n=func&&n==null?func.length:n;return createWrap(func,WRAP_ARY_FLAG,undefined,undefined,undefined,undefined,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 */function before(n,func){var result;if(typeof func!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}n=toInteger(n);return function(){if(--n>0){result=func.apply(this,arguments);}if(n<=1){func=undefined;}return result;};}/**\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 */var bind=baseRest(function(func,thisArg,partials){var bitmask=WRAP_BIND_FLAG;if(partials.length){var holders=replaceHolders(partials,getHolder(bind));bitmask|=WRAP_PARTIAL_FLAG;}return createWrap(func,bitmask,thisArg,partials,holders);});/**\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 */var bindKey=baseRest(function(object,key,partials){var bitmask=WRAP_BIND_FLAG|WRAP_BIND_KEY_FLAG;if(partials.length){var holders=replaceHolders(partials,getHolder(bindKey));bitmask|=WRAP_PARTIAL_FLAG;}return createWrap(key,bitmask,object,partials,holders);});/**\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 */function curry(func,arity,guard){arity=guard?undefined:arity;var result=createWrap(func,WRAP_CURRY_FLAG,undefined,undefined,undefined,undefined,undefined,arity);result.placeholder=curry.placeholder;return result;}/**\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 */function curryRight(func,arity,guard){arity=guard?undefined:arity;var result=createWrap(func,WRAP_CURRY_RIGHT_FLAG,undefined,undefined,undefined,undefined,undefined,arity);result.placeholder=curryRight.placeholder;return result;}/**\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 */function debounce(func,wait,options){var lastArgs,lastThis,maxWait,result,timerId,lastCallTime,lastInvokeTime=0,leading=false,maxing=false,trailing=true;if(typeof func!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}wait=toNumber(wait)||0;if(isObject(options)){leading=!!options.leading;maxing='maxWait'in options;maxWait=maxing?nativeMax(toNumber(options.maxWait)||0,wait):maxWait;trailing='trailing'in options?!!options.trailing:trailing;}function invokeFunc(time){var args=lastArgs,thisArg=lastThis;lastArgs=lastThis=undefined;lastInvokeTime=time;result=func.apply(thisArg,args);return result;}function leadingEdge(time){// Reset any `maxWait` timer.\nlastInvokeTime=time;// Start the timer for the trailing edge.\ntimerId=setTimeout(timerExpired,wait);// Invoke the leading edge.\nreturn leading?invokeFunc(time):result;}function remainingWait(time){var timeSinceLastCall=time-lastCallTime,timeSinceLastInvoke=time-lastInvokeTime,timeWaiting=wait-timeSinceLastCall;return maxing?nativeMin(timeWaiting,maxWait-timeSinceLastInvoke):timeWaiting;}function shouldInvoke(time){var timeSinceLastCall=time-lastCallTime,timeSinceLastInvoke=time-lastInvokeTime;// 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.\nreturn lastCallTime===undefined||timeSinceLastCall>=wait||timeSinceLastCall<0||maxing&&timeSinceLastInvoke>=maxWait;}function timerExpired(){var time=now();if(shouldInvoke(time)){return trailingEdge(time);}// Restart the timer.\ntimerId=setTimeout(timerExpired,remainingWait(time));}function trailingEdge(time){timerId=undefined;// Only invoke if we have `lastArgs` which means `func` has been\n// debounced at least once.\nif(trailing&&lastArgs){return invokeFunc(time);}lastArgs=lastThis=undefined;return result;}function cancel(){if(timerId!==undefined){clearTimeout(timerId);}lastInvokeTime=0;lastArgs=lastCallTime=lastThis=timerId=undefined;}function flush(){return timerId===undefined?result:trailingEdge(now());}function debounced(){var time=now(),isInvoking=shouldInvoke(time);lastArgs=arguments;lastThis=this;lastCallTime=time;if(isInvoking){if(timerId===undefined){return leadingEdge(lastCallTime);}if(maxing){// Handle invocations in a tight loop.\ntimerId=setTimeout(timerExpired,wait);return invokeFunc(lastCallTime);}}if(timerId===undefined){timerId=setTimeout(timerExpired,wait);}return result;}debounced.cancel=cancel;debounced.flush=flush;return debounced;}/**\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 */var defer=baseRest(function(func,args){return baseDelay(func,1,args);});/**\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 */var delay=baseRest(function(func,wait,args){return baseDelay(func,toNumber(wait)||0,args);});/**\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 */function flip(func){return createWrap(func,WRAP_FLIP_FLAG);}/**\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 */function memoize(func,resolver){if(typeof func!=='function'||resolver!=null&&typeof resolver!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}var memoized=function memoized(){var args=arguments,key=resolver?resolver.apply(this,args):args[0],cache=memoized.cache;if(cache.has(key)){return cache.get(key);}var result=func.apply(this,args);memoized.cache=cache.set(key,result)||cache;return result;};memoized.cache=new(memoize.Cache||MapCache)();return memoized;}// Expose `MapCache`.\nmemoize.Cache=MapCache;/**\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 */function negate(predicate){if(typeof predicate!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}return function(){var args=arguments;switch(args.length){case 0:return!predicate.call(this);case 1:return!predicate.call(this,args[0]);case 2:return!predicate.call(this,args[0],args[1]);case 3:return!predicate.call(this,args[0],args[1],args[2]);}return!predicate.apply(this,args);};}/**\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 */function once(func){return before(2,func);}/**\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 */var overArgs=castRest(function(func,transforms){transforms=transforms.length==1&&isArray(transforms[0])?arrayMap(transforms[0],baseUnary(getIteratee())):arrayMap(baseFlatten(transforms,1),baseUnary(getIteratee()));var funcsLength=transforms.length;return baseRest(function(args){var index=-1,length=nativeMin(args.length,funcsLength);while(++index<length){args[index]=transforms[index].call(this,args[index]);}return apply(func,this,args);});});/**\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 */var partial=baseRest(function(func,partials){var holders=replaceHolders(partials,getHolder(partial));return createWrap(func,WRAP_PARTIAL_FLAG,undefined,partials,holders);});/**\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 */var partialRight=baseRest(function(func,partials){var holders=replaceHolders(partials,getHolder(partialRight));return createWrap(func,WRAP_PARTIAL_RIGHT_FLAG,undefined,partials,holders);});/**\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 */var rearg=flatRest(function(func,indexes){return createWrap(func,WRAP_REARG_FLAG,undefined,undefined,undefined,indexes);});/**\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 */function rest(func,start){if(typeof func!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}start=start===undefined?start:toInteger(start);return baseRest(func,start);}/**\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 */function spread(func,start){if(typeof func!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}start=start==null?0:nativeMax(toInteger(start),0);return baseRest(function(args){var array=args[start],otherArgs=castSlice(args,0,start);if(array){arrayPush(otherArgs,array);}return apply(func,this,otherArgs);});}/**\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 */function throttle(func,wait,options){var leading=true,trailing=true;if(typeof func!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}if(isObject(options)){leading='leading'in options?!!options.leading:leading;trailing='trailing'in options?!!options.trailing:trailing;}return debounce(func,wait,{leading:leading,maxWait:wait,trailing:trailing});}/**\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 */function unary(func){return ary(func,1);}/**\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, & pebbles</p>'\n */function wrap(value,wrapper){return partial(castFunction(wrapper),value);}/* ------------------------------------------------------------------------*//**\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 */function castArray(){if(!arguments.length){return[];}var value=arguments[0];return isArray(value)?value:[value];}/**\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 */function clone(value){return baseClone(value,CLONE_SYMBOLS_FLAG);}/**\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 */function cloneWith(value,customizer){customizer=typeof customizer==='function'?customizer:undefined;return baseClone(value,CLONE_SYMBOLS_FLAG,customizer);}/**\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 */function cloneDeep(value){return baseClone(value,CLONE_DEEP_FLAG|CLONE_SYMBOLS_FLAG);}/**\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 */function cloneDeepWith(value,customizer){customizer=typeof customizer==='function'?customizer:undefined;return baseClone(value,CLONE_DEEP_FLAG|CLONE_SYMBOLS_FLAG,customizer);}/**\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 */function conformsTo(object,source){return source==null||baseConformsTo(object,source,keys(source));}/**\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 */function eq(value,other){return value===other||value!==value&&other!==other;}/**\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 */var gt=createRelationalOperation(baseGt);/**\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 */var gte=createRelationalOperation(function(value,other){return value>=other;});/**\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 */var isArguments=baseIsArguments(function(){return arguments;}())?baseIsArguments:function(value){return isObjectLike(value)&&hasOwnProperty.call(value,'callee')&&!propertyIsEnumerable.call(value,'callee');};/**\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 */var isArray=Array.isArray;/**\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 */var isArrayBuffer=nodeIsArrayBuffer?baseUnary(nodeIsArrayBuffer):baseIsArrayBuffer;/**\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 */function isArrayLike(value){return value!=null&&isLength(value.length)&&!isFunction(value);}/**\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 */function isArrayLikeObject(value){return isObjectLike(value)&&isArrayLike(value);}/**\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 */function isBoolean(value){return value===true||value===false||isObjectLike(value)&&baseGetTag(value)==boolTag;}/**\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 */var isBuffer=nativeIsBuffer||stubFalse;/**\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 */var isDate=nodeIsDate?baseUnary(nodeIsDate):baseIsDate;/**\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 */function isElement(value){return isObjectLike(value)&&value.nodeType===1&&!isPlainObject(value);}/**\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 */function isEmpty(value){if(value==null){return true;}if(isArrayLike(value)&&(isArray(value)||typeof value==='string'||typeof value.splice==='function'||isBuffer(value)||isTypedArray(value)||isArguments(value))){return!value.length;}var tag=getTag(value);if(tag==mapTag||tag==setTag){return!value.size;}if(isPrototype(value)){return!baseKeys(value).length;}for(var key in value){if(hasOwnProperty.call(value,key)){return false;}}return true;}/**\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 */function isEqual(value,other){return baseIsEqual(value,other);}/**\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 */function isEqualWith(value,other,customizer){customizer=typeof customizer==='function'?customizer:undefined;var result=customizer?customizer(value,other):undefined;return result===undefined?baseIsEqual(value,other,undefined,customizer):!!result;}/**\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 */function isError(value){if(!isObjectLike(value)){return false;}var tag=baseGetTag(value);return tag==errorTag||tag==domExcTag||typeof value.message==='string'&&typeof value.name==='string'&&!isPlainObject(value);}/**\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 */function isFinite(value){return typeof value==='number'&&nativeIsFinite(value);}/**\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 */function isFunction(value){if(!isObject(value)){return false;}// The use of `Object#toString` avoids issues with the `typeof` operator\n// in Safari 9 which returns 'object' for typed arrays and other constructors.\nvar tag=baseGetTag(value);return tag==funcTag||tag==genTag||tag==asyncTag||tag==proxyTag;}/**\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 */function isInteger(value){return typeof value==='number'&&value==toInteger(value);}/**\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 */function isLength(value){return typeof value==='number'&&value>-1&&value%1==0&&value<=MAX_SAFE_INTEGER;}/**\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 */function isObject(value){var type=typeof value==='undefined'?'undefined':_typeof(value);return value!=null&&(type=='object'||type=='function');}/**\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 */function isObjectLike(value){return value!=null&&(typeof value==='undefined'?'undefined':_typeof(value))==='object';}/**\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 */var isMap=nodeIsMap?baseUnary(nodeIsMap):baseIsMap;/**\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 */function isMatch(object,source){return object===source||baseIsMatch(object,source,getMatchData(source));}/**\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 */function isMatchWith(object,source,customizer){customizer=typeof customizer==='function'?customizer:undefined;return baseIsMatch(object,source,getMatchData(source),customizer);}/**\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 */function isNaN(value){// 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.\nreturn isNumber(value)&&value!=+value;}/**\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 */function isNative(value){if(isMaskable(value)){throw new Error(CORE_ERROR_TEXT);}return baseIsNative(value);}/**\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 */function isNull(value){return value===null;}/**\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 */function isNil(value){return value==null;}/**\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 */function isNumber(value){return typeof value==='number'||isObjectLike(value)&&baseGetTag(value)==numberTag;}/**\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 */function isPlainObject(value){if(!isObjectLike(value)||baseGetTag(value)!=objectTag){return false;}var proto=getPrototype(value);if(proto===null){return true;}var Ctor=hasOwnProperty.call(proto,'constructor')&&proto.constructor;return typeof Ctor==='function'&&Ctor instanceof Ctor&&funcToString.call(Ctor)==objectCtorString;}/**\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 */var isRegExp=nodeIsRegExp?baseUnary(nodeIsRegExp):baseIsRegExp;/**\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 */function isSafeInteger(value){return isInteger(value)&&value>=-MAX_SAFE_INTEGER&&value<=MAX_SAFE_INTEGER;}/**\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 */var isSet=nodeIsSet?baseUnary(nodeIsSet):baseIsSet;/**\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 */function isString(value){return typeof value==='string'||!isArray(value)&&isObjectLike(value)&&baseGetTag(value)==stringTag;}/**\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 */function isSymbol(value){return(typeof value==='undefined'?'undefined':_typeof(value))==='symbol'||isObjectLike(value)&&baseGetTag(value)==symbolTag;}/**\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 */var isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;/**\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 */function isUndefined(value){return value===undefined;}/**\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 */function isWeakMap(value){return isObjectLike(value)&&getTag(value)==weakMapTag;}/**\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 */function isWeakSet(value){return isObjectLike(value)&&baseGetTag(value)==weakSetTag;}/**\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 */var lt=createRelationalOperation(baseLt);/**\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 */var lte=createRelationalOperation(function(value,other){return value<=other;});/**\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 */function toArray(value){if(!value){return[];}if(isArrayLike(value)){return isString(value)?stringToArray(value):copyArray(value);}if(symIterator&&value[symIterator]){return iteratorToArray(value[symIterator]());}var tag=getTag(value),func=tag==mapTag?mapToArray:tag==setTag?setToArray:values;return func(value);}/**\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 */function toFinite(value){if(!value){return value===0?value:0;}value=toNumber(value);if(value===INFINITY||value===-INFINITY){var sign=value<0?-1:1;return sign*MAX_INTEGER;}return value===value?value:0;}/**\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 */function toInteger(value){var result=toFinite(value),remainder=result%1;return result===result?remainder?result-remainder:result:0;}/**\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 */function toLength(value){return value?baseClamp(toInteger(value),0,MAX_ARRAY_LENGTH):0;}/**\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 */function toNumber(value){if(typeof value==='number'){return value;}if(isSymbol(value)){return NAN;}if(isObject(value)){var other=typeof value.valueOf==='function'?value.valueOf():value;value=isObject(other)?other+'':other;}if(typeof value!=='string'){return value===0?value:+value;}value=value.replace(reTrim,'');var isBinary=reIsBinary.test(value);return isBinary||reIsOctal.test(value)?freeParseInt(value.slice(2),isBinary?2:8):reIsBadHex.test(value)?NAN:+value;}/**\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 */function toPlainObject(value){return copyObject(value,keysIn(value));}/**\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 */function toSafeInteger(value){return value?baseClamp(toInteger(value),-MAX_SAFE_INTEGER,MAX_SAFE_INTEGER):value===0?value:0;}/**\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 */function toString(value){return value==null?'':baseToString(value);}/* ------------------------------------------------------------------------*//**\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 */var assign=createAssigner(function(object,source){if(isPrototype(source)||isArrayLike(source)){copyObject(source,keys(source),object);return;}for(var key in source){if(hasOwnProperty.call(source,key)){assignValue(object,key,source[key]);}}});/**\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 */var assignIn=createAssigner(function(object,source){copyObject(source,keysIn(source),object);});/**\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 */var assignInWith=createAssigner(function(object,source,srcIndex,customizer){copyObject(source,keysIn(source),object,customizer);});/**\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 */var assignWith=createAssigner(function(object,source,srcIndex,customizer){copyObject(source,keys(source),object,customizer);});/**\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 */var at=flatRest(baseAt);/**\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 */function create(prototype,properties){var result=baseCreate(prototype);return properties==null?result:baseAssign(result,properties);}/**\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 */var defaults=baseRest(function(object,sources){object=Object(object);var index=-1;var length=sources.length;var guard=length>2?sources[2]:undefined;if(guard&&isIterateeCall(sources[0],sources[1],guard)){length=1;}while(++index<length){var source=sources[index];var props=keysIn(source);var propsIndex=-1;var propsLength=props.length;while(++propsIndex<propsLength){var key=props[propsIndex];var value=object[key];if(value===undefined||eq(value,objectProto[key])&&!hasOwnProperty.call(object,key)){object[key]=source[key];}}}return object;});/**\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 */var defaultsDeep=baseRest(function(args){args.push(undefined,customDefaultsMerge);return apply(mergeWith,undefined,args);});/**\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 */function findKey(object,predicate){return baseFindKey(object,getIteratee(predicate,3),baseForOwn);}/**\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 */function findLastKey(object,predicate){return baseFindKey(object,getIteratee(predicate,3),baseForOwnRight);}/**\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 */function forIn(object,iteratee){return object==null?object:baseFor(object,getIteratee(iteratee,3),keysIn);}/**\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 */function forInRight(object,iteratee){return object==null?object:baseForRight(object,getIteratee(iteratee,3),keysIn);}/**\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 */function forOwn(object,iteratee){return object&&baseForOwn(object,getIteratee(iteratee,3));}/**\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 */function forOwnRight(object,iteratee){return object&&baseForOwnRight(object,getIteratee(iteratee,3));}/**\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 */function functions(object){return object==null?[]:baseFunctions(object,keys(object));}/**\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 */function functionsIn(object){return object==null?[]:baseFunctions(object,keysIn(object));}/**\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 */function get(object,path,defaultValue){var result=object==null?undefined:baseGet(object,path);return result===undefined?defaultValue:result;}/**\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 */function has(object,path){return object!=null&&hasPath(object,path,baseHas);}/**\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 */function hasIn(object,path){return object!=null&&hasPath(object,path,baseHasIn);}/**\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 */var invert=createInverter(function(result,value,key){if(value!=null&&typeof value.toString!=='function'){value=nativeObjectToString.call(value);}result[value]=key;},constant(identity));/**\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 */var invertBy=createInverter(function(result,value,key){if(value!=null&&typeof value.toString!=='function'){value=nativeObjectToString.call(value);}if(hasOwnProperty.call(result,value)){result[value].push(key);}else{result[value]=[key];}},getIteratee);/**\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 */var invoke=baseRest(baseInvoke);/**\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 */function keys(object){return isArrayLike(object)?arrayLikeKeys(object):baseKeys(object);}/**\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 */function keysIn(object){return isArrayLike(object)?arrayLikeKeys(object,true):baseKeysIn(object);}/**\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 */function mapKeys(object,iteratee){var result={};iteratee=getIteratee(iteratee,3);baseForOwn(object,function(value,key,object){baseAssignValue(result,iteratee(value,key,object),value);});return result;}/**\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 */function mapValues(object,iteratee){var result={};iteratee=getIteratee(iteratee,3);baseForOwn(object,function(value,key,object){baseAssignValue(result,key,iteratee(value,key,object));});return result;}/**\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 */var merge=createAssigner(function(object,source,srcIndex){baseMerge(object,source,srcIndex);});/**\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 */var mergeWith=createAssigner(function(object,source,srcIndex,customizer){baseMerge(object,source,srcIndex,customizer);});/**\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 */var omit=flatRest(function(object,paths){var result={};if(object==null){return result;}var isDeep=false;paths=arrayMap(paths,function(path){path=castPath(path,object);isDeep||(isDeep=path.length>1);return path;});copyObject(object,getAllKeysIn(object),result);if(isDeep){result=baseClone(result,CLONE_DEEP_FLAG|CLONE_FLAT_FLAG|CLONE_SYMBOLS_FLAG,customOmitClone);}var length=paths.length;while(length--){baseUnset(result,paths[length]);}return result;});/**\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 */function omitBy(object,predicate){return pickBy(object,negate(getIteratee(predicate)));}/**\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 */var pick=flatRest(function(object,paths){return object==null?{}:basePick(object,paths);});/**\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 */function pickBy(object,predicate){if(object==null){return{};}var props=arrayMap(getAllKeysIn(object),function(prop){return[prop];});predicate=getIteratee(predicate);return basePickBy(object,props,function(value,path){return predicate(value,path[0]);});}/**\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 */function result(object,path,defaultValue){path=castPath(path,object);var index=-1,length=path.length;// Ensure the loop is entered when path is empty.\nif(!length){length=1;object=undefined;}while(++index<length){var value=object==null?undefined:object[toKey(path[index])];if(value===undefined){index=length;value=defaultValue;}object=isFunction(value)?value.call(object):value;}return object;}/**\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 */function set(object,path,value){return object==null?object:baseSet(object,path,value);}/**\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 */function setWith(object,path,value,customizer){customizer=typeof customizer==='function'?customizer:undefined;return object==null?object:baseSet(object,path,value,customizer);}/**\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 */var toPairs=createToPairs(keys);/**\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 */var toPairsIn=createToPairs(keysIn);/**\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 */function transform(object,iteratee,accumulator){var isArr=isArray(object),isArrLike=isArr||isBuffer(object)||isTypedArray(object);iteratee=getIteratee(iteratee,4);if(accumulator==null){var Ctor=object&&object.constructor;if(isArrLike){accumulator=isArr?new Ctor():[];}else if(isObject(object)){accumulator=isFunction(Ctor)?baseCreate(getPrototype(object)):{};}else{accumulator={};}}(isArrLike?arrayEach:baseForOwn)(object,function(value,index,object){return iteratee(accumulator,value,index,object);});return accumulator;}/**\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 */function unset(object,path){return object==null?true:baseUnset(object,path);}/**\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 */function update(object,path,updater){return object==null?object:baseUpdate(object,path,castFunction(updater));}/**\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 */function updateWith(object,path,updater,customizer){customizer=typeof customizer==='function'?customizer:undefined;return object==null?object:baseUpdate(object,path,castFunction(updater),customizer);}/**\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 */function values(object){return object==null?[]:baseValues(object,keys(object));}/**\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 */function valuesIn(object){return object==null?[]:baseValues(object,keysIn(object));}/* ------------------------------------------------------------------------*//**\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 */function clamp(number,lower,upper){if(upper===undefined){upper=lower;lower=undefined;}if(upper!==undefined){upper=toNumber(upper);upper=upper===upper?upper:0;}if(lower!==undefined){lower=toNumber(lower);lower=lower===lower?lower:0;}return baseClamp(toNumber(number),lower,upper);}/**\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 */function inRange(number,start,end){start=toFinite(start);if(end===undefined){end=start;start=0;}else{end=toFinite(end);}number=toNumber(number);return baseInRange(number,start,end);}/**\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 */function random(lower,upper,floating){if(floating&&typeof floating!=='boolean'&&isIterateeCall(lower,upper,floating)){upper=floating=undefined;}if(floating===undefined){if(typeof upper==='boolean'){floating=upper;upper=undefined;}else if(typeof lower==='boolean'){floating=lower;lower=undefined;}}if(lower===undefined&&upper===undefined){lower=0;upper=1;}else{lower=toFinite(lower);if(upper===undefined){upper=lower;lower=0;}else{upper=toFinite(upper);}}if(lower>upper){var temp=lower;lower=upper;upper=temp;}if(floating||lower%1||upper%1){var rand=nativeRandom();return nativeMin(lower+rand*(upper-lower+freeParseFloat('1e-'+((rand+'').length-1))),upper);}return baseRandom(lower,upper);}/* ------------------------------------------------------------------------*//**\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 */var camelCase=createCompounder(function(result,word,index){word=word.toLowerCase();return result+(index?capitalize(word):word);});/**\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 */function capitalize(string){return upperFirst(toString(string).toLowerCase());}/**\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 */function deburr(string){string=toString(string);return string&&string.replace(reLatin,deburrLetter).replace(reComboMark,'');}/**\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 */function endsWith(string,target,position){string=toString(string);target=baseToString(target);var length=string.length;position=position===undefined?length:baseClamp(toInteger(position),0,length);var end=position;position-=target.length;return position>=0&&string.slice(position,end)==target;}/**\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, & pebbles'\n */function escape(string){string=toString(string);return string&&reHasUnescapedHtml.test(string)?string.replace(reUnescapedHtml,escapeHtmlChar):string;}/**\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 */function escapeRegExp(string){string=toString(string);return string&&reHasRegExpChar.test(string)?string.replace(reRegExpChar,'\\\\$&'):string;}/**\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 */var kebabCase=createCompounder(function(result,word,index){return result+(index?'-':'')+word.toLowerCase();});/**\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 */var lowerCase=createCompounder(function(result,word,index){return result+(index?' ':'')+word.toLowerCase();});/**\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 */var lowerFirst=createCaseFirst('toLowerCase');/**\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 */function pad(string,length,chars){string=toString(string);length=toInteger(length);var strLength=length?stringSize(string):0;if(!length||strLength>=length){return string;}var mid=(length-strLength)/2;return createPadding(nativeFloor(mid),chars)+string+createPadding(nativeCeil(mid),chars);}/**\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 */function padEnd(string,length,chars){string=toString(string);length=toInteger(length);var strLength=length?stringSize(string):0;return length&&strLength<length?string+createPadding(length-strLength,chars):string;}/**\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 */function padStart(string,length,chars){string=toString(string);length=toInteger(length);var strLength=length?stringSize(string):0;return length&&strLength<length?createPadding(length-strLength,chars)+string:string;}/**\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 */function parseInt(string,radix,guard){if(guard||radix==null){radix=0;}else if(radix){radix=+radix;}return nativeParseInt(toString(string).replace(reTrimStart,''),radix||0);}/**\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 */function repeat(string,n,guard){if(guard?isIterateeCall(string,n,guard):n===undefined){n=1;}else{n=toInteger(n);}return baseRepeat(toString(string),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 */function replace(){var args=arguments,string=toString(args[0]);return args.length<3?string:string.replace(args[1],args[2]);}/**\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 */var snakeCase=createCompounder(function(result,word,index){return result+(index?'_':'')+word.toLowerCase();});/**\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 */function split(string,separator,limit){if(limit&&typeof limit!=='number'&&isIterateeCall(string,separator,limit)){separator=limit=undefined;}limit=limit===undefined?MAX_ARRAY_LENGTH:limit>>>0;if(!limit){return[];}string=toString(string);if(string&&(typeof separator==='string'||separator!=null&&!isRegExp(separator))){separator=baseToString(separator);if(!separator&&hasUnicode(string)){return castSlice(stringToArray(string),0,limit);}}return string.split(separator,limit);}/**\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 */var startCase=createCompounder(function(result,word,index){return result+(index?' ':'')+upperFirst(word);});/**\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 */function startsWith(string,target,position){string=toString(string);position=position==null?0:baseClamp(toInteger(position),0,string.length);target=baseToString(target);return string.slice(position,position+target.length)==target;}/**\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><script></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 */function template(string,options,guard){// 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).\nvar settings=lodash.templateSettings;if(guard&&isIterateeCall(string,options,guard)){options=undefined;}string=toString(string);options=assignInWith({},options,settings,customDefaultsAssignIn);var imports=assignInWith({},options.imports,settings.imports,customDefaultsAssignIn),importsKeys=keys(imports),importsValues=baseValues(imports,importsKeys);var isEscaping,isEvaluating,index=0,interpolate=options.interpolate||reNoMatch,source=\"__p += '\";// Compile the regexp to match each delimiter.\nvar reDelimiters=RegExp((options.escape||reNoMatch).source+'|'+interpolate.source+'|'+(interpolate===reInterpolate?reEsTemplate:reNoMatch).source+'|'+(options.evaluate||reNoMatch).source+'|$','g');// Use a sourceURL for easier debugging.\nvar sourceURL='//# sourceURL='+('sourceURL'in options?options.sourceURL:'lodash.templateSources['+ ++templateCounter+']')+'\\n';string.replace(reDelimiters,function(match,escapeValue,interpolateValue,esTemplateValue,evaluateValue,offset){interpolateValue||(interpolateValue=esTemplateValue);// Escape characters that can't be included in string literals.\nsource+=string.slice(index,offset).replace(reUnescapedString,escapeStringChar);// Replace delimiters with snippets.\nif(escapeValue){isEscaping=true;source+=\"' +\\n__e(\"+escapeValue+\") +\\n'\";}if(evaluateValue){isEvaluating=true;source+=\"';\\n\"+evaluateValue+\";\\n__p += '\";}if(interpolateValue){source+=\"' +\\n((__t = (\"+interpolateValue+\")) == null ? '' : __t) +\\n'\";}index=offset+match.length;// The JS engine embedded in Adobe products needs `match` returned in\n// order to produce the correct `offset` value.\nreturn match;});source+=\"';\\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.\nvar variable=options.variable;if(!variable){source='with (obj) {\\n'+source+'\\n}\\n';}// Cleanup code by stripping empty strings.\nsource=(isEvaluating?source.replace(reEmptyStringLeading,''):source).replace(reEmptyStringMiddle,'$1').replace(reEmptyStringTrailing,'$1;');// Frame code as the function body.\nsource='function('+(variable||'obj')+') {\\n'+(variable?'':'obj || (obj = {});\\n')+\"var __t, __p = ''\"+(isEscaping?', __e = _.escape':'')+(isEvaluating?', __j = Array.prototype.join;\\n'+\"function print() { __p += __j.call(arguments, '') }\\n\":';\\n')+source+'return __p\\n}';var result=attempt(function(){return Function(importsKeys,sourceURL+'return '+source).apply(undefined,importsValues);});// Provide the compiled function's source by its `toString` method or\n// the `source` property as a convenience for inlining compiled templates.\nresult.source=source;if(isError(result)){throw result;}return result;}/**\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 */function toLower(value){return toString(value).toLowerCase();}/**\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 */function toUpper(value){return toString(value).toUpperCase();}/**\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 */function trim(string,chars,guard){string=toString(string);if(string&&(guard||chars===undefined)){return string.replace(reTrim,'');}if(!string||!(chars=baseToString(chars))){return string;}var strSymbols=stringToArray(string),chrSymbols=stringToArray(chars),start=charsStartIndex(strSymbols,chrSymbols),end=charsEndIndex(strSymbols,chrSymbols)+1;return castSlice(strSymbols,start,end).join('');}/**\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 */function trimEnd(string,chars,guard){string=toString(string);if(string&&(guard||chars===undefined)){return string.replace(reTrimEnd,'');}if(!string||!(chars=baseToString(chars))){return string;}var strSymbols=stringToArray(string),end=charsEndIndex(strSymbols,stringToArray(chars))+1;return castSlice(strSymbols,0,end).join('');}/**\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 */function trimStart(string,chars,guard){string=toString(string);if(string&&(guard||chars===undefined)){return string.replace(reTrimStart,'');}if(!string||!(chars=baseToString(chars))){return string;}var strSymbols=stringToArray(string),start=charsStartIndex(strSymbols,stringToArray(chars));return castSlice(strSymbols,start).join('');}/**\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 */function truncate(string,options){var length=DEFAULT_TRUNC_LENGTH,omission=DEFAULT_TRUNC_OMISSION;if(isObject(options)){var separator='separator'in options?options.separator:separator;length='length'in options?toInteger(options.length):length;omission='omission'in options?baseToString(options.omission):omission;}string=toString(string);var strLength=string.length;if(hasUnicode(string)){var strSymbols=stringToArray(string);strLength=strSymbols.length;}if(length>=strLength){return string;}var end=length-stringSize(omission);if(end<1){return omission;}var result=strSymbols?castSlice(strSymbols,0,end).join(''):string.slice(0,end);if(separator===undefined){return result+omission;}if(strSymbols){end+=result.length-end;}if(isRegExp(separator)){if(string.slice(end).search(separator)){var match,substring=result;if(!separator.global){separator=RegExp(separator.source,toString(reFlags.exec(separator))+'g');}separator.lastIndex=0;while(match=separator.exec(substring)){var newEnd=match.index;}result=result.slice(0,newEnd===undefined?end:newEnd);}}else if(string.indexOf(baseToString(separator),end)!=end){var index=result.lastIndexOf(separator);if(index>-1){result=result.slice(0,index);}}return result+omission;}/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` 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, & pebbles');\n * // => 'fred, barney, & pebbles'\n */function unescape(string){string=toString(string);return string&&reHasEscapedHtml.test(string)?string.replace(reEscapedHtml,unescapeHtmlChar):string;}/**\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 */var upperCase=createCompounder(function(result,word,index){return result+(index?' ':'')+word.toUpperCase();});/**\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 */var upperFirst=createCaseFirst('toUpperCase');/**\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 */function words(string,pattern,guard){string=toString(string);pattern=guard?undefined:pattern;if(pattern===undefined){return hasUnicodeWord(string)?unicodeWords(string):asciiWords(string);}return string.match(pattern)||[];}/* ------------------------------------------------------------------------*//**\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 */var attempt=baseRest(function(func,args){try{return apply(func,undefined,args);}catch(e){return isError(e)?e:new Error(e);}});/**\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 */var bindAll=flatRest(function(object,methodNames){arrayEach(methodNames,function(key){key=toKey(key);baseAssignValue(object,key,bind(object[key],object));});return object;});/**\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 */function cond(pairs){var length=pairs==null?0:pairs.length,toIteratee=getIteratee();pairs=!length?[]:arrayMap(pairs,function(pair){if(typeof pair[1]!=='function'){throw new TypeError(FUNC_ERROR_TEXT);}return[toIteratee(pair[0]),pair[1]];});return baseRest(function(args){var index=-1;while(++index<length){var pair=pairs[index];if(apply(pair[0],this,args)){return apply(pair[1],this,args);}}});}/**\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 */function conforms(source){return baseConforms(baseClone(source,CLONE_DEEP_FLAG));}/**\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 */function constant(value){return function(){return value;};}/**\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 */function defaultTo(value,defaultValue){return value==null||value!==value?defaultValue:value;}/**\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 */var flow=createFlow();/**\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 */var flowRight=createFlow(true);/**\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 */function identity(value){return value;}/**\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 */function iteratee(func){return baseIteratee(typeof func==='function'?func:baseClone(func,CLONE_DEEP_FLAG));}/**\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 */function matches(source){return baseMatches(baseClone(source,CLONE_DEEP_FLAG));}/**\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 */function matchesProperty(path,srcValue){return baseMatchesProperty(path,baseClone(srcValue,CLONE_DEEP_FLAG));}/**\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 */var method=baseRest(function(path,args){return function(object){return baseInvoke(object,path,args);};});/**\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 */var methodOf=baseRest(function(object,args){return function(path){return baseInvoke(object,path,args);};});/**\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 */function mixin(object,source,options){var props=keys(source),methodNames=baseFunctions(source,props);if(options==null&&!(isObject(source)&&(methodNames.length||!props.length))){options=source;source=object;object=this;methodNames=baseFunctions(source,keys(source));}var chain=!(isObject(options)&&'chain'in options)||!!options.chain,isFunc=isFunction(object);arrayEach(methodNames,function(methodName){var func=source[methodName];object[methodName]=func;if(isFunc){object.prototype[methodName]=function(){var chainAll=this.__chain__;if(chain||chainAll){var result=object(this.__wrapped__),actions=result.__actions__=copyArray(this.__actions__);actions.push({func:func,args:arguments,thisArg:object});result.__chain__=chainAll;return result;}return func.apply(object,arrayPush([this.value()],arguments));};}});return object;}/**\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 */function noConflict(){if(root._===this){root._=oldDash;}return this;}/**\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 */function noop(){}// No operation performed.\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 */function nthArg(n){n=toInteger(n);return baseRest(function(args){return baseNth(args,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 */var over=createOver(arrayMap);/**\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 */var overEvery=createOver(arrayEvery);/**\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 */var overSome=createOver(arraySome);/**\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 */function property(path){return isKey(path)?baseProperty(toKey(path)):basePropertyDeep(path);}/**\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 */function propertyOf(object){return function(path){return object==null?undefined:baseGet(object,path);};}/**\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 */var range=createRange();/**\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 */var rangeRight=createRange(true);/**\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 */function stubArray(){return[];}/**\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 */function stubFalse(){return false;}/**\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 */function stubObject(){return{};}/**\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 */function stubString(){return'';}/**\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 */function stubTrue(){return true;}/**\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 */function times(n,iteratee){n=toInteger(n);if(n<1||n>MAX_SAFE_INTEGER){return[];}var index=MAX_ARRAY_LENGTH,length=nativeMin(n,MAX_ARRAY_LENGTH);iteratee=getIteratee(iteratee);n-=MAX_ARRAY_LENGTH;var result=baseTimes(length,iteratee);while(++index<n){iteratee(index);}return result;}/**\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 */function toPath(value){if(isArray(value)){return arrayMap(value,toKey);}return isSymbol(value)?[value]:copyArray(stringToPath(toString(value)));}/**\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 */function uniqueId(prefix){var id=++idCounter;return toString(prefix)+id;}/* ------------------------------------------------------------------------*//**\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 */var add=createMathOperation(function(augend,addend){return augend+addend;},0);/**\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 */var ceil=createRound('ceil');/**\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 */var divide=createMathOperation(function(dividend,divisor){return dividend/divisor;},1);/**\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 */var floor=createRound('floor');/**\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 */function max(array){return array&&array.length?baseExtremum(array,identity,baseGt):undefined;}/**\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 */function maxBy(array,iteratee){return array&&array.length?baseExtremum(array,getIteratee(iteratee,2),baseGt):undefined;}/**\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 */function mean(array){return baseMean(array,identity);}/**\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 */function meanBy(array,iteratee){return baseMean(array,getIteratee(iteratee,2));}/**\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 */function min(array){return array&&array.length?baseExtremum(array,identity,baseLt):undefined;}/**\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 */function minBy(array,iteratee){return array&&array.length?baseExtremum(array,getIteratee(iteratee,2),baseLt):undefined;}/**\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 */var multiply=createMathOperation(function(multiplier,multiplicand){return multiplier*multiplicand;},1);/**\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 */var round=createRound('round');/**\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 */var subtract=createMathOperation(function(minuend,subtrahend){return minuend-subtrahend;},0);/**\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 */function sum(array){return array&&array.length?baseSum(array,identity):0;}/**\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 */function sumBy(array,iteratee){return array&&array.length?baseSum(array,getIteratee(iteratee,2)):0;}/* ------------------------------------------------------------------------*/// Add methods that return wrapped values in chain sequences.\nlodash.after=after;lodash.ary=ary;lodash.assign=assign;lodash.assignIn=assignIn;lodash.assignInWith=assignInWith;lodash.assignWith=assignWith;lodash.at=at;lodash.before=before;lodash.bind=bind;lodash.bindAll=bindAll;lodash.bindKey=bindKey;lodash.castArray=castArray;lodash.chain=chain;lodash.chunk=chunk;lodash.compact=compact;lodash.concat=concat;lodash.cond=cond;lodash.conforms=conforms;lodash.constant=constant;lodash.countBy=countBy;lodash.create=create;lodash.curry=curry;lodash.curryRight=curryRight;lodash.debounce=debounce;lodash.defaults=defaults;lodash.defaultsDeep=defaultsDeep;lodash.defer=defer;lodash.delay=delay;lodash.difference=difference;lodash.differenceBy=differenceBy;lodash.differenceWith=differenceWith;lodash.drop=drop;lodash.dropRight=dropRight;lodash.dropRightWhile=dropRightWhile;lodash.dropWhile=dropWhile;lodash.fill=fill;lodash.filter=filter;lodash.flatMap=flatMap;lodash.flatMapDeep=flatMapDeep;lodash.flatMapDepth=flatMapDepth;lodash.flatten=flatten;lodash.flattenDeep=flattenDeep;lodash.flattenDepth=flattenDepth;lodash.flip=flip;lodash.flow=flow;lodash.flowRight=flowRight;lodash.fromPairs=fromPairs;lodash.functions=functions;lodash.functionsIn=functionsIn;lodash.groupBy=groupBy;lodash.initial=initial;lodash.intersection=intersection;lodash.intersectionBy=intersectionBy;lodash.intersectionWith=intersectionWith;lodash.invert=invert;lodash.invertBy=invertBy;lodash.invokeMap=invokeMap;lodash.iteratee=iteratee;lodash.keyBy=keyBy;lodash.keys=keys;lodash.keysIn=keysIn;lodash.map=map;lodash.mapKeys=mapKeys;lodash.mapValues=mapValues;lodash.matches=matches;lodash.matchesProperty=matchesProperty;lodash.memoize=memoize;lodash.merge=merge;lodash.mergeWith=mergeWith;lodash.method=method;lodash.methodOf=methodOf;lodash.mixin=mixin;lodash.negate=negate;lodash.nthArg=nthArg;lodash.omit=omit;lodash.omitBy=omitBy;lodash.once=once;lodash.orderBy=orderBy;lodash.over=over;lodash.overArgs=overArgs;lodash.overEvery=overEvery;lodash.overSome=overSome;lodash.partial=partial;lodash.partialRight=partialRight;lodash.partition=partition;lodash.pick=pick;lodash.pickBy=pickBy;lodash.property=property;lodash.propertyOf=propertyOf;lodash.pull=pull;lodash.pullAll=pullAll;lodash.pullAllBy=pullAllBy;lodash.pullAllWith=pullAllWith;lodash.pullAt=pullAt;lodash.range=range;lodash.rangeRight=rangeRight;lodash.rearg=rearg;lodash.reject=reject;lodash.remove=remove;lodash.rest=rest;lodash.reverse=reverse;lodash.sampleSize=sampleSize;lodash.set=set;lodash.setWith=setWith;lodash.shuffle=shuffle;lodash.slice=slice;lodash.sortBy=sortBy;lodash.sortedUniq=sortedUniq;lodash.sortedUniqBy=sortedUniqBy;lodash.split=split;lodash.spread=spread;lodash.tail=tail;lodash.take=take;lodash.takeRight=takeRight;lodash.takeRightWhile=takeRightWhile;lodash.takeWhile=takeWhile;lodash.tap=tap;lodash.throttle=throttle;lodash.thru=thru;lodash.toArray=toArray;lodash.toPairs=toPairs;lodash.toPairsIn=toPairsIn;lodash.toPath=toPath;lodash.toPlainObject=toPlainObject;lodash.transform=transform;lodash.unary=unary;lodash.union=union;lodash.unionBy=unionBy;lodash.unionWith=unionWith;lodash.uniq=uniq;lodash.uniqBy=uniqBy;lodash.uniqWith=uniqWith;lodash.unset=unset;lodash.unzip=unzip;lodash.unzipWith=unzipWith;lodash.update=update;lodash.updateWith=updateWith;lodash.values=values;lodash.valuesIn=valuesIn;lodash.without=without;lodash.words=words;lodash.wrap=wrap;lodash.xor=xor;lodash.xorBy=xorBy;lodash.xorWith=xorWith;lodash.zip=zip;lodash.zipObject=zipObject;lodash.zipObjectDeep=zipObjectDeep;lodash.zipWith=zipWith;// Add aliases.\nlodash.entries=toPairs;lodash.entriesIn=toPairsIn;lodash.extend=assignIn;lodash.extendWith=assignInWith;// Add methods to `lodash.prototype`.\nmixin(lodash,lodash);/* ------------------------------------------------------------------------*/// Add methods that return unwrapped values in chain sequences.\nlodash.add=add;lodash.attempt=attempt;lodash.camelCase=camelCase;lodash.capitalize=capitalize;lodash.ceil=ceil;lodash.clamp=clamp;lodash.clone=clone;lodash.cloneDeep=cloneDeep;lodash.cloneDeepWith=cloneDeepWith;lodash.cloneWith=cloneWith;lodash.conformsTo=conformsTo;lodash.deburr=deburr;lodash.defaultTo=defaultTo;lodash.divide=divide;lodash.endsWith=endsWith;lodash.eq=eq;lodash.escape=escape;lodash.escapeRegExp=escapeRegExp;lodash.every=every;lodash.find=find;lodash.findIndex=findIndex;lodash.findKey=findKey;lodash.findLast=findLast;lodash.findLastIndex=findLastIndex;lodash.findLastKey=findLastKey;lodash.floor=floor;lodash.forEach=forEach;lodash.forEachRight=forEachRight;lodash.forIn=forIn;lodash.forInRight=forInRight;lodash.forOwn=forOwn;lodash.forOwnRight=forOwnRight;lodash.get=get;lodash.gt=gt;lodash.gte=gte;lodash.has=has;lodash.hasIn=hasIn;lodash.head=head;lodash.identity=identity;lodash.includes=includes;lodash.indexOf=indexOf;lodash.inRange=inRange;lodash.invoke=invoke;lodash.isArguments=isArguments;lodash.isArray=isArray;lodash.isArrayBuffer=isArrayBuffer;lodash.isArrayLike=isArrayLike;lodash.isArrayLikeObject=isArrayLikeObject;lodash.isBoolean=isBoolean;lodash.isBuffer=isBuffer;lodash.isDate=isDate;lodash.isElement=isElement;lodash.isEmpty=isEmpty;lodash.isEqual=isEqual;lodash.isEqualWith=isEqualWith;lodash.isError=isError;lodash.isFinite=isFinite;lodash.isFunction=isFunction;lodash.isInteger=isInteger;lodash.isLength=isLength;lodash.isMap=isMap;lodash.isMatch=isMatch;lodash.isMatchWith=isMatchWith;lodash.isNaN=isNaN;lodash.isNative=isNative;lodash.isNil=isNil;lodash.isNull=isNull;lodash.isNumber=isNumber;lodash.isObject=isObject;lodash.isObjectLike=isObjectLike;lodash.isPlainObject=isPlainObject;lodash.isRegExp=isRegExp;lodash.isSafeInteger=isSafeInteger;lodash.isSet=isSet;lodash.isString=isString;lodash.isSymbol=isSymbol;lodash.isTypedArray=isTypedArray;lodash.isUndefined=isUndefined;lodash.isWeakMap=isWeakMap;lodash.isWeakSet=isWeakSet;lodash.join=join;lodash.kebabCase=kebabCase;lodash.last=last;lodash.lastIndexOf=lastIndexOf;lodash.lowerCase=lowerCase;lodash.lowerFirst=lowerFirst;lodash.lt=lt;lodash.lte=lte;lodash.max=max;lodash.maxBy=maxBy;lodash.mean=mean;lodash.meanBy=meanBy;lodash.min=min;lodash.minBy=minBy;lodash.stubArray=stubArray;lodash.stubFalse=stubFalse;lodash.stubObject=stubObject;lodash.stubString=stubString;lodash.stubTrue=stubTrue;lodash.multiply=multiply;lodash.nth=nth;lodash.noConflict=noConflict;lodash.noop=noop;lodash.now=now;lodash.pad=pad;lodash.padEnd=padEnd;lodash.padStart=padStart;lodash.parseInt=parseInt;lodash.random=random;lodash.reduce=reduce;lodash.reduceRight=reduceRight;lodash.repeat=repeat;lodash.replace=replace;lodash.result=result;lodash.round=round;lodash.runInContext=runInContext;lodash.sample=sample;lodash.size=size;lodash.snakeCase=snakeCase;lodash.some=some;lodash.sortedIndex=sortedIndex;lodash.sortedIndexBy=sortedIndexBy;lodash.sortedIndexOf=sortedIndexOf;lodash.sortedLastIndex=sortedLastIndex;lodash.sortedLastIndexBy=sortedLastIndexBy;lodash.sortedLastIndexOf=sortedLastIndexOf;lodash.startCase=startCase;lodash.startsWith=startsWith;lodash.subtract=subtract;lodash.sum=sum;lodash.sumBy=sumBy;lodash.template=template;lodash.times=times;lodash.toFinite=toFinite;lodash.toInteger=toInteger;lodash.toLength=toLength;lodash.toLower=toLower;lodash.toNumber=toNumber;lodash.toSafeInteger=toSafeInteger;lodash.toString=toString;lodash.toUpper=toUpper;lodash.trim=trim;lodash.trimEnd=trimEnd;lodash.trimStart=trimStart;lodash.truncate=truncate;lodash.unescape=unescape;lodash.uniqueId=uniqueId;lodash.upperCase=upperCase;lodash.upperFirst=upperFirst;// Add aliases.\nlodash.each=forEach;lodash.eachRight=forEachRight;lodash.first=head;mixin(lodash,function(){var source={};baseForOwn(lodash,function(func,methodName){if(!hasOwnProperty.call(lodash.prototype,methodName)){source[methodName]=func;}});return source;}(),{chain:false});/* ------------------------------------------------------------------------*//**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */lodash.VERSION=VERSION;// Assign default placeholders.\narrayEach(['bind','bindKey','curry','curryRight','partial','partialRight'],function(methodName){lodash[methodName].placeholder=lodash;});// Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\narrayEach(['drop','take'],function(methodName,index){LazyWrapper.prototype[methodName]=function(n){n=n===undefined?1:nativeMax(toInteger(n),0);var result=this.__filtered__&&!index?new LazyWrapper(this):this.clone();if(result.__filtered__){result.__takeCount__=nativeMin(n,result.__takeCount__);}else{result.__views__.push({size:nativeMin(n,MAX_ARRAY_LENGTH),type:methodName+(result.__dir__<0?'Right':'')});}return result;};LazyWrapper.prototype[methodName+'Right']=function(n){return this.reverse()[methodName](n).reverse();};});// Add `LazyWrapper` methods that accept an `iteratee` value.\narrayEach(['filter','map','takeWhile'],function(methodName,index){var type=index+1,isFilter=type==LAZY_FILTER_FLAG||type==LAZY_WHILE_FLAG;LazyWrapper.prototype[methodName]=function(iteratee){var result=this.clone();result.__iteratees__.push({iteratee:getIteratee(iteratee,3),type:type});result.__filtered__=result.__filtered__||isFilter;return result;};});// Add `LazyWrapper` methods for `_.head` and `_.last`.\narrayEach(['head','last'],function(methodName,index){var takeName='take'+(index?'Right':'');LazyWrapper.prototype[methodName]=function(){return this[takeName](1).value()[0];};});// Add `LazyWrapper` methods for `_.initial` and `_.tail`.\narrayEach(['initial','tail'],function(methodName,index){var dropName='drop'+(index?'':'Right');LazyWrapper.prototype[methodName]=function(){return this.__filtered__?new LazyWrapper(this):this[dropName](1);};});LazyWrapper.prototype.compact=function(){return this.filter(identity);};LazyWrapper.prototype.find=function(predicate){return this.filter(predicate).head();};LazyWrapper.prototype.findLast=function(predicate){return this.reverse().find(predicate);};LazyWrapper.prototype.invokeMap=baseRest(function(path,args){if(typeof path==='function'){return new LazyWrapper(this);}return this.map(function(value){return baseInvoke(value,path,args);});});LazyWrapper.prototype.reject=function(predicate){return this.filter(negate(getIteratee(predicate)));};LazyWrapper.prototype.slice=function(start,end){start=toInteger(start);var result=this;if(result.__filtered__&&(start>0||end<0)){return new LazyWrapper(result);}if(start<0){result=result.takeRight(-start);}else if(start){result=result.drop(start);}if(end!==undefined){end=toInteger(end);result=end<0?result.dropRight(-end):result.take(end-start);}return result;};LazyWrapper.prototype.takeRightWhile=function(predicate){return this.reverse().takeWhile(predicate).reverse();};LazyWrapper.prototype.toArray=function(){return this.take(MAX_ARRAY_LENGTH);};// Add `LazyWrapper` methods to `lodash.prototype`.\nbaseForOwn(LazyWrapper.prototype,function(func,methodName){var checkIteratee=/^(?:filter|find|map|reject)|While$/.test(methodName),isTaker=/^(?:head|last)$/.test(methodName),lodashFunc=lodash[isTaker?'take'+(methodName=='last'?'Right':''):methodName],retUnwrapped=isTaker||/^find/.test(methodName);if(!lodashFunc){return;}lodash.prototype[methodName]=function(){var value=this.__wrapped__,args=isTaker?[1]:arguments,isLazy=value instanceof LazyWrapper,iteratee=args[0],useLazy=isLazy||isArray(value);var interceptor=function interceptor(value){var result=lodashFunc.apply(lodash,arrayPush([value],args));return isTaker&&chainAll?result[0]:result;};if(useLazy&&checkIteratee&&typeof iteratee==='function'&&iteratee.length!=1){// Avoid lazy use if the iteratee has a \"length\" value other than `1`.\nisLazy=useLazy=false;}var chainAll=this.__chain__,isHybrid=!!this.__actions__.length,isUnwrapped=retUnwrapped&&!chainAll,onlyLazy=isLazy&&!isHybrid;if(!retUnwrapped&&useLazy){value=onlyLazy?value:new LazyWrapper(this);var result=func.apply(value,args);result.__actions__.push({func:thru,args:[interceptor],thisArg:undefined});return new LodashWrapper(result,chainAll);}if(isUnwrapped&&onlyLazy){return func.apply(this,args);}result=this.thru(interceptor);return isUnwrapped?isTaker?result.value()[0]:result.value():result;};});// Add `Array` methods to `lodash.prototype`.\narrayEach(['pop','push','shift','sort','splice','unshift'],function(methodName){var func=arrayProto[methodName],chainName=/^(?:push|sort|unshift)$/.test(methodName)?'tap':'thru',retUnwrapped=/^(?:pop|shift)$/.test(methodName);lodash.prototype[methodName]=function(){var args=arguments;if(retUnwrapped&&!this.__chain__){var value=this.value();return func.apply(isArray(value)?value:[],args);}return this[chainName](function(value){return func.apply(isArray(value)?value:[],args);});};});// Map minified method names to their real names.\nbaseForOwn(LazyWrapper.prototype,function(func,methodName){var lodashFunc=lodash[methodName];if(lodashFunc){var key=lodashFunc.name+'',names=realNames[key]||(realNames[key]=[]);names.push({name:methodName,func:lodashFunc});}});realNames[createHybrid(undefined,WRAP_BIND_KEY_FLAG).name]=[{name:'wrapper',func:undefined}];// Add methods to `LazyWrapper`.\nLazyWrapper.prototype.clone=lazyClone;LazyWrapper.prototype.reverse=lazyReverse;LazyWrapper.prototype.value=lazyValue;// Add chain sequence methods to the `lodash` wrapper.\nlodash.prototype.at=wrapperAt;lodash.prototype.chain=wrapperChain;lodash.prototype.commit=wrapperCommit;lodash.prototype.next=wrapperNext;lodash.prototype.plant=wrapperPlant;lodash.prototype.reverse=wrapperReverse;lodash.prototype.toJSON=lodash.prototype.valueOf=lodash.prototype.value=wrapperValue;// Add lazy aliases.\nlodash.prototype.first=lodash.prototype.head;if(symIterator){lodash.prototype[symIterator]=wrapperToIterator;}return lodash;};/* --------------------------------------------------------------------------*/// Export lodash.\nvar _=runInContext();// Some AMD build optimizers, like r.js, check for condition patterns like:\nif( true&&_typeof(__webpack_require__.amdO)==='object'&&__webpack_require__.amdO){// 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.\nroot._=_;// Define as an anonymous module so, through path mapping, it can be\n// referenced as the \"underscore\" module.\n!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(){return _;}).call(exports, __webpack_require__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));}// Check for `exports` after `define` in case a build optimizer adds it.\nelse if(freeModule){// Export for Node.js.\n(freeModule.exports=_)._=_;// Export for CommonJS support.\nfreeExports._=_;}else{// Export to the global object.\nroot._=_;}}).call(undefined);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvbG9kYXNoLmpzIiwibWFwcGluZ3MiOiI7QUFBQSxrQ0FBYSx3RkFBd0YsbUJBQW1CLGVBQWUsK0dBQStHO0FBQ3RQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxzRkFBc0YsaUVBQWlFLHFGQUFxRiwySkFBMkosbUdBQW1HLHVFQUF1RSwwRkFBMEYseUdBQXlHLDBHQUEwRyw0UUFBNFEseUdBQXlHLG1IQUFtSCw0R0FBNEcsdUpBQXVKLHFMQUFxTCxnVkFBZ1YsNnBCQUE2cEIseVhBQXlYLDhHQUE4RywrRkFBK0YsR0FBRyxrR0FBa0csOEhBQThILHVJQUF1SSxrUUFBa1E7QUFDOTdIO0FBQ0E7QUFDQSx5Q0FBeUMsaURBQWlELGlIQUFpSCwrREFBK0QsMERBQTBELHdEQUF3RCwySEFBMkgsK0VBQStFO0FBQ3RrQjtBQUNBO0FBQ0EsNkJBQTZCLE1BQU0sYUFBYSxPQUFPLEdBQUcsd0ZBQXdGLCtGQUErRix1RUFBdUUsZ0dBQWdHLHNFQUFzRSw4RUFBOEUsd0lBQXdJLGtGQUFrRixxSEFBcUgsNnhCQUE2eEIsZ2VBQWdlLEVBQUUsK0ZBQStGLG1zQkFBbXNCLCtEQUErRDtBQUMzOUY7QUFDQTtBQUNBLDJDQUEyQywySkFBMkosZ1hBQWdYLG1PQUFtTyxtSEFBbUgsR0FBRyxpREFBaUQsaVpBQWlaLGtGQUFrRixtRkFBbUYsa1BBQWtQLG9ZQUFvWSx5RkFBeUYsd2lCQUF3aUIsK0VBQStFLHFGQUFxRjtBQUNqNUY7QUFDQSxzd0JBQXN3QixnRUFBZ0UsVUFBVSxXQUFXLFdBQVcsYUFBYSxZQUFZLEdBQUcsa0VBQWtFLE1BQU0sV0FBVyxXQUFXLGFBQWEsWUFBWSxPQUFPLDhGQUE4Rix1RUFBdUUscUhBQXFILHlFQUF5RSxxQkFBTSxtQ0FBbUMscUJBQU0sZUFBZSxxQkFBTSxFQUFFLHFCQUFNLGtCQUFrQixxQkFBTSxDQUFDLG1KQUFtSix5R0FBeUcsdURBQXVELE1BQTRCLENBQUMsQ0FBVyxtRUFBbUUsa0VBQWtFLE1BQTJCLENBQUMsQ0FBVywrREFBK0QsNkhBQTZILHFHQUFxRyxxRUFBcUUsSUFBSTtBQUN6ekUsMkVBQTJFLFVBQVUsY0FBYztBQUNuRyxzRUFBc0UsV0FBVyxHQUFHLDRSQUE0UjtBQUNoWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsVUFBVTtBQUN6QixlQUFlLEdBQUc7QUFDbEIsZUFBZSxPQUFPO0FBQ3RCLGlCQUFpQixHQUFHO0FBQ3BCLHlDQUF5QyxvQkFBb0IsaUNBQWlDLHlDQUF5QyxpREFBaUQsMERBQTBELGlDQUFpQztBQUNuUjtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxVQUFVO0FBQ3pCLGVBQWUsVUFBVTtBQUN6QixlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLFVBQVU7QUFDM0IsbUVBQW1FLCtDQUErQyxzQkFBc0IsdUJBQXVCLGlEQUFpRCxvQkFBb0I7QUFDcE87QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxVQUFVO0FBQ3pCLGlCQUFpQixPQUFPO0FBQ3hCLDBDQUEwQywrQ0FBK0Msc0JBQXNCLCtDQUErQyxRQUFRLGNBQWM7QUFDcEw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxVQUFVO0FBQ3pCLGlCQUFpQixPQUFPO0FBQ3hCLCtDQUErQyxzQ0FBc0MsZ0JBQWdCLGlEQUFpRCxRQUFRLGNBQWM7QUFDNUs7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxVQUFVO0FBQ3pCLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0EsNENBQTRDLCtDQUErQyxzQkFBc0IseUNBQXlDLGVBQWUsYUFBYTtBQUN0TDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLFVBQVU7QUFDekIsaUJBQWlCLE9BQU87QUFDeEIsNkNBQTZDLG9FQUFvRSxzQkFBc0IsdUJBQXVCLGlDQUFpQywyQkFBMkIsZUFBZTtBQUN6TztBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLEdBQUc7QUFDbEIsaUJBQWlCLFNBQVM7QUFDMUIsMkNBQTJDLHNDQUFzQywrQ0FBK0M7QUFDaEk7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsR0FBRztBQUNsQixlQUFlLFVBQVU7QUFDekIsaUJBQWlCLFNBQVM7QUFDMUIsMERBQTBELCtDQUErQyxzQkFBc0IsbUNBQW1DLGNBQWMsY0FBYztBQUM5TDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLFVBQVU7QUFDekIsaUJBQWlCLE9BQU87QUFDeEIseUNBQXlDLG9FQUFvRSxzQkFBc0Isa0RBQWtELGVBQWU7QUFDcE07QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixpQkFBaUIsT0FBTztBQUN4Qix3Q0FBd0Msc0RBQXNELHNCQUFzQixtQ0FBbUMsY0FBYztBQUNySztBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLFVBQVU7QUFDekIsZUFBZSxHQUFHO0FBQ2xCLGVBQWUsU0FBUztBQUN4QjtBQUNBLGlCQUFpQixHQUFHO0FBQ3BCLGtFQUFrRSwrQ0FBK0Msc0JBQXNCLDRCQUE0QixzQkFBc0IsNERBQTRELG9CQUFvQjtBQUN6UTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLFVBQVU7QUFDekIsZUFBZSxHQUFHO0FBQ2xCLGVBQWUsU0FBUztBQUN4QjtBQUNBLGlCQUFpQixHQUFHO0FBQ3BCLHVFQUF1RSxzQ0FBc0Msc0JBQXNCLDZCQUE2QixnQkFBZ0IsOERBQThELG9CQUFvQjtBQUNsUTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLFVBQVU7QUFDekIsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQSwyQ0FBMkMsK0NBQStDLHNCQUFzQix3Q0FBd0MsY0FBYyxjQUFjO0FBQ3BMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixpQkFBaUIsUUFBUTtBQUN6Qiw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGlCQUFpQixPQUFPO0FBQ3hCLHFDQUFxQyx5QkFBeUI7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGlCQUFpQixPQUFPO0FBQ3hCLG1DQUFtQyxzQ0FBc0M7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsY0FBYztBQUM3QixlQUFlLFVBQVU7QUFDekIsZUFBZSxVQUFVO0FBQ3pCLGlCQUFpQixHQUFHO0FBQ3BCLDJEQUEyRCxXQUFXLG1EQUFtRCxvQ0FBb0MsV0FBVyxlQUFlLEVBQUUsZUFBZTtBQUN4TTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLFVBQVU7QUFDekIsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsU0FBUztBQUN4QixpQkFBaUIsUUFBUTtBQUN6QixtRUFBbUUseURBQXlELHdDQUF3Qyx3Q0FBd0MsZUFBZSxVQUFVO0FBQ3JPO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLEdBQUc7QUFDbEIsZUFBZSxRQUFRO0FBQ3ZCLGlCQUFpQixRQUFRO0FBQ3pCLG1EQUFtRCxvR0FBb0c7QUFDdko7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsR0FBRztBQUNsQixlQUFlLFFBQVE7QUFDdkIsZUFBZSxVQUFVO0FBQ3pCLGlCQUFpQixRQUFRO0FBQ3pCLGtFQUFrRSwwQ0FBMEMsc0JBQXNCLG1DQUFtQyxlQUFlLFVBQVU7QUFDOUw7QUFDQTtBQUNBO0FBQ0EsZUFBZSxHQUFHO0FBQ2xCLGlCQUFpQixTQUFTO0FBQzFCLGlDQUFpQyxzQkFBc0I7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxVQUFVO0FBQ3pCLGlCQUFpQixRQUFRO0FBQ3pCLHlDQUF5QyxzQ0FBc0Msa0RBQWtEO0FBQ2pJO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixpQkFBaUIsVUFBVTtBQUMzQixrQ0FBa0Msd0JBQXdCLDZDQUE2QztBQUN2RztBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLFVBQVU7QUFDM0IsdUNBQXVDLHFCQUFxQiw2Q0FBNkM7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGNBQWM7QUFDN0IsZUFBZSxVQUFVO0FBQ3pCLGVBQWUsR0FBRztBQUNsQixlQUFlLFNBQVM7QUFDeEI7QUFDQSxlQUFlLFVBQVU7QUFDekIsaUJBQWlCLEdBQUc7QUFDcEIsK0VBQStFLHFEQUFxRCw0RkFBNEYsRUFBRSxvQkFBb0I7QUFDdFA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLFVBQVU7QUFDekIsaUJBQWlCLE9BQU87QUFDeEIsMkNBQTJDLHdCQUF3QixxQkFBcUIsZ0JBQWdCLG1DQUFtQyxjQUFjO0FBQ3pKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsVUFBVTtBQUN6QixpQkFBaUIsUUFBUTtBQUN6Qix3Q0FBd0Msd0NBQXdDLHNCQUFzQixtQ0FBbUMsd0JBQXdCLG1EQUFtRCxlQUFlO0FBQ25PO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsVUFBVTtBQUN6QixpQkFBaUIsT0FBTztBQUN4QixzQ0FBc0MsNkJBQTZCLGlCQUFpQiwrQkFBK0IsZUFBZTtBQUNsSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixlQUFlLE9BQU87QUFDdEIsaUJBQWlCLFFBQVE7QUFDekIsMENBQTBDLG9DQUFvQyx5QkFBeUIsR0FBRztBQUMxRztBQUNBO0FBQ0E7QUFDQSxlQUFlLFVBQVU7QUFDekIsaUJBQWlCLFVBQVU7QUFDM0IsZ0NBQWdDLHVCQUF1QixzQkFBc0I7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixlQUFlLE9BQU87QUFDdEIsaUJBQWlCLFFBQVE7QUFDekIseUNBQXlDLG9DQUFvQyxvQkFBb0IsR0FBRztBQUNwRztBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZUFBZSxRQUFRO0FBQ3ZCLGlCQUFpQixTQUFTO0FBQzFCLG9DQUFvQyx1QkFBdUI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGlCQUFpQixRQUFRO0FBQ3pCLHVEQUF1RCxzQ0FBc0MsdUVBQXVFLGNBQWM7QUFDbEw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGlCQUFpQixRQUFRO0FBQ3pCLHFEQUFxRCw0QkFBNEIsZ0VBQWdFLGNBQWM7QUFDL0o7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsR0FBRztBQUNsQixpQkFBaUIsUUFBUTtBQUN6QixnREFBZ0QsaUNBQWlDLGdCQUFnQixnQ0FBZ0MsV0FBVyxlQUFlO0FBQzNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGlCQUFpQixRQUFRO0FBQ3pCLHdEQUF3RDtBQUN4RDtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLFFBQVE7QUFDekIsc0RBQXNEO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixpQkFBaUIsUUFBUTtBQUN6QixzQ0FBc0MsK0JBQStCO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLEdBQUc7QUFDcEIscUNBQXFDLDJDQUEyQztBQUNoRjtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLFNBQVM7QUFDMUIsbUNBQW1DLGtDQUFrQztBQUNyRTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLFNBQVM7QUFDMUIsdUNBQXVDLHNDQUFzQztBQUM3RTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLE9BQU87QUFDeEIsMENBQTBDLG1CQUFtQixvQ0FBb0MseUJBQXlCLGVBQWU7QUFDekk7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGlCQUFpQixPQUFPO0FBQ3hCLGdDQUFnQyxvQ0FBb0MsZ0NBQWdDLDZCQUE2QixFQUFFLGVBQWU7QUFDbEo7QUFDQTtBQUNBO0FBQ0EsZUFBZSxVQUFVO0FBQ3pCLGVBQWUsVUFBVTtBQUN6QixpQkFBaUIsVUFBVTtBQUMzQix3Q0FBd0MscUJBQXFCLCtCQUErQjtBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLEdBQUc7QUFDbEIsaUJBQWlCLE9BQU87QUFDeEIsa0RBQWtELHNEQUFzRCxzQkFBc0IsdUJBQXVCLDZDQUE2Qyx5QkFBeUIsMkJBQTJCLGVBQWU7QUFDclE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsUUFBUTtBQUN2QixpQkFBaUIsR0FBRztBQUNwQixvQ0FBb0MsK0NBQStDO0FBQ25GO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixpQkFBaUIsT0FBTztBQUN4QixnQ0FBZ0Msb0NBQW9DLDRCQUE0Qix1QkFBdUIsRUFBRSxlQUFlO0FBQ3hJO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixpQkFBaUIsT0FBTztBQUN4QixnQ0FBZ0Msb0NBQW9DLDRCQUE0QiwrQkFBK0IsRUFBRSxlQUFlO0FBQ2hKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsR0FBRztBQUNsQixlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLFFBQVE7QUFDekIscURBQXFELDBDQUEwQyxzQkFBc0IseUJBQXlCLGVBQWUsVUFBVTtBQUN2SztBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLEdBQUc7QUFDbEIsZUFBZSxRQUFRO0FBQ3ZCLGlCQUFpQixRQUFRO0FBQ3pCLHlEQUF5RCxzQkFBc0IsZUFBZSx5QkFBeUIsZUFBZSxjQUFjO0FBQ3BKO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixpQkFBaUIsUUFBUTtBQUN6QixtQ0FBbUMsaUVBQWlFO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixpQkFBaUIsT0FBTztBQUN4QixzQ0FBc0MsdUVBQXVFO0FBQzdHO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixpQkFBaUIsUUFBUTtBQUN6QiwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGlCQUFpQixRQUFRO0FBQ3pCLG9DQUFvQyxpQ0FBaUMsOEJBQThCLFVBQVUsZUFBZTtBQUM1SDtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLE9BQU87QUFDeEIsdUNBQXVDLG9DQUFvQztBQUMzRTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLE9BQU87QUFDeEIscUNBQXFDLHdDQUF3QztBQUM3RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLFVBQVU7QUFDM0I7QUFDQTtBQUNBLGlCQUFpQiwwQkFBMEI7QUFDM0M7QUFDQTtBQUNBLHNCQUFzQiwrQkFBK0I7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDRCQUE0QjtBQUNoRSx1REFBdUQsdUZBQXVGLCtPQUErTyxvSUFBb0ksOEZBQThGLDhGQUE4Riw4RkFBOEYsbURBQW1ELCtFQUErRSxpRkFBaUYsb0NBQW9DLEdBQUc7QUFDcmhDO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCw2RkFBNkYsdUZBQXVGLG9OQUFvTix1ZkFBdWYsOEJBQThCLElBQUksNENBQTRDLE9BQU8sTUFBTSxFQUFFLGFBQWEsV0FBVyxHQUFHLGtPQUFrTywyZEFBMmQsdVJBQXVSLDBFQUEwRSxpRUFBaUUseU5BQXlOLCtOQUErTjtBQUNya0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsR0FBRztBQUNwQixtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLDBFQUEwRSxtQ0FBbUMsY0FBYyw2Q0FBNkMsNkJBQTZCLGlDQUFpQztBQUN0UTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCLHFDQUFxQyxtQkFBbUIsdUJBQXVCLHFCQUFxQixVQUFVLGlCQUFpQiw0QkFBNEIsdUJBQXVCLHdCQUF3QiwyQkFBMkIsaUJBQWlCLEdBQUc7QUFDelA7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLFNBQVM7QUFDNUIsa0RBQWtELHVCQUF1QixvQkFBb0IsMEJBQTBCLGlCQUFpQiwyQkFBMkI7QUFDbks7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQiw4QkFBOEI7QUFDOUIsc0NBQXNDLG9DQUFvQyx5REFBeUQsa0RBQWtEO0FBQ3JMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsdUNBQXVDLHVCQUF1QixvQkFBb0IsZUFBZSx3QkFBd0Isc0JBQXNCLG9DQUFvQyxtQkFBbUI7QUFDdE07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCLGdDQUFnQyw2Q0FBNkMsK0NBQStDLDRCQUE0QixzQ0FBc0MsbURBQW1ELHdDQUF3QywyQ0FBMkMsZUFBZTtBQUNuVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFFBQVE7QUFDN0Isa0NBQWtDLHNCQUFzQixpQ0FBaUMsa0JBQWtCLDBCQUEwQixLQUFLLG9CQUFvQixvQkFBb0IsZUFBZTtBQUNqTTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEdBQUc7QUFDeEIsZ0NBQWdDLDJWQUEyViwyREFBMkQsaURBQWlELGNBQWMsMENBQTBDLFdBQVcsb0NBQW9DLDhCQUE4Qiw2RkFBNkYsd0JBQXdCLGdCQUFnQixtQkFBbUIsMkJBQTJCLGdCQUFnQixLQUFLLGVBQWUsMEJBQTBCLGVBQWU7QUFDNTJCLHVEQUF1RCw4Q0FBOEM7QUFDckc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixrQ0FBa0MsbURBQW1ELGFBQWEsc0JBQXNCLHlCQUF5Qiw4QkFBOEI7QUFDL0s7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxpREFBaUQsYUFBYTtBQUM5RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFNBQVM7QUFDOUIsb0NBQW9DLG9EQUFvRCxzQkFBc0IsZUFBZTtBQUM3SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLEdBQUc7QUFDeEIsaUNBQWlDLHVCQUF1QixpQkFBaUIscUJBQXFCLGlEQUFpRCwwREFBMEQ7QUFDek07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixTQUFTO0FBQzlCLGlDQUFpQyx1QkFBdUIseUVBQXlFO0FBQ2pJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsUUFBUTtBQUM3Qix1Q0FBdUMsdUJBQXVCLDZCQUE2QiwrREFBK0QsYUFBYTtBQUN2SywrQkFBK0Isb0NBQW9DLDJCQUEyQiwyQkFBMkIsMkJBQTJCO0FBQ3BKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsdUNBQXVDLG1EQUFtRCxhQUFhLHNCQUFzQix5QkFBeUIsOEJBQThCO0FBQ3BMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsaUJBQWlCLGFBQWE7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixTQUFTO0FBQzlCLHlDQUF5QyxvREFBb0QsWUFBWSxjQUFjLDRCQUE0QixxQkFBcUIsWUFBWSxLQUFLLDJCQUEyQixZQUFZLGFBQWE7QUFDN087QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixHQUFHO0FBQ3hCLHNDQUFzQyxvREFBb0QseUNBQXlDO0FBQ25JO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsU0FBUztBQUM5QixzQ0FBc0MsMkNBQTJDO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsUUFBUTtBQUM3Qiw0Q0FBNEMsb0RBQW9ELFlBQVksWUFBWSx3QkFBd0IsS0FBSyxzQkFBc0IsYUFBYTtBQUN4TCx5Q0FBeUMsOENBQThDLHFDQUFxQyxxQ0FBcUMscUNBQXFDO0FBQ3RNO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsc0NBQXNDLG1EQUFtRCxhQUFhLHNCQUFzQix5QkFBeUIsOEJBQThCO0FBQ25MO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsWUFBWSxlQUFlLDhEQUE4RDtBQUM3SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFNBQVM7QUFDOUIsd0NBQXdDLCtDQUErQyxzQkFBc0IsZUFBZTtBQUM1SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLEdBQUc7QUFDeEIscUNBQXFDLHNDQUFzQztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFNBQVM7QUFDOUIscUNBQXFDLHNDQUFzQztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFFBQVE7QUFDN0IsMkNBQTJDLDZDQUE2QyxvQkFBb0IsK0JBQStCLGFBQWE7QUFDeEosdUNBQXVDLDRDQUE0QyxtQ0FBbUMsbUNBQW1DLG1DQUFtQztBQUM1TDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIscUNBQXFDLGlEQUFpRCw2QkFBNkIsc0JBQXNCLDBCQUEwQjtBQUNuSztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsUUFBUTtBQUM3Qix1Q0FBdUMsd0NBQXdDLGFBQWE7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCLHVDQUF1QyxpQ0FBaUM7QUFDeEUsMkRBQTJELG1DQUFtQztBQUM5RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1DQUFtQyw4Q0FBOEMscUJBQXFCO0FBQ3RHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsOEJBQThCLGFBQWE7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixTQUFTO0FBQzlCLHFDQUFxQyxrREFBa0Qsb0JBQW9CLGVBQWU7QUFDMUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixHQUFHO0FBQ3hCLGtDQUFrQywrQkFBK0I7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixTQUFTO0FBQzlCLGtDQUFrQywrQkFBK0I7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCLHdDQUF3Qyx1QkFBdUIsOEJBQThCLHdCQUF3QiwwQ0FBMEMsd0JBQXdCLHNCQUFzQixhQUFhLHdDQUF3QyxvQkFBb0Isb0JBQW9CLGFBQWE7QUFDdlQsaUNBQWlDLHNDQUFzQyw2QkFBNkIsNkJBQTZCLDZCQUE2QjtBQUM5SjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsU0FBUztBQUM1QixxQkFBcUIsT0FBTztBQUM1QixtREFBbUQsd1FBQXdRLHNCQUFzQjtBQUNqVjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUJBQW1CLGVBQWU7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLEdBQUc7QUFDeEIsdUNBQXVDLHdCQUF3Qix1REFBdUQ7QUFDdEg7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUIsNkNBQTZDLGtFQUFrRTtBQUMvRztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsT0FBTztBQUM1Qix3Q0FBd0Msc0NBQXNDO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLEdBQUc7QUFDdEIsdURBQXVELG1GQUFtRixvQ0FBb0M7QUFDOUs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixHQUFHO0FBQ3RCLGtEQUFrRCx5QkFBeUIsZ0dBQWdHLG9DQUFvQztBQUMvTTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsUUFBUTtBQUM3Qiw0Q0FBNEMsd0JBQXdCLGdCQUFnQiw2QkFBNkIsZ0JBQWdCLFVBQVU7QUFDM0k7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsVUFBVTtBQUMvQiwyRUFBMkUsbURBQW1ELHNEQUFzRCxFQUFFLG9CQUFvQjtBQUMxTTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCLDhDQUE4Qyx1REFBdUQ7QUFDckc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QixnREFBZ0QseURBQXlEO0FBQ3pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLEdBQUc7QUFDdEIsc0RBQXNELHFDQUFxQywyQkFBMkIsNERBQTRELEdBQUcsS0FBSyxvQkFBb0I7QUFDOU07QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLE9BQU87QUFDNUIseUNBQXlDLHdFQUF3RSxzQkFBc0IsdURBQXVELGVBQWU7QUFDN007QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0Isa0RBQWtELG9CQUFvQixzQkFBc0IsbUNBQW1DLHNCQUFzQixvQ0FBb0MsZUFBZTtBQUN4TTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixHQUFHO0FBQ3hCLHlFQUF5RSwyR0FBMkcsZUFBZSxvRUFBb0UsdUJBQXVCLGVBQWUscUJBQXFCLGNBQWMseUJBQXlCLFVBQVUsNkJBQTZCLFlBQVksaUNBQWlDLEtBQUssdURBQXVELG9CQUFvQixrQ0FBa0Msa0RBQWtELHdCQUF3Qix3QkFBd0IsWUFBWSw0R0FBNEcsS0FBSyx3QkFBd0Isd0JBQXdCLDBDQUEwQztBQUN4MkIsMkJBQTJCLDZCQUE2QixZQUFZLGdCQUFnQix3QkFBd0IsaUJBQWlCLGlDQUFpQyx5RUFBeUUsRUFBRSxlQUFlLGlCQUFpQixxQ0FBcUMsd0VBQXdFLEVBQUUsZUFBZSxzRUFBc0UsMENBQTBDLDhDQUE4QyxVQUFVLGFBQWEscUJBQXFCO0FBQ2psQixnRkFBZ0YsRUFBRSxlQUFlO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixVQUFVO0FBQy9CLHlDQUF5Qyx1QkFBdUIsd0JBQXdCLDhDQUE4QztBQUN0STtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsU0FBUztBQUM5Qix3REFBd0Qsd0JBQXdCLGlCQUFpQixlQUFlLHNCQUFzQixnQkFBZ0IsOERBQThELDJEQUEyRCxlQUFlLGFBQWE7QUFDM1M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsZUFBZTtBQUNwQyw4Q0FBOEMsNkJBQTZCLHNDQUFzQyw2QkFBNkIsNEJBQTRCLFFBQVE7QUFDbEw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QixxRUFBcUUsMkdBQTJHLFlBQVksZUFBZSxhQUFhLDZDQUE2QyxlQUFlLDJCQUEyQixnQkFBZ0IseUNBQXlDLGtCQUFrQixlQUFlLDZCQUE2Qiw0QkFBNEIscUVBQXFFLG9DQUFvQyxrQ0FBa0MsNkJBQTZCLHFCQUFxQixtQ0FBbUMsaUJBQWlCLG9CQUFvQiwrQ0FBK0MscUJBQXFCLGVBQWU7QUFDMXhCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixjQUFjO0FBQ25DLG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsY0FBYztBQUNuQyxrRUFBa0U7QUFDbEU7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFNBQVM7QUFDOUI7QUFDQSxvREFBb0QsZ0JBQWdCLHFEQUFxRCwyQ0FBMkMsZUFBZSxFQUFFLGVBQWU7QUFDcE07QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsR0FBRztBQUN4Qiw0REFBNEQsaUNBQWlDLHNCQUFzQiwrQ0FBK0MsNkdBQTZHLG9DQUFvQyxlQUFlO0FBQ2xVO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCLG9EQUFvRCx3QkFBd0IsdUJBQXVCLFlBQVksb0NBQW9DLHNEQUFzRCxVQUFVLGFBQWEsOEJBQThCLGlCQUFpQixzQkFBc0IsY0FBYztBQUNuVDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QixxREFBcUQsY0FBYyxxREFBcUQsc0NBQXNDLHFCQUFxQixFQUFFLGVBQWU7QUFDcE07QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFNBQVM7QUFDNUIsbUJBQW1CLFNBQVM7QUFDNUIsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLE9BQU87QUFDNUIsdUVBQXVFLGlDQUFpQyxxQ0FBcUMsb0JBQW9CLHNCQUFzQix1QkFBdUIsOEJBQThCLFlBQVk7QUFDeFAsc0RBQXNELEtBQUssMEJBQTBCLG1CQUFtQiw4QkFBOEIsZUFBZTtBQUNySjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0IsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0IsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixRQUFRO0FBQzdCLGdEQUFnRCw4Q0FBOEM7QUFDOUY7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0IscURBQXFELG1EQUFtRDtBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixPQUFPO0FBQzVCLGdEQUFnRCx1Q0FBdUMsZ0NBQWdDLEdBQUc7QUFDMUg7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLGNBQWM7QUFDakMscUJBQXFCLEdBQUc7QUFDeEIseUNBQXlDLDJCQUEyQiwrQkFBK0Isa0NBQWtDLHFDQUFxQyw4Q0FBOEM7QUFDeE47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCLGdFQUFnRSw0QkFBNEIscUVBQXFFO0FBQ2pLO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCLHNDQUFzQyxnQkFBZ0IsK0NBQStDLCtGQUErRjtBQUNwTTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBLHdDQUF3QyxvQkFBb0I7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLGNBQWM7QUFDakMscUJBQXFCLFNBQVM7QUFDOUIsd0NBQXdDLHNEQUFzRDtBQUM5RjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsY0FBYztBQUNqQyxxQkFBcUIsU0FBUztBQUM5QiwwQ0FBMEMsNENBQTRDO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixTQUFTO0FBQzlCLGtEQUFrRCxrRUFBa0U7QUFDcEg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QixpRUFBaUUsZ0xBQWdMLGtCQUFrQiwyQkFBMkIsdUJBQXVCLDJDQUEyQyw0Q0FBNEMsa0hBQWtILGdCQUFnQiw0QkFBNEIscURBQXFELCtEQUErRCxvQ0FBb0MseUVBQXlFLG1CQUFtQixrQkFBa0IsMkJBQTJCLHFGQUFxRixpQkFBaUIsU0FBUyxxQkFBcUIscUJBQXFCLGVBQWU7QUFDbi9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFVBQVU7QUFDL0IscUVBQXFFLDZDQUE2QyxnREFBZ0QsRUFBRSxvQkFBb0I7QUFDeEw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsR0FBRztBQUN4QixpREFBaUQsMkJBQTJCLDJCQUEyQix1REFBdUQscURBQXFEO0FBQ25OO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCLDJDQUEyQyx3REFBd0Q7QUFDbkc7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUIsNkNBQTZDLCtEQUErRDtBQUM1RztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QixzQ0FBc0Msd0RBQXdEO0FBQzlGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixTQUFTO0FBQzlCLHNFQUFzRSxrQkFBa0IsYUFBYSx5RUFBeUUscUNBQXFDLDBFQUEwRTtBQUM3UjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFNBQVM7QUFDOUIscUZBQXFGLG9JQUFvSSx3Q0FBd0Msd0NBQXdDLG1GQUFtRixnQ0FBZ0MscUJBQXFCLGNBQWMsY0FBYyxnQkFBZ0IseUJBQXlCLDJCQUEyQix1S0FBdUssb0NBQW9DLHFJQUFxSSwrQkFBK0Isa0dBQWtHLDJCQUEyQix1RUFBdUUsZUFBZSxjQUFjLDJCQUEyQixzRUFBc0U7QUFDbHNDO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCLHFDQUFxQyxtREFBbUQ7QUFDeEY7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFNBQVM7QUFDOUIsb0VBQW9FLGlFQUFpRSxpQkFBaUIsZUFBZSxzQkFBc0IsZUFBZSwwQkFBMEIsd0VBQXdFLGVBQWUsc0JBQXNCLHNCQUFzQixzREFBc0QsMEJBQTBCLDJDQUEyQyxlQUFlLEtBQUssc0JBQXNCLGVBQWUsa0VBQWtFLDZIQUE2SCxnQkFBZ0IsYUFBYTtBQUN2dkI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQSx3Q0FBd0Msc0NBQXNDLGNBQWMsc0RBQXNELHNDQUFzQztBQUN4TDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5Qix3Q0FBd0MsMERBQTBEO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCLHFDQUFxQyxtREFBbUQ7QUFDeEY7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUIsNENBQTRDLHlGQUF5RjtBQUNySTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsVUFBVTtBQUMvQix3Q0FBd0M7QUFDeEM7QUFDQSw4QkFBOEIsY0FBYyxnQkFBZ0IsaUJBQWlCLHVFQUF1RSxpRkFBaUYsd0JBQXdCO0FBQzdQO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCLHFDQUFxQyx5QkFBeUIsMkJBQTJCLGNBQWMsK0JBQStCLHdEQUF3RCxtQkFBbUIsZUFBZTtBQUNoTztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1Qix1Q0FBdUMsc0JBQXNCLDZCQUE2QiwwQ0FBMEMsdUJBQXVCLHVFQUF1RSxtQkFBbUIsZUFBZTtBQUNwUTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBLHdDQUF3QyxvQkFBb0I7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLE9BQU87QUFDNUIsaURBQWlELHdFQUF3RSxtREFBbUQsZ0RBQWdELEVBQUUsZUFBZTtBQUM3TztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsVUFBVTtBQUMvQix3Q0FBd0MsbUNBQW1DLHlDQUF5QyxpRUFBaUUsd0JBQXdCLGdFQUFnRTtBQUM3UTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsVUFBVTtBQUMvQix1REFBdUQsOENBQThDLHNEQUFzRCx3QkFBd0IsOEJBQThCLGtKQUFrSjtBQUNuVztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQjtBQUNBLHVFQUF1RSxvQkFBb0IsUUFBUSxzQ0FBc0MsdUJBQXVCLDJCQUEyQixzRUFBc0UsS0FBSyxzR0FBc0cseUJBQXlCLG1CQUFtQix3Q0FBd0MsVUFBVTtBQUMxYztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQSx5RkFBeUYsMEZBQTBGLFlBQVkscUNBQXFDLFFBQVEsMkZBQTJGLGtDQUFrQyxhQUFhLDhHQUE4RyxrQkFBa0IsMkJBQTJCLHNCQUFzQixtQkFBbUIscUNBQXFDLDhCQUE4QixnQkFBZ0IsZUFBZSxxQ0FBcUMsaUJBQWlCLGVBQWUseUNBQXlDLEtBQUssY0FBYyx3REFBd0Qsa0JBQWtCLDBCQUEwQixrQ0FBa0MsNkRBQTZELHFDQUFxQyxLQUFLLGlCQUFpQixhQUFhO0FBQ3hpQyw2QkFBNkIsdURBQXVELDJCQUEyQix1Q0FBdUM7QUFDdEo7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLEdBQUc7QUFDeEIscUNBQXFDLHdCQUF3QixZQUFZLFFBQVEsZ0JBQWdCLDZDQUE2QztBQUM5STtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsOEJBQThCO0FBQ2pELG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCLDZEQUE2RCxhQUFhLG1GQUFtRiw2REFBNkQsbURBQW1ELHdCQUF3QixFQUFFLE9BQU8sOENBQThDLEVBQUUsZ0RBQWdELDZDQUE2QyxHQUFHO0FBQzliO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0IsMkNBQTJDLG9EQUFvRCwyQkFBMkIsR0FBRztBQUM3SDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsUUFBUTtBQUM3Qix1REFBdUQsMkNBQTJDLHNCQUFzQixpREFBaUQsMEJBQTBCLDhDQUE4QyxlQUFlO0FBQ2hRO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDLHFCQUFxQixVQUFVO0FBQy9CLDJDQUEyQyx3QkFBd0IsK0JBQStCO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLE9BQU87QUFDNUIsa0VBQWtFLDRGQUE0RixtQkFBbUIsMEJBQTBCLGFBQWEsMENBQTBDLHNCQUFzQiw0RUFBNEUsa0VBQWtFLGlCQUFpQiwrQkFBK0IsaUNBQWlDLGNBQWM7QUFDcmdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLE9BQU87QUFDNUIsOENBQThDLHFEQUFxRCxnQkFBZ0IsMEJBQTBCLHdDQUF3QyxtQkFBbUIsbUJBQW1CLDRCQUE0QixLQUFLLDBCQUEwQixjQUFjO0FBQ3BTO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0IsNENBQTRDLDBEQUEwRDtBQUN0RztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixTQUFTO0FBQzVCLHFCQUFxQixPQUFPO0FBQzVCLHdEQUF3RCx3RkFBd0YsZ0JBQWdCLHVDQUF1QyxhQUFhLGVBQWU7QUFDbk87QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0IseUNBQXlDLGNBQWMscUNBQXFDLGVBQWU7QUFDM0c7QUFDQSxHQUFHLFFBQVEsZ0JBQWdCLG1CQUFtQixNQUFNLGlCQUFpQixTQUFTLGVBQWU7QUFDN0Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFVBQVU7QUFDL0IseUNBQXlDLDJEQUEyRDtBQUNwRztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxxQkFBcUIsR0FBRztBQUN4QiwyQ0FBMkMsd0NBQXdDO0FBQ25GO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCLGlEQUFpRCw2QkFBNkIsdURBQXVEO0FBQ3JJO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixjQUFjO0FBQ2pDLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixRQUFRO0FBQzdCLDBEQUEwRCxzQkFBc0IsZUFBZSwyQkFBMkIsaUVBQWlFLG9DQUFvQywwQ0FBMEMscUJBQXFCLHlCQUF5Qiw4REFBOEQseUJBQXlCLG9FQUFvRSxpQ0FBaUMsb0JBQW9CLGVBQWU7QUFDdGhCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixVQUFVO0FBQy9CLGlFQUFpRSx1QkFBdUIsY0FBYztBQUN0RztBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsVUFBVTtBQUMzQixpQkFBaUIsVUFBVTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3Qiw0RUFBNEUsdUNBQXVDLHdFQUF3RSxJQUFJO0FBQy9MO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixjQUFjO0FBQy9CLG1CQUFtQixPQUFPO0FBQzFCLDBDQUEwQyx3Q0FBd0M7QUFDbEY7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUIsK0NBQStDLGlDQUFpQyxZQUFZLG9DQUFvQywwQkFBMEIsVUFBVSxhQUFhLGlDQUFpQyxXQUFXLHlCQUF5QixzQkFBc0Isa0NBQWtDLGVBQWU7QUFDN1Q7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFNBQVM7QUFDOUI7QUFDQSxtREFBbUQsV0FBVyxxREFBcUQseUNBQXlDLGVBQWUsRUFBRSxnQkFBZ0I7QUFDN0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixTQUFTO0FBQzVCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0EsNERBQTRELDRDQUE0Qyx3RUFBd0UsZ0JBQWdCLHlDQUF5QyxzRkFBc0YsV0FBVyxLQUFLLFdBQVcsYUFBYSwyREFBMkQ7QUFDbGE7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFNBQVM7QUFDNUIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQSx1RUFBdUUsc0JBQXNCLHFKQUFxSixnQkFBZ0IsOExBQThMLGFBQWEsdUNBQXVDLHdCQUF3QixtREFBbUQsbUJBQW1CLCtEQUErRCxxQkFBcUIsNkVBQTZFLGdDQUFnQyxjQUFjLEtBQUssa0RBQWtELFdBQVcsV0FBVyxLQUFLLFdBQVcsd0NBQXdDO0FBQ3Q2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCLG1EQUFtRCxzREFBc0Qsc0JBQXNCLCtEQUErRCwrQkFBK0Isa0JBQWtCLHVDQUF1QyxlQUFlO0FBQ3JTO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFFBQVE7QUFDN0Isd0NBQXdDLDRCQUE0QixjQUFjLG9CQUFvQixZQUFZLGNBQWM7QUFDaEk7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsUUFBUTtBQUM3Qix3Q0FBd0M7QUFDeEMsNEJBQTRCLGNBQWMsbUJBQW1CO0FBQzdELHdDQUF3QyxvQkFBb0IscURBQXFELG9CQUFvQixvREFBb0Q7QUFDekw7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLE9BQU87QUFDNUIsd0RBQXdELDRGQUE0RixlQUFlLGVBQWUsNEJBQTRCLGtDQUFrQyx1Q0FBdUMsUUFBUSx3QkFBd0IsZUFBZSxrQkFBa0IscUJBQXFCLEtBQUsseUJBQXlCLDRCQUE0QiwrREFBK0Qsb0NBQW9DLGtDQUFrQywwQkFBMEIsbUJBQW1CLCtCQUErQixpQkFBaUIsYUFBYSxxQkFBcUIsb0JBQW9CLDZDQUE2QyxrQkFBa0IscUJBQXFCLHFCQUFxQixlQUFlO0FBQ3Z6QjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsY0FBYztBQUNqQyxxQkFBcUIsU0FBUztBQUM5QiwyQ0FBMkMsMkJBQTJCLDJCQUEyQix1REFBdUQ7QUFDeEo7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0IsK0RBQStELHNFQUFzRTtBQUNySTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixTQUFTO0FBQzVCLG1CQUFtQixTQUFTO0FBQzVCLHFCQUFxQixPQUFPO0FBQzVCLGdFQUFnRSxrREFBa0QsZ0ZBQWdGLHVJQUF1STtBQUN6VTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLEdBQUc7QUFDeEIsb0RBQW9ELGlCQUFpQixrQ0FBa0MsdUJBQXVCLG1EQUFtRCwwRUFBMEUsVUFBVTtBQUNyUTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCLHdEQUF3RCx5QkFBeUIsYUFBYSxzQ0FBc0Msa0NBQWtDLHNCQUFzQixvQ0FBb0MseUJBQXlCLG9CQUFvQiwyRkFBMkYsNERBQTREO0FBQ3BhO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixRQUFRO0FBQzdCLDJEQUEyRCxvRUFBb0Usc0JBQXNCLG1EQUFtRCx1Q0FBdUMsZUFBZTtBQUM5UDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsY0FBYztBQUNuQywrQ0FBK0MsMENBQTBDO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixVQUFVO0FBQy9CLHdDQUF3QyxpREFBaUQ7QUFDekY7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUIsMkNBQTJDLG1CQUFtQixjQUFjLGtFQUFrRTtBQUM5STtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsVUFBVTtBQUMvQixpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUIsK0NBQStDLHdCQUF3QiwrQkFBK0IsNERBQTREO0FBQ2xLO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLDBEQUEwRCwrQkFBK0I7QUFDekY7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLFNBQVM7QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IsNkNBQTZDLFdBQVcsdUJBQXVCLCtGQUErRixvQkFBb0IsZUFBZTtBQUNqTjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsYUFBYTtBQUNoQyxxQkFBcUIsYUFBYTtBQUNsQyxrREFBa0QsK0RBQStELHdEQUF3RCxlQUFlO0FBQ3hMO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixTQUFTO0FBQzVCLHFCQUFxQixRQUFRO0FBQzdCLG1EQUFtRCxvRUFBb0UsaUZBQWlGO0FBQ3hNO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCLHdDQUF3QyxzRUFBc0Usa0NBQWtDLGVBQWU7QUFDL0o7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0Isd0NBQXdDLDREQUE0RDtBQUNwRztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsU0FBUztBQUM1QixxQkFBcUIsUUFBUTtBQUM3Qix1REFBdUQsd0VBQXdFLG1GQUFtRjtBQUNsTjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsUUFBUTtBQUM3QixrREFBa0Qsa0JBQWtCLG1IQUFtSCxtSEFBbUgsc05BQXNOLFVBQVUsc05BQXNOLFdBQVcsVUFBVTtBQUNydkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixvQkFBb0I7QUFDdkMscUJBQXFCLFFBQVE7QUFDN0IseURBQXlELHlIQUF5SCxzQkFBc0IsbUVBQW1FLFdBQVcsd0JBQXdCLGVBQWUsd0JBQXdCLHFDQUFxQztBQUMxWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsT0FBTztBQUMxQixvQkFBb0IsU0FBUztBQUM3QixxQkFBcUIsT0FBTztBQUM1QixpRUFBaUUsMk5BQTJOLDhCQUE4Qix1Q0FBdUMsaUNBQWlDLHNDQUFzQyw2Q0FBNkMscUJBQXFCLHVDQUF1QyxlQUFlO0FBQ2hpQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixPQUFPO0FBQzFCLG9CQUFvQixTQUFTO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCLHNFQUFzRSw4T0FBOE8sK0JBQStCLG1DQUFtQyxxQkFBcUIsZ0NBQWdDLGdEQUFnRCxvQ0FBb0Msc0NBQXNDLHlEQUF5RCxlQUFlO0FBQzdtQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsT0FBTztBQUM1Qiw0Q0FBNEMsa0NBQWtDLDZCQUE2QixzQkFBc0IsNEJBQTRCLGNBQWM7QUFDM0s7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVEsVUFBVTtBQUNyQyxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsUUFBUTtBQUM3QiwrREFBK0Qsa0JBQWtCLGtCQUFrQixFQUFFLGlDQUFpQyxzQkFBc0IscUJBQXFCLHdGQUF3Rix5QkFBeUIsc0JBQXNCLFVBQVUsc0NBQXNDLEtBQUssbUNBQW1DLGVBQWU7QUFDL1o7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVEsVUFBVTtBQUNyQyxxQkFBcUIsUUFBUTtBQUM3QiwrQ0FBK0MscURBQXFEO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRLFVBQVU7QUFDckMscUJBQXFCLFFBQVE7QUFDN0IsaURBQWlELHVEQUF1RDtBQUN4RztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsVUFBVTtBQUMvQix5REFBeUQscUNBQXFDLHFHQUFxRyxzRUFBc0U7QUFDelE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0IsNkNBQTZDLHlDQUF5Qyx1SEFBdUgsNkZBQTZGLHVEQUF1RCx5Q0FBeUMsVUFBVSxzQkFBc0Isc0JBQXNCLDBCQUEwQixXQUFXLDJDQUEyQyxlQUFlLEdBQUc7QUFDbGlCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixTQUFTO0FBQzVCLHFCQUFxQixVQUFVO0FBQy9CLHVEQUF1RCxxQ0FBcUMscUJBQXFCLG1CQUFtQiw2QkFBNkIsc0NBQXNDLG1GQUFtRix3Q0FBd0MscURBQXFELFFBQVEscUJBQXFCO0FBQ3BaO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCLHFCQUFxQixVQUFVO0FBQy9CLDZDQUE2QywwQ0FBMEMsZ0ZBQWdGLGdCQUFnQix3Q0FBd0MsaURBQWlELFFBQVEsaUJBQWlCO0FBQ3pTO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFVBQVU7QUFDL0IscURBQXFELHdEQUF3RCxtQkFBbUIsNERBQTRELGdEQUFnRCxnQkFBZ0I7QUFDNVA7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFVBQVU7QUFDL0IsZ0RBQWdELHdCQUF3Qix3QkFBd0Isa0VBQWtFLGtEQUFrRCx5RUFBeUUscUNBQXFDO0FBQ2xVO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixVQUFVO0FBQy9CLCtDQUErQyx3QkFBd0IsNEVBQTRFO0FBQ25KO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0IscUNBQXFDLGtCQUFrQjtBQUN2RDtBQUNBO0FBQ0EsbUJBQW1CLG9CQUFvQix5QkFBeUIsZ0NBQWdDLHdDQUF3QyxnREFBZ0Qsd0RBQXdELGdFQUFnRSx3RUFBd0UsaUZBQWlGLCtFQUErRTtBQUN4aEI7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFVBQVU7QUFDL0Isb0RBQW9ELDBCQUEwQixtQkFBbUIsMkZBQTJGLGVBQWUsOEJBQThCLDhHQUE4Ryx1QkFBdUIsaUJBQWlCLDZIQUE2SCw0REFBNEQsNEJBQTRCLGdCQUFnQjtBQUNwbUI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0IsOENBQThDLGdEQUFnRCxnQ0FBZ0MsNkJBQTZCLHNDQUFzQyw0QkFBNEIsa0NBQWtDLCtDQUErQyx3REFBd0Qsd0VBQXdFO0FBQzlhO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCLHFCQUFxQixVQUFVO0FBQy9CLDBDQUEwQyxnQ0FBZ0MseUVBQXlFLGNBQWMsaUJBQWlCLGVBQWUsc0JBQXNCLDZCQUE2QixzQ0FBc0MsbURBQW1ELHlDQUF5QywyQkFBMkIsc0JBQXNCLGtCQUFrQixnRkFBZ0YsdUlBQXVJLDhEQUE4RCxLQUFLLGtGQUFrRixrQkFBa0IsaUNBQWlDLDRDQUE0QyxxQ0FBcUMsOERBQThELHNCQUFzQix1Q0FBdUMsaUJBQWlCLEdBQUc7QUFDeGpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQyxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsT0FBTztBQUMxQjtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFVBQVU7QUFDL0Isb0hBQW9ILHFPQUFxTyxtQkFBbUIsNERBQTRELGVBQWUsOEJBQThCLGNBQWMsZ0ZBQWdGLGFBQWEsbURBQW1ELGtCQUFrQixrRUFBa0UscUJBQXFCLDRCQUE0QixnREFBZ0QscUhBQXFILHdFQUF3RSxtQkFBbUIsV0FBVywyQkFBMkIsMEJBQTBCLGdCQUFnQixzQkFBc0IsaUJBQWlCLCtDQUErQyx5QkFBeUIsbUNBQW1DLGdCQUFnQjtBQUMxdUM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0Isc0RBQXNELGlDQUFpQyx5REFBeUQsS0FBSztBQUNySjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsVUFBVTtBQUMvQiwrREFBK0QsNkJBQTZCLFdBQVcseUNBQXlDLHFCQUFxQixzQkFBc0IsY0FBYyxzQkFBc0IsdUJBQXVCLGNBQWMscURBQXFELDBCQUEwQiwyQkFBMkIsS0FBSywwQkFBMEIsMkJBQTJCLDhCQUE4QixpQkFBaUI7QUFDdmQ7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0IsMENBQTBDLG9DQUFvQyx1REFBdUQsK0JBQStCLGlCQUFpQiw4Q0FBOEMscUNBQXFDLEdBQUcsR0FBRyxHQUFHO0FBQ2pSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0IsZ0RBQWdELGdEQUFnRCw2QkFBNkIsa0JBQWtCLG1EQUFtRCxrRUFBa0Usb0dBQW9HO0FBQ3hXO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLE9BQU87QUFDMUI7QUFDQSxxQkFBcUIsVUFBVTtBQUMvQixpRUFBaUUsd0RBQXdELG1CQUFtQiwrS0FBK0ssOEJBQThCLHFDQUFxQyxvQkFBb0IsMENBQTBDLDJDQUEyQyxnQkFBZ0I7QUFDdmY7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVM7QUFDNUIscUJBQXFCLFVBQVU7QUFDL0IsMkNBQTJDLGdDQUFnQyxpRUFBaUUsb0JBQW9CO0FBQ2hLLHNCQUFzQixvQkFBb0IsVUFBVSxTQUFTLEtBQUssbUJBQW1CLG9EQUFvRCw4Q0FBOEM7QUFDdkw7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0Isd0RBQXdELDZCQUE2Qix3REFBd0Qsc0JBQXNCLHVCQUF1QixnQ0FBZ0M7QUFDMU47QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLE9BQU87QUFDMUI7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsVUFBVTtBQUMvQiwrR0FBK0csc01BQXNNLDJEQUEyRCw4REFBOEQscUNBQXFDLCtDQUErQyw0R0FBNEcsNkNBQTZDLHFCQUFxQix5QkFBeUIsK0JBQStCLDZDQUE2QztBQUNyeEI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFVBQVU7QUFDL0IsNENBQTRDLDBCQUEwQixrQ0FBa0Msd0JBQXdCLGdFQUFnRSxjQUFjO0FBQzlNO0FBQ0Esd0ZBQXdGLHNDQUFzQywyQ0FBMkMsdUJBQXVCO0FBQ2hNO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixRQUFRO0FBQzdCLGlHQUFpRyx5QkFBeUI7QUFDMUg7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IsMENBQTBDLHdCQUF3Qix1QkFBdUIsZ0JBQWdCLDJCQUEyQixnQkFBZ0IsMkJBQTJCLCtDQUErQztBQUM5TjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEMsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsVUFBVTtBQUMvQix1RkFBdUYseUNBQXlDLHlDQUF5QyxzQ0FBc0Msc0NBQXNDLFlBQVksc0RBQXNELDRCQUE0QixvREFBb0QsK0NBQStDLGlDQUFpQyxvQ0FBb0MsZ0RBQWdELDRCQUE0QiwyQ0FBMkMsZ0dBQWdHLFNBQVMseUJBQXlCLGdCQUFnQixtQkFBbUIsbUJBQW1CLG9CQUFvQixtQkFBbUIsK0ZBQStGLDREQUE0RCxtREFBbUQsc0NBQXNDLDZDQUE2QyxrRUFBa0Usd0NBQXdDLG9HQUFvRyxxREFBcUQsS0FBSyw4Q0FBOEMsb0NBQW9DLDZEQUE2RDtBQUN6Z0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixHQUFHO0FBQ3hCLHlFQUF5RSwwRkFBMEYsaUJBQWlCLGlCQUFpQjtBQUNyTTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0EscUJBQXFCLEdBQUc7QUFDeEIsbUZBQW1GLDJDQUEyQztBQUM5SCw2QkFBNkIsaUVBQWlFLDJCQUEyQixpQkFBaUI7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsR0FBRztBQUN4QiwyQ0FBMkMsNkNBQTZDO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFNBQVM7QUFDOUIsZ0ZBQWdGLHlGQUF5Riw0REFBNEQsY0FBYztBQUNuUCw2QkFBNkIsOEJBQThCLHVCQUF1QixzRkFBc0YsdUJBQXVCLHVCQUF1QjtBQUN0Tix5QkFBeUIsZ0RBQWdELGVBQWUsb0lBQW9JLHlCQUF5QixhQUFhLFVBQVUsYUFBYSxPQUFPO0FBQ2hTLFNBQVMsZ0RBQWdELDJHQUEyRyw2QkFBNkIsR0FBRyxhQUFhLFFBQVEsdUZBQXVGLGFBQWEsUUFBUSx1QkFBdUIsdUJBQXVCLGVBQWU7QUFDbFk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsU0FBUztBQUM5QixvRkFBb0YsWUFBWSw4RkFBOEYsY0FBYyxxQkFBcUIsbUJBQW1CLHNIQUFzSCxjQUFjLFlBQVk7QUFDcFk7QUFDQSwwQkFBMEIsNEVBQTRFO0FBQ3RHO0FBQ0E7QUFDQSx3QkFBd0IsbUNBQW1DLHVEQUF1RCw4QkFBOEIsd0NBQXdDLGNBQWM7QUFDdE0sOEJBQThCLFlBQVksdUJBQXVCLGdDQUFnQztBQUNqRyx3QkFBd0IsMEZBQTBGLHdCQUF3QixjQUFjLGlDQUFpQywrREFBK0QsY0FBYztBQUN0UTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixTQUFTO0FBQzlCLGtGQUFrRixzSkFBc0oscUNBQXFDLGNBQWMsb0JBQW9CLGVBQWUsd0JBQXdCLDZEQUE2RCxlQUFlO0FBQ2xhLDhCQUE4Qiw4QkFBOEIsdUJBQXVCLGdCQUFnQix3QkFBd0Isd0JBQXdCLHVCQUF1Qix5QkFBeUIsb0JBQW9CLDZDQUE2QyxlQUFlLGtJQUFrSTtBQUNyWixnSEFBZ0gsYUFBYSxPQUFPLHlDQUF5QyxzQkFBc0IseURBQXlEO0FBQzVQLHlMQUF5TCxlQUFlLHdCQUF3Qix1QkFBdUIsZUFBZTtBQUN0UTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsVUFBVTtBQUMvQixtQ0FBbUMsOERBQThEO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCLHVDQUF1QywrQ0FBK0M7QUFDdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1Qix5Q0FBeUMsbURBQW1EO0FBQzVGO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixHQUFHO0FBQ3hCLG9EQUFvRCwyQkFBMkI7QUFDL0U7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0Isb0NBQW9DLDRHQUE0RyxnQkFBZ0IsMkNBQTJDLHFDQUFxQyxtQkFBbUIsZUFBZTtBQUNsUjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsR0FBRztBQUN4QixvQ0FBb0MsaUVBQWlFLDJCQUEyQjtBQUNoSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsVUFBVTtBQUMvQixrQ0FBa0MscUNBQXFDLDZDQUE2QyxrRUFBa0U7QUFDdEw7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLEdBQUc7QUFDeEIsd0NBQXdDLHNCQUFzQiw0RUFBNEU7QUFDMUk7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUIseUNBQXlDLDZDQUE2QyxnQkFBZ0IseUNBQXlDLHNEQUFzRCxlQUFlO0FBQ3BOO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixHQUFHO0FBQ3hCLDBDQUEwQywrQkFBK0IsNENBQTRDO0FBQ3JIO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCLHFDQUFxQyw4RUFBOEUsSUFBSSxnQ0FBZ0MsbUJBQW1CLFVBQVUsNENBQTRDLGFBQWEsVUFBVSwyQkFBMkIsS0FBSywrQkFBK0IsZUFBZTtBQUNyVTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1Qix1RUFBdUUsaUJBQWlCLFVBQVUsc0JBQXNCLDZEQUE2RCxpREFBaUQsSUFBSTtBQUMxTztBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixtQkFBbUIsT0FBTztBQUMxQix1RUFBdUUsY0FBYyxjQUFjLHFDQUFxQyw2QkFBNkIsZ0JBQWdCO0FBQ3JMO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixHQUFHO0FBQ3BCLG1CQUFtQixRQUFRO0FBQzNCLCtCQUErQjtBQUMvQixnT0FBZ08sOEJBQThCLGtIQUFrSCxlQUFlLG1CQUFtQiwyQ0FBMkMsaUNBQWlDLHlDQUF5QyxpQ0FBaUMsMkNBQTJDLGlCQUFpQjtBQUNwbUI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQSxrREFBa0Qsc0NBQXNDLHNCQUFzQiwwQ0FBMEMsa0JBQWtCLHVCQUF1QixNQUFNLDBCQUEwQixNQUFNLHlDQUF5QyxNQUFNLGdEQUFnRCxRQUFRLE9BQU8sc0JBQXNCO0FBQzNXO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCLDJDQUEyQyxzQ0FBc0MsZ0RBQWdEO0FBQ2pJO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixjQUFjO0FBQ2pDLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixTQUFTO0FBQzlCLGlEQUFpRCwyQkFBMkIsNkNBQTZDLHNCQUFzQiwyQkFBMkIsZ0RBQWdELE9BQU8sb0JBQW9CLDRCQUE0QixlQUFlLG9DQUFvQywrRkFBK0Y7QUFDbmE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLE9BQU87QUFDNUIsMENBQTBDLDZEQUE2RDtBQUN2RywyRUFBMkUseUJBQXlCLDBCQUEwQixlQUFlO0FBQzdJO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCLDRDQUE0Qyx5R0FBeUc7QUFDcko7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFNBQVM7QUFDNUIscUJBQXFCLFFBQVE7QUFDN0Isc0RBQXNELDRCQUE0QixZQUFZLG9EQUFvRCxtREFBbUQscURBQXFELGdMQUFnTCw4QkFBOEIsc0RBQXNELDBDQUEwQyw4QkFBOEIsNENBQTRDO0FBQ2xuQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1QixxQkFBcUIsUUFBUTtBQUM3QixzREFBc0QsMEJBQTBCLFlBQVksZUFBZSx1QkFBdUIseURBQXlELHdDQUF3QyxzQ0FBc0Msd0NBQXdDO0FBQ2pUO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCLHlDQUF5QyxpR0FBaUc7QUFDMUk7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFNBQVM7QUFDOUIsMENBQTBDLCtEQUErRCw0Q0FBNEMsNEdBQTRHO0FBQ2pRO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0EsdURBQXVELHNCQUFzQixjQUFjLCtEQUErRCxxR0FBcUcsZ0NBQWdDLGNBQWM7QUFDN1M7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFNBQVM7QUFDOUIsd0NBQXdDLG1CQUFtQixjQUFjLCtEQUErRCxrRkFBa0YsYUFBYSxvR0FBb0c7QUFDM1U7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUIscUNBQXFDLCtEQUErRCx5R0FBeUc7QUFDN007QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFNBQVM7QUFDOUI7QUFDQSxxQ0FBcUMsc0RBQXNELG9FQUFvRSxjQUFjLGlCQUFpQixhQUFhLHdCQUF3Qiw4QkFBOEI7QUFDalE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFNBQVM7QUFDOUIsbUNBQW1DLHdDQUF3QztBQUMzRTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QiwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUIsdUNBQXVDLDhGQUE4RixzQkFBc0I7QUFDM0o7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQSw4Q0FBOEMsd0NBQXdDO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFVBQVU7QUFDL0IsMERBQTBELHdCQUF3QixpQkFBaUIsY0FBYyxnRkFBZ0Y7QUFDak07QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsVUFBVTtBQUMvQix3Q0FBd0Msc0NBQXNDLGtDQUFrQyxlQUFlLFlBQVksRUFBRSx1QkFBdUIsZUFBZTtBQUNuTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLE9BQU87QUFDNUIsMkNBQTJDLDZJQUE2SSxvUEFBb1A7QUFDNWEseUJBQXlCLGFBQWE7QUFDdEMsOEJBQThCLGtCQUFrQjtBQUNoRCw0REFBNEQ7QUFDNUQsb0JBQW9CLFVBQVUscUJBQXFCLDZEQUE2RCxnRUFBZ0U7QUFDaEwsZ0JBQWdCLFVBQVUsaUJBQWlCLGtFQUFrRSxnRUFBZ0U7QUFDN0ssZ0JBQWdCLFVBQVUsZUFBZTtBQUN6Qyw2QkFBNkIsOERBQThEO0FBQzNGLGtCQUFrQixtQkFBbUI7QUFDckMsa0JBQWtCLG1CQUFtQixhQUFhO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1Qix5Q0FBeUMsY0FBYyxpQkFBaUIsK0JBQStCLG1CQUFtQixlQUFlO0FBQ3pJO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCLDBDQUEwQyx5Q0FBeUM7QUFDbkY7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0IsbURBQW1ELHlEQUF5RCxrQkFBa0Isc0ZBQXNGLHNCQUFzQixnQ0FBZ0MsU0FBUyw2QkFBNkIscUJBQXFCLDhCQUE4QixrQ0FBa0MscUNBQXFDO0FBQzFhO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixHQUFHO0FBQ3hCLHdDQUF3QyxrRUFBa0U7QUFDMUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixPQUFPO0FBQzVCLDJDQUEyQyxnR0FBZ0csZ0JBQWdCLDBCQUEwQixrRUFBa0UsY0FBYztBQUNyUTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsVUFBVTtBQUMvQiw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLGVBQWU7QUFDcEMsNkRBQTZELG9DQUFvQztBQUNqRztBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsVUFBVTtBQUMzQixpQkFBaUIsVUFBVTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QixtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsVUFBVTtBQUMvQiwrREFBK0Qsd0JBQXdCLHlHQUF5RztBQUNoTTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0IsbUNBQW1DLHlCQUF5QixrQkFBa0IsNERBQTRELGlCQUFpQixnQkFBZ0IsdUJBQXVCLHNCQUFzQixLQUFLLFNBQVMsMENBQTBDO0FBQ2hSO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCLDRDQUE0QyxvREFBb0Qsa0NBQWtDLG9CQUFvQix1REFBdUQseUJBQXlCLG9CQUFvQixrQkFBa0IsY0FBYztBQUMxUjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1QiwyREFBMkQsY0FBYyxxQ0FBcUMsaUJBQWlCLGlFQUFpRSx1RUFBdUUsRUFBRSxlQUFlLEVBQUU7QUFDMVI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEdBQUc7QUFDcEIsbUJBQW1CLGVBQWU7QUFDbEMsK0JBQStCLDZDQUE2QyxjQUFjLG9CQUFvQixvREFBb0Q7QUFDbEs7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0IsbUNBQW1DLGVBQWUsSUFBSSxnQ0FBZ0MsVUFBVSxJQUFJLGdCQUFnQixXQUFXLFVBQVU7QUFDekk7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLE9BQU87QUFDNUIsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUIsdURBQXVELG1DQUFtQyx1QkFBdUIsbURBQW1ELHNCQUFzQixFQUFFLHVCQUF1QjtBQUNuTjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QiwwQ0FBMEMsbUNBQW1DLHdCQUF3QixvRUFBb0Usa0RBQWtELG1DQUFtQyxxQ0FBcUMsZUFBZTtBQUNsVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0Isb0JBQW9CLFFBQVE7QUFDNUIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsNERBQTRELFFBQVEsS0FBSyxtQ0FBbUMsc0NBQXNDLG9CQUFvQixVQUFVLDZEQUE2RCxvQkFBb0IsdURBQXVELGVBQWU7QUFDblg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvRUFBb0Usc0JBQXNCLHVCQUF1QixVQUFVLDJCQUEyQixlQUFlO0FBQ3hNO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLE1BQU07QUFDekIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsNEJBQTRCLFlBQVksVUFBVSx5REFBeUQsZUFBZSxnQ0FBZ0MsK0VBQStFO0FBQ3RRO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELHVHQUF1RyxFQUFFO0FBQ25LO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCLGlCQUFpQixVQUFVO0FBQzNCLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixRQUFRLElBQUksUUFBUSxNQUFNLFFBQVE7QUFDN0Qsa0JBQWtCLFFBQVE7QUFDMUIsMERBQTBELDBCQUEwQixnQ0FBZ0Msb0JBQW9CLCtIQUErSCxFQUFFO0FBQ3pRO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixpQkFBaUIsVUFBVTtBQUMzQixpQkFBaUIsVUFBVTtBQUMzQixtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0EsMEJBQTBCLGdCQUFnQixJQUFJLGdCQUFnQjtBQUM5RDtBQUNBLHNDQUFzQyxnQkFBZ0I7QUFDdEQsa0JBQWtCLGdCQUFnQjtBQUNsQyw0REFBNEQsNEJBQTRCLGtDQUFrQyxzQkFBc0IsNEhBQTRILEVBQUU7QUFDOVE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsaUJBQWlCLFFBQVE7QUFDekIsa0JBQWtCLFFBQVE7QUFDMUIsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0Msc0NBQXNDLFlBQVksVUFBVSxzQ0FBc0Msd0NBQXdDO0FBQ2hMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixRQUFRO0FBQzNCLG9CQUFvQixRQUFRO0FBQzVCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLHNDQUFzQyxZQUFZLFVBQVUsc0NBQXNDLFdBQVcsbUNBQW1DO0FBQzdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1DQUFtQztBQUNsRCxlQUFlLG9DQUFvQztBQUNuRCxlQUFlO0FBQ2Y7QUFDQTtBQUNBLGlEQUFpRCxtQkFBbUI7QUFDcEU7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLG9DQUFvQztBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsbUZBQW1GO0FBQ3ZJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLG9DQUFvQztBQUNuRCxlQUFlLG9DQUFvQztBQUNuRCxlQUFlO0FBQ2Y7QUFDQTtBQUNBLDRDQUE0QyxtQkFBbUI7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLG1DQUFtQztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsOEVBQThFO0FBQzdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELHNDQUFzQyxZQUFZLFVBQVUsc0VBQXNFLFFBQVEsWUFBWSx3Q0FBd0M7QUFDOU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLG9DQUFvQztBQUNuRCxlQUFlLG9DQUFvQztBQUNuRCxlQUFlO0FBQ2Y7QUFDQTtBQUNBLDRDQUE0Qyw0QkFBNEI7QUFDeEU7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGlDQUFpQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsc0NBQXNDLFlBQVksVUFBVSxpREFBaUQsWUFBWSxpQ0FBaUMsNERBQTREO0FBQy9RO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtQ0FBbUM7QUFDbEQsZUFBZSxvQ0FBb0M7QUFDbkQsZUFBZTtBQUNmO0FBQ0E7QUFDQSxnREFBZ0QsNkJBQTZCO0FBQzdFO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxrQ0FBa0M7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkRBQTZELHNDQUFzQyxZQUFZLFVBQVUsbUJBQW1CLDBCQUEwQiwyQkFBMkIsdUVBQXVFLGlFQUFpRTtBQUN6VTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxzQ0FBc0MsdUNBQXVDO0FBQ2hIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHNDQUFzQyw4Q0FBOEM7QUFDM0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHNDQUFzQyxZQUFZLFVBQVUsMkNBQTJDLGlDQUFpQztBQUN0TCx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLHFDQUFxQyx5REFBeUQsc0JBQXNCLHNCQUFzQix5QkFBeUIsZUFBZTtBQUNsTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixHQUFHO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLCtDQUErQztBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELHNDQUFzQyxZQUFZLFVBQVUsaURBQWlELFlBQVksaUNBQWlDLHVDQUF1QztBQUNwUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxzQ0FBc0Msd0NBQXdDO0FBQ2pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELGdEQUFnRCx5RUFBeUUsRUFBRTtBQUNqTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixVQUFVO0FBQzNCLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixRQUFRLE1BQU0sUUFBUSxJQUFJLFFBQVE7QUFDL0Qsa0JBQWtCLFFBQVE7QUFDMUIsc0RBQXNELHNFQUFzRSw0QkFBNEIsb0JBQW9CLEtBQUssY0FBYyxpR0FBaUcsRUFBRTtBQUNsUztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsVUFBVTtBQUMzQixpQkFBaUIsVUFBVTtBQUMzQixtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0EsMEJBQTBCLGdCQUFnQixJQUFJLGdCQUFnQjtBQUM5RCx5QkFBeUIsZ0JBQWdCLElBQUksZ0JBQWdCO0FBQzdEO0FBQ0E7QUFDQSxrQkFBa0IsZ0JBQWdCO0FBQ2xDLHdEQUF3RCx3RUFBd0UsK0RBQStELGVBQWUsY0FBYyw4RkFBOEYsRUFBRTtBQUM1VDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixpQkFBaUIsUUFBUTtBQUN6QixtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qyx3REFBd0Q7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLEdBQUc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msc0NBQXNDLHlDQUF5QztBQUMvRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsc0NBQXNDLFlBQVksVUFBVSxpQkFBaUIsMEJBQTBCLDJCQUEyQixtRUFBbUUscUdBQXFHO0FBQ2pXO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLEdBQUc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLGtFQUFrRTtBQUNuRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLE1BQU07QUFDekIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLG1GQUFtRjtBQUM3SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQSwwQkFBMEIsUUFBUSxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksUUFBUTtBQUN0RTtBQUNBLGlDQUFpQyxRQUFRLElBQUksUUFBUTtBQUNyRDtBQUNBLG9CQUFvQixRQUFRO0FBQzVCLHFEQUFxRCwyR0FBMkc7QUFDaEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0EsMEJBQTBCLGdCQUFnQixJQUFJLGdCQUFnQixJQUFJLGdCQUFnQjtBQUNsRjtBQUNBLG1DQUFtQyxnQkFBZ0I7QUFDbkQ7QUFDQSxvQkFBb0IsZ0JBQWdCLElBQUksZ0JBQWdCO0FBQ3hELHlEQUF5RCx3R0FBd0c7QUFDaks7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLHNCQUFzQjtBQUN6QyxxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxtRUFBbUUsa0RBQWtELDJDQUEyQywwQkFBMEIsZUFBZSxFQUFFO0FBQ2xRO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixpQkFBaUIsVUFBVTtBQUMzQixtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxjQUFjLDJCQUEyQixlQUFlLDRDQUE0QyxtQ0FBbUMsc0JBQXNCLHVCQUF1QixpQ0FBaUMsbUJBQW1CLHNCQUFzQiwwQkFBMEIsZUFBZTtBQUNqVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvREFBb0Q7QUFDdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1QiwyQ0FBMkMsc0NBQXNDLFlBQVksVUFBVSxnRUFBZ0UsUUFBUSxZQUFZLEtBQUsscUNBQXFDLDJDQUEyQyxtQ0FBbUM7QUFDblQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLHFDQUFxQztBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFFBQVEsSUFBSSxRQUFRO0FBQ2hEO0FBQ0Esc0NBQXNDLFFBQVEsZ0JBQWdCLGFBQWE7QUFDM0U7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUM7QUFDQSx3REFBd0QsK0RBQStEO0FBQ3ZIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0Msc0NBQXNDLFdBQVcsdUNBQXVDLHlDQUF5QyxlQUFlLFVBQVU7QUFDek07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsMENBQTBDO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsUUFBUSxJQUFJLFFBQVE7QUFDaEQ7QUFDQSwwQ0FBMEMsUUFBUSxnQkFBZ0IsYUFBYTtBQUMvRTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsUUFBUTtBQUNsRDtBQUNBLDREQUE0RCxvRUFBb0U7QUFDaEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxzQ0FBc0MsV0FBVyw4Q0FBOEMsMkJBQTJCLGVBQWUsVUFBVTtBQUN0TTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLHFEQUFxRDtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELDZFQUE2RTtBQUM5SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxzQ0FBc0MsNENBQTRDO0FBQ2xIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixRQUFRO0FBQzNCLG9CQUFvQixRQUFRO0FBQzVCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDJCQUEyQixVQUFVLHNDQUFzQyxtQ0FBbUM7QUFDdEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFFBQVE7QUFDM0Isb0JBQW9CLFFBQVE7QUFDNUIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsc0NBQXNDLFlBQVksVUFBVSxzQ0FBc0MsV0FBVyx3Q0FBd0M7QUFDbE07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUNBQW1DO0FBQ2xELGVBQWUsb0NBQW9DO0FBQ25ELGVBQWU7QUFDZjtBQUNBO0FBQ0EsaURBQWlELG1CQUFtQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsb0NBQW9DO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxvRkFBb0Y7QUFDeEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0NBQW9DO0FBQ25ELGVBQWUsb0NBQW9DO0FBQ25ELGVBQWU7QUFDZjtBQUNBO0FBQ0EsNENBQTRDLG1CQUFtQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsbUNBQW1DO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyx5RUFBeUU7QUFDeEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLCtEQUErRCxFQUFFO0FBQ2hIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFVBQVU7QUFDM0IsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLFFBQVEsTUFBTSxRQUFRLElBQUksUUFBUTtBQUN4RCxrQkFBa0IsUUFBUSxJQUFJLFFBQVE7QUFDdEMsK0NBQStDLDBCQUEwQixnQ0FBZ0Msb0JBQW9CLHVGQUF1RixFQUFFO0FBQ3ROO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixVQUFVO0FBQzNCLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQSwwQkFBMEIsZ0JBQWdCLElBQUksZ0JBQWdCO0FBQzlELHlCQUF5QixnQkFBZ0IsSUFBSSxnQkFBZ0I7QUFDN0Q7QUFDQTtBQUNBLGtCQUFrQixnQkFBZ0IsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0I7QUFDMUUsaURBQWlELDRCQUE0QiwrREFBK0Qsb0ZBQW9GLEVBQUU7QUFDbE87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QiwrQ0FBK0M7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsUUFBUSxJQUFJLFFBQVEsSUFBSSxRQUFRO0FBQ3ZELG9CQUFvQixRQUFRLElBQUksUUFBUTtBQUN4QywyQ0FBMkMsdUVBQXVFO0FBQ2xIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQSw0QkFBNEIsZ0JBQWdCLElBQUksZ0JBQWdCLElBQUksZ0JBQWdCO0FBQ3BGO0FBQ0E7QUFDQSxvQkFBb0IsZ0JBQWdCLElBQUksZ0JBQWdCO0FBQ3hELCtDQUErQywrREFBK0Qsb0VBQW9FO0FBQ2xMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywyQkFBMkIsVUFBVSxhQUFhLHdDQUF3Qyw2QkFBNkIsc0NBQXNDLGNBQWMsRUFBRSx3Q0FBd0MsNENBQTRDLEdBQUc7QUFDclM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0EscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsMkJBQTJCLFVBQVUsd0JBQXdCLG1CQUFtQixlQUFlLHVDQUF1Qyx3Q0FBd0MsR0FBRztBQUMvTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixNQUFNO0FBQ3pCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsaUVBQWlFLEVBQUU7QUFDMUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyx1REFBdUQsRUFBRTtBQUNwRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixVQUFVO0FBQzNCLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRLE1BQU0sUUFBUSxJQUFJLFFBQVE7QUFDdEQsa0JBQWtCLFFBQVE7QUFDMUIsNkNBQTZDLDBCQUEwQixnQ0FBZ0Msb0JBQW9CLCtFQUErRSxFQUFFO0FBQzVNO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixVQUFVO0FBQzNCLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQSwwQkFBMEIsZ0JBQWdCLElBQUksZ0JBQWdCO0FBQzlELHlCQUF5QixnQkFBZ0IsSUFBSSxnQkFBZ0I7QUFDN0Q7QUFDQTtBQUNBLGtCQUFrQixnQkFBZ0IsSUFBSSxnQkFBZ0I7QUFDdEQsK0NBQStDLDRCQUE0QiwrREFBK0QsNEVBQTRFLEVBQUU7QUFDeE47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLDRDQUE0Qyx3REFBd0Q7QUFDcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU8sUUFBUSxRQUFRLElBQUksUUFBUTtBQUN0RCxnREFBZ0Qsb0RBQW9EO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsVUFBVTtBQUM3QjtBQUNBLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsaURBQWlELHNFQUFzRSx3RUFBd0UsbUNBQW1DLEVBQUU7QUFDcE87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixHQUFHO0FBQ3BCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsOEJBQThCO0FBQzNDLGFBQWEsOEJBQThCO0FBQzNDLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IseUJBQXlCLHNCQUFzQixlQUFlO0FBQzdGO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixHQUFHO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsbUJBQW1CLGNBQWM7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixHQUFHO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSw0Q0FBNEMsMkJBQTJCO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekMscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBLDBCQUEwQixRQUFRLE9BQU8sVUFBVTtBQUNuRDtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsZ0hBQWdILDhCQUE4Qix3RkFBd0YsK0JBQStCLDZDQUE2Qyx3QkFBd0IsK0NBQStDLEVBQUUsb0VBQW9FLDBCQUEwQix1QkFBdUIsY0FBYyxHQUFHLEVBQUU7QUFDcmpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNkJBQTZCO0FBQzFDLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixpQ0FBaUMsb0JBQW9CO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsdURBQXVEO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsa0NBQWtDLGdDQUFnQyx1Q0FBdUMsdUdBQXVHLE9BQU8sd0JBQXdCO0FBQy9PO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxhQUFhO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsdUJBQXVCLG9DQUFvQywrQkFBK0Isa0JBQWtCLDJCQUEyQixXQUFXLDRCQUE0QixLQUFLLGNBQWMsbUJBQW1CLDJCQUEyQiwyQkFBMkIsZUFBZTtBQUNqVTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDJCQUEyQixpQ0FBaUMsa0JBQWtCLDRCQUE0QiwrQkFBK0IsMEJBQTBCLDBCQUEwQiwyQ0FBMkMsRUFBRSxrREFBa0QsMkJBQTJCO0FBQzVWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEdBQUc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsNERBQTREO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsbUVBQW1FLG9DQUFvQyxlQUFlLEtBQUssZ0NBQWdDLEVBQUU7QUFDN0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsY0FBYztBQUMvQixpQkFBaUIsVUFBVTtBQUMzQixrQkFBa0IsUUFBUTtBQUMxQixtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsOENBQThDO0FBQzNELGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsbUNBQW1DO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxrREFBa0Qsc0RBQXNELHFCQUFxQixrREFBa0Q7QUFDbk87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkNBQTZDO0FBQzVELGVBQWU7QUFDZjtBQUNBO0FBQ0EseUNBQXlDLG1CQUFtQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMkJBQTJCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxvREFBb0Qsa0RBQWtEO0FBQ3ZKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUE4QztBQUM3RCxlQUFlLCtDQUErQztBQUM5RCxlQUFlO0FBQ2Y7QUFDQTtBQUNBLHVDQUF1QyxvQkFBb0I7QUFDM0Q7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDBCQUEwQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxnREFBZ0Q7QUFDakc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELHVEQUF1RDtBQUM1RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsMkNBQTJDLG9EQUFvRDtBQUMzSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixjQUFjO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQSxZQUFZO0FBQ1o7QUFDQSxpREFBaUQsZ0RBQWdELGlEQUFpRDtBQUNsSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLGNBQWM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLHNEQUFzRCwwREFBMEQsaURBQWlEO0FBQ2pLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQixtRUFBbUUsb0NBQW9DLHlCQUF5QixLQUFLLHNDQUFzQyxFQUFFO0FBQzdLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHFCQUFxQjtBQUN0QyxpQkFBaUIsR0FBRztBQUNwQixpQkFBaUIsUUFBUTtBQUN6QixrQkFBa0IsUUFBUTtBQUMxQixtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGdCQUFnQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCxpRUFBaUUsbURBQW1ELDZCQUE2QixnQkFBZ0IseUNBQXlDLDRJQUE0STtBQUNuWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0EsbUJBQW1CLE1BQU07QUFDekIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsd0dBQXdHLG9DQUFvQywyRUFBMkUsRUFBRSxlQUFlLEVBQUU7QUFDM1M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGNBQWM7QUFDL0IsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyQkFBMkI7QUFDeEMsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLGlCQUFpQixPQUFPLDJCQUEyQixTQUFTO0FBQzVEO0FBQ0E7QUFDQSxpQkFBaUIsVUFBVSwyQkFBMkIsYUFBYTtBQUNuRSwrREFBK0QsbUNBQW1DLEVBQUU7QUFDcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixjQUFjO0FBQy9CLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0EsYUFBYSxrQkFBa0I7QUFDL0IsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsOENBQThDLGlEQUFpRDtBQUMxSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsc0NBQXNDO0FBQ3pEO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0Isb0JBQW9CLFFBQVE7QUFDNUIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0EsZUFBZSw2QkFBNkI7QUFDNUMsZUFBZSw2QkFBNkI7QUFDNUMsZUFBZSw2QkFBNkI7QUFDNUMsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QscUJBQXFCLFVBQVUsd0JBQXdCLDBDQUEwQyw4QkFBOEIscUJBQXFCLGlDQUFpQyxpREFBaUQ7QUFDclM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0EsZUFBZSwrQ0FBK0M7QUFDOUQsZUFBZSw4Q0FBOEM7QUFDN0QsZUFBZTtBQUNmO0FBQ0E7QUFDQSw0Q0FBNEMsa0JBQWtCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQywyQkFBMkI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUVBQXFFLDZCQUE2QixZQUFZLGVBQWUsRUFBRTtBQUMvSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsY0FBYztBQUMvQixpQkFBaUIsVUFBVTtBQUMzQixpQkFBaUIsR0FBRztBQUNwQixtQkFBbUIsR0FBRztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxvQkFBb0Isd0JBQXdCO0FBQzVDO0FBQ0E7QUFDQSxVQUFVLElBQUk7QUFDZCxpQkFBaUIsOEJBQThCO0FBQy9DLDBEQUEwRCxpRkFBaUYsZ0ZBQWdGO0FBQzNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLEdBQUc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxpRUFBaUUsc0ZBQXNGLHFGQUFxRjtBQUM1Tyx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUE4QztBQUM3RCxlQUFlO0FBQ2Y7QUFDQTtBQUNBLHlDQUF5QyxtQkFBbUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDJCQUEyQjtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsb0RBQW9ELDBEQUEwRDtBQUMvSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxvREFBb0QseUJBQXlCO0FBQ3BIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFFBQVE7QUFDM0Isb0JBQW9CLFFBQVE7QUFDNUIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsMkRBQTJELEtBQUssS0FBSyxnQkFBZ0IsNERBQTRELDJCQUEyQjtBQUMvTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLHNEQUFzRCx5QkFBeUI7QUFDdkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHFCQUFxQixVQUFVLDRCQUE0QixzRUFBc0UsMkJBQTJCLDZCQUE2Qix3QkFBd0Isb0NBQW9DO0FBQzFSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsVUFBVTtBQUM3QixvQkFBb0IsUUFBUTtBQUM1QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0NBQWtDO0FBQ2pELGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbUNBQW1DO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxnREFBZ0Qsc0RBQXNELHFCQUFxQixrREFBa0Q7QUFDbE87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLDBCQUEwQjtBQUM3QztBQUNBLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkJBQTZCO0FBQzVDLGVBQWUsNkJBQTZCO0FBQzVDLGVBQWUsNkJBQTZCO0FBQzVDLGVBQWU7QUFDZjtBQUNBO0FBQ0EsMENBQTBDLGdCQUFnQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxxQkFBcUIsVUFBVSw0QkFBNEIsbUVBQW1FLGNBQWMsMEVBQTBFLDBCQUEwQiw0REFBNEQsRUFBRTtBQUM1VztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0Esb0NBQW9DLHlCQUF5QjtBQUM3RCxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSx1QkFBdUIsZ0NBQWdDO0FBQ3ZELFVBQVU7QUFDVjtBQUNBLGdDQUFnQyw2QkFBNkIsc0NBQXNDLGVBQWUsa0JBQWtCLFVBQVUsc0NBQXNDO0FBQ3BMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0Isb0JBQW9CLFFBQVE7QUFDNUIscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0Msb0JBQW9CLDhCQUE4QixpRkFBaUY7QUFDeks7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLFdBQVcsNkJBQTZCLHNDQUFzQyxlQUFlLGtCQUFrQixVQUFVLG1DQUFtQyxTQUFTLGdCQUFnQixpQkFBaUI7QUFDek87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsTUFBTTtBQUN6QixxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkRBQTZELDJCQUEyQixvQkFBb0IscURBQXFELDRCQUE0QiwwREFBMEQsRUFBRTtBQUN6UDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixpQkFBaUIsUUFBUTtBQUN6QixpQkFBaUIsTUFBTTtBQUN2QixtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsOENBQThDLG9CQUFvQix3REFBd0QsNEJBQTRCLHdEQUF3RCxFQUFFO0FBQzVRO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixVQUFVO0FBQzNCLGlCQUFpQixRQUFRO0FBQ3pCLGtCQUFrQixRQUFRO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsNEJBQTRCLG9HQUFvRyxxQ0FBcUMsZUFBZTtBQUM5TjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixvQkFBb0IsUUFBUTtBQUM1QixxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELDRCQUE0QiwwR0FBMEcsMENBQTBDLGVBQWU7QUFDaFA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVEsV0FBVztBQUN0QyxtQkFBbUIsU0FBUztBQUM1QjtBQUNBLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0EsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQSxxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLHVEQUF1RCxpQkFBaUI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxvSEFBb0gsNkJBQTZCLHNDQUFzQyx1QkFBdUIsc0JBQXNCLDBCQUEwQiwyQkFBMkIsb0VBQW9FLDJEQUEyRCwwQkFBMEIsbUNBQW1DLDRCQUE0QixvQkFBb0IsZ0NBQWdDLGVBQWUsMkJBQTJCO0FBQy9uQixvQkFBb0I7QUFDcEIsc0NBQXNDO0FBQ3RDLHdDQUF3Qyw2QkFBNkIsbUhBQW1ILDhFQUE4RSw0QkFBNEIsZ0ZBQWdGO0FBQ2xYO0FBQ0E7QUFDQSxxSEFBcUgsd0JBQXdCLGVBQWUsdUJBQXVCLDJCQUEyQjtBQUM5TSxzREFBc0QsNEJBQTRCLGtCQUFrQjtBQUNwRztBQUNBLHVCQUF1Qix5QkFBeUIsNEJBQTRCLGVBQWUsa0JBQWtCLHdCQUF3Qix1QkFBdUIsaUJBQWlCLGtEQUFrRCxpQkFBaUIsdURBQXVELHFCQUFxQiw2Q0FBNkMsbUJBQW1CLGNBQWMsa0JBQWtCLGVBQWUsd0JBQXdCLGtDQUFrQyxXQUFXO0FBQ2hmLHNDQUFzQyxrQ0FBa0Msd0JBQXdCLHVDQUF1QyxlQUFlLHdCQUF3QixzQkFBc0Isa0JBQWtCO0FBQ3ROO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLE1BQU07QUFDekIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxrREFBa0QsK0JBQStCLEVBQUU7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsVUFBVTtBQUMzQixpQkFBaUIsUUFBUTtBQUN6QixpQkFBaUIsTUFBTTtBQUN2QixtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLHFEQUFxRCwrQ0FBK0MsRUFBRTtBQUN0RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsVUFBVTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsd0NBQXdDO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQix5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsMkVBQTJFLHNDQUFzQyxpQ0FBaUMsdUZBQXVGLG1CQUFtQix1QkFBdUIsaUNBQWlDLDRDQUE0QyxnQkFBZ0IsOENBQThDLGlCQUFpQjtBQUMxZCx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0Msa0NBQWtDLHNDQUFzQyxrQkFBa0IsbUJBQW1CLG9CQUFvQixtQ0FBbUMsMkNBQTJDLG1EQUFtRCw0REFBNEQscUNBQXFDO0FBQ3pZO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsdUJBQXVCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQiwwQkFBMEI7QUFDN0M7QUFDQSxxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELHNLQUFzSyxrQ0FBa0MsK0JBQStCLHVEQUF1RCxzQkFBc0Isc0RBQXNELDhCQUE4QixHQUFHLEVBQUU7QUFDeGM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixVQUFVO0FBQzNCLGlCQUFpQixNQUFNO0FBQ3ZCLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Qsd0RBQXdELHNFQUFzRSxFQUFFO0FBQ3RMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFVBQVU7QUFDM0IsaUJBQWlCLE1BQU07QUFDdkIsbUJBQW1CLFVBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCw2REFBNkQsNEVBQTRFLEVBQUU7QUFDdE07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFVBQVU7QUFDM0IsaUJBQWlCLHNCQUFzQjtBQUN2QyxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsK0VBQStFLEVBQUU7QUFDcEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixVQUFVO0FBQzNCLGlCQUFpQixRQUFRO0FBQ3pCLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDZCQUE2QixzQ0FBc0MsK0NBQStDLDZCQUE2QjtBQUNsTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLHVDQUF1Qyw2QkFBNkIsc0NBQXNDLGtEQUFrRCwrQkFBK0Isd0RBQXdELFVBQVUsNEJBQTRCLG1DQUFtQyxHQUFHO0FBQy9UO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUSxXQUFXO0FBQ3RDLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0EsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQSxxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsbUJBQW1CO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELCtCQUErQiw2QkFBNkIsc0NBQXNDLHNCQUFzQixzREFBc0QsMkRBQTJELDJCQUEyQiwrQ0FBK0MsR0FBRztBQUN0VztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLG9CQUFvQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDLHdDQUF3Qyw2Q0FBNkM7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixRQUFRO0FBQ2pDLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHNCQUFzQixVQUFVLHVCQUF1QixxQ0FBcUM7QUFDNUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixHQUFHO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixRQUFRLElBQUksUUFBUTtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyw0Q0FBNEM7QUFDN0U7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELCtEQUErRCx1REFBdUQ7QUFDdEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLEdBQUc7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFFBQVEsSUFBSSxRQUFRO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDREQUE0RDtBQUNqRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELCtEQUErRCx1RUFBdUU7QUFDMUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0Esa0NBQWtDLG1CQUFtQixpQkFBaUI7QUFDdEU7QUFDQTtBQUNBLGtDQUFrQyxtQkFBbUIsaUJBQWlCO0FBQ3RFO0FBQ0EsOENBQThDLGlFQUFpRTtBQUMvRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQix5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLG9EQUFvRDtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FLHFCQUFxQixFQUFFO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixHQUFHO0FBQ3BCLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxtQkFBbUI7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0Qsa0JBQWtCLG9DQUFvQyw4R0FBOEc7QUFDeE47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEdBQUc7QUFDcEIsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RkFBOEY7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixHQUFHO0FBQ3BCLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGdFQUFnRTtBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsZ0RBQWdEO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHFGQUFxRjtBQUMxSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyx1RUFBdUU7QUFDNUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFFBQVE7QUFDL0I7QUFDQSxtQ0FBbUMsZ0JBQWdCLGFBQWEsOEpBQThKLHFCQUFxQixzQkFBc0IsNkJBQTZCLG1CQUFtQix1QkFBdUIsK0JBQStCLHNCQUFzQixtQ0FBbUMsZUFBZSxhQUFhO0FBQ3BjO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQix5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGlDQUFpQztBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELCtEQUErRCx3REFBd0Qsa0ZBQWtGO0FBQ2pRO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMseUJBQXlCLGNBQWMsMEJBQTBCLDRIQUE0SDtBQUNoTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyx1REFBdUQ7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MscUJBQXFCLGNBQWM7QUFDekU7QUFDQSwwQkFBMEIsZ0VBQWdFO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHlEQUF5RDtBQUM5RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQywrRUFBK0U7QUFDbkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsK0RBQStELHdEQUF3RDtBQUMzSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0Msd0ZBQXdGO0FBQ2hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0EsK0JBQStCLFFBQVE7QUFDdkM7QUFDQTtBQUNBLCtCQUErQixRQUFRO0FBQ3ZDO0FBQ0EsMkNBQTJDLHlFQUF5RTtBQUNwSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCwrREFBK0QsbUVBQW1FO0FBQzVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLHNCQUFzQixrQ0FBa0MsNEJBQTRCO0FBQ3hIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLHFCQUFxQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxvQkFBb0I7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsbUZBQW1GO0FBQ3ZIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGdCQUFnQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyx1REFBdUQsY0FBYyw4QkFBOEIsaUJBQWlCLGFBQWEscUVBQXFFLGtHQUFrRztBQUNqVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLDRFQUE0RTtBQUNySDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxvR0FBb0c7QUFDeEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsNkhBQTZIO0FBQ2pLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEZBQTBGO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixHQUFHO0FBQ3BCLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDBCQUEwQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyx1REFBdUQ7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsMkRBQTJEO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtRUFBbUUscUJBQXFCLEVBQUU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEdBQUc7QUFDcEIsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBLHFCQUFxQixnQkFBZ0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsV0FBVyxVQUFVLHVCQUF1Qiw4REFBOEQsb0NBQW9DLDhDQUE4QyxnRkFBZ0Ysb0JBQW9CO0FBQ2pVO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLFdBQVcsMEJBQTBCLHNCQUFzQix3Q0FBd0Msc0JBQXNCLHlCQUF5Qiw4QkFBOEI7QUFDcE47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsOENBQThDLDREQUE0RDtBQUMvSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLCtEQUErRDtBQUNuRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyw0QkFBNEIsY0FBYyxvQkFBb0IsWUFBWSxvQkFBb0Isa0VBQWtFLHNDQUFzQyw0QkFBNEIsK0JBQStCLCtCQUErQixvQ0FBb0Msb0hBQW9IO0FBQzVkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixRQUFRO0FBQzlCLG1CQUFtQjtBQUNuQjtBQUNBLHNCQUFzQixRQUFRO0FBQzlCLG1CQUFtQjtBQUNuQix5Q0FBeUMsd0NBQXdDO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsK0ZBQStGO0FBQ3hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsMkNBQTJDO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsV0FBVztBQUM5QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLFFBQVE7QUFDOUIsbUJBQW1CO0FBQ25CLDZEQUE2RCw2Q0FBNkMsdUNBQXVDLFFBQVEsdUJBQXVCLG9DQUFvQyx1Q0FBdUMsRUFBRTtBQUM3UDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixXQUFXO0FBQzVCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsUUFBUTtBQUM5QixpQkFBaUI7QUFDakIsNkRBQTZELDBDQUEwQyxFQUFFO0FBQ3pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixXQUFXO0FBQzVCLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRLElBQUksUUFBUSxJQUFJLFFBQVE7QUFDcEQsaUJBQWlCO0FBQ2pCLHFGQUFxRixxREFBcUQsRUFBRTtBQUM1STtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLFdBQVc7QUFDNUIsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVEsSUFBSSxRQUFRLElBQUksUUFBUTtBQUNwRCxpQkFBaUI7QUFDakIsbUZBQW1GLG1EQUFtRCxFQUFFO0FBQ3hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixzQkFBc0I7QUFDdkMsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBLHdCQUF3QixRQUFRLE9BQU8sVUFBVTtBQUNqRDtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELGlDQUFpQyw4REFBOEQ7QUFDaEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixXQUFXO0FBQzlCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixRQUFRLElBQUksUUFBUSxJQUFJLFFBQVE7QUFDeEQsbUJBQW1CO0FBQ25CLDBEQUEwRCxzQkFBc0IsYUFBYSwwQkFBMEIsd0NBQXdDLHVEQUF1RCxVQUFVLHNCQUFzQiwwQkFBMEIseUJBQXlCLGtCQUFrQiw2QkFBNkIsZ0NBQWdDLDBCQUEwQixzQkFBc0Isb0ZBQW9GLDJCQUEyQixlQUFlLEVBQUU7QUFDeGlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixXQUFXO0FBQzVCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixPQUFPLFVBQVUsSUFBSSxPQUFPLGtCQUFrQjtBQUN4RSxpQkFBaUIsT0FBTztBQUN4QixrREFBa0QseUNBQXlDLHdDQUF3QyxFQUFFO0FBQ3JJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwyQkFBMkI7QUFDbkQsd0JBQXdCLDRCQUE0QjtBQUNwRCx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLHdDQUF3QyxvQkFBb0I7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDBCQUEwQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsZ0VBQWdFO0FBQzVHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwyQkFBMkI7QUFDckQsMEJBQTBCLDRCQUE0QjtBQUN0RCwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLDhDQUE4QyxvQkFBb0I7QUFDbEU7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDJCQUEyQjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QscUVBQXFFO0FBQ3ZIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLDJDQUEyQywyRUFBMkU7QUFDdEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxnREFBZ0QsZ0ZBQWdGO0FBQ2hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLDRDQUE0QywyREFBMkQ7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxpREFBaUQsZ0VBQWdFO0FBQ2pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLDJEQUEyRDtBQUNqRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qyw2REFBNkQ7QUFDckc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0EsMEJBQTBCLFFBQVEsT0FBTyxVQUFVO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCx1REFBdUQsK0NBQStDO0FBQ3hKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixjQUFjO0FBQ2pDLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQSwwQkFBMEIsT0FBTztBQUNqQyxrQ0FBa0MsZ0JBQWdCLFFBQVEsR0FBRztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsbURBQW1EO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixjQUFjO0FBQ2pDLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQSxtQ0FBbUMsZ0JBQWdCLFFBQVEsR0FBRztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMscURBQXFEO0FBQzVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsZ0VBQWdFLG9EQUFvRCx3Q0FBd0MsbUJBQW1CLHFCQUFxQjtBQUNwTTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsaUJBQWlCO0FBQ2pCLGdFQUFnRSxvREFBb0Qsd0NBQXdDLHNDQUFzQyx5QkFBeUIsS0FBSyxzQkFBc0IsY0FBYztBQUNwUTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixpQkFBaUIsY0FBYztBQUMvQixpQkFBaUIsTUFBTTtBQUN2QixtQkFBbUIsR0FBRztBQUN0QjtBQUNBO0FBQ0Esd0JBQXdCLFFBQVEsT0FBTyxxQkFBcUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxtRUFBbUU7QUFDcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsMEVBQTBFO0FBQzdHLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBLFlBQVk7QUFDWixtQkFBbUI7QUFDbkIsNkNBQTZDLGNBQWMsaUNBQWlDLDZDQUE2QywwREFBMEQsRUFBRSxlQUFlO0FBQ3BOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDhCQUE4QjtBQUN4RCwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLDRDQUE0QyxlQUFlO0FBQzNELG1CQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJCQUEyQjtBQUM5QywrQ0FBK0MsY0FBYyxpQ0FBaUMsNkNBQTZDLHdEQUF3RCxFQUFFLGVBQWU7QUFDcE47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixXQUFXO0FBQzlCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixRQUFRLElBQUksUUFBUTtBQUN6QztBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsUUFBUSxJQUFJLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVEsZ0JBQWdCLElBQUksZ0JBQWdCO0FBQy9ELHFFQUFxRSxtQ0FBbUMsRUFBRTtBQUMxRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixpQkFBaUIsV0FBVztBQUM1QixpQkFBaUIsVUFBVTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGtGQUFrRiw4Q0FBOEMsRUFBRTtBQUNsSSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixzQkFBc0I7QUFDdkMsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGtEQUFrRCxjQUFjLGlCQUFpQixlQUFlLGlCQUFpQixvQ0FBb0MsMkJBQTJCLCtCQUErQixhQUFhLEVBQUUsK0NBQStDLFdBQVcsNkZBQTZGLHdCQUF3QixnQkFBZ0IsaUNBQWlDLGVBQWUsRUFBRTtBQUMvYyxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQiwyQ0FBMkMsc0RBQXNEO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixzQkFBc0I7QUFDekMscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLG9EQUFvRCxzQkFBc0IseUJBQXlCLEVBQUU7QUFDckc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixpQkFBaUIsVUFBVTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsMkNBQTJDLGlCQUFpQixVQUFVLHVEQUF1RCxjQUFjLEVBQUUsaUNBQWlDLG9EQUFvRCxpQ0FBaUMsR0FBRztBQUN0UTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLEdBQUc7QUFDeEI7QUFDQTtBQUNBLDBCQUEwQixRQUFRLE9BQU8sZ0NBQWdDO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCwyQkFBMkIsZ0NBQWdDO0FBQ2hILFlBQVksU0FBUyxrQkFBa0Isc0JBQXNCLDREQUE0RCxzQkFBc0IsYUFBYSxvQkFBb0IsbURBQW1ELGVBQWU7QUFDbFA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixjQUFjO0FBQ2pDLG1CQUFtQixHQUFHO0FBQ3RCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQSwwQkFBMEIsUUFBUSxPQUFPLFVBQVU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyx1REFBdUQ7QUFDbEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixjQUFjO0FBQ2pDLG1CQUFtQixHQUFHO0FBQ3RCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQiwwREFBMEQsK0RBQStELGtFQUFrRTtBQUMzTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0MseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSx5QkFBeUIsd0JBQXdCO0FBQ2pEO0FBQ0EsWUFBWSxJQUFJO0FBQ2hCLG1CQUFtQjtBQUNuQiwyREFBMkQsa0ZBQWtGLGlDQUFpQyxzQkFBc0Isb0NBQW9DLGNBQWMsaUNBQWlDLDBCQUEwQixrRUFBa0UsS0FBSyxpQkFBaUIscUVBQXFFLGlEQUFpRCxFQUFFLG9CQUFvQjtBQUNyaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixjQUFjO0FBQ2pDLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQSwwQkFBMEIsUUFBUSxPQUFPLFVBQVU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUSxTQUFTO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUSxTQUFTO0FBQ3BDLHVDQUF1QyxpREFBaUQ7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0EsMEJBQTBCLFFBQVEsT0FBTyxVQUFVO0FBQ25EO0FBQ0Esc0RBQXNELGVBQWU7QUFDckU7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELHVCQUF1QjtBQUM3RTtBQUNBO0FBQ0EsZ0RBQWdELDBFQUEwRTtBQUMxSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLGNBQWM7QUFDakMsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLCtEQUErRCwrREFBK0QscUZBQXFGO0FBQ25OO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHdEQUF3RDtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDBEQUEwRDtBQUMvRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxzQkFBc0IsWUFBWSxpQkFBaUIsc0JBQXNCLHNCQUFzQiw2QkFBNkIsc0JBQXNCLHNCQUFzQiw2QkFBNkIsZ0RBQWdEO0FBQ25TO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsc0JBQXNCLG9CQUFvQixVQUFVLFNBQVMsS0FBSyxtQkFBbUIsd0JBQXdCLHNDQUFzQztBQUNqTTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsU0FBUztBQUM1QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxnRkFBZ0YsMEJBQTBCLHlCQUF5Qiw2QkFBNkIsZUFBZSxpQkFBaUIsa0NBQWtDLGVBQWUsa0JBQWtCLHlDQUF5QyxRQUFRLFNBQVMsS0FBSyxzQkFBc0Isc0JBQXNCLFlBQVksU0FBUyxLQUFLLHdCQUF3QixnQkFBZ0IsZUFBZSxZQUFZLFlBQVksK0JBQStCLHdCQUF3Qiw2RkFBNkYsZ0NBQWdDO0FBQzVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNFQUFzRSx3QkFBd0IsNkNBQTZDLEVBQUU7QUFDN0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxtREFBbUQ7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx3QkFBd0IsNkVBQTZFO0FBQ3hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsd0JBQXdCLDRCQUE0Qix5QkFBeUIsNkVBQTZFLGlCQUFpQix3QkFBd0Isd0RBQXdEO0FBQ2hUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEMsbUNBQW1DLHdCQUF3QixzR0FBc0c7QUFDaks7QUFDQSxzQ0FBc0MsS0FBSztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsd0JBQXdCLHdGQUF3RjtBQUN6SjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFLGlEQUFpRCxFQUFFO0FBQ3pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FLGlEQUFpRCxFQUFFO0FBQ3ZIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVEO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsd0JBQXdCLHlCQUF5QiwwQ0FBMEMsK0JBQStCLGVBQWUsNkJBQTZCLDBGQUEwRjtBQUM3UztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELHdCQUF3Qix5QkFBeUIsMENBQTBDLHFGQUFxRjtBQUNoTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELHdCQUF3Qix5QkFBeUIsMENBQTBDLHFGQUFxRjtBQUNsTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0Isb0JBQW9CLFFBQVE7QUFDNUIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsdUJBQXVCLFNBQVMsZUFBZSxjQUFjLDBFQUEwRTtBQUN4TDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixvQkFBb0IsUUFBUTtBQUM1QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyx1REFBdUQsS0FBSyxLQUFLLGdCQUFnQix1Q0FBdUM7QUFDbks7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLGVBQWU7QUFDbEMsbUJBQW1CLGlCQUFpQjtBQUNwQyxxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qiw0Q0FBNEMsNkRBQTZEO0FBQ3ZJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0UsaURBQWlELEVBQUU7QUFDekg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLGVBQWU7QUFDaEMsaUJBQWlCLFFBQVE7QUFDekIsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsMkVBQTJFLDJCQUEyQixtREFBbUQsV0FBVyxVQUFVLHdCQUF3QixpRkFBaUYsa0NBQWtDLG1DQUFtQyxrREFBa0Qsc0NBQXNDO0FBQ3BlO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0UsK0NBQStDLEVBQUU7QUFDdkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLFFBQVE7QUFDekIsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCx3QkFBd0IseUVBQXlFLDRCQUE0Qiw4REFBOEQ7QUFDaFA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRLFdBQVc7QUFDdEMsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQjtBQUNBLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQjtBQUNBLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUIscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsZ0JBQWdCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHFCQUFxQjtBQUMzQyx5QkFBeUIsVUFBVTtBQUNuQztBQUNBO0FBQ0EsMkVBQTJFLDBCQUEwQixHQUFHO0FBQ3hHLHNCQUFzQiw2QkFBNkI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFLHNCQUFzQixrQkFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsTUFBTTtBQUNyRCxzQkFBc0IsbUJBQW1CO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG9CQUFvQjtBQUMxQztBQUNBO0FBQ0E7QUFDQSwwREFBMEQsMEJBQTBCLEdBQUc7QUFDdkYsNkNBQTZDLGFBQWEsZ0JBQWdCO0FBQzFFLHNCQUFzQiw2QkFBNkI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsNkRBQTZELG9DQUFvQztBQUNqRztBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxvQkFBb0I7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxZQUFZO0FBQzNELCtDQUErQyxPQUFPO0FBQ3RELHNCQUFzQixvQkFBb0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBLGVBQWU7QUFDZjtBQUNBLG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0EscUNBQXFDLGdEQUFnRCxtQkFBbUIsd0JBQXdCLHVCQUF1QiwwQ0FBMEMsMkJBQTJCLGtJQUFrSSxpR0FBaUc7QUFDL2IscU1BQXFNO0FBQ3JNLCtIQUErSCw4R0FBOEcscURBQXFEO0FBQ2xTLCtFQUErRTtBQUMvRSxnQkFBZ0IsZ0JBQWdCLDBDQUEwQyxrQkFBa0Isa0JBQWtCLFdBQVcsb0JBQW9CLGFBQWEscUJBQXFCLHlFQUF5RSwwQkFBMEI7QUFDbFI7QUFDQSxjQUFjLEVBQUUsV0FBVyxJQUFJO0FBQy9CO0FBQ0EsOEJBQThCLGNBQWMsb0JBQW9CLGVBQWUsS0FBSztBQUNwRix5SUFBeUksR0FBRztBQUM1SSx5Q0FBeUMsa0NBQWtDLEVBQUUsd0dBQXdHLHdCQUF3QixnQ0FBZ0MsTUFBTSwwQkFBMEIsRUFBRSw4QkFBOEIsd0ZBQXdGLEVBQUU7QUFDdlk7QUFDQSxxQkFBcUIsb0JBQW9CLGNBQWMsZUFBZTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHNDQUFzQztBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHNDQUFzQztBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixvQkFBb0IsUUFBUTtBQUM1QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qyx3QkFBd0IsdUNBQXVDLGtDQUFrQywwQ0FBMEMsZUFBZSw2SkFBNkosaURBQWlEO0FBQ3JaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLG9CQUFvQixRQUFRO0FBQzVCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELHdCQUF3Qix1Q0FBdUMscUNBQXFDLDBDQUEwQyxlQUFlLDBGQUEwRiw2Q0FBNkM7QUFDcFY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0Isb0JBQW9CLFFBQVE7QUFDNUIscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Qsd0JBQXdCLHVDQUF1Qyx1Q0FBdUMsMENBQTBDLGVBQWUsNEZBQTRGLDZDQUE2QztBQUMxVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVEsV0FBVztBQUN0QyxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSw2Q0FBNkMsZ0VBQWdFLHNCQUFzQixnRUFBZ0UsMkRBQTJELHVFQUF1RSx3QkFBd0IsNEJBQTRCLHVCQUF1QixxQ0FBcUMsNkJBQTZCLHNCQUFzQixlQUFlLG9DQUFvQyxVQUFVLGlCQUFpQiwrRUFBK0UsMEJBQTBCLHdCQUF3QixlQUFlLHdCQUF3Qix3QkFBd0Isd0NBQXdDLDJCQUEyQixzQkFBc0IsMEVBQTBFLHNCQUFzQix1Q0FBdUMsd0JBQXdCLHVEQUF1RCwwREFBMEQsd0NBQXdDLGFBQWEsK0JBQStCLHdCQUF3QjtBQUMzc0Msc0NBQXNDO0FBQ3RDLGlCQUFpQixRQUFRLFFBQVEsVUFBVSxhQUFhO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQSxxQ0FBcUMsd0JBQXdCLG9HQUFvRztBQUNqSztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNFQUFzRSxpREFBaUQsRUFBRTtBQUN6SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsZUFBZTtBQUNsQyxvQkFBb0IsUUFBUTtBQUM1QixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCx3QkFBd0IsZ0NBQWdDLHdCQUF3Qix1RUFBdUUsa0NBQWtDO0FBQ3pPO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsbUJBQW1CLE1BQU07QUFDekIscUJBQXFCLEdBQUc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxJQUFJLG1DQUFtQyxTQUFTLG1DQUFtQyxFQUFFO0FBQ3pJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixzQkFBc0I7QUFDdkMsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELG9DQUFvQyxlQUFlLHNEQUFzRCxFQUFFLGVBQWUsRUFBRTtBQUN2TDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsUUFBUTtBQUNoQyx5QkFBeUIsaUJBQWlCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnQkFBZ0I7QUFDaEM7QUFDQTtBQUNBLGdCQUFnQixnQkFBZ0I7QUFDaEM7QUFDQTtBQUNBLGdCQUFnQixvQkFBb0I7QUFDcEM7QUFDQSw4QkFBOEIsK0RBQStELCtDQUErQyxnQ0FBZ0Msc0NBQXNDLHFDQUFxQyxFQUFFLCtCQUErQixhQUFhLHNCQUFzQixzQkFBc0IsNkJBQTZCLG1DQUFtQyxHQUFHO0FBQ3BaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdCQUFnQjtBQUMvQixlQUFlO0FBQ2Y7QUFDQTtBQUNBLDBDQUEwQyxtQkFBbUIsaUJBQWlCO0FBQzlFLG9CQUFvQixnQkFBZ0I7QUFDcEMscUNBQXFDLHdEQUF3RDtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0EsaURBQWlELFFBQVE7QUFDekQ7QUFDQTtBQUNBLG9CQUFvQixRQUFRLElBQUksUUFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0JBQWtCLGdCQUFnQjtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLEdBQUc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Qsc0RBQXNEO0FBQ3hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMEJBQTBCO0FBQzdDLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDBCQUEwQjtBQUM3QyxxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxjQUFjO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEIscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsZUFBZSw2Q0FBNkM7QUFDNUQsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxrQ0FBa0M7QUFDMUUsb0JBQW9CLDZDQUE2QztBQUNqRTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMkJBQTJCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvRkFBb0Y7QUFDdkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsZUFBZSx3QkFBd0I7QUFDdkMsZUFBZTtBQUNmO0FBQ0E7QUFDQSx5Q0FBeUMsZ0JBQWdCO0FBQ3pELG9CQUFvQix3QkFBd0I7QUFDNUMsb0NBQW9DLHVEQUF1RDtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxlQUFlLHdCQUF3QjtBQUN2QyxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLG1EQUFtRCxzRUFBc0U7QUFDekg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxtQkFBbUIsTUFBTTtBQUN6QixxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU8sc0JBQXNCO0FBQzVDLGVBQWUsT0FBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCx3QkFBd0IsdUNBQXVDLEVBQUU7QUFDcEgscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLE1BQU07QUFDdkIsbUJBQW1CLFVBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxzQkFBc0IsdUNBQXVDLEVBQUU7QUFDcEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEMsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLFFBQVEsV0FBVztBQUNwQyxpQkFBaUIsU0FBUztBQUMxQixtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQixJQUFJLGdCQUFnQjtBQUN6RDtBQUNBO0FBQ0EsK0NBQStDLCtEQUErRCw0RUFBNEUsZUFBZSxjQUFjLFlBQVksZ0RBQWdELDZGQUE2RiwyQ0FBMkMsNEJBQTRCLHdCQUF3QixXQUFXLHdDQUF3Qyw0QkFBNEIsb0JBQW9CLDJGQUEyRixjQUFjLHdDQUF3QyxFQUFFLDBCQUEwQixlQUFlLGtFQUFrRSxFQUFFLGVBQWU7QUFDajBCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLGtCQUFrQixnQkFBZ0IsYUFBYTtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGVBQWUsK0JBQStCLHdCQUF3QixHQUFHO0FBQ3ZHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDBCQUEwQjtBQUM3QztBQUNBLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwQkFBMEI7QUFDN0M7QUFDQSxxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMEJBQTBCO0FBQzdDO0FBQ0EscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTyxVQUFVO0FBQ2hDLGVBQWUsT0FBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxxRUFBcUU7QUFDeEcseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsc0JBQXNCLHNEQUFzRDtBQUNuSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsVUFBVTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxjQUFjO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBSTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsVUFBVTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxVQUFVO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGFBQWE7QUFDNUM7QUFDQSx1RUFBdUU7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLGVBQWUsNEJBQTRCLFVBQVUsZ0VBQWdFLCtCQUErQixvQkFBb0Isc0NBQXNDLGlCQUFpQixpQkFBaUIsZUFBZTtBQUNyUztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsR0FBRztBQUN0QixxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxtQkFBbUIsOEJBQThCLHlFQUF5RTtBQUM1SjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxtQkFBbUIsNEJBQTRCO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStELHNCQUFzQixJQUFJO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixRQUFRO0FBQ3pCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLG1CQUFtQixRQUFRO0FBQzNCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUVBQXFFLHlCQUF5QixJQUFJO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGlCQUFpQixRQUFRO0FBQ3pCLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLEdBQUc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMEVBQTBFO0FBQ3pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0EsNEJBQTRCLFFBQVEsSUFBSSxRQUFRO0FBQ2hEO0FBQ0EsMENBQTBDLGFBQWE7QUFDdkQsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQiwwQ0FBMEMseUZBQXlGO0FBQ25JO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGlDQUFpQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBLDRCQUE0QixRQUFRLElBQUksUUFBUSxJQUFJLFFBQVEsSUFBSSxRQUFRO0FBQ3hFO0FBQ0EsMkNBQTJDLGFBQWE7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxnREFBZ0Q7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixxQkFBcUIsR0FBRztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwwRUFBMEU7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixHQUFHO0FBQ3hCO0FBQ0E7QUFDQSw0QkFBNEIsUUFBUSxJQUFJLFFBQVE7QUFDaEQ7QUFDQSwwQ0FBMEMsYUFBYTtBQUN2RCxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLDBDQUEwQyx5RkFBeUY7QUFDbkk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RUFBOEUsZ0NBQWdDLElBQUk7QUFDbEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsaUJBQWlCLFFBQVE7QUFDekIsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUJBQW1CLFFBQVE7QUFDM0IscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RUFBeUUsMkJBQTJCLElBQUk7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsc0RBQXNEO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0EsNEJBQTRCLFFBQVEsSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLFFBQVE7QUFDeEU7QUFDQSwwQ0FBMEMsYUFBYTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLHFFQUFxRTtBQUMvRyxtQkFBbUIsZUFBZSxxQkFBcUIseUJBQXlCLGlDQUFpQyw2QkFBNkIsYUFBYSxxQkFBcUIsaUJBQWlCLHVCQUF1Qix1QkFBdUIsMkJBQTJCLG1CQUFtQixtQkFBbUIsdUJBQXVCLHFCQUFxQixpQkFBaUIseUJBQXlCLHlCQUF5Qix1QkFBdUIscUJBQXFCLG1CQUFtQiw2QkFBNkIseUJBQXlCLHlCQUF5QixpQ0FBaUMsbUJBQW1CLG1CQUFtQiw2QkFBNkIsaUNBQWlDLHFDQUFxQyxpQkFBaUIsMkJBQTJCLHFDQUFxQywyQkFBMkIsaUJBQWlCLHFCQUFxQix1QkFBdUIsK0JBQStCLGlDQUFpQyx1QkFBdUIsK0JBQStCLGlDQUFpQyxpQkFBaUIsaUJBQWlCLDJCQUEyQiwyQkFBMkIsMkJBQTJCLCtCQUErQix1QkFBdUIsdUJBQXVCLGlDQUFpQyxxQ0FBcUMseUNBQXlDLHFCQUFxQix5QkFBeUIsMkJBQTJCLHlCQUF5QixtQkFBbUIsaUJBQWlCLHFCQUFxQixlQUFlLHVCQUF1QiwyQkFBMkIsdUJBQXVCLHVDQUF1Qyx1QkFBdUIsbUJBQW1CLDJCQUEyQixxQkFBcUIseUJBQXlCLG1CQUFtQixxQkFBcUIscUJBQXFCLGlCQUFpQixxQkFBcUIsaUJBQWlCLHVCQUF1QixpQkFBaUIseUJBQXlCLDJCQUEyQix5QkFBeUIsdUJBQXVCLGlDQUFpQywyQkFBMkIsaUJBQWlCLHFCQUFxQix5QkFBeUIsNkJBQTZCLGlCQUFpQix1QkFBdUIsMkJBQTJCLCtCQUErQixxQkFBcUIsbUJBQW1CLDZCQUE2QixtQkFBbUIscUJBQXFCLHFCQUFxQixpQkFBaUIsdUJBQXVCLDZCQUE2QixlQUFlLHVCQUF1Qix1QkFBdUIsbUJBQW1CLHFCQUFxQiw2QkFBNkIsaUNBQWlDLG1CQUFtQixxQkFBcUIsaUJBQWlCLGlCQUFpQiwyQkFBMkIscUNBQXFDLDJCQUEyQixlQUFlLHlCQUF5QixpQkFBaUIsdUJBQXVCLHVCQUF1QiwyQkFBMkIscUJBQXFCLG1DQUFtQywyQkFBMkIsbUJBQW1CLG1CQUFtQix1QkFBdUIsMkJBQTJCLGlCQUFpQixxQkFBcUIseUJBQXlCLG1CQUFtQixtQkFBbUIsMkJBQTJCLHFCQUFxQiw2QkFBNkIscUJBQXFCLHlCQUF5Qix1QkFBdUIsbUJBQW1CLGlCQUFpQixlQUFlLG1CQUFtQix1QkFBdUIsZUFBZSwyQkFBMkIsbUNBQW1DLHVCQUF1QjtBQUNqOEcsdUJBQXVCLDJCQUEyQix1QkFBdUIsK0JBQStCO0FBQ3hHLHFCQUFxQjtBQUNyQixlQUFlLHVCQUF1QiwyQkFBMkIsNkJBQTZCLGlCQUFpQixtQkFBbUIsbUJBQW1CLDJCQUEyQixtQ0FBbUMsMkJBQTJCLDZCQUE2QixxQkFBcUIsMkJBQTJCLHFCQUFxQix5QkFBeUIsYUFBYSxxQkFBcUIsaUNBQWlDLG1CQUFtQixpQkFBaUIsMkJBQTJCLHVCQUF1Qix5QkFBeUIsbUNBQW1DLCtCQUErQixtQkFBbUIsdUJBQXVCLGlDQUFpQyxtQkFBbUIsNkJBQTZCLHFCQUFxQiwrQkFBK0IsZUFBZSxhQUFhLGVBQWUsZUFBZSxtQkFBbUIsaUJBQWlCLHlCQUF5Qix5QkFBeUIsdUJBQXVCLHVCQUF1QixxQkFBcUIsK0JBQStCLHVCQUF1QixtQ0FBbUMsK0JBQStCLDJDQUEyQywyQkFBMkIseUJBQXlCLHFCQUFxQiwyQkFBMkIsdUJBQXVCLHVCQUF1QiwrQkFBK0IsdUJBQXVCLHlCQUF5Qiw2QkFBNkIsMkJBQTJCLHlCQUF5QixtQkFBbUIsdUJBQXVCLCtCQUErQixtQkFBbUIseUJBQXlCLG1CQUFtQixxQkFBcUIseUJBQXlCLHlCQUF5QixpQ0FBaUMsbUNBQW1DLHlCQUF5QixtQ0FBbUMsbUJBQW1CLHlCQUF5Qix5QkFBeUIsaUNBQWlDLCtCQUErQiwyQkFBMkIsMkJBQTJCLGlCQUFpQiwyQkFBMkIsaUJBQWlCLCtCQUErQiwyQkFBMkIsNkJBQTZCLGFBQWEsZUFBZSxlQUFlLG1CQUFtQixpQkFBaUIscUJBQXFCLGVBQWUsbUJBQW1CLDJCQUEyQiwyQkFBMkIsNkJBQTZCLDZCQUE2Qix5QkFBeUIseUJBQXlCLGVBQWUsNkJBQTZCLGlCQUFpQixlQUFlLGVBQWUscUJBQXFCLHlCQUF5Qix5QkFBeUIscUJBQXFCLHFCQUFxQiwrQkFBK0IscUJBQXFCLHVCQUF1QixxQkFBcUIsbUJBQW1CLGlDQUFpQyxxQkFBcUIsaUJBQWlCLDJCQUEyQixpQkFBaUIsK0JBQStCLG1DQUFtQyxtQ0FBbUMsdUNBQXVDLDJDQUEyQywyQ0FBMkMsMkJBQTJCLDZCQUE2Qix5QkFBeUIsZUFBZSxtQkFBbUIseUJBQXlCLG1CQUFtQix5QkFBeUIsMkJBQTJCLHlCQUF5Qix1QkFBdUIseUJBQXlCLG1DQUFtQyx5QkFBeUIsdUJBQXVCLGlCQUFpQix1QkFBdUIsMkJBQTJCLHlCQUF5Qix5QkFBeUIseUJBQXlCLDJCQUEyQiw2QkFBNkI7QUFDbmtILG9CQUFvQiw4QkFBOEIsa0JBQWtCLHdCQUF3QixjQUFjLDRDQUE0QyxzREFBc0QsMEJBQTBCLEVBQUUsZUFBZSxJQUFJLFlBQVksRUFBRTtBQUN6UTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixrQ0FBa0M7QUFDbEMsZ0dBQWdHLHVDQUF1QyxFQUFFO0FBQ3pJLHFEQUFxRCw4Q0FBOEMsNENBQTRDLHdFQUF3RSx3QkFBd0Isd0RBQXdELEtBQUssdUJBQXVCLGlGQUFpRixHQUFHLGdCQUFnQixzREFBc0Qsa0RBQWtELEVBQUU7QUFDamhCLGtFQUFrRSx3RUFBd0UscURBQXFELHdCQUF3QiwyQkFBMkIsMkNBQTJDLEVBQUUsa0RBQWtELGlCQUFpQixFQUFFO0FBQ3BXLHFEQUFxRCx1Q0FBdUMsNkNBQTZDLHVDQUF1QyxFQUFFO0FBQ2xMLHdEQUF3RCx1Q0FBdUMsNkNBQTZDLG9FQUFvRSxFQUFFLHlDQUF5QywrQkFBK0IsK0NBQStDLHVDQUF1QyxtREFBbUQsd0NBQXdDLDZEQUE2RCw2QkFBNkIsOEJBQThCLGdDQUFnQyxvQ0FBb0MsR0FBRyxFQUFFLGlEQUFpRCxxREFBcUQsZ0RBQWdELHVCQUF1QixnQkFBZ0IsMENBQTBDLGdDQUFnQyxZQUFZLGlDQUFpQyxlQUFlLDJCQUEyQixvQkFBb0IsbUJBQW1CLDREQUE0RCxnQkFBZ0IseURBQXlELHVEQUF1RCx5Q0FBeUMscUNBQXFDO0FBQzN4QywyREFBMkQsK09BQStPLGdCQUFnQixRQUFRLHdDQUF3QywwSUFBMEksNENBQTRDLDREQUE0RCw0Q0FBNEMsNkVBQTZFO0FBQ3J0QixzQkFBc0IsOEhBQThILDJCQUEyQiwyQ0FBMkMsa0NBQWtDLHlCQUF5QiwrQ0FBK0MsRUFBRSwyQ0FBMkMsMEJBQTBCLDhCQUE4Qiw4QkFBOEIsc0VBQXNFLEVBQUU7QUFDL2dCLGdGQUFnRixrSkFBa0osd0NBQXdDLG1CQUFtQixrQ0FBa0MsdUJBQXVCLGlEQUFpRCx1Q0FBdUMsaURBQWlELEtBQUssRUFBRTtBQUN0ZSwyREFBMkQsa0NBQWtDLGVBQWUscUVBQXFFLFlBQVksZ0NBQWdDLElBQUksRUFBRSw2REFBNkQsOEJBQThCLEVBQUU7QUFDaFUsc0NBQXNDLDBDQUEwQyxzQ0FBc0M7QUFDdEgsOEJBQThCLG9DQUFvQyxzQ0FBc0Msa0NBQWtDLG9DQUFvQyx3Q0FBd0MscUZBQXFGO0FBQzNTLDZDQUE2QyxnQkFBZ0IsaURBQWlELGdCQUFnQjtBQUM5SCxxQkFBcUI7QUFDckIsR0FBRyxLQUEwQixVQUFVLHdCQUFVLGNBQWMsd0JBQVUsRUFBRTtBQUMzRTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxtQ0FBTyxXQUFXLFVBQVU7QUFBQSxrR0FBQyxFQUFFO0FBQy9CLG9CQUFvQjtBQUNwQiwyQkFBMkI7QUFDM0IsaUJBQWlCLEtBQUs7QUFDdEIsV0FBVyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi91dGlscy9sb2Rhc2guanM/ZmYzYiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7dmFyIF90eXBlb2Y9dHlwZW9mIFN5bWJvbD09PVwiZnVuY3Rpb25cIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09PVwic3ltYm9sXCI/ZnVuY3Rpb24ob2JqKXtyZXR1cm4gdHlwZW9mIG9iajt9OmZ1bmN0aW9uKG9iail7cmV0dXJuIG9iaiYmdHlwZW9mIFN5bWJvbD09PVwiZnVuY3Rpb25cIiYmb2JqLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZvYmohPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIG9iajt9Oy8qKlxuICogQGxpY2Vuc2VcbiAqIExvZGFzaCA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanMuZm91bmRhdGlvbi8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi8vKmVzbGludC1kaXNhYmxlKi8oZnVuY3Rpb24oKXsvKiogVXNlZCBhcyBhIHNhZmUgcmVmZXJlbmNlIGZvciBgdW5kZWZpbmVkYCBpbiBwcmUtRVM1IGVudmlyb25tZW50cy4gKi92YXIgdW5kZWZpbmVkOy8qKiBVc2VkIGFzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci4gKi92YXIgVkVSU0lPTj0nNC4xNy4xMCc7LyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovdmFyIExBUkdFX0FSUkFZX1NJWkU9MjAwOy8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi92YXIgQ09SRV9FUlJPUl9URVhUPSdVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC4nLEZVTkNfRVJST1JfVEVYVD0nRXhwZWN0ZWQgYSBmdW5jdGlvbic7LyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL3ZhciBIQVNIX1VOREVGSU5FRD0nX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7LyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL3ZhciBNQVhfTUVNT0laRV9TSVpFPTUwMDsvKiogVXNlZCBhcyB0aGUgaW50ZXJuYWwgYXJndW1lbnQgcGxhY2Vob2xkZXIuICovdmFyIFBMQUNFSE9MREVSPSdfX2xvZGFzaF9wbGFjZWhvbGRlcl9fJzsvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL3ZhciBDTE9ORV9ERUVQX0ZMQUc9MSxDTE9ORV9GTEFUX0ZMQUc9MixDTE9ORV9TWU1CT0xTX0ZMQUc9NDsvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi92YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUc9MSxDT01QQVJFX1VOT1JERVJFRF9GTEFHPTI7LyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgZnVuY3Rpb24gbWV0YWRhdGEuICovdmFyIFdSQVBfQklORF9GTEFHPTEsV1JBUF9CSU5EX0tFWV9GTEFHPTIsV1JBUF9DVVJSWV9CT1VORF9GTEFHPTQsV1JBUF9DVVJSWV9GTEFHPTgsV1JBUF9DVVJSWV9SSUdIVF9GTEFHPTE2LFdSQVBfUEFSVElBTF9GTEFHPTMyLFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHPTY0LFdSQVBfQVJZX0ZMQUc9MTI4LFdSQVBfUkVBUkdfRkxBRz0yNTYsV1JBUF9GTElQX0ZMQUc9NTEyOy8qKiBVc2VkIGFzIGRlZmF1bHQgb3B0aW9ucyBmb3IgYF8udHJ1bmNhdGVgLiAqL3ZhciBERUZBVUxUX1RSVU5DX0xFTkdUSD0zMCxERUZBVUxUX1RSVU5DX09NSVNTSU9OPScuLi4nOy8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi92YXIgSE9UX0NPVU5UPTgwMCxIT1RfU1BBTj0xNjsvKiogVXNlZCB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBsYXp5IGl0ZXJhdGVlcy4gKi92YXIgTEFaWV9GSUxURVJfRkxBRz0xLExBWllfTUFQX0ZMQUc9MixMQVpZX1dISUxFX0ZMQUc9MzsvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi92YXIgSU5GSU5JVFk9MS8wLE1BWF9TQUZFX0lOVEVHRVI9OTAwNzE5OTI1NDc0MDk5MSxNQVhfSU5URUdFUj0xLjc5NzY5MzEzNDg2MjMxNTdlMzA4LE5BTj0wLzA7LyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdGhlIG1heGltdW0gbGVuZ3RoIGFuZCBpbmRleCBvZiBhbiBhcnJheS4gKi92YXIgTUFYX0FSUkFZX0xFTkdUSD00Mjk0OTY3Mjk1LE1BWF9BUlJBWV9JTkRFWD1NQVhfQVJSQVlfTEVOR1RILTEsSEFMRl9NQVhfQVJSQVlfTEVOR1RIPU1BWF9BUlJBWV9MRU5HVEg+Pj4xOy8qKiBVc2VkIHRvIGFzc29jaWF0ZSB3cmFwIG1ldGhvZHMgd2l0aCB0aGVpciBiaXQgZmxhZ3MuICovdmFyIHdyYXBGbGFncz1bWydhcnknLFdSQVBfQVJZX0ZMQUddLFsnYmluZCcsV1JBUF9CSU5EX0ZMQUddLFsnYmluZEtleScsV1JBUF9CSU5EX0tFWV9GTEFHXSxbJ2N1cnJ5JyxXUkFQX0NVUlJZX0ZMQUddLFsnY3VycnlSaWdodCcsV1JBUF9DVVJSWV9SSUdIVF9GTEFHXSxbJ2ZsaXAnLFdSQVBfRkxJUF9GTEFHXSxbJ3BhcnRpYWwnLFdSQVBfUEFSVElBTF9GTEFHXSxbJ3BhcnRpYWxSaWdodCcsV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUddLFsncmVhcmcnLFdSQVBfUkVBUkdfRkxBR11dOy8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi92YXIgYXJnc1RhZz0nW29iamVjdCBBcmd1bWVudHNdJyxhcnJheVRhZz0nW29iamVjdCBBcnJheV0nLGFzeW5jVGFnPSdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxib29sVGFnPSdbb2JqZWN0IEJvb2xlYW5dJyxkYXRlVGFnPSdbb2JqZWN0IERhdGVdJyxkb21FeGNUYWc9J1tvYmplY3QgRE9NRXhjZXB0aW9uXScsZXJyb3JUYWc9J1tvYmplY3QgRXJyb3JdJyxmdW5jVGFnPSdbb2JqZWN0IEZ1bmN0aW9uXScsZ2VuVGFnPSdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsbWFwVGFnPSdbb2JqZWN0IE1hcF0nLG51bWJlclRhZz0nW29iamVjdCBOdW1iZXJdJyxudWxsVGFnPSdbb2JqZWN0IE51bGxdJyxvYmplY3RUYWc9J1tvYmplY3QgT2JqZWN0XScscHJvbWlzZVRhZz0nW29iamVjdCBQcm9taXNlXScscHJveHlUYWc9J1tvYmplY3QgUHJveHldJyxyZWdleHBUYWc9J1tvYmplY3QgUmVnRXhwXScsc2V0VGFnPSdbb2JqZWN0IFNldF0nLHN0cmluZ1RhZz0nW29iamVjdCBTdHJpbmddJyxzeW1ib2xUYWc9J1tvYmplY3QgU3ltYm9sXScsdW5kZWZpbmVkVGFnPSdbb2JqZWN0IFVuZGVmaW5lZF0nLHdlYWtNYXBUYWc9J1tvYmplY3QgV2Vha01hcF0nLHdlYWtTZXRUYWc9J1tvYmplY3QgV2Vha1NldF0nO3ZhciBhcnJheUJ1ZmZlclRhZz0nW29iamVjdCBBcnJheUJ1ZmZlcl0nLGRhdGFWaWV3VGFnPSdbb2JqZWN0IERhdGFWaWV3XScsZmxvYXQzMlRhZz0nW29iamVjdCBGbG9hdDMyQXJyYXldJyxmbG9hdDY0VGFnPSdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLGludDhUYWc9J1tvYmplY3QgSW50OEFycmF5XScsaW50MTZUYWc9J1tvYmplY3QgSW50MTZBcnJheV0nLGludDMyVGFnPSdbb2JqZWN0IEludDMyQXJyYXldJyx1aW50OFRhZz0nW29iamVjdCBVaW50OEFycmF5XScsdWludDhDbGFtcGVkVGFnPSdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsdWludDE2VGFnPSdbb2JqZWN0IFVpbnQxNkFycmF5XScsdWludDMyVGFnPSdbb2JqZWN0IFVpbnQzMkFycmF5XSc7LyoqIFVzZWQgdG8gbWF0Y2ggZW1wdHkgc3RyaW5nIGxpdGVyYWxzIGluIGNvbXBpbGVkIHRlbXBsYXRlIHNvdXJjZS4gKi92YXIgcmVFbXB0eVN0cmluZ0xlYWRpbmc9L1xcYl9fcCBcXCs9ICcnOy9nLHJlRW1wdHlTdHJpbmdNaWRkbGU9L1xcYihfX3AgXFwrPSkgJycgXFwrL2cscmVFbXB0eVN0cmluZ1RyYWlsaW5nPS8oX19lXFwoLio/XFwpfFxcYl9fdFxcKSkgXFwrXFxuJyc7L2c7LyoqIFVzZWQgdG8gbWF0Y2ggSFRNTCBlbnRpdGllcyBhbmQgSFRNTCBjaGFyYWN0ZXJzLiAqL3ZhciByZUVzY2FwZWRIdG1sPS8mKD86YW1wfGx0fGd0fHF1b3R8IzM5KTsvZyxyZVVuZXNjYXBlZEh0bWw9L1smPD5cIiddL2cscmVIYXNFc2NhcGVkSHRtbD1SZWdFeHAocmVFc2NhcGVkSHRtbC5zb3VyY2UpLHJlSGFzVW5lc2NhcGVkSHRtbD1SZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7LyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi92YXIgcmVFc2NhcGU9LzwlLShbXFxzXFxTXSs/KSU+L2cscmVFdmFsdWF0ZT0vPCUoW1xcc1xcU10rPyklPi9nLHJlSW50ZXJwb2xhdGU9LzwlPShbXFxzXFxTXSs/KSU+L2c7LyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL3ZhciByZUlzRGVlcFByb3A9L1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxyZUlzUGxhaW5Qcm9wPS9eXFx3KiQvLHJlUHJvcE5hbWU9L1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nOy8qKlxuICAgICAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAgICAgKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAgICAgKi92YXIgcmVSZWdFeHBDaGFyPS9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxyZUhhc1JlZ0V4cENoYXI9UmVnRXhwKHJlUmVnRXhwQ2hhci5zb3VyY2UpOy8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovdmFyIHJlVHJpbT0vXlxccyt8XFxzKyQvZyxyZVRyaW1TdGFydD0vXlxccysvLHJlVHJpbUVuZD0vXFxzKyQvOy8qKiBVc2VkIHRvIG1hdGNoIHdyYXAgZGV0YWlsIGNvbW1lbnRzLiAqL3ZhciByZVdyYXBDb21tZW50PS9cXHsoPzpcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoIC4rXFxdIFxcKlxcLyk/XFxuPy8scmVXcmFwRGV0YWlscz0vXFx7XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAoLispXFxdIFxcKi8scmVTcGxpdERldGFpbHM9Lyw/ICYgLzsvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi92YXIgcmVBc2NpaVdvcmQ9L1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nOy8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL3ZhciByZUVzY2FwZUNoYXI9L1xcXFwoXFxcXCk/L2c7LyoqXG4gICAgICogVXNlZCB0byBtYXRjaFxuICAgICAqIFtFUyB0ZW1wbGF0ZSBkZWxpbWl0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10ZW1wbGF0ZS1saXRlcmFsLWxleGljYWwtY29tcG9uZW50cykuXG4gICAgICovdmFyIHJlRXNUZW1wbGF0ZT0vXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7LyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovdmFyIHJlRmxhZ3M9L1xcdyokLzsvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL3ZhciByZUlzQmFkSGV4PS9eWy0rXTB4WzAtOWEtZl0rJC9pOy8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi92YXIgcmVJc0JpbmFyeT0vXjBiWzAxXSskL2k7LyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL3ZhciByZUlzSG9zdEN0b3I9L15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLzsvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi92YXIgcmVJc09jdGFsPS9eMG9bMC03XSskL2k7LyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL3ZhciByZUlzVWludD0vXig/OjB8WzEtOV1cXGQqKSQvOy8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL3ZhciByZUxhdGluPS9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nOy8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi92YXIgcmVOb01hdGNoPS8oJF4pLzsvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovdmFyIHJlVW5lc2NhcGVkU3RyaW5nPS9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZzsvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovdmFyIHJzQXN0cmFsUmFuZ2U9J1xcXFx1ZDgwMC1cXFxcdWRmZmYnLHJzQ29tYm9NYXJrc1JhbmdlPSdcXFxcdTAzMDAtXFxcXHUwMzZmJyxyZUNvbWJvSGFsZk1hcmtzUmFuZ2U9J1xcXFx1ZmUyMC1cXFxcdWZlMmYnLHJzQ29tYm9TeW1ib2xzUmFuZ2U9J1xcXFx1MjBkMC1cXFxcdTIwZmYnLHJzQ29tYm9SYW5nZT1yc0NvbWJvTWFya3NSYW5nZStyZUNvbWJvSGFsZk1hcmtzUmFuZ2UrcnNDb21ib1N5bWJvbHNSYW5nZSxyc0RpbmdiYXRSYW5nZT0nXFxcXHUyNzAwLVxcXFx1MjdiZicscnNMb3dlclJhbmdlPSdhLXpcXFxceGRmLVxcXFx4ZjZcXFxceGY4LVxcXFx4ZmYnLHJzTWF0aE9wUmFuZ2U9J1xcXFx4YWNcXFxceGIxXFxcXHhkN1xcXFx4ZjcnLHJzTm9uQ2hhclJhbmdlPSdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLHJzUHVuY3R1YXRpb25SYW5nZT0nXFxcXHUyMDAwLVxcXFx1MjA2ZicscnNTcGFjZVJhbmdlPScgXFxcXHRcXFxceDBiXFxcXGZcXFxceGEwXFxcXHVmZWZmXFxcXG5cXFxcclxcXFx1MjAyOFxcXFx1MjAyOVxcXFx1MTY4MFxcXFx1MTgwZVxcXFx1MjAwMFxcXFx1MjAwMVxcXFx1MjAwMlxcXFx1MjAwM1xcXFx1MjAwNFxcXFx1MjAwNVxcXFx1MjAwNlxcXFx1MjAwN1xcXFx1MjAwOFxcXFx1MjAwOVxcXFx1MjAwYVxcXFx1MjAyZlxcXFx1MjA1ZlxcXFx1MzAwMCcscnNVcHBlclJhbmdlPSdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLHJzVmFyUmFuZ2U9J1xcXFx1ZmUwZVxcXFx1ZmUwZicscnNCcmVha1JhbmdlPXJzTWF0aE9wUmFuZ2UrcnNOb25DaGFyUmFuZ2UrcnNQdW5jdHVhdGlvblJhbmdlK3JzU3BhY2VSYW5nZTsvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovdmFyIHJzQXBvcz0nW1xcJ1xcdTIwMTldJyxyc0FzdHJhbD0nWycrcnNBc3RyYWxSYW5nZSsnXScscnNCcmVhaz0nWycrcnNCcmVha1JhbmdlKyddJyxyc0NvbWJvPSdbJytyc0NvbWJvUmFuZ2UrJ10nLHJzRGlnaXRzPSdcXFxcZCsnLHJzRGluZ2JhdD0nWycrcnNEaW5nYmF0UmFuZ2UrJ10nLHJzTG93ZXI9J1snK3JzTG93ZXJSYW5nZSsnXScscnNNaXNjPSdbXicrcnNBc3RyYWxSYW5nZStyc0JyZWFrUmFuZ2UrcnNEaWdpdHMrcnNEaW5nYmF0UmFuZ2UrcnNMb3dlclJhbmdlK3JzVXBwZXJSYW5nZSsnXScscnNGaXR6PSdcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl0nLHJzTW9kaWZpZXI9Jyg/OicrcnNDb21ibysnfCcrcnNGaXR6KycpJyxyc05vbkFzdHJhbD0nW14nK3JzQXN0cmFsUmFuZ2UrJ10nLHJzUmVnaW9uYWw9Jyg/OlxcXFx1ZDgzY1tcXFxcdWRkZTYtXFxcXHVkZGZmXSl7Mn0nLHJzU3VyclBhaXI9J1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScscnNVcHBlcj0nWycrcnNVcHBlclJhbmdlKyddJyxyc1pXSj0nXFxcXHUyMDBkJzsvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi92YXIgcnNNaXNjTG93ZXI9Jyg/OicrcnNMb3dlcisnfCcrcnNNaXNjKycpJyxyc01pc2NVcHBlcj0nKD86Jytyc1VwcGVyKyd8Jytyc01pc2MrJyknLHJzT3B0Q29udHJMb3dlcj0nKD86Jytyc0Fwb3MrJyg/OmR8bGx8bXxyZXxzfHR8dmUpKT8nLHJzT3B0Q29udHJVcHBlcj0nKD86Jytyc0Fwb3MrJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLHJlT3B0TW9kPXJzTW9kaWZpZXIrJz8nLHJzT3B0VmFyPSdbJytyc1ZhclJhbmdlKyddPycscnNPcHRKb2luPScoPzonK3JzWldKKycoPzonK1tyc05vbkFzdHJhbCxyc1JlZ2lvbmFsLHJzU3VyclBhaXJdLmpvaW4oJ3wnKSsnKScrcnNPcHRWYXIrcmVPcHRNb2QrJykqJyxyc09yZExvd2VyPSdcXFxcZCooPzoxc3R8Mm5kfDNyZHwoPyFbMTIzXSlcXFxcZHRoKSg/PVxcXFxifFtBLVpfXSknLHJzT3JkVXBwZXI9J1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScscnNTZXE9cnNPcHRWYXIrcmVPcHRNb2QrcnNPcHRKb2luLHJzRW1vamk9Jyg/OicrW3JzRGluZ2JhdCxyc1JlZ2lvbmFsLHJzU3VyclBhaXJdLmpvaW4oJ3wnKSsnKScrcnNTZXEscnNTeW1ib2w9Jyg/OicrW3JzTm9uQXN0cmFsK3JzQ29tYm8rJz8nLHJzQ29tYm8scnNSZWdpb25hbCxyc1N1cnJQYWlyLHJzQXN0cmFsXS5qb2luKCd8JykrJyknOy8qKiBVc2VkIHRvIG1hdGNoIGFwb3N0cm9waGVzLiAqL3ZhciByZUFwb3M9UmVnRXhwKHJzQXBvcywnZycpOy8qKlxuICAgICAqIFVzZWQgdG8gbWF0Y2ggW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzKSBhbmRcbiAgICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGZvciBzeW1ib2xzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHMpLlxuICAgICAqL3ZhciByZUNvbWJvTWFyaz1SZWdFeHAocnNDb21ibywnZycpOy8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovdmFyIHJlVW5pY29kZT1SZWdFeHAocnNGaXR6KycoPz0nK3JzRml0eisnKXwnK3JzU3ltYm9sK3JzU2VxLCdnJyk7LyoqIFVzZWQgdG8gbWF0Y2ggY29tcGxleCBvciBjb21wb3VuZCB3b3Jkcy4gKi92YXIgcmVVbmljb2RlV29yZD1SZWdFeHAoW3JzVXBwZXIrJz8nK3JzTG93ZXIrJysnK3JzT3B0Q29udHJMb3dlcisnKD89JytbcnNCcmVhayxyc1VwcGVyLCckJ10uam9pbignfCcpKycpJyxyc01pc2NVcHBlcisnKycrcnNPcHRDb250clVwcGVyKycoPz0nK1tyc0JyZWFrLHJzVXBwZXIrcnNNaXNjTG93ZXIsJyQnXS5qb2luKCd8JykrJyknLHJzVXBwZXIrJz8nK3JzTWlzY0xvd2VyKycrJytyc09wdENvbnRyTG93ZXIscnNVcHBlcisnKycrcnNPcHRDb250clVwcGVyLHJzT3JkVXBwZXIscnNPcmRMb3dlcixyc0RpZ2l0cyxyc0Vtb2ppXS5qb2luKCd8JyksJ2cnKTsvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi92YXIgcmVIYXNVbmljb2RlPVJlZ0V4cCgnWycrcnNaV0orcnNBc3RyYWxSYW5nZStyc0NvbWJvUmFuZ2UrcnNWYXJSYW5nZSsnXScpOy8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHRoYXQgbmVlZCBhIG1vcmUgcm9idXN0IHJlZ2V4cCB0byBtYXRjaCB3b3Jkcy4gKi92YXIgcmVIYXNVbmljb2RlV29yZD0vW2Etel1bQS1aXXxbQS1aXXsyLH1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS87LyoqIFVzZWQgdG8gYXNzaWduIGRlZmF1bHQgYGNvbnRleHRgIG9iamVjdCBwcm9wZXJ0aWVzLiAqL3ZhciBjb250ZXh0UHJvcHM9WydBcnJheScsJ0J1ZmZlcicsJ0RhdGFWaWV3JywnRGF0ZScsJ0Vycm9yJywnRmxvYXQzMkFycmF5JywnRmxvYXQ2NEFycmF5JywnRnVuY3Rpb24nLCdJbnQ4QXJyYXknLCdJbnQxNkFycmF5JywnSW50MzJBcnJheScsJ01hcCcsJ01hdGgnLCdPYmplY3QnLCdQcm9taXNlJywnUmVnRXhwJywnU2V0JywnU3RyaW5nJywnU3ltYm9sJywnVHlwZUVycm9yJywnVWludDhBcnJheScsJ1VpbnQ4Q2xhbXBlZEFycmF5JywnVWludDE2QXJyYXknLCdVaW50MzJBcnJheScsJ1dlYWtNYXAnLCdfJywnY2xlYXJUaW1lb3V0JywnaXNGaW5pdGUnLCdwYXJzZUludCcsJ3NldFRpbWVvdXQnXTsvKiogVXNlZCB0byBtYWtlIHRlbXBsYXRlIHNvdXJjZVVSTHMgZWFzaWVyIHRvIGlkZW50aWZ5LiAqL3ZhciB0ZW1wbGF0ZUNvdW50ZXI9LTE7LyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL3ZhciB0eXBlZEFycmF5VGFncz17fTt0eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXT10eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXT10eXBlZEFycmF5VGFnc1tpbnQ4VGFnXT10eXBlZEFycmF5VGFnc1tpbnQxNlRhZ109dHlwZWRBcnJheVRhZ3NbaW50MzJUYWddPXR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXT10eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddPXR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ109dHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXT10cnVlO3R5cGVkQXJyYXlUYWdzW2FyZ3NUYWddPXR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXT10eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ109dHlwZWRBcnJheVRhZ3NbYm9vbFRhZ109dHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddPXR5cGVkQXJyYXlUYWdzW2RhdGVUYWddPXR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXT10eXBlZEFycmF5VGFnc1tmdW5jVGFnXT10eXBlZEFycmF5VGFnc1ttYXBUYWddPXR5cGVkQXJyYXlUYWdzW251bWJlclRhZ109dHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXT10eXBlZEFycmF5VGFnc1tyZWdleHBUYWddPXR5cGVkQXJyYXlUYWdzW3NldFRhZ109dHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXT10eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXT1mYWxzZTsvKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBzdXBwb3J0ZWQgYnkgYF8uY2xvbmVgLiAqL3ZhciBjbG9uZWFibGVUYWdzPXt9O2Nsb25lYWJsZVRhZ3NbYXJnc1RhZ109Y2xvbmVhYmxlVGFnc1thcnJheVRhZ109Y2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ109Y2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ109Y2xvbmVhYmxlVGFnc1tib29sVGFnXT1jbG9uZWFibGVUYWdzW2RhdGVUYWddPWNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ109Y2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXT1jbG9uZWFibGVUYWdzW2ludDhUYWddPWNsb25lYWJsZVRhZ3NbaW50MTZUYWddPWNsb25lYWJsZVRhZ3NbaW50MzJUYWddPWNsb25lYWJsZVRhZ3NbbWFwVGFnXT1jbG9uZWFibGVUYWdzW251bWJlclRhZ109Y2xvbmVhYmxlVGFnc1tvYmplY3RUYWddPWNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXT1jbG9uZWFibGVUYWdzW3NldFRhZ109Y2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddPWNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXT1jbG9uZWFibGVUYWdzW3VpbnQ4VGFnXT1jbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ109Y2xvbmVhYmxlVGFnc1t1aW50MTZUYWddPWNsb25lYWJsZVRhZ3NbdWludDMyVGFnXT10cnVlO2Nsb25lYWJsZVRhZ3NbZXJyb3JUYWddPWNsb25lYWJsZVRhZ3NbZnVuY1RhZ109Y2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXT1mYWxzZTsvKiogVXNlZCB0byBtYXAgTGF0aW4gVW5pY29kZSBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuICovdmFyIGRlYnVycmVkTGV0dGVycz17Ly8gTGF0aW4tMSBTdXBwbGVtZW50IGJsb2NrLlxuw4A6J0EnLMOBOidBJyzDgjonQScsw4M6J0EnLMOEOidBJyzDhTonQScsw6A6J2EnLMOhOidhJyzDojonYScsw6M6J2EnLMOkOidhJyzDpTonYScsw4c6J0MnLMOnOidjJyzDkDonRCcsw7A6J2QnLMOIOidFJyzDiTonRScsw4o6J0UnLMOLOidFJyzDqDonZScsw6k6J2UnLMOqOidlJyzDqzonZScsw4w6J0knLMONOidJJyzDjjonSScsw486J0knLMOsOidpJyzDrTonaScsw646J2knLMOvOidpJyzDkTonTicsw7E6J24nLMOSOidPJyzDkzonTycsw5Q6J08nLMOVOidPJyzDljonTycsw5g6J08nLMOyOidvJyzDszonbycsw7Q6J28nLMO1OidvJyzDtjonbycsw7g6J28nLMOZOidVJyzDmjonVScsw5s6J1UnLMOcOidVJyzDuTondScsw7o6J3UnLMO7Oid1JyzDvDondScsw506J1knLMO9Oid5JyzDvzoneScsw4Y6J0FlJyzDpjonYWUnLMOeOidUaCcsw746J3RoJyzDnzonc3MnLC8vIExhdGluIEV4dGVuZGVkLUEgYmxvY2suXG7EgDonQScsxII6J0EnLMSEOidBJyzEgTonYScsxIM6J2EnLMSFOidhJyzEhjonQycsxIg6J0MnLMSKOidDJyzEjDonQycsxIc6J2MnLMSJOidjJyzEizonYycsxI06J2MnLMSOOidEJyzEkDonRCcsxI86J2QnLMSROidkJyzEkjonRScsxJQ6J0UnLMSWOidFJyzEmDonRScsxJo6J0UnLMSTOidlJyzElTonZScsxJc6J2UnLMSZOidlJyzEmzonZScsxJw6J0cnLMSeOidHJyzEoDonRycsxKI6J0cnLMSdOidnJyzEnzonZycsxKE6J2cnLMSjOidnJyzEpDonSCcsxKY6J0gnLMSlOidoJyzEpzonaCcsxKg6J0knLMSqOidJJyzErDonSScsxK46J0knLMSwOidJJyzEqTonaScsxKs6J2knLMStOidpJyzErzonaScsxLE6J2knLMS0OidKJyzEtTonaicsxLY6J0snLMS3OidrJyzEuDonaycsxLk6J0wnLMS7OidMJyzEvTonTCcsxL86J0wnLMWBOidMJyzEujonbCcsxLw6J2wnLMS+OidsJyzFgDonbCcsxYI6J2wnLMWDOidOJyzFhTonTicsxYc6J04nLMWKOidOJyzFhDonbicsxYY6J24nLMWIOiduJyzFizonbicsxYw6J08nLMWOOidPJyzFkDonTycsxY06J28nLMWPOidvJyzFkTonbycsxZQ6J1InLMWWOidSJyzFmDonUicsxZU6J3InLMWXOidyJyzFmToncicsxZo6J1MnLMWcOidTJyzFnjonUycsxaA6J1MnLMWbOidzJyzFnToncycsxZ86J3MnLMWhOidzJyzFojonVCcsxaQ6J1QnLMWmOidUJyzFozondCcsxaU6J3QnLMWnOid0JyzFqDonVScsxao6J1UnLMWsOidVJyzFrjonVScsxbA6J1UnLMWyOidVJyzFqTondScsxas6J3UnLMWtOid1JyzFrzondScsxbE6J3UnLMWzOid1JyzFtDonVycsxbU6J3cnLMW2OidZJyzFtzoneScsxbg6J1knLMW5OidaJyzFuzonWicsxb06J1onLMW6Oid6JyzFvDoneicsxb46J3onLMSyOidJSicsxLM6J2lqJyzFkjonT2UnLMWTOidvZScsxYk6XCInblwiLMW/OidzJ307LyoqIFVzZWQgdG8gbWFwIGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy4gKi92YXIgaHRtbEVzY2FwZXM9eycmJzonJmFtcDsnLCc8JzonJmx0OycsJz4nOicmZ3Q7JywnXCInOicmcXVvdDsnLFwiJ1wiOicmIzM5Oyd9Oy8qKiBVc2VkIHRvIG1hcCBIVE1MIGVudGl0aWVzIHRvIGNoYXJhY3RlcnMuICovdmFyIGh0bWxVbmVzY2FwZXM9eycmYW1wOyc6JyYnLCcmbHQ7JzonPCcsJyZndDsnOic+JywnJnF1b3Q7JzonXCInLCcmIzM5Oyc6XCInXCJ9Oy8qKiBVc2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLiAqL3ZhciBzdHJpbmdFc2NhcGVzPXsnXFxcXCc6J1xcXFwnLFwiJ1wiOlwiJ1wiLCdcXG4nOiduJywnXFxyJzoncicsJ1xcdTIwMjgnOid1MjAyOCcsJ1xcdTIwMjknOid1MjAyOSd9Oy8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovdmFyIGZyZWVQYXJzZUZsb2F0PXBhcnNlRmxvYXQsZnJlZVBhcnNlSW50PXBhcnNlSW50Oy8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovdmFyIGZyZWVHbG9iYWw9KHR5cGVvZiBnbG9iYWw9PT0ndW5kZWZpbmVkJz8ndW5kZWZpbmVkJzpfdHlwZW9mKGdsb2JhbCkpPT09J29iamVjdCcmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsOy8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovdmFyIGZyZWVTZWxmPSh0eXBlb2Ygc2VsZj09PSd1bmRlZmluZWQnPyd1bmRlZmluZWQnOl90eXBlb2Yoc2VsZikpPT09J29iamVjdCcmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmOy8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL3ZhciByb290PWZyZWVHbG9iYWx8fGZyZWVTZWxmfHxGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpOy8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovdmFyIGZyZWVFeHBvcnRzPSh0eXBlb2YgZXhwb3J0cz09PSd1bmRlZmluZWQnPyd1bmRlZmluZWQnOl90eXBlb2YoZXhwb3J0cykpPT09J29iamVjdCcmJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzOy8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi92YXIgZnJlZU1vZHVsZT1mcmVlRXhwb3J0cyYmKHR5cGVvZiBtb2R1bGU9PT0ndW5kZWZpbmVkJz8ndW5kZWZpbmVkJzpfdHlwZW9mKG1vZHVsZSkpPT09J29iamVjdCcmJm1vZHVsZSYmIW1vZHVsZS5ub2RlVHlwZSYmbW9kdWxlOy8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovdmFyIG1vZHVsZUV4cG9ydHM9ZnJlZU1vZHVsZSYmZnJlZU1vZHVsZS5leHBvcnRzPT09ZnJlZUV4cG9ydHM7LyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovdmFyIGZyZWVQcm9jZXNzPW1vZHVsZUV4cG9ydHMmJmZyZWVHbG9iYWwucHJvY2VzczsvKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi92YXIgbm9kZVV0aWw9ZnVuY3Rpb24oKXt0cnl7Ly8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG52YXIgdHlwZXM9ZnJlZU1vZHVsZSYmZnJlZU1vZHVsZS5yZXF1aXJlJiZmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztpZih0eXBlcyl7cmV0dXJuIHR5cGVzO30vLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxucmV0dXJuIGZyZWVQcm9jZXNzJiZmcmVlUHJvY2Vzcy5iaW5kaW5nJiZmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7fWNhdGNoKGUpe319KCk7LyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi92YXIgbm9kZUlzQXJyYXlCdWZmZXI9bm9kZVV0aWwmJm5vZGVVdGlsLmlzQXJyYXlCdWZmZXIsbm9kZUlzRGF0ZT1ub2RlVXRpbCYmbm9kZVV0aWwuaXNEYXRlLG5vZGVJc01hcD1ub2RlVXRpbCYmbm9kZVV0aWwuaXNNYXAsbm9kZUlzUmVnRXhwPW5vZGVVdGlsJiZub2RlVXRpbC5pc1JlZ0V4cCxub2RlSXNTZXQ9bm9kZVV0aWwmJm5vZGVVdGlsLmlzU2V0LG5vZGVJc1R5cGVkQXJyYXk9bm9kZVV0aWwmJm5vZGVVdGlsLmlzVHlwZWRBcnJheTsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqXG4gICAgICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICAgICAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICAgICAqL2Z1bmN0aW9uIGFwcGx5KGZ1bmMsdGhpc0FyZyxhcmdzKXtzd2l0Y2goYXJncy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO2Nhc2UgMTpyZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsYXJnc1swXSk7Y2FzZSAyOnJldHVybiBmdW5jLmNhbGwodGhpc0FyZyxhcmdzWzBdLGFyZ3NbMV0pO2Nhc2UgMzpyZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsYXJnc1swXSxhcmdzWzFdLGFyZ3NbMl0pO31yZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLGFyZ3MpO30vKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VBZ2dyZWdhdG9yYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICAgKi9mdW5jdGlvbiBhcnJheUFnZ3JlZ2F0b3IoYXJyYXksc2V0dGVyLGl0ZXJhdGVlLGFjY3VtdWxhdG9yKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgdmFsdWU9YXJyYXlbaW5kZXhdO3NldHRlcihhY2N1bXVsYXRvcix2YWx1ZSxpdGVyYXRlZSh2YWx1ZSksYXJyYXkpO31yZXR1cm4gYWNjdW11bGF0b3I7fS8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9mdW5jdGlvbiBhcnJheUVhY2goYXJyYXksaXRlcmF0ZWUpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7d2hpbGUoKytpbmRleDxsZW5ndGgpe2lmKGl0ZXJhdGVlKGFycmF5W2luZGV4XSxpbmRleCxhcnJheSk9PT1mYWxzZSl7YnJlYWs7fX1yZXR1cm4gYXJyYXk7fS8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL2Z1bmN0aW9uIGFycmF5RWFjaFJpZ2h0KGFycmF5LGl0ZXJhdGVlKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3doaWxlKGxlbmd0aC0tKXtpZihpdGVyYXRlZShhcnJheVtsZW5ndGhdLGxlbmd0aCxhcnJheSk9PT1mYWxzZSl7YnJlYWs7fX1yZXR1cm4gYXJyYXk7fS8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5ldmVyeWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovZnVuY3Rpb24gYXJyYXlFdmVyeShhcnJheSxwcmVkaWNhdGUpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7d2hpbGUoKytpbmRleDxsZW5ndGgpe2lmKCFwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLGluZGV4LGFycmF5KSl7cmV0dXJuIGZhbHNlO319cmV0dXJuIHRydWU7fS8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKi9mdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSxwcmVkaWNhdGUpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGgscmVzSW5kZXg9MCxyZXN1bHQ9W107d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF07aWYocHJlZGljYXRlKHZhbHVlLGluZGV4LGFycmF5KSl7cmVzdWx0W3Jlc0luZGV4KytdPXZhbHVlO319cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICAgKiBzcGVjaWZ5aW5nIGFuIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL2Z1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksdmFsdWUpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7cmV0dXJuISFsZW5ndGgmJmJhc2VJbmRleE9mKGFycmF5LHZhbHVlLDApPi0xO30vKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9mdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSx2YWx1ZSxjb21wYXJhdG9yKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXtpZihjb21wYXJhdG9yKHZhbHVlLGFycmF5W2luZGV4XSkpe3JldHVybiB0cnVlO319cmV0dXJuIGZhbHNlO30vKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICAgKiBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAgICovZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksaXRlcmF0ZWUpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGgscmVzdWx0PUFycmF5KGxlbmd0aCk7d2hpbGUoKytpbmRleDxsZW5ndGgpe3Jlc3VsdFtpbmRleF09aXRlcmF0ZWUoYXJyYXlbaW5kZXhdLGluZGV4LGFycmF5KTt9cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LHZhbHVlcyl7dmFyIGluZGV4PS0xLGxlbmd0aD12YWx1ZXMubGVuZ3RoLG9mZnNldD1hcnJheS5sZW5ndGg7d2hpbGUoKytpbmRleDxsZW5ndGgpe2FycmF5W29mZnNldCtpbmRleF09dmFsdWVzW2luZGV4XTt9cmV0dXJuIGFycmF5O30vKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAgICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqL2Z1bmN0aW9uIGFycmF5UmVkdWNlKGFycmF5LGl0ZXJhdGVlLGFjY3VtdWxhdG9yLGluaXRBY2N1bSl7dmFyIGluZGV4PS0xLGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtpZihpbml0QWNjdW0mJmxlbmd0aCl7YWNjdW11bGF0b3I9YXJyYXlbKytpbmRleF07fXdoaWxlKCsraW5kZXg8bGVuZ3RoKXthY2N1bXVsYXRvcj1pdGVyYXRlZShhY2N1bXVsYXRvcixhcnJheVtpbmRleF0saW5kZXgsYXJyYXkpO31yZXR1cm4gYWNjdW11bGF0b3I7fS8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VSaWdodGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAgICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqL2Z1bmN0aW9uIGFycmF5UmVkdWNlUmlnaHQoYXJyYXksaXRlcmF0ZWUsYWNjdW11bGF0b3IsaW5pdEFjY3VtKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKGluaXRBY2N1bSYmbGVuZ3RoKXthY2N1bXVsYXRvcj1hcnJheVstLWxlbmd0aF07fXdoaWxlKGxlbmd0aC0tKXthY2N1bXVsYXRvcj1pdGVyYXRlZShhY2N1bXVsYXRvcixhcnJheVtsZW5ndGhdLGxlbmd0aCxhcnJheSk7fXJldHVybiBhY2N1bXVsYXRvcjt9LyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgICAqIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9mdW5jdGlvbiBhcnJheVNvbWUoYXJyYXkscHJlZGljYXRlKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXtpZihwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLGluZGV4LGFycmF5KSl7cmV0dXJuIHRydWU7fX1yZXR1cm4gZmFsc2U7fS8qKlxuICAgICAqIEdldHMgdGhlIHNpemUgb2YgYW4gQVNDSUkgYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgICAqL3ZhciBhc2NpaVNpemU9YmFzZVByb3BlcnR5KCdsZW5ndGgnKTsvKipcbiAgICAgKiBDb252ZXJ0cyBhbiBBU0NJSSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAgICovZnVuY3Rpb24gYXNjaWlUb0FycmF5KHN0cmluZyl7cmV0dXJuIHN0cmluZy5zcGxpdCgnJyk7fS8qKlxuICAgICAqIFNwbGl0cyBhbiBBU0NJSSBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgICAqL2Z1bmN0aW9uIGFzY2lpV29yZHMoc3RyaW5nKXtyZXR1cm4gc3RyaW5nLm1hdGNoKHJlQXNjaWlXb3JkKXx8W107fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5maW5kS2V5YCBhbmQgYF8uZmluZExhc3RLZXlgLFxuICAgICAqIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmBcbiAgICAgKiB1c2luZyBgZWFjaEZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmb3VuZCBlbGVtZW50IG9yIGl0cyBrZXksIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICovZnVuY3Rpb24gYmFzZUZpbmRLZXkoY29sbGVjdGlvbixwcmVkaWNhdGUsZWFjaEZ1bmMpe3ZhciByZXN1bHQ7ZWFjaEZ1bmMoY29sbGVjdGlvbixmdW5jdGlvbih2YWx1ZSxrZXksY29sbGVjdGlvbil7aWYocHJlZGljYXRlKHZhbHVlLGtleSxjb2xsZWN0aW9uKSl7cmVzdWx0PWtleTtyZXR1cm4gZmFsc2U7fX0pO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAgICAgKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqL2Z1bmN0aW9uIGJhc2VGaW5kSW5kZXgoYXJyYXkscHJlZGljYXRlLGZyb21JbmRleCxmcm9tUmlnaHQpe3ZhciBsZW5ndGg9YXJyYXkubGVuZ3RoLGluZGV4PWZyb21JbmRleCsoZnJvbVJpZ2h0PzE6LTEpO3doaWxlKGZyb21SaWdodD9pbmRleC0tOisraW5kZXg8bGVuZ3RoKXtpZihwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLGluZGV4LGFycmF5KSl7cmV0dXJuIGluZGV4O319cmV0dXJuLTE7fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgYGZyb21JbmRleGAgYm91bmRzIGNoZWNrcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqL2Z1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LHZhbHVlLGZyb21JbmRleCl7cmV0dXJuIHZhbHVlPT09dmFsdWU/c3RyaWN0SW5kZXhPZihhcnJheSx2YWx1ZSxmcm9tSW5kZXgpOmJhc2VGaW5kSW5kZXgoYXJyYXksYmFzZUlzTmFOLGZyb21JbmRleCk7fS8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqL2Z1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSx2YWx1ZSxmcm9tSW5kZXgsY29tcGFyYXRvcil7dmFyIGluZGV4PWZyb21JbmRleC0xLGxlbmd0aD1hcnJheS5sZW5ndGg7d2hpbGUoKytpbmRleDxsZW5ndGgpe2lmKGNvbXBhcmF0b3IoYXJyYXlbaW5kZXhdLHZhbHVlKSl7cmV0dXJuIGluZGV4O319cmV0dXJuLTE7fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL2Z1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSl7cmV0dXJuIHZhbHVlIT09dmFsdWU7fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lYW5gIGFuZCBgXy5tZWFuQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKi9mdW5jdGlvbiBiYXNlTWVhbihhcnJheSxpdGVyYXRlZSl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtyZXR1cm4gbGVuZ3RoP2Jhc2VTdW0oYXJyYXksaXRlcmF0ZWUpL2xlbmd0aDpOQU47fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqL2Z1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpe3JldHVybiBmdW5jdGlvbihvYmplY3Qpe3JldHVybiBvYmplY3Q9PW51bGw/dW5kZWZpbmVkOm9iamVjdFtrZXldO307fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5T2ZgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqL2Z1bmN0aW9uIGJhc2VQcm9wZXJ0eU9mKG9iamVjdCl7cmV0dXJuIGZ1bmN0aW9uKGtleSl7cmV0dXJuIG9iamVjdD09bnVsbD91bmRlZmluZWQ6b2JqZWN0W2tleV07fTt9LyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAgICAgKiAgYGNvbGxlY3Rpb25gIGFzIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKi9mdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24saXRlcmF0ZWUsYWNjdW11bGF0b3IsaW5pdEFjY3VtLGVhY2hGdW5jKXtlYWNoRnVuYyhjb2xsZWN0aW9uLGZ1bmN0aW9uKHZhbHVlLGluZGV4LGNvbGxlY3Rpb24pe2FjY3VtdWxhdG9yPWluaXRBY2N1bT8oaW5pdEFjY3VtPWZhbHNlLHZhbHVlKTppdGVyYXRlZShhY2N1bXVsYXRvcix2YWx1ZSxpbmRleCxjb2xsZWN0aW9uKTt9KTtyZXR1cm4gYWNjdW11bGF0b3I7fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAgICAgKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gICAgICogdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc29ydC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSxjb21wYXJlcil7dmFyIGxlbmd0aD1hcnJheS5sZW5ndGg7YXJyYXkuc29ydChjb21wYXJlcik7d2hpbGUobGVuZ3RoLS0pe2FycmF5W2xlbmd0aF09YXJyYXlbbGVuZ3RoXS52YWx1ZTt9cmV0dXJuIGFycmF5O30vKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zdW1gIGFuZCBgXy5zdW1CeWAgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICovZnVuY3Rpb24gYmFzZVN1bShhcnJheSxpdGVyYXRlZSl7dmFyIHJlc3VsdCxpbmRleD0tMSxsZW5ndGg9YXJyYXkubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgY3VycmVudD1pdGVyYXRlZShhcnJheVtpbmRleF0pO2lmKGN1cnJlbnQhPT11bmRlZmluZWQpe3Jlc3VsdD1yZXN1bHQ9PT11bmRlZmluZWQ/Y3VycmVudDpyZXN1bHQrY3VycmVudDt9fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAgICAgKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKi9mdW5jdGlvbiBiYXNlVGltZXMobixpdGVyYXRlZSl7dmFyIGluZGV4PS0xLHJlc3VsdD1BcnJheShuKTt3aGlsZSgrK2luZGV4PG4pe3Jlc3VsdFtpbmRleF09aXRlcmF0ZWUoaW5kZXgpO31yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1BhaXJzYCBhbmQgYF8udG9QYWlyc0luYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5XG4gICAgICogb2Yga2V5LXZhbHVlIHBhaXJzIGZvciBgb2JqZWN0YCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lcyBvZiBgcHJvcHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKi9mdW5jdGlvbiBiYXNlVG9QYWlycyhvYmplY3QscHJvcHMpe3JldHVybiBhcnJheU1hcChwcm9wcyxmdW5jdGlvbihrZXkpe3JldHVybltrZXksb2JqZWN0W2tleV1dO30pO30vKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAgICovZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpe3JldHVybiBmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGZ1bmModmFsdWUpO307fS8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gICAgICogYXJyYXkgb2YgYG9iamVjdGAgcHJvcGVydHkgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzXG4gICAgICogb2YgYHByb3BzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICovZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QscHJvcHMpe3JldHVybiBhcnJheU1hcChwcm9wcyxmdW5jdGlvbihrZXkpe3JldHVybiBvYmplY3Rba2V5XTt9KTt9LyoqXG4gICAgICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9mdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSxrZXkpe3JldHVybiBjYWNoZS5oYXMoa2V5KTt9LyoqXG4gICAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbVN0YXJ0YCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcgc3ltYm9sXG4gICAgICogdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoYXJhY3RlciBzeW1ib2xzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzdHJTeW1ib2xzIFRoZSBzdHJpbmcgc3ltYm9scyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGNoclN5bWJvbHMgVGhlIGNoYXJhY3RlciBzeW1ib2xzIHRvIGZpbmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgICAqL2Z1bmN0aW9uIGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLGNoclN5bWJvbHMpe3ZhciBpbmRleD0tMSxsZW5ndGg9c3RyU3ltYm9scy5sZW5ndGg7d2hpbGUoKytpbmRleDxsZW5ndGgmJmJhc2VJbmRleE9mKGNoclN5bWJvbHMsc3RyU3ltYm9sc1tpbmRleF0sMCk+LTEpe31yZXR1cm4gaW5kZXg7fS8qKlxuICAgICAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgc3RyaW5nIHN5bWJvbFxuICAgICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBjaHJTeW1ib2xzIFRoZSBjaGFyYWN0ZXIgc3ltYm9scyB0byBmaW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgICAqL2Z1bmN0aW9uIGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scyxjaHJTeW1ib2xzKXt2YXIgaW5kZXg9c3RyU3ltYm9scy5sZW5ndGg7d2hpbGUoaW5kZXgtLSYmYmFzZUluZGV4T2YoY2hyU3ltYm9scyxzdHJTeW1ib2xzW2luZGV4XSwwKT4tMSl7fXJldHVybiBpbmRleDt9LyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIGBwbGFjZWhvbGRlcmAgb2NjdXJyZW5jZXMgaW4gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciBjb3VudC5cbiAgICAgKi9mdW5jdGlvbiBjb3VudEhvbGRlcnMoYXJyYXkscGxhY2Vob2xkZXIpe3ZhciBsZW5ndGg9YXJyYXkubGVuZ3RoLHJlc3VsdD0wO3doaWxlKGxlbmd0aC0tKXtpZihhcnJheVtsZW5ndGhdPT09cGxhY2Vob2xkZXIpeysrcmVzdWx0O319cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICogVXNlZCBieSBgXy5kZWJ1cnJgIHRvIGNvbnZlcnQgTGF0aW4tMSBTdXBwbGVtZW50IGFuZCBMYXRpbiBFeHRlbmRlZC1BXG4gICAgICogbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGV0dGVyIFRoZSBtYXRjaGVkIGxldHRlciB0byBkZWJ1cnIuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgbGV0dGVyLlxuICAgICAqL3ZhciBkZWJ1cnJMZXR0ZXI9YmFzZVByb3BlcnR5T2YoZGVidXJyZWRMZXR0ZXJzKTsvKipcbiAgICAgKiBVc2VkIGJ5IGBfLmVzY2FwZWAgdG8gY29udmVydCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICAgKi92YXIgZXNjYXBlSHRtbENoYXI9YmFzZVByb3BlcnR5T2YoaHRtbEVzY2FwZXMpOy8qKlxuICAgICAqIFVzZWQgYnkgYF8udGVtcGxhdGVgIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAgICovZnVuY3Rpb24gZXNjYXBlU3RyaW5nQ2hhcihjaHIpe3JldHVybidcXFxcJytzdHJpbmdFc2NhcGVzW2Nocl07fS8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAgICovZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LGtleSl7cmV0dXJuIG9iamVjdD09bnVsbD91bmRlZmluZWQ6b2JqZWN0W2tleV07fS8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL2Z1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKXtyZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTt9LyoqXG4gICAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIGEgd29yZCBjb21wb3NlZCBvZiBVbmljb2RlIHN5bWJvbHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHdvcmQgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9mdW5jdGlvbiBoYXNVbmljb2RlV29yZChzdHJpbmcpe3JldHVybiByZUhhc1VuaWNvZGVXb3JkLnRlc3Qoc3RyaW5nKTt9LyoqXG4gICAgICogQ29udmVydHMgYGl0ZXJhdG9yYCB0byBhbiBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGl0ZXJhdG9yIFRoZSBpdGVyYXRvciB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgICAqL2Z1bmN0aW9uIGl0ZXJhdG9yVG9BcnJheShpdGVyYXRvcil7dmFyIGRhdGEscmVzdWx0PVtdO3doaWxlKCEoZGF0YT1pdGVyYXRvci5uZXh0KCkpLmRvbmUpe3Jlc3VsdC5wdXNoKGRhdGEudmFsdWUpO31yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKi9mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCl7dmFyIGluZGV4PS0xLHJlc3VsdD1BcnJheShtYXAuc2l6ZSk7bWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsa2V5KXtyZXN1bHRbKytpbmRleF09W2tleSx2YWx1ZV07fSk7cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovZnVuY3Rpb24gb3ZlckFyZyhmdW5jLHRyYW5zZm9ybSl7cmV0dXJuIGZ1bmN0aW9uKGFyZyl7cmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO307fS8qKlxuICAgICAqIFJlcGxhY2VzIGFsbCBgcGxhY2Vob2xkZXJgIGVsZW1lbnRzIGluIGBhcnJheWAgd2l0aCBhbiBpbnRlcm5hbCBwbGFjZWhvbGRlclxuICAgICAqIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZWlyIGluZGV4ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gcmVwbGFjZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqL2Z1bmN0aW9uIHJlcGxhY2VIb2xkZXJzKGFycmF5LHBsYWNlaG9sZGVyKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWFycmF5Lmxlbmd0aCxyZXNJbmRleD0wLHJlc3VsdD1bXTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHZhbHVlPWFycmF5W2luZGV4XTtpZih2YWx1ZT09PXBsYWNlaG9sZGVyfHx2YWx1ZT09PVBMQUNFSE9MREVSKXthcnJheVtpbmRleF09UExBQ0VIT0xERVI7cmVzdWx0W3Jlc0luZGV4KytdPWluZGV4O319cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAsIHVubGVzcyBga2V5YCBpcyBcIl9fcHJvdG9fX1wiLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgICAqL2Z1bmN0aW9uIHNhZmVHZXQob2JqZWN0LGtleSl7cmV0dXJuIGtleT09J19fcHJvdG9fXyc/dW5kZWZpbmVkOm9iamVjdFtrZXldO30vKipcbiAgICAgKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAgICAgKi9mdW5jdGlvbiBzZXRUb0FycmF5KHNldCl7dmFyIGluZGV4PS0xLHJlc3VsdD1BcnJheShzZXQuc2l6ZSk7c2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpe3Jlc3VsdFsrK2luZGV4XT12YWx1ZTt9KTtyZXR1cm4gcmVzdWx0O30vKipcbiAgICAgKiBDb252ZXJ0cyBgc2V0YCB0byBpdHMgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAgICovZnVuY3Rpb24gc2V0VG9QYWlycyhzZXQpe3ZhciBpbmRleD0tMSxyZXN1bHQ9QXJyYXkoc2V0LnNpemUpO3NldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKXtyZXN1bHRbKytpbmRleF09W3ZhbHVlLHZhbHVlXTt9KTtyZXR1cm4gcmVzdWx0O30vKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAgICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICovZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSx2YWx1ZSxmcm9tSW5kZXgpe3ZhciBpbmRleD1mcm9tSW5kZXgtMSxsZW5ndGg9YXJyYXkubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXtpZihhcnJheVtpbmRleF09PT12YWx1ZSl7cmV0dXJuIGluZGV4O319cmV0dXJuLTE7fS8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5sYXN0SW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAgICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICovZnVuY3Rpb24gc3RyaWN0TGFzdEluZGV4T2YoYXJyYXksdmFsdWUsZnJvbUluZGV4KXt2YXIgaW5kZXg9ZnJvbUluZGV4KzE7d2hpbGUoaW5kZXgtLSl7aWYoYXJyYXlbaW5kZXhdPT09dmFsdWUpe3JldHVybiBpbmRleDt9fXJldHVybiBpbmRleDt9LyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgICAqL2Z1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKXtyZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpP3VuaWNvZGVTaXplKHN0cmluZyk6YXNjaWlTaXplKHN0cmluZyk7fS8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICAgKi9mdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZyl7cmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKT91bmljb2RlVG9BcnJheShzdHJpbmcpOmFzY2lpVG9BcnJheShzdHJpbmcpO30vKipcbiAgICAgKiBVc2VkIGJ5IGBfLnVuZXNjYXBlYCB0byBjb252ZXJ0IEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gdW5lc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5lc2NhcGVkIGNoYXJhY3Rlci5cbiAgICAgKi92YXIgdW5lc2NhcGVIdG1sQ2hhcj1iYXNlUHJvcGVydHlPZihodG1sVW5lc2NhcGVzKTsvKipcbiAgICAgKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAgICovZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKXt2YXIgcmVzdWx0PXJlVW5pY29kZS5sYXN0SW5kZXg9MDt3aGlsZShyZVVuaWNvZGUudGVzdChzdHJpbmcpKXsrK3Jlc3VsdDt9cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICogQ29udmVydHMgYSBVbmljb2RlIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICAgKi9mdW5jdGlvbiB1bmljb2RlVG9BcnJheShzdHJpbmcpe3JldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKXx8W107fS8qKlxuICAgICAqIFNwbGl0cyBhIFVuaWNvZGUgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICAgKi9mdW5jdGlvbiB1bmljb2RlV29yZHMoc3RyaW5nKXtyZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZVdvcmQpfHxbXTt9LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB1c2luZyB0aGUgYGNvbnRleHRgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtjb250ZXh0PXJvb3RdIFRoZSBjb250ZXh0IG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYSBuZXcgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWl4aW4oeyAnZm9vJzogXy5jb25zdGFudCgnZm9vJykgfSk7XG4gICAgICpcbiAgICAgKiB2YXIgbG9kYXNoID0gXy5ydW5JbkNvbnRleHQoKTtcbiAgICAgKiBsb2Rhc2gubWl4aW4oeyAnYmFyJzogbG9kYXNoLmNvbnN0YW50KCdiYXInKSB9KTtcbiAgICAgKlxuICAgICAqIF8uaXNGdW5jdGlvbihfLmZvbyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqIF8uaXNGdW5jdGlvbihfLmJhcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIGxvZGFzaC5pc0Z1bmN0aW9uKGxvZGFzaC5mb28pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmJhcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogLy8gQ3JlYXRlIGEgc3VwZWQtdXAgYGRlZmVyYCBpbiBOb2RlLmpzLlxuICAgICAqIHZhciBkZWZlciA9IF8ucnVuSW5Db250ZXh0KHsgJ3NldFRpbWVvdXQnOiBzZXRJbW1lZGlhdGUgfSkuZGVmZXI7XG4gICAgICovdmFyIHJ1bkluQ29udGV4dD1mdW5jdGlvbiBydW5JbkNvbnRleHQoY29udGV4dCl7Y29udGV4dD1jb250ZXh0PT1udWxsP3Jvb3Q6Xy5kZWZhdWx0cyhyb290Lk9iamVjdCgpLGNvbnRleHQsXy5waWNrKHJvb3QsY29udGV4dFByb3BzKSk7LyoqIEJ1aWx0LWluIGNvbnN0cnVjdG9yIHJlZmVyZW5jZXMuICovdmFyIEFycmF5PWNvbnRleHQuQXJyYXksRGF0ZT1jb250ZXh0LkRhdGUsRXJyb3I9Y29udGV4dC5FcnJvcixGdW5jdGlvbj1jb250ZXh0LkZ1bmN0aW9uLE1hdGg9Y29udGV4dC5NYXRoLE9iamVjdD1jb250ZXh0Lk9iamVjdCxSZWdFeHA9Y29udGV4dC5SZWdFeHAsU3RyaW5nPWNvbnRleHQuU3RyaW5nLFR5cGVFcnJvcj1jb250ZXh0LlR5cGVFcnJvcjsvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovdmFyIGFycmF5UHJvdG89QXJyYXkucHJvdG90eXBlLGZ1bmNQcm90bz1GdW5jdGlvbi5wcm90b3R5cGUsb2JqZWN0UHJvdG89T2JqZWN0LnByb3RvdHlwZTsvKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovdmFyIGNvcmVKc0RhdGE9Y29udGV4dFsnX19jb3JlLWpzX3NoYXJlZF9fJ107LyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL3ZhciBmdW5jVG9TdHJpbmc9ZnVuY1Byb3RvLnRvU3RyaW5nOy8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL3ZhciBoYXNPd25Qcm9wZXJ0eT1vYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTsvKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL3ZhciBpZENvdW50ZXI9MDsvKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL3ZhciBtYXNrU3JjS2V5PWZ1bmN0aW9uKCl7dmFyIHVpZD0vW14uXSskLy5leGVjKGNvcmVKc0RhdGEmJmNvcmVKc0RhdGEua2V5cyYmY29yZUpzRGF0YS5rZXlzLklFX1BST1RPfHwnJyk7cmV0dXJuIHVpZD8nU3ltYm9sKHNyYylfMS4nK3VpZDonJzt9KCk7LyoqXG4gICAgICAgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gICAgICAgKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAgICAgICAqIG9mIHZhbHVlcy5cbiAgICAgICAqL3ZhciBuYXRpdmVPYmplY3RUb1N0cmluZz1vYmplY3RQcm90by50b1N0cmluZzsvKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovdmFyIG9iamVjdEN0b3JTdHJpbmc9ZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTsvKiogVXNlZCB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBgX2AgcmVmZXJlbmNlIGluIGBfLm5vQ29uZmxpY3RgLiAqL3ZhciBvbGREYXNoPXJvb3QuXzsvKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL3ZhciByZUlzTmF0aXZlPVJlZ0V4cCgnXicrZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCdcXFxcJCYnKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCckMS4qPycpKyckJyk7LyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovdmFyIEJ1ZmZlcj1tb2R1bGVFeHBvcnRzP2NvbnRleHQuQnVmZmVyOnVuZGVmaW5lZCxfU3ltYm9sPWNvbnRleHQuU3ltYm9sLFVpbnQ4QXJyYXk9Y29udGV4dC5VaW50OEFycmF5LGFsbG9jVW5zYWZlPUJ1ZmZlcj9CdWZmZXIuYWxsb2NVbnNhZmU6dW5kZWZpbmVkLGdldFByb3RvdHlwZT1vdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpLG9iamVjdENyZWF0ZT1PYmplY3QuY3JlYXRlLHByb3BlcnR5SXNFbnVtZXJhYmxlPW9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlLHNwbGljZT1hcnJheVByb3RvLnNwbGljZSxzcHJlYWRhYmxlU3ltYm9sPV9TeW1ib2w/X1N5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGU6dW5kZWZpbmVkLHN5bUl0ZXJhdG9yPV9TeW1ib2w/X1N5bWJvbC5pdGVyYXRvcjp1bmRlZmluZWQsc3ltVG9TdHJpbmdUYWc9X1N5bWJvbD9fU3ltYm9sLnRvU3RyaW5nVGFnOnVuZGVmaW5lZDt2YXIgZGVmaW5lUHJvcGVydHk9ZnVuY3Rpb24oKXt0cnl7dmFyIGZ1bmM9Z2V0TmF0aXZlKE9iamVjdCwnZGVmaW5lUHJvcGVydHknKTtmdW5jKHt9LCcnLHt9KTtyZXR1cm4gZnVuYzt9Y2F0Y2goZSl7fX0oKTsvKiogTW9ja2VkIGJ1aWx0LWlucy4gKi92YXIgY3R4Q2xlYXJUaW1lb3V0PWNvbnRleHQuY2xlYXJUaW1lb3V0IT09cm9vdC5jbGVhclRpbWVvdXQmJmNvbnRleHQuY2xlYXJUaW1lb3V0LGN0eE5vdz1EYXRlJiZEYXRlLm5vdyE9PXJvb3QuRGF0ZS5ub3cmJkRhdGUubm93LGN0eFNldFRpbWVvdXQ9Y29udGV4dC5zZXRUaW1lb3V0IT09cm9vdC5zZXRUaW1lb3V0JiZjb250ZXh0LnNldFRpbWVvdXQ7LyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL3ZhciBuYXRpdmVDZWlsPU1hdGguY2VpbCxuYXRpdmVGbG9vcj1NYXRoLmZsb29yLG5hdGl2ZUdldFN5bWJvbHM9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxuYXRpdmVJc0J1ZmZlcj1CdWZmZXI/QnVmZmVyLmlzQnVmZmVyOnVuZGVmaW5lZCxuYXRpdmVJc0Zpbml0ZT1jb250ZXh0LmlzRmluaXRlLG5hdGl2ZUpvaW49YXJyYXlQcm90by5qb2luLG5hdGl2ZUtleXM9b3ZlckFyZyhPYmplY3Qua2V5cyxPYmplY3QpLG5hdGl2ZU1heD1NYXRoLm1heCxuYXRpdmVNaW49TWF0aC5taW4sbmF0aXZlTm93PURhdGUubm93LG5hdGl2ZVBhcnNlSW50PWNvbnRleHQucGFyc2VJbnQsbmF0aXZlUmFuZG9tPU1hdGgucmFuZG9tLG5hdGl2ZVJldmVyc2U9YXJyYXlQcm90by5yZXZlcnNlOy8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi92YXIgRGF0YVZpZXc9Z2V0TmF0aXZlKGNvbnRleHQsJ0RhdGFWaWV3JyksTWFwPWdldE5hdGl2ZShjb250ZXh0LCdNYXAnKSxQcm9taXNlPWdldE5hdGl2ZShjb250ZXh0LCdQcm9taXNlJyksU2V0PWdldE5hdGl2ZShjb250ZXh0LCdTZXQnKSxXZWFrTWFwPWdldE5hdGl2ZShjb250ZXh0LCdXZWFrTWFwJyksbmF0aXZlQ3JlYXRlPWdldE5hdGl2ZShPYmplY3QsJ2NyZWF0ZScpOy8qKiBVc2VkIHRvIHN0b3JlIGZ1bmN0aW9uIG1ldGFkYXRhLiAqL3ZhciBtZXRhTWFwPVdlYWtNYXAmJm5ldyBXZWFrTWFwKCk7LyoqIFVzZWQgdG8gbG9va3VwIHVubWluaWZpZWQgZnVuY3Rpb24gbmFtZXMuICovdmFyIHJlYWxOYW1lcz17fTsvKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL3ZhciBkYXRhVmlld0N0b3JTdHJpbmc9dG9Tb3VyY2UoRGF0YVZpZXcpLG1hcEN0b3JTdHJpbmc9dG9Tb3VyY2UoTWFwKSxwcm9taXNlQ3RvclN0cmluZz10b1NvdXJjZShQcm9taXNlKSxzZXRDdG9yU3RyaW5nPXRvU291cmNlKFNldCksd2Vha01hcEN0b3JTdHJpbmc9dG9Tb3VyY2UoV2Vha01hcCk7LyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovdmFyIHN5bWJvbFByb3RvPV9TeW1ib2w/X1N5bWJvbC5wcm90b3R5cGU6dW5kZWZpbmVkLHN5bWJvbFZhbHVlT2Y9c3ltYm9sUHJvdG8/c3ltYm9sUHJvdG8udmFsdWVPZjp1bmRlZmluZWQsc3ltYm9sVG9TdHJpbmc9c3ltYm9sUHJvdG8/c3ltYm9sUHJvdG8udG9TdHJpbmc6dW5kZWZpbmVkOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqXG4gICAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGltcGxpY2l0IG1ldGhvZFxuICAgICAgICogY2hhaW4gc2VxdWVuY2VzLiBNZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBhbmQgcmV0dXJuIGFycmF5cywgY29sbGVjdGlvbnMsXG4gICAgICAgKiBhbmQgZnVuY3Rpb25zIGNhbiBiZSBjaGFpbmVkIHRvZ2V0aGVyLiBNZXRob2RzIHRoYXQgcmV0cmlldmUgYSBzaW5nbGUgdmFsdWVcbiAgICAgICAqIG9yIG1heSByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUgd2lsbCBhdXRvbWF0aWNhbGx5IGVuZCB0aGUgY2hhaW4gc2VxdWVuY2VcbiAgICAgICAqIGFuZCByZXR1cm4gdGhlIHVud3JhcHBlZCB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgdmFsdWUgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAgICpcbiAgICAgICAqIEV4cGxpY2l0IGNoYWluIHNlcXVlbmNlcywgd2hpY2ggbXVzdCBiZSB1bndyYXBwZWQgd2l0aCBgXyN2YWx1ZWAsIG1heSBiZVxuICAgICAgICogZW5hYmxlZCB1c2luZyBgXy5jaGFpbmAuXG4gICAgICAgKlxuICAgICAgICogVGhlIGV4ZWN1dGlvbiBvZiBjaGFpbmVkIG1ldGhvZHMgaXMgbGF6eSwgdGhhdCBpcywgaXQncyBkZWZlcnJlZCB1bnRpbFxuICAgICAgICogYF8jdmFsdWVgIGlzIGltcGxpY2l0bHkgb3IgZXhwbGljaXRseSBjYWxsZWQuXG4gICAgICAgKlxuICAgICAgICogTGF6eSBldmFsdWF0aW9uIGFsbG93cyBzZXZlcmFsIG1ldGhvZHMgdG8gc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24uXG4gICAgICAgKiBTaG9ydGN1dCBmdXNpb24gaXMgYW4gb3B0aW1pemF0aW9uIHRvIG1lcmdlIGl0ZXJhdGVlIGNhbGxzOyB0aGlzIGF2b2lkc1xuICAgICAgICogdGhlIGNyZWF0aW9uIG9mIGludGVybWVkaWF0ZSBhcnJheXMgYW5kIGNhbiBncmVhdGx5IHJlZHVjZSB0aGUgbnVtYmVyIG9mXG4gICAgICAgKiBpdGVyYXRlZSBleGVjdXRpb25zLiBTZWN0aW9ucyBvZiBhIGNoYWluIHNlcXVlbmNlIHF1YWxpZnkgZm9yIHNob3J0Y3V0XG4gICAgICAgKiBmdXNpb24gaWYgdGhlIHNlY3Rpb24gaXMgYXBwbGllZCB0byBhbiBhcnJheSBhbmQgaXRlcmF0ZWVzIGFjY2VwdCBvbmx5XG4gICAgICAgKiBvbmUgYXJndW1lbnQuIFRoZSBoZXVyaXN0aWMgZm9yIHdoZXRoZXIgYSBzZWN0aW9uIHF1YWxpZmllcyBmb3Igc2hvcnRjdXRcbiAgICAgICAqIGZ1c2lvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZS5cbiAgICAgICAqXG4gICAgICAgKiBDaGFpbmluZyBpcyBzdXBwb3J0ZWQgaW4gY3VzdG9tIGJ1aWxkcyBhcyBsb25nIGFzIHRoZSBgXyN2YWx1ZWAgbWV0aG9kIGlzXG4gICAgICAgKiBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluY2x1ZGVkIGluIHRoZSBidWlsZC5cbiAgICAgICAqXG4gICAgICAgKiBJbiBhZGRpdGlvbiB0byBsb2Rhc2ggbWV0aG9kcywgd3JhcHBlcnMgaGF2ZSBgQXJyYXlgIGFuZCBgU3RyaW5nYCBtZXRob2RzLlxuICAgICAgICpcbiAgICAgICAqIFRoZSB3cmFwcGVyIGBBcnJheWAgbWV0aG9kcyBhcmU6XG4gICAgICAgKiBgY29uY2F0YCwgYGpvaW5gLCBgcG9wYCwgYHB1c2hgLCBgc2hpZnRgLCBgc29ydGAsIGBzcGxpY2VgLCBhbmQgYHVuc2hpZnRgXG4gICAgICAgKlxuICAgICAgICogVGhlIHdyYXBwZXIgYFN0cmluZ2AgbWV0aG9kcyBhcmU6XG4gICAgICAgKiBgcmVwbGFjZWAgYW5kIGBzcGxpdGBcbiAgICAgICAqXG4gICAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24gYXJlOlxuICAgICAgICogYGF0YCwgYGNvbXBhY3RgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZHJvcFdoaWxlYCwgYGZpbHRlcmAsIGBmaW5kYCxcbiAgICAgICAqIGBmaW5kTGFzdGAsIGBoZWFkYCwgYGluaXRpYWxgLCBgbGFzdGAsIGBtYXBgLCBgcmVqZWN0YCwgYHJldmVyc2VgLCBgc2xpY2VgLFxuICAgICAgICogYHRhaWxgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLCBgdGFrZVJpZ2h0V2hpbGVgLCBgdGFrZVdoaWxlYCwgYW5kIGB0b0FycmF5YFxuICAgICAgICpcbiAgICAgICAqIFRoZSBjaGFpbmFibGUgd3JhcHBlciBtZXRob2RzIGFyZTpcbiAgICAgICAqIGBhZnRlcmAsIGBhcnlgLCBgYXNzaWduYCwgYGFzc2lnbkluYCwgYGFzc2lnbkluV2l0aGAsIGBhc3NpZ25XaXRoYCwgYGF0YCxcbiAgICAgICAqIGBiZWZvcmVgLCBgYmluZGAsIGBiaW5kQWxsYCwgYGJpbmRLZXlgLCBgY2FzdEFycmF5YCwgYGNoYWluYCwgYGNodW5rYCxcbiAgICAgICAqIGBjb21taXRgLCBgY29tcGFjdGAsIGBjb25jYXRgLCBgY29uZm9ybXNgLCBgY29uc3RhbnRgLCBgY291bnRCeWAsIGBjcmVhdGVgLFxuICAgICAgICogYGN1cnJ5YCwgYGRlYm91bmNlYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBkZWZlcmAsIGBkZWxheWAsXG4gICAgICAgKiBgZGlmZmVyZW5jZWAsIGBkaWZmZXJlbmNlQnlgLCBgZGlmZmVyZW5jZVdpdGhgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLFxuICAgICAgICogYGRyb3BSaWdodFdoaWxlYCwgYGRyb3BXaGlsZWAsIGBleHRlbmRgLCBgZXh0ZW5kV2l0aGAsIGBmaWxsYCwgYGZpbHRlcmAsXG4gICAgICAgKiBgZmxhdE1hcGAsIGBmbGF0TWFwRGVlcGAsIGBmbGF0TWFwRGVwdGhgLCBgZmxhdHRlbmAsIGBmbGF0dGVuRGVlcGAsXG4gICAgICAgKiBgZmxhdHRlbkRlcHRoYCwgYGZsaXBgLCBgZmxvd2AsIGBmbG93UmlnaHRgLCBgZnJvbVBhaXJzYCwgYGZ1bmN0aW9uc2AsXG4gICAgICAgKiBgZnVuY3Rpb25zSW5gLCBgZ3JvdXBCeWAsIGBpbml0aWFsYCwgYGludGVyc2VjdGlvbmAsIGBpbnRlcnNlY3Rpb25CeWAsXG4gICAgICAgKiBgaW50ZXJzZWN0aW9uV2l0aGAsIGBpbnZlcnRgLCBgaW52ZXJ0QnlgLCBgaW52b2tlTWFwYCwgYGl0ZXJhdGVlYCwgYGtleUJ5YCxcbiAgICAgICAqIGBrZXlzYCwgYGtleXNJbmAsIGBtYXBgLCBgbWFwS2V5c2AsIGBtYXBWYWx1ZXNgLCBgbWF0Y2hlc2AsIGBtYXRjaGVzUHJvcGVydHlgLFxuICAgICAgICogYG1lbW9pemVgLCBgbWVyZ2VgLCBgbWVyZ2VXaXRoYCwgYG1ldGhvZGAsIGBtZXRob2RPZmAsIGBtaXhpbmAsIGBuZWdhdGVgLFxuICAgICAgICogYG50aEFyZ2AsIGBvbWl0YCwgYG9taXRCeWAsIGBvbmNlYCwgYG9yZGVyQnlgLCBgb3ZlcmAsIGBvdmVyQXJnc2AsXG4gICAgICAgKiBgb3ZlckV2ZXJ5YCwgYG92ZXJTb21lYCwgYHBhcnRpYWxgLCBgcGFydGlhbFJpZ2h0YCwgYHBhcnRpdGlvbmAsIGBwaWNrYCxcbiAgICAgICAqIGBwaWNrQnlgLCBgcGxhbnRgLCBgcHJvcGVydHlgLCBgcHJvcGVydHlPZmAsIGBwdWxsYCwgYHB1bGxBbGxgLCBgcHVsbEFsbEJ5YCxcbiAgICAgICAqIGBwdWxsQWxsV2l0aGAsIGBwdWxsQXRgLCBgcHVzaGAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlYXJnYCwgYHJlamVjdGAsXG4gICAgICAgKiBgcmVtb3ZlYCwgYHJlc3RgLCBgcmV2ZXJzZWAsIGBzYW1wbGVTaXplYCwgYHNldGAsIGBzZXRXaXRoYCwgYHNodWZmbGVgLFxuICAgICAgICogYHNsaWNlYCwgYHNvcnRgLCBgc29ydEJ5YCwgYHNwbGljZWAsIGBzcHJlYWRgLCBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICAgKiBgdGFrZVJpZ2h0V2hpbGVgLCBgdGFrZVdoaWxlYCwgYHRhcGAsIGB0aHJvdHRsZWAsIGB0aHJ1YCwgYHRvQXJyYXlgLFxuICAgICAgICogYHRvUGFpcnNgLCBgdG9QYWlyc0luYCwgYHRvUGF0aGAsIGB0b1BsYWluT2JqZWN0YCwgYHRyYW5zZm9ybWAsIGB1bmFyeWAsXG4gICAgICAgKiBgdW5pb25gLCBgdW5pb25CeWAsIGB1bmlvbldpdGhgLCBgdW5pcWAsIGB1bmlxQnlgLCBgdW5pcVdpdGhgLCBgdW5zZXRgLFxuICAgICAgICogYHVuc2hpZnRgLCBgdW56aXBgLCBgdW56aXBXaXRoYCwgYHVwZGF0ZWAsIGB1cGRhdGVXaXRoYCwgYHZhbHVlc2AsXG4gICAgICAgKiBgdmFsdWVzSW5gLCBgd2l0aG91dGAsIGB3cmFwYCwgYHhvcmAsIGB4b3JCeWAsIGB4b3JXaXRoYCwgYHppcGAsXG4gICAgICAgKiBgemlwT2JqZWN0YCwgYHppcE9iamVjdERlZXBgLCBhbmQgYHppcFdpdGhgXG4gICAgICAgKlxuICAgICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IGFyZSAqKm5vdCoqIGNoYWluYWJsZSBieSBkZWZhdWx0IGFyZTpcbiAgICAgICAqIGBhZGRgLCBgYXR0ZW1wdGAsIGBjYW1lbENhc2VgLCBgY2FwaXRhbGl6ZWAsIGBjZWlsYCwgYGNsYW1wYCwgYGNsb25lYCxcbiAgICAgICAqIGBjbG9uZURlZXBgLCBgY2xvbmVEZWVwV2l0aGAsIGBjbG9uZVdpdGhgLCBgY29uZm9ybXNUb2AsIGBkZWJ1cnJgLFxuICAgICAgICogYGRlZmF1bHRUb2AsIGBkaXZpZGVgLCBgZWFjaGAsIGBlYWNoUmlnaHRgLCBgZW5kc1dpdGhgLCBgZXFgLCBgZXNjYXBlYCxcbiAgICAgICAqIGBlc2NhcGVSZWdFeHBgLCBgZXZlcnlgLCBgZmluZGAsIGBmaW5kSW5kZXhgLCBgZmluZEtleWAsIGBmaW5kTGFzdGAsXG4gICAgICAgKiBgZmluZExhc3RJbmRleGAsIGBmaW5kTGFzdEtleWAsIGBmaXJzdGAsIGBmbG9vcmAsIGBmb3JFYWNoYCwgYGZvckVhY2hSaWdodGAsXG4gICAgICAgKiBgZm9ySW5gLCBgZm9ySW5SaWdodGAsIGBmb3JPd25gLCBgZm9yT3duUmlnaHRgLCBgZ2V0YCwgYGd0YCwgYGd0ZWAsIGBoYXNgLFxuICAgICAgICogYGhhc0luYCwgYGhlYWRgLCBgaWRlbnRpdHlgLCBgaW5jbHVkZXNgLCBgaW5kZXhPZmAsIGBpblJhbmdlYCwgYGludm9rZWAsXG4gICAgICAgKiBgaXNBcmd1bWVudHNgLCBgaXNBcnJheWAsIGBpc0FycmF5QnVmZmVyYCwgYGlzQXJyYXlMaWtlYCwgYGlzQXJyYXlMaWtlT2JqZWN0YCxcbiAgICAgICAqIGBpc0Jvb2xlYW5gLCBgaXNCdWZmZXJgLCBgaXNEYXRlYCwgYGlzRWxlbWVudGAsIGBpc0VtcHR5YCwgYGlzRXF1YWxgLFxuICAgICAgICogYGlzRXF1YWxXaXRoYCwgYGlzRXJyb3JgLCBgaXNGaW5pdGVgLCBgaXNGdW5jdGlvbmAsIGBpc0ludGVnZXJgLCBgaXNMZW5ndGhgLFxuICAgICAgICogYGlzTWFwYCwgYGlzTWF0Y2hgLCBgaXNNYXRjaFdpdGhgLCBgaXNOYU5gLCBgaXNOYXRpdmVgLCBgaXNOaWxgLCBgaXNOdWxsYCxcbiAgICAgICAqIGBpc051bWJlcmAsIGBpc09iamVjdGAsIGBpc09iamVjdExpa2VgLCBgaXNQbGFpbk9iamVjdGAsIGBpc1JlZ0V4cGAsXG4gICAgICAgKiBgaXNTYWZlSW50ZWdlcmAsIGBpc1NldGAsIGBpc1N0cmluZ2AsIGBpc1VuZGVmaW5lZGAsIGBpc1R5cGVkQXJyYXlgLFxuICAgICAgICogYGlzV2Vha01hcGAsIGBpc1dlYWtTZXRgLCBgam9pbmAsIGBrZWJhYkNhc2VgLCBgbGFzdGAsIGBsYXN0SW5kZXhPZmAsXG4gICAgICAgKiBgbG93ZXJDYXNlYCwgYGxvd2VyRmlyc3RgLCBgbHRgLCBgbHRlYCwgYG1heGAsIGBtYXhCeWAsIGBtZWFuYCwgYG1lYW5CeWAsXG4gICAgICAgKiBgbWluYCwgYG1pbkJ5YCwgYG11bHRpcGx5YCwgYG5vQ29uZmxpY3RgLCBgbm9vcGAsIGBub3dgLCBgbnRoYCwgYHBhZGAsXG4gICAgICAgKiBgcGFkRW5kYCwgYHBhZFN0YXJ0YCwgYHBhcnNlSW50YCwgYHBvcGAsIGByYW5kb21gLCBgcmVkdWNlYCwgYHJlZHVjZVJpZ2h0YCxcbiAgICAgICAqIGByZXBlYXRgLCBgcmVzdWx0YCwgYHJvdW5kYCwgYHJ1bkluQ29udGV4dGAsIGBzYW1wbGVgLCBgc2hpZnRgLCBgc2l6ZWAsXG4gICAgICAgKiBgc25ha2VDYXNlYCwgYHNvbWVgLCBgc29ydGVkSW5kZXhgLCBgc29ydGVkSW5kZXhCeWAsIGBzb3J0ZWRMYXN0SW5kZXhgLFxuICAgICAgICogYHNvcnRlZExhc3RJbmRleEJ5YCwgYHN0YXJ0Q2FzZWAsIGBzdGFydHNXaXRoYCwgYHN0dWJBcnJheWAsIGBzdHViRmFsc2VgLFxuICAgICAgICogYHN0dWJPYmplY3RgLCBgc3R1YlN0cmluZ2AsIGBzdHViVHJ1ZWAsIGBzdWJ0cmFjdGAsIGBzdW1gLCBgc3VtQnlgLFxuICAgICAgICogYHRlbXBsYXRlYCwgYHRpbWVzYCwgYHRvRmluaXRlYCwgYHRvSW50ZWdlcmAsIGB0b0pTT05gLCBgdG9MZW5ndGhgLFxuICAgICAgICogYHRvTG93ZXJgLCBgdG9OdW1iZXJgLCBgdG9TYWZlSW50ZWdlcmAsIGB0b1N0cmluZ2AsIGB0b1VwcGVyYCwgYHRyaW1gLFxuICAgICAgICogYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYHRydW5jYXRlYCwgYHVuZXNjYXBlYCwgYHVuaXF1ZUlkYCwgYHVwcGVyQ2FzZWAsXG4gICAgICAgKiBgdXBwZXJGaXJzdGAsIGB2YWx1ZWAsIGFuZCBgd29yZHNgXG4gICAgICAgKlxuICAgICAgICogQG5hbWUgX1xuICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwIGluIGEgYGxvZGFzaGAgaW5zdGFuY2UuXG4gICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAgICogfVxuICAgICAgICpcbiAgICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMiwgM10pO1xuICAgICAgICpcbiAgICAgICAqIC8vIFJldHVybnMgYW4gdW53cmFwcGVkIHZhbHVlLlxuICAgICAgICogd3JhcHBlZC5yZWR1Y2UoXy5hZGQpO1xuICAgICAgICogLy8gPT4gNlxuICAgICAgICpcbiAgICAgICAqIC8vIFJldHVybnMgYSB3cmFwcGVkIHZhbHVlLlxuICAgICAgICogdmFyIHNxdWFyZXMgPSB3cmFwcGVkLm1hcChzcXVhcmUpO1xuICAgICAgICpcbiAgICAgICAqIF8uaXNBcnJheShzcXVhcmVzKTtcbiAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgKlxuICAgICAgICogXy5pc0FycmF5KHNxdWFyZXMudmFsdWUoKSk7XG4gICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgKi9mdW5jdGlvbiBsb2Rhc2godmFsdWUpe2lmKGlzT2JqZWN0TGlrZSh2YWx1ZSkmJiFpc0FycmF5KHZhbHVlKSYmISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSl7aWYodmFsdWUgaW5zdGFuY2VvZiBMb2Rhc2hXcmFwcGVyKXtyZXR1cm4gdmFsdWU7fWlmKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsJ19fd3JhcHBlZF9fJykpe3JldHVybiB3cmFwcGVyQ2xvbmUodmFsdWUpO319cmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlKTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAgICAgICAgICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgICAgICovdmFyIGJhc2VDcmVhdGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBvYmplY3QoKXt9cmV0dXJuIGZ1bmN0aW9uKHByb3RvKXtpZighaXNPYmplY3QocHJvdG8pKXtyZXR1cm57fTt9aWYob2JqZWN0Q3JlYXRlKXtyZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTt9b2JqZWN0LnByb3RvdHlwZT1wcm90bzt2YXIgcmVzdWx0PW5ldyBvYmplY3QoKTtvYmplY3QucHJvdG90eXBlPXVuZGVmaW5lZDtyZXR1cm4gcmVzdWx0O307fSgpOy8qKlxuICAgICAgICogVGhlIGZ1bmN0aW9uIHdob3NlIHByb3RvdHlwZSBjaGFpbiBzZXF1ZW5jZSB3cmFwcGVycyBpbmhlcml0IGZyb20uXG4gICAgICAgKlxuICAgICAgICogQHByaXZhdGVcbiAgICAgICAqL2Z1bmN0aW9uIGJhc2VMb2Rhc2goKXt9Ly8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbi8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBjb25zdHJ1Y3RvciBmb3IgY3JlYXRpbmcgYGxvZGFzaGAgd3JhcHBlciBvYmplY3RzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjaGFpbkFsbF0gRW5hYmxlIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMuXG4gICAgICAgICAqL2Z1bmN0aW9uIExvZGFzaFdyYXBwZXIodmFsdWUsY2hhaW5BbGwpe3RoaXMuX193cmFwcGVkX189dmFsdWU7dGhpcy5fX2FjdGlvbnNfXz1bXTt0aGlzLl9fY2hhaW5fXz0hIWNoYWluQWxsO3RoaXMuX19pbmRleF9fPTA7dGhpcy5fX3ZhbHVlc19fPXVuZGVmaW5lZDt9LyoqXG4gICAgICAgICAqIEJ5IGRlZmF1bHQsIHRoZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzIHVzZWQgYnkgbG9kYXNoIGFyZSBsaWtlIHRob3NlIGluXG4gICAgICAgICAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICAgICAgICAgKiBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHR5cGUge09iamVjdH1cbiAgICAgICAgICovbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3M9ey8qKlxuICAgICAgICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAgICAgICAqL2VzY2FwZTpyZUVzY2FwZSwvKipcbiAgICAgICAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgICAgICAgKi9ldmFsdWF0ZTpyZUV2YWx1YXRlLC8qKlxuICAgICAgICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBpbmplY3QuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAgICAgICAqL2ludGVycG9sYXRlOnJlSW50ZXJwb2xhdGUsLyoqXG4gICAgICAgICAgICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAgICAgICAqL3ZhcmlhYmxlOicnLC8qKlxuICAgICAgICAgICAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgICAgICAgKi9pbXBvcnRzOnsvKipcbiAgICAgICAgICAgICAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHNcbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICAgICAgICAgICAgICovXzpsb2Rhc2h9fTsvLyBFbnN1cmUgd3JhcHBlcnMgYXJlIGluc3RhbmNlcyBvZiBgYmFzZUxvZGFzaGAuXG5sb2Rhc2gucHJvdG90eXBlPWJhc2VMb2Rhc2gucHJvdG90eXBlO2xvZGFzaC5wcm90b3R5cGUuY29uc3RydWN0b3I9bG9kYXNoO0xvZGFzaFdyYXBwZXIucHJvdG90eXBlPWJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO0xvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPUxvZGFzaFdyYXBwZXI7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGxhenkgd3JhcHBlciBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgbGF6eSBldmFsdWF0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgICAgICovZnVuY3Rpb24gTGF6eVdyYXBwZXIodmFsdWUpe3RoaXMuX193cmFwcGVkX189dmFsdWU7dGhpcy5fX2FjdGlvbnNfXz1bXTt0aGlzLl9fZGlyX189MTt0aGlzLl9fZmlsdGVyZWRfXz1mYWxzZTt0aGlzLl9faXRlcmF0ZWVzX189W107dGhpcy5fX3Rha2VDb3VudF9fPU1BWF9BUlJBWV9MRU5HVEg7dGhpcy5fX3ZpZXdzX189W107fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGxhenkgd3JhcHBlciBvYmplY3QuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBuYW1lIGNsb25lXG4gICAgICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICAgICAqL2Z1bmN0aW9uIGxhenlDbG9uZSgpe3ZhciByZXN1bHQ9bmV3IExhenlXcmFwcGVyKHRoaXMuX193cmFwcGVkX18pO3Jlc3VsdC5fX2FjdGlvbnNfXz1jb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7cmVzdWx0Ll9fZGlyX189dGhpcy5fX2Rpcl9fO3Jlc3VsdC5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX187cmVzdWx0Ll9faXRlcmF0ZWVzX189Y29weUFycmF5KHRoaXMuX19pdGVyYXRlZXNfXyk7cmVzdWx0Ll9fdGFrZUNvdW50X189dGhpcy5fX3Rha2VDb3VudF9fO3Jlc3VsdC5fX3ZpZXdzX189Y29weUFycmF5KHRoaXMuX192aWV3c19fKTtyZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogUmV2ZXJzZXMgdGhlIGRpcmVjdGlvbiBvZiBsYXp5IGl0ZXJhdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgcmV2ZXJzZVxuICAgICAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHJldmVyc2VkIGBMYXp5V3JhcHBlcmAgb2JqZWN0LlxuICAgICAgICAgKi9mdW5jdGlvbiBsYXp5UmV2ZXJzZSgpe2lmKHRoaXMuX19maWx0ZXJlZF9fKXt2YXIgcmVzdWx0PW5ldyBMYXp5V3JhcHBlcih0aGlzKTtyZXN1bHQuX19kaXJfXz0tMTtyZXN1bHQuX19maWx0ZXJlZF9fPXRydWU7fWVsc2V7cmVzdWx0PXRoaXMuY2xvbmUoKTtyZXN1bHQuX19kaXJfXyo9LTE7fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBFeHRyYWN0cyB0aGUgdW53cmFwcGVkIHZhbHVlIGZyb20gaXRzIGxhenkgd3JhcHBlci5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgdmFsdWVcbiAgICAgICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICAgICAqL2Z1bmN0aW9uIGxhenlWYWx1ZSgpe3ZhciBhcnJheT10aGlzLl9fd3JhcHBlZF9fLnZhbHVlKCksZGlyPXRoaXMuX19kaXJfXyxpc0Fycj1pc0FycmF5KGFycmF5KSxpc1JpZ2h0PWRpcjwwLGFyckxlbmd0aD1pc0Fycj9hcnJheS5sZW5ndGg6MCx2aWV3PWdldFZpZXcoMCxhcnJMZW5ndGgsdGhpcy5fX3ZpZXdzX18pLHN0YXJ0PXZpZXcuc3RhcnQsZW5kPXZpZXcuZW5kLGxlbmd0aD1lbmQtc3RhcnQsaW5kZXg9aXNSaWdodD9lbmQ6c3RhcnQtMSxpdGVyYXRlZXM9dGhpcy5fX2l0ZXJhdGVlc19fLGl0ZXJMZW5ndGg9aXRlcmF0ZWVzLmxlbmd0aCxyZXNJbmRleD0wLHRha2VDb3VudD1uYXRpdmVNaW4obGVuZ3RoLHRoaXMuX190YWtlQ291bnRfXyk7aWYoIWlzQXJyfHwhaXNSaWdodCYmYXJyTGVuZ3RoPT1sZW5ndGgmJnRha2VDb3VudD09bGVuZ3RoKXtyZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZShhcnJheSx0aGlzLl9fYWN0aW9uc19fKTt9dmFyIHJlc3VsdD1bXTtvdXRlcjp3aGlsZShsZW5ndGgtLSYmcmVzSW5kZXg8dGFrZUNvdW50KXtpbmRleCs9ZGlyO3ZhciBpdGVySW5kZXg9LTEsdmFsdWU9YXJyYXlbaW5kZXhdO3doaWxlKCsraXRlckluZGV4PGl0ZXJMZW5ndGgpe3ZhciBkYXRhPWl0ZXJhdGVlc1tpdGVySW5kZXhdLGl0ZXJhdGVlPWRhdGEuaXRlcmF0ZWUsdHlwZT1kYXRhLnR5cGUsY29tcHV0ZWQ9aXRlcmF0ZWUodmFsdWUpO2lmKHR5cGU9PUxBWllfTUFQX0ZMQUcpe3ZhbHVlPWNvbXB1dGVkO31lbHNlIGlmKCFjb21wdXRlZCl7aWYodHlwZT09TEFaWV9GSUxURVJfRkxBRyl7Y29udGludWUgb3V0ZXI7fWVsc2V7YnJlYWsgb3V0ZXI7fX19cmVzdWx0W3Jlc0luZGV4KytdPXZhbHVlO31yZXR1cm4gcmVzdWx0O30vLyBFbnN1cmUgYExhenlXcmFwcGVyYCBpcyBhbiBpbnN0YW5jZSBvZiBgYmFzZUxvZGFzaGAuXG5MYXp5V3JhcHBlci5wcm90b3R5cGU9YmFzZUNyZWF0ZShiYXNlTG9kYXNoLnByb3RvdHlwZSk7TGF6eVdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPUxhenlXcmFwcGVyOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAgICAgKi9mdW5jdGlvbiBIYXNoKGVudHJpZXMpe3ZhciBpbmRleD0tMSxsZW5ndGg9ZW50cmllcz09bnVsbD8wOmVudHJpZXMubGVuZ3RoO3RoaXMuY2xlYXIoKTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIGVudHJ5PWVudHJpZXNbaW5kZXhdO3RoaXMuc2V0KGVudHJ5WzBdLGVudHJ5WzFdKTt9fS8qKlxuICAgICAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAbmFtZSBjbGVhclxuICAgICAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAgICAgKi9mdW5jdGlvbiBoYXNoQ2xlYXIoKXt0aGlzLl9fZGF0YV9fPW5hdGl2ZUNyZWF0ZT9uYXRpdmVDcmVhdGUobnVsbCk6e307dGhpcy5zaXplPTA7fS8qKlxuICAgICAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgZGVsZXRlXG4gICAgICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpe3ZhciByZXN1bHQ9dGhpcy5oYXMoa2V5KSYmZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTt0aGlzLnNpemUtPXJlc3VsdD8xOjA7cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICAgICAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAbmFtZSBnZXRcbiAgICAgICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgICAgICovZnVuY3Rpb24gaGFzaEdldChrZXkpe3ZhciBkYXRhPXRoaXMuX19kYXRhX187aWYobmF0aXZlQ3JlYXRlKXt2YXIgcmVzdWx0PWRhdGFba2V5XTtyZXR1cm4gcmVzdWx0PT09SEFTSF9VTkRFRklORUQ/dW5kZWZpbmVkOnJlc3VsdDt9cmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSxrZXkpP2RhdGFba2V5XTp1bmRlZmluZWQ7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBuYW1lIGhhc1xuICAgICAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBoYXNoSGFzKGtleSl7dmFyIGRhdGE9dGhpcy5fX2RhdGFfXztyZXR1cm4gbmF0aXZlQ3JlYXRlP2RhdGFba2V5XSE9PXVuZGVmaW5lZDpoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsa2V5KTt9LyoqXG4gICAgICAgICAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgc2V0XG4gICAgICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gICAgICAgICAqL2Z1bmN0aW9uIGhhc2hTZXQoa2V5LHZhbHVlKXt2YXIgZGF0YT10aGlzLl9fZGF0YV9fO3RoaXMuc2l6ZSs9dGhpcy5oYXMoa2V5KT8wOjE7ZGF0YVtrZXldPW5hdGl2ZUNyZWF0ZSYmdmFsdWU9PT11bmRlZmluZWQ/SEFTSF9VTkRFRklORUQ6dmFsdWU7cmV0dXJuIHRoaXM7fS8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyPWhhc2hDbGVhcjtIYXNoLnByb3RvdHlwZVsnZGVsZXRlJ109aGFzaERlbGV0ZTtIYXNoLnByb3RvdHlwZS5nZXQ9aGFzaEdldDtIYXNoLnByb3RvdHlwZS5oYXM9aGFzaEhhcztIYXNoLnByb3RvdHlwZS5zZXQ9aGFzaFNldDsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICAgICAqL2Z1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWVudHJpZXM9PW51bGw/MDplbnRyaWVzLmxlbmd0aDt0aGlzLmNsZWFyKCk7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciBlbnRyeT1lbnRyaWVzW2luZGV4XTt0aGlzLnNldChlbnRyeVswXSxlbnRyeVsxXSk7fX0vKipcbiAgICAgICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgY2xlYXJcbiAgICAgICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAgICAgKi9mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpe3RoaXMuX19kYXRhX189W107dGhpcy5zaXplPTA7fS8qKlxuICAgICAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgZGVsZXRlXG4gICAgICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSl7dmFyIGRhdGE9dGhpcy5fX2RhdGFfXyxpbmRleD1hc3NvY0luZGV4T2YoZGF0YSxrZXkpO2lmKGluZGV4PDApe3JldHVybiBmYWxzZTt9dmFyIGxhc3RJbmRleD1kYXRhLmxlbmd0aC0xO2lmKGluZGV4PT1sYXN0SW5kZXgpe2RhdGEucG9wKCk7fWVsc2V7c3BsaWNlLmNhbGwoZGF0YSxpbmRleCwxKTt9LS10aGlzLnNpemU7cmV0dXJuIHRydWU7fS8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgZ2V0XG4gICAgICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgICAgICovZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSl7dmFyIGRhdGE9dGhpcy5fX2RhdGFfXyxpbmRleD1hc3NvY0luZGV4T2YoZGF0YSxrZXkpO3JldHVybiBpbmRleDwwP3VuZGVmaW5lZDpkYXRhW2luZGV4XVsxXTt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgaGFzXG4gICAgICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSl7cmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLGtleSk+LTE7fS8qKlxuICAgICAgICAgKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBuYW1lIHNldFxuICAgICAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gICAgICAgICAqL2Z1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksdmFsdWUpe3ZhciBkYXRhPXRoaXMuX19kYXRhX18saW5kZXg9YXNzb2NJbmRleE9mKGRhdGEsa2V5KTtpZihpbmRleDwwKXsrK3RoaXMuc2l6ZTtkYXRhLnB1c2goW2tleSx2YWx1ZV0pO31lbHNle2RhdGFbaW5kZXhdWzFdPXZhbHVlO31yZXR1cm4gdGhpczt9Ly8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG5MaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyPWxpc3RDYWNoZUNsZWFyO0xpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddPWxpc3RDYWNoZURlbGV0ZTtMaXN0Q2FjaGUucHJvdG90eXBlLmdldD1saXN0Q2FjaGVHZXQ7TGlzdENhY2hlLnByb3RvdHlwZS5oYXM9bGlzdENhY2hlSGFzO0xpc3RDYWNoZS5wcm90b3R5cGUuc2V0PWxpc3RDYWNoZVNldDsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgICAgICovZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcyl7dmFyIGluZGV4PS0xLGxlbmd0aD1lbnRyaWVzPT1udWxsPzA6ZW50cmllcy5sZW5ndGg7dGhpcy5jbGVhcigpO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgZW50cnk9ZW50cmllc1tpbmRleF07dGhpcy5zZXQoZW50cnlbMF0sZW50cnlbMV0pO319LyoqXG4gICAgICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgY2xlYXJcbiAgICAgICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICAgICAqL2Z1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKXt0aGlzLnNpemU9MDt0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBIYXNoKCksbWFwOm5ldyhNYXB8fExpc3RDYWNoZSkoKSxzdHJpbmc6bmV3IEhhc2goKX07fS8qKlxuICAgICAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSl7dmFyIHJlc3VsdD1nZXRNYXBEYXRhKHRoaXMsa2V5KVsnZGVsZXRlJ10oa2V5KTt0aGlzLnNpemUtPXJlc3VsdD8xOjA7cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICAgICAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBuYW1lIGdldFxuICAgICAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgICAgICovZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KXtyZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLGtleSkuZ2V0KGtleSk7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgaGFzXG4gICAgICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpe3JldHVybiBnZXRNYXBEYXRhKHRoaXMsa2V5KS5oYXMoa2V5KTt9LyoqXG4gICAgICAgICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAbmFtZSBzZXRcbiAgICAgICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAgICAgICAgICovZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LHZhbHVlKXt2YXIgZGF0YT1nZXRNYXBEYXRhKHRoaXMsa2V5KSxzaXplPWRhdGEuc2l6ZTtkYXRhLnNldChrZXksdmFsdWUpO3RoaXMuc2l6ZSs9ZGF0YS5zaXplPT1zaXplPzA6MTtyZXR1cm4gdGhpczt9Ly8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhcj1tYXBDYWNoZUNsZWFyO01hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ109bWFwQ2FjaGVEZWxldGU7TWFwQ2FjaGUucHJvdG90eXBlLmdldD1tYXBDYWNoZUdldDtNYXBDYWNoZS5wcm90b3R5cGUuaGFzPW1hcENhY2hlSGFzO01hcENhY2hlLnByb3RvdHlwZS5zZXQ9bWFwQ2FjaGVTZXQ7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKipcbiAgICAgICAgICpcbiAgICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gICAgICAgICAqL2Z1bmN0aW9uIFNldENhY2hlKHZhbHVlcyl7dmFyIGluZGV4PS0xLGxlbmd0aD12YWx1ZXM9PW51bGw/MDp2YWx1ZXMubGVuZ3RoO3RoaXMuX19kYXRhX189bmV3IE1hcENhY2hlKCk7d2hpbGUoKytpbmRleDxsZW5ndGgpe3RoaXMuYWRkKHZhbHVlc1tpbmRleF0pO319LyoqXG4gICAgICAgICAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBuYW1lIGFkZFxuICAgICAgICAgKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAgICAgICAgICogQGFsaWFzIHB1c2hcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICAgICAgICAgKi9mdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSl7dGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsSEFTSF9VTkRFRklORUQpO3JldHVybiB0aGlzO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAbmFtZSBoYXNcbiAgICAgICAgICogQG1lbWJlck9mIFNldENhY2hlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7fS8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG5TZXRDYWNoZS5wcm90b3R5cGUuYWRkPVNldENhY2hlLnByb3RvdHlwZS5wdXNoPXNldENhY2hlQWRkO1NldENhY2hlLnByb3RvdHlwZS5oYXM9c2V0Q2FjaGVIYXM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgICAgICovZnVuY3Rpb24gU3RhY2soZW50cmllcyl7dmFyIGRhdGE9dGhpcy5fX2RhdGFfXz1uZXcgTGlzdENhY2hlKGVudHJpZXMpO3RoaXMuc2l6ZT1kYXRhLnNpemU7fS8qKlxuICAgICAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgY2xlYXJcbiAgICAgICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICAgICAqL2Z1bmN0aW9uIHN0YWNrQ2xlYXIoKXt0aGlzLl9fZGF0YV9fPW5ldyBMaXN0Q2FjaGUoKTt0aGlzLnNpemU9MDt9LyoqXG4gICAgICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQG5hbWUgZGVsZXRlXG4gICAgICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpe3ZhciBkYXRhPXRoaXMuX19kYXRhX18scmVzdWx0PWRhdGFbJ2RlbGV0ZSddKGtleSk7dGhpcy5zaXplPWRhdGEuc2l6ZTtyZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAbmFtZSBnZXRcbiAgICAgICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICAgICAqL2Z1bmN0aW9uIHN0YWNrR2V0KGtleSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAbmFtZSBoYXNcbiAgICAgICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIHN0YWNrSGFzKGtleSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7fS8qKlxuICAgICAgICAgKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAbmFtZSBzZXRcbiAgICAgICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICAgICAgICAgKi9mdW5jdGlvbiBzdGFja1NldChrZXksdmFsdWUpe3ZhciBkYXRhPXRoaXMuX19kYXRhX187aWYoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSl7dmFyIHBhaXJzPWRhdGEuX19kYXRhX187aWYoIU1hcHx8cGFpcnMubGVuZ3RoPExBUkdFX0FSUkFZX1NJWkUtMSl7cGFpcnMucHVzaChba2V5LHZhbHVlXSk7dGhpcy5zaXplPSsrZGF0YS5zaXplO3JldHVybiB0aGlzO31kYXRhPXRoaXMuX19kYXRhX189bmV3IE1hcENhY2hlKHBhaXJzKTt9ZGF0YS5zZXQoa2V5LHZhbHVlKTt0aGlzLnNpemU9ZGF0YS5zaXplO3JldHVybiB0aGlzO30vLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuU3RhY2sucHJvdG90eXBlLmNsZWFyPXN0YWNrQ2xlYXI7U3RhY2sucHJvdG90eXBlWydkZWxldGUnXT1zdGFja0RlbGV0ZTtTdGFjay5wcm90b3R5cGUuZ2V0PXN0YWNrR2V0O1N0YWNrLnByb3RvdHlwZS5oYXM9c3RhY2tIYXM7U3RhY2sucHJvdG90eXBlLnNldD1zdGFja1NldDsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICAgICAqL2Z1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsaW5oZXJpdGVkKXt2YXIgaXNBcnI9aXNBcnJheSh2YWx1ZSksaXNBcmc9IWlzQXJyJiZpc0FyZ3VtZW50cyh2YWx1ZSksaXNCdWZmPSFpc0FyciYmIWlzQXJnJiZpc0J1ZmZlcih2YWx1ZSksaXNUeXBlPSFpc0FyciYmIWlzQXJnJiYhaXNCdWZmJiZpc1R5cGVkQXJyYXkodmFsdWUpLHNraXBJbmRleGVzPWlzQXJyfHxpc0FyZ3x8aXNCdWZmfHxpc1R5cGUscmVzdWx0PXNraXBJbmRleGVzP2Jhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsU3RyaW5nKTpbXSxsZW5ndGg9cmVzdWx0Lmxlbmd0aDtmb3IodmFyIGtleSBpbiB2YWx1ZSl7aWYoKGluaGVyaXRlZHx8aGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSxrZXkpKSYmIShza2lwSW5kZXhlcyYmKC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbmtleT09J2xlbmd0aCd8fC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuaXNCdWZmJiYoa2V5PT0nb2Zmc2V0J3x8a2V5PT0ncGFyZW50Jyl8fC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbmlzVHlwZSYmKGtleT09J2J1ZmZlcid8fGtleT09J2J5dGVMZW5ndGgnfHxrZXk9PSdieXRlT2Zmc2V0Jyl8fC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbmlzSW5kZXgoa2V5LGxlbmd0aCkpKSl7cmVzdWx0LnB1c2goa2V5KTt9fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlYCBmb3IgYXJyYXlzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICAgICAqL2Z1bmN0aW9uIGFycmF5U2FtcGxlKGFycmF5KXt2YXIgbGVuZ3RoPWFycmF5Lmxlbmd0aDtyZXR1cm4gbGVuZ3RoP2FycmF5W2Jhc2VSYW5kb20oMCxsZW5ndGgtMSldOnVuZGVmaW5lZDt9LyoqXG4gICAgICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zYW1wbGVTaXplYCBmb3IgYXJyYXlzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICAgICAqL2Z1bmN0aW9uIGFycmF5U2FtcGxlU2l6ZShhcnJheSxuKXtyZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSxiYXNlQ2xhbXAobiwwLGFycmF5Lmxlbmd0aCkpO30vKipcbiAgICAgICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIGZvciBhcnJheXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgICAgICovZnVuY3Rpb24gYXJyYXlTaHVmZmxlKGFycmF5KXtyZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSk7fS8qKlxuICAgICAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFzc2lnblZhbHVlYCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFzc2lnblxuICAgICAgICAgKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LGtleSx2YWx1ZSl7aWYodmFsdWUhPT11bmRlZmluZWQmJiFlcShvYmplY3Rba2V5XSx2YWx1ZSl8fHZhbHVlPT09dW5kZWZpbmVkJiYhKGtleSBpbiBvYmplY3QpKXtiYXNlQXNzaWduVmFsdWUob2JqZWN0LGtleSx2YWx1ZSk7fX0vKipcbiAgICAgICAgICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICAgICAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCxrZXksdmFsdWUpe3ZhciBvYmpWYWx1ZT1vYmplY3Rba2V5XTtpZighKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LGtleSkmJmVxKG9ialZhbHVlLHZhbHVlKSl8fHZhbHVlPT09dW5kZWZpbmVkJiYhKGtleSBpbiBvYmplY3QpKXtiYXNlQXNzaWduVmFsdWUob2JqZWN0LGtleSx2YWx1ZSk7fX0vKipcbiAgICAgICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAgICAgKi9mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksa2V5KXt2YXIgbGVuZ3RoPWFycmF5Lmxlbmd0aDt3aGlsZShsZW5ndGgtLSl7aWYoZXEoYXJyYXlbbGVuZ3RoXVswXSxrZXkpKXtyZXR1cm4gbGVuZ3RoO319cmV0dXJuLTE7fS8qKlxuICAgICAgICAgKiBBZ2dyZWdhdGVzIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBvbiBgYWNjdW11bGF0b3JgIHdpdGgga2V5cyB0cmFuc2Zvcm1lZFxuICAgICAgICAgKiBieSBgaXRlcmF0ZWVgIGFuZCB2YWx1ZXMgc2V0IGJ5IGBzZXR0ZXJgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VBZ2dyZWdhdG9yKGNvbGxlY3Rpb24sc2V0dGVyLGl0ZXJhdGVlLGFjY3VtdWxhdG9yKXtiYXNlRWFjaChjb2xsZWN0aW9uLGZ1bmN0aW9uKHZhbHVlLGtleSxjb2xsZWN0aW9uKXtzZXR0ZXIoYWNjdW11bGF0b3IsdmFsdWUsaXRlcmF0ZWUodmFsdWUpLGNvbGxlY3Rpb24pO30pO3JldHVybiBhY2N1bXVsYXRvcjt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gICAgICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3Qsc291cmNlKXtyZXR1cm4gb2JqZWN0JiZjb3B5T2JqZWN0KHNvdXJjZSxrZXlzKHNvdXJjZSksb2JqZWN0KTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgICAgICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LHNvdXJjZSl7cmV0dXJuIG9iamVjdCYmY29weU9iamVjdChzb3VyY2Usa2V5c0luKHNvdXJjZSksb2JqZWN0KTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gICAgICAgICAqIHZhbHVlIGNoZWNrcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCxrZXksdmFsdWUpe2lmKGtleT09J19fcHJvdG9fXycmJmRlZmluZVByb3BlcnR5KXtkZWZpbmVQcm9wZXJ0eShvYmplY3Qsa2V5LHtjb25maWd1cmFibGU6dHJ1ZSxlbnVtZXJhYmxlOnRydWUsdmFsdWU6dmFsdWUsd3JpdGFibGU6dHJ1ZX0pO31lbHNle29iamVjdFtrZXldPXZhbHVlO319LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmF0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWwgcGF0aHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCBlbGVtZW50cy5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUF0KG9iamVjdCxwYXRocyl7dmFyIGluZGV4PS0xLGxlbmd0aD1wYXRocy5sZW5ndGgscmVzdWx0PUFycmF5KGxlbmd0aCksc2tpcD1vYmplY3Q9PW51bGw7d2hpbGUoKytpbmRleDxsZW5ndGgpe3Jlc3VsdFtpbmRleF09c2tpcD91bmRlZmluZWQ6Z2V0KG9iamVjdCxwYXRoc1tpbmRleF0pO31yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xhbXBgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLGxvd2VyLHVwcGVyKXtpZihudW1iZXI9PT1udW1iZXIpe2lmKHVwcGVyIT09dW5kZWZpbmVkKXtudW1iZXI9bnVtYmVyPD11cHBlcj9udW1iZXI6dXBwZXI7fWlmKGxvd2VyIT09dW5kZWZpbmVkKXtudW1iZXI9bnVtYmVyPj1sb3dlcj9udW1iZXI6bG93ZXI7fX1yZXR1cm4gbnVtYmVyO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICAgICAgICAgKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgICAgICogIDEgLSBEZWVwIGNsb25lXG4gICAgICAgICAqICAyIC0gRmxhdHRlbiBpbmhlcml0ZWQgcHJvcGVydGllc1xuICAgICAgICAgKiAgNCAtIENsb25lIHN5bWJvbHNcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsYml0bWFzayxjdXN0b21pemVyLGtleSxvYmplY3Qsc3RhY2spe3ZhciByZXN1bHQsaXNEZWVwPWJpdG1hc2smQ0xPTkVfREVFUF9GTEFHLGlzRmxhdD1iaXRtYXNrJkNMT05FX0ZMQVRfRkxBRyxpc0Z1bGw9Yml0bWFzayZDTE9ORV9TWU1CT0xTX0ZMQUc7aWYoY3VzdG9taXplcil7cmVzdWx0PW9iamVjdD9jdXN0b21pemVyKHZhbHVlLGtleSxvYmplY3Qsc3RhY2spOmN1c3RvbWl6ZXIodmFsdWUpO31pZihyZXN1bHQhPT11bmRlZmluZWQpe3JldHVybiByZXN1bHQ7fWlmKCFpc09iamVjdCh2YWx1ZSkpe3JldHVybiB2YWx1ZTt9dmFyIGlzQXJyPWlzQXJyYXkodmFsdWUpO2lmKGlzQXJyKXtyZXN1bHQ9aW5pdENsb25lQXJyYXkodmFsdWUpO2lmKCFpc0RlZXApe3JldHVybiBjb3B5QXJyYXkodmFsdWUscmVzdWx0KTt9fWVsc2V7dmFyIHRhZz1nZXRUYWcodmFsdWUpLGlzRnVuYz10YWc9PWZ1bmNUYWd8fHRhZz09Z2VuVGFnO2lmKGlzQnVmZmVyKHZhbHVlKSl7cmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLGlzRGVlcCk7fWlmKHRhZz09b2JqZWN0VGFnfHx0YWc9PWFyZ3NUYWd8fGlzRnVuYyYmIW9iamVjdCl7cmVzdWx0PWlzRmxhdHx8aXNGdW5jP3t9OmluaXRDbG9uZU9iamVjdCh2YWx1ZSk7aWYoIWlzRGVlcCl7cmV0dXJuIGlzRmxhdD9jb3B5U3ltYm9sc0luKHZhbHVlLGJhc2VBc3NpZ25JbihyZXN1bHQsdmFsdWUpKTpjb3B5U3ltYm9scyh2YWx1ZSxiYXNlQXNzaWduKHJlc3VsdCx2YWx1ZSkpO319ZWxzZXtpZighY2xvbmVhYmxlVGFnc1t0YWddKXtyZXR1cm4gb2JqZWN0P3ZhbHVlOnt9O31yZXN1bHQ9aW5pdENsb25lQnlUYWcodmFsdWUsdGFnLGlzRGVlcCk7fX0vLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgcmV0dXJuIGl0cyBjb3JyZXNwb25kaW5nIGNsb25lLlxuc3RhY2t8fChzdGFjaz1uZXcgU3RhY2soKSk7dmFyIHN0YWNrZWQ9c3RhY2suZ2V0KHZhbHVlKTtpZihzdGFja2VkKXtyZXR1cm4gc3RhY2tlZDt9c3RhY2suc2V0KHZhbHVlLHJlc3VsdCk7aWYoaXNTZXQodmFsdWUpKXt2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlKXtyZXN1bHQuYWRkKGJhc2VDbG9uZShzdWJWYWx1ZSxiaXRtYXNrLGN1c3RvbWl6ZXIsc3ViVmFsdWUsdmFsdWUsc3RhY2spKTt9KTtyZXR1cm4gcmVzdWx0O31pZihpc01hcCh2YWx1ZSkpe3ZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUsa2V5KXtyZXN1bHQuc2V0KGtleSxiYXNlQ2xvbmUoc3ViVmFsdWUsYml0bWFzayxjdXN0b21pemVyLGtleSx2YWx1ZSxzdGFjaykpO30pO3JldHVybiByZXN1bHQ7fXZhciBrZXlzRnVuYz1pc0Z1bGw/aXNGbGF0P2dldEFsbEtleXNJbjpnZXRBbGxLZXlzOmlzRmxhdD9rZXlzSW46a2V5czt2YXIgcHJvcHM9aXNBcnI/dW5kZWZpbmVkOmtleXNGdW5jKHZhbHVlKTthcnJheUVhY2gocHJvcHN8fHZhbHVlLGZ1bmN0aW9uKHN1YlZhbHVlLGtleSl7aWYocHJvcHMpe2tleT1zdWJWYWx1ZTtzdWJWYWx1ZT12YWx1ZVtrZXldO30vLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuYXNzaWduVmFsdWUocmVzdWx0LGtleSxiYXNlQ2xvbmUoc3ViVmFsdWUsYml0bWFzayxjdXN0b21pemVyLGtleSx2YWx1ZSxzdGFjaykpO30pO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUNvbmZvcm1zKHNvdXJjZSl7dmFyIHByb3BzPWtleXMoc291cmNlKTtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0KXtyZXR1cm4gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LHNvdXJjZSxwcm9wcyk7fTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zVG9gIHdoaWNoIGFjY2VwdHMgYHByb3BzYCB0byBjaGVjay5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBjb25mb3JtcywgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlQ29uZm9ybXNUbyhvYmplY3Qsc291cmNlLHByb3BzKXt2YXIgbGVuZ3RoPXByb3BzLmxlbmd0aDtpZihvYmplY3Q9PW51bGwpe3JldHVybiFsZW5ndGg7fW9iamVjdD1PYmplY3Qob2JqZWN0KTt3aGlsZShsZW5ndGgtLSl7dmFyIGtleT1wcm9wc1tsZW5ndGhdLHByZWRpY2F0ZT1zb3VyY2Vba2V5XSx2YWx1ZT1vYmplY3Rba2V5XTtpZih2YWx1ZT09PXVuZGVmaW5lZCYmIShrZXkgaW4gb2JqZWN0KXx8IXByZWRpY2F0ZSh2YWx1ZSkpe3JldHVybiBmYWxzZTt9fXJldHVybiB0cnVlO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZGVsYXlgIGFuZCBgXy5kZWZlcmAgd2hpY2ggYWNjZXB0cyBgYXJnc2BcbiAgICAgICAgICogdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ8T2JqZWN0fSBSZXR1cm5zIHRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZURlbGF5KGZ1bmMsd2FpdCxhcmdzKXtpZih0eXBlb2YgZnVuYyE9PSdmdW5jdGlvbicpe3Rocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTt9cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmdW5jLmFwcGx5KHVuZGVmaW5lZCxhcmdzKTt9LHdhaXQpO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRpZmZlcmVuY2VgIHdpdGhvdXQgc3VwcG9ydFxuICAgICAgICAgKiBmb3IgZXhjbHVkaW5nIG11bHRpcGxlIGFycmF5cyBvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZURpZmZlcmVuY2UoYXJyYXksdmFsdWVzLGl0ZXJhdGVlLGNvbXBhcmF0b3Ipe3ZhciBpbmRleD0tMSxpbmNsdWRlcz1hcnJheUluY2x1ZGVzLGlzQ29tbW9uPXRydWUsbGVuZ3RoPWFycmF5Lmxlbmd0aCxyZXN1bHQ9W10sdmFsdWVzTGVuZ3RoPXZhbHVlcy5sZW5ndGg7aWYoIWxlbmd0aCl7cmV0dXJuIHJlc3VsdDt9aWYoaXRlcmF0ZWUpe3ZhbHVlcz1hcnJheU1hcCh2YWx1ZXMsYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7fWlmKGNvbXBhcmF0b3Ipe2luY2x1ZGVzPWFycmF5SW5jbHVkZXNXaXRoO2lzQ29tbW9uPWZhbHNlO31lbHNlIGlmKHZhbHVlcy5sZW5ndGg+PUxBUkdFX0FSUkFZX1NJWkUpe2luY2x1ZGVzPWNhY2hlSGFzO2lzQ29tbW9uPWZhbHNlO3ZhbHVlcz1uZXcgU2V0Q2FjaGUodmFsdWVzKTt9b3V0ZXI6d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF0sY29tcHV0ZWQ9aXRlcmF0ZWU9PW51bGw/dmFsdWU6aXRlcmF0ZWUodmFsdWUpO3ZhbHVlPWNvbXBhcmF0b3J8fHZhbHVlIT09MD92YWx1ZTowO2lmKGlzQ29tbW9uJiZjb21wdXRlZD09PWNvbXB1dGVkKXt2YXIgdmFsdWVzSW5kZXg9dmFsdWVzTGVuZ3RoO3doaWxlKHZhbHVlc0luZGV4LS0pe2lmKHZhbHVlc1t2YWx1ZXNJbmRleF09PT1jb21wdXRlZCl7Y29udGludWUgb3V0ZXI7fX1yZXN1bHQucHVzaCh2YWx1ZSk7fWVsc2UgaWYoIWluY2x1ZGVzKHZhbHVlcyxjb21wdXRlZCxjb21wYXJhdG9yKSl7cmVzdWx0LnB1c2godmFsdWUpO319cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgICAgICovdmFyIGJhc2VFYWNoPWNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pOy8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgICAgICovdmFyIGJhc2VFYWNoUmlnaHQ9Y3JlYXRlQmFzZUVhY2goYmFzZUZvck93blJpZ2h0LHRydWUpOy8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ldmVyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgICAgICogIGVsc2UgYGZhbHNlYFxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlRXZlcnkoY29sbGVjdGlvbixwcmVkaWNhdGUpe3ZhciByZXN1bHQ9dHJ1ZTtiYXNlRWFjaChjb2xsZWN0aW9uLGZ1bmN0aW9uKHZhbHVlLGluZGV4LGNvbGxlY3Rpb24pe3Jlc3VsdD0hIXByZWRpY2F0ZSh2YWx1ZSxpbmRleCxjb2xsZWN0aW9uKTtyZXR1cm4gcmVzdWx0O30pO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ubWF4YCBhbmQgYF8ubWluYCB3aGljaCBhY2NlcHRzIGFcbiAgICAgICAgICogYGNvbXBhcmF0b3JgIHRvIGRldGVybWluZSB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgdXNlZCB0byBjb21wYXJlIHZhbHVlcy5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlRXh0cmVtdW0oYXJyYXksaXRlcmF0ZWUsY29tcGFyYXRvcil7dmFyIGluZGV4PS0xLGxlbmd0aD1hcnJheS5sZW5ndGg7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF0sY3VycmVudD1pdGVyYXRlZSh2YWx1ZSk7aWYoY3VycmVudCE9bnVsbCYmKGNvbXB1dGVkPT09dW5kZWZpbmVkP2N1cnJlbnQ9PT1jdXJyZW50JiYhaXNTeW1ib2woY3VycmVudCk6Y29tcGFyYXRvcihjdXJyZW50LGNvbXB1dGVkKSkpe3ZhciBjb21wdXRlZD1jdXJyZW50LHJlc3VsdD12YWx1ZTt9fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWxsYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VGaWxsKGFycmF5LHZhbHVlLHN0YXJ0LGVuZCl7dmFyIGxlbmd0aD1hcnJheS5sZW5ndGg7c3RhcnQ9dG9JbnRlZ2VyKHN0YXJ0KTtpZihzdGFydDwwKXtzdGFydD0tc3RhcnQ+bGVuZ3RoPzA6bGVuZ3RoK3N0YXJ0O31lbmQ9ZW5kPT09dW5kZWZpbmVkfHxlbmQ+bGVuZ3RoP2xlbmd0aDp0b0ludGVnZXIoZW5kKTtpZihlbmQ8MCl7ZW5kKz1sZW5ndGg7fWVuZD1zdGFydD5lbmQ/MDp0b0xlbmd0aChlbmQpO3doaWxlKHN0YXJ0PGVuZCl7YXJyYXlbc3RhcnQrK109dmFsdWU7fXJldHVybiBhcnJheTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLHByZWRpY2F0ZSl7dmFyIHJlc3VsdD1bXTtiYXNlRWFjaChjb2xsZWN0aW9uLGZ1bmN0aW9uKHZhbHVlLGluZGV4LGNvbGxlY3Rpb24pe2lmKHByZWRpY2F0ZSh2YWx1ZSxpbmRleCxjb2xsZWN0aW9uKSl7cmVzdWx0LnB1c2godmFsdWUpO319KTtyZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBbcHJlZGljYXRlPWlzRmxhdHRlbmFibGVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VGbGF0dGVuKGFycmF5LGRlcHRoLHByZWRpY2F0ZSxpc1N0cmljdCxyZXN1bHQpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXkubGVuZ3RoO3ByZWRpY2F0ZXx8KHByZWRpY2F0ZT1pc0ZsYXR0ZW5hYmxlKTtyZXN1bHR8fChyZXN1bHQ9W10pO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgdmFsdWU9YXJyYXlbaW5kZXhdO2lmKGRlcHRoPjAmJnByZWRpY2F0ZSh2YWx1ZSkpe2lmKGRlcHRoPjEpey8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG5iYXNlRmxhdHRlbih2YWx1ZSxkZXB0aC0xLHByZWRpY2F0ZSxpc1N0cmljdCxyZXN1bHQpO31lbHNle2FycmF5UHVzaChyZXN1bHQsdmFsdWUpO319ZWxzZSBpZighaXNTdHJpY3Qpe3Jlc3VsdFtyZXN1bHQubGVuZ3RoXT12YWx1ZTt9fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvck93bmAgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgb2JqZWN0YFxuICAgICAgICAgKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKi92YXIgYmFzZUZvcj1jcmVhdGVCYXNlRm9yKCk7LyoqXG4gICAgICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUZvcmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzXG4gICAgICAgICAqIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAgICovdmFyIGJhc2VGb3JSaWdodD1jcmVhdGVCYXNlRm9yKHRydWUpOy8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsaXRlcmF0ZWUpe3JldHVybiBvYmplY3QmJmJhc2VGb3Iob2JqZWN0LGl0ZXJhdGVlLGtleXMpO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUZvck93blJpZ2h0KG9iamVjdCxpdGVyYXRlZSl7cmV0dXJuIG9iamVjdCYmYmFzZUZvclJpZ2h0KG9iamVjdCxpdGVyYXRlZSxrZXlzKTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZ1bmN0aW9uc2Agd2hpY2ggY3JlYXRlcyBhbiBhcnJheSBvZlxuICAgICAgICAgKiBgb2JqZWN0YCBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmaWx0ZXJlZCBmcm9tIGBwcm9wc2AuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZmlsdGVyLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlRnVuY3Rpb25zKG9iamVjdCxwcm9wcyl7cmV0dXJuIGFycmF5RmlsdGVyKHByb3BzLGZ1bmN0aW9uKGtleSl7cmV0dXJuIGlzRnVuY3Rpb24ob2JqZWN0W2tleV0pO30pO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUdldChvYmplY3QscGF0aCl7cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7dmFyIGluZGV4PTAsbGVuZ3RoPXBhdGgubGVuZ3RoO3doaWxlKG9iamVjdCE9bnVsbCYmaW5kZXg8bGVuZ3RoKXtvYmplY3Q9b2JqZWN0W3RvS2V5KHBhdGhbaW5kZXgrK10pXTt9cmV0dXJuIGluZGV4JiZpbmRleD09bGVuZ3RoP29iamVjdDp1bmRlZmluZWQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0QWxsS2V5c2AgYW5kIGBnZXRBbGxLZXlzSW5gIHdoaWNoIHVzZXNcbiAgICAgICAgICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gICAgICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LGtleXNGdW5jLHN5bWJvbHNGdW5jKXt2YXIgcmVzdWx0PWtleXNGdW5jKG9iamVjdCk7cmV0dXJuIGlzQXJyYXkob2JqZWN0KT9yZXN1bHQ6YXJyYXlQdXNoKHJlc3VsdCxzeW1ib2xzRnVuYyhvYmplY3QpKTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKXtpZih2YWx1ZT09bnVsbCl7cmV0dXJuIHZhbHVlPT09dW5kZWZpbmVkP3VuZGVmaW5lZFRhZzpudWxsVGFnO31yZXR1cm4gc3ltVG9TdHJpbmdUYWcmJnN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSk/Z2V0UmF3VGFnKHZhbHVlKTpvYmplY3RUb1N0cmluZyh2YWx1ZSk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUd0KHZhbHVlLG90aGVyKXtyZXR1cm4gdmFsdWU+b3RoZXI7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlSGFzKG9iamVjdCxrZXkpe3JldHVybiBvYmplY3QhPW51bGwmJmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LGtleSk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNJbmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VIYXNJbihvYmplY3Qsa2V5KXtyZXR1cm4gb2JqZWN0IT1udWxsJiZrZXkgaW4gT2JqZWN0KG9iamVjdCk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pblJhbmdlYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgbnVtYmVyYCBpcyBpbiB0aGUgcmFuZ2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUluUmFuZ2UobnVtYmVyLHN0YXJ0LGVuZCl7cmV0dXJuIG51bWJlcj49bmF0aXZlTWluKHN0YXJ0LGVuZCkmJm51bWJlcjxuYXRpdmVNYXgoc3RhcnQsZW5kKTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gLCB3aXRob3V0IHN1cHBvcnRcbiAgICAgICAgICogZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHRoYXQgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXlzIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHNoYXJlZCB2YWx1ZXMuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VJbnRlcnNlY3Rpb24oYXJyYXlzLGl0ZXJhdGVlLGNvbXBhcmF0b3Ipe3ZhciBpbmNsdWRlcz1jb21wYXJhdG9yP2FycmF5SW5jbHVkZXNXaXRoOmFycmF5SW5jbHVkZXMsbGVuZ3RoPWFycmF5c1swXS5sZW5ndGgsb3RoTGVuZ3RoPWFycmF5cy5sZW5ndGgsb3RoSW5kZXg9b3RoTGVuZ3RoLGNhY2hlcz1BcnJheShvdGhMZW5ndGgpLG1heExlbmd0aD1JbmZpbml0eSxyZXN1bHQ9W107d2hpbGUob3RoSW5kZXgtLSl7dmFyIGFycmF5PWFycmF5c1tvdGhJbmRleF07aWYob3RoSW5kZXgmJml0ZXJhdGVlKXthcnJheT1hcnJheU1hcChhcnJheSxiYXNlVW5hcnkoaXRlcmF0ZWUpKTt9bWF4TGVuZ3RoPW5hdGl2ZU1pbihhcnJheS5sZW5ndGgsbWF4TGVuZ3RoKTtjYWNoZXNbb3RoSW5kZXhdPSFjb21wYXJhdG9yJiYoaXRlcmF0ZWV8fGxlbmd0aD49MTIwJiZhcnJheS5sZW5ndGg+PTEyMCk/bmV3IFNldENhY2hlKG90aEluZGV4JiZhcnJheSk6dW5kZWZpbmVkO31hcnJheT1hcnJheXNbMF07dmFyIGluZGV4PS0xLHNlZW49Y2FjaGVzWzBdO291dGVyOndoaWxlKCsraW5kZXg8bGVuZ3RoJiZyZXN1bHQubGVuZ3RoPG1heExlbmd0aCl7dmFyIHZhbHVlPWFycmF5W2luZGV4XSxjb21wdXRlZD1pdGVyYXRlZT9pdGVyYXRlZSh2YWx1ZSk6dmFsdWU7dmFsdWU9Y29tcGFyYXRvcnx8dmFsdWUhPT0wP3ZhbHVlOjA7aWYoIShzZWVuP2NhY2hlSGFzKHNlZW4sY29tcHV0ZWQpOmluY2x1ZGVzKHJlc3VsdCxjb21wdXRlZCxjb21wYXJhdG9yKSkpe290aEluZGV4PW90aExlbmd0aDt3aGlsZSgtLW90aEluZGV4KXt2YXIgY2FjaGU9Y2FjaGVzW290aEluZGV4XTtpZighKGNhY2hlP2NhY2hlSGFzKGNhY2hlLGNvbXB1dGVkKTppbmNsdWRlcyhhcnJheXNbb3RoSW5kZXhdLGNvbXB1dGVkLGNvbXBhcmF0b3IpKSl7Y29udGludWUgb3V0ZXI7fX1pZihzZWVuKXtzZWVuLnB1c2goY29tcHV0ZWQpO31yZXN1bHQucHVzaCh2YWx1ZSk7fX1yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW52ZXJ0YCBhbmQgYF8uaW52ZXJ0QnlgIHdoaWNoIGludmVydHNcbiAgICAgICAgICogYG9iamVjdGAgd2l0aCB2YWx1ZXMgdHJhbnNmb3JtZWQgYnkgYGl0ZXJhdGVlYCBhbmQgc2V0IGJ5IGBzZXR0ZXJgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSB2YWx1ZXMuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBpbnZlcnRlZCBvYmplY3QuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlSW52ZXJ0ZXIob2JqZWN0LHNldHRlcixpdGVyYXRlZSxhY2N1bXVsYXRvcil7YmFzZUZvck93bihvYmplY3QsZnVuY3Rpb24odmFsdWUsa2V5LG9iamVjdCl7c2V0dGVyKGFjY3VtdWxhdG9yLGl0ZXJhdGVlKHZhbHVlKSxrZXksb2JqZWN0KTt9KTtyZXR1cm4gYWNjdW11bGF0b3I7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZva2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAgICAgKiBtZXRob2QgYXJndW1lbnRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VJbnZva2Uob2JqZWN0LHBhdGgsYXJncyl7cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7b2JqZWN0PXBhcmVudChvYmplY3QscGF0aCk7dmFyIGZ1bmM9b2JqZWN0PT1udWxsP29iamVjdDpvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO3JldHVybiBmdW5jPT1udWxsP3VuZGVmaW5lZDphcHBseShmdW5jLG9iamVjdCxhcmdzKTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmYmFzZUdldFRhZyh2YWx1ZSk9PWFyZ3NUYWc7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FycmF5QnVmZmVyYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlSXNBcnJheUJ1ZmZlcih2YWx1ZSl7cmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkmJmJhc2VHZXRUYWcodmFsdWUpPT1hcnJheUJ1ZmZlclRhZzt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRGF0ZWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VJc0RhdGUodmFsdWUpe3JldHVybiBpc09iamVjdExpa2UodmFsdWUpJiZiYXNlR2V0VGFnKHZhbHVlKT09ZGF0ZVRhZzt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAgICAgICAgICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAgICAgKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gICAgICAgICAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsb3RoZXIsYml0bWFzayxjdXN0b21pemVyLHN0YWNrKXtpZih2YWx1ZT09PW90aGVyKXtyZXR1cm4gdHJ1ZTt9aWYodmFsdWU9PW51bGx8fG90aGVyPT1udWxsfHwhaXNPYmplY3RMaWtlKHZhbHVlKSYmIWlzT2JqZWN0TGlrZShvdGhlcikpe3JldHVybiB2YWx1ZSE9PXZhbHVlJiZvdGhlciE9PW90aGVyO31yZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLG90aGVyLGJpdG1hc2ssY3VzdG9taXplcixiYXNlSXNFcXVhbCxzdGFjayk7fS8qKlxuICAgICAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICAgICAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgICAgICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCxvdGhlcixiaXRtYXNrLGN1c3RvbWl6ZXIsZXF1YWxGdW5jLHN0YWNrKXt2YXIgb2JqSXNBcnI9aXNBcnJheShvYmplY3QpLG90aElzQXJyPWlzQXJyYXkob3RoZXIpLG9ialRhZz1vYmpJc0Fycj9hcnJheVRhZzpnZXRUYWcob2JqZWN0KSxvdGhUYWc9b3RoSXNBcnI/YXJyYXlUYWc6Z2V0VGFnKG90aGVyKTtvYmpUYWc9b2JqVGFnPT1hcmdzVGFnP29iamVjdFRhZzpvYmpUYWc7b3RoVGFnPW90aFRhZz09YXJnc1RhZz9vYmplY3RUYWc6b3RoVGFnO3ZhciBvYmpJc09iaj1vYmpUYWc9PW9iamVjdFRhZyxvdGhJc09iaj1vdGhUYWc9PW9iamVjdFRhZyxpc1NhbWVUYWc9b2JqVGFnPT1vdGhUYWc7aWYoaXNTYW1lVGFnJiZpc0J1ZmZlcihvYmplY3QpKXtpZighaXNCdWZmZXIob3RoZXIpKXtyZXR1cm4gZmFsc2U7fW9iaklzQXJyPXRydWU7b2JqSXNPYmo9ZmFsc2U7fWlmKGlzU2FtZVRhZyYmIW9iaklzT2JqKXtzdGFja3x8KHN0YWNrPW5ldyBTdGFjaygpKTtyZXR1cm4gb2JqSXNBcnJ8fGlzVHlwZWRBcnJheShvYmplY3QpP2VxdWFsQXJyYXlzKG9iamVjdCxvdGhlcixiaXRtYXNrLGN1c3RvbWl6ZXIsZXF1YWxGdW5jLHN0YWNrKTplcXVhbEJ5VGFnKG9iamVjdCxvdGhlcixvYmpUYWcsYml0bWFzayxjdXN0b21pemVyLGVxdWFsRnVuYyxzdGFjayk7fWlmKCEoYml0bWFzayZDT01QQVJFX1BBUlRJQUxfRkxBRykpe3ZhciBvYmpJc1dyYXBwZWQ9b2JqSXNPYmomJmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCdfX3dyYXBwZWRfXycpLG90aElzV3JhcHBlZD1vdGhJc09iaiYmaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwnX193cmFwcGVkX18nKTtpZihvYmpJc1dyYXBwZWR8fG90aElzV3JhcHBlZCl7dmFyIG9ialVud3JhcHBlZD1vYmpJc1dyYXBwZWQ/b2JqZWN0LnZhbHVlKCk6b2JqZWN0LG90aFVud3JhcHBlZD1vdGhJc1dyYXBwZWQ/b3RoZXIudmFsdWUoKTpvdGhlcjtzdGFja3x8KHN0YWNrPW5ldyBTdGFjaygpKTtyZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCxvdGhVbndyYXBwZWQsYml0bWFzayxjdXN0b21pemVyLHN0YWNrKTt9fWlmKCFpc1NhbWVUYWcpe3JldHVybiBmYWxzZTt9c3RhY2t8fChzdGFjaz1uZXcgU3RhY2soKSk7cmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3Qsb3RoZXIsYml0bWFzayxjdXN0b21pemVyLGVxdWFsRnVuYyxzdGFjayk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpe3JldHVybiBpc09iamVjdExpa2UodmFsdWUpJiZnZXRUYWcodmFsdWUpPT1tYXBUYWc7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBtYXRjaERhdGEgVGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIHRvIG1hdGNoLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LHNvdXJjZSxtYXRjaERhdGEsY3VzdG9taXplcil7dmFyIGluZGV4PW1hdGNoRGF0YS5sZW5ndGgsbGVuZ3RoPWluZGV4LG5vQ3VzdG9taXplcj0hY3VzdG9taXplcjtpZihvYmplY3Q9PW51bGwpe3JldHVybiFsZW5ndGg7fW9iamVjdD1PYmplY3Qob2JqZWN0KTt3aGlsZShpbmRleC0tKXt2YXIgZGF0YT1tYXRjaERhdGFbaW5kZXhdO2lmKG5vQ3VzdG9taXplciYmZGF0YVsyXT9kYXRhWzFdIT09b2JqZWN0W2RhdGFbMF1dOiEoZGF0YVswXWluIG9iamVjdCkpe3JldHVybiBmYWxzZTt9fXdoaWxlKCsraW5kZXg8bGVuZ3RoKXtkYXRhPW1hdGNoRGF0YVtpbmRleF07dmFyIGtleT1kYXRhWzBdLG9ialZhbHVlPW9iamVjdFtrZXldLHNyY1ZhbHVlPWRhdGFbMV07aWYobm9DdXN0b21pemVyJiZkYXRhWzJdKXtpZihvYmpWYWx1ZT09PXVuZGVmaW5lZCYmIShrZXkgaW4gb2JqZWN0KSl7cmV0dXJuIGZhbHNlO319ZWxzZXt2YXIgc3RhY2s9bmV3IFN0YWNrKCk7aWYoY3VzdG9taXplcil7dmFyIHJlc3VsdD1jdXN0b21pemVyKG9ialZhbHVlLHNyY1ZhbHVlLGtleSxvYmplY3Qsc291cmNlLHN0YWNrKTt9aWYoIShyZXN1bHQ9PT11bmRlZmluZWQ/YmFzZUlzRXF1YWwoc3JjVmFsdWUsb2JqVmFsdWUsQ09NUEFSRV9QQVJUSUFMX0ZMQUd8Q09NUEFSRV9VTk9SREVSRURfRkxBRyxjdXN0b21pemVyLHN0YWNrKTpyZXN1bHQpKXtyZXR1cm4gZmFsc2U7fX19cmV0dXJuIHRydWU7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKXtpZighaXNPYmplY3QodmFsdWUpfHxpc01hc2tlZCh2YWx1ZSkpe3JldHVybiBmYWxzZTt9dmFyIHBhdHRlcm49aXNGdW5jdGlvbih2YWx1ZSk/cmVJc05hdGl2ZTpyZUlzSG9zdEN0b3I7cmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNSZWdFeHBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUlzUmVnRXhwKHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmYmFzZUdldFRhZyh2YWx1ZSk9PXJlZ2V4cFRhZzt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSl7cmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkmJmdldFRhZyh2YWx1ZSk9PXNldFRhZzt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpe3JldHVybiBpc09iamVjdExpa2UodmFsdWUpJiZpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpJiYhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgaXRlcmF0ZWUuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSl7Ly8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM0IGZvciBtb3JlIGRldGFpbHMuXG5pZih0eXBlb2YgdmFsdWU9PT0nZnVuY3Rpb24nKXtyZXR1cm4gdmFsdWU7fWlmKHZhbHVlPT1udWxsKXtyZXR1cm4gaWRlbnRpdHk7fWlmKCh0eXBlb2YgdmFsdWU9PT0ndW5kZWZpbmVkJz8ndW5kZWZpbmVkJzpfdHlwZW9mKHZhbHVlKSk9PT0nb2JqZWN0Jyl7cmV0dXJuIGlzQXJyYXkodmFsdWUpP2Jhc2VNYXRjaGVzUHJvcGVydHkodmFsdWVbMF0sdmFsdWVbMV0pOmJhc2VNYXRjaGVzKHZhbHVlKTt9cmV0dXJuIHByb3BlcnR5KHZhbHVlKTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlS2V5cyhvYmplY3Qpe2lmKCFpc1Byb3RvdHlwZShvYmplY3QpKXtyZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO312YXIgcmVzdWx0PVtdO2Zvcih2YXIga2V5IGluIE9iamVjdChvYmplY3QpKXtpZihoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCxrZXkpJiZrZXkhPSdjb25zdHJ1Y3Rvcicpe3Jlc3VsdC5wdXNoKGtleSk7fX1yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3Qpe2lmKCFpc09iamVjdChvYmplY3QpKXtyZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7fXZhciBpc1Byb3RvPWlzUHJvdG90eXBlKG9iamVjdCkscmVzdWx0PVtdO2Zvcih2YXIga2V5IGluIG9iamVjdCl7aWYoIShrZXk9PSdjb25zdHJ1Y3RvcicmJihpc1Byb3RvfHwhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3Qsa2V5KSkpKXtyZXN1bHQucHVzaChrZXkpO319cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmx0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlTHQodmFsdWUsb3RoZXIpe3JldHVybiB2YWx1ZTxvdGhlcjt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZU1hcChjb2xsZWN0aW9uLGl0ZXJhdGVlKXt2YXIgaW5kZXg9LTEscmVzdWx0PWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pP0FycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKTpbXTtiYXNlRWFjaChjb2xsZWN0aW9uLGZ1bmN0aW9uKHZhbHVlLGtleSxjb2xsZWN0aW9uKXtyZXN1bHRbKytpbmRleF09aXRlcmF0ZWUodmFsdWUsa2V5LGNvbGxlY3Rpb24pO30pO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlTWF0Y2hlcyhzb3VyY2Upe3ZhciBtYXRjaERhdGE9Z2V0TWF0Y2hEYXRhKHNvdXJjZSk7aWYobWF0Y2hEYXRhLmxlbmd0aD09MSYmbWF0Y2hEYXRhWzBdWzJdKXtyZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLG1hdGNoRGF0YVswXVsxXSk7fXJldHVybiBmdW5jdGlvbihvYmplY3Qpe3JldHVybiBvYmplY3Q9PT1zb3VyY2V8fGJhc2VJc01hdGNoKG9iamVjdCxzb3VyY2UsbWF0Y2hEYXRhKTt9O30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsc3JjVmFsdWUpe2lmKGlzS2V5KHBhdGgpJiZpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKXtyZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksc3JjVmFsdWUpO31yZXR1cm4gZnVuY3Rpb24ob2JqZWN0KXt2YXIgb2JqVmFsdWU9Z2V0KG9iamVjdCxwYXRoKTtyZXR1cm4gb2JqVmFsdWU9PT11bmRlZmluZWQmJm9ialZhbHVlPT09c3JjVmFsdWU/aGFzSW4ob2JqZWN0LHBhdGgpOmJhc2VJc0VxdWFsKHNyY1ZhbHVlLG9ialZhbHVlLENPTVBBUkVfUEFSVElBTF9GTEFHfENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO307fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZXJnZWAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VNZXJnZShvYmplY3Qsc291cmNlLHNyY0luZGV4LGN1c3RvbWl6ZXIsc3RhY2spe2lmKG9iamVjdD09PXNvdXJjZSl7cmV0dXJuO31iYXNlRm9yKHNvdXJjZSxmdW5jdGlvbihzcmNWYWx1ZSxrZXkpe2lmKGlzT2JqZWN0KHNyY1ZhbHVlKSl7c3RhY2t8fChzdGFjaz1uZXcgU3RhY2soKSk7YmFzZU1lcmdlRGVlcChvYmplY3Qsc291cmNlLGtleSxzcmNJbmRleCxiYXNlTWVyZ2UsY3VzdG9taXplcixzdGFjayk7fWVsc2V7dmFyIG5ld1ZhbHVlPWN1c3RvbWl6ZXI/Y3VzdG9taXplcihzYWZlR2V0KG9iamVjdCxrZXkpLHNyY1ZhbHVlLGtleSsnJyxvYmplY3Qsc291cmNlLHN0YWNrKTp1bmRlZmluZWQ7aWYobmV3VmFsdWU9PT11bmRlZmluZWQpe25ld1ZhbHVlPXNyY1ZhbHVlO31hc3NpZ25NZXJnZVZhbHVlKG9iamVjdCxrZXksbmV3VmFsdWUpO319LGtleXNJbik7fS8qKlxuICAgICAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICAgICAgICAgKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAgICAgKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCxzb3VyY2Usa2V5LHNyY0luZGV4LG1lcmdlRnVuYyxjdXN0b21pemVyLHN0YWNrKXt2YXIgb2JqVmFsdWU9c2FmZUdldChvYmplY3Qsa2V5KSxzcmNWYWx1ZT1zYWZlR2V0KHNvdXJjZSxrZXkpLHN0YWNrZWQ9c3RhY2suZ2V0KHNyY1ZhbHVlKTtpZihzdGFja2VkKXthc3NpZ25NZXJnZVZhbHVlKG9iamVjdCxrZXksc3RhY2tlZCk7cmV0dXJuO312YXIgbmV3VmFsdWU9Y3VzdG9taXplcj9jdXN0b21pemVyKG9ialZhbHVlLHNyY1ZhbHVlLGtleSsnJyxvYmplY3Qsc291cmNlLHN0YWNrKTp1bmRlZmluZWQ7dmFyIGlzQ29tbW9uPW5ld1ZhbHVlPT09dW5kZWZpbmVkO2lmKGlzQ29tbW9uKXt2YXIgaXNBcnI9aXNBcnJheShzcmNWYWx1ZSksaXNCdWZmPSFpc0FyciYmaXNCdWZmZXIoc3JjVmFsdWUpLGlzVHlwZWQ9IWlzQXJyJiYhaXNCdWZmJiZpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO25ld1ZhbHVlPXNyY1ZhbHVlO2lmKGlzQXJyfHxpc0J1ZmZ8fGlzVHlwZWQpe2lmKGlzQXJyYXkob2JqVmFsdWUpKXtuZXdWYWx1ZT1vYmpWYWx1ZTt9ZWxzZSBpZihpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpe25ld1ZhbHVlPWNvcHlBcnJheShvYmpWYWx1ZSk7fWVsc2UgaWYoaXNCdWZmKXtpc0NvbW1vbj1mYWxzZTtuZXdWYWx1ZT1jbG9uZUJ1ZmZlcihzcmNWYWx1ZSx0cnVlKTt9ZWxzZSBpZihpc1R5cGVkKXtpc0NvbW1vbj1mYWxzZTtuZXdWYWx1ZT1jbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsdHJ1ZSk7fWVsc2V7bmV3VmFsdWU9W107fX1lbHNlIGlmKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpfHxpc0FyZ3VtZW50cyhzcmNWYWx1ZSkpe25ld1ZhbHVlPW9ialZhbHVlO2lmKGlzQXJndW1lbnRzKG9ialZhbHVlKSl7bmV3VmFsdWU9dG9QbGFpbk9iamVjdChvYmpWYWx1ZSk7fWVsc2UgaWYoIWlzT2JqZWN0KG9ialZhbHVlKXx8c3JjSW5kZXgmJmlzRnVuY3Rpb24ob2JqVmFsdWUpKXtuZXdWYWx1ZT1pbml0Q2xvbmVPYmplY3Qoc3JjVmFsdWUpO319ZWxzZXtpc0NvbW1vbj1mYWxzZTt9fWlmKGlzQ29tbW9uKXsvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbnN0YWNrLnNldChzcmNWYWx1ZSxuZXdWYWx1ZSk7bWVyZ2VGdW5jKG5ld1ZhbHVlLHNyY1ZhbHVlLHNyY0luZGV4LGN1c3RvbWl6ZXIsc3RhY2spO3N0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7fWFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LGtleSxuZXdWYWx1ZSk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5udGhgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZU50aChhcnJheSxuKXt2YXIgbGVuZ3RoPWFycmF5Lmxlbmd0aDtpZighbGVuZ3RoKXtyZXR1cm47fW4rPW48MD9sZW5ndGg6MDtyZXR1cm4gaXNJbmRleChuLGxlbmd0aCk/YXJyYXlbbl06dW5kZWZpbmVkO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ub3JkZXJCeWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBpdGVyYXRlZXMgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24saXRlcmF0ZWVzLG9yZGVycyl7dmFyIGluZGV4PS0xO2l0ZXJhdGVlcz1hcnJheU1hcChpdGVyYXRlZXMubGVuZ3RoP2l0ZXJhdGVlczpbaWRlbnRpdHldLGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7dmFyIHJlc3VsdD1iYXNlTWFwKGNvbGxlY3Rpb24sZnVuY3Rpb24odmFsdWUsa2V5LGNvbGxlY3Rpb24pe3ZhciBjcml0ZXJpYT1hcnJheU1hcChpdGVyYXRlZXMsZnVuY3Rpb24oaXRlcmF0ZWUpe3JldHVybiBpdGVyYXRlZSh2YWx1ZSk7fSk7cmV0dXJue2NyaXRlcmlhOmNyaXRlcmlhLGluZGV4OisraW5kZXgsdmFsdWU6dmFsdWV9O30pO3JldHVybiBiYXNlU29ydEJ5KHJlc3VsdCxmdW5jdGlvbihvYmplY3Qsb3RoZXIpe3JldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LG90aGVyLG9yZGVycyk7fSk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgICAgICogcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlUGljayhvYmplY3QscGF0aHMpe3JldHVybiBiYXNlUGlja0J5KG9iamVjdCxwYXRocyxmdW5jdGlvbih2YWx1ZSxwYXRoKXtyZXR1cm4gaGFzSW4ob2JqZWN0LHBhdGgpO30pO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVBpY2tCeShvYmplY3QscGF0aHMscHJlZGljYXRlKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPXBhdGhzLmxlbmd0aCxyZXN1bHQ9e307d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciBwYXRoPXBhdGhzW2luZGV4XSx2YWx1ZT1iYXNlR2V0KG9iamVjdCxwYXRoKTtpZihwcmVkaWNhdGUodmFsdWUscGF0aCkpe2Jhc2VTZXQocmVzdWx0LGNhc3RQYXRoKHBhdGgsb2JqZWN0KSx2YWx1ZSk7fX1yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUHJvcGVydHlgIHdoaWNoIHN1cHBvcnRzIGRlZXAgcGF0aHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpe3JldHVybiBmdW5jdGlvbihvYmplY3Qpe3JldHVybiBiYXNlR2V0KG9iamVjdCxwYXRoKTt9O30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEFsbEJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAgICAgICAqIHNob3J0aGFuZHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlUHVsbEFsbChhcnJheSx2YWx1ZXMsaXRlcmF0ZWUsY29tcGFyYXRvcil7dmFyIGluZGV4T2Y9Y29tcGFyYXRvcj9iYXNlSW5kZXhPZldpdGg6YmFzZUluZGV4T2YsaW5kZXg9LTEsbGVuZ3RoPXZhbHVlcy5sZW5ndGgsc2Vlbj1hcnJheTtpZihhcnJheT09PXZhbHVlcyl7dmFsdWVzPWNvcHlBcnJheSh2YWx1ZXMpO31pZihpdGVyYXRlZSl7c2Vlbj1hcnJheU1hcChhcnJheSxiYXNlVW5hcnkoaXRlcmF0ZWUpKTt9d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciBmcm9tSW5kZXg9MCx2YWx1ZT12YWx1ZXNbaW5kZXhdLGNvbXB1dGVkPWl0ZXJhdGVlP2l0ZXJhdGVlKHZhbHVlKTp2YWx1ZTt3aGlsZSgoZnJvbUluZGV4PWluZGV4T2Yoc2Vlbixjb21wdXRlZCxmcm9tSW5kZXgsY29tcGFyYXRvcikpPi0xKXtpZihzZWVuIT09YXJyYXkpe3NwbGljZS5jYWxsKHNlZW4sZnJvbUluZGV4LDEpO31zcGxpY2UuY2FsbChhcnJheSxmcm9tSW5kZXgsMSk7fX1yZXR1cm4gYXJyYXk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAgICAgKiBpbmRleGVzIG9yIGNhcHR1cmluZyB0aGUgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlUHVsbEF0KGFycmF5LGluZGV4ZXMpe3ZhciBsZW5ndGg9YXJyYXk/aW5kZXhlcy5sZW5ndGg6MCxsYXN0SW5kZXg9bGVuZ3RoLTE7d2hpbGUobGVuZ3RoLS0pe3ZhciBpbmRleD1pbmRleGVzW2xlbmd0aF07aWYobGVuZ3RoPT1sYXN0SW5kZXh8fGluZGV4IT09cHJldmlvdXMpe3ZhciBwcmV2aW91cz1pbmRleDtpZihpc0luZGV4KGluZGV4KSl7c3BsaWNlLmNhbGwoYXJyYXksaW5kZXgsMSk7fWVsc2V7YmFzZVVuc2V0KGFycmF5LGluZGV4KTt9fX1yZXR1cm4gYXJyYXk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yYW5kb21gIHdpdGhvdXQgc3VwcG9ydCBmb3IgcmV0dXJuaW5nXG4gICAgICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3dlciBUaGUgbG93ZXIgYm91bmQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJhbmRvbSBudW1iZXIuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VSYW5kb20obG93ZXIsdXBwZXIpe3JldHVybiBsb3dlcituYXRpdmVGbG9vcihuYXRpdmVSYW5kb20oKSoodXBwZXItbG93ZXIrMSkpO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZ2VgIGFuZCBgXy5yYW5nZVJpZ2h0YCB3aGljaCBkb2Vzbid0XG4gICAgICAgICAqIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RlcCBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVJhbmdlKHN0YXJ0LGVuZCxzdGVwLGZyb21SaWdodCl7dmFyIGluZGV4PS0xLGxlbmd0aD1uYXRpdmVNYXgobmF0aXZlQ2VpbCgoZW5kLXN0YXJ0KS8oc3RlcHx8MSkpLDApLHJlc3VsdD1BcnJheShsZW5ndGgpO3doaWxlKGxlbmd0aC0tKXtyZXN1bHRbZnJvbVJpZ2h0P2xlbmd0aDorK2luZGV4XT1zdGFydDtzdGFydCs9c3RlcDt9cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlcGVhdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nLlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VSZXBlYXQoc3RyaW5nLG4pe3ZhciByZXN1bHQ9Jyc7aWYoIXN0cmluZ3x8bjwxfHxuPk1BWF9TQUZFX0lOVEVHRVIpe3JldHVybiByZXN1bHQ7fS8vIExldmVyYWdlIHRoZSBleHBvbmVudGlhdGlvbiBieSBzcXVhcmluZyBhbGdvcml0aG0gZm9yIGEgZmFzdGVyIHJlcGVhdC5cbi8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBvbmVudGlhdGlvbl9ieV9zcXVhcmluZyBmb3IgbW9yZSBkZXRhaWxzLlxuZG97aWYobiUyKXtyZXN1bHQrPXN0cmluZzt9bj1uYXRpdmVGbG9vcihuLzIpO2lmKG4pe3N0cmluZys9c3RyaW5nO319d2hpbGUobik7cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVJlc3QoZnVuYyxzdGFydCl7cmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsc3RhcnQsaWRlbnRpdHkpLGZ1bmMrJycpO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2FtcGxlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VTYW1wbGUoY29sbGVjdGlvbil7cmV0dXJuIGFycmF5U2FtcGxlKHZhbHVlcyhjb2xsZWN0aW9uKSk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVTaXplYCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VTYW1wbGVTaXplKGNvbGxlY3Rpb24sbil7dmFyIGFycmF5PXZhbHVlcyhjb2xsZWN0aW9uKTtyZXR1cm4gc2h1ZmZsZVNlbGYoYXJyYXksYmFzZUNsYW1wKG4sMCxhcnJheS5sZW5ndGgpKTt9LyoqXG4gICAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVNldChvYmplY3QscGF0aCx2YWx1ZSxjdXN0b21pemVyKXtpZighaXNPYmplY3Qob2JqZWN0KSl7cmV0dXJuIG9iamVjdDt9cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7dmFyIGluZGV4PS0xLGxlbmd0aD1wYXRoLmxlbmd0aCxsYXN0SW5kZXg9bGVuZ3RoLTEsbmVzdGVkPW9iamVjdDt3aGlsZShuZXN0ZWQhPW51bGwmJisraW5kZXg8bGVuZ3RoKXt2YXIga2V5PXRvS2V5KHBhdGhbaW5kZXhdKSxuZXdWYWx1ZT12YWx1ZTtpZihpbmRleCE9bGFzdEluZGV4KXt2YXIgb2JqVmFsdWU9bmVzdGVkW2tleV07bmV3VmFsdWU9Y3VzdG9taXplcj9jdXN0b21pemVyKG9ialZhbHVlLGtleSxuZXN0ZWQpOnVuZGVmaW5lZDtpZihuZXdWYWx1ZT09PXVuZGVmaW5lZCl7bmV3VmFsdWU9aXNPYmplY3Qob2JqVmFsdWUpP29ialZhbHVlOmlzSW5kZXgocGF0aFtpbmRleCsxXSk/W106e307fX1hc3NpZ25WYWx1ZShuZXN0ZWQsa2V5LG5ld1ZhbHVlKTtuZXN0ZWQ9bmVzdGVkW2tleV07fXJldHVybiBvYmplY3Q7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0RGF0YWAgd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICAgICAqL3ZhciBiYXNlU2V0RGF0YT0hbWV0YU1hcD9pZGVudGl0eTpmdW5jdGlvbihmdW5jLGRhdGEpe21ldGFNYXAuc2V0KGZ1bmMsZGF0YSk7cmV0dXJuIGZ1bmM7fTsvKipcbiAgICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBzZXRUb1N0cmluZ2Agd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgICAqXG4gICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICAgKi92YXIgYmFzZVNldFRvU3RyaW5nPSFkZWZpbmVQcm9wZXJ0eT9pZGVudGl0eTpmdW5jdGlvbihmdW5jLHN0cmluZyl7cmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsJ3RvU3RyaW5nJyx7Y29uZmlndXJhYmxlOnRydWUsZW51bWVyYWJsZTpmYWxzZSx2YWx1ZTpjb25zdGFudChzdHJpbmcpLHdyaXRhYmxlOnRydWV9KTt9Oy8qKlxuICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2h1ZmZsZWAuXG4gICAgICAgKlxuICAgICAgICogQHByaXZhdGVcbiAgICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNodWZmbGUuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgICAqL2Z1bmN0aW9uIGJhc2VTaHVmZmxlKGNvbGxlY3Rpb24pe3JldHVybiBzaHVmZmxlU2VsZih2YWx1ZXMoY29sbGVjdGlvbikpO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2xpY2VgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNsaWNlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VTbGljZShhcnJheSxzdGFydCxlbmQpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXkubGVuZ3RoO2lmKHN0YXJ0PDApe3N0YXJ0PS1zdGFydD5sZW5ndGg/MDpsZW5ndGgrc3RhcnQ7fWVuZD1lbmQ+bGVuZ3RoP2xlbmd0aDplbmQ7aWYoZW5kPDApe2VuZCs9bGVuZ3RoO31sZW5ndGg9c3RhcnQ+ZW5kPzA6ZW5kLXN0YXJ0Pj4+MDtzdGFydD4+Pj0wO3ZhciByZXN1bHQ9QXJyYXkobGVuZ3RoKTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7cmVzdWx0W2luZGV4XT1hcnJheVtpbmRleCtzdGFydF07fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb21lYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVNvbWUoY29sbGVjdGlvbixwcmVkaWNhdGUpe3ZhciByZXN1bHQ7YmFzZUVhY2goY29sbGVjdGlvbixmdW5jdGlvbih2YWx1ZSxpbmRleCxjb2xsZWN0aW9uKXtyZXN1bHQ9cHJlZGljYXRlKHZhbHVlLGluZGV4LGNvbGxlY3Rpb24pO3JldHVybiFyZXN1bHQ7fSk7cmV0dXJuISFyZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0ZWRJbmRleGAgYW5kIGBfLnNvcnRlZExhc3RJbmRleGAgd2hpY2hcbiAgICAgICAgICogcGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIG9mIGBhcnJheWAgdG8gZGV0ZXJtaW5lIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgICogIGludG8gYGFycmF5YC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4KGFycmF5LHZhbHVlLHJldEhpZ2hlc3Qpe3ZhciBsb3c9MCxoaWdoPWFycmF5PT1udWxsP2xvdzphcnJheS5sZW5ndGg7aWYodHlwZW9mIHZhbHVlPT09J251bWJlcicmJnZhbHVlPT09dmFsdWUmJmhpZ2g8PUhBTEZfTUFYX0FSUkFZX0xFTkdUSCl7d2hpbGUobG93PGhpZ2gpe3ZhciBtaWQ9bG93K2hpZ2g+Pj4xLGNvbXB1dGVkPWFycmF5W21pZF07aWYoY29tcHV0ZWQhPT1udWxsJiYhaXNTeW1ib2woY29tcHV0ZWQpJiYocmV0SGlnaGVzdD9jb21wdXRlZDw9dmFsdWU6Y29tcHV0ZWQ8dmFsdWUpKXtsb3c9bWlkKzE7fWVsc2V7aGlnaD1taWQ7fX1yZXR1cm4gaGlnaDt9cmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LHZhbHVlLGlkZW50aXR5LHJldEhpZ2hlc3QpO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhCeWAgYW5kIGBfLnNvcnRlZExhc3RJbmRleEJ5YFxuICAgICAgICAgKiB3aGljaCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGVcbiAgICAgICAgICogdGhlaXIgc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKHZhbHVlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgICogIGludG8gYGFycmF5YC5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksdmFsdWUsaXRlcmF0ZWUscmV0SGlnaGVzdCl7dmFsdWU9aXRlcmF0ZWUodmFsdWUpO3ZhciBsb3c9MCxoaWdoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoLHZhbElzTmFOPXZhbHVlIT09dmFsdWUsdmFsSXNOdWxsPXZhbHVlPT09bnVsbCx2YWxJc1N5bWJvbD1pc1N5bWJvbCh2YWx1ZSksdmFsSXNVbmRlZmluZWQ9dmFsdWU9PT11bmRlZmluZWQ7d2hpbGUobG93PGhpZ2gpe3ZhciBtaWQ9bmF0aXZlRmxvb3IoKGxvdytoaWdoKS8yKSxjb21wdXRlZD1pdGVyYXRlZShhcnJheVttaWRdKSxvdGhJc0RlZmluZWQ9Y29tcHV0ZWQhPT11bmRlZmluZWQsb3RoSXNOdWxsPWNvbXB1dGVkPT09bnVsbCxvdGhJc1JlZmxleGl2ZT1jb21wdXRlZD09PWNvbXB1dGVkLG90aElzU3ltYm9sPWlzU3ltYm9sKGNvbXB1dGVkKTtpZih2YWxJc05hTil7dmFyIHNldExvdz1yZXRIaWdoZXN0fHxvdGhJc1JlZmxleGl2ZTt9ZWxzZSBpZih2YWxJc1VuZGVmaW5lZCl7c2V0TG93PW90aElzUmVmbGV4aXZlJiYocmV0SGlnaGVzdHx8b3RoSXNEZWZpbmVkKTt9ZWxzZSBpZih2YWxJc051bGwpe3NldExvdz1vdGhJc1JlZmxleGl2ZSYmb3RoSXNEZWZpbmVkJiYocmV0SGlnaGVzdHx8IW90aElzTnVsbCk7fWVsc2UgaWYodmFsSXNTeW1ib2wpe3NldExvdz1vdGhJc1JlZmxleGl2ZSYmb3RoSXNEZWZpbmVkJiYhb3RoSXNOdWxsJiYocmV0SGlnaGVzdHx8IW90aElzU3ltYm9sKTt9ZWxzZSBpZihvdGhJc051bGx8fG90aElzU3ltYm9sKXtzZXRMb3c9ZmFsc2U7fWVsc2V7c2V0TG93PXJldEhpZ2hlc3Q/Y29tcHV0ZWQ8PXZhbHVlOmNvbXB1dGVkPHZhbHVlO31pZihzZXRMb3cpe2xvdz1taWQrMTt9ZWxzZXtoaWdoPW1pZDt9fXJldHVybiBuYXRpdmVNaW4oaGlnaCxNQVhfQVJSQVlfSU5ERVgpO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkVW5pcWAgYW5kIGBfLnNvcnRlZFVuaXFCeWAgd2l0aG91dFxuICAgICAgICAgKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VTb3J0ZWRVbmlxKGFycmF5LGl0ZXJhdGVlKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWFycmF5Lmxlbmd0aCxyZXNJbmRleD0wLHJlc3VsdD1bXTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHZhbHVlPWFycmF5W2luZGV4XSxjb21wdXRlZD1pdGVyYXRlZT9pdGVyYXRlZSh2YWx1ZSk6dmFsdWU7aWYoIWluZGV4fHwhZXEoY29tcHV0ZWQsc2Vlbikpe3ZhciBzZWVuPWNvbXB1dGVkO3Jlc3VsdFtyZXNJbmRleCsrXT12YWx1ZT09PTA/MDp2YWx1ZTt9fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b051bWJlcmAgd2hpY2ggZG9lc24ndCBlbnN1cmUgY29ycmVjdFxuICAgICAgICAgKiBjb252ZXJzaW9ucyBvZiBiaW5hcnksIGhleGFkZWNpbWFsLCBvciBvY3RhbCBzdHJpbmcgdmFsdWVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VUb051bWJlcih2YWx1ZSl7aWYodHlwZW9mIHZhbHVlPT09J251bWJlcicpe3JldHVybiB2YWx1ZTt9aWYoaXNTeW1ib2wodmFsdWUpKXtyZXR1cm4gTkFOO31yZXR1cm4rdmFsdWU7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAgICAgICAgICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKXsvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuaWYodHlwZW9mIHZhbHVlPT09J3N0cmluZycpe3JldHVybiB2YWx1ZTt9aWYoaXNBcnJheSh2YWx1ZSkpey8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG5yZXR1cm4gYXJyYXlNYXAodmFsdWUsYmFzZVRvU3RyaW5nKSsnJzt9aWYoaXNTeW1ib2wodmFsdWUpKXtyZXR1cm4gc3ltYm9sVG9TdHJpbmc/c3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSk6Jyc7fXZhciByZXN1bHQ9dmFsdWUrJyc7cmV0dXJuIHJlc3VsdD09JzAnJiYxL3ZhbHVlPT0tSU5GSU5JVFk/Jy0wJzpyZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksaXRlcmF0ZWUsY29tcGFyYXRvcil7dmFyIGluZGV4PS0xLGluY2x1ZGVzPWFycmF5SW5jbHVkZXMsbGVuZ3RoPWFycmF5Lmxlbmd0aCxpc0NvbW1vbj10cnVlLHJlc3VsdD1bXSxzZWVuPXJlc3VsdDtpZihjb21wYXJhdG9yKXtpc0NvbW1vbj1mYWxzZTtpbmNsdWRlcz1hcnJheUluY2x1ZGVzV2l0aDt9ZWxzZSBpZihsZW5ndGg+PUxBUkdFX0FSUkFZX1NJWkUpe3ZhciBzZXQ9aXRlcmF0ZWU/bnVsbDpjcmVhdGVTZXQoYXJyYXkpO2lmKHNldCl7cmV0dXJuIHNldFRvQXJyYXkoc2V0KTt9aXNDb21tb249ZmFsc2U7aW5jbHVkZXM9Y2FjaGVIYXM7c2Vlbj1uZXcgU2V0Q2FjaGUoKTt9ZWxzZXtzZWVuPWl0ZXJhdGVlP1tdOnJlc3VsdDt9b3V0ZXI6d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF0sY29tcHV0ZWQ9aXRlcmF0ZWU/aXRlcmF0ZWUodmFsdWUpOnZhbHVlO3ZhbHVlPWNvbXBhcmF0b3J8fHZhbHVlIT09MD92YWx1ZTowO2lmKGlzQ29tbW9uJiZjb21wdXRlZD09PWNvbXB1dGVkKXt2YXIgc2VlbkluZGV4PXNlZW4ubGVuZ3RoO3doaWxlKHNlZW5JbmRleC0tKXtpZihzZWVuW3NlZW5JbmRleF09PT1jb21wdXRlZCl7Y29udGludWUgb3V0ZXI7fX1pZihpdGVyYXRlZSl7c2Vlbi5wdXNoKGNvbXB1dGVkKTt9cmVzdWx0LnB1c2godmFsdWUpO31lbHNlIGlmKCFpbmNsdWRlcyhzZWVuLGNvbXB1dGVkLGNvbXBhcmF0b3IpKXtpZihzZWVuIT09cmVzdWx0KXtzZWVuLnB1c2goY29tcHV0ZWQpO31yZXN1bHQucHVzaCh2YWx1ZSk7fX1yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5zZXRgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCB0byB1bnNldC5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VVbnNldChvYmplY3QscGF0aCl7cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7b2JqZWN0PXBhcmVudChvYmplY3QscGF0aCk7cmV0dXJuIG9iamVjdD09bnVsbHx8ZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51cGRhdGVgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdXBkYXRlLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlVXBkYXRlKG9iamVjdCxwYXRoLHVwZGF0ZXIsY3VzdG9taXplcil7cmV0dXJuIGJhc2VTZXQob2JqZWN0LHBhdGgsdXBkYXRlcihiYXNlR2V0KG9iamVjdCxwYXRoKSksY3VzdG9taXplcik7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZHJvcFdoaWxlYCBhbmQgYF8udGFrZVdoaWxlYFxuICAgICAgICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRHJvcF0gU3BlY2lmeSBkcm9wcGluZyBlbGVtZW50cyBpbnN0ZWFkIG9mIHRha2luZyB0aGVtLlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlV2hpbGUoYXJyYXkscHJlZGljYXRlLGlzRHJvcCxmcm9tUmlnaHQpe3ZhciBsZW5ndGg9YXJyYXkubGVuZ3RoLGluZGV4PWZyb21SaWdodD9sZW5ndGg6LTE7d2hpbGUoKGZyb21SaWdodD9pbmRleC0tOisraW5kZXg8bGVuZ3RoKSYmcHJlZGljYXRlKGFycmF5W2luZGV4XSxpbmRleCxhcnJheSkpe31yZXR1cm4gaXNEcm9wP2Jhc2VTbGljZShhcnJheSxmcm9tUmlnaHQ/MDppbmRleCxmcm9tUmlnaHQ/aW5kZXgrMTpsZW5ndGgpOmJhc2VTbGljZShhcnJheSxmcm9tUmlnaHQ/aW5kZXgrMTowLGZyb21SaWdodD9sZW5ndGg6aW5kZXgpO30vKipcbiAgICAgICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHdyYXBwZXJWYWx1ZWAgd2hpY2ggcmV0dXJucyB0aGUgcmVzdWx0IG9mXG4gICAgICAgICAqIHBlcmZvcm1pbmcgYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIG9uIHRoZSB1bndyYXBwZWQgYHZhbHVlYCwgd2hlcmUgZWFjaFxuICAgICAgICAgKiBzdWNjZXNzaXZlIGFjdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhY3Rpb25zIEFjdGlvbnMgdG8gcGVyZm9ybSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgICAgICovZnVuY3Rpb24gYmFzZVdyYXBwZXJWYWx1ZSh2YWx1ZSxhY3Rpb25zKXt2YXIgcmVzdWx0PXZhbHVlO2lmKHJlc3VsdCBpbnN0YW5jZW9mIExhenlXcmFwcGVyKXtyZXN1bHQ9cmVzdWx0LnZhbHVlKCk7fXJldHVybiBhcnJheVJlZHVjZShhY3Rpb25zLGZ1bmN0aW9uKHJlc3VsdCxhY3Rpb24pe3JldHVybiBhY3Rpb24uZnVuYy5hcHBseShhY3Rpb24udGhpc0FyZyxhcnJheVB1c2goW3Jlc3VsdF0sYWN0aW9uLmFyZ3MpKTt9LHJlc3VsdCk7fS8qKlxuICAgICAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ueG9yYCwgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgICAgICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiB2YWx1ZXMuXG4gICAgICAgICAqL2Z1bmN0aW9uIGJhc2VYb3IoYXJyYXlzLGl0ZXJhdGVlLGNvbXBhcmF0b3Ipe3ZhciBsZW5ndGg9YXJyYXlzLmxlbmd0aDtpZihsZW5ndGg8Mil7cmV0dXJuIGxlbmd0aD9iYXNlVW5pcShhcnJheXNbMF0pOltdO312YXIgaW5kZXg9LTEscmVzdWx0PUFycmF5KGxlbmd0aCk7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciBhcnJheT1hcnJheXNbaW5kZXhdLG90aEluZGV4PS0xO3doaWxlKCsrb3RoSW5kZXg8bGVuZ3RoKXtpZihvdGhJbmRleCE9aW5kZXgpe3Jlc3VsdFtpbmRleF09YmFzZURpZmZlcmVuY2UocmVzdWx0W2luZGV4XXx8YXJyYXksYXJyYXlzW290aEluZGV4XSxpdGVyYXRlZSxjb21wYXJhdG9yKTt9fX1yZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4ocmVzdWx0LDEpLGl0ZXJhdGVlLGNvbXBhcmF0b3IpO30vKipcbiAgICAgICAgICogVGhpcyBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnppcE9iamVjdGAgd2hpY2ggYXNzaWducyB2YWx1ZXMgdXNpbmcgYGFzc2lnbkZ1bmNgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAgICAgKi9mdW5jdGlvbiBiYXNlWmlwT2JqZWN0KHByb3BzLHZhbHVlcyxhc3NpZ25GdW5jKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPXByb3BzLmxlbmd0aCx2YWxzTGVuZ3RoPXZhbHVlcy5sZW5ndGgscmVzdWx0PXt9O3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgdmFsdWU9aW5kZXg8dmFsc0xlbmd0aD92YWx1ZXNbaW5kZXhdOnVuZGVmaW5lZDthc3NpZ25GdW5jKHJlc3VsdCxwcm9wc1tpbmRleF0sdmFsdWUpO31yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogQ2FzdHMgYHZhbHVlYCB0byBhbiBlbXB0eSBhcnJheSBpZiBpdCdzIG5vdCBhbiBhcnJheSBsaWtlIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS1saWtlIG9iamVjdC5cbiAgICAgICAgICovZnVuY3Rpb24gY2FzdEFycmF5TGlrZU9iamVjdCh2YWx1ZSl7cmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKT92YWx1ZTpbXTt9LyoqXG4gICAgICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgY2FzdCBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY2FzdEZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdHlwZW9mIHZhbHVlPT09J2Z1bmN0aW9uJz92YWx1ZTppZGVudGl0eTt9LyoqXG4gICAgICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICAgICAqL2Z1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLG9iamVjdCl7aWYoaXNBcnJheSh2YWx1ZSkpe3JldHVybiB2YWx1ZTt9cmV0dXJuIGlzS2V5KHZhbHVlLG9iamVjdCk/W3ZhbHVlXTpzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTt9LyoqXG4gICAgICAgICAqIEEgYGJhc2VSZXN0YCBhbGlhcyB3aGljaCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBgaWRlbnRpdHlgIGJ5IG1vZHVsZVxuICAgICAgICAgKiByZXBsYWNlbWVudCBwbHVnaW5zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAgICAgKi92YXIgY2FzdFJlc3Q9YmFzZVJlc3Q7LyoqXG4gICAgICAgICAqIENhc3RzIGBhcnJheWAgdG8gYSBzbGljZSBpZiBpdCdzIG5lZWRlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHNsaWNlLlxuICAgICAgICAgKi9mdW5jdGlvbiBjYXN0U2xpY2UoYXJyYXksc3RhcnQsZW5kKXt2YXIgbGVuZ3RoPWFycmF5Lmxlbmd0aDtlbmQ9ZW5kPT09dW5kZWZpbmVkP2xlbmd0aDplbmQ7cmV0dXJuIXN0YXJ0JiZlbmQ+PWxlbmd0aD9hcnJheTpiYXNlU2xpY2UoYXJyYXksc3RhcnQsZW5kKTt9LyoqXG4gICAgICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BjbGVhclRpbWVvdXRgXShodHRwczovL21kbi5pby9jbGVhclRpbWVvdXQpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcnxPYmplY3R9IGlkIFRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdCBvZiB0aGUgdGltZXIgdG8gY2xlYXIuXG4gICAgICAgICAqL3ZhciBjbGVhclRpbWVvdXQ9Y3R4Q2xlYXJUaW1lb3V0fHxmdW5jdGlvbihpZCl7cmV0dXJuIHJvb3QuY2xlYXJUaW1lb3V0KGlkKTt9Oy8qKlxuICAgICAgICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAgICAgICAqXG4gICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICAgICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgICAqIEByZXR1cm5zIHtCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBidWZmZXIuXG4gICAgICAgKi9mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsaXNEZWVwKXtpZihpc0RlZXApe3JldHVybiBidWZmZXIuc2xpY2UoKTt9dmFyIGxlbmd0aD1idWZmZXIubGVuZ3RoLHJlc3VsdD1hbGxvY1Vuc2FmZT9hbGxvY1Vuc2FmZShsZW5ndGgpOm5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtidWZmZXIuY29weShyZXN1bHQpO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICAgICAgICAgKi9mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKXt2YXIgcmVzdWx0PW5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gICAgICAgICAqL2Z1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsaXNEZWVwKXt2YXIgYnVmZmVyPWlzRGVlcD9jbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcik6ZGF0YVZpZXcuYnVmZmVyO3JldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLGRhdGFWaWV3LmJ5dGVPZmZzZXQsZGF0YVZpZXcuYnl0ZUxlbmd0aCk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAgICAgICAgICovZnVuY3Rpb24gY2xvbmVSZWdFeHAocmVnZXhwKXt2YXIgcmVzdWx0PW5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSxyZUZsYWdzLmV4ZWMocmVnZXhwKSk7cmVzdWx0Lmxhc3RJbmRleD1yZWdleHAubGFzdEluZGV4O3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gICAgICAgICAqL2Z1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCl7cmV0dXJuIHN5bWJvbFZhbHVlT2Y/T2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKTp7fTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICAgICAgICAgKi9mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSxpc0RlZXApe3ZhciBidWZmZXI9aXNEZWVwP2Nsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpOnR5cGVkQXJyYXkuYnVmZmVyO3JldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsdHlwZWRBcnJheS5ieXRlT2Zmc2V0LHR5cGVkQXJyYXkubGVuZ3RoKTt9LyoqXG4gICAgICAgICAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYHZhbHVlYC5cbiAgICAgICAgICovZnVuY3Rpb24gY29tcGFyZUFzY2VuZGluZyh2YWx1ZSxvdGhlcil7aWYodmFsdWUhPT1vdGhlcil7dmFyIHZhbElzRGVmaW5lZD12YWx1ZSE9PXVuZGVmaW5lZCx2YWxJc051bGw9dmFsdWU9PT1udWxsLHZhbElzUmVmbGV4aXZlPXZhbHVlPT09dmFsdWUsdmFsSXNTeW1ib2w9aXNTeW1ib2wodmFsdWUpO3ZhciBvdGhJc0RlZmluZWQ9b3RoZXIhPT11bmRlZmluZWQsb3RoSXNOdWxsPW90aGVyPT09bnVsbCxvdGhJc1JlZmxleGl2ZT1vdGhlcj09PW90aGVyLG90aElzU3ltYm9sPWlzU3ltYm9sKG90aGVyKTtpZighb3RoSXNOdWxsJiYhb3RoSXNTeW1ib2wmJiF2YWxJc1N5bWJvbCYmdmFsdWU+b3RoZXJ8fHZhbElzU3ltYm9sJiZvdGhJc0RlZmluZWQmJm90aElzUmVmbGV4aXZlJiYhb3RoSXNOdWxsJiYhb3RoSXNTeW1ib2x8fHZhbElzTnVsbCYmb3RoSXNEZWZpbmVkJiZvdGhJc1JlZmxleGl2ZXx8IXZhbElzRGVmaW5lZCYmb3RoSXNSZWZsZXhpdmV8fCF2YWxJc1JlZmxleGl2ZSl7cmV0dXJuIDE7fWlmKCF2YWxJc051bGwmJiF2YWxJc1N5bWJvbCYmIW90aElzU3ltYm9sJiZ2YWx1ZTxvdGhlcnx8b3RoSXNTeW1ib2wmJnZhbElzRGVmaW5lZCYmdmFsSXNSZWZsZXhpdmUmJiF2YWxJc051bGwmJiF2YWxJc1N5bWJvbHx8b3RoSXNOdWxsJiZ2YWxJc0RlZmluZWQmJnZhbElzUmVmbGV4aXZlfHwhb3RoSXNEZWZpbmVkJiZ2YWxJc1JlZmxleGl2ZXx8IW90aElzUmVmbGV4aXZlKXtyZXR1cm4tMTt9fXJldHVybiAwO30vKipcbiAgICAgICAgICogVXNlZCBieSBgXy5vcmRlckJ5YCB0byBjb21wYXJlIG11bHRpcGxlIHByb3BlcnRpZXMgb2YgYSB2YWx1ZSB0byBhbm90aGVyXG4gICAgICAgICAqIGFuZCBzdGFibGUgc29ydCB0aGVtLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLFxuICAgICAgICAgKiBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvciBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyXG4gICAgICAgICAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFuW118c3RyaW5nW119IG9yZGVycyBUaGUgb3JkZXIgdG8gc29ydCBieSBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICAgICAgICAgKi9mdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LG90aGVyLG9yZGVycyl7dmFyIGluZGV4PS0xLG9iakNyaXRlcmlhPW9iamVjdC5jcml0ZXJpYSxvdGhDcml0ZXJpYT1vdGhlci5jcml0ZXJpYSxsZW5ndGg9b2JqQ3JpdGVyaWEubGVuZ3RoLG9yZGVyc0xlbmd0aD1vcmRlcnMubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgcmVzdWx0PWNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLG90aENyaXRlcmlhW2luZGV4XSk7aWYocmVzdWx0KXtpZihpbmRleD49b3JkZXJzTGVuZ3RoKXtyZXR1cm4gcmVzdWx0O312YXIgb3JkZXI9b3JkZXJzW2luZGV4XTtyZXR1cm4gcmVzdWx0KihvcmRlcj09J2Rlc2MnPy0xOjEpO319Ly8gRml4ZXMgYW4gYEFycmF5I3NvcnRgIGJ1ZyBpbiB0aGUgSlMgZW5naW5lIGVtYmVkZGVkIGluIEFkb2JlIGFwcGxpY2F0aW9uc1xuLy8gdGhhdCBjYXVzZXMgaXQsIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdG8gcHJvdmlkZSB0aGUgc2FtZSB2YWx1ZSBmb3Jcbi8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuLy8gZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuLy8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTkwIGZvciBtb3JlIGRldGFpbHMuXG5yZXR1cm4gb2JqZWN0LmluZGV4LW90aGVyLmluZGV4O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSB0aGF0IGlzIHRoZSBjb21wb3NpdGlvbiBvZiBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMsXG4gICAgICAgICAqIHBsYWNlaG9sZGVycywgYW5kIHByb3ZpZGVkIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tcG9zZWQgYXJndW1lbnRzLlxuICAgICAgICAgKi9mdW5jdGlvbiBjb21wb3NlQXJncyhhcmdzLHBhcnRpYWxzLGhvbGRlcnMsaXNDdXJyaWVkKXt2YXIgYXJnc0luZGV4PS0xLGFyZ3NMZW5ndGg9YXJncy5sZW5ndGgsaG9sZGVyc0xlbmd0aD1ob2xkZXJzLmxlbmd0aCxsZWZ0SW5kZXg9LTEsbGVmdExlbmd0aD1wYXJ0aWFscy5sZW5ndGgscmFuZ2VMZW5ndGg9bmF0aXZlTWF4KGFyZ3NMZW5ndGgtaG9sZGVyc0xlbmd0aCwwKSxyZXN1bHQ9QXJyYXkobGVmdExlbmd0aCtyYW5nZUxlbmd0aCksaXNVbmN1cnJpZWQ9IWlzQ3VycmllZDt3aGlsZSgrK2xlZnRJbmRleDxsZWZ0TGVuZ3RoKXtyZXN1bHRbbGVmdEluZGV4XT1wYXJ0aWFsc1tsZWZ0SW5kZXhdO313aGlsZSgrK2FyZ3NJbmRleDxob2xkZXJzTGVuZ3RoKXtpZihpc1VuY3VycmllZHx8YXJnc0luZGV4PGFyZ3NMZW5ndGgpe3Jlc3VsdFtob2xkZXJzW2FyZ3NJbmRleF1dPWFyZ3NbYXJnc0luZGV4XTt9fXdoaWxlKHJhbmdlTGVuZ3RoLS0pe3Jlc3VsdFtsZWZ0SW5kZXgrK109YXJnc1thcmdzSW5kZXgrK107fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGNvbXBvc2VBcmdzYCBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnRzIGNvbXBvc2l0aW9uXG4gICAgICAgICAqIGlzIHRhaWxvcmVkIGZvciBgXy5wYXJ0aWFsUmlnaHRgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICAgICAqIEBwYXJhbXMge2Jvb2xlYW59IFtpc0N1cnJpZWRdIFNwZWNpZnkgY29tcG9zaW5nIGZvciBhIGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy5cbiAgICAgICAgICovZnVuY3Rpb24gY29tcG9zZUFyZ3NSaWdodChhcmdzLHBhcnRpYWxzLGhvbGRlcnMsaXNDdXJyaWVkKXt2YXIgYXJnc0luZGV4PS0xLGFyZ3NMZW5ndGg9YXJncy5sZW5ndGgsaG9sZGVyc0luZGV4PS0xLGhvbGRlcnNMZW5ndGg9aG9sZGVycy5sZW5ndGgscmlnaHRJbmRleD0tMSxyaWdodExlbmd0aD1wYXJ0aWFscy5sZW5ndGgscmFuZ2VMZW5ndGg9bmF0aXZlTWF4KGFyZ3NMZW5ndGgtaG9sZGVyc0xlbmd0aCwwKSxyZXN1bHQ9QXJyYXkocmFuZ2VMZW5ndGgrcmlnaHRMZW5ndGgpLGlzVW5jdXJyaWVkPSFpc0N1cnJpZWQ7d2hpbGUoKythcmdzSW5kZXg8cmFuZ2VMZW5ndGgpe3Jlc3VsdFthcmdzSW5kZXhdPWFyZ3NbYXJnc0luZGV4XTt9dmFyIG9mZnNldD1hcmdzSW5kZXg7d2hpbGUoKytyaWdodEluZGV4PHJpZ2h0TGVuZ3RoKXtyZXN1bHRbb2Zmc2V0K3JpZ2h0SW5kZXhdPXBhcnRpYWxzW3JpZ2h0SW5kZXhdO313aGlsZSgrK2hvbGRlcnNJbmRleDxob2xkZXJzTGVuZ3RoKXtpZihpc1VuY3VycmllZHx8YXJnc0luZGV4PGFyZ3NMZW5ndGgpe3Jlc3VsdFtvZmZzZXQraG9sZGVyc1tob2xkZXJzSW5kZXhdXT1hcmdzW2FyZ3NJbmRleCsrXTt9fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgICAgICovZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSxhcnJheSl7dmFyIGluZGV4PS0xLGxlbmd0aD1zb3VyY2UubGVuZ3RoO2FycmF5fHwoYXJyYXk9QXJyYXkobGVuZ3RoKSk7d2hpbGUoKytpbmRleDxsZW5ndGgpe2FycmF5W2luZGV4XT1zb3VyY2VbaW5kZXhdO31yZXR1cm4gYXJyYXk7fS8qKlxuICAgICAgICAgKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKi9mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSxwcm9wcyxvYmplY3QsY3VzdG9taXplcil7dmFyIGlzTmV3PSFvYmplY3Q7b2JqZWN0fHwob2JqZWN0PXt9KTt2YXIgaW5kZXg9LTEsbGVuZ3RoPXByb3BzLmxlbmd0aDt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIGtleT1wcm9wc1tpbmRleF07dmFyIG5ld1ZhbHVlPWN1c3RvbWl6ZXI/Y3VzdG9taXplcihvYmplY3Rba2V5XSxzb3VyY2Vba2V5XSxrZXksb2JqZWN0LHNvdXJjZSk6dW5kZWZpbmVkO2lmKG5ld1ZhbHVlPT09dW5kZWZpbmVkKXtuZXdWYWx1ZT1zb3VyY2Vba2V5XTt9aWYoaXNOZXcpe2Jhc2VBc3NpZ25WYWx1ZShvYmplY3Qsa2V5LG5ld1ZhbHVlKTt9ZWxzZXthc3NpZ25WYWx1ZShvYmplY3Qsa2V5LG5ld1ZhbHVlKTt9fXJldHVybiBvYmplY3Q7fS8qKlxuICAgICAgICAgKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKi9mdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2Usb2JqZWN0KXtyZXR1cm4gY29weU9iamVjdChzb3VyY2UsZ2V0U3ltYm9scyhzb3VyY2UpLG9iamVjdCk7fS8qKlxuICAgICAgICAgKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLG9iamVjdCl7cmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLGdldFN5bWJvbHNJbihzb3VyY2UpLG9iamVjdCk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5ncm91cEJ5YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYWNjdW11bGF0b3IgdmFsdWVzLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaW5pdGlhbGl6ZXJdIFRoZSBhY2N1bXVsYXRvciBvYmplY3QgaW5pdGlhbGl6ZXIuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFnZ3JlZ2F0b3IgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZUFnZ3JlZ2F0b3Ioc2V0dGVyLGluaXRpYWxpemVyKXtyZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbixpdGVyYXRlZSl7dmFyIGZ1bmM9aXNBcnJheShjb2xsZWN0aW9uKT9hcnJheUFnZ3JlZ2F0b3I6YmFzZUFnZ3JlZ2F0b3IsYWNjdW11bGF0b3I9aW5pdGlhbGl6ZXI/aW5pdGlhbGl6ZXIoKTp7fTtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLHNldHRlcixnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSxhY2N1bXVsYXRvcik7fTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpe3JldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3Qsc291cmNlcyl7dmFyIGluZGV4PS0xLGxlbmd0aD1zb3VyY2VzLmxlbmd0aCxjdXN0b21pemVyPWxlbmd0aD4xP3NvdXJjZXNbbGVuZ3RoLTFdOnVuZGVmaW5lZCxndWFyZD1sZW5ndGg+Mj9zb3VyY2VzWzJdOnVuZGVmaW5lZDtjdXN0b21pemVyPWFzc2lnbmVyLmxlbmd0aD4zJiZ0eXBlb2YgY3VzdG9taXplcj09PSdmdW5jdGlvbic/KGxlbmd0aC0tLGN1c3RvbWl6ZXIpOnVuZGVmaW5lZDtpZihndWFyZCYmaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSxzb3VyY2VzWzFdLGd1YXJkKSl7Y3VzdG9taXplcj1sZW5ndGg8Mz91bmRlZmluZWQ6Y3VzdG9taXplcjtsZW5ndGg9MTt9b2JqZWN0PU9iamVjdChvYmplY3QpO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgc291cmNlPXNvdXJjZXNbaW5kZXhdO2lmKHNvdXJjZSl7YXNzaWduZXIob2JqZWN0LHNvdXJjZSxpbmRleCxjdXN0b21pemVyKTt9fXJldHVybiBvYmplY3Q7fSk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgYGJhc2VFYWNoYCBvciBgYmFzZUVhY2hSaWdodGAgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYSBjb2xsZWN0aW9uLlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsZnJvbVJpZ2h0KXtyZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbixpdGVyYXRlZSl7aWYoY29sbGVjdGlvbj09bnVsbCl7cmV0dXJuIGNvbGxlY3Rpb247fWlmKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSl7cmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24saXRlcmF0ZWUpO312YXIgbGVuZ3RoPWNvbGxlY3Rpb24ubGVuZ3RoLGluZGV4PWZyb21SaWdodD9sZW5ndGg6LTEsaXRlcmFibGU9T2JqZWN0KGNvbGxlY3Rpb24pO3doaWxlKGZyb21SaWdodD9pbmRleC0tOisraW5kZXg8bGVuZ3RoKXtpZihpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0saW5kZXgsaXRlcmFibGUpPT09ZmFsc2Upe2JyZWFrO319cmV0dXJuIGNvbGxlY3Rpb247fTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpe3JldHVybiBmdW5jdGlvbihvYmplY3QsaXRlcmF0ZWUsa2V5c0Z1bmMpe3ZhciBpbmRleD0tMSxpdGVyYWJsZT1PYmplY3Qob2JqZWN0KSxwcm9wcz1rZXlzRnVuYyhvYmplY3QpLGxlbmd0aD1wcm9wcy5sZW5ndGg7d2hpbGUobGVuZ3RoLS0pe3ZhciBrZXk9cHJvcHNbZnJvbVJpZ2h0P2xlbmd0aDorK2luZGV4XTtpZihpdGVyYXRlZShpdGVyYWJsZVtrZXldLGtleSxpdGVyYWJsZSk9PT1mYWxzZSl7YnJlYWs7fX1yZXR1cm4gb2JqZWN0O307fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggdGhlIG9wdGlvbmFsIGB0aGlzYFxuICAgICAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlQmluZChmdW5jLGJpdG1hc2ssdGhpc0FyZyl7dmFyIGlzQmluZD1iaXRtYXNrJldSQVBfQklORF9GTEFHLEN0b3I9Y3JlYXRlQ3RvcihmdW5jKTtmdW5jdGlvbiB3cmFwcGVyKCl7dmFyIGZuPXRoaXMmJnRoaXMhPT1yb290JiZ0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcj9DdG9yOmZ1bmM7cmV0dXJuIGZuLmFwcGx5KGlzQmluZD90aGlzQXJnOnRoaXMsYXJndW1lbnRzKTt9cmV0dXJuIHdyYXBwZXI7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5sb3dlckZpcnN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgVGhlIG5hbWUgb2YgdGhlIGBTdHJpbmdgIGNhc2UgbWV0aG9kIHRvIHVzZS5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FzZSBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlQ2FzZUZpcnN0KG1ldGhvZE5hbWUpe3JldHVybiBmdW5jdGlvbihzdHJpbmcpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO3ZhciBzdHJTeW1ib2xzPWhhc1VuaWNvZGUoc3RyaW5nKT9zdHJpbmdUb0FycmF5KHN0cmluZyk6dW5kZWZpbmVkO3ZhciBjaHI9c3RyU3ltYm9scz9zdHJTeW1ib2xzWzBdOnN0cmluZy5jaGFyQXQoMCk7dmFyIHRyYWlsaW5nPXN0clN5bWJvbHM/Y2FzdFNsaWNlKHN0clN5bWJvbHMsMSkuam9pbignJyk6c3RyaW5nLnNsaWNlKDEpO3JldHVybiBjaHJbbWV0aG9kTmFtZV0oKSt0cmFpbGluZzt9O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uY2FtZWxDYXNlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmUgZWFjaCB3b3JkLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3VuZGVyIGZ1bmN0aW9uLlxuICAgICAgICAgKi9mdW5jdGlvbiBjcmVhdGVDb21wb3VuZGVyKGNhbGxiYWNrKXtyZXR1cm4gZnVuY3Rpb24oc3RyaW5nKXtyZXR1cm4gYXJyYXlSZWR1Y2Uod29yZHMoZGVidXJyKHN0cmluZykucmVwbGFjZShyZUFwb3MsJycpKSxjYWxsYmFjaywnJyk7fTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIGBDdG9yYCByZWdhcmRsZXNzIG9mXG4gICAgICAgICAqIHdoZXRoZXIgaXQgd2FzIGludm9rZWQgYXMgcGFydCBvZiBhIGBuZXdgIGV4cHJlc3Npb24gb3IgYnkgYGNhbGxgIG9yIGBhcHBseWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IEN0b3IgVGhlIGNvbnN0cnVjdG9yIHRvIHdyYXAuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZUN0b3IoQ3Rvcil7cmV0dXJuIGZ1bmN0aW9uKCl7Ly8gVXNlIGEgYHN3aXRjaGAgc3RhdGVtZW50IHRvIHdvcmsgd2l0aCBjbGFzcyBjb25zdHJ1Y3RvcnMuIFNlZVxuLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1vYmplY3RzLWNhbGwtdGhpc2FyZ3VtZW50LWFyZ3VtZW50c2xpc3Rcbi8vIGZvciBtb3JlIGRldGFpbHMuXG52YXIgYXJncz1hcmd1bWVudHM7c3dpdGNoKGFyZ3MubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBDdG9yKCk7Y2FzZSAxOnJldHVybiBuZXcgQ3RvcihhcmdzWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sYXJnc1sxXSk7Y2FzZSAzOnJldHVybiBuZXcgQ3RvcihhcmdzWzBdLGFyZ3NbMV0sYXJnc1syXSk7Y2FzZSA0OnJldHVybiBuZXcgQ3RvcihhcmdzWzBdLGFyZ3NbMV0sYXJnc1syXSxhcmdzWzNdKTtjYXNlIDU6cmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sYXJnc1sxXSxhcmdzWzJdLGFyZ3NbM10sYXJnc1s0XSk7Y2FzZSA2OnJldHVybiBuZXcgQ3RvcihhcmdzWzBdLGFyZ3NbMV0sYXJnc1syXSxhcmdzWzNdLGFyZ3NbNF0sYXJnc1s1XSk7Y2FzZSA3OnJldHVybiBuZXcgQ3RvcihhcmdzWzBdLGFyZ3NbMV0sYXJnc1syXSxhcmdzWzNdLGFyZ3NbNF0sYXJnc1s1XSxhcmdzWzZdKTt9dmFyIHRoaXNCaW5kaW5nPWJhc2VDcmVhdGUoQ3Rvci5wcm90b3R5cGUpLHJlc3VsdD1DdG9yLmFwcGx5KHRoaXNCaW5kaW5nLGFyZ3MpOy8vIE1pbWljIHRoZSBjb25zdHJ1Y3RvcidzIGByZXR1cm5gIGJlaGF2aW9yLlxuLy8gU2VlIGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDEzLjIuMiBmb3IgbW9yZSBkZXRhaWxzLlxucmV0dXJuIGlzT2JqZWN0KHJlc3VsdCk/cmVzdWx0OnRoaXNCaW5kaW5nO307fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gZW5hYmxlIGN1cnJ5aW5nLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gYXJpdHkgVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlQ3VycnkoZnVuYyxiaXRtYXNrLGFyaXR5KXt2YXIgQ3Rvcj1jcmVhdGVDdG9yKGZ1bmMpO2Z1bmN0aW9uIHdyYXBwZXIoKXt2YXIgbGVuZ3RoPWFyZ3VtZW50cy5sZW5ndGgsYXJncz1BcnJheShsZW5ndGgpLGluZGV4PWxlbmd0aCxwbGFjZWhvbGRlcj1nZXRIb2xkZXIod3JhcHBlcik7d2hpbGUoaW5kZXgtLSl7YXJnc1tpbmRleF09YXJndW1lbnRzW2luZGV4XTt9dmFyIGhvbGRlcnM9bGVuZ3RoPDMmJmFyZ3NbMF0hPT1wbGFjZWhvbGRlciYmYXJnc1tsZW5ndGgtMV0hPT1wbGFjZWhvbGRlcj9bXTpyZXBsYWNlSG9sZGVycyhhcmdzLHBsYWNlaG9sZGVyKTtsZW5ndGgtPWhvbGRlcnMubGVuZ3RoO2lmKGxlbmd0aDxhcml0eSl7cmV0dXJuIGNyZWF0ZVJlY3VycnkoZnVuYyxiaXRtYXNrLGNyZWF0ZUh5YnJpZCx3cmFwcGVyLnBsYWNlaG9sZGVyLHVuZGVmaW5lZCxhcmdzLGhvbGRlcnMsdW5kZWZpbmVkLHVuZGVmaW5lZCxhcml0eS1sZW5ndGgpO312YXIgZm49dGhpcyYmdGhpcyE9PXJvb3QmJnRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyP0N0b3I6ZnVuYztyZXR1cm4gYXBwbHkoZm4sdGhpcyxhcmdzKTt9cmV0dXJuIHdyYXBwZXI7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLlxuICAgICAgICAgKi9mdW5jdGlvbiBjcmVhdGVGaW5kKGZpbmRJbmRleEZ1bmMpe3JldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLHByZWRpY2F0ZSxmcm9tSW5kZXgpe3ZhciBpdGVyYWJsZT1PYmplY3QoY29sbGVjdGlvbik7aWYoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKXt2YXIgaXRlcmF0ZWU9Z2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpO2NvbGxlY3Rpb249a2V5cyhjb2xsZWN0aW9uKTtwcmVkaWNhdGU9ZnVuY3Rpb24gcHJlZGljYXRlKGtleSl7cmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sa2V5LGl0ZXJhYmxlKTt9O312YXIgaW5kZXg9ZmluZEluZGV4RnVuYyhjb2xsZWN0aW9uLHByZWRpY2F0ZSxmcm9tSW5kZXgpO3JldHVybiBpbmRleD4tMT9pdGVyYWJsZVtpdGVyYXRlZT9jb2xsZWN0aW9uW2luZGV4XTppbmRleF06dW5kZWZpbmVkO307fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgYF8uZmxvd2Agb3IgYF8uZmxvd1JpZ2h0YCBmdW5jdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZsb3cgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZUZsb3coZnJvbVJpZ2h0KXtyZXR1cm4gZmxhdFJlc3QoZnVuY3Rpb24oZnVuY3Mpe3ZhciBsZW5ndGg9ZnVuY3MubGVuZ3RoLGluZGV4PWxlbmd0aCxwcmVyZXE9TG9kYXNoV3JhcHBlci5wcm90b3R5cGUudGhydTtpZihmcm9tUmlnaHQpe2Z1bmNzLnJldmVyc2UoKTt9d2hpbGUoaW5kZXgtLSl7dmFyIGZ1bmM9ZnVuY3NbaW5kZXhdO2lmKHR5cGVvZiBmdW5jIT09J2Z1bmN0aW9uJyl7dGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO31pZihwcmVyZXEmJiF3cmFwcGVyJiZnZXRGdW5jTmFtZShmdW5jKT09J3dyYXBwZXInKXt2YXIgd3JhcHBlcj1uZXcgTG9kYXNoV3JhcHBlcihbXSx0cnVlKTt9fWluZGV4PXdyYXBwZXI/aW5kZXg6bGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXtmdW5jPWZ1bmNzW2luZGV4XTt2YXIgZnVuY05hbWU9Z2V0RnVuY05hbWUoZnVuYyksZGF0YT1mdW5jTmFtZT09J3dyYXBwZXInP2dldERhdGEoZnVuYyk6dW5kZWZpbmVkO2lmKGRhdGEmJmlzTGF6aWFibGUoZGF0YVswXSkmJmRhdGFbMV09PShXUkFQX0FSWV9GTEFHfFdSQVBfQ1VSUllfRkxBR3xXUkFQX1BBUlRJQUxfRkxBR3xXUkFQX1JFQVJHX0ZMQUcpJiYhZGF0YVs0XS5sZW5ndGgmJmRhdGFbOV09PTEpe3dyYXBwZXI9d3JhcHBlcltnZXRGdW5jTmFtZShkYXRhWzBdKV0uYXBwbHkod3JhcHBlcixkYXRhWzNdKTt9ZWxzZXt3cmFwcGVyPWZ1bmMubGVuZ3RoPT0xJiZpc0xhemlhYmxlKGZ1bmMpP3dyYXBwZXJbZnVuY05hbWVdKCk6d3JhcHBlci50aHJ1KGZ1bmMpO319cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGFyZ3M9YXJndW1lbnRzLHZhbHVlPWFyZ3NbMF07aWYod3JhcHBlciYmYXJncy5sZW5ndGg9PTEmJmlzQXJyYXkodmFsdWUpKXtyZXR1cm4gd3JhcHBlci5wbGFudCh2YWx1ZSkudmFsdWUoKTt9dmFyIGluZGV4PTAscmVzdWx0PWxlbmd0aD9mdW5jc1tpbmRleF0uYXBwbHkodGhpcyxhcmdzKTp2YWx1ZTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7cmVzdWx0PWZ1bmNzW2luZGV4XS5jYWxsKHRoaXMscmVzdWx0KTt9cmV0dXJuIHJlc3VsdDt9O30pO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIG9wdGlvbmFsIGB0aGlzYFxuICAgICAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYCwgcGFydGlhbCBhcHBsaWNhdGlvbiwgYW5kIGN1cnJ5aW5nLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNSaWdodF0gVGhlIGFyZ3VtZW50cyB0byBhcHBlbmQgdG8gdGhvc2UgcHJvdmlkZWRcbiAgICAgICAgICogIHRvIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzUmlnaHRdIFRoZSBgcGFydGlhbHNSaWdodGAgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZUh5YnJpZChmdW5jLGJpdG1hc2ssdGhpc0FyZyxwYXJ0aWFscyxob2xkZXJzLHBhcnRpYWxzUmlnaHQsaG9sZGVyc1JpZ2h0LGFyZ1BvcyxhcnksYXJpdHkpe3ZhciBpc0FyeT1iaXRtYXNrJldSQVBfQVJZX0ZMQUcsaXNCaW5kPWJpdG1hc2smV1JBUF9CSU5EX0ZMQUcsaXNCaW5kS2V5PWJpdG1hc2smV1JBUF9CSU5EX0tFWV9GTEFHLGlzQ3VycmllZD1iaXRtYXNrJihXUkFQX0NVUlJZX0ZMQUd8V1JBUF9DVVJSWV9SSUdIVF9GTEFHKSxpc0ZsaXA9Yml0bWFzayZXUkFQX0ZMSVBfRkxBRyxDdG9yPWlzQmluZEtleT91bmRlZmluZWQ6Y3JlYXRlQ3RvcihmdW5jKTtmdW5jdGlvbiB3cmFwcGVyKCl7dmFyIGxlbmd0aD1hcmd1bWVudHMubGVuZ3RoLGFyZ3M9QXJyYXkobGVuZ3RoKSxpbmRleD1sZW5ndGg7d2hpbGUoaW5kZXgtLSl7YXJnc1tpbmRleF09YXJndW1lbnRzW2luZGV4XTt9aWYoaXNDdXJyaWVkKXt2YXIgcGxhY2Vob2xkZXI9Z2V0SG9sZGVyKHdyYXBwZXIpLGhvbGRlcnNDb3VudD1jb3VudEhvbGRlcnMoYXJncyxwbGFjZWhvbGRlcik7fWlmKHBhcnRpYWxzKXthcmdzPWNvbXBvc2VBcmdzKGFyZ3MscGFydGlhbHMsaG9sZGVycyxpc0N1cnJpZWQpO31pZihwYXJ0aWFsc1JpZ2h0KXthcmdzPWNvbXBvc2VBcmdzUmlnaHQoYXJncyxwYXJ0aWFsc1JpZ2h0LGhvbGRlcnNSaWdodCxpc0N1cnJpZWQpO31sZW5ndGgtPWhvbGRlcnNDb3VudDtpZihpc0N1cnJpZWQmJmxlbmd0aDxhcml0eSl7dmFyIG5ld0hvbGRlcnM9cmVwbGFjZUhvbGRlcnMoYXJncyxwbGFjZWhvbGRlcik7cmV0dXJuIGNyZWF0ZVJlY3VycnkoZnVuYyxiaXRtYXNrLGNyZWF0ZUh5YnJpZCx3cmFwcGVyLnBsYWNlaG9sZGVyLHRoaXNBcmcsYXJncyxuZXdIb2xkZXJzLGFyZ1BvcyxhcnksYXJpdHktbGVuZ3RoKTt9dmFyIHRoaXNCaW5kaW5nPWlzQmluZD90aGlzQXJnOnRoaXMsZm49aXNCaW5kS2V5P3RoaXNCaW5kaW5nW2Z1bmNdOmZ1bmM7bGVuZ3RoPWFyZ3MubGVuZ3RoO2lmKGFyZ1Bvcyl7YXJncz1yZW9yZGVyKGFyZ3MsYXJnUG9zKTt9ZWxzZSBpZihpc0ZsaXAmJmxlbmd0aD4xKXthcmdzLnJldmVyc2UoKTt9aWYoaXNBcnkmJmFyeTxsZW5ndGgpe2FyZ3MubGVuZ3RoPWFyeTt9aWYodGhpcyYmdGhpcyE9PXJvb3QmJnRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKXtmbj1DdG9yfHxjcmVhdGVDdG9yKGZuKTt9cmV0dXJuIGZuLmFwcGx5KHRoaXNCaW5kaW5nLGFyZ3MpO31yZXR1cm4gd3JhcHBlcjt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmludmVydEJ5YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYWNjdW11bGF0b3IgdmFsdWVzLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0b0l0ZXJhdGVlIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIGl0ZXJhdGVlcy5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZXIgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZUludmVydGVyKHNldHRlcix0b0l0ZXJhdGVlKXtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0LGl0ZXJhdGVlKXtyZXR1cm4gYmFzZUludmVydGVyKG9iamVjdCxzZXR0ZXIsdG9JdGVyYXRlZShpdGVyYXRlZSkse30pO307fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSB1c2VkIGZvciBgdW5kZWZpbmVkYCBhcmd1bWVudHMuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZU1hdGhPcGVyYXRpb24ob3BlcmF0b3IsZGVmYXVsdFZhbHVlKXtyZXR1cm4gZnVuY3Rpb24odmFsdWUsb3RoZXIpe3ZhciByZXN1bHQ7aWYodmFsdWU9PT11bmRlZmluZWQmJm90aGVyPT09dW5kZWZpbmVkKXtyZXR1cm4gZGVmYXVsdFZhbHVlO31pZih2YWx1ZSE9PXVuZGVmaW5lZCl7cmVzdWx0PXZhbHVlO31pZihvdGhlciE9PXVuZGVmaW5lZCl7aWYocmVzdWx0PT09dW5kZWZpbmVkKXtyZXR1cm4gb3RoZXI7fWlmKHR5cGVvZiB2YWx1ZT09PSdzdHJpbmcnfHx0eXBlb2Ygb3RoZXI9PT0nc3RyaW5nJyl7dmFsdWU9YmFzZVRvU3RyaW5nKHZhbHVlKTtvdGhlcj1iYXNlVG9TdHJpbmcob3RoZXIpO31lbHNle3ZhbHVlPWJhc2VUb051bWJlcih2YWx1ZSk7b3RoZXI9YmFzZVRvTnVtYmVyKG90aGVyKTt9cmVzdWx0PW9wZXJhdG9yKHZhbHVlLG90aGVyKTt9cmV0dXJuIHJlc3VsdDt9O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ub3ZlcmAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFycmF5RnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGl0ZXJhdGVlcy5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgb3ZlciBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlT3ZlcihhcnJheUZ1bmMpe3JldHVybiBmbGF0UmVzdChmdW5jdGlvbihpdGVyYXRlZXMpe2l0ZXJhdGVlcz1hcnJheU1hcChpdGVyYXRlZXMsYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtyZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncyl7dmFyIHRoaXNBcmc9dGhpcztyZXR1cm4gYXJyYXlGdW5jKGl0ZXJhdGVlcyxmdW5jdGlvbihpdGVyYXRlZSl7cmV0dXJuIGFwcGx5KGl0ZXJhdGVlLHRoaXNBcmcsYXJncyk7fSk7fSk7fSk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIHRoZSBwYWRkaW5nIGZvciBgc3RyaW5nYCBiYXNlZCBvbiBgbGVuZ3RoYC4gVGhlIGBjaGFyc2Agc3RyaW5nXG4gICAgICAgICAqIGlzIHRydW5jYXRlZCBpZiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZXhjZWVkcyBgbGVuZ3RoYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AuXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZVBhZGRpbmcobGVuZ3RoLGNoYXJzKXtjaGFycz1jaGFycz09PXVuZGVmaW5lZD8nICc6YmFzZVRvU3RyaW5nKGNoYXJzKTt2YXIgY2hhcnNMZW5ndGg9Y2hhcnMubGVuZ3RoO2lmKGNoYXJzTGVuZ3RoPDIpe3JldHVybiBjaGFyc0xlbmd0aD9iYXNlUmVwZWF0KGNoYXJzLGxlbmd0aCk6Y2hhcnM7fXZhciByZXN1bHQ9YmFzZVJlcGVhdChjaGFycyxuYXRpdmVDZWlsKGxlbmd0aC9zdHJpbmdTaXplKGNoYXJzKSkpO3JldHVybiBoYXNVbmljb2RlKGNoYXJzKT9jYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShyZXN1bHQpLDAsbGVuZ3RoKS5qb2luKCcnKTpyZXN1bHQuc2xpY2UoMCxsZW5ndGgpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZ1xuICAgICAgICAgKiBvZiBgdGhpc0FyZ2AgYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZVBhcnRpYWwoZnVuYyxiaXRtYXNrLHRoaXNBcmcscGFydGlhbHMpe3ZhciBpc0JpbmQ9Yml0bWFzayZXUkFQX0JJTkRfRkxBRyxDdG9yPWNyZWF0ZUN0b3IoZnVuYyk7ZnVuY3Rpb24gd3JhcHBlcigpe3ZhciBhcmdzSW5kZXg9LTEsYXJnc0xlbmd0aD1hcmd1bWVudHMubGVuZ3RoLGxlZnRJbmRleD0tMSxsZWZ0TGVuZ3RoPXBhcnRpYWxzLmxlbmd0aCxhcmdzPUFycmF5KGxlZnRMZW5ndGgrYXJnc0xlbmd0aCksZm49dGhpcyYmdGhpcyE9PXJvb3QmJnRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyP0N0b3I6ZnVuYzt3aGlsZSgrK2xlZnRJbmRleDxsZWZ0TGVuZ3RoKXthcmdzW2xlZnRJbmRleF09cGFydGlhbHNbbGVmdEluZGV4XTt9d2hpbGUoYXJnc0xlbmd0aC0tKXthcmdzW2xlZnRJbmRleCsrXT1hcmd1bWVudHNbKythcmdzSW5kZXhdO31yZXR1cm4gYXBwbHkoZm4saXNCaW5kP3RoaXNBcmc6dGhpcyxhcmdzKTt9cmV0dXJuIHdyYXBwZXI7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZVJhbmdlKGZyb21SaWdodCl7cmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LGVuZCxzdGVwKXtpZihzdGVwJiZ0eXBlb2Ygc3RlcCE9PSdudW1iZXInJiZpc0l0ZXJhdGVlQ2FsbChzdGFydCxlbmQsc3RlcCkpe2VuZD1zdGVwPXVuZGVmaW5lZDt9Ly8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuc3RhcnQ9dG9GaW5pdGUoc3RhcnQpO2lmKGVuZD09PXVuZGVmaW5lZCl7ZW5kPXN0YXJ0O3N0YXJ0PTA7fWVsc2V7ZW5kPXRvRmluaXRlKGVuZCk7fXN0ZXA9c3RlcD09PXVuZGVmaW5lZD9zdGFydDxlbmQ/MTotMTp0b0Zpbml0ZShzdGVwKTtyZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LGVuZCxzdGVwLGZyb21SaWdodCk7fTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcmVsYXRpb25hbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVsYXRpb25hbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24ob3BlcmF0b3Ipe3JldHVybiBmdW5jdGlvbih2YWx1ZSxvdGhlcil7aWYoISh0eXBlb2YgdmFsdWU9PT0nc3RyaW5nJyYmdHlwZW9mIG90aGVyPT09J3N0cmluZycpKXt2YWx1ZT10b051bWJlcih2YWx1ZSk7b3RoZXI9dG9OdW1iZXIob3RoZXIpO31yZXR1cm4gb3BlcmF0b3IodmFsdWUsb3RoZXIpO307fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gY29udGludWUgY3VycnlpbmcuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBGdW5jIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGBmdW5jYCB3cmFwcGVyLlxuICAgICAgICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlUmVjdXJyeShmdW5jLGJpdG1hc2ssd3JhcEZ1bmMscGxhY2Vob2xkZXIsdGhpc0FyZyxwYXJ0aWFscyxob2xkZXJzLGFyZ1BvcyxhcnksYXJpdHkpe3ZhciBpc0N1cnJ5PWJpdG1hc2smV1JBUF9DVVJSWV9GTEFHLG5ld0hvbGRlcnM9aXNDdXJyeT9ob2xkZXJzOnVuZGVmaW5lZCxuZXdIb2xkZXJzUmlnaHQ9aXNDdXJyeT91bmRlZmluZWQ6aG9sZGVycyxuZXdQYXJ0aWFscz1pc0N1cnJ5P3BhcnRpYWxzOnVuZGVmaW5lZCxuZXdQYXJ0aWFsc1JpZ2h0PWlzQ3Vycnk/dW5kZWZpbmVkOnBhcnRpYWxzO2JpdG1hc2t8PWlzQ3Vycnk/V1JBUF9QQVJUSUFMX0ZMQUc6V1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUc7Yml0bWFzayY9fihpc0N1cnJ5P1dSQVBfUEFSVElBTF9SSUdIVF9GTEFHOldSQVBfUEFSVElBTF9GTEFHKTtpZighKGJpdG1hc2smV1JBUF9DVVJSWV9CT1VORF9GTEFHKSl7Yml0bWFzayY9fihXUkFQX0JJTkRfRkxBR3xXUkFQX0JJTkRfS0VZX0ZMQUcpO312YXIgbmV3RGF0YT1bZnVuYyxiaXRtYXNrLHRoaXNBcmcsbmV3UGFydGlhbHMsbmV3SG9sZGVycyxuZXdQYXJ0aWFsc1JpZ2h0LG5ld0hvbGRlcnNSaWdodCxhcmdQb3MsYXJ5LGFyaXR5XTt2YXIgcmVzdWx0PXdyYXBGdW5jLmFwcGx5KHVuZGVmaW5lZCxuZXdEYXRhKTtpZihpc0xhemlhYmxlKGZ1bmMpKXtzZXREYXRhKHJlc3VsdCxuZXdEYXRhKTt9cmVzdWx0LnBsYWNlaG9sZGVyPXBsYWNlaG9sZGVyO3JldHVybiBzZXRXcmFwVG9TdHJpbmcocmVzdWx0LGZ1bmMsYml0bWFzayk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5yb3VuZGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgTWF0aGAgbWV0aG9kIHRvIHVzZSB3aGVuIHJvdW5kaW5nLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByb3VuZCBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlUm91bmQobWV0aG9kTmFtZSl7dmFyIGZ1bmM9TWF0aFttZXRob2ROYW1lXTtyZXR1cm4gZnVuY3Rpb24obnVtYmVyLHByZWNpc2lvbil7bnVtYmVyPXRvTnVtYmVyKG51bWJlcik7cHJlY2lzaW9uPXByZWNpc2lvbj09bnVsbD8wOm5hdGl2ZU1pbih0b0ludGVnZXIocHJlY2lzaW9uKSwyOTIpO2lmKHByZWNpc2lvbil7Ly8gU2hpZnQgd2l0aCBleHBvbmVudGlhbCBub3RhdGlvbiB0byBhdm9pZCBmbG9hdGluZy1wb2ludCBpc3N1ZXMuXG4vLyBTZWUgW01ETl0oaHR0cHM6Ly9tZG4uaW8vcm91bmQjRXhhbXBsZXMpIGZvciBtb3JlIGRldGFpbHMuXG52YXIgcGFpcj0odG9TdHJpbmcobnVtYmVyKSsnZScpLnNwbGl0KCdlJyksdmFsdWU9ZnVuYyhwYWlyWzBdKydlJysoK3BhaXJbMV0rcHJlY2lzaW9uKSk7cGFpcj0odG9TdHJpbmcodmFsdWUpKydlJykuc3BsaXQoJ2UnKTtyZXR1cm4rKHBhaXJbMF0rJ2UnKygrcGFpclsxXS1wcmVjaXNpb24pKTt9cmV0dXJuIGZ1bmMobnVtYmVyKTt9O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICAgICAgICAgKi92YXIgY3JlYXRlU2V0PSEoU2V0JiYxL3NldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdPT1JTkZJTklUWSk/bm9vcDpmdW5jdGlvbih2YWx1ZXMpe3JldHVybiBuZXcgU2V0KHZhbHVlcyk7fTsvKipcbiAgICAgICAqIENyZWF0ZXMgYSBgXy50b1BhaXJzYCBvciBgXy50b1BhaXJzSW5gIGZ1bmN0aW9uLlxuICAgICAgICpcbiAgICAgICAqIEBwcml2YXRlXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFpcnMgZnVuY3Rpb24uXG4gICAgICAgKi9mdW5jdGlvbiBjcmVhdGVUb1BhaXJzKGtleXNGdW5jKXtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0KXt2YXIgdGFnPWdldFRhZyhvYmplY3QpO2lmKHRhZz09bWFwVGFnKXtyZXR1cm4gbWFwVG9BcnJheShvYmplY3QpO31pZih0YWc9PXNldFRhZyl7cmV0dXJuIHNldFRvUGFpcnMob2JqZWN0KTt9cmV0dXJuIGJhc2VUb1BhaXJzKG9iamVjdCxrZXlzRnVuYyhvYmplY3QpKTt9O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGN1cnJpZXMgb3IgaW52b2tlcyBgZnVuY2Agd2l0aCBvcHRpb25hbFxuICAgICAgICAgKiBgdGhpc2AgYmluZGluZyBhbmQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICAgICAqICAgIDEgLSBgXy5iaW5kYFxuICAgICAgICAgKiAgICAyIC0gYF8uYmluZEtleWBcbiAgICAgICAgICogICAgNCAtIGBfLmN1cnJ5YCBvciBgXy5jdXJyeVJpZ2h0YCBvZiBhIGJvdW5kIGZ1bmN0aW9uXG4gICAgICAgICAqICAgIDggLSBgXy5jdXJyeWBcbiAgICAgICAgICogICAxNiAtIGBfLmN1cnJ5UmlnaHRgXG4gICAgICAgICAqICAgMzIgLSBgXy5wYXJ0aWFsYFxuICAgICAgICAgKiAgIDY0IC0gYF8ucGFydGlhbFJpZ2h0YFxuICAgICAgICAgKiAgMTI4IC0gYF8ucmVhcmdgXG4gICAgICAgICAqICAyNTYgLSBgXy5hcnlgXG4gICAgICAgICAqICA1MTIgLSBgXy5mbGlwYFxuICAgICAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgICAgICovZnVuY3Rpb24gY3JlYXRlV3JhcChmdW5jLGJpdG1hc2ssdGhpc0FyZyxwYXJ0aWFscyxob2xkZXJzLGFyZ1BvcyxhcnksYXJpdHkpe3ZhciBpc0JpbmRLZXk9Yml0bWFzayZXUkFQX0JJTkRfS0VZX0ZMQUc7aWYoIWlzQmluZEtleSYmdHlwZW9mIGZ1bmMhPT0nZnVuY3Rpb24nKXt0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7fXZhciBsZW5ndGg9cGFydGlhbHM/cGFydGlhbHMubGVuZ3RoOjA7aWYoIWxlbmd0aCl7Yml0bWFzayY9fihXUkFQX1BBUlRJQUxfRkxBR3xXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7cGFydGlhbHM9aG9sZGVycz11bmRlZmluZWQ7fWFyeT1hcnk9PT11bmRlZmluZWQ/YXJ5Om5hdGl2ZU1heCh0b0ludGVnZXIoYXJ5KSwwKTthcml0eT1hcml0eT09PXVuZGVmaW5lZD9hcml0eTp0b0ludGVnZXIoYXJpdHkpO2xlbmd0aC09aG9sZGVycz9ob2xkZXJzLmxlbmd0aDowO2lmKGJpdG1hc2smV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpe3ZhciBwYXJ0aWFsc1JpZ2h0PXBhcnRpYWxzLGhvbGRlcnNSaWdodD1ob2xkZXJzO3BhcnRpYWxzPWhvbGRlcnM9dW5kZWZpbmVkO312YXIgZGF0YT1pc0JpbmRLZXk/dW5kZWZpbmVkOmdldERhdGEoZnVuYyk7dmFyIG5ld0RhdGE9W2Z1bmMsYml0bWFzayx0aGlzQXJnLHBhcnRpYWxzLGhvbGRlcnMscGFydGlhbHNSaWdodCxob2xkZXJzUmlnaHQsYXJnUG9zLGFyeSxhcml0eV07aWYoZGF0YSl7bWVyZ2VEYXRhKG5ld0RhdGEsZGF0YSk7fWZ1bmM9bmV3RGF0YVswXTtiaXRtYXNrPW5ld0RhdGFbMV07dGhpc0FyZz1uZXdEYXRhWzJdO3BhcnRpYWxzPW5ld0RhdGFbM107aG9sZGVycz1uZXdEYXRhWzRdO2FyaXR5PW5ld0RhdGFbOV09bmV3RGF0YVs5XT09PXVuZGVmaW5lZD9pc0JpbmRLZXk/MDpmdW5jLmxlbmd0aDpuYXRpdmVNYXgobmV3RGF0YVs5XS1sZW5ndGgsMCk7aWYoIWFyaXR5JiZiaXRtYXNrJihXUkFQX0NVUlJZX0ZMQUd8V1JBUF9DVVJSWV9SSUdIVF9GTEFHKSl7Yml0bWFzayY9fihXUkFQX0NVUlJZX0ZMQUd8V1JBUF9DVVJSWV9SSUdIVF9GTEFHKTt9aWYoIWJpdG1hc2t8fGJpdG1hc2s9PVdSQVBfQklORF9GTEFHKXt2YXIgcmVzdWx0PWNyZWF0ZUJpbmQoZnVuYyxiaXRtYXNrLHRoaXNBcmcpO31lbHNlIGlmKGJpdG1hc2s9PVdSQVBfQ1VSUllfRkxBR3x8Yml0bWFzaz09V1JBUF9DVVJSWV9SSUdIVF9GTEFHKXtyZXN1bHQ9Y3JlYXRlQ3VycnkoZnVuYyxiaXRtYXNrLGFyaXR5KTt9ZWxzZSBpZigoYml0bWFzaz09V1JBUF9QQVJUSUFMX0ZMQUd8fGJpdG1hc2s9PShXUkFQX0JJTkRfRkxBR3xXUkFQX1BBUlRJQUxfRkxBRykpJiYhaG9sZGVycy5sZW5ndGgpe3Jlc3VsdD1jcmVhdGVQYXJ0aWFsKGZ1bmMsYml0bWFzayx0aGlzQXJnLHBhcnRpYWxzKTt9ZWxzZXtyZXN1bHQ9Y3JlYXRlSHlicmlkLmFwcGx5KHVuZGVmaW5lZCxuZXdEYXRhKTt9dmFyIHNldHRlcj1kYXRhP2Jhc2VTZXREYXRhOnNldERhdGE7cmV0dXJuIHNldFdyYXBUb1N0cmluZyhzZXR0ZXIocmVzdWx0LG5ld0RhdGEpLGZ1bmMsYml0bWFzayk7fS8qKlxuICAgICAgICAgKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAgICAgICAgICogb2Ygc291cmNlIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXNcbiAgICAgICAgICogdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAgICAgICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAgICAgKi9mdW5jdGlvbiBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKG9ialZhbHVlLHNyY1ZhbHVlLGtleSxvYmplY3Qpe2lmKG9ialZhbHVlPT09dW5kZWZpbmVkfHxlcShvYmpWYWx1ZSxvYmplY3RQcm90b1trZXldKSYmIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LGtleSkpe3JldHVybiBzcmNWYWx1ZTt9cmV0dXJuIG9ialZhbHVlO30vKipcbiAgICAgICAgICogVXNlZCBieSBgXy5kZWZhdWx0c0RlZXBgIHRvIGN1c3RvbWl6ZSBpdHMgYF8ubWVyZ2VgIHVzZSB0byBtZXJnZSBzb3VyY2VcbiAgICAgICAgICogb2JqZWN0cyBpbnRvIGRlc3RpbmF0aW9uIG9iamVjdHMgdGhhdCBhcmUgcGFzc2VkIHRocnUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICAgICAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gbWVyZ2UuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgcGFyZW50IG9iamVjdCBvZiBgc3JjVmFsdWVgLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAgICAgKi9mdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLHNyY1ZhbHVlLGtleSxvYmplY3Qsc291cmNlLHN0YWNrKXtpZihpc09iamVjdChvYmpWYWx1ZSkmJmlzT2JqZWN0KHNyY1ZhbHVlKSl7Ly8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG5zdGFjay5zZXQoc3JjVmFsdWUsb2JqVmFsdWUpO2Jhc2VNZXJnZShvYmpWYWx1ZSxzcmNWYWx1ZSx1bmRlZmluZWQsY3VzdG9tRGVmYXVsdHNNZXJnZSxzdGFjayk7c3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTt9cmV0dXJuIG9ialZhbHVlO30vKipcbiAgICAgICAgICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAgICAgICAgICogb2JqZWN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICAgICAgICAgKi9mdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpe3JldHVybiBpc1BsYWluT2JqZWN0KHZhbHVlKT91bmRlZmluZWQ6dmFsdWU7fS8qKlxuICAgICAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gICAgICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksb3RoZXIsYml0bWFzayxjdXN0b21pemVyLGVxdWFsRnVuYyxzdGFjayl7dmFyIGlzUGFydGlhbD1iaXRtYXNrJkNPTVBBUkVfUEFSVElBTF9GTEFHLGFyckxlbmd0aD1hcnJheS5sZW5ndGgsb3RoTGVuZ3RoPW90aGVyLmxlbmd0aDtpZihhcnJMZW5ndGghPW90aExlbmd0aCYmIShpc1BhcnRpYWwmJm90aExlbmd0aD5hcnJMZW5ndGgpKXtyZXR1cm4gZmFsc2U7fS8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbnZhciBzdGFja2VkPXN0YWNrLmdldChhcnJheSk7aWYoc3RhY2tlZCYmc3RhY2suZ2V0KG90aGVyKSl7cmV0dXJuIHN0YWNrZWQ9PW90aGVyO312YXIgaW5kZXg9LTEscmVzdWx0PXRydWUsc2Vlbj1iaXRtYXNrJkNPTVBBUkVfVU5PUkRFUkVEX0ZMQUc/bmV3IFNldENhY2hlKCk6dW5kZWZpbmVkO3N0YWNrLnNldChhcnJheSxvdGhlcik7c3RhY2suc2V0KG90aGVyLGFycmF5KTsvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG53aGlsZSgrK2luZGV4PGFyckxlbmd0aCl7dmFyIGFyclZhbHVlPWFycmF5W2luZGV4XSxvdGhWYWx1ZT1vdGhlcltpbmRleF07aWYoY3VzdG9taXplcil7dmFyIGNvbXBhcmVkPWlzUGFydGlhbD9jdXN0b21pemVyKG90aFZhbHVlLGFyclZhbHVlLGluZGV4LG90aGVyLGFycmF5LHN0YWNrKTpjdXN0b21pemVyKGFyclZhbHVlLG90aFZhbHVlLGluZGV4LGFycmF5LG90aGVyLHN0YWNrKTt9aWYoY29tcGFyZWQhPT11bmRlZmluZWQpe2lmKGNvbXBhcmVkKXtjb250aW51ZTt9cmVzdWx0PWZhbHNlO2JyZWFrO30vLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuaWYoc2Vlbil7aWYoIWFycmF5U29tZShvdGhlcixmdW5jdGlvbihvdGhWYWx1ZSxvdGhJbmRleCl7aWYoIWNhY2hlSGFzKHNlZW4sb3RoSW5kZXgpJiYoYXJyVmFsdWU9PT1vdGhWYWx1ZXx8ZXF1YWxGdW5jKGFyclZhbHVlLG90aFZhbHVlLGJpdG1hc2ssY3VzdG9taXplcixzdGFjaykpKXtyZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTt9fSkpe3Jlc3VsdD1mYWxzZTticmVhazt9fWVsc2UgaWYoIShhcnJWYWx1ZT09PW90aFZhbHVlfHxlcXVhbEZ1bmMoYXJyVmFsdWUsb3RoVmFsdWUsYml0bWFzayxjdXN0b21pemVyLHN0YWNrKSkpe3Jlc3VsdD1mYWxzZTticmVhazt9fXN0YWNrWydkZWxldGUnXShhcnJheSk7c3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtyZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICAgICAgICAgKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gICAgICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCxvdGhlcix0YWcsYml0bWFzayxjdXN0b21pemVyLGVxdWFsRnVuYyxzdGFjayl7c3dpdGNoKHRhZyl7Y2FzZSBkYXRhVmlld1RhZzppZihvYmplY3QuYnl0ZUxlbmd0aCE9b3RoZXIuYnl0ZUxlbmd0aHx8b2JqZWN0LmJ5dGVPZmZzZXQhPW90aGVyLmJ5dGVPZmZzZXQpe3JldHVybiBmYWxzZTt9b2JqZWN0PW9iamVjdC5idWZmZXI7b3RoZXI9b3RoZXIuYnVmZmVyO2Nhc2UgYXJyYXlCdWZmZXJUYWc6aWYob2JqZWN0LmJ5dGVMZW5ndGghPW90aGVyLmJ5dGVMZW5ndGh8fCFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSxuZXcgVWludDhBcnJheShvdGhlcikpKXtyZXR1cm4gZmFsc2U7fXJldHVybiB0cnVlO2Nhc2UgYm9vbFRhZzpjYXNlIGRhdGVUYWc6Y2FzZSBudW1iZXJUYWc6Ly8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbi8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG5yZXR1cm4gZXEoK29iamVjdCwrb3RoZXIpO2Nhc2UgZXJyb3JUYWc6cmV0dXJuIG9iamVjdC5uYW1lPT1vdGhlci5uYW1lJiZvYmplY3QubWVzc2FnZT09b3RoZXIubWVzc2FnZTtjYXNlIHJlZ2V4cFRhZzpjYXNlIHN0cmluZ1RhZzovLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuLy8gZm9yIG1vcmUgZGV0YWlscy5cbnJldHVybiBvYmplY3Q9PW90aGVyKycnO2Nhc2UgbWFwVGFnOnZhciBjb252ZXJ0PW1hcFRvQXJyYXk7Y2FzZSBzZXRUYWc6dmFyIGlzUGFydGlhbD1iaXRtYXNrJkNPTVBBUkVfUEFSVElBTF9GTEFHO2NvbnZlcnR8fChjb252ZXJ0PXNldFRvQXJyYXkpO2lmKG9iamVjdC5zaXplIT1vdGhlci5zaXplJiYhaXNQYXJ0aWFsKXtyZXR1cm4gZmFsc2U7fS8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbnZhciBzdGFja2VkPXN0YWNrLmdldChvYmplY3QpO2lmKHN0YWNrZWQpe3JldHVybiBzdGFja2VkPT1vdGhlcjt9Yml0bWFza3w9Q09NUEFSRV9VTk9SREVSRURfRkxBRzsvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbnN0YWNrLnNldChvYmplY3Qsb3RoZXIpO3ZhciByZXN1bHQ9ZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLGNvbnZlcnQob3RoZXIpLGJpdG1hc2ssY3VzdG9taXplcixlcXVhbEZ1bmMsc3RhY2spO3N0YWNrWydkZWxldGUnXShvYmplY3QpO3JldHVybiByZXN1bHQ7Y2FzZSBzeW1ib2xUYWc6aWYoc3ltYm9sVmFsdWVPZil7cmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpPT1zeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO319cmV0dXJuIGZhbHNlO30vKipcbiAgICAgICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgICAgICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCxvdGhlcixiaXRtYXNrLGN1c3RvbWl6ZXIsZXF1YWxGdW5jLHN0YWNrKXt2YXIgaXNQYXJ0aWFsPWJpdG1hc2smQ09NUEFSRV9QQVJUSUFMX0ZMQUcsb2JqUHJvcHM9Z2V0QWxsS2V5cyhvYmplY3QpLG9iakxlbmd0aD1vYmpQcm9wcy5sZW5ndGgsb3RoUHJvcHM9Z2V0QWxsS2V5cyhvdGhlciksb3RoTGVuZ3RoPW90aFByb3BzLmxlbmd0aDtpZihvYmpMZW5ndGghPW90aExlbmd0aCYmIWlzUGFydGlhbCl7cmV0dXJuIGZhbHNlO312YXIgaW5kZXg9b2JqTGVuZ3RoO3doaWxlKGluZGV4LS0pe3ZhciBrZXk9b2JqUHJvcHNbaW5kZXhdO2lmKCEoaXNQYXJ0aWFsP2tleSBpbiBvdGhlcjpoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLGtleSkpKXtyZXR1cm4gZmFsc2U7fX0vLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG52YXIgc3RhY2tlZD1zdGFjay5nZXQob2JqZWN0KTtpZihzdGFja2VkJiZzdGFjay5nZXQob3RoZXIpKXtyZXR1cm4gc3RhY2tlZD09b3RoZXI7fXZhciByZXN1bHQ9dHJ1ZTtzdGFjay5zZXQob2JqZWN0LG90aGVyKTtzdGFjay5zZXQob3RoZXIsb2JqZWN0KTt2YXIgc2tpcEN0b3I9aXNQYXJ0aWFsO3doaWxlKCsraW5kZXg8b2JqTGVuZ3RoKXtrZXk9b2JqUHJvcHNbaW5kZXhdO3ZhciBvYmpWYWx1ZT1vYmplY3Rba2V5XSxvdGhWYWx1ZT1vdGhlcltrZXldO2lmKGN1c3RvbWl6ZXIpe3ZhciBjb21wYXJlZD1pc1BhcnRpYWw/Y3VzdG9taXplcihvdGhWYWx1ZSxvYmpWYWx1ZSxrZXksb3RoZXIsb2JqZWN0LHN0YWNrKTpjdXN0b21pemVyKG9ialZhbHVlLG90aFZhbHVlLGtleSxvYmplY3Qsb3RoZXIsc3RhY2spO30vLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbmlmKCEoY29tcGFyZWQ9PT11bmRlZmluZWQ/b2JqVmFsdWU9PT1vdGhWYWx1ZXx8ZXF1YWxGdW5jKG9ialZhbHVlLG90aFZhbHVlLGJpdG1hc2ssY3VzdG9taXplcixzdGFjayk6Y29tcGFyZWQpKXtyZXN1bHQ9ZmFsc2U7YnJlYWs7fXNraXBDdG9yfHwoc2tpcEN0b3I9a2V5PT0nY29uc3RydWN0b3InKTt9aWYocmVzdWx0JiYhc2tpcEN0b3Ipe3ZhciBvYmpDdG9yPW9iamVjdC5jb25zdHJ1Y3RvcixvdGhDdG9yPW90aGVyLmNvbnN0cnVjdG9yOy8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuaWYob2JqQ3RvciE9b3RoQ3RvciYmJ2NvbnN0cnVjdG9yJ2luIG9iamVjdCYmJ2NvbnN0cnVjdG9yJ2luIG90aGVyJiYhKHR5cGVvZiBvYmpDdG9yPT09J2Z1bmN0aW9uJyYmb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3ImJnR5cGVvZiBvdGhDdG9yPT09J2Z1bmN0aW9uJyYmb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKXtyZXN1bHQ9ZmFsc2U7fX1zdGFja1snZGVsZXRlJ10ob2JqZWN0KTtzdGFja1snZGVsZXRlJ10ob3RoZXIpO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpe3JldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLHVuZGVmaW5lZCxmbGF0dGVuKSxmdW5jKycnKTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgICAgICovZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3Qpe3JldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3Qsa2V5cyxnZXRTeW1ib2xzKTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAgICAgICAgICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAgICAgKi9mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KXtyZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LGtleXNJbixnZXRTeW1ib2xzSW4pO30vKipcbiAgICAgICAgICogR2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBxdWVyeS5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICAgICAqL3ZhciBnZXREYXRhPSFtZXRhTWFwP25vb3A6ZnVuY3Rpb24oZnVuYyl7cmV0dXJuIG1ldGFNYXAuZ2V0KGZ1bmMpO307LyoqXG4gICAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIGBmdW5jYC5cbiAgICAgICAqXG4gICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lLlxuICAgICAgICovZnVuY3Rpb24gZ2V0RnVuY05hbWUoZnVuYyl7dmFyIHJlc3VsdD1mdW5jLm5hbWUrJycsYXJyYXk9cmVhbE5hbWVzW3Jlc3VsdF0sbGVuZ3RoPWhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLHJlc3VsdCk/YXJyYXkubGVuZ3RoOjA7d2hpbGUobGVuZ3RoLS0pe3ZhciBkYXRhPWFycmF5W2xlbmd0aF0sb3RoZXJGdW5jPWRhdGEuZnVuYztpZihvdGhlckZ1bmM9PW51bGx8fG90aGVyRnVuYz09ZnVuYyl7cmV0dXJuIGRhdGEubmFtZTt9fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBhcmd1bWVudCBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgYGZ1bmNgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUuXG4gICAgICAgICAqL2Z1bmN0aW9uIGdldEhvbGRlcihmdW5jKXt2YXIgb2JqZWN0PWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLCdwbGFjZWhvbGRlcicpP2xvZGFzaDpmdW5jO3JldHVybiBvYmplY3QucGxhY2Vob2xkZXI7fS8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBcIml0ZXJhdGVlXCIgZnVuY3Rpb24uIElmIGBfLml0ZXJhdGVlYCBpcyBjdXN0b21pemVkLFxuICAgICAgICAgKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1c3RvbSBtZXRob2QsIG90aGVyd2lzZSBpdCByZXR1cm5zIGBiYXNlSXRlcmF0ZWVgLlxuICAgICAgICAgKiBJZiBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCB0aGUgY2hvc2VuIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCB0aGVtIGFuZFxuICAgICAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IFt2YWx1ZV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiB0aGUgY3JlYXRlZCBpdGVyYXRlZS5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjaG9zZW4gZnVuY3Rpb24gb3IgaXRzIHJlc3VsdC5cbiAgICAgICAgICovZnVuY3Rpb24gZ2V0SXRlcmF0ZWUoKXt2YXIgcmVzdWx0PWxvZGFzaC5pdGVyYXRlZXx8aXRlcmF0ZWU7cmVzdWx0PXJlc3VsdD09PWl0ZXJhdGVlP2Jhc2VJdGVyYXRlZTpyZXN1bHQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cmVzdWx0KGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pOnJlc3VsdDt9LyoqXG4gICAgICAgICAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAgICAgICAgICovZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsa2V5KXt2YXIgZGF0YT1tYXAuX19kYXRhX187cmV0dXJuIGlzS2V5YWJsZShrZXkpP2RhdGFbdHlwZW9mIGtleT09PSdzdHJpbmcnPydzdHJpbmcnOidoYXNoJ106ZGF0YS5tYXA7fS8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3Qpe3ZhciByZXN1bHQ9a2V5cyhvYmplY3QpLGxlbmd0aD1yZXN1bHQubGVuZ3RoO3doaWxlKGxlbmd0aC0tKXt2YXIga2V5PXJlc3VsdFtsZW5ndGhdLHZhbHVlPW9iamVjdFtrZXldO3Jlc3VsdFtsZW5ndGhdPVtrZXksdmFsdWUsaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGdldE5hdGl2ZShvYmplY3Qsa2V5KXt2YXIgdmFsdWU9Z2V0VmFsdWUob2JqZWN0LGtleSk7cmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSk/dmFsdWU6dW5kZWZpbmVkO30vKipcbiAgICAgICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICAgICAgICAgKi9mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpe3ZhciBpc093bj1oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLHN5bVRvU3RyaW5nVGFnKSx0YWc9dmFsdWVbc3ltVG9TdHJpbmdUYWddO3RyeXt2YWx1ZVtzeW1Ub1N0cmluZ1RhZ109dW5kZWZpbmVkO3ZhciB1bm1hc2tlZD10cnVlO31jYXRjaChlKXt9dmFyIHJlc3VsdD1uYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtpZih1bm1hc2tlZCl7aWYoaXNPd24pe3ZhbHVlW3N5bVRvU3RyaW5nVGFnXT10YWc7fWVsc2V7ZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTt9fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAgICAgICAgICovdmFyIGdldFN5bWJvbHM9IW5hdGl2ZUdldFN5bWJvbHM/c3R1YkFycmF5OmZ1bmN0aW9uKG9iamVjdCl7aWYob2JqZWN0PT1udWxsKXtyZXR1cm5bXTt9b2JqZWN0PU9iamVjdChvYmplY3QpO3JldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksZnVuY3Rpb24oc3ltYm9sKXtyZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3Qsc3ltYm9sKTt9KTt9Oy8qKlxuICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAgICpcbiAgICAgICAqIEBwcml2YXRlXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gICAgICAgKi92YXIgZ2V0U3ltYm9sc0luPSFuYXRpdmVHZXRTeW1ib2xzP3N0dWJBcnJheTpmdW5jdGlvbihvYmplY3Qpe3ZhciByZXN1bHQ9W107d2hpbGUob2JqZWN0KXthcnJheVB1c2gocmVzdWx0LGdldFN5bWJvbHMob2JqZWN0KSk7b2JqZWN0PWdldFByb3RvdHlwZShvYmplY3QpO31yZXR1cm4gcmVzdWx0O307LyoqXG4gICAgICAgKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gICAgICAgKlxuICAgICAgICogQHByaXZhdGVcbiAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgICAqL3ZhciBnZXRUYWc9YmFzZUdldFRhZzsvLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZihEYXRhVmlldyYmZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSE9ZGF0YVZpZXdUYWd8fE1hcCYmZ2V0VGFnKG5ldyBNYXAoKSkhPW1hcFRhZ3x8UHJvbWlzZSYmZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSE9cHJvbWlzZVRhZ3x8U2V0JiZnZXRUYWcobmV3IFNldCgpKSE9c2V0VGFnfHxXZWFrTWFwJiZnZXRUYWcobmV3IFdlYWtNYXAoKSkhPXdlYWtNYXBUYWcpe2dldFRhZz1mdW5jdGlvbiBnZXRUYWcodmFsdWUpe3ZhciByZXN1bHQ9YmFzZUdldFRhZyh2YWx1ZSksQ3Rvcj1yZXN1bHQ9PW9iamVjdFRhZz92YWx1ZS5jb25zdHJ1Y3Rvcjp1bmRlZmluZWQsY3RvclN0cmluZz1DdG9yP3RvU291cmNlKEN0b3IpOicnO2lmKGN0b3JTdHJpbmcpe3N3aXRjaChjdG9yU3RyaW5nKXtjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzpyZXR1cm4gZGF0YVZpZXdUYWc7Y2FzZSBtYXBDdG9yU3RyaW5nOnJldHVybiBtYXBUYWc7Y2FzZSBwcm9taXNlQ3RvclN0cmluZzpyZXR1cm4gcHJvbWlzZVRhZztjYXNlIHNldEN0b3JTdHJpbmc6cmV0dXJuIHNldFRhZztjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOnJldHVybiB3ZWFrTWFwVGFnO319cmV0dXJuIHJlc3VsdDt9O30vKipcbiAgICAgICAgICogR2V0cyB0aGUgdmlldywgYXBwbHlpbmcgYW55IGB0cmFuc2Zvcm1zYCB0byB0aGUgYHN0YXJ0YCBhbmQgYGVuZGAgcG9zaXRpb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSB2aWV3LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHZpZXcuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHRyYW5zZm9ybXMgVGhlIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgdmlldy5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYHN0YXJ0YCBhbmQgYGVuZGBcbiAgICAgICAgICogIHBvc2l0aW9ucyBvZiB0aGUgdmlldy5cbiAgICAgICAgICovZnVuY3Rpb24gZ2V0VmlldyhzdGFydCxlbmQsdHJhbnNmb3Jtcyl7dmFyIGluZGV4PS0xLGxlbmd0aD10cmFuc2Zvcm1zLmxlbmd0aDt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIGRhdGE9dHJhbnNmb3Jtc1tpbmRleF0sc2l6ZT1kYXRhLnNpemU7c3dpdGNoKGRhdGEudHlwZSl7Y2FzZSdkcm9wJzpzdGFydCs9c2l6ZTticmVhaztjYXNlJ2Ryb3BSaWdodCc6ZW5kLT1zaXplO2JyZWFrO2Nhc2UndGFrZSc6ZW5kPW5hdGl2ZU1pbihlbmQsc3RhcnQrc2l6ZSk7YnJlYWs7Y2FzZSd0YWtlUmlnaHQnOnN0YXJ0PW5hdGl2ZU1heChzdGFydCxlbmQtc2l6ZSk7YnJlYWs7fX1yZXR1cm57c3RhcnQ6c3RhcnQsZW5kOmVuZH07fS8qKlxuICAgICAgICAgKiBFeHRyYWN0cyB3cmFwcGVyIGRldGFpbHMgZnJvbSB0aGUgYHNvdXJjZWAgYm9keSBjb21tZW50LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3cmFwcGVyIGRldGFpbHMuXG4gICAgICAgICAqL2Z1bmN0aW9uIGdldFdyYXBEZXRhaWxzKHNvdXJjZSl7dmFyIG1hdGNoPXNvdXJjZS5tYXRjaChyZVdyYXBEZXRhaWxzKTtyZXR1cm4gbWF0Y2g/bWF0Y2hbMV0uc3BsaXQocmVTcGxpdERldGFpbHMpOltdO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHByb3BlcnRpZXMuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGhhc1BhdGgob2JqZWN0LHBhdGgsaGFzRnVuYyl7cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7dmFyIGluZGV4PS0xLGxlbmd0aD1wYXRoLmxlbmd0aCxyZXN1bHQ9ZmFsc2U7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciBrZXk9dG9LZXkocGF0aFtpbmRleF0pO2lmKCEocmVzdWx0PW9iamVjdCE9bnVsbCYmaGFzRnVuYyhvYmplY3Qsa2V5KSkpe2JyZWFrO31vYmplY3Q9b2JqZWN0W2tleV07fWlmKHJlc3VsdHx8KytpbmRleCE9bGVuZ3RoKXtyZXR1cm4gcmVzdWx0O31sZW5ndGg9b2JqZWN0PT1udWxsPzA6b2JqZWN0Lmxlbmd0aDtyZXR1cm4hIWxlbmd0aCYmaXNMZW5ndGgobGVuZ3RoKSYmaXNJbmRleChrZXksbGVuZ3RoKSYmKGlzQXJyYXkob2JqZWN0KXx8aXNBcmd1bWVudHMob2JqZWN0KSk7fS8qKlxuICAgICAgICAgKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAgICAgKi9mdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSl7dmFyIGxlbmd0aD1hcnJheS5sZW5ndGgscmVzdWx0PW5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpOy8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG5pZihsZW5ndGgmJnR5cGVvZiBhcnJheVswXT09PSdzdHJpbmcnJiZoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCdpbmRleCcpKXtyZXN1bHQuaW5kZXg9YXJyYXkuaW5kZXg7cmVzdWx0LmlucHV0PWFycmF5LmlucHV0O31yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAgICAgKi9mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KXtyZXR1cm4gdHlwZW9mIG9iamVjdC5jb25zdHJ1Y3Rvcj09PSdmdW5jdGlvbicmJiFpc1Byb3RvdHlwZShvYmplY3QpP2Jhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpOnt9O30vKipcbiAgICAgICAgICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAgICAgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE1hcGAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgYFNldGAsIG9yIGBTdHJpbmdgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gICAgICAgICAqL2Z1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCx0YWcsaXNEZWVwKXt2YXIgQ3Rvcj1vYmplY3QuY29uc3RydWN0b3I7c3dpdGNoKHRhZyl7Y2FzZSBhcnJheUJ1ZmZlclRhZzpyZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO2Nhc2UgYm9vbFRhZzpjYXNlIGRhdGVUYWc6cmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO2Nhc2UgZGF0YVZpZXdUYWc6cmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LGlzRGVlcCk7Y2FzZSBmbG9hdDMyVGFnOmNhc2UgZmxvYXQ2NFRhZzpjYXNlIGludDhUYWc6Y2FzZSBpbnQxNlRhZzpjYXNlIGludDMyVGFnOmNhc2UgdWludDhUYWc6Y2FzZSB1aW50OENsYW1wZWRUYWc6Y2FzZSB1aW50MTZUYWc6Y2FzZSB1aW50MzJUYWc6cmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsaXNEZWVwKTtjYXNlIG1hcFRhZzpyZXR1cm4gbmV3IEN0b3IoKTtjYXNlIG51bWJlclRhZzpjYXNlIHN0cmluZ1RhZzpyZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtjYXNlIHJlZ2V4cFRhZzpyZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtjYXNlIHNldFRhZzpyZXR1cm4gbmV3IEN0b3IoKTtjYXNlIHN5bWJvbFRhZzpyZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTt9fS8qKlxuICAgICAgICAgKiBJbnNlcnRzIHdyYXBwZXIgYGRldGFpbHNgIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBgc291cmNlYCBib2R5LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gbW9kaWZ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IGRldGFpbHMgVGhlIGRldGFpbHMgdG8gaW5zZXJ0LlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzb3VyY2UuXG4gICAgICAgICAqL2Z1bmN0aW9uIGluc2VydFdyYXBEZXRhaWxzKHNvdXJjZSxkZXRhaWxzKXt2YXIgbGVuZ3RoPWRldGFpbHMubGVuZ3RoO2lmKCFsZW5ndGgpe3JldHVybiBzb3VyY2U7fXZhciBsYXN0SW5kZXg9bGVuZ3RoLTE7ZGV0YWlsc1tsYXN0SW5kZXhdPShsZW5ndGg+MT8nJiAnOicnKStkZXRhaWxzW2xhc3RJbmRleF07ZGV0YWlscz1kZXRhaWxzLmpvaW4obGVuZ3RoPjI/JywgJzonICcpO3JldHVybiBzb3VyY2UucmVwbGFjZShyZVdyYXBDb21tZW50LCd7XFxuLyogW3dyYXBwZWQgd2l0aCAnK2RldGFpbHMrJ10gKi9cXG4nKTt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSl7cmV0dXJuIGlzQXJyYXkodmFsdWUpfHxpc0FyZ3VtZW50cyh2YWx1ZSl8fCEhKHNwcmVhZGFibGVTeW1ib2wmJnZhbHVlJiZ2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSxsZW5ndGgpe3ZhciB0eXBlPXR5cGVvZiB2YWx1ZT09PSd1bmRlZmluZWQnPyd1bmRlZmluZWQnOl90eXBlb2YodmFsdWUpO2xlbmd0aD1sZW5ndGg9PW51bGw/TUFYX1NBRkVfSU5URUdFUjpsZW5ndGg7cmV0dXJuISFsZW5ndGgmJih0eXBlPT0nbnVtYmVyJ3x8dHlwZSE9J3N5bWJvbCcmJnJlSXNVaW50LnRlc3QodmFsdWUpKSYmdmFsdWU+LTEmJnZhbHVlJTE9PTAmJnZhbHVlPGxlbmd0aDt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAgICAgICAgICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAgICAgICAgICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gICAgICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLGluZGV4LG9iamVjdCl7aWYoIWlzT2JqZWN0KG9iamVjdCkpe3JldHVybiBmYWxzZTt9dmFyIHR5cGU9dHlwZW9mIGluZGV4PT09J3VuZGVmaW5lZCc/J3VuZGVmaW5lZCc6X3R5cGVvZihpbmRleCk7aWYodHlwZT09J251bWJlcic/aXNBcnJheUxpa2Uob2JqZWN0KSYmaXNJbmRleChpbmRleCxvYmplY3QubGVuZ3RoKTp0eXBlPT0nc3RyaW5nJyYmaW5kZXggaW4gb2JqZWN0KXtyZXR1cm4gZXEob2JqZWN0W2luZGV4XSx2YWx1ZSk7fXJldHVybiBmYWxzZTt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBpc0tleSh2YWx1ZSxvYmplY3Qpe2lmKGlzQXJyYXkodmFsdWUpKXtyZXR1cm4gZmFsc2U7fXZhciB0eXBlPXR5cGVvZiB2YWx1ZT09PSd1bmRlZmluZWQnPyd1bmRlZmluZWQnOl90eXBlb2YodmFsdWUpO2lmKHR5cGU9PSdudW1iZXInfHx0eXBlPT0nc3ltYm9sJ3x8dHlwZT09J2Jvb2xlYW4nfHx2YWx1ZT09bnVsbHx8aXNTeW1ib2wodmFsdWUpKXtyZXR1cm4gdHJ1ZTt9cmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSl8fCFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSl8fG9iamVjdCE9bnVsbCYmdmFsdWUgaW4gT2JqZWN0KG9iamVjdCk7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICovZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKXt2YXIgdHlwZT10eXBlb2YgdmFsdWU9PT0ndW5kZWZpbmVkJz8ndW5kZWZpbmVkJzpfdHlwZW9mKHZhbHVlKTtyZXR1cm4gdHlwZT09J3N0cmluZyd8fHR5cGU9PSdudW1iZXInfHx0eXBlPT0nc3ltYm9sJ3x8dHlwZT09J2Jvb2xlYW4nP3ZhbHVlIT09J19fcHJvdG9fXyc6dmFsdWU9PT1udWxsO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LFxuICAgICAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBpc0xhemlhYmxlKGZ1bmMpe3ZhciBmdW5jTmFtZT1nZXRGdW5jTmFtZShmdW5jKSxvdGhlcj1sb2Rhc2hbZnVuY05hbWVdO2lmKHR5cGVvZiBvdGhlciE9PSdmdW5jdGlvbid8fCEoZnVuY05hbWUgaW4gTGF6eVdyYXBwZXIucHJvdG90eXBlKSl7cmV0dXJuIGZhbHNlO31pZihmdW5jPT09b3RoZXIpe3JldHVybiB0cnVlO312YXIgZGF0YT1nZXREYXRhKG90aGVyKTtyZXR1cm4hIWRhdGEmJmZ1bmM9PT1kYXRhWzBdO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBpc01hc2tlZChmdW5jKXtyZXR1cm4hIW1hc2tTcmNLZXkmJm1hc2tTcmNLZXkgaW4gZnVuYzt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaXMgY2FwYWJsZSBvZiBiZWluZyBtYXNrZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2thYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL3ZhciBpc01hc2thYmxlPWNvcmVKc0RhdGE/aXNGdW5jdGlvbjpzdHViRmFsc2U7LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKi9mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSl7dmFyIEN0b3I9dmFsdWUmJnZhbHVlLmNvbnN0cnVjdG9yLHByb3RvPXR5cGVvZiBDdG9yPT09J2Z1bmN0aW9uJyYmQ3Rvci5wcm90b3R5cGV8fG9iamVjdFByb3RvO3JldHVybiB2YWx1ZT09PXByb3RvO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAgICAgICAgICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSl7cmV0dXJuIHZhbHVlPT09dmFsdWUmJiFpc09iamVjdCh2YWx1ZSk7fS8qKlxuICAgICAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYG1hdGNoZXNQcm9wZXJ0eWAgZm9yIHNvdXJjZSB2YWx1ZXMgc3VpdGFibGVcbiAgICAgICAgICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAgICAgKi9mdW5jdGlvbiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShrZXksc3JjVmFsdWUpe3JldHVybiBmdW5jdGlvbihvYmplY3Qpe2lmKG9iamVjdD09bnVsbCl7cmV0dXJuIGZhbHNlO31yZXR1cm4gb2JqZWN0W2tleV09PT1zcmNWYWx1ZSYmKHNyY1ZhbHVlIT09dW5kZWZpbmVkfHxrZXkgaW4gT2JqZWN0KG9iamVjdCkpO307fS8qKlxuICAgICAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gICAgICAgICAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYyl7dmFyIHJlc3VsdD1tZW1vaXplKGZ1bmMsZnVuY3Rpb24oa2V5KXtpZihjYWNoZS5zaXplPT09TUFYX01FTU9JWkVfU0laRSl7Y2FjaGUuY2xlYXIoKTt9cmV0dXJuIGtleTt9KTt2YXIgY2FjaGU9cmVzdWx0LmNhY2hlO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBNZXJnZXMgdGhlIGZ1bmN0aW9uIG1ldGFkYXRhIG9mIGBzb3VyY2VgIGludG8gYGRhdGFgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBNZXJnaW5nIG1ldGFkYXRhIHJlZHVjZXMgdGhlIG51bWJlciBvZiB3cmFwcGVycyB1c2VkIHRvIGludm9rZSBhIGZ1bmN0aW9uLlxuICAgICAgICAgKiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgbWV0aG9kcyBsaWtlIGBfLmJpbmRgLCBgXy5jdXJyeWAsIGFuZCBgXy5wYXJ0aWFsYFxuICAgICAgICAgKiBtYXkgYmUgYXBwbGllZCByZWdhcmRsZXNzIG9mIGV4ZWN1dGlvbiBvcmRlci4gTWV0aG9kcyBsaWtlIGBfLmFyeWAgYW5kXG4gICAgICAgICAqIGBfLnJlYXJnYCBtb2RpZnkgZnVuY3Rpb24gYXJndW1lbnRzLCBtYWtpbmcgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlXG4gICAgICAgICAqIGV4ZWN1dGVkIGltcG9ydGFudCwgcHJldmVudGluZyB0aGUgbWVyZ2luZyBvZiBtZXRhZGF0YS4gSG93ZXZlciwgd2UgbWFrZVxuICAgICAgICAgKiBhbiBleGNlcHRpb24gZm9yIGEgc2FmZSBjb21iaW5lZCBjYXNlIHdoZXJlIGN1cnJpZWQgZnVuY3Rpb25zIGhhdmUgYF8uYXJ5YFxuICAgICAgICAgKiBhbmQgb3IgYF8ucmVhcmdgIGFwcGxpZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGRhdGEgVGhlIGRlc3RpbmF0aW9uIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIHNvdXJjZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkYXRhYC5cbiAgICAgICAgICovZnVuY3Rpb24gbWVyZ2VEYXRhKGRhdGEsc291cmNlKXt2YXIgYml0bWFzaz1kYXRhWzFdLHNyY0JpdG1hc2s9c291cmNlWzFdLG5ld0JpdG1hc2s9Yml0bWFza3xzcmNCaXRtYXNrLGlzQ29tbW9uPW5ld0JpdG1hc2s8KFdSQVBfQklORF9GTEFHfFdSQVBfQklORF9LRVlfRkxBR3xXUkFQX0FSWV9GTEFHKTt2YXIgaXNDb21ibz1zcmNCaXRtYXNrPT1XUkFQX0FSWV9GTEFHJiZiaXRtYXNrPT1XUkFQX0NVUlJZX0ZMQUd8fHNyY0JpdG1hc2s9PVdSQVBfQVJZX0ZMQUcmJmJpdG1hc2s9PVdSQVBfUkVBUkdfRkxBRyYmZGF0YVs3XS5sZW5ndGg8PXNvdXJjZVs4XXx8c3JjQml0bWFzaz09KFdSQVBfQVJZX0ZMQUd8V1JBUF9SRUFSR19GTEFHKSYmc291cmNlWzddLmxlbmd0aDw9c291cmNlWzhdJiZiaXRtYXNrPT1XUkFQX0NVUlJZX0ZMQUc7Ly8gRXhpdCBlYXJseSBpZiBtZXRhZGF0YSBjYW4ndCBiZSBtZXJnZWQuXG5pZighKGlzQ29tbW9ufHxpc0NvbWJvKSl7cmV0dXJuIGRhdGE7fS8vIFVzZSBzb3VyY2UgYHRoaXNBcmdgIGlmIGF2YWlsYWJsZS5cbmlmKHNyY0JpdG1hc2smV1JBUF9CSU5EX0ZMQUcpe2RhdGFbMl09c291cmNlWzJdOy8vIFNldCB3aGVuIGN1cnJ5aW5nIGEgYm91bmQgZnVuY3Rpb24uXG5uZXdCaXRtYXNrfD1iaXRtYXNrJldSQVBfQklORF9GTEFHPzA6V1JBUF9DVVJSWV9CT1VORF9GTEFHO30vLyBDb21wb3NlIHBhcnRpYWwgYXJndW1lbnRzLlxudmFyIHZhbHVlPXNvdXJjZVszXTtpZih2YWx1ZSl7dmFyIHBhcnRpYWxzPWRhdGFbM107ZGF0YVszXT1wYXJ0aWFscz9jb21wb3NlQXJncyhwYXJ0aWFscyx2YWx1ZSxzb3VyY2VbNF0pOnZhbHVlO2RhdGFbNF09cGFydGlhbHM/cmVwbGFjZUhvbGRlcnMoZGF0YVszXSxQTEFDRUhPTERFUik6c291cmNlWzRdO30vLyBDb21wb3NlIHBhcnRpYWwgcmlnaHQgYXJndW1lbnRzLlxudmFsdWU9c291cmNlWzVdO2lmKHZhbHVlKXtwYXJ0aWFscz1kYXRhWzVdO2RhdGFbNV09cGFydGlhbHM/Y29tcG9zZUFyZ3NSaWdodChwYXJ0aWFscyx2YWx1ZSxzb3VyY2VbNl0pOnZhbHVlO2RhdGFbNl09cGFydGlhbHM/cmVwbGFjZUhvbGRlcnMoZGF0YVs1XSxQTEFDRUhPTERFUik6c291cmNlWzZdO30vLyBVc2Ugc291cmNlIGBhcmdQb3NgIGlmIGF2YWlsYWJsZS5cbnZhbHVlPXNvdXJjZVs3XTtpZih2YWx1ZSl7ZGF0YVs3XT12YWx1ZTt9Ly8gVXNlIHNvdXJjZSBgYXJ5YCBpZiBpdCdzIHNtYWxsZXIuXG5pZihzcmNCaXRtYXNrJldSQVBfQVJZX0ZMQUcpe2RhdGFbOF09ZGF0YVs4XT09bnVsbD9zb3VyY2VbOF06bmF0aXZlTWluKGRhdGFbOF0sc291cmNlWzhdKTt9Ly8gVXNlIHNvdXJjZSBgYXJpdHlgIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG5pZihkYXRhWzldPT1udWxsKXtkYXRhWzldPXNvdXJjZVs5XTt9Ly8gVXNlIHNvdXJjZSBgZnVuY2AgYW5kIG1lcmdlIGJpdG1hc2tzLlxuZGF0YVswXT1zb3VyY2VbMF07ZGF0YVsxXT1uZXdCaXRtYXNrO3JldHVybiBkYXRhO30vKipcbiAgICAgICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gICAgICAgICAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAgICAgICAgICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAgICAgKi9mdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KXt2YXIgcmVzdWx0PVtdO2lmKG9iamVjdCE9bnVsbCl7Zm9yKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpe3Jlc3VsdC5wdXNoKGtleSk7fX1yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICAgICAqL2Z1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKXtyZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7fS8qKlxuICAgICAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAgICAgKi9mdW5jdGlvbiBvdmVyUmVzdChmdW5jLHN0YXJ0LHRyYW5zZm9ybSl7c3RhcnQ9bmF0aXZlTWF4KHN0YXJ0PT09dW5kZWZpbmVkP2Z1bmMubGVuZ3RoLTE6c3RhcnQsMCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGFyZ3M9YXJndW1lbnRzLGluZGV4PS0xLGxlbmd0aD1uYXRpdmVNYXgoYXJncy5sZW5ndGgtc3RhcnQsMCksYXJyYXk9QXJyYXkobGVuZ3RoKTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7YXJyYXlbaW5kZXhdPWFyZ3Nbc3RhcnQraW5kZXhdO31pbmRleD0tMTt2YXIgb3RoZXJBcmdzPUFycmF5KHN0YXJ0KzEpO3doaWxlKCsraW5kZXg8c3RhcnQpe290aGVyQXJnc1tpbmRleF09YXJnc1tpbmRleF07fW90aGVyQXJnc1tzdGFydF09dHJhbnNmb3JtKGFycmF5KTtyZXR1cm4gYXBwbHkoZnVuYyx0aGlzLG90aGVyQXJncyk7fTt9LyoqXG4gICAgICAgICAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCB2YWx1ZSBvZi5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHBhcmVudCB2YWx1ZS5cbiAgICAgICAgICovZnVuY3Rpb24gcGFyZW50KG9iamVjdCxwYXRoKXtyZXR1cm4gcGF0aC5sZW5ndGg8Mj9vYmplY3Q6YmFzZUdldChvYmplY3QsYmFzZVNsaWNlKHBhdGgsMCwtMSkpO30vKipcbiAgICAgICAgICogUmVvcmRlciBgYXJyYXlgIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGluZGV4ZXMgd2hlcmUgdGhlIGVsZW1lbnQgYXRcbiAgICAgICAgICogdGhlIGZpcnN0IGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBmaXJzdCBlbGVtZW50LCB0aGUgZWxlbWVudCBhdFxuICAgICAgICAgKiB0aGUgc2Vjb25kIGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBzZWNvbmQgZWxlbWVudCwgYW5kIHNvIG9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcmVvcmRlci5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJyYXkgaW5kZXhlcy5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIHJlb3JkZXIoYXJyYXksaW5kZXhlcyl7dmFyIGFyckxlbmd0aD1hcnJheS5sZW5ndGgsbGVuZ3RoPW5hdGl2ZU1pbihpbmRleGVzLmxlbmd0aCxhcnJMZW5ndGgpLG9sZEFycmF5PWNvcHlBcnJheShhcnJheSk7d2hpbGUobGVuZ3RoLS0pe3ZhciBpbmRleD1pbmRleGVzW2xlbmd0aF07YXJyYXlbbGVuZ3RoXT1pc0luZGV4KGluZGV4LGFyckxlbmd0aCk/b2xkQXJyYXlbaW5kZXhdOnVuZGVmaW5lZDt9cmV0dXJuIGFycmF5O30vKipcbiAgICAgICAgICogU2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogSWYgdGhpcyBmdW5jdGlvbiBiZWNvbWVzIGhvdCwgaS5lLiBpcyBpbnZva2VkIGEgbG90IGluIGEgc2hvcnRcbiAgICAgICAgICogcGVyaW9kIG9mIHRpbWUsIGl0IHdpbGwgdHJpcCBpdHMgYnJlYWtlciBhbmQgdHJhbnNpdGlvbiB0byBhbiBpZGVudGl0eVxuICAgICAgICAgKiBmdW5jdGlvbiB0byBhdm9pZCBnYXJiYWdlIGNvbGxlY3Rpb24gcGF1c2VzIGluIFY4LiBTZWVcbiAgICAgICAgICogW1Y4IGlzc3VlIDIwNzBdKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTIwNzApXG4gICAgICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAgICAgKiBAcGFyYW0geyp9IGRhdGEgVGhlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAgICAgKi92YXIgc2V0RGF0YT1zaG9ydE91dChiYXNlU2V0RGF0YSk7LyoqXG4gICAgICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BzZXRUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vc2V0VGltZW91dCkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfE9iamVjdH0gUmV0dXJucyB0aGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3QuXG4gICAgICAgICAqL3ZhciBzZXRUaW1lb3V0PWN0eFNldFRpbWVvdXR8fGZ1bmN0aW9uKGZ1bmMsd2FpdCl7cmV0dXJuIHJvb3Quc2V0VGltZW91dChmdW5jLHdhaXQpO307LyoqXG4gICAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICAgICAgICpcbiAgICAgICAqIEBwcml2YXRlXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgICAqL3ZhciBzZXRUb1N0cmluZz1zaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpOy8qKlxuICAgICAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgd3JhcHBlcmAgdG8gbWltaWMgdGhlIHNvdXJjZSBvZiBgcmVmZXJlbmNlYFxuICAgICAgICAgKiB3aXRoIHdyYXBwZXIgZGV0YWlscyBpbiBhIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgc291cmNlIGJvZHkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBwZXIgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVmZXJlbmNlIFRoZSByZWZlcmVuY2UgZnVuY3Rpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgd3JhcHBlcmAuXG4gICAgICAgICAqL2Z1bmN0aW9uIHNldFdyYXBUb1N0cmluZyh3cmFwcGVyLHJlZmVyZW5jZSxiaXRtYXNrKXt2YXIgc291cmNlPXJlZmVyZW5jZSsnJztyZXR1cm4gc2V0VG9TdHJpbmcod3JhcHBlcixpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsdXBkYXRlV3JhcERldGFpbHMoZ2V0V3JhcERldGFpbHMoc291cmNlKSxiaXRtYXNrKSkpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gICAgICAgICAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICAgICAgICAgKiBtaWxsaXNlY29uZHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gICAgICAgICAqL2Z1bmN0aW9uIHNob3J0T3V0KGZ1bmMpe3ZhciBjb3VudD0wLGxhc3RDYWxsZWQ9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgc3RhbXA9bmF0aXZlTm93KCkscmVtYWluaW5nPUhPVF9TUEFOLShzdGFtcC1sYXN0Q2FsbGVkKTtsYXN0Q2FsbGVkPXN0YW1wO2lmKHJlbWFpbmluZz4wKXtpZigrK2NvdW50Pj1IT1RfQ09VTlQpe3JldHVybiBhcmd1bWVudHNbMF07fX1lbHNle2NvdW50PTA7fXJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCxhcmd1bWVudHMpO307fS8qKlxuICAgICAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2h1ZmZsZWAgd2hpY2ggbXV0YXRlcyBhbmQgc2V0cyB0aGUgc2l6ZSBvZiBgYXJyYXlgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2h1ZmZsZS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPWFycmF5Lmxlbmd0aF0gVGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICAgICAqL2Z1bmN0aW9uIHNodWZmbGVTZWxmKGFycmF5LHNpemUpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXkubGVuZ3RoLGxhc3RJbmRleD1sZW5ndGgtMTtzaXplPXNpemU9PT11bmRlZmluZWQ/bGVuZ3RoOnNpemU7d2hpbGUoKytpbmRleDxzaXplKXt2YXIgcmFuZD1iYXNlUmFuZG9tKGluZGV4LGxhc3RJbmRleCksdmFsdWU9YXJyYXlbcmFuZF07YXJyYXlbcmFuZF09YXJyYXlbaW5kZXhdO2FycmF5W2luZGV4XT12YWx1ZTt9YXJyYXkubGVuZ3RoPXNpemU7cmV0dXJuIGFycmF5O30vKipcbiAgICAgICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAgICAgKi92YXIgc3RyaW5nVG9QYXRoPW1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKXt2YXIgcmVzdWx0PVtdO2lmKHN0cmluZy5jaGFyQ29kZUF0KDApPT09NDYvKiAuICovKXtyZXN1bHQucHVzaCgnJyk7fXN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsZnVuY3Rpb24obWF0Y2gsbnVtYmVyLHF1b3RlLHN1YlN0cmluZyl7cmVzdWx0LnB1c2gocXVvdGU/c3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCckMScpOm51bWJlcnx8bWF0Y2gpO30pO3JldHVybiByZXN1bHQ7fSk7LyoqXG4gICAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gICAgICAgKlxuICAgICAgICogQHByaXZhdGVcbiAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICAgICAgICovZnVuY3Rpb24gdG9LZXkodmFsdWUpe2lmKHR5cGVvZiB2YWx1ZT09PSdzdHJpbmcnfHxpc1N5bWJvbCh2YWx1ZSkpe3JldHVybiB2YWx1ZTt9dmFyIHJlc3VsdD12YWx1ZSsnJztyZXR1cm4gcmVzdWx0PT0nMCcmJjEvdmFsdWU9PS1JTkZJTklUWT8nLTAnOnJlc3VsdDt9LyoqXG4gICAgICAgICAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICAgICAgICAgKi9mdW5jdGlvbiB0b1NvdXJjZShmdW5jKXtpZihmdW5jIT1udWxsKXt0cnl7cmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO31jYXRjaChlKXt9dHJ5e3JldHVybiBmdW5jKycnO31jYXRjaChlKXt9fXJldHVybicnO30vKipcbiAgICAgICAgICogVXBkYXRlcyB3cmFwcGVyIGBkZXRhaWxzYCBiYXNlZCBvbiBgYml0bWFza2AgZmxhZ3MuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBtb2RpZnkuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgZGV0YWlsc2AuXG4gICAgICAgICAqL2Z1bmN0aW9uIHVwZGF0ZVdyYXBEZXRhaWxzKGRldGFpbHMsYml0bWFzayl7YXJyYXlFYWNoKHdyYXBGbGFncyxmdW5jdGlvbihwYWlyKXt2YXIgdmFsdWU9J18uJytwYWlyWzBdO2lmKGJpdG1hc2smcGFpclsxXSYmIWFycmF5SW5jbHVkZXMoZGV0YWlscyx2YWx1ZSkpe2RldGFpbHMucHVzaCh2YWx1ZSk7fX0pO3JldHVybiBkZXRhaWxzLnNvcnQoKTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgd3JhcHBlcmAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSB3cmFwcGVyIFRoZSB3cmFwcGVyIHRvIGNsb25lLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgd3JhcHBlci5cbiAgICAgICAgICovZnVuY3Rpb24gd3JhcHBlckNsb25lKHdyYXBwZXIpe2lmKHdyYXBwZXIgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcil7cmV0dXJuIHdyYXBwZXIuY2xvbmUoKTt9dmFyIHJlc3VsdD1uZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVyLl9fd3JhcHBlZF9fLHdyYXBwZXIuX19jaGFpbl9fKTtyZXN1bHQuX19hY3Rpb25zX189Y29weUFycmF5KHdyYXBwZXIuX19hY3Rpb25zX18pO3Jlc3VsdC5fX2luZGV4X189d3JhcHBlci5fX2luZGV4X187cmVzdWx0Ll9fdmFsdWVzX189d3JhcHBlci5fX3ZhbHVlc19fO3JldHVybiByZXN1bHQ7fS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgc3BsaXQgaW50byBncm91cHMgdGhlIGxlbmd0aCBvZiBgc2l6ZWAuXG4gICAgICAgICAqIElmIGBhcnJheWAgY2FuJ3QgYmUgc3BsaXQgZXZlbmx5LCB0aGUgZmluYWwgY2h1bmsgd2lsbCBiZSB0aGUgcmVtYWluaW5nXG4gICAgICAgICAqIGVsZW1lbnRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHByb2Nlc3MuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT0xXSBUaGUgbGVuZ3RoIG9mIGVhY2ggY2h1bmtcbiAgICAgICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY2h1bmtzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmNodW5rKFsnYScsICdiJywgJ2MnLCAnZCddLCAyKTtcbiAgICAgICAgICogLy8gPT4gW1snYScsICdiJ10sIFsnYycsICdkJ11dXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDMpO1xuICAgICAgICAgKiAvLyA9PiBbWydhJywgJ2InLCAnYyddLCBbJ2QnXV1cbiAgICAgICAgICovZnVuY3Rpb24gY2h1bmsoYXJyYXksc2l6ZSxndWFyZCl7aWYoZ3VhcmQ/aXNJdGVyYXRlZUNhbGwoYXJyYXksc2l6ZSxndWFyZCk6c2l6ZT09PXVuZGVmaW5lZCl7c2l6ZT0xO31lbHNle3NpemU9bmF0aXZlTWF4KHRvSW50ZWdlcihzaXplKSwwKTt9dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtpZighbGVuZ3RofHxzaXplPDEpe3JldHVybltdO312YXIgaW5kZXg9MCxyZXNJbmRleD0wLHJlc3VsdD1BcnJheShuYXRpdmVDZWlsKGxlbmd0aC9zaXplKSk7d2hpbGUoaW5kZXg8bGVuZ3RoKXtyZXN1bHRbcmVzSW5kZXgrK109YmFzZVNsaWNlKGFycmF5LGluZGV4LGluZGV4Kz1zaXplKTt9cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCBhbGwgZmFsc2V5IHZhbHVlcyByZW1vdmVkLiBUaGUgdmFsdWVzIGBmYWxzZWAsIGBudWxsYCxcbiAgICAgICAgICogYDBgLCBgXCJcImAsIGB1bmRlZmluZWRgLCBhbmQgYE5hTmAgYXJlIGZhbHNleS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uY29tcGFjdChbMCwgMSwgZmFsc2UsIDIsICcnLCAzXSk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAgICAgKi9mdW5jdGlvbiBjb21wYWN0KGFycmF5KXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoLHJlc0luZGV4PTAscmVzdWx0PVtdO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgdmFsdWU9YXJyYXlbaW5kZXhdO2lmKHZhbHVlKXtyZXN1bHRbcmVzSW5kZXgrK109dmFsdWU7fX1yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIG5ldyBhcnJheSBjb25jYXRlbmF0aW5nIGBhcnJheWAgd2l0aCBhbnkgYWRkaXRpb25hbCBhcnJheXNcbiAgICAgICAgICogYW5kL29yIHZhbHVlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb25jYXRlbmF0ZS5cbiAgICAgICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNvbmNhdGVuYXRlLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBjb25jYXRlbmF0ZWQgYXJyYXkuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBhcnJheSA9IFsxXTtcbiAgICAgICAgICogdmFyIG90aGVyID0gXy5jb25jYXQoYXJyYXksIDIsIFszXSwgW1s0XV0pO1xuICAgICAgICAgKlxuICAgICAgICAgKiBjb25zb2xlLmxvZyhvdGhlcik7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCAzLCBbNF1dXG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgICAgICogLy8gPT4gWzFdXG4gICAgICAgICAqL2Z1bmN0aW9uIGNvbmNhdCgpe3ZhciBsZW5ndGg9YXJndW1lbnRzLmxlbmd0aDtpZighbGVuZ3RoKXtyZXR1cm5bXTt9dmFyIGFyZ3M9QXJyYXkobGVuZ3RoLTEpLGFycmF5PWFyZ3VtZW50c1swXSxpbmRleD1sZW5ndGg7d2hpbGUoaW5kZXgtLSl7YXJnc1tpbmRleC0xXT1hcmd1bWVudHNbaW5kZXhdO31yZXR1cm4gYXJyYXlQdXNoKGlzQXJyYXkoYXJyYXkpP2NvcHlBcnJheShhcnJheSk6W2FycmF5XSxiYXNlRmxhdHRlbihhcmdzLDEpKTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgYGFycmF5YCB2YWx1ZXMgbm90IGluY2x1ZGVkIGluIHRoZSBvdGhlciBnaXZlbiBhcnJheXNcbiAgICAgICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICAgICAqIEBzZWUgXy53aXRob3V0LCBfLnhvclxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmRpZmZlcmVuY2UoWzIsIDFdLCBbMiwgM10pO1xuICAgICAgICAgKiAvLyA9PiBbMV1cbiAgICAgICAgICovdmFyIGRpZmZlcmVuY2U9YmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksdmFsdWVzKXtyZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpP2Jhc2VEaWZmZXJlbmNlKGFycmF5LGJhc2VGbGF0dGVuKHZhbHVlcywxLGlzQXJyYXlMaWtlT2JqZWN0LHRydWUpKTpbXTt9KTsvKipcbiAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGlmZmVyZW5jZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoXG4gICAgICAgKiBpcyBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICAgKiAodmFsdWUpLlxuICAgICAgICpcbiAgICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbEJ5YCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLmRpZmZlcmVuY2VCeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgICAqIC8vID0+IFsxLjJdXG4gICAgICAgKlxuICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgKiBfLmRpZmZlcmVuY2VCeShbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sIFt7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAgICovdmFyIGRpZmZlcmVuY2VCeT1iYXNlUmVzdChmdW5jdGlvbihhcnJheSx2YWx1ZXMpe3ZhciBpdGVyYXRlZT1sYXN0KHZhbHVlcyk7aWYoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKXtpdGVyYXRlZT11bmRlZmluZWQ7fXJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSk/YmFzZURpZmZlcmVuY2UoYXJyYXksYmFzZUZsYXR0ZW4odmFsdWVzLDEsaXNBcnJheUxpa2VPYmplY3QsdHJ1ZSksZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMikpOltdO30pOy8qKlxuICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICAgICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheWAgdG8gYHZhbHVlc2AuIFRoZSBvcmRlciBhbmRcbiAgICAgICAqIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBjb21wYXJhdG9yXG4gICAgICAgKiBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgICAqXG4gICAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxXaXRoYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgICAqXG4gICAgICAgKiBfLmRpZmZlcmVuY2VXaXRoKG9iamVjdHMsIFt7ICd4JzogMSwgJ3knOiAyIH1dLCBfLmlzRXF1YWwpO1xuICAgICAgICogLy8gPT4gW3sgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgICAqL3ZhciBkaWZmZXJlbmNlV2l0aD1iYXNlUmVzdChmdW5jdGlvbihhcnJheSx2YWx1ZXMpe3ZhciBjb21wYXJhdG9yPWxhc3QodmFsdWVzKTtpZihpc0FycmF5TGlrZU9iamVjdChjb21wYXJhdG9yKSl7Y29tcGFyYXRvcj11bmRlZmluZWQ7fXJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSk/YmFzZURpZmZlcmVuY2UoYXJyYXksYmFzZUZsYXR0ZW4odmFsdWVzLDEsaXNBcnJheUxpa2VPYmplY3QsdHJ1ZSksdW5kZWZpbmVkLGNvbXBhcmF0b3IpOltdO30pOy8qKlxuICAgICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy5kcm9wKFsxLCAyLCAzXSk7XG4gICAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgICAqXG4gICAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAyKTtcbiAgICAgICAqIC8vID0+IFszXVxuICAgICAgICpcbiAgICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDUpO1xuICAgICAgICogLy8gPT4gW11cbiAgICAgICAqXG4gICAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAwKTtcbiAgICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAgICovZnVuY3Rpb24gZHJvcChhcnJheSxuLGd1YXJkKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGgpe3JldHVybltdO31uPWd1YXJkfHxuPT09dW5kZWZpbmVkPzE6dG9JbnRlZ2VyKG4pO3JldHVybiBiYXNlU2xpY2UoYXJyYXksbjwwPzA6bixsZW5ndGgpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBlbmQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRyb3AuXG4gICAgICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdKTtcbiAgICAgICAgICogLy8gPT4gWzEsIDJdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMik7XG4gICAgICAgICAqIC8vID0+IFsxXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDUpO1xuICAgICAgICAgKiAvLyA9PiBbXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgICAgICovZnVuY3Rpb24gZHJvcFJpZ2h0KGFycmF5LG4sZ3VhcmQpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7aWYoIWxlbmd0aCl7cmV0dXJuW107fW49Z3VhcmR8fG49PT11bmRlZmluZWQ/MTp0b0ludGVnZXIobik7bj1sZW5ndGgtbjtyZXR1cm4gYmFzZVNsaWNlKGFycmF5LDAsbjwwPzA6bik7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBlbmQuXG4gICAgICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICAgICAqIF07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgICAgICovZnVuY3Rpb24gZHJvcFJpZ2h0V2hpbGUoYXJyYXkscHJlZGljYXRlKXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aD9iYXNlV2hpbGUoYXJyYXksZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpLHRydWUsdHJ1ZSk6W107fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICAgICAqIF07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5kcm9wV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgICAgICovZnVuY3Rpb24gZHJvcFdoaWxlKGFycmF5LHByZWRpY2F0ZSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZVdoaWxlKGFycmF5LGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwzKSx0cnVlKTpbXTt9LyoqXG4gICAgICAgICAqIEZpbGxzIGVsZW1lbnRzIG9mIGBhcnJheWAgd2l0aCBgdmFsdWVgIGZyb20gYHN0YXJ0YCB1cCB0bywgYnV0IG5vdFxuICAgICAgICAgKiBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZpbGwuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZpbGwoYXJyYXksICdhJyk7XG4gICAgICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgICAgICogLy8gPT4gWydhJywgJ2EnLCAnYSddXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZmlsbChBcnJheSgzKSwgMik7XG4gICAgICAgICAqIC8vID0+IFsyLCAyLCAyXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZpbGwoWzQsIDYsIDgsIDEwXSwgJyonLCAxLCAzKTtcbiAgICAgICAgICogLy8gPT4gWzQsICcqJywgJyonLCAxMF1cbiAgICAgICAgICovZnVuY3Rpb24gZmlsbChhcnJheSx2YWx1ZSxzdGFydCxlbmQpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7aWYoIWxlbmd0aCl7cmV0dXJuW107fWlmKHN0YXJ0JiZ0eXBlb2Ygc3RhcnQhPT0nbnVtYmVyJyYmaXNJdGVyYXRlZUNhbGwoYXJyYXksdmFsdWUsc3RhcnQpKXtzdGFydD0wO2VuZD1sZW5ndGg7fXJldHVybiBiYXNlRmlsbChhcnJheSx2YWx1ZSxzdGFydCxlbmQpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAgICAgICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDEuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICAgICAqIF07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ2Jhcm5leSc7IH0pO1xuICAgICAgICAgKiAvLyA9PiAwXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICAgICAqIC8vID0+IDFcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAgICAgKiAvLyA9PiAwXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAgICAgKiAvLyA9PiAyXG4gICAgICAgICAqL2Z1bmN0aW9uIGZpbmRJbmRleChhcnJheSxwcmVkaWNhdGUsZnJvbUluZGV4KXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGgpe3JldHVybi0xO312YXIgaW5kZXg9ZnJvbUluZGV4PT1udWxsPzA6dG9JbnRlZ2VyKGZyb21JbmRleCk7aWYoaW5kZXg8MCl7aW5kZXg9bmF0aXZlTWF4KGxlbmd0aCtpbmRleCwwKTt9cmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpLGluZGV4KTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEluZGV4YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzXG4gICAgICAgICAqIG9mIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDIuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAgICAgKiBdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAncGViYmxlcyc7IH0pO1xuICAgICAgICAgKiAvLyA9PiAyXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgICAgICogLy8gPT4gMFxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAgICAgKiAvLyA9PiAyXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAgICogLy8gPT4gMFxuICAgICAgICAgKi9mdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5LHByZWRpY2F0ZSxmcm9tSW5kZXgpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7aWYoIWxlbmd0aCl7cmV0dXJuLTE7fXZhciBpbmRleD1sZW5ndGgtMTtpZihmcm9tSW5kZXghPT11bmRlZmluZWQpe2luZGV4PXRvSW50ZWdlcihmcm9tSW5kZXgpO2luZGV4PWZyb21JbmRleDwwP25hdGl2ZU1heChsZW5ndGgraW5kZXgsMCk6bmF0aXZlTWluKGluZGV4LGxlbmd0aC0xKTt9cmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpLGluZGV4LHRydWUpO30vKipcbiAgICAgICAgICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAgICAgICAgICovZnVuY3Rpb24gZmxhdHRlbihhcnJheSl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtyZXR1cm4gbGVuZ3RoP2Jhc2VGbGF0dGVuKGFycmF5LDEpOltdO30vKipcbiAgICAgICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbnMgYGFycmF5YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZmxhdHRlbkRlZXAoWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAgICAgICAgICogLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gICAgICAgICAqL2Z1bmN0aW9uIGZsYXR0ZW5EZWVwKGFycmF5KXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3JldHVybiBsZW5ndGg/YmFzZUZsYXR0ZW4oYXJyYXksSU5GSU5JVFkpOltdO30vKipcbiAgICAgICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbiBgYXJyYXlgIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuNC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGFycmF5ID0gWzEsIFsyLCBbMywgWzRdXSwgNV1dO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMSk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAgICAgICAgICpcbiAgICAgICAgICogXy5mbGF0dGVuRGVwdGgoYXJyYXksIDIpO1xuICAgICAgICAgKiAvLyA9PiBbMSwgMiwgMywgWzRdLCA1XVxuICAgICAgICAgKi9mdW5jdGlvbiBmbGF0dGVuRGVwdGgoYXJyYXksZGVwdGgpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7aWYoIWxlbmd0aCl7cmV0dXJuW107fWRlcHRoPWRlcHRoPT09dW5kZWZpbmVkPzE6dG9JbnRlZ2VyKGRlcHRoKTtyZXR1cm4gYmFzZUZsYXR0ZW4oYXJyYXksZGVwdGgpO30vKipcbiAgICAgICAgICogVGhlIGludmVyc2Ugb2YgYF8udG9QYWlyc2A7IHRoaXMgbWV0aG9kIHJldHVybnMgYW4gb2JqZWN0IGNvbXBvc2VkXG4gICAgICAgICAqIGZyb20ga2V5LXZhbHVlIGBwYWlyc2AuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBwYWlycyBUaGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZyb21QYWlycyhbWydhJywgMV0sIFsnYicsIDJdXSk7XG4gICAgICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAgICAgKi9mdW5jdGlvbiBmcm9tUGFpcnMocGFpcnMpe3ZhciBpbmRleD0tMSxsZW5ndGg9cGFpcnM9PW51bGw/MDpwYWlycy5sZW5ndGgscmVzdWx0PXt9O3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgcGFpcj1wYWlyc1tpbmRleF07cmVzdWx0W3BhaXJbMF1dPXBhaXJbMV07fXJldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBhbGlhcyBmaXJzdFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmhlYWQoWzEsIDIsIDNdKTtcbiAgICAgICAgICogLy8gPT4gMVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmhlYWQoW10pO1xuICAgICAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgICAgICovZnVuY3Rpb24gaGVhZChhcnJheSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YXJyYXlbMF06dW5kZWZpbmVkO30vKipcbiAgICAgICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYHZhbHVlYCBpcyBmb3VuZCBpbiBgYXJyYXlgXG4gICAgICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhcyB0aGVcbiAgICAgICAgICogb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgYXJyYXlgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pbmRleE9mKFsxLCAyLCAxLCAyXSwgMik7XG4gICAgICAgICAqIC8vID0+IDFcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gU2VhcmNoIGZyb20gdGhlIGBmcm9tSW5kZXhgLlxuICAgICAgICAgKiBfLmluZGV4T2YoWzEsIDIsIDEsIDJdLCAyLCAyKTtcbiAgICAgICAgICogLy8gPT4gM1xuICAgICAgICAgKi9mdW5jdGlvbiBpbmRleE9mKGFycmF5LHZhbHVlLGZyb21JbmRleCl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtpZighbGVuZ3RoKXtyZXR1cm4tMTt9dmFyIGluZGV4PWZyb21JbmRleD09bnVsbD8wOnRvSW50ZWdlcihmcm9tSW5kZXgpO2lmKGluZGV4PDApe2luZGV4PW5hdGl2ZU1heChsZW5ndGgraW5kZXgsMCk7fXJldHVybiBiYXNlSW5kZXhPZihhcnJheSx2YWx1ZSxpbmRleCk7fS8qKlxuICAgICAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaW5pdGlhbChbMSwgMiwgM10pO1xuICAgICAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgICAgICovZnVuY3Rpb24gaW5pdGlhbChhcnJheSl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtyZXR1cm4gbGVuZ3RoP2Jhc2VTbGljZShhcnJheSwwLC0xKTpbXTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiBhbGwgZ2l2ZW4gYXJyYXlzXG4gICAgICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmludGVyc2VjdGlvbihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICAgICAqIC8vID0+IFsyXVxuICAgICAgICAgKi92YXIgaW50ZXJzZWN0aW9uPWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cyl7dmFyIG1hcHBlZD1hcnJheU1hcChhcnJheXMsY2FzdEFycmF5TGlrZU9iamVjdCk7cmV0dXJuIG1hcHBlZC5sZW5ndGgmJm1hcHBlZFswXT09PWFycmF5c1swXT9iYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCk6W107fSk7LyoqXG4gICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgICAqICh2YWx1ZSkuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAgICogLy8gPT4gWzIuMV1cbiAgICAgICAqXG4gICAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAqIF8uaW50ZXJzZWN0aW9uQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICAgKiAvLyA9PiBbeyAneCc6IDEgfV1cbiAgICAgICAqL3ZhciBpbnRlcnNlY3Rpb25CeT1iYXNlUmVzdChmdW5jdGlvbihhcnJheXMpe3ZhciBpdGVyYXRlZT1sYXN0KGFycmF5cyksbWFwcGVkPWFycmF5TWFwKGFycmF5cyxjYXN0QXJyYXlMaWtlT2JqZWN0KTtpZihpdGVyYXRlZT09PWxhc3QobWFwcGVkKSl7aXRlcmF0ZWU9dW5kZWZpbmVkO31lbHNle21hcHBlZC5wb3AoKTt9cmV0dXJuIG1hcHBlZC5sZW5ndGgmJm1hcHBlZFswXT09PWFycmF5c1swXT9iYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCxnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSk6W107fSk7LyoqXG4gICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzXG4gICAgICAgKiBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgICAqXG4gICAgICAgKiBfLmludGVyc2VjdGlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfV1cbiAgICAgICAqL3ZhciBpbnRlcnNlY3Rpb25XaXRoPWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cyl7dmFyIGNvbXBhcmF0b3I9bGFzdChhcnJheXMpLG1hcHBlZD1hcnJheU1hcChhcnJheXMsY2FzdEFycmF5TGlrZU9iamVjdCk7Y29tcGFyYXRvcj10eXBlb2YgY29tcGFyYXRvcj09PSdmdW5jdGlvbic/Y29tcGFyYXRvcjp1bmRlZmluZWQ7aWYoY29tcGFyYXRvcil7bWFwcGVkLnBvcCgpO31yZXR1cm4gbWFwcGVkLmxlbmd0aCYmbWFwcGVkWzBdPT09YXJyYXlzWzBdP2Jhc2VJbnRlcnNlY3Rpb24obWFwcGVkLHVuZGVmaW5lZCxjb21wYXJhdG9yKTpbXTt9KTsvKipcbiAgICAgICAqIENvbnZlcnRzIGFsbCBlbGVtZW50cyBpbiBgYXJyYXlgIGludG8gYSBzdHJpbmcgc2VwYXJhdGVkIGJ5IGBzZXBhcmF0b3JgLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbnZlcnQuXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj0nLCddIFRoZSBlbGVtZW50IHNlcGFyYXRvci5cbiAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGpvaW5lZCBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8uam9pbihbJ2EnLCAnYicsICdjJ10sICd+Jyk7XG4gICAgICAgKiAvLyA9PiAnYX5ifmMnXG4gICAgICAgKi9mdW5jdGlvbiBqb2luKGFycmF5LHNlcGFyYXRvcil7cmV0dXJuIGFycmF5PT1udWxsPycnOm5hdGl2ZUpvaW4uY2FsbChhcnJheSxzZXBhcmF0b3IpO30vKipcbiAgICAgICAgICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5sYXN0KFsxLCAyLCAzXSk7XG4gICAgICAgICAqIC8vID0+IDNcbiAgICAgICAgICovZnVuY3Rpb24gbGFzdChhcnJheSl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtyZXR1cm4gbGVuZ3RoP2FycmF5W2xlbmd0aC0xXTp1bmRlZmluZWQ7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgICAgICogYGFycmF5YCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9YXJyYXkubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAgICAgKiAvLyA9PiAzXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAgICAgKiAvLyA9PiAxXG4gICAgICAgICAqL2Z1bmN0aW9uIGxhc3RJbmRleE9mKGFycmF5LHZhbHVlLGZyb21JbmRleCl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtpZighbGVuZ3RoKXtyZXR1cm4tMTt9dmFyIGluZGV4PWxlbmd0aDtpZihmcm9tSW5kZXghPT11bmRlZmluZWQpe2luZGV4PXRvSW50ZWdlcihmcm9tSW5kZXgpO2luZGV4PWluZGV4PDA/bmF0aXZlTWF4KGxlbmd0aCtpbmRleCwwKTpuYXRpdmVNaW4oaW5kZXgsbGVuZ3RoLTEpO31yZXR1cm4gdmFsdWU9PT12YWx1ZT9zdHJpY3RMYXN0SW5kZXhPZihhcnJheSx2YWx1ZSxpbmRleCk6YmFzZUZpbmRJbmRleChhcnJheSxiYXNlSXNOYU4saW5kZXgsdHJ1ZSk7fS8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBlbGVtZW50IGF0IGluZGV4IGBuYCBvZiBgYXJyYXlgLiBJZiBgbmAgaXMgbmVnYXRpdmUsIHRoZSBudGhcbiAgICAgICAgICogZWxlbWVudCBmcm9tIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMTEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG50aCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLm50aChhcnJheSwgMSk7XG4gICAgICAgICAqIC8vID0+ICdiJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLm50aChhcnJheSwgLTIpO1xuICAgICAgICAgKiAvLyA9PiAnYyc7XG4gICAgICAgICAqL2Z1bmN0aW9uIG50aChhcnJheSxuKXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aD9iYXNlTnRoKGFycmF5LHRvSW50ZWdlcihuKSk6dW5kZWZpbmVkO30vKipcbiAgICAgICAgICogUmVtb3ZlcyBhbGwgZ2l2ZW4gdmFsdWVzIGZyb20gYGFycmF5YCB1c2luZ1xuICAgICAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ud2l0aG91dGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnJlbW92ZWBcbiAgICAgICAgICogdG8gcmVtb3ZlIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgcHJlZGljYXRlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5wdWxsKGFycmF5LCAnYScsICdjJyk7XG4gICAgICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgICAgICogLy8gPT4gWydiJywgJ2InXVxuICAgICAgICAgKi92YXIgcHVsbD1iYXNlUmVzdChwdWxsQWxsKTsvKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5wdWxsQWxsKGFycmF5LCBbJ2EnLCAnYyddKTtcbiAgICAgICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAgICAgKiAvLyA9PiBbJ2InLCAnYiddXG4gICAgICAgICAqL2Z1bmN0aW9uIHB1bGxBbGwoYXJyYXksdmFsdWVzKXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aCYmdmFsdWVzJiZ2YWx1ZXMubGVuZ3RoP2Jhc2VQdWxsQWxsKGFycmF5LHZhbHVlcyk6YXJyYXk7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxBbGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlQnlgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBhcnJheSA9IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMyB9LCB7ICd4JzogMSB9XTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5wdWxsQWxsQnkoYXJyYXksIFt7ICd4JzogMSB9LCB7ICd4JzogMyB9XSwgJ3gnKTtcbiAgICAgICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgICAgICovZnVuY3Rpb24gcHVsbEFsbEJ5KGFycmF5LHZhbHVlcyxpdGVyYXRlZSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGgmJnZhbHVlcyYmdmFsdWVzLmxlbmd0aD9iYXNlUHVsbEFsbChhcnJheSx2YWx1ZXMsZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMikpOmFycmF5O30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgICAgICogaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZVdpdGhgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuNi4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDMsICd5JzogNCB9LCB7ICd4JzogNSwgJ3knOiA2IH1dO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnB1bGxBbGxXaXRoKGFycmF5LCBbeyAneCc6IDMsICd5JzogNCB9XSwgXy5pc0VxdWFsKTtcbiAgICAgICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogNSwgJ3knOiA2IH1dXG4gICAgICAgICAqL2Z1bmN0aW9uIHB1bGxBbGxXaXRoKGFycmF5LHZhbHVlcyxjb21wYXJhdG9yKXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aCYmdmFsdWVzJiZ2YWx1ZXMubGVuZ3RoP2Jhc2VQdWxsQWxsKGFycmF5LHZhbHVlcyx1bmRlZmluZWQsY29tcGFyYXRvcik6YXJyYXk7fS8qKlxuICAgICAgICAgKiBSZW1vdmVzIGVsZW1lbnRzIGZyb20gYGFycmF5YCBjb3JyZXNwb25kaW5nIHRvIGBpbmRleGVzYCBhbmQgcmV0dXJucyBhblxuICAgICAgICAgKiBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmF0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gW2luZGV4ZXNdIFRoZSBpbmRleGVzIG9mIGVsZW1lbnRzIHRvIHJlbW92ZS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgICAgICAqIHZhciBwdWxsZWQgPSBfLnB1bGxBdChhcnJheSwgWzEsIDNdKTtcbiAgICAgICAgICpcbiAgICAgICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAgICAgKiAvLyA9PiBbJ2EnLCAnYyddXG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnNvbGUubG9nKHB1bGxlZCk7XG4gICAgICAgICAqIC8vID0+IFsnYicsICdkJ11cbiAgICAgICAgICovdmFyIHB1bGxBdD1mbGF0UmVzdChmdW5jdGlvbihhcnJheSxpbmRleGVzKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoLHJlc3VsdD1iYXNlQXQoYXJyYXksaW5kZXhlcyk7YmFzZVB1bGxBdChhcnJheSxhcnJheU1hcChpbmRleGVzLGZ1bmN0aW9uKGluZGV4KXtyZXR1cm4gaXNJbmRleChpbmRleCxsZW5ndGgpPytpbmRleDppbmRleDt9KS5zb3J0KGNvbXBhcmVBc2NlbmRpbmcpKTtyZXR1cm4gcmVzdWx0O30pOy8qKlxuICAgICAgICogUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSBgYXJyYXlgIHRoYXQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yXG4gICAgICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgcmVtb3ZlZCBlbGVtZW50cy4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkXG4gICAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAgICpcbiAgICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZmlsdGVyYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucHVsbGBcbiAgICAgICAqIHRvIHB1bGwgZWxlbWVudHMgZnJvbSBhbiBhcnJheSBieSB2YWx1ZS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDIuMC4wXG4gICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNF07XG4gICAgICAgKiB2YXIgZXZlbnMgPSBfLnJlbW92ZShhcnJheSwgZnVuY3Rpb24obikge1xuICAgICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgICAqIH0pO1xuICAgICAgICpcbiAgICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAgICpcbiAgICAgICAqIGNvbnNvbGUubG9nKGV2ZW5zKTtcbiAgICAgICAqIC8vID0+IFsyLCA0XVxuICAgICAgICovZnVuY3Rpb24gcmVtb3ZlKGFycmF5LHByZWRpY2F0ZSl7dmFyIHJlc3VsdD1bXTtpZighKGFycmF5JiZhcnJheS5sZW5ndGgpKXtyZXR1cm4gcmVzdWx0O312YXIgaW5kZXg9LTEsaW5kZXhlcz1bXSxsZW5ndGg9YXJyYXkubGVuZ3RoO3ByZWRpY2F0ZT1nZXRJdGVyYXRlZShwcmVkaWNhdGUsMyk7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF07aWYocHJlZGljYXRlKHZhbHVlLGluZGV4LGFycmF5KSl7cmVzdWx0LnB1c2godmFsdWUpO2luZGV4ZXMucHVzaChpbmRleCk7fX1iYXNlUHVsbEF0KGFycmF5LGluZGV4ZXMpO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBSZXZlcnNlcyBgYXJyYXlgIHNvIHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgYmVjb21lcyB0aGUgbGFzdCwgdGhlIHNlY29uZFxuICAgICAgICAgKiBlbGVtZW50IGJlY29tZXMgdGhlIHNlY29uZCB0byBsYXN0LCBhbmQgc28gb24uXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAgYW5kIGlzIGJhc2VkIG9uXG4gICAgICAgICAqIFtgQXJyYXkjcmV2ZXJzZWBdKGh0dHBzOi8vbWRuLmlvL0FycmF5L3JldmVyc2UpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5yZXZlcnNlKGFycmF5KTtcbiAgICAgICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICAgICAqL2Z1bmN0aW9uIHJldmVyc2UoYXJyYXkpe3JldHVybiBhcnJheT09bnVsbD9hcnJheTpuYXRpdmVSZXZlcnNlLmNhbGwoYXJyYXkpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZnJvbSBgc3RhcnRgIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgYGVuZGAuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGluc3RlYWQgb2ZcbiAgICAgICAgICogW2BBcnJheSNzbGljZWBdKGh0dHBzOi8vbWRuLmlvL0FycmF5L3NsaWNlKSB0byBlbnN1cmUgZGVuc2UgYXJyYXlzIGFyZVxuICAgICAgICAgKiByZXR1cm5lZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAgICAgKi9mdW5jdGlvbiBzbGljZShhcnJheSxzdGFydCxlbmQpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7aWYoIWxlbmd0aCl7cmV0dXJuW107fWlmKGVuZCYmdHlwZW9mIGVuZCE9PSdudW1iZXInJiZpc0l0ZXJhdGVlQ2FsbChhcnJheSxzdGFydCxlbmQpKXtzdGFydD0wO2VuZD1sZW5ndGg7fWVsc2V7c3RhcnQ9c3RhcnQ9PW51bGw/MDp0b0ludGVnZXIoc3RhcnQpO2VuZD1lbmQ9PT11bmRlZmluZWQ/bGVuZ3RoOnRvSW50ZWdlcihlbmQpO31yZXR1cm4gYmFzZVNsaWNlKGFycmF5LHN0YXJ0LGVuZCk7fS8qKlxuICAgICAgICAgKiBVc2VzIGEgYmluYXJ5IHNlYXJjaCB0byBkZXRlcm1pbmUgdGhlIGxvd2VzdCBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnNvcnRlZEluZGV4KFszMCwgNTBdLCA0MCk7XG4gICAgICAgICAqIC8vID0+IDFcbiAgICAgICAgICovZnVuY3Rpb24gc29ydGVkSW5kZXgoYXJyYXksdmFsdWUpe3JldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksdmFsdWUpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRJbmRleGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgICogIGludG8gYGFycmF5YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDQgfSwgeyAneCc6IDUgfV07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCBmdW5jdGlvbihvKSB7IHJldHVybiBvLng7IH0pO1xuICAgICAgICAgKiAvLyA9PiAwXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLnNvcnRlZEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgJ3gnKTtcbiAgICAgICAgICogLy8gPT4gMFxuICAgICAgICAgKi9mdW5jdGlvbiBzb3J0ZWRJbmRleEJ5KGFycmF5LHZhbHVlLGl0ZXJhdGVlKXtyZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksdmFsdWUsZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMikpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBwZXJmb3JtcyBhIGJpbmFyeVxuICAgICAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnNvcnRlZEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgICAgICogLy8gPT4gMVxuICAgICAgICAgKi9mdW5jdGlvbiBzb3J0ZWRJbmRleE9mKGFycmF5LHZhbHVlKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKGxlbmd0aCl7dmFyIGluZGV4PWJhc2VTb3J0ZWRJbmRleChhcnJheSx2YWx1ZSk7aWYoaW5kZXg8bGVuZ3RoJiZlcShhcnJheVtpbmRleF0sdmFsdWUpKXtyZXR1cm4gaW5kZXg7fX1yZXR1cm4tMTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGhpZ2hlc3RcbiAgICAgICAgICogaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBgYXJyYXlgIGluIG9yZGVyIHRvXG4gICAgICAgICAqIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgICogIGludG8gYGFycmF5YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5zb3J0ZWRMYXN0SW5kZXgoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgICAgICogLy8gPT4gNFxuICAgICAgICAgKi9mdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXgoYXJyYXksdmFsdWUpe3JldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksdmFsdWUsdHJ1ZSk7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZExhc3RJbmRleGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgICogIGludG8gYGFycmF5YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDQgfSwgeyAneCc6IDUgfV07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uc29ydGVkTGFzdEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgZnVuY3Rpb24obykgeyByZXR1cm4gby54OyB9KTtcbiAgICAgICAgICogLy8gPT4gMVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5zb3J0ZWRMYXN0SW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAgICAgKiAvLyA9PiAxXG4gICAgICAgICAqL2Z1bmN0aW9uIHNvcnRlZExhc3RJbmRleEJ5KGFycmF5LHZhbHVlLGl0ZXJhdGVlKXtyZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksdmFsdWUsZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMiksdHJ1ZSk7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmxhc3RJbmRleE9mYCBleGNlcHQgdGhhdCBpdCBwZXJmb3JtcyBhIGJpbmFyeVxuICAgICAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnNvcnRlZExhc3RJbmRleE9mKFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICAgICAqIC8vID0+IDNcbiAgICAgICAgICovZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4T2YoYXJyYXksdmFsdWUpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7aWYobGVuZ3RoKXt2YXIgaW5kZXg9YmFzZVNvcnRlZEluZGV4KGFycmF5LHZhbHVlLHRydWUpLTE7aWYoZXEoYXJyYXlbaW5kZXhdLHZhbHVlKSl7cmV0dXJuIGluZGV4O319cmV0dXJuLTE7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0J3MgZGVzaWduZWQgYW5kIG9wdGltaXplZFxuICAgICAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5zb3J0ZWRVbmlxKFsxLCAxLCAyXSk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAgICAgKi9mdW5jdGlvbiBzb3J0ZWRVbmlxKGFycmF5KXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aD9iYXNlU29ydGVkVW5pcShhcnJheSk6W107fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFCeWAgZXhjZXB0IHRoYXQgaXQncyBkZXNpZ25lZCBhbmQgb3B0aW1pemVkXG4gICAgICAgICAqIGZvciBzb3J0ZWQgYXJyYXlzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnNvcnRlZFVuaXFCeShbMS4xLCAxLjIsIDIuMywgMi40XSwgTWF0aC5mbG9vcik7XG4gICAgICAgICAqIC8vID0+IFsxLjEsIDIuM11cbiAgICAgICAgICovZnVuY3Rpb24gc29ydGVkVW5pcUJ5KGFycmF5LGl0ZXJhdGVlKXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aD9iYXNlU29ydGVkVW5pcShhcnJheSxnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSk6W107fS8qKlxuICAgICAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRhaWwoWzEsIDIsIDNdKTtcbiAgICAgICAgICogLy8gPT4gWzIsIDNdXG4gICAgICAgICAqL2Z1bmN0aW9uIHRhaWwoYXJyYXkpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7cmV0dXJuIGxlbmd0aD9iYXNlU2xpY2UoYXJyYXksMSxsZW5ndGgpOltdO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byB0YWtlLlxuICAgICAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udGFrZShbMSwgMiwgM10pO1xuICAgICAgICAgKiAvLyA9PiBbMV1cbiAgICAgICAgICpcbiAgICAgICAgICogXy50YWtlKFsxLCAyLCAzXSwgMik7XG4gICAgICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCA1KTtcbiAgICAgICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udGFrZShbMSwgMiwgM10sIDApO1xuICAgICAgICAgKiAvLyA9PiBbXVxuICAgICAgICAgKi9mdW5jdGlvbiB0YWtlKGFycmF5LG4sZ3VhcmQpe2lmKCEoYXJyYXkmJmFycmF5Lmxlbmd0aCkpe3JldHVybltdO31uPWd1YXJkfHxuPT09dW5kZWZpbmVkPzE6dG9JbnRlZ2VyKG4pO3JldHVybiBiYXNlU2xpY2UoYXJyYXksMCxuPDA/MDpuKTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAgICAgICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10pO1xuICAgICAgICAgKiAvLyA9PiBbM11cbiAgICAgICAgICpcbiAgICAgICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgICAgICogLy8gPT4gWzIsIDNdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAgICAgKiAvLyA9PiBbXVxuICAgICAgICAgKi9mdW5jdGlvbiB0YWtlUmlnaHQoYXJyYXksbixndWFyZCl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtpZighbGVuZ3RoKXtyZXR1cm5bXTt9bj1ndWFyZHx8bj09PXVuZGVmaW5lZD8xOnRvSW50ZWdlcihuKTtuPWxlbmd0aC1uO3JldHVybiBiYXNlU2xpY2UoYXJyYXksbjwwPzA6bixsZW5ndGgpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBlbmQuIEVsZW1lbnRzIGFyZVxuICAgICAgICAgKiB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgICAgICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAgICAgKiBdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAgICogLy8gPT4gW11cbiAgICAgICAgICovZnVuY3Rpb24gdGFrZVJpZ2h0V2hpbGUoYXJyYXkscHJlZGljYXRlKXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aD9iYXNlV2hpbGUoYXJyYXksZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpLGZhbHNlLHRydWUpOltdO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuIEVsZW1lbnRzXG4gICAgICAgICAqIGFyZSB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgICAgICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAgICAgKiBdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy50YWtlV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAgICogLy8gPT4gW11cbiAgICAgICAgICovZnVuY3Rpb24gdGFrZVdoaWxlKGFycmF5LHByZWRpY2F0ZSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZVdoaWxlKGFycmF5LGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwzKSk6W107fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMsIGluIG9yZGVyLCBmcm9tIGFsbCBnaXZlbiBhcnJheXMgdXNpbmdcbiAgICAgICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udW5pb24oWzJdLCBbMSwgMl0pO1xuICAgICAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgICAgICovdmFyIHVuaW9uPWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cyl7cmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywxLGlzQXJyYXlMaWtlT2JqZWN0LHRydWUpKTt9KTsvKipcbiAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAgICogd2hpY2ggdW5pcXVlbmVzcyBpcyBjb21wdXRlZC4gUmVzdWx0IHZhbHVlcyBhcmUgY2hvc2VuIGZyb20gdGhlIGZpcnN0XG4gICAgICAgKiBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgICAqICh2YWx1ZSkuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8udW5pb25CeShbMi4xXSwgWzEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICAgKiAvLyA9PiBbMi4xLCAxLjJdXG4gICAgICAgKlxuICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgKiBfLnVuaW9uQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgICAqL3ZhciB1bmlvbkJ5PWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cyl7dmFyIGl0ZXJhdGVlPWxhc3QoYXJyYXlzKTtpZihpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpe2l0ZXJhdGVlPXVuZGVmaW5lZDt9cmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywxLGlzQXJyYXlMaWtlT2JqZWN0LHRydWUpLGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDIpKTt9KTsvKipcbiAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFJlc3VsdCB2YWx1ZXMgYXJlIGNob3NlbiBmcm9tXG4gICAgICAgKiB0aGUgZmlyc3QgYXJyYXkgaW4gd2hpY2ggdGhlIHZhbHVlIG9jY3Vycy4gVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICAgICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAgICpcbiAgICAgICAqIF8udW5pb25XaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMSB9XVxuICAgICAgICovdmFyIHVuaW9uV2l0aD1iYXNlUmVzdChmdW5jdGlvbihhcnJheXMpe3ZhciBjb21wYXJhdG9yPWxhc3QoYXJyYXlzKTtjb21wYXJhdG9yPXR5cGVvZiBjb21wYXJhdG9yPT09J2Z1bmN0aW9uJz9jb21wYXJhdG9yOnVuZGVmaW5lZDtyZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLDEsaXNBcnJheUxpa2VPYmplY3QsdHJ1ZSksdW5kZWZpbmVkLGNvbXBhcmF0b3IpO30pOy8qKlxuICAgICAgICogQ3JlYXRlcyBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgYW4gYXJyYXksIHVzaW5nXG4gICAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpbiB3aGljaCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggZWxlbWVudFxuICAgICAgICogaXMga2VwdC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1clxuICAgICAgICogaW4gdGhlIGFycmF5LlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy51bmlxKFsyLCAxLCAyXSk7XG4gICAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgICAqL2Z1bmN0aW9uIHVuaXEoYXJyYXkpe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VVbmlxKGFycmF5KTpbXTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgICAgICogdW5pcXVlbmVzcyBpcyBjb21wdXRlZC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGVcbiAgICAgICAgICogb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAgICAgKiAodmFsdWUpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udW5pcUJ5KFsyLjEsIDEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8udW5pcUJ5KFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgICAgICogLy8gPT4gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH1dXG4gICAgICAgICAqL2Z1bmN0aW9uIHVuaXFCeShhcnJheSxpdGVyYXRlZSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZVVuaXEoYXJyYXksZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMikpOltdO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgICAgICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICAgICAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy51bmlxV2l0aChvYmplY3RzLCBfLmlzRXF1YWwpO1xuICAgICAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dXG4gICAgICAgICAqL2Z1bmN0aW9uIHVuaXFXaXRoKGFycmF5LGNvbXBhcmF0b3Ipe2NvbXBhcmF0b3I9dHlwZW9mIGNvbXBhcmF0b3I9PT0nZnVuY3Rpb24nP2NvbXBhcmF0b3I6dW5kZWZpbmVkO3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VVbmlxKGFycmF5LHVuZGVmaW5lZCxjb21wYXJhdG9yKTpbXTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIGdyb3VwZWRcbiAgICAgICAgICogZWxlbWVudHMgYW5kIGNyZWF0ZXMgYW4gYXJyYXkgcmVncm91cGluZyB0aGUgZWxlbWVudHMgdG8gdGhlaXIgcHJlLXppcFxuICAgICAgICAgKiBjb25maWd1cmF0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAxLjIuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMgdG8gcHJvY2Vzcy5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgICAgICogLy8gPT4gW1snYScsIDEsIHRydWVdLCBbJ2InLCAyLCBmYWxzZV1dXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udW56aXAoemlwcGVkKTtcbiAgICAgICAgICogLy8gPT4gW1snYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXV1cbiAgICAgICAgICovZnVuY3Rpb24gdW56aXAoYXJyYXkpe2lmKCEoYXJyYXkmJmFycmF5Lmxlbmd0aCkpe3JldHVybltdO312YXIgbGVuZ3RoPTA7YXJyYXk9YXJyYXlGaWx0ZXIoYXJyYXksZnVuY3Rpb24oZ3JvdXApe2lmKGlzQXJyYXlMaWtlT2JqZWN0KGdyb3VwKSl7bGVuZ3RoPW5hdGl2ZU1heChncm91cC5sZW5ndGgsbGVuZ3RoKTtyZXR1cm4gdHJ1ZTt9fSk7cmV0dXJuIGJhc2VUaW1lcyhsZW5ndGgsZnVuY3Rpb24oaW5kZXgpe3JldHVybiBhcnJheU1hcChhcnJheSxiYXNlUHJvcGVydHkoaW5kZXgpKTt9KTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICAgICAqIGhvdyByZWdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy44LjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAgICAgKiAgcmVncm91cGVkIHZhbHVlcy5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSk7XG4gICAgICAgICAqIC8vID0+IFtbMSwgMTAsIDEwMF0sIFsyLCAyMCwgMjAwXV1cbiAgICAgICAgICpcbiAgICAgICAgICogXy51bnppcFdpdGgoemlwcGVkLCBfLmFkZCk7XG4gICAgICAgICAqIC8vID0+IFszLCAzMCwgMzAwXVxuICAgICAgICAgKi9mdW5jdGlvbiB1bnppcFdpdGgoYXJyYXksaXRlcmF0ZWUpe2lmKCEoYXJyYXkmJmFycmF5Lmxlbmd0aCkpe3JldHVybltdO312YXIgcmVzdWx0PXVuemlwKGFycmF5KTtpZihpdGVyYXRlZT09bnVsbCl7cmV0dXJuIHJlc3VsdDt9cmV0dXJuIGFycmF5TWFwKHJlc3VsdCxmdW5jdGlvbihncm91cCl7cmV0dXJuIGFwcGx5KGl0ZXJhdGVlLHVuZGVmaW5lZCxncm91cCk7fSk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGV4Y2x1ZGluZyBhbGwgZ2l2ZW4gdmFsdWVzIHVzaW5nXG4gICAgICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy54b3JcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy53aXRob3V0KFsyLCAxLCAyLCAzXSwgMSwgMik7XG4gICAgICAgICAqIC8vID0+IFszXVxuICAgICAgICAgKi92YXIgd2l0aG91dD1iYXNlUmVzdChmdW5jdGlvbihhcnJheSx2YWx1ZXMpe3JldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSk/YmFzZURpZmZlcmVuY2UoYXJyYXksdmFsdWVzKTpbXTt9KTsvKipcbiAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyB0aGF0IGlzIHRoZVxuICAgICAgICogW3N5bW1ldHJpYyBkaWZmZXJlbmNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1tZXRyaWNfZGlmZmVyZW5jZSlcbiAgICAgICAqIG9mIHRoZSBnaXZlbiBhcnJheXMuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyXG4gICAgICAgKiB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy53aXRob3V0XG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8ueG9yKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAgICovdmFyIHhvcj1iYXNlUmVzdChmdW5jdGlvbihhcnJheXMpe3JldHVybiBiYXNlWG9yKGFycmF5RmlsdGVyKGFycmF5cyxpc0FycmF5TGlrZU9iamVjdCkpO30pOy8qKlxuICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy54b3JgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAgICogd2hpY2ggYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZFxuICAgICAgICogYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmVcbiAgICAgICAqIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLnhvckJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAgICogLy8gPT4gWzEuMiwgMy40XVxuICAgICAgICpcbiAgICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICogXy54b3JCeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAgICovdmFyIHhvckJ5PWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cyl7dmFyIGl0ZXJhdGVlPWxhc3QoYXJyYXlzKTtpZihpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpe2l0ZXJhdGVlPXVuZGVmaW5lZDt9cmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLGlzQXJyYXlMaWtlT2JqZWN0KSxnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSk7fSk7LyoqXG4gICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2ggaXNcbiAgICAgICAqIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgICAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy4gVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICAgICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAgICpcbiAgICAgICAqIF8ueG9yV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICAgKi92YXIgeG9yV2l0aD1iYXNlUmVzdChmdW5jdGlvbihhcnJheXMpe3ZhciBjb21wYXJhdG9yPWxhc3QoYXJyYXlzKTtjb21wYXJhdG9yPXR5cGVvZiBjb21wYXJhdG9yPT09J2Z1bmN0aW9uJz9jb21wYXJhdG9yOnVuZGVmaW5lZDtyZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsaXNBcnJheUxpa2VPYmplY3QpLHVuZGVmaW5lZCxjb21wYXJhdG9yKTt9KTsvKipcbiAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cywgdGhlIGZpcnN0IG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAgICogZmlyc3QgZWxlbWVudHMgb2YgdGhlIGdpdmVuIGFycmF5cywgdGhlIHNlY29uZCBvZiB3aGljaCBjb250YWlucyB0aGVcbiAgICAgICAqIHNlY29uZCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCBhbmQgc28gb24uXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIHByb2Nlc3MuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLnppcChbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV0pO1xuICAgICAgICogLy8gPT4gW1snYScsIDEsIHRydWVdLCBbJ2InLCAyLCBmYWxzZV1dXG4gICAgICAgKi92YXIgemlwPWJhc2VSZXN0KHVuemlwKTsvKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mcm9tUGFpcnNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgdHdvIGFycmF5cyxcbiAgICAgICAgICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuNC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy56aXBPYmplY3QoWydhJywgJ2InXSwgWzEsIDJdKTtcbiAgICAgICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICAgICAqL2Z1bmN0aW9uIHppcE9iamVjdChwcm9wcyx2YWx1ZXMpe3JldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzfHxbXSx2YWx1ZXN8fFtdLGFzc2lnblZhbHVlKTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwT2JqZWN0YCBleGNlcHQgdGhhdCBpdCBzdXBwb3J0cyBwcm9wZXJ0eSBwYXRocy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzPVtdXSBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnppcE9iamVjdERlZXAoWydhLmJbMF0uYycsICdhLmJbMV0uZCddLCBbMSwgMl0pO1xuICAgICAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IFt7ICdjJzogMSB9LCB7ICdkJzogMiB9XSB9IH1cbiAgICAgICAgICovZnVuY3Rpb24gemlwT2JqZWN0RGVlcChwcm9wcyx2YWx1ZXMpe3JldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzfHxbXSx2YWx1ZXN8fFtdLGJhc2VTZXQpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICAgICAqIGhvdyBncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICAgICAqIGVsZW1lbnRzIG9mIGVhY2ggZ3JvdXA6ICguLi5ncm91cCkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuOC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIHByb2Nlc3MuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAgICAgKiAgZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uemlwV2l0aChbMSwgMl0sIFsxMCwgMjBdLCBbMTAwLCAyMDBdLCBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICAgICAqICAgcmV0dXJuIGEgKyBiICsgYztcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqIC8vID0+IFsxMTEsIDIyMl1cbiAgICAgICAgICovdmFyIHppcFdpdGg9YmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKXt2YXIgbGVuZ3RoPWFycmF5cy5sZW5ndGgsaXRlcmF0ZWU9bGVuZ3RoPjE/YXJyYXlzW2xlbmd0aC0xXTp1bmRlZmluZWQ7aXRlcmF0ZWU9dHlwZW9mIGl0ZXJhdGVlPT09J2Z1bmN0aW9uJz8oYXJyYXlzLnBvcCgpLGl0ZXJhdGVlKTp1bmRlZmluZWQ7cmV0dXJuIHVuemlwV2l0aChhcnJheXMsaXRlcmF0ZWUpO30pOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqXG4gICAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB0aGF0IHdyYXBzIGB2YWx1ZWAgd2l0aCBleHBsaWNpdCBtZXRob2RcbiAgICAgICAqIGNoYWluIHNlcXVlbmNlcyBlbmFibGVkLiBUaGUgcmVzdWx0IG9mIHN1Y2ggc2VxdWVuY2VzIG11c3QgYmUgdW53cmFwcGVkXG4gICAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDEuMy4wXG4gICAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2IH0sXG4gICAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICAgKiBdO1xuICAgICAgICpcbiAgICAgICAqIHZhciB5b3VuZ2VzdCA9IF9cbiAgICAgICAqICAgLmNoYWluKHVzZXJzKVxuICAgICAgICogICAuc29ydEJ5KCdhZ2UnKVxuICAgICAgICogICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgICAqICAgICByZXR1cm4gby51c2VyICsgJyBpcyAnICsgby5hZ2U7XG4gICAgICAgKiAgIH0pXG4gICAgICAgKiAgIC5oZWFkKClcbiAgICAgICAqICAgLnZhbHVlKCk7XG4gICAgICAgKiAvLyA9PiAncGViYmxlcyBpcyAxJ1xuICAgICAgICovZnVuY3Rpb24gY2hhaW4odmFsdWUpe3ZhciByZXN1bHQ9bG9kYXNoKHZhbHVlKTtyZXN1bHQuX19jaGFpbl9fPXRydWU7cmV0dXJuIHJlc3VsdDt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgYGludGVyY2VwdG9yYCBhbmQgcmV0dXJucyBgdmFsdWVgLiBUaGUgaW50ZXJjZXB0b3JcbiAgICAgICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKHZhbHVlKS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG9cbiAgICAgICAgICogXCJ0YXAgaW50b1wiIGEgbWV0aG9kIGNoYWluIHNlcXVlbmNlIGluIG9yZGVyIHRvIG1vZGlmeSBpbnRlcm1lZGlhdGUgcmVzdWx0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm92aWRlIHRvIGBpbnRlcmNlcHRvcmAuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8oWzEsIDIsIDNdKVxuICAgICAgICAgKiAgLnRhcChmdW5jdGlvbihhcnJheSkge1xuICAgICAgICAgKiAgICAvLyBNdXRhdGUgaW5wdXQgYXJyYXkuXG4gICAgICAgICAqICAgIGFycmF5LnBvcCgpO1xuICAgICAgICAgKiAgfSlcbiAgICAgICAgICogIC5yZXZlcnNlKClcbiAgICAgICAgICogIC52YWx1ZSgpO1xuICAgICAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgICAgICovZnVuY3Rpb24gdGFwKHZhbHVlLGludGVyY2VwdG9yKXtpbnRlcmNlcHRvcih2YWx1ZSk7cmV0dXJuIHZhbHVlO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy50YXBgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBgaW50ZXJjZXB0b3JgLlxuICAgICAgICAgKiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInBhc3MgdGhydVwiIHZhbHVlcyByZXBsYWNpbmcgaW50ZXJtZWRpYXRlXG4gICAgICAgICAqIHJlc3VsdHMgaW4gYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpbnRlcmNlcHRvciBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8oJyAgYWJjICAnKVxuICAgICAgICAgKiAgLmNoYWluKClcbiAgICAgICAgICogIC50cmltKClcbiAgICAgICAgICogIC50aHJ1KGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAqICAgIHJldHVybiBbdmFsdWVdO1xuICAgICAgICAgKiAgfSlcbiAgICAgICAgICogIC52YWx1ZSgpO1xuICAgICAgICAgKiAvLyA9PiBbJ2FiYyddXG4gICAgICAgICAqL2Z1bmN0aW9uIHRocnUodmFsdWUsaW50ZXJjZXB0b3Ipe3JldHVybiBpbnRlcmNlcHRvcih2YWx1ZSk7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLmF0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQG5hbWUgYXRcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDEuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH0sIDRdIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8ob2JqZWN0KS5hdChbJ2FbMF0uYi5jJywgJ2FbMV0nXSkudmFsdWUoKTtcbiAgICAgICAgICogLy8gPT4gWzMsIDRdXG4gICAgICAgICAqL3ZhciB3cmFwcGVyQXQ9ZmxhdFJlc3QoZnVuY3Rpb24ocGF0aHMpe3ZhciBsZW5ndGg9cGF0aHMubGVuZ3RoLHN0YXJ0PWxlbmd0aD9wYXRoc1swXTowLHZhbHVlPXRoaXMuX193cmFwcGVkX18saW50ZXJjZXB0b3I9ZnVuY3Rpb24gaW50ZXJjZXB0b3Iob2JqZWN0KXtyZXR1cm4gYmFzZUF0KG9iamVjdCxwYXRocyk7fTtpZihsZW5ndGg+MXx8dGhpcy5fX2FjdGlvbnNfXy5sZW5ndGh8fCEodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcil8fCFpc0luZGV4KHN0YXJ0KSl7cmV0dXJuIHRoaXMudGhydShpbnRlcmNlcHRvcik7fXZhbHVlPXZhbHVlLnNsaWNlKHN0YXJ0LCtzdGFydCsobGVuZ3RoPzE6MCkpO3ZhbHVlLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6dGhydSxhcmdzOltpbnRlcmNlcHRvcl0sdGhpc0FyZzp1bmRlZmluZWR9KTtyZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodmFsdWUsdGhpcy5fX2NoYWluX18pLnRocnUoZnVuY3Rpb24oYXJyYXkpe2lmKGxlbmd0aCYmIWFycmF5Lmxlbmd0aCl7YXJyYXkucHVzaCh1bmRlZmluZWQpO31yZXR1cm4gYXJyYXk7fSk7fSk7LyoqXG4gICAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB3aXRoIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC5cbiAgICAgICAqXG4gICAgICAgKiBAbmFtZSBjaGFpblxuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAgICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfVxuICAgICAgICogXTtcbiAgICAgICAqXG4gICAgICAgKiAvLyBBIHNlcXVlbmNlIHdpdGhvdXQgZXhwbGljaXQgY2hhaW5pbmcuXG4gICAgICAgKiBfKHVzZXJzKS5oZWFkKCk7XG4gICAgICAgKiAvLyA9PiB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9XG4gICAgICAgKlxuICAgICAgICogLy8gQSBzZXF1ZW5jZSB3aXRoIGV4cGxpY2l0IGNoYWluaW5nLlxuICAgICAgICogXyh1c2VycylcbiAgICAgICAqICAgLmNoYWluKClcbiAgICAgICAqICAgLmhlYWQoKVxuICAgICAgICogICAucGljaygndXNlcicpXG4gICAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknIH1cbiAgICAgICAqL2Z1bmN0aW9uIHdyYXBwZXJDaGFpbigpe3JldHVybiBjaGFpbih0aGlzKTt9LyoqXG4gICAgICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSBhbmQgcmV0dXJucyB0aGUgd3JhcHBlZCByZXN1bHQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBuYW1lIGNvbW1pdFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGFycmF5ID0gWzEsIDJdO1xuICAgICAgICAgKiB2YXIgd3JhcHBlZCA9IF8oYXJyYXkpLnB1c2goMyk7XG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgICAgICogLy8gPT4gWzEsIDJdXG4gICAgICAgICAqXG4gICAgICAgICAqIHdyYXBwZWQgPSB3cmFwcGVkLmNvbW1pdCgpO1xuICAgICAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAgICAgKlxuICAgICAgICAgKiB3cmFwcGVkLmxhc3QoKTtcbiAgICAgICAgICogLy8gPT4gM1xuICAgICAgICAgKlxuICAgICAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAgICAgKi9mdW5jdGlvbiB3cmFwcGVyQ29tbWl0KCl7cmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHRoaXMudmFsdWUoKSx0aGlzLl9fY2hhaW5fXyk7fS8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBuZXh0IHZhbHVlIG9uIGEgd3JhcHBlZCBvYmplY3QgZm9sbG93aW5nIHRoZVxuICAgICAgICAgKiBbaXRlcmF0b3IgcHJvdG9jb2xdKGh0dHBzOi8vbWRuLmlvL2l0ZXJhdGlvbl9wcm90b2NvbHMjaXRlcmF0b3IpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAbmFtZSBuZXh0XG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5leHQgaXRlcmF0b3IgdmFsdWUuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pO1xuICAgICAgICAgKlxuICAgICAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgICAgICogLy8gPT4geyAnZG9uZSc6IGZhbHNlLCAndmFsdWUnOiAxIH1cbiAgICAgICAgICpcbiAgICAgICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAgICAgKiAvLyA9PiB7ICdkb25lJzogdHJ1ZSwgJ3ZhbHVlJzogdW5kZWZpbmVkIH1cbiAgICAgICAgICovZnVuY3Rpb24gd3JhcHBlck5leHQoKXtpZih0aGlzLl9fdmFsdWVzX189PT11bmRlZmluZWQpe3RoaXMuX192YWx1ZXNfXz10b0FycmF5KHRoaXMudmFsdWUoKSk7fXZhciBkb25lPXRoaXMuX19pbmRleF9fPj10aGlzLl9fdmFsdWVzX18ubGVuZ3RoLHZhbHVlPWRvbmU/dW5kZWZpbmVkOnRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXTtyZXR1cm57ZG9uZTpkb25lLHZhbHVlOnZhbHVlfTt9LyoqXG4gICAgICAgICAqIEVuYWJsZXMgdGhlIHdyYXBwZXIgdG8gYmUgaXRlcmFibGUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBuYW1lIFN5bWJvbC5pdGVyYXRvclxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSB3cmFwcGVyIG9iamVjdC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSk7XG4gICAgICAgICAqXG4gICAgICAgICAqIHdyYXBwZWRbU3ltYm9sLml0ZXJhdG9yXSgpID09PSB3cmFwcGVkO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIEFycmF5LmZyb20od3JhcHBlZCk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAgICAgKi9mdW5jdGlvbiB3cmFwcGVyVG9JdGVyYXRvcigpe3JldHVybiB0aGlzO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBjaGFpbiBzZXF1ZW5jZSBwbGFudGluZyBgdmFsdWVgIGFzIHRoZSB3cmFwcGVkIHZhbHVlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAbmFtZSBwbGFudFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwbGFudC5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pLm1hcChzcXVhcmUpO1xuICAgICAgICAgKiB2YXIgb3RoZXIgPSB3cmFwcGVkLnBsYW50KFszLCA0XSk7XG4gICAgICAgICAqXG4gICAgICAgICAqIG90aGVyLnZhbHVlKCk7XG4gICAgICAgICAqIC8vID0+IFs5LCAxNl1cbiAgICAgICAgICpcbiAgICAgICAgICogd3JhcHBlZC52YWx1ZSgpO1xuICAgICAgICAgKiAvLyA9PiBbMSwgNF1cbiAgICAgICAgICovZnVuY3Rpb24gd3JhcHBlclBsYW50KHZhbHVlKXt2YXIgcmVzdWx0LHBhcmVudD10aGlzO3doaWxlKHBhcmVudCBpbnN0YW5jZW9mIGJhc2VMb2Rhc2gpe3ZhciBjbG9uZT13cmFwcGVyQ2xvbmUocGFyZW50KTtjbG9uZS5fX2luZGV4X189MDtjbG9uZS5fX3ZhbHVlc19fPXVuZGVmaW5lZDtpZihyZXN1bHQpe3ByZXZpb3VzLl9fd3JhcHBlZF9fPWNsb25lO31lbHNle3Jlc3VsdD1jbG9uZTt9dmFyIHByZXZpb3VzPWNsb25lO3BhcmVudD1wYXJlbnQuX193cmFwcGVkX187fXByZXZpb3VzLl9fd3JhcHBlZF9fPXZhbHVlO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLnJldmVyc2VgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgd3JhcHBlZCBhcnJheS5cbiAgICAgICAgICpcbiAgICAgICAgICogQG5hbWUgcmV2ZXJzZVxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfKGFycmF5KS5yZXZlcnNlKCkudmFsdWUoKVxuICAgICAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgICAgICpcbiAgICAgICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgICAgICovZnVuY3Rpb24gd3JhcHBlclJldmVyc2UoKXt2YXIgdmFsdWU9dGhpcy5fX3dyYXBwZWRfXztpZih2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKXt2YXIgd3JhcHBlZD12YWx1ZTtpZih0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCl7d3JhcHBlZD1uZXcgTGF6eVdyYXBwZXIodGhpcyk7fXdyYXBwZWQ9d3JhcHBlZC5yZXZlcnNlKCk7d3JhcHBlZC5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOnRocnUsYXJnczpbcmV2ZXJzZV0sdGhpc0FyZzp1bmRlZmluZWR9KTtyZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlZCx0aGlzLl9fY2hhaW5fXyk7fXJldHVybiB0aGlzLnRocnUocmV2ZXJzZSk7fS8qKlxuICAgICAgICAgKiBFeGVjdXRlcyB0aGUgY2hhaW4gc2VxdWVuY2UgdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGFsaWFzIHRvSlNPTiwgdmFsdWVPZlxuICAgICAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB1bndyYXBwZWQgdmFsdWUuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8oWzEsIDIsIDNdKS52YWx1ZSgpO1xuICAgICAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgICAgICovZnVuY3Rpb24gd3JhcHBlclZhbHVlKCl7cmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUodGhpcy5fX3dyYXBwZWRfXyx0aGlzLl9fYWN0aW9uc19fKTt9LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgY29ycmVzcG9uZGluZyB2YWx1ZSBvZlxuICAgICAgICAgKiBlYWNoIGtleSBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgd2FzIHJldHVybmVkIGJ5IGBpdGVyYXRlZWAuIFRoZVxuICAgICAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uY291bnRCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAgICAgKiAvLyA9PiB7ICc0JzogMSwgJzYnOiAyIH1cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uY291bnRCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgJ2xlbmd0aCcpO1xuICAgICAgICAgKiAvLyA9PiB7ICczJzogMiwgJzUnOiAxIH1cbiAgICAgICAgICovdmFyIGNvdW50Qnk9Y3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsdmFsdWUsa2V5KXtpZihoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCxrZXkpKXsrK3Jlc3VsdFtrZXldO31lbHNle2Jhc2VBc3NpZ25WYWx1ZShyZXN1bHQsa2V5LDEpO319KTsvKipcbiAgICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbGwqKiBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAuXG4gICAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICAgKlxuICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgIGZvclxuICAgICAgICogW2VtcHR5IGNvbGxlY3Rpb25zXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbXB0eV9zZXQpIGJlY2F1c2VcbiAgICAgICAqIFtldmVyeXRoaW5nIGlzIHRydWVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhY3VvdXNfdHJ1dGgpIG9mXG4gICAgICAgKiBlbGVtZW50cyBvZiBlbXB0eSBjb2xsZWN0aW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy5ldmVyeShbdHJ1ZSwgMSwgbnVsbCwgJ3llcyddLCBCb29sZWFuKTtcbiAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgKlxuICAgICAgICogdmFyIHVzZXJzID0gW1xuICAgICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAgICogXTtcbiAgICAgICAqXG4gICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICogXy5ldmVyeSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICpcbiAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAqIF8uZXZlcnkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAqXG4gICAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAqIF8uZXZlcnkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgKi9mdW5jdGlvbiBldmVyeShjb2xsZWN0aW9uLHByZWRpY2F0ZSxndWFyZCl7dmFyIGZ1bmM9aXNBcnJheShjb2xsZWN0aW9uKT9hcnJheUV2ZXJ5OmJhc2VFdmVyeTtpZihndWFyZCYmaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbixwcmVkaWNhdGUsZ3VhcmQpKXtwcmVkaWNhdGU9dW5kZWZpbmVkO31yZXR1cm4gZnVuYyhjb2xsZWN0aW9uLGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwzKSk7fS8qKlxuICAgICAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICAgICAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnJlbW92ZWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgICAgICogQHNlZSBfLnJlamVjdFxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICAgICAqIF07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmZpbHRlcih1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5maWx0ZXIodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgICAgICovZnVuY3Rpb24gZmlsdGVyKGNvbGxlY3Rpb24scHJlZGljYXRlKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5RmlsdGVyOmJhc2VGaWx0ZXI7cmV0dXJuIGZ1bmMoY29sbGVjdGlvbixnZXRJdGVyYXRlZShwcmVkaWNhdGUsMykpO30vKipcbiAgICAgICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIHVzZXJzID0gW1xuICAgICAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAgICAgKiBdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZpbmQodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2ZyZWQnXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmZpbmQodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAgICAgKi92YXIgZmluZD1jcmVhdGVGaW5kKGZpbmRJbmRleCk7LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWNvbGxlY3Rpb24ubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5maW5kTGFzdChbMSwgMiwgMywgNF0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICogICByZXR1cm4gbiAlIDIgPT0gMTtcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqIC8vID0+IDNcbiAgICAgICAgICovdmFyIGZpbmRMYXN0PWNyZWF0ZUZpbmQoZmluZExhc3RJbmRleCk7LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmbGF0dGVuZWQgYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYFxuICAgICAgICAgKiB0aHJ1IGBpdGVyYXRlZWAgYW5kIGZsYXR0ZW5pbmcgdGhlIG1hcHBlZCByZXN1bHRzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICAgICAqICAgcmV0dXJuIFtuLCBuXTtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZsYXRNYXAoWzEsIDJdLCBkdXBsaWNhdGUpO1xuICAgICAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgICAgICovZnVuY3Rpb24gZmxhdE1hcChjb2xsZWN0aW9uLGl0ZXJhdGVlKXtyZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24saXRlcmF0ZWUpLDEpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mbGF0TWFwYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBmbGF0dGVucyB0aGVcbiAgICAgICAgICogbWFwcGVkIHJlc3VsdHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuNy4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZsYXRNYXBEZWVwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICAgICAqL2Z1bmN0aW9uIGZsYXRNYXBEZWVwKGNvbGxlY3Rpb24saXRlcmF0ZWUpe3JldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbixpdGVyYXRlZSksSU5GSU5JVFkpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mbGF0TWFwYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBmbGF0dGVucyB0aGVcbiAgICAgICAgICogbWFwcGVkIHJlc3VsdHMgdXAgdG8gYGRlcHRoYCB0aW1lcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZsYXRNYXBEZXB0aChbMSwgMl0sIGR1cGxpY2F0ZSwgMik7XG4gICAgICAgICAqIC8vID0+IFtbMSwgMV0sIFsyLCAyXV1cbiAgICAgICAgICovZnVuY3Rpb24gZmxhdE1hcERlcHRoKGNvbGxlY3Rpb24saXRlcmF0ZWUsZGVwdGgpe2RlcHRoPWRlcHRoPT09dW5kZWZpbmVkPzE6dG9JbnRlZ2VyKGRlcHRoKTtyZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24saXRlcmF0ZWUpLGRlcHRoKTt9LyoqXG4gICAgICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggZWxlbWVudC5cbiAgICAgICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICAgICAgICAgKiBwcm9wZXJ0eSBhcmUgaXRlcmF0ZWQgbGlrZSBhcnJheXMuIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3IgdXNlIGBfLmZvckluYFxuICAgICAgICAgKiBvciBgXy5mb3JPd25gIGZvciBvYmplY3QgaXRlcmF0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAYWxpYXMgZWFjaFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgICAgICogQHNlZSBfLmZvckVhY2hSaWdodFxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZvckVhY2goeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAgICAgKi9mdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24saXRlcmF0ZWUpe3ZhciBmdW5jPWlzQXJyYXkoY29sbGVjdGlvbik/YXJyYXlFYWNoOmJhc2VFYWNoO3JldHVybiBmdW5jKGNvbGxlY3Rpb24sZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMykpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JFYWNoYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDIuMC4wXG4gICAgICAgICAqIEBhbGlhcyBlYWNoUmlnaHRcbiAgICAgICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICAgICAqIEBzZWUgXy5mb3JFYWNoXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZm9yRWFjaFJpZ2h0KFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICAgICAqIH0pO1xuICAgICAgICAgKiAvLyA9PiBMb2dzIGAyYCB0aGVuIGAxYC5cbiAgICAgICAgICovZnVuY3Rpb24gZm9yRWFjaFJpZ2h0KGNvbGxlY3Rpb24saXRlcmF0ZWUpe3ZhciBmdW5jPWlzQXJyYXkoY29sbGVjdGlvbik/YXJyYXlFYWNoUmlnaHQ6YmFzZUVhY2hSaWdodDtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDMpKTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIG9yZGVyIG9mIGdyb3VwZWQgdmFsdWVzXG4gICAgICAgICAqIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gYGNvbGxlY3Rpb25gLiBUaGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgKiB2YWx1ZSBvZiBlYWNoIGtleSBpcyBhbiBhcnJheSBvZiBlbGVtZW50cyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgICAgICoga2V5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmdyb3VwQnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgICAgICogLy8gPT4geyAnNCc6IFs0LjJdLCAnNic6IFs2LjEsIDYuM10gfVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5ncm91cEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICAgICAqIC8vID0+IHsgJzMnOiBbJ29uZScsICd0d28nXSwgJzUnOiBbJ3RocmVlJ10gfVxuICAgICAgICAgKi92YXIgZ3JvdXBCeT1jcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCx2YWx1ZSxrZXkpe2lmKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LGtleSkpe3Jlc3VsdFtrZXldLnB1c2godmFsdWUpO31lbHNle2Jhc2VBc3NpZ25WYWx1ZShyZXN1bHQsa2V5LFt2YWx1ZV0pO319KTsvKipcbiAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIGBjb2xsZWN0aW9uYC4gSWYgYGNvbGxlY3Rpb25gIGlzIGEgc3RyaW5nLCBpdCdzXG4gICAgICAgKiBjaGVja2VkIGZvciBhIHN1YnN0cmluZyBvZiBgdmFsdWVgLCBvdGhlcndpc2VcbiAgICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICAgKiBpcyB1c2VkIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhc1xuICAgICAgICogdGhlIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEpO1xuICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICpcbiAgICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxLCAyKTtcbiAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgKlxuICAgICAgICogXy5pbmNsdWRlcyh7ICdhJzogMSwgJ2InOiAyIH0sIDEpO1xuICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICpcbiAgICAgICAqIF8uaW5jbHVkZXMoJ2FiY2QnLCAnYmMnKTtcbiAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAqL2Z1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sdmFsdWUsZnJvbUluZGV4LGd1YXJkKXtjb2xsZWN0aW9uPWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pP2NvbGxlY3Rpb246dmFsdWVzKGNvbGxlY3Rpb24pO2Zyb21JbmRleD1mcm9tSW5kZXgmJiFndWFyZD90b0ludGVnZXIoZnJvbUluZGV4KTowO3ZhciBsZW5ndGg9Y29sbGVjdGlvbi5sZW5ndGg7aWYoZnJvbUluZGV4PDApe2Zyb21JbmRleD1uYXRpdmVNYXgobGVuZ3RoK2Zyb21JbmRleCwwKTt9cmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pP2Zyb21JbmRleDw9bGVuZ3RoJiZjb2xsZWN0aW9uLmluZGV4T2YodmFsdWUsZnJvbUluZGV4KT4tMTohIWxlbmd0aCYmYmFzZUluZGV4T2YoY29sbGVjdGlvbix2YWx1ZSxmcm9tSW5kZXgpPi0xO30vKipcbiAgICAgICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLCByZXR1cm5pbmdcbiAgICAgICAgICogYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2YgZWFjaCBpbnZva2VkIG1ldGhvZC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICAgICAqIGFyZSBwcm92aWRlZCB0byBlYWNoIGludm9rZWQgbWV0aG9kLiBJZiBgcGF0aGAgaXMgYSBmdW5jdGlvbiwgaXQncyBpbnZva2VkXG4gICAgICAgICAqIGZvciwgYW5kIGB0aGlzYCBib3VuZCB0bywgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZSBvclxuICAgICAgICAgKiAgdGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgZWFjaCBtZXRob2Qgd2l0aC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmludm9rZU1hcChbWzUsIDEsIDddLCBbMywgMiwgMV1dLCAnc29ydCcpO1xuICAgICAgICAgKiAvLyA9PiBbWzEsIDUsIDddLCBbMSwgMiwgM11dXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaW52b2tlTWFwKFsxMjMsIDQ1Nl0sIFN0cmluZy5wcm90b3R5cGUuc3BsaXQsICcnKTtcbiAgICAgICAgICogLy8gPT4gW1snMScsICcyJywgJzMnXSwgWyc0JywgJzUnLCAnNiddXVxuICAgICAgICAgKi92YXIgaW52b2tlTWFwPWJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24scGF0aCxhcmdzKXt2YXIgaW5kZXg9LTEsaXNGdW5jPXR5cGVvZiBwYXRoPT09J2Z1bmN0aW9uJyxyZXN1bHQ9aXNBcnJheUxpa2UoY29sbGVjdGlvbik/QXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpOltdO2Jhc2VFYWNoKGNvbGxlY3Rpb24sZnVuY3Rpb24odmFsdWUpe3Jlc3VsdFsrK2luZGV4XT1pc0Z1bmM/YXBwbHkocGF0aCx2YWx1ZSxhcmdzKTpiYXNlSW52b2tlKHZhbHVlLHBhdGgsYXJncyk7fSk7cmV0dXJuIHJlc3VsdDt9KTsvKipcbiAgICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICAgKiBlYWNoIGtleSBpcyB0aGUgbGFzdCBlbGVtZW50IHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBrZXkuIFRoZVxuICAgICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciBhcnJheSA9IFtcbiAgICAgICAqICAgeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sXG4gICAgICAgKiAgIHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH1cbiAgICAgICAqIF07XG4gICAgICAgKlxuICAgICAgICogXy5rZXlCeShhcnJheSwgZnVuY3Rpb24obykge1xuICAgICAgICogICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShvLmNvZGUpO1xuICAgICAgICogfSk7XG4gICAgICAgKiAvLyA9PiB7ICdhJzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdkJzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICAgKlxuICAgICAgICogXy5rZXlCeShhcnJheSwgJ2RpcicpO1xuICAgICAgICogLy8gPT4geyAnbGVmdCc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAncmlnaHQnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgICAqL3ZhciBrZXlCeT1jcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCx2YWx1ZSxrZXkpe2Jhc2VBc3NpZ25WYWx1ZShyZXN1bHQsa2V5LHZhbHVlKTt9KTsvKipcbiAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1XG4gICAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgICAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgICAqXG4gICAgICAgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAgICAgICAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAgICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAgICAgICAqIGBmaWxsYCwgYGludmVydGAsIGBwYXJzZUludGAsIGByYW5kb21gLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZXBlYXRgLFxuICAgICAgICogYHNhbXBsZVNpemVgLCBgc2xpY2VgLCBgc29tZWAsIGBzb3J0QnlgLCBgc3BsaXRgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICAgICAgICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAgICogfVxuICAgICAgICpcbiAgICAgICAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAgICAgICAqIC8vID0+IFsxNiwgNjRdXG4gICAgICAgKlxuICAgICAgICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICAgICAgICogLy8gPT4gWzE2LCA2NF0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgICAqXG4gICAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JyB9LFxuICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnIH1cbiAgICAgICAqIF07XG4gICAgICAgKlxuICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAgICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAgICovZnVuY3Rpb24gbWFwKGNvbGxlY3Rpb24saXRlcmF0ZWUpe3ZhciBmdW5jPWlzQXJyYXkoY29sbGVjdGlvbik/YXJyYXlNYXA6YmFzZU1hcDtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDMpKTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydEJ5YCBleGNlcHQgdGhhdCBpdCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgc29ydFxuICAgICAgICAgKiBvcmRlcnMgb2YgdGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlc1xuICAgICAgICAgKiBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLCBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvclxuICAgICAgICAgKiBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXlbXXxGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmdbXX0gW29yZGVyc10gVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICAgICAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH0sXG4gICAgICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9XG4gICAgICAgICAqIF07XG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFNvcnQgYnkgYHVzZXJgIGluIGFzY2VuZGluZyBvcmRlciBhbmQgYnkgYGFnZWAgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICAgICAgICogXy5vcmRlckJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10sIFsnYXNjJywgJ2Rlc2MnXSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgNDBdXVxuICAgICAgICAgKi9mdW5jdGlvbiBvcmRlckJ5KGNvbGxlY3Rpb24saXRlcmF0ZWVzLG9yZGVycyxndWFyZCl7aWYoY29sbGVjdGlvbj09bnVsbCl7cmV0dXJuW107fWlmKCFpc0FycmF5KGl0ZXJhdGVlcykpe2l0ZXJhdGVlcz1pdGVyYXRlZXM9PW51bGw/W106W2l0ZXJhdGVlc107fW9yZGVycz1ndWFyZD91bmRlZmluZWQ6b3JkZXJzO2lmKCFpc0FycmF5KG9yZGVycykpe29yZGVycz1vcmRlcnM9PW51bGw/W106W29yZGVyc107fXJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLGl0ZXJhdGVlcyxvcmRlcnMpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIHR3byBncm91cHMsIHRoZSBmaXJzdCBvZiB3aGljaFxuICAgICAgICAgKiBjb250YWlucyBlbGVtZW50cyBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IsIHRoZSBzZWNvbmQgb2Ygd2hpY2hcbiAgICAgICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkgZm9yLiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICAgICAqIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICAgICAqIF07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFjdGl2ZTsgfSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydwZWJibGVzJ10sIFsnYmFybmV5JywgJ2ZyZWQnXV1cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAncGViYmxlcyddLCBbJ2ZyZWQnXV1cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAgICAgKi92YXIgcGFydGl0aW9uPWNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LHZhbHVlLGtleSl7cmVzdWx0W2tleT8wOjFdLnB1c2godmFsdWUpO30sZnVuY3Rpb24oKXtyZXR1cm5bW10sW11dO30pOy8qKlxuICAgICAgICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAgICAgICAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAgICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAgICAgICAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAgICAgICAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICAgICAgICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgICAqXG4gICAgICAgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAgICAgICAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gICAgICAgKlxuICAgICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICAgKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAgICAgICAqIGFuZCBgc29ydEJ5YFxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgICAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICAgICAgICogICByZXR1cm4gc3VtICsgbjtcbiAgICAgICAqIH0sIDApO1xuICAgICAgICogLy8gPT4gM1xuICAgICAgICpcbiAgICAgICAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgICAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAgICAgICAqICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAqIH0sIHt9KTtcbiAgICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgICAqL2Z1bmN0aW9uIHJlZHVjZShjb2xsZWN0aW9uLGl0ZXJhdGVlLGFjY3VtdWxhdG9yKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5UmVkdWNlOmJhc2VSZWR1Y2UsaW5pdEFjY3VtPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDQpLGFjY3VtdWxhdG9yLGluaXRBY2N1bSxiYXNlRWFjaCk7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnJlZHVjZWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgICAgICogQHNlZSBfLnJlZHVjZVxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgYXJyYXkgPSBbWzAsIDFdLCBbMiwgM10sIFs0LCA1XV07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmVkdWNlUmlnaHQoYXJyYXksIGZ1bmN0aW9uKGZsYXR0ZW5lZCwgb3RoZXIpIHtcbiAgICAgICAgICogICByZXR1cm4gZmxhdHRlbmVkLmNvbmNhdChvdGhlcik7XG4gICAgICAgICAqIH0sIFtdKTtcbiAgICAgICAgICogLy8gPT4gWzQsIDUsIDIsIDMsIDAsIDFdXG4gICAgICAgICAqL2Z1bmN0aW9uIHJlZHVjZVJpZ2h0KGNvbGxlY3Rpb24saXRlcmF0ZWUsYWNjdW11bGF0b3Ipe3ZhciBmdW5jPWlzQXJyYXkoY29sbGVjdGlvbik/YXJyYXlSZWR1Y2VSaWdodDpiYXNlUmVkdWNlLGluaXRBY2N1bT1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIGZ1bmMoY29sbGVjdGlvbixnZXRJdGVyYXRlZShpdGVyYXRlZSw0KSxhY2N1bXVsYXRvcixpbml0QWNjdW0sYmFzZUVhY2hSaWdodCk7fS8qKlxuICAgICAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8uZmlsdGVyYDsgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gXG4gICAgICAgICAqIHRoYXQgYHByZWRpY2F0ZWAgZG9lcyAqKm5vdCoqIHJldHVybiB0cnV0aHkgZm9yLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICAgICAqIEBzZWUgXy5maWx0ZXJcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIHVzZXJzID0gW1xuICAgICAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAgICAgKiBdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJlamVjdCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5yZWplY3QodXNlcnMsIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8ucmVqZWN0KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLnJlamVjdCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICAgICAqL2Z1bmN0aW9uIHJlamVjdChjb2xsZWN0aW9uLHByZWRpY2F0ZSl7dmFyIGZ1bmM9aXNBcnJheShjb2xsZWN0aW9uKT9hcnJheUZpbHRlcjpiYXNlRmlsdGVyO3JldHVybiBmdW5jKGNvbGxlY3Rpb24sbmVnYXRlKGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwzKSkpO30vKipcbiAgICAgICAgICogR2V0cyBhIHJhbmRvbSBlbGVtZW50IGZyb20gYGNvbGxlY3Rpb25gLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5zYW1wbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgICAgICogLy8gPT4gMlxuICAgICAgICAgKi9mdW5jdGlvbiBzYW1wbGUoY29sbGVjdGlvbil7dmFyIGZ1bmM9aXNBcnJheShjb2xsZWN0aW9uKT9hcnJheVNhbXBsZTpiYXNlU2FtcGxlO3JldHVybiBmdW5jKGNvbGxlY3Rpb24pO30vKipcbiAgICAgICAgICogR2V0cyBgbmAgcmFuZG9tIGVsZW1lbnRzIGF0IHVuaXF1ZSBrZXlzIGZyb20gYGNvbGxlY3Rpb25gIHVwIHRvIHRoZVxuICAgICAgICAgKiBzaXplIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBzYW1wbGUuXG4gICAgICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnNhbXBsZVNpemUoWzEsIDIsIDNdLCAyKTtcbiAgICAgICAgICogLy8gPT4gWzMsIDFdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDQpO1xuICAgICAgICAgKiAvLyA9PiBbMiwgMywgMV1cbiAgICAgICAgICovZnVuY3Rpb24gc2FtcGxlU2l6ZShjb2xsZWN0aW9uLG4sZ3VhcmQpe2lmKGd1YXJkP2lzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sbixndWFyZCk6bj09PXVuZGVmaW5lZCl7bj0xO31lbHNle249dG9JbnRlZ2VyKG4pO312YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5U2FtcGxlU2l6ZTpiYXNlU2FtcGxlU2l6ZTtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLG4pO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzaHVmZmxlZCB2YWx1ZXMsIHVzaW5nIGEgdmVyc2lvbiBvZiB0aGVcbiAgICAgICAgICogW0Zpc2hlci1ZYXRlcyBzaHVmZmxlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXItWWF0ZXNfc2h1ZmZsZSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNodWZmbGUuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnNodWZmbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgICAgICogLy8gPT4gWzQsIDEsIDMsIDJdXG4gICAgICAgICAqL2Z1bmN0aW9uIHNodWZmbGUoY29sbGVjdGlvbil7dmFyIGZ1bmM9aXNBcnJheShjb2xsZWN0aW9uKT9hcnJheVNodWZmbGU6YmFzZVNodWZmbGU7cmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7fS8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBzaXplIG9mIGBjb2xsZWN0aW9uYCBieSByZXR1cm5pbmcgaXRzIGxlbmd0aCBmb3IgYXJyYXktbGlrZVxuICAgICAgICAgKiB2YWx1ZXMgb3IgdGhlIG51bWJlciBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBmb3Igb2JqZWN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbGxlY3Rpb24gc2l6ZS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5zaXplKFsxLCAyLCAzXSk7XG4gICAgICAgICAqIC8vID0+IDNcbiAgICAgICAgICpcbiAgICAgICAgICogXy5zaXplKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICAgICAqIC8vID0+IDJcbiAgICAgICAgICpcbiAgICAgICAgICogXy5zaXplKCdwZWJibGVzJyk7XG4gICAgICAgICAqIC8vID0+IDdcbiAgICAgICAgICovZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKXtpZihjb2xsZWN0aW9uPT1udWxsKXtyZXR1cm4gMDt9aWYoaXNBcnJheUxpa2UoY29sbGVjdGlvbikpe3JldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKT9zdHJpbmdTaXplKGNvbGxlY3Rpb24pOmNvbGxlY3Rpb24ubGVuZ3RoO312YXIgdGFnPWdldFRhZyhjb2xsZWN0aW9uKTtpZih0YWc9PW1hcFRhZ3x8dGFnPT1zZXRUYWcpe3JldHVybiBjb2xsZWN0aW9uLnNpemU7fXJldHVybiBiYXNlS2V5cyhjb2xsZWN0aW9uKS5sZW5ndGg7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yICoqYW55KiogZWxlbWVudCBvZiBgY29sbGVjdGlvbmAuXG4gICAgICAgICAqIEl0ZXJhdGlvbiBpcyBzdG9wcGVkIG9uY2UgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnNvbWUoW251bGwsIDAsICd5ZXMnLCBmYWxzZV0sIEJvb2xlYW4pO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAgICAgKiBdO1xuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLnNvbWUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uc29tZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLnNvbWUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKi9mdW5jdGlvbiBzb21lKGNvbGxlY3Rpb24scHJlZGljYXRlLGd1YXJkKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5U29tZTpiYXNlU29tZTtpZihndWFyZCYmaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbixwcmVkaWNhdGUsZ3VhcmQpKXtwcmVkaWNhdGU9dW5kZWZpbmVkO31yZXR1cm4gZnVuYyhjb2xsZWN0aW9uLGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwzKSk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gICAgICAgICAqIHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiB0aHJ1IGVhY2ggaXRlcmF0ZWUuIFRoaXMgbWV0aG9kXG4gICAgICAgICAqIHBlcmZvcm1zIGEgc3RhYmxlIHNvcnQsIHRoYXQgaXMsIGl0IHByZXNlcnZlcyB0aGUgb3JpZ2luYWwgc29ydCBvcmRlciBvZlxuICAgICAgICAgKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIHVzZXJzID0gW1xuICAgICAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9LFxuICAgICAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH1cbiAgICAgICAgICogXTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5zb3J0QnkodXNlcnMsIFtmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXI7IH1dKTtcbiAgICAgICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCA0MF1dXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uc29ydEJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10pO1xuICAgICAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNF0sIFsnYmFybmV5JywgMzZdLCBbJ2ZyZWQnLCA0MF0sIFsnZnJlZCcsIDQ4XV1cbiAgICAgICAgICovdmFyIHNvcnRCeT1iYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLGl0ZXJhdGVlcyl7aWYoY29sbGVjdGlvbj09bnVsbCl7cmV0dXJuW107fXZhciBsZW5ndGg9aXRlcmF0ZWVzLmxlbmd0aDtpZihsZW5ndGg+MSYmaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbixpdGVyYXRlZXNbMF0saXRlcmF0ZWVzWzFdKSl7aXRlcmF0ZWVzPVtdO31lbHNlIGlmKGxlbmd0aD4yJiZpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0saXRlcmF0ZWVzWzFdLGl0ZXJhdGVlc1syXSkpe2l0ZXJhdGVlcz1baXRlcmF0ZWVzWzBdXTt9cmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLDEpLFtdKTt9KTsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKlxuICAgICAgICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gICAgICAgKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDIuNC4wXG4gICAgICAgKiBAY2F0ZWdvcnkgRGF0ZVxuICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gICAgICAgKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gICAgICAgKiB9LCBfLm5vdygpKTtcbiAgICAgICAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gICAgICAgKi92YXIgbm93PWN0eE5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4gcm9vdC5EYXRlLm5vdygpO307LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKipcbiAgICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5iZWZvcmVgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzXG4gICAgICAgKiBgZnVuY2Agb25jZSBpdCdzIGNhbGxlZCBgbmAgb3IgbW9yZSB0aW1lcy5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYmVmb3JlIGBmdW5jYCBpcyBpbnZva2VkLlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiB2YXIgc2F2ZXMgPSBbJ3Byb2ZpbGUnLCAnc2V0dGluZ3MnXTtcbiAgICAgICAqXG4gICAgICAgKiB2YXIgZG9uZSA9IF8uYWZ0ZXIoc2F2ZXMubGVuZ3RoLCBmdW5jdGlvbigpIHtcbiAgICAgICAqICAgY29uc29sZS5sb2coJ2RvbmUgc2F2aW5nIScpO1xuICAgICAgICogfSk7XG4gICAgICAgKlxuICAgICAgICogXy5mb3JFYWNoKHNhdmVzLCBmdW5jdGlvbih0eXBlKSB7XG4gICAgICAgKiAgIGFzeW5jU2F2ZSh7ICd0eXBlJzogdHlwZSwgJ2NvbXBsZXRlJzogZG9uZSB9KTtcbiAgICAgICAqIH0pO1xuICAgICAgICogLy8gPT4gTG9ncyAnZG9uZSBzYXZpbmchJyBhZnRlciB0aGUgdHdvIGFzeW5jIHNhdmVzIGhhdmUgY29tcGxldGVkLlxuICAgICAgICovZnVuY3Rpb24gYWZ0ZXIobixmdW5jKXtpZih0eXBlb2YgZnVuYyE9PSdmdW5jdGlvbicpe3Rocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTt9bj10b0ludGVnZXIobik7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoLS1uPDEpe3JldHVybiBmdW5jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9fTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHVwIHRvIGBuYCBhcmd1bWVudHMsXG4gICAgICAgICAqIGlnbm9yaW5nIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW249ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBjYXAuXG4gICAgICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy5hcnkocGFyc2VJbnQsIDEpKTtcbiAgICAgICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAgICAgKi9mdW5jdGlvbiBhcnkoZnVuYyxuLGd1YXJkKXtuPWd1YXJkP3VuZGVmaW5lZDpuO249ZnVuYyYmbj09bnVsbD9mdW5jLmxlbmd0aDpuO3JldHVybiBjcmVhdGVXcmFwKGZ1bmMsV1JBUF9BUllfRkxBRyx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsbik7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50c1xuICAgICAgICAgKiBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hpbGUgaXQncyBjYWxsZWQgbGVzcyB0aGFuIGBuYCB0aW1lcy4gU3Vic2VxdWVudFxuICAgICAgICAgKiBjYWxscyB0byB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYXQgd2hpY2ggYGZ1bmNgIGlzIG5vIGxvbmdlciBpbnZva2VkLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uYmVmb3JlKDUsIGFkZENvbnRhY3RUb0xpc3QpKTtcbiAgICAgICAgICogLy8gPT4gQWxsb3dzIGFkZGluZyB1cCB0byA0IGNvbnRhY3RzIHRvIHRoZSBsaXN0LlxuICAgICAgICAgKi9mdW5jdGlvbiBiZWZvcmUobixmdW5jKXt2YXIgcmVzdWx0O2lmKHR5cGVvZiBmdW5jIT09J2Z1bmN0aW9uJyl7dGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO31uPXRvSW50ZWdlcihuKTtyZXR1cm4gZnVuY3Rpb24oKXtpZigtLW4+MCl7cmVzdWx0PWZ1bmMuYXBwbHkodGhpcyxhcmd1bWVudHMpO31pZihuPD0xKXtmdW5jPXVuZGVmaW5lZDt9cmV0dXJuIHJlc3VsdDt9O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgXG4gICAgICAgICAqIGFuZCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGUgYF8uYmluZC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgICAgICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVW5saWtlIG5hdGl2ZSBgRnVuY3Rpb24jYmluZGAsIHRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiXG4gICAgICAgICAqIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGJpbmQuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBvYmplY3QgPSB7ICd1c2VyJzogJ2ZyZWQnIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCAnaGknKTtcbiAgICAgICAgICogYm91bmQoJyEnKTtcbiAgICAgICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBCb3VuZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsIF8sICchJyk7XG4gICAgICAgICAqIGJvdW5kKCdoaScpO1xuICAgICAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICAgICAqL3ZhciBiaW5kPWJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsdGhpc0FyZyxwYXJ0aWFscyl7dmFyIGJpdG1hc2s9V1JBUF9CSU5EX0ZMQUc7aWYocGFydGlhbHMubGVuZ3RoKXt2YXIgaG9sZGVycz1yZXBsYWNlSG9sZGVycyhwYXJ0aWFscyxnZXRIb2xkZXIoYmluZCkpO2JpdG1hc2t8PVdSQVBfUEFSVElBTF9GTEFHO31yZXR1cm4gY3JlYXRlV3JhcChmdW5jLGJpdG1hc2ssdGhpc0FyZyxwYXJ0aWFscyxob2xkZXJzKTt9KTsvKipcbiAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgb2JqZWN0W2tleV1gIHdpdGggYHBhcnRpYWxzYFxuICAgICAgICogcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIGBfLmJpbmRgIGJ5IGFsbG93aW5nIGJvdW5kIGZ1bmN0aW9ucyB0byByZWZlcmVuY2VcbiAgICAgICAqIG1ldGhvZHMgdGhhdCBtYXkgYmUgcmVkZWZpbmVkIG9yIGRvbid0IHlldCBleGlzdC4gU2VlXG4gICAgICAgKiBbUGV0ZXIgTWljaGF1eCdzIGFydGljbGVdKGh0dHA6Ly9wZXRlci5taWNoYXV4LmNhL2FydGljbGVzL2xhenktZnVuY3Rpb24tZGVmaW5pdGlvbi1wYXR0ZXJuKVxuICAgICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAqXG4gICAgICAgKiBUaGUgYF8uYmluZEtleS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52b2tlIHRoZSBtZXRob2Qgb24uXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZC5cbiAgICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciBvYmplY3QgPSB7XG4gICAgICAgKiAgICd1c2VyJzogJ2ZyZWQnLFxuICAgICAgICogICAnZ3JlZXQnOiBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgICAqICAgICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgICAqICAgfVxuICAgICAgICogfTtcbiAgICAgICAqXG4gICAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmRLZXkob2JqZWN0LCAnZ3JlZXQnLCAnaGknKTtcbiAgICAgICAqIGJvdW5kKCchJyk7XG4gICAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICAgKlxuICAgICAgICogb2JqZWN0LmdyZWV0ID0gZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICAgKiAgIHJldHVybiBncmVldGluZyArICd5YSAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICAgKiB9O1xuICAgICAgICpcbiAgICAgICAqIGJvdW5kKCchJyk7XG4gICAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgICAqXG4gICAgICAgKiAvLyBCb3VuZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsIF8sICchJyk7XG4gICAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAgICovdmFyIGJpbmRLZXk9YmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LGtleSxwYXJ0aWFscyl7dmFyIGJpdG1hc2s9V1JBUF9CSU5EX0ZMQUd8V1JBUF9CSU5EX0tFWV9GTEFHO2lmKHBhcnRpYWxzLmxlbmd0aCl7dmFyIGhvbGRlcnM9cmVwbGFjZUhvbGRlcnMocGFydGlhbHMsZ2V0SG9sZGVyKGJpbmRLZXkpKTtiaXRtYXNrfD1XUkFQX1BBUlRJQUxfRkxBRzt9cmV0dXJuIGNyZWF0ZVdyYXAoa2V5LGJpdG1hc2ssb2JqZWN0LHBhcnRpYWxzLGhvbGRlcnMpO30pOy8qKlxuICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhcmd1bWVudHMgb2YgYGZ1bmNgIGFuZCBlaXRoZXIgaW52b2tlc1xuICAgICAgICogYGZ1bmNgIHJldHVybmluZyBpdHMgcmVzdWx0LCBpZiBhdCBsZWFzdCBgYXJpdHlgIG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZVxuICAgICAgICogYmVlbiBwcm92aWRlZCwgb3IgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcmVtYWluaW5nIGBmdW5jYFxuICAgICAgICogYXJndW1lbnRzLCBhbmQgc28gb24uIFRoZSBhcml0eSBvZiBgZnVuY2AgbWF5IGJlIHNwZWNpZmllZCBpZiBgZnVuYy5sZW5ndGhgXG4gICAgICAgKiBpcyBub3Qgc3VmZmljaWVudC5cbiAgICAgICAqXG4gICAgICAgKiBUaGUgYF8uY3VycnkucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpYyBidWlsZHMsXG4gICAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICAgKlxuICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGN1cnJpZWQgZnVuY3Rpb25zLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gICAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciBhYmMgPSBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICAgKiB9O1xuICAgICAgICpcbiAgICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeShhYmMpO1xuICAgICAgICpcbiAgICAgICAqIGN1cnJpZWQoMSkoMikoMyk7XG4gICAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgICAqXG4gICAgICAgKiBjdXJyaWVkKDEsIDIpKDMpO1xuICAgICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICAgKlxuICAgICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAgICpcbiAgICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICAgKiBjdXJyaWVkKDEpKF8sIDMpKDIpO1xuICAgICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICAgKi9mdW5jdGlvbiBjdXJyeShmdW5jLGFyaXR5LGd1YXJkKXthcml0eT1ndWFyZD91bmRlZmluZWQ6YXJpdHk7dmFyIHJlc3VsdD1jcmVhdGVXcmFwKGZ1bmMsV1JBUF9DVVJSWV9GTEFHLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsYXJpdHkpO3Jlc3VsdC5wbGFjZWhvbGRlcj1jdXJyeS5wbGFjZWhvbGRlcjtyZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jdXJyeWAgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFyZSBhcHBsaWVkIHRvIGBmdW5jYFxuICAgICAgICAgKiBpbiB0aGUgbWFubmVyIG9mIGBfLnBhcnRpYWxSaWdodGAgaW5zdGVhZCBvZiBgXy5wYXJ0aWFsYC5cbiAgICAgICAgICpcbiAgICAgICAgICogVGhlIGBfLmN1cnJ5UmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGN1cnJpZWQgZnVuY3Rpb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBhYmMgPSBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgICAgICogfTtcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5UmlnaHQoYWJjKTtcbiAgICAgICAgICpcbiAgICAgICAgICogY3VycmllZCgzKSgyKSgxKTtcbiAgICAgICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICAgICAqXG4gICAgICAgICAqIGN1cnJpZWQoMiwgMykoMSk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAgICAgKlxuICAgICAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgICAgICogY3VycmllZCgzKSgxLCBfKSgyKTtcbiAgICAgICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICAgICAqL2Z1bmN0aW9uIGN1cnJ5UmlnaHQoZnVuYyxhcml0eSxndWFyZCl7YXJpdHk9Z3VhcmQ/dW5kZWZpbmVkOmFyaXR5O3ZhciByZXN1bHQ9Y3JlYXRlV3JhcChmdW5jLFdSQVBfQ1VSUllfUklHSFRfRkxBRyx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLGFyaXR5KTtyZXN1bHQucGxhY2Vob2xkZXI9Y3VycnlSaWdodC5wbGFjZWhvbGRlcjtyZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICAgICAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICAgICAgICAgKiBpbnZva2VkLiBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYCBtZXRob2QgdG8gY2FuY2VsXG4gICAgICAgICAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICAgICAgICAgKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAgICAgICAgICogbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZFxuICAgICAgICAgKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gICAgICAgICAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gICAgICAgICAqIGludm9jYXRpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgICAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb25cbiAgICAgICAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICAgICAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICAgICAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gICAgICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XVxuICAgICAgICAgKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAgICAgICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAgICAgICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gICAgICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAgICAgICAgICogICAnbGVhZGluZyc6IHRydWUsXG4gICAgICAgICAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAgICAgICAgICogfSkpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICAgICAgICAgKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAgICAgICAgICogdmFyIHNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZSgnL3N0cmVhbScpO1xuICAgICAgICAgKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgZGVib3VuY2VkIGludm9jYXRpb24uXG4gICAgICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICAgICAgICAgKi9mdW5jdGlvbiBkZWJvdW5jZShmdW5jLHdhaXQsb3B0aW9ucyl7dmFyIGxhc3RBcmdzLGxhc3RUaGlzLG1heFdhaXQscmVzdWx0LHRpbWVySWQsbGFzdENhbGxUaW1lLGxhc3RJbnZva2VUaW1lPTAsbGVhZGluZz1mYWxzZSxtYXhpbmc9ZmFsc2UsdHJhaWxpbmc9dHJ1ZTtpZih0eXBlb2YgZnVuYyE9PSdmdW5jdGlvbicpe3Rocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTt9d2FpdD10b051bWJlcih3YWl0KXx8MDtpZihpc09iamVjdChvcHRpb25zKSl7bGVhZGluZz0hIW9wdGlvbnMubGVhZGluZzttYXhpbmc9J21heFdhaXQnaW4gb3B0aW9uczttYXhXYWl0PW1heGluZz9uYXRpdmVNYXgodG9OdW1iZXIob3B0aW9ucy5tYXhXYWl0KXx8MCx3YWl0KTptYXhXYWl0O3RyYWlsaW5nPSd0cmFpbGluZydpbiBvcHRpb25zPyEhb3B0aW9ucy50cmFpbGluZzp0cmFpbGluZzt9ZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKXt2YXIgYXJncz1sYXN0QXJncyx0aGlzQXJnPWxhc3RUaGlzO2xhc3RBcmdzPWxhc3RUaGlzPXVuZGVmaW5lZDtsYXN0SW52b2tlVGltZT10aW1lO3Jlc3VsdD1mdW5jLmFwcGx5KHRoaXNBcmcsYXJncyk7cmV0dXJuIHJlc3VsdDt9ZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSl7Ly8gUmVzZXQgYW55IGBtYXhXYWl0YCB0aW1lci5cbmxhc3RJbnZva2VUaW1lPXRpbWU7Ly8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbnRpbWVySWQ9c2V0VGltZW91dCh0aW1lckV4cGlyZWQsd2FpdCk7Ly8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG5yZXR1cm4gbGVhZGluZz9pbnZva2VGdW5jKHRpbWUpOnJlc3VsdDt9ZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKXt2YXIgdGltZVNpbmNlTGFzdENhbGw9dGltZS1sYXN0Q2FsbFRpbWUsdGltZVNpbmNlTGFzdEludm9rZT10aW1lLWxhc3RJbnZva2VUaW1lLHRpbWVXYWl0aW5nPXdhaXQtdGltZVNpbmNlTGFzdENhbGw7cmV0dXJuIG1heGluZz9uYXRpdmVNaW4odGltZVdhaXRpbmcsbWF4V2FpdC10aW1lU2luY2VMYXN0SW52b2tlKTp0aW1lV2FpdGluZzt9ZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpe3ZhciB0aW1lU2luY2VMYXN0Q2FsbD10aW1lLWxhc3RDYWxsVGltZSx0aW1lU2luY2VMYXN0SW52b2tlPXRpbWUtbGFzdEludm9rZVRpbWU7Ly8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbi8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4vLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG5yZXR1cm4gbGFzdENhbGxUaW1lPT09dW5kZWZpbmVkfHx0aW1lU2luY2VMYXN0Q2FsbD49d2FpdHx8dGltZVNpbmNlTGFzdENhbGw8MHx8bWF4aW5nJiZ0aW1lU2luY2VMYXN0SW52b2tlPj1tYXhXYWl0O31mdW5jdGlvbiB0aW1lckV4cGlyZWQoKXt2YXIgdGltZT1ub3coKTtpZihzaG91bGRJbnZva2UodGltZSkpe3JldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7fS8vIFJlc3RhcnQgdGhlIHRpbWVyLlxudGltZXJJZD1zZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCxyZW1haW5pbmdXYWl0KHRpbWUpKTt9ZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpe3RpbWVySWQ9dW5kZWZpbmVkOy8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbi8vIGRlYm91bmNlZCBhdCBsZWFzdCBvbmNlLlxuaWYodHJhaWxpbmcmJmxhc3RBcmdzKXtyZXR1cm4gaW52b2tlRnVuYyh0aW1lKTt9bGFzdEFyZ3M9bGFzdFRoaXM9dW5kZWZpbmVkO3JldHVybiByZXN1bHQ7fWZ1bmN0aW9uIGNhbmNlbCgpe2lmKHRpbWVySWQhPT11bmRlZmluZWQpe2NsZWFyVGltZW91dCh0aW1lcklkKTt9bGFzdEludm9rZVRpbWU9MDtsYXN0QXJncz1sYXN0Q2FsbFRpbWU9bGFzdFRoaXM9dGltZXJJZD11bmRlZmluZWQ7fWZ1bmN0aW9uIGZsdXNoKCl7cmV0dXJuIHRpbWVySWQ9PT11bmRlZmluZWQ/cmVzdWx0OnRyYWlsaW5nRWRnZShub3coKSk7fWZ1bmN0aW9uIGRlYm91bmNlZCgpe3ZhciB0aW1lPW5vdygpLGlzSW52b2tpbmc9c2hvdWxkSW52b2tlKHRpbWUpO2xhc3RBcmdzPWFyZ3VtZW50cztsYXN0VGhpcz10aGlzO2xhc3RDYWxsVGltZT10aW1lO2lmKGlzSW52b2tpbmcpe2lmKHRpbWVySWQ9PT11bmRlZmluZWQpe3JldHVybiBsZWFkaW5nRWRnZShsYXN0Q2FsbFRpbWUpO31pZihtYXhpbmcpey8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG50aW1lcklkPXNldFRpbWVvdXQodGltZXJFeHBpcmVkLHdhaXQpO3JldHVybiBpbnZva2VGdW5jKGxhc3RDYWxsVGltZSk7fX1pZih0aW1lcklkPT09dW5kZWZpbmVkKXt0aW1lcklkPXNldFRpbWVvdXQodGltZXJFeHBpcmVkLHdhaXQpO31yZXR1cm4gcmVzdWx0O31kZWJvdW5jZWQuY2FuY2VsPWNhbmNlbDtkZWJvdW5jZWQuZmx1c2g9Zmx1c2g7cmV0dXJuIGRlYm91bmNlZDt9LyoqXG4gICAgICAgICAqIERlZmVycyBpbnZva2luZyB0aGUgYGZ1bmNgIHVudGlsIHRoZSBjdXJyZW50IGNhbGwgc3RhY2sgaGFzIGNsZWFyZWQuIEFueVxuICAgICAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVmZXIuXG4gICAgICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lciBpZC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5kZWZlcihmdW5jdGlvbih0ZXh0KSB7XG4gICAgICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICAgICAqIH0sICdkZWZlcnJlZCcpO1xuICAgICAgICAgKiAvLyA9PiBMb2dzICdkZWZlcnJlZCcgYWZ0ZXIgb25lIG1pbGxpc2Vjb25kLlxuICAgICAgICAgKi92YXIgZGVmZXI9YmFzZVJlc3QoZnVuY3Rpb24oZnVuYyxhcmdzKXtyZXR1cm4gYmFzZURlbGF5KGZ1bmMsMSxhcmdzKTt9KTsvKipcbiAgICAgICAqIEludm9rZXMgYGZ1bmNgIGFmdGVyIGB3YWl0YCBtaWxsaXNlY29uZHMuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmVcbiAgICAgICAqIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8uZGVsYXkoZnVuY3Rpb24odGV4dCkge1xuICAgICAgICogICBjb25zb2xlLmxvZyh0ZXh0KTtcbiAgICAgICAqIH0sIDEwMDAsICdsYXRlcicpO1xuICAgICAgICogLy8gPT4gTG9ncyAnbGF0ZXInIGFmdGVyIG9uZSBzZWNvbmQuXG4gICAgICAgKi92YXIgZGVsYXk9YmFzZVJlc3QoZnVuY3Rpb24oZnVuYyx3YWl0LGFyZ3Mpe3JldHVybiBiYXNlRGVsYXkoZnVuYyx0b051bWJlcih3YWl0KXx8MCxhcmdzKTt9KTsvKipcbiAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIHJldmVyc2VkLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZmxpcCBhcmd1bWVudHMgZm9yLlxuICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmxpcHBlZCBmdW5jdGlvbi5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogdmFyIGZsaXBwZWQgPSBfLmZsaXAoZnVuY3Rpb24oKSB7XG4gICAgICAgKiAgIHJldHVybiBfLnRvQXJyYXkoYXJndW1lbnRzKTtcbiAgICAgICAqIH0pO1xuICAgICAgICpcbiAgICAgICAqIGZsaXBwZWQoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgICAqIC8vID0+IFsnZCcsICdjJywgJ2InLCAnYSddXG4gICAgICAgKi9mdW5jdGlvbiBmbGlwKGZ1bmMpe3JldHVybiBjcmVhdGVXcmFwKGZ1bmMsV1JBUF9GTElQX0ZMQUcpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAgICAgICAgICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICAgICAgICAgKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAgICAgICAgICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAgICAgICAgICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAgICAgICAgICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gICAgICAgICAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gICAgICAgICAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gICAgICAgICAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGNsZWFyYCwgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAgICAgKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICAgICAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgICAgICogLy8gPT4gWzEsIDJdXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhbHVlcyhvdGhlcik7XG4gICAgICAgICAqIC8vID0+IFszLCA0XVxuICAgICAgICAgKlxuICAgICAgICAgKiBvYmplY3QuYSA9IDI7XG4gICAgICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gICAgICAgICAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAgICAgICAgICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAgICAgICAgICovZnVuY3Rpb24gbWVtb2l6ZShmdW5jLHJlc29sdmVyKXtpZih0eXBlb2YgZnVuYyE9PSdmdW5jdGlvbid8fHJlc29sdmVyIT1udWxsJiZ0eXBlb2YgcmVzb2x2ZXIhPT0nZnVuY3Rpb24nKXt0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7fXZhciBtZW1vaXplZD1mdW5jdGlvbiBtZW1vaXplZCgpe3ZhciBhcmdzPWFyZ3VtZW50cyxrZXk9cmVzb2x2ZXI/cmVzb2x2ZXIuYXBwbHkodGhpcyxhcmdzKTphcmdzWzBdLGNhY2hlPW1lbW9pemVkLmNhY2hlO2lmKGNhY2hlLmhhcyhrZXkpKXtyZXR1cm4gY2FjaGUuZ2V0KGtleSk7fXZhciByZXN1bHQ9ZnVuYy5hcHBseSh0aGlzLGFyZ3MpO21lbW9pemVkLmNhY2hlPWNhY2hlLnNldChrZXkscmVzdWx0KXx8Y2FjaGU7cmV0dXJuIHJlc3VsdDt9O21lbW9pemVkLmNhY2hlPW5ldyhtZW1vaXplLkNhY2hlfHxNYXBDYWNoZSkoKTtyZXR1cm4gbWVtb2l6ZWQ7fS8vIEV4cG9zZSBgTWFwQ2FjaGVgLlxubWVtb2l6ZS5DYWNoZT1NYXBDYWNoZTsvKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbmVnYXRlcyB0aGUgcmVzdWx0IG9mIHRoZSBwcmVkaWNhdGUgYGZ1bmNgLiBUaGVcbiAgICAgICAgICogYGZ1bmNgIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlXG4gICAgICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIHByZWRpY2F0ZSB0byBuZWdhdGUuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG5lZ2F0ZWQgZnVuY3Rpb24uXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIGlzRXZlbihuKSB7XG4gICAgICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogXy5maWx0ZXIoWzEsIDIsIDMsIDQsIDUsIDZdLCBfLm5lZ2F0ZShpc0V2ZW4pKTtcbiAgICAgICAgICogLy8gPT4gWzEsIDMsIDVdXG4gICAgICAgICAqL2Z1bmN0aW9uIG5lZ2F0ZShwcmVkaWNhdGUpe2lmKHR5cGVvZiBwcmVkaWNhdGUhPT0nZnVuY3Rpb24nKXt0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7fXJldHVybiBmdW5jdGlvbigpe3ZhciBhcmdzPWFyZ3VtZW50cztzd2l0Y2goYXJncy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hcHJlZGljYXRlLmNhbGwodGhpcyk7Y2FzZSAxOnJldHVybiFwcmVkaWNhdGUuY2FsbCh0aGlzLGFyZ3NbMF0pO2Nhc2UgMjpyZXR1cm4hcHJlZGljYXRlLmNhbGwodGhpcyxhcmdzWzBdLGFyZ3NbMV0pO2Nhc2UgMzpyZXR1cm4hcHJlZGljYXRlLmNhbGwodGhpcyxhcmdzWzBdLGFyZ3NbMV0sYXJnc1syXSk7fXJldHVybiFwcmVkaWNhdGUuYXBwbHkodGhpcyxhcmdzKTt9O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaXMgcmVzdHJpY3RlZCB0byBpbnZva2luZyBgZnVuY2Agb25jZS4gUmVwZWF0IGNhbGxzXG4gICAgICAgICAqIHRvIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBpbnZvY2F0aW9uLiBUaGUgYGZ1bmNgIGlzXG4gICAgICAgICAqIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50cyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgaW5pdGlhbGl6ZSA9IF8ub25jZShjcmVhdGVBcHBsaWNhdGlvbik7XG4gICAgICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgICAgICogaW5pdGlhbGl6ZSgpO1xuICAgICAgICAgKiAvLyA9PiBgY3JlYXRlQXBwbGljYXRpb25gIGlzIGludm9rZWQgb25jZVxuICAgICAgICAgKi9mdW5jdGlvbiBvbmNlKGZ1bmMpe3JldHVybiBiZWZvcmUoMixmdW5jKTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50cyB0cmFuc2Zvcm1lZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbdHJhbnNmb3Jtcz1bXy5pZGVudGl0eV1dXG4gICAgICAgICAqICBUaGUgYXJndW1lbnQgdHJhbnNmb3Jtcy5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIGRvdWJsZWQobikge1xuICAgICAgICAgKiAgIHJldHVybiBuICogMjtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlckFyZ3MoZnVuY3Rpb24oeCwgeSkge1xuICAgICAgICAgKiAgIHJldHVybiBbeCwgeV07XG4gICAgICAgICAqIH0sIFtzcXVhcmUsIGRvdWJsZWRdKTtcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuYyg5LCAzKTtcbiAgICAgICAgICogLy8gPT4gWzgxLCA2XVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jKDEwLCA1KTtcbiAgICAgICAgICogLy8gPT4gWzEwMCwgMTBdXG4gICAgICAgICAqL3ZhciBvdmVyQXJncz1jYXN0UmVzdChmdW5jdGlvbihmdW5jLHRyYW5zZm9ybXMpe3RyYW5zZm9ybXM9dHJhbnNmb3Jtcy5sZW5ndGg9PTEmJmlzQXJyYXkodHJhbnNmb3Jtc1swXSk/YXJyYXlNYXAodHJhbnNmb3Jtc1swXSxiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpOmFycmF5TWFwKGJhc2VGbGF0dGVuKHRyYW5zZm9ybXMsMSksYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTt2YXIgZnVuY3NMZW5ndGg9dHJhbnNmb3Jtcy5sZW5ndGg7cmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3Mpe3ZhciBpbmRleD0tMSxsZW5ndGg9bmF0aXZlTWluKGFyZ3MubGVuZ3RoLGZ1bmNzTGVuZ3RoKTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7YXJnc1tpbmRleF09dHJhbnNmb3Jtc1tpbmRleF0uY2FsbCh0aGlzLGFyZ3NbaW5kZXhdKTt9cmV0dXJuIGFwcGx5KGZ1bmMsdGhpcyxhcmdzKTt9KTt9KTsvKipcbiAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlXG4gICAgICAgKiBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYmluZGAgZXhjZXB0IGl0IGRvZXMgKipub3QqKlxuICAgICAgICogYWx0ZXIgdGhlIGB0aGlzYCBiaW5kaW5nLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAgICpcbiAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgICAqIGFwcGxpZWQgZnVuY3Rpb25zLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMC4yLjBcbiAgICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAgICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIG5hbWU7XG4gICAgICAgKiB9XG4gICAgICAgKlxuICAgICAgICogdmFyIHNheUhlbGxvVG8gPSBfLnBhcnRpYWwoZ3JlZXQsICdoZWxsbycpO1xuICAgICAgICogc2F5SGVsbG9UbygnZnJlZCcpO1xuICAgICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICAgKlxuICAgICAgICogLy8gUGFydGlhbGx5IGFwcGxpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsKGdyZWV0LCBfLCAnZnJlZCcpO1xuICAgICAgICogZ3JlZXRGcmVkKCdoaScpO1xuICAgICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICAgKi92YXIgcGFydGlhbD1iYXNlUmVzdChmdW5jdGlvbihmdW5jLHBhcnRpYWxzKXt2YXIgaG9sZGVycz1yZXBsYWNlSG9sZGVycyhwYXJ0aWFscyxnZXRIb2xkZXIocGFydGlhbCkpO3JldHVybiBjcmVhdGVXcmFwKGZ1bmMsV1JBUF9QQVJUSUFMX0ZMQUcsdW5kZWZpbmVkLHBhcnRpYWxzLGhvbGRlcnMpO30pOy8qKlxuICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wYXJ0aWFsYCBleGNlcHQgdGhhdCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHNcbiAgICAgICAqIGFyZSBhcHBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBgXy5wYXJ0aWFsUmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICAgKlxuICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIHBhcnRpYWxseVxuICAgICAgICogYXBwbGllZCBmdW5jdGlvbnMuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkgYXJndW1lbnRzIHRvLlxuICAgICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXJ0aWFsbHkgYXBwbGllZCBmdW5jdGlvbi5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIG5hbWUpIHtcbiAgICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgbmFtZTtcbiAgICAgICAqIH1cbiAgICAgICAqXG4gICAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdmcmVkJyk7XG4gICAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgICAqXG4gICAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdoZWxsbycsIF8pO1xuICAgICAgICogc2F5SGVsbG9UbygnZnJlZCcpO1xuICAgICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICAgKi92YXIgcGFydGlhbFJpZ2h0PWJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMscGFydGlhbHMpe3ZhciBob2xkZXJzPXJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLGdldEhvbGRlcihwYXJ0aWFsUmlnaHQpKTtyZXR1cm4gY3JlYXRlV3JhcChmdW5jLFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHLHVuZGVmaW5lZCxwYXJ0aWFscyxob2xkZXJzKTt9KTsvKipcbiAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIGFycmFuZ2VkIGFjY29yZGluZ1xuICAgICAgICogdG8gdGhlIHNwZWNpZmllZCBgaW5kZXhlc2Agd2hlcmUgdGhlIGFyZ3VtZW50IHZhbHVlIGF0IHRoZSBmaXJzdCBpbmRleCBpc1xuICAgICAgICogcHJvdmlkZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIHNlY29uZCBpbmRleCBpc1xuICAgICAgICogcHJvdmlkZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgYW5kIHNvIG9uLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVhcnJhbmdlIGFyZ3VtZW50cyBmb3IuXG4gICAgICAgKiBAcGFyYW0gey4uLihudW1iZXJ8bnVtYmVyW10pfSBpbmRleGVzIFRoZSBhcnJhbmdlZCBhcmd1bWVudCBpbmRleGVzLlxuICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciByZWFyZ2VkID0gXy5yZWFyZyhmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICAgKiB9LCBbMiwgMCwgMV0pO1xuICAgICAgICpcbiAgICAgICAqIHJlYXJnZWQoJ2InLCAnYycsICdhJylcbiAgICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAgICovdmFyIHJlYXJnPWZsYXRSZXN0KGZ1bmN0aW9uKGZ1bmMsaW5kZXhlcyl7cmV0dXJuIGNyZWF0ZVdyYXAoZnVuYyxXUkFQX1JFQVJHX0ZMQUcsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsaW5kZXhlcyk7fSk7LyoqXG4gICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAgICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBmcm9tIGBzdGFydGAgYW5kIGJleW9uZCBwcm92aWRlZCBhc1xuICAgICAgICogYW4gYXJyYXkuXG4gICAgICAgKlxuICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZVxuICAgICAgICogW3Jlc3QgcGFyYW1ldGVyXShodHRwczovL21kbi5pby9yZXN0X3BhcmFtZXRlcnMpLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiB2YXIgc2F5ID0gXy5yZXN0KGZ1bmN0aW9uKHdoYXQsIG5hbWVzKSB7XG4gICAgICAgKiAgIHJldHVybiB3aGF0ICsgJyAnICsgXy5pbml0aWFsKG5hbWVzKS5qb2luKCcsICcpICtcbiAgICAgICAqICAgICAoXy5zaXplKG5hbWVzKSA+IDEgPyAnLCAmICcgOiAnJykgKyBfLmxhc3QobmFtZXMpO1xuICAgICAgICogfSk7XG4gICAgICAgKlxuICAgICAgICogc2F5KCdoZWxsbycsICdmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJyk7XG4gICAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICAgKi9mdW5jdGlvbiByZXN0KGZ1bmMsc3RhcnQpe2lmKHR5cGVvZiBmdW5jIT09J2Z1bmN0aW9uJyl7dGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO31zdGFydD1zdGFydD09PXVuZGVmaW5lZD9zdGFydDp0b0ludGVnZXIoc3RhcnQpO3JldHVybiBiYXNlUmVzdChmdW5jLHN0YXJ0KTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAgICAgKiBjcmVhdGUgZnVuY3Rpb24gYW5kIGFuIGFycmF5IG9mIGFyZ3VtZW50cyBtdWNoIGxpa2VcbiAgICAgICAgICogW2BGdW5jdGlvbiNhcHBseWBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1mdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkpLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICAgICAqIFtzcHJlYWQgb3BlcmF0b3JdKGh0dHBzOi8vbWRuLmlvL3NwcmVhZF9vcGVyYXRvcikuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMi4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBzcHJlYWQgYXJndW1lbnRzIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBzcHJlYWQuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgc2F5ID0gXy5zcHJlYWQoZnVuY3Rpb24od2hvLCB3aGF0KSB7XG4gICAgICAgICAqICAgcmV0dXJuIHdobyArICcgc2F5cyAnICsgd2hhdDtcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqXG4gICAgICAgICAqIHNheShbJ2ZyZWQnLCAnaGVsbG8nXSk7XG4gICAgICAgICAqIC8vID0+ICdmcmVkIHNheXMgaGVsbG8nXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBudW1iZXJzID0gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgKiAgIFByb21pc2UucmVzb2x2ZSg0MCksXG4gICAgICAgICAqICAgUHJvbWlzZS5yZXNvbHZlKDM2KVxuICAgICAgICAgKiBdKTtcbiAgICAgICAgICpcbiAgICAgICAgICogbnVtYmVycy50aGVuKF8uc3ByZWFkKGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgICAgICogICByZXR1cm4geCArIHk7XG4gICAgICAgICAqIH0pKTtcbiAgICAgICAgICogLy8gPT4gYSBQcm9taXNlIG9mIDc2XG4gICAgICAgICAqL2Z1bmN0aW9uIHNwcmVhZChmdW5jLHN0YXJ0KXtpZih0eXBlb2YgZnVuYyE9PSdmdW5jdGlvbicpe3Rocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTt9c3RhcnQ9c3RhcnQ9PW51bGw/MDpuYXRpdmVNYXgodG9JbnRlZ2VyKHN0YXJ0KSwwKTtyZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncyl7dmFyIGFycmF5PWFyZ3Nbc3RhcnRdLG90aGVyQXJncz1jYXN0U2xpY2UoYXJncywwLHN0YXJ0KTtpZihhcnJheSl7YXJyYXlQdXNoKG90aGVyQXJncyxhcnJheSk7fXJldHVybiBhcHBseShmdW5jLHRoaXMsb3RoZXJBcmdzKTt9KTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSB0aHJvdHRsZWQgZnVuY3Rpb24gdGhhdCBvbmx5IGludm9rZXMgYGZ1bmNgIGF0IG1vc3Qgb25jZSBwZXJcbiAgICAgICAgICogZXZlcnkgYHdhaXRgIG1pbGxpc2Vjb25kcy4gVGhlIHRocm90dGxlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGBcbiAgICAgICAgICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICAgICAgICAgKiBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS4gUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2BcbiAgICAgICAgICogc2hvdWxkIGJlIGludm9rZWQgb24gdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YFxuICAgICAgICAgKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gICAgICAgICAqIHRocm90dGxlZCBmdW5jdGlvbi4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHJldHVybiB0aGVcbiAgICAgICAgICogcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYCBpbnZvY2F0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gICAgICAgICAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uXG4gICAgICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gICAgICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgICAgICpcbiAgICAgICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gICAgICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRocm90dGxlIGludm9jYXRpb25zIHRvLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gICAgICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAgICAgICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gQXZvaWQgZXhjZXNzaXZlbHkgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHdoaWxlIHNjcm9sbGluZy5cbiAgICAgICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Njcm9sbCcsIF8udGhyb3R0bGUodXBkYXRlUG9zaXRpb24sIDEwMCkpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBJbnZva2UgYHJlbmV3VG9rZW5gIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBidXQgbm90IG1vcmUgdGhhbiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAgICAgICAgICogdmFyIHRocm90dGxlZCA9IF8udGhyb3R0bGUocmVuZXdUb2tlbiwgMzAwMDAwLCB7ICd0cmFpbGluZyc6IGZhbHNlIH0pO1xuICAgICAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyB0aHJvdHRsZWQgaW52b2NhdGlvbi5cbiAgICAgICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gICAgICAgICAqL2Z1bmN0aW9uIHRocm90dGxlKGZ1bmMsd2FpdCxvcHRpb25zKXt2YXIgbGVhZGluZz10cnVlLHRyYWlsaW5nPXRydWU7aWYodHlwZW9mIGZ1bmMhPT0nZnVuY3Rpb24nKXt0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7fWlmKGlzT2JqZWN0KG9wdGlvbnMpKXtsZWFkaW5nPSdsZWFkaW5nJ2luIG9wdGlvbnM/ISFvcHRpb25zLmxlYWRpbmc6bGVhZGluZzt0cmFpbGluZz0ndHJhaWxpbmcnaW4gb3B0aW9ucz8hIW9wdGlvbnMudHJhaWxpbmc6dHJhaWxpbmc7fXJldHVybiBkZWJvdW5jZShmdW5jLHdhaXQse2xlYWRpbmc6bGVhZGluZyxtYXhXYWl0OndhaXQsdHJhaWxpbmc6dHJhaWxpbmd9KTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdXAgdG8gb25lIGFyZ3VtZW50LCBpZ25vcmluZyBhbnlcbiAgICAgICAgICogYWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLnVuYXJ5KHBhcnNlSW50KSk7XG4gICAgICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgICAgICovZnVuY3Rpb24gdW5hcnkoZnVuYyl7cmV0dXJuIGFyeShmdW5jLDEpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYHZhbHVlYCB0byBgd3JhcHBlcmAgYXMgaXRzIGZpcnN0XG4gICAgICAgICAqIGFyZ3VtZW50LiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGZ1bmN0aW9uIGFyZSBhcHBlbmRlZFxuICAgICAgICAgKiB0byB0aG9zZSBwcm92aWRlZCB0byB0aGUgYHdyYXBwZXJgLiBUaGUgd3JhcHBlciBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYFxuICAgICAgICAgKiBiaW5kaW5nIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3dyYXBwZXI9aWRlbnRpdHldIFRoZSB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIHAgPSBfLndyYXAoXy5lc2NhcGUsIGZ1bmN0aW9uKGZ1bmMsIHRleHQpIHtcbiAgICAgICAgICogICByZXR1cm4gJzxwPicgKyBmdW5jKHRleHQpICsgJzwvcD4nO1xuICAgICAgICAgKiB9KTtcbiAgICAgICAgICpcbiAgICAgICAgICogcCgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgICAgICogLy8gPT4gJzxwPmZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlczwvcD4nXG4gICAgICAgICAqL2Z1bmN0aW9uIHdyYXAodmFsdWUsd3JhcHBlcil7cmV0dXJuIHBhcnRpYWwoY2FzdEZ1bmN0aW9uKHdyYXBwZXIpLHZhbHVlKTt9LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKipcbiAgICAgICAgICogQ2FzdHMgYHZhbHVlYCBhcyBhbiBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuNC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5jYXN0QXJyYXkoMSk7XG4gICAgICAgICAqIC8vID0+IFsxXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmNhc3RBcnJheSh7ICdhJzogMSB9KTtcbiAgICAgICAgICogLy8gPT4gW3sgJ2EnOiAxIH1dXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uY2FzdEFycmF5KCdhYmMnKTtcbiAgICAgICAgICogLy8gPT4gWydhYmMnXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmNhc3RBcnJheShudWxsKTtcbiAgICAgICAgICogLy8gPT4gW251bGxdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uY2FzdEFycmF5KHVuZGVmaW5lZCk7XG4gICAgICAgICAqIC8vID0+IFt1bmRlZmluZWRdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uY2FzdEFycmF5KCk7XG4gICAgICAgICAqIC8vID0+IFtdXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgICAgICogY29uc29sZS5sb2coXy5jYXN0QXJyYXkoYXJyYXkpID09PSBhcnJheSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICovZnVuY3Rpb24gY2FzdEFycmF5KCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpe3JldHVybltdO312YXIgdmFsdWU9YXJndW1lbnRzWzBdO3JldHVybiBpc0FycmF5KHZhbHVlKT92YWx1ZTpbdmFsdWVdO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYHZhbHVlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gICAgICAgICAqIFtzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobV0oaHR0cHM6Ly9tZG4uaW8vU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG0pXG4gICAgICAgICAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAgICAgICAgICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gICAgICAgICAqIGFycmF5cy4gVGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYGFyZ3VtZW50c2Agb2JqZWN0cyBhcmUgY2xvbmVkXG4gICAgICAgICAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAgICAgICAgICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICAgICAqIEBzZWUgXy5jbG9uZURlZXBcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBzaGFsbG93ID0gXy5jbG9uZShvYmplY3RzKTtcbiAgICAgICAgICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICovZnVuY3Rpb24gY2xvbmUodmFsdWUpe3JldHVybiBiYXNlQ2xvbmUodmFsdWUsQ0xPTkVfU1lNQk9MU19GTEFHKTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICAgICAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgY2xvbmVkIHZhbHVlLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCxcbiAgICAgICAgICogY2xvbmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGhcbiAgICAgICAgICogdXAgdG8gZm91ciBhcmd1bWVudHM7ICh2YWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgc3RhY2tdKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICAgICAqIEBzZWUgXy5jbG9uZURlZXBXaXRoXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgICAgICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgICAgICAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKGZhbHNlKTtcbiAgICAgICAgICogICB9XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGVsID0gXy5jbG9uZVdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICAgICAgICAgKiAvLyA9PiAnQk9EWSdcbiAgICAgICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAgICAgKiAvLyA9PiAwXG4gICAgICAgICAqL2Z1bmN0aW9uIGNsb25lV2l0aCh2YWx1ZSxjdXN0b21pemVyKXtjdXN0b21pemVyPXR5cGVvZiBjdXN0b21pemVyPT09J2Z1bmN0aW9uJz9jdXN0b21pemVyOnVuZGVmaW5lZDtyZXR1cm4gYmFzZUNsb25lKHZhbHVlLENMT05FX1NZTUJPTFNfRkxBRyxjdXN0b21pemVyKTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAgICAgKiBAc2VlIF8uY2xvbmVcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gICAgICAgICAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpe3JldHVybiBiYXNlQ2xvbmUodmFsdWUsQ0xPTkVfREVFUF9GTEFHfENMT05FX1NZTUJPTFNfRkxBRyk7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lV2l0aGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICAgICAqIEBzZWUgXy5jbG9uZVdpdGhcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICAgICAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgICAgICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAqICAgfVxuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBlbCA9IF8uY2xvbmVEZWVwV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAgICAgICAgICpcbiAgICAgICAgICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICAgICAqIC8vID0+ICdCT0RZJ1xuICAgICAgICAgKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICAgICAqIC8vID0+IDIwXG4gICAgICAgICAqL2Z1bmN0aW9uIGNsb25lRGVlcFdpdGgodmFsdWUsY3VzdG9taXplcil7Y3VzdG9taXplcj10eXBlb2YgY3VzdG9taXplcj09PSdmdW5jdGlvbic/Y3VzdG9taXplcjp1bmRlZmluZWQ7cmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSxDTE9ORV9ERUVQX0ZMQUd8Q0xPTkVfU1lNQk9MU19GTEFHLGN1c3RvbWl6ZXIpO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGBvYmplY3RgIGNvbmZvcm1zIHRvIGBzb3VyY2VgIGJ5IGludm9raW5nIHRoZSBwcmVkaWNhdGVcbiAgICAgICAgICogcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMTQuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDI7IH0gfSk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGNvbmZvcm1zVG8ob2JqZWN0LHNvdXJjZSl7cmV0dXJuIHNvdXJjZT09bnVsbHx8YmFzZUNvbmZvcm1zVG8ob2JqZWN0LHNvdXJjZSxrZXlzKHNvdXJjZSkpO30vKipcbiAgICAgICAgICogUGVyZm9ybXMgYVxuICAgICAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAgICAgKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZXEoJ2EnLCAnYScpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZXEoTmFOLCBOYU4pO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqL2Z1bmN0aW9uIGVxKHZhbHVlLG90aGVyKXtyZXR1cm4gdmFsdWU9PT1vdGhlcnx8dmFsdWUhPT12YWx1ZSYmb3RoZXIhPT1vdGhlcjt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQHNlZSBfLmx0XG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZ3QoMywgMSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5ndCgzLCAzKTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICpcbiAgICAgICAgICogXy5ndCgxLCAzKTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICovdmFyIGd0PWNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUd0KTsvKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuOS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1xuICAgICAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAc2VlIF8ubHRlXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZ3RlKDMsIDEpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZ3RlKDMsIDMpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZ3RlKDEsIDMpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi92YXIgZ3RlPWNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsb3RoZXIpe3JldHVybiB2YWx1ZT49b3RoZXI7fSk7LyoqXG4gICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgKlxuICAgICAgICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAqL3ZhciBpc0FyZ3VtZW50cz1iYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzO30oKSk/YmFzZUlzQXJndW1lbnRzOmZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwnY2FsbGVlJykmJiFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCdjYWxsZWUnKTt9Oy8qKlxuICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAqXG4gICAgICAgKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICpcbiAgICAgICAqIF8uaXNBcnJheSgnYWJjJyk7XG4gICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICpcbiAgICAgICAqIF8uaXNBcnJheShfLm5vb3ApO1xuICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAqL3ZhciBpc0FycmF5PUFycmF5LmlzQXJyYXk7LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5QnVmZmVyYCBvYmplY3QuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMy4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheUJ1ZmZlcigyKSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheSgyKSk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL3ZhciBpc0FycmF5QnVmZmVyPW5vZGVJc0FycmF5QnVmZmVyP2Jhc2VVbmFyeShub2RlSXNBcnJheUJ1ZmZlcik6YmFzZUlzQXJyYXlCdWZmZXI7LyoqXG4gICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gICAgICAgKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gICAgICAgKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICpcbiAgICAgICAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgKlxuICAgICAgICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgKlxuICAgICAgICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAqL2Z1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKXtyZXR1cm4gdmFsdWUhPW51bGwmJmlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkmJiFpc0Z1bmN0aW9uKHZhbHVlKTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAgICAgICAgICogaXMgYW4gb2JqZWN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gICAgICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmaXNBcnJheUxpa2UodmFsdWUpO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYm9vbGVhbiwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzQm9vbGVhbihmYWxzZSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0Jvb2xlYW4obnVsbCk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSl7cmV0dXJuIHZhbHVlPT09dHJ1ZXx8dmFsdWU9PT1mYWxzZXx8aXNPYmplY3RMaWtlKHZhbHVlKSYmYmFzZUdldFRhZyh2YWx1ZSk9PWJvb2xUYWc7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL3ZhciBpc0J1ZmZlcj1uYXRpdmVJc0J1ZmZlcnx8c3R1YkZhbHNlOy8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYERhdGVgIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0RhdGUobmV3IERhdGUpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNEYXRlKCdNb24gQXByaWwgMjMgMjAxMicpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi92YXIgaXNEYXRlPW5vZGVJc0RhdGU/YmFzZVVuYXJ5KG5vZGVJc0RhdGUpOmJhc2VJc0RhdGU7LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIERPTSBlbGVtZW50LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBET00gZWxlbWVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzRWxlbWVudChkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzRWxlbWVudCgnPGJvZHk+Jyk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSl7cmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkmJnZhbHVlLm5vZGVUeXBlPT09MSYmIWlzUGxhaW5PYmplY3QodmFsdWUpO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAgICAgICAgICpcbiAgICAgICAgICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gICAgICAgICAqIHByb3BlcnRpZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICAgICAgICAgKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gICAgICAgICAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0VtcHR5KG51bGwpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNFbXB0eSh0cnVlKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzRW1wdHkoMSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICovZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSl7aWYodmFsdWU9PW51bGwpe3JldHVybiB0cnVlO31pZihpc0FycmF5TGlrZSh2YWx1ZSkmJihpc0FycmF5KHZhbHVlKXx8dHlwZW9mIHZhbHVlPT09J3N0cmluZyd8fHR5cGVvZiB2YWx1ZS5zcGxpY2U9PT0nZnVuY3Rpb24nfHxpc0J1ZmZlcih2YWx1ZSl8fGlzVHlwZWRBcnJheSh2YWx1ZSl8fGlzQXJndW1lbnRzKHZhbHVlKSkpe3JldHVybiF2YWx1ZS5sZW5ndGg7fXZhciB0YWc9Z2V0VGFnKHZhbHVlKTtpZih0YWc9PW1hcFRhZ3x8dGFnPT1zZXRUYWcpe3JldHVybiF2YWx1ZS5zaXplO31pZihpc1Byb3RvdHlwZSh2YWx1ZSkpe3JldHVybiFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO31mb3IodmFyIGtleSBpbiB2YWx1ZSl7aWYoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSxrZXkpKXtyZXR1cm4gZmFsc2U7fX1yZXR1cm4gdHJ1ZTt9LyoqXG4gICAgICAgICAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAgICAgICAgICogZXF1aXZhbGVudC5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICAgICAgICAgKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gICAgICAgICAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gICAgICAgICAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICAgICAgICAgKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIG9iamVjdCA9PT0gb3RoZXI7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzRXF1YWwodmFsdWUsb3RoZXIpe3JldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSxvdGhlcik7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzRXF1YWxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICAgICAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gICAgICAgICAqIHNpeCBhcmd1bWVudHM6IChvYmpWYWx1ZSwgb3RoVmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIG90aGVyLCBzdGFja10pLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICAgICAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUpIHtcbiAgICAgICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAgICAgICAgICogICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgKiAgIH1cbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgYXJyYXkgPSBbJ2hlbGxvJywgJ2dvb2RieWUnXTtcbiAgICAgICAgICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc0VxdWFsV2l0aCh2YWx1ZSxvdGhlcixjdXN0b21pemVyKXtjdXN0b21pemVyPXR5cGVvZiBjdXN0b21pemVyPT09J2Z1bmN0aW9uJz9jdXN0b21pemVyOnVuZGVmaW5lZDt2YXIgcmVzdWx0PWN1c3RvbWl6ZXI/Y3VzdG9taXplcih2YWx1ZSxvdGhlcik6dW5kZWZpbmVkO3JldHVybiByZXN1bHQ9PT11bmRlZmluZWQ/YmFzZUlzRXF1YWwodmFsdWUsb3RoZXIsdW5kZWZpbmVkLGN1c3RvbWl6ZXIpOiEhcmVzdWx0O30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gYEVycm9yYCwgYEV2YWxFcnJvcmAsIGBSYW5nZUVycm9yYCwgYFJlZmVyZW5jZUVycm9yYCxcbiAgICAgICAgICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gZXJyb3Igb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNFcnJvcihuZXcgRXJyb3IpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNFcnJvcihFcnJvcik7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzRXJyb3IodmFsdWUpe2lmKCFpc09iamVjdExpa2UodmFsdWUpKXtyZXR1cm4gZmFsc2U7fXZhciB0YWc9YmFzZUdldFRhZyh2YWx1ZSk7cmV0dXJuIHRhZz09ZXJyb3JUYWd8fHRhZz09ZG9tRXhjVGFnfHx0eXBlb2YgdmFsdWUubWVzc2FnZT09PSdzdHJpbmcnJiZ0eXBlb2YgdmFsdWUubmFtZT09PSdzdHJpbmcnJiYhaXNQbGFpbk9iamVjdCh2YWx1ZSk7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZpbml0ZSBwcmltaXRpdmUgbnVtYmVyLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgICAgICogW2BOdW1iZXIuaXNGaW5pdGVgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNGaW5pdGUpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNGaW5pdGUoMyk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzRmluaXRlKEluZmluaXR5KTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0Zpbml0ZSgnMycpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc0Zpbml0ZSh2YWx1ZSl7cmV0dXJuIHR5cGVvZiB2YWx1ZT09PSdudW1iZXInJiZuYXRpdmVJc0Zpbml0ZSh2YWx1ZSk7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNGdW5jdGlvbihfKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKXtpZighaXNPYmplY3QodmFsdWUpKXtyZXR1cm4gZmFsc2U7fS8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG52YXIgdGFnPWJhc2VHZXRUYWcodmFsdWUpO3JldHVybiB0YWc9PWZ1bmNUYWd8fHRhZz09Z2VuVGFnfHx0YWc9PWFzeW5jVGFnfHx0YWc9PXByb3h5VGFnO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlci5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICAgICAqIFtgTnVtYmVyLmlzSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0ludGVnZXIpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzSW50ZWdlcigzKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzSW50ZWdlcignMycpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpe3JldHVybiB0eXBlb2YgdmFsdWU9PT0nbnVtYmVyJyYmdmFsdWU9PXRvSW50ZWdlcih2YWx1ZSk7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAgICAgKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0xlbmd0aCgzKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc0xlbmd0aCgnMycpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSl7cmV0dXJuIHR5cGVvZiB2YWx1ZT09PSdudW1iZXInJiZ2YWx1ZT4tMSYmdmFsdWUlMT09MCYmdmFsdWU8PU1BWF9TQUZFX0lOVEVHRVI7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAgICAgICAgICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICAgICAgICAgKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc09iamVjdCh7fSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzT2JqZWN0KG51bGwpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSl7dmFyIHR5cGU9dHlwZW9mIHZhbHVlPT09J3VuZGVmaW5lZCc/J3VuZGVmaW5lZCc6X3R5cGVvZih2YWx1ZSk7cmV0dXJuIHZhbHVlIT1udWxsJiYodHlwZT09J29iamVjdCd8fHR5cGU9PSdmdW5jdGlvbicpO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gICAgICAgICAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpe3JldHVybiB2YWx1ZSE9bnVsbCYmKHR5cGVvZiB2YWx1ZT09PSd1bmRlZmluZWQnPyd1bmRlZmluZWQnOl90eXBlb2YodmFsdWUpKT09PSdvYmplY3QnO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNNYXAobmV3IE1hcCk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL3ZhciBpc01hcD1ub2RlSXNNYXA/YmFzZVVuYXJ5KG5vZGVJc01hcCk6YmFzZUlzTWFwOy8qKlxuICAgICAgICAgKiBQZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYG9iamVjdGAgYW5kIGBzb3VyY2VgIHRvXG4gICAgICAgICAqIGRldGVybWluZSBpZiBgb2JqZWN0YCBjb250YWlucyBlcXVpdmFsZW50IHByb3BlcnR5IHZhbHVlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8ubWF0Y2hlc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgICAgICpcbiAgICAgICAgICogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3QgYHNvdXJjZWBcbiAgICAgICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMiB9KTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMSB9KTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICovZnVuY3Rpb24gaXNNYXRjaChvYmplY3Qsc291cmNlKXtyZXR1cm4gb2JqZWN0PT09c291cmNlfHxiYXNlSXNNYXRjaChvYmplY3Qsc291cmNlLGdldE1hdGNoRGF0YShzb3VyY2UpKTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNNYXRjaGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gICAgICAgICAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggZml2ZVxuICAgICAgICAgKiBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGluZGV4fGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICAgICAqICAgaWYgKGlzR3JlZXRpbmcob2JqVmFsdWUpICYmIGlzR3JlZXRpbmcoc3JjVmFsdWUpKSB7XG4gICAgICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICogICB9XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2dyZWV0aW5nJzogJ2hlbGxvJyB9O1xuICAgICAgICAgKiB2YXIgc291cmNlID0geyAnZ3JlZXRpbmcnOiAnaGknIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzTWF0Y2hXaXRoKG9iamVjdCxzb3VyY2UsY3VzdG9taXplcil7Y3VzdG9taXplcj10eXBlb2YgY3VzdG9taXplcj09PSdmdW5jdGlvbic/Y3VzdG9taXplcjp1bmRlZmluZWQ7cmV0dXJuIGJhc2VJc01hdGNoKG9iamVjdCxzb3VyY2UsZ2V0TWF0Y2hEYXRhKHNvdXJjZSksY3VzdG9taXplcik7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgTmFOYC5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICAgICAqIFtgTnVtYmVyLmlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzTmFOKSBhbmQgaXMgbm90IHRoZSBzYW1lIGFzXG4gICAgICAgICAqIGdsb2JhbCBbYGlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vaXNOYU4pIHdoaWNoIHJldHVybnMgYHRydWVgIGZvclxuICAgICAgICAgKiBgdW5kZWZpbmVkYCBhbmQgb3RoZXIgbm9uLW51bWJlciB2YWx1ZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTmFOKE5hTik7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc05hTihuZXcgTnVtYmVyKE5hTikpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIGlzTmFOKHVuZGVmaW5lZCk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc05hTih1bmRlZmluZWQpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc05hTih2YWx1ZSl7Ly8gQW4gYE5hTmAgcHJpbWl0aXZlIGlzIHRoZSBvbmx5IHZhbHVlIHRoYXQgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi5cbi8vIFBlcmZvcm0gdGhlIGB0b1N0cmluZ1RhZ2AgY2hlY2sgZmlyc3QgdG8gYXZvaWQgZXJyb3JzIHdpdGggc29tZVxuLy8gQWN0aXZlWCBvYmplY3RzIGluIElFLlxucmV0dXJuIGlzTnVtYmVyKHZhbHVlKSYmdmFsdWUhPSt2YWx1ZTt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJpc3RpbmUgbmF0aXZlIGZ1bmN0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgY2FuJ3QgcmVsaWFibHkgZGV0ZWN0IG5hdGl2ZSBmdW5jdGlvbnMgaW4gdGhlIHByZXNlbmNlXG4gICAgICAgICAqIG9mIHRoZSBjb3JlLWpzIHBhY2thZ2UgYmVjYXVzZSBjb3JlLWpzIGNpcmN1bXZlbnRzIHRoaXMga2luZCBvZiBkZXRlY3Rpb24uXG4gICAgICAgICAqIERlc3BpdGUgbXVsdGlwbGUgcmVxdWVzdHMsIHRoZSBjb3JlLWpzIG1haW50YWluZXIgaGFzIG1hZGUgaXQgY2xlYXI6IGFueVxuICAgICAgICAgKiBhdHRlbXB0IHRvIGZpeCB0aGUgZGV0ZWN0aW9uIHdpbGwgYmUgb2JzdHJ1Y3RlZC4gQXMgYSByZXN1bHQsIHdlJ3JlIGxlZnRcbiAgICAgICAgICogd2l0aCBsaXR0bGUgY2hvaWNlIGJ1dCB0byB0aHJvdyBhbiBlcnJvci4gVW5mb3J0dW5hdGVseSwgdGhpcyBhbHNvIGFmZmVjdHNcbiAgICAgICAgICogcGFja2FnZXMsIGxpa2UgW2JhYmVsLXBvbHlmaWxsXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iYWJlbC1wb2x5ZmlsbCksXG4gICAgICAgICAqIHdoaWNoIHJlbHkgb24gY29yZS1qcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTmF0aXZlKEFycmF5LnByb3RvdHlwZS5wdXNoKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTmF0aXZlKF8pO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSl7aWYoaXNNYXNrYWJsZSh2YWx1ZSkpe3Rocm93IG5ldyBFcnJvcihDT1JFX0VSUk9SX1RFWFQpO31yZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKTt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBudWxsYCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTnVsbChudWxsKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTnVsbCh2b2lkIDApO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc051bGwodmFsdWUpe3JldHVybiB2YWx1ZT09PW51bGw7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBudWxsaXNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNOaWwobnVsbCk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc05pbCh2b2lkIDApO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNOaWwoTmFOKTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICovZnVuY3Rpb24gaXNOaWwodmFsdWUpe3JldHVybiB2YWx1ZT09bnVsbDt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTnVtYmVyYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVG8gZXhjbHVkZSBgSW5maW5pdHlgLCBgLUluZmluaXR5YCwgYW5kIGBOYU5gLCB3aGljaCBhcmVcbiAgICAgICAgICogY2xhc3NpZmllZCBhcyBudW1iZXJzLCB1c2UgdGhlIGBfLmlzRmluaXRlYCBtZXRob2QuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzTnVtYmVyKDMpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc051bWJlcihJbmZpbml0eSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc051bWJlcignMycpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc051bWJlcih2YWx1ZSl7cmV0dXJuIHR5cGVvZiB2YWx1ZT09PSdudW1iZXInfHxpc09iamVjdExpa2UodmFsdWUpJiZiYXNlR2V0VGFnKHZhbHVlKT09bnVtYmVyVGFnO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICAgICAgICAgKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuOC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICovZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSl7aWYoIWlzT2JqZWN0TGlrZSh2YWx1ZSl8fGJhc2VHZXRUYWcodmFsdWUpIT1vYmplY3RUYWcpe3JldHVybiBmYWxzZTt9dmFyIHByb3RvPWdldFByb3RvdHlwZSh2YWx1ZSk7aWYocHJvdG89PT1udWxsKXtyZXR1cm4gdHJ1ZTt9dmFyIEN0b3I9aGFzT3duUHJvcGVydHkuY2FsbChwcm90bywnY29uc3RydWN0b3InKSYmcHJvdG8uY29uc3RydWN0b3I7cmV0dXJuIHR5cGVvZiBDdG9yPT09J2Z1bmN0aW9uJyYmQ3RvciBpbnN0YW5jZW9mIEN0b3ImJmZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpPT1vYmplY3RDdG9yU3RyaW5nO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBSZWdFeHBgIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNSZWdFeHAoL2FiYy8pO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNSZWdFeHAoJy9hYmMvJyk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL3ZhciBpc1JlZ0V4cD1ub2RlSXNSZWdFeHA/YmFzZVVuYXJ5KG5vZGVJc1JlZ0V4cCk6YmFzZUlzUmVnRXhwOy8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlci4gQW4gaW50ZWdlciBpcyBzYWZlIGlmIGl0J3MgYW4gSUVFRS03NTRcbiAgICAgICAgICogZG91YmxlIHByZWNpc2lvbiBudW1iZXIgd2hpY2ggaXNuJ3QgdGhlIHJlc3VsdCBvZiBhIHJvdW5kZWQgdW5zYWZlIGludGVnZXIuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAgICAgKiBbYE51bWJlci5pc1NhZmVJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzU2FmZUludGVnZXIpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc1NhZmVJbnRlZ2VyKDMpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNTYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc1NhZmVJbnRlZ2VyKCczJyk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzU2FmZUludGVnZXIodmFsdWUpe3JldHVybiBpc0ludGVnZXIodmFsdWUpJiZ2YWx1ZT49LU1BWF9TQUZFX0lOVEVHRVImJnZhbHVlPD1NQVhfU0FGRV9JTlRFR0VSO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTZXRgIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNTZXQobmV3IFNldCk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL3ZhciBpc1NldD1ub2RlSXNTZXQ/YmFzZVVuYXJ5KG5vZGVJc1NldCk6YmFzZUlzU2V0Oy8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNTdHJpbmcoMSk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKXtyZXR1cm4gdHlwZW9mIHZhbHVlPT09J3N0cmluZyd8fCFpc0FycmF5KHZhbHVlKSYmaXNPYmplY3RMaWtlKHZhbHVlKSYmYmFzZUdldFRhZyh2YWx1ZSk9PXN0cmluZ1RhZzt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSl7cmV0dXJuKHR5cGVvZiB2YWx1ZT09PSd1bmRlZmluZWQnPyd1bmRlZmluZWQnOl90eXBlb2YodmFsdWUpKT09PSdzeW1ib2wnfHxpc09iamVjdExpa2UodmFsdWUpJiZiYXNlR2V0VGFnKHZhbHVlKT09c3ltYm9sVGFnO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi92YXIgaXNUeXBlZEFycmF5PW5vZGVJc1R5cGVkQXJyYXk/YmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpOmJhc2VJc1R5cGVkQXJyYXk7LyoqXG4gICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLmlzVW5kZWZpbmVkKHZvaWQgMCk7XG4gICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgKlxuICAgICAgICogXy5pc1VuZGVmaW5lZChudWxsKTtcbiAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgKi9mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSl7cmV0dXJuIHZhbHVlPT09dW5kZWZpbmVkO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrTWFwYCBvYmplY3QuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMy4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaXNXZWFrTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzV2Vha01hcChuZXcgTWFwKTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICovZnVuY3Rpb24gaXNXZWFrTWFwKHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmZ2V0VGFnKHZhbHVlKT09d2Vha01hcFRhZzt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha1NldGAgb2JqZWN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB3ZWFrIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmlzV2Vha1NldChuZXcgV2Vha1NldCk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pc1dlYWtTZXQobmV3IFNldCk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGlzV2Vha1NldCh2YWx1ZSl7cmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkmJmJhc2VHZXRUYWcodmFsdWUpPT13ZWFrU2V0VGFnO30vKipcbiAgICAgICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuOS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAc2VlIF8uZ3RcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5sdCgxLCAzKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmx0KDMsIDMpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmx0KDMsIDEpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi92YXIgbHQ9Y3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpOy8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAgICAgICAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBzZWUgXy5ndGVcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5sdGUoMSwgMyk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5sdGUoMywgMyk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5sdGUoMywgMSk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL3ZhciBsdGU9Y3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSxvdGhlcil7cmV0dXJuIHZhbHVlPD1vdGhlcjt9KTsvKipcbiAgICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gYXJyYXkuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy50b0FycmF5KHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgICAqXG4gICAgICAgKiBfLnRvQXJyYXkoJ2FiYycpO1xuICAgICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICAgKlxuICAgICAgICogXy50b0FycmF5KDEpO1xuICAgICAgICogLy8gPT4gW11cbiAgICAgICAqXG4gICAgICAgKiBfLnRvQXJyYXkobnVsbCk7XG4gICAgICAgKiAvLyA9PiBbXVxuICAgICAgICovZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSl7aWYoIXZhbHVlKXtyZXR1cm5bXTt9aWYoaXNBcnJheUxpa2UodmFsdWUpKXtyZXR1cm4gaXNTdHJpbmcodmFsdWUpP3N0cmluZ1RvQXJyYXkodmFsdWUpOmNvcHlBcnJheSh2YWx1ZSk7fWlmKHN5bUl0ZXJhdG9yJiZ2YWx1ZVtzeW1JdGVyYXRvcl0pe3JldHVybiBpdGVyYXRvclRvQXJyYXkodmFsdWVbc3ltSXRlcmF0b3JdKCkpO312YXIgdGFnPWdldFRhZyh2YWx1ZSksZnVuYz10YWc9PW1hcFRhZz9tYXBUb0FycmF5OnRhZz09c2V0VGFnP3NldFRvQXJyYXk6dmFsdWVzO3JldHVybiBmdW5jKHZhbHVlKTt9LyoqXG4gICAgICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjEyLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy50b0Zpbml0ZSgzLjIpO1xuICAgICAgICAgKiAvLyA9PiAzLjJcbiAgICAgICAgICpcbiAgICAgICAgICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgICAgICogLy8gPT4gNWUtMzI0XG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICAgICAgICAgKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvRmluaXRlKCczLjInKTtcbiAgICAgICAgICogLy8gPT4gMy4yXG4gICAgICAgICAqL2Z1bmN0aW9uIHRvRmluaXRlKHZhbHVlKXtpZighdmFsdWUpe3JldHVybiB2YWx1ZT09PTA/dmFsdWU6MDt9dmFsdWU9dG9OdW1iZXIodmFsdWUpO2lmKHZhbHVlPT09SU5GSU5JVFl8fHZhbHVlPT09LUlORklOSVRZKXt2YXIgc2lnbj12YWx1ZTwwPy0xOjE7cmV0dXJuIHNpZ24qTUFYX0lOVEVHRVI7fXJldHVybiB2YWx1ZT09PXZhbHVlP3ZhbHVlOjA7fS8qKlxuICAgICAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICAgICAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvSW50ZWdlcigzLjIpO1xuICAgICAgICAgKiAvLyA9PiAzXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9JbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAgICAgKiAvLyA9PiAwXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9JbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgICAgICpcbiAgICAgICAgICogXy50b0ludGVnZXIoJzMuMicpO1xuICAgICAgICAgKiAvLyA9PiAzXG4gICAgICAgICAqL2Z1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSl7dmFyIHJlc3VsdD10b0Zpbml0ZSh2YWx1ZSkscmVtYWluZGVyPXJlc3VsdCUxO3JldHVybiByZXN1bHQ9PT1yZXN1bHQ/cmVtYWluZGVyP3Jlc3VsdC1yZW1haW5kZXI6cmVzdWx0OjA7fS8qKlxuICAgICAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIgc3VpdGFibGUgZm9yIHVzZSBhcyB0aGUgbGVuZ3RoIG9mIGFuXG4gICAgICAgICAqIGFycmF5LWxpa2Ugb2JqZWN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9MZW5ndGgoMy4yKTtcbiAgICAgICAgICogLy8gPT4gM1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAgICAgKiAvLyA9PiAwXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9MZW5ndGgoSW5maW5pdHkpO1xuICAgICAgICAgKiAvLyA9PiA0Mjk0OTY3Mjk1XG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9MZW5ndGgoJzMuMicpO1xuICAgICAgICAgKiAvLyA9PiAzXG4gICAgICAgICAqL2Z1bmN0aW9uIHRvTGVuZ3RoKHZhbHVlKXtyZXR1cm4gdmFsdWU/YmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksMCxNQVhfQVJSQVlfTEVOR1RIKTowO30vKipcbiAgICAgICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvTnVtYmVyKDMuMik7XG4gICAgICAgICAqIC8vID0+IDMuMlxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAgICAgKiAvLyA9PiA1ZS0zMjRcbiAgICAgICAgICpcbiAgICAgICAgICogXy50b051bWJlcihJbmZpbml0eSk7XG4gICAgICAgICAqIC8vID0+IEluZmluaXR5XG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9OdW1iZXIoJzMuMicpO1xuICAgICAgICAgKiAvLyA9PiAzLjJcbiAgICAgICAgICovZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpe2lmKHR5cGVvZiB2YWx1ZT09PSdudW1iZXInKXtyZXR1cm4gdmFsdWU7fWlmKGlzU3ltYm9sKHZhbHVlKSl7cmV0dXJuIE5BTjt9aWYoaXNPYmplY3QodmFsdWUpKXt2YXIgb3RoZXI9dHlwZW9mIHZhbHVlLnZhbHVlT2Y9PT0nZnVuY3Rpb24nP3ZhbHVlLnZhbHVlT2YoKTp2YWx1ZTt2YWx1ZT1pc09iamVjdChvdGhlcik/b3RoZXIrJyc6b3RoZXI7fWlmKHR5cGVvZiB2YWx1ZSE9PSdzdHJpbmcnKXtyZXR1cm4gdmFsdWU9PT0wP3ZhbHVlOit2YWx1ZTt9dmFsdWU9dmFsdWUucmVwbGFjZShyZVRyaW0sJycpO3ZhciBpc0JpbmFyeT1yZUlzQmluYXJ5LnRlc3QodmFsdWUpO3JldHVybiBpc0JpbmFyeXx8cmVJc09jdGFsLnRlc3QodmFsdWUpP2ZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSxpc0JpbmFyeT8yOjgpOnJlSXNCYWRIZXgudGVzdCh2YWx1ZSk/TkFOOit2YWx1ZTt9LyoqXG4gICAgICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAgICAgICAgICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgICAgICogICB0aGlzLmIgPSAyO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICAgICAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgICAgICpcbiAgICAgICAgICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAgICAgICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAgICAgICAgICovZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSl7cmV0dXJuIGNvcHlPYmplY3QodmFsdWUsa2V5c0luKHZhbHVlKSk7fS8qKlxuICAgICAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc2FmZSBpbnRlZ2VyLiBBIHNhZmUgaW50ZWdlciBjYW4gYmUgY29tcGFyZWQgYW5kXG4gICAgICAgICAqIHJlcHJlc2VudGVkIGNvcnJlY3RseS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9TYWZlSW50ZWdlcigzLjIpO1xuICAgICAgICAgKiAvLyA9PiAzXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9TYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgICAgICogLy8gPT4gMFxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICAgICAgICAgKiAvLyA9PiA5MDA3MTk5MjU0NzQwOTkxXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9TYWZlSW50ZWdlcignMy4yJyk7XG4gICAgICAgICAqIC8vID0+IDNcbiAgICAgICAgICovZnVuY3Rpb24gdG9TYWZlSW50ZWdlcih2YWx1ZSl7cmV0dXJuIHZhbHVlP2Jhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLC1NQVhfU0FGRV9JTlRFR0VSLE1BWF9TQUZFX0lOVEVHRVIpOnZhbHVlPT09MD92YWx1ZTowO30vKipcbiAgICAgICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAgICAgICAgICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9TdHJpbmcobnVsbCk7XG4gICAgICAgICAqIC8vID0+ICcnXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9TdHJpbmcoLTApO1xuICAgICAgICAgKiAvLyA9PiAnLTAnXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAgICAgICAgICogLy8gPT4gJzEsMiwzJ1xuICAgICAgICAgKi9mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSl7cmV0dXJuIHZhbHVlPT1udWxsPycnOmJhc2VUb1N0cmluZyh2YWx1ZSk7fS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqXG4gICAgICAgICAqIEFzc2lnbnMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgdG8gdGhlXG4gICAgICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAgICAgKiBTdWJzZXF1ZW50IHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgIGFuZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICAgICAqIFtgT2JqZWN0LmFzc2lnbmBdKGh0dHBzOi8vbWRuLmlvL09iamVjdC9hc3NpZ24pLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjEwLjBcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKiBAc2VlIF8uYXNzaWduSW5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gQmFyKCkge1xuICAgICAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgICAgICogQmFyLnByb3RvdHlwZS5kID0gNDtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5hc3NpZ24oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gICAgICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAgICAgKi92YXIgYXNzaWduPWNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCxzb3VyY2Upe2lmKGlzUHJvdG90eXBlKHNvdXJjZSl8fGlzQXJyYXlMaWtlKHNvdXJjZSkpe2NvcHlPYmplY3Qoc291cmNlLGtleXMoc291cmNlKSxvYmplY3QpO3JldHVybjt9Zm9yKHZhciBrZXkgaW4gc291cmNlKXtpZihoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSxrZXkpKXthc3NpZ25WYWx1ZShvYmplY3Qsa2V5LHNvdXJjZVtrZXldKTt9fX0pOy8qKlxuICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgb3duIGFuZFxuICAgICAgICogaW5oZXJpdGVkIHNvdXJjZSBwcm9wZXJ0aWVzLlxuICAgICAgICpcbiAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBhbGlhcyBleHRlbmRcbiAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAqIEBzZWUgXy5hc3NpZ25cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAgICogICB0aGlzLmEgPSAxO1xuICAgICAgICogfVxuICAgICAgICpcbiAgICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgICAqICAgdGhpcy5jID0gMztcbiAgICAgICAqIH1cbiAgICAgICAqXG4gICAgICAgKiBGb28ucHJvdG90eXBlLmIgPSAyO1xuICAgICAgICogQmFyLnByb3RvdHlwZS5kID0gNDtcbiAgICAgICAqXG4gICAgICAgKiBfLmFzc2lnbkluKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzLCAnZCc6IDQgfVxuICAgICAgICovdmFyIGFzc2lnbkluPWNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCxzb3VyY2Upe2NvcHlPYmplY3Qoc291cmNlLGtleXNJbihzb3VyY2UpLG9iamVjdCk7fSk7LyoqXG4gICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbkluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICAgICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICAgKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICAgICAgICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgICAqXG4gICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICAgKiB9XG4gICAgICAgKlxuICAgICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAgICpcbiAgICAgICAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICAgKi92YXIgYXNzaWduSW5XaXRoPWNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCxzb3VyY2Usc3JjSW5kZXgsY3VzdG9taXplcil7Y29weU9iamVjdChzb3VyY2Usa2V5c0luKHNvdXJjZSksb2JqZWN0LGN1c3RvbWl6ZXIpO30pOy8qKlxuICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAgICAgICAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gICAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAgICpcbiAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICAgKiBAc2VlIF8uYXNzaWduSW5XaXRoXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICAgKiB9XG4gICAgICAgKlxuICAgICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25XaXRoLCBjdXN0b21pemVyKTtcbiAgICAgICAqXG4gICAgICAgKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAgICovdmFyIGFzc2lnbldpdGg9Y3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LHNvdXJjZSxzcmNJbmRleCxjdXN0b21pemVyKXtjb3B5T2JqZWN0KHNvdXJjZSxrZXlzKHNvdXJjZSksb2JqZWN0LGN1c3RvbWl6ZXIpO30pOy8qKlxuICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBgcGF0aHNgIG9mIGBvYmplY3RgLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgdmFsdWVzLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9LCA0XSB9O1xuICAgICAgICpcbiAgICAgICAqIF8uYXQob2JqZWN0LCBbJ2FbMF0uYi5jJywgJ2FbMV0nXSk7XG4gICAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgICAqL3ZhciBhdD1mbGF0UmVzdChiYXNlQXQpOy8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gdGhlIGBwcm90b3R5cGVgIG9iamVjdC4gSWYgYVxuICAgICAgICAgKiBgcHJvcGVydGllc2Agb2JqZWN0IGlzIGdpdmVuLCBpdHMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXNcbiAgICAgICAgICogYXJlIGFzc2lnbmVkIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMi4zLjBcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG90eXBlIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gW3Byb3BlcnRpZXNdIFRoZSBwcm9wZXJ0aWVzIHRvIGFzc2lnbiB0byB0aGUgb2JqZWN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBTaGFwZSgpIHtcbiAgICAgICAgICogICB0aGlzLnggPSAwO1xuICAgICAgICAgKiAgIHRoaXMueSA9IDA7XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gQ2lyY2xlKCkge1xuICAgICAgICAgKiAgIFNoYXBlLmNhbGwodGhpcyk7XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogQ2lyY2xlLnByb3RvdHlwZSA9IF8uY3JlYXRlKFNoYXBlLnByb3RvdHlwZSwge1xuICAgICAgICAgKiAgICdjb25zdHJ1Y3Rvcic6IENpcmNsZVxuICAgICAgICAgKiB9KTtcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGNpcmNsZSA9IG5ldyBDaXJjbGU7XG4gICAgICAgICAqIGNpcmNsZSBpbnN0YW5jZW9mIENpcmNsZTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBjaXJjbGUgaW5zdGFuY2VvZiBTaGFwZTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKi9mdW5jdGlvbiBjcmVhdGUocHJvdG90eXBlLHByb3BlcnRpZXMpe3ZhciByZXN1bHQ9YmFzZUNyZWF0ZShwcm90b3R5cGUpO3JldHVybiBwcm9wZXJ0aWVzPT1udWxsP3Jlc3VsdDpiYXNlQXNzaWduKHJlc3VsdCxwcm9wZXJ0aWVzKTt9LyoqXG4gICAgICAgICAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAgICAgICAgICogb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllcyB0aGF0XG4gICAgICAgICAqIHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAgICAgICAgICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICAgICAqIEBzZWUgXy5kZWZhdWx0c0RlZXBcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5kZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICAgICAqL3ZhciBkZWZhdWx0cz1iYXNlUmVzdChmdW5jdGlvbihvYmplY3Qsc291cmNlcyl7b2JqZWN0PU9iamVjdChvYmplY3QpO3ZhciBpbmRleD0tMTt2YXIgbGVuZ3RoPXNvdXJjZXMubGVuZ3RoO3ZhciBndWFyZD1sZW5ndGg+Mj9zb3VyY2VzWzJdOnVuZGVmaW5lZDtpZihndWFyZCYmaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSxzb3VyY2VzWzFdLGd1YXJkKSl7bGVuZ3RoPTE7fXdoaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgc291cmNlPXNvdXJjZXNbaW5kZXhdO3ZhciBwcm9wcz1rZXlzSW4oc291cmNlKTt2YXIgcHJvcHNJbmRleD0tMTt2YXIgcHJvcHNMZW5ndGg9cHJvcHMubGVuZ3RoO3doaWxlKCsrcHJvcHNJbmRleDxwcm9wc0xlbmd0aCl7dmFyIGtleT1wcm9wc1twcm9wc0luZGV4XTt2YXIgdmFsdWU9b2JqZWN0W2tleV07aWYodmFsdWU9PT11bmRlZmluZWR8fGVxKHZhbHVlLG9iamVjdFByb3RvW2tleV0pJiYhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3Qsa2V5KSl7b2JqZWN0W2tleV09c291cmNlW2tleV07fX19cmV0dXJuIG9iamVjdDt9KTsvKipcbiAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGVmYXVsdHNgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGFzc2lnbnNcbiAgICAgICAqIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgICAgICAqXG4gICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICogQHNlZSBfLmRlZmF1bHRzXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8uZGVmYXVsdHNEZWVwKHsgJ2EnOiB7ICdiJzogMiB9IH0sIHsgJ2EnOiB7ICdiJzogMSwgJ2MnOiAzIH0gfSk7XG4gICAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IDIsICdjJzogMyB9IH1cbiAgICAgICAqL3ZhciBkZWZhdWx0c0RlZXA9YmFzZVJlc3QoZnVuY3Rpb24oYXJncyl7YXJncy5wdXNoKHVuZGVmaW5lZCxjdXN0b21EZWZhdWx0c01lcmdlKTtyZXR1cm4gYXBwbHkobWVyZ2VXaXRoLHVuZGVmaW5lZCxhcmdzKTt9KTsvKipcbiAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUga2V5IG9mIHRoZSBmaXJzdFxuICAgICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogdmFyIHVzZXJzID0ge1xuICAgICAgICogICAnYmFybmV5JzogIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAgICogfTtcbiAgICAgICAqXG4gICAgICAgKiBfLmZpbmRLZXkodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAgICogLy8gPT4gJ2Jhcm5leScgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgICAqXG4gICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICogXy5maW5kS2V5KHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgICAqIC8vID0+ICdwZWJibGVzJ1xuICAgICAgICpcbiAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAqIF8uZmluZEtleSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICAgKlxuICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgKiBfLmZpbmRLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAqIC8vID0+ICdiYXJuZXknXG4gICAgICAgKi9mdW5jdGlvbiBmaW5kS2V5KG9iamVjdCxwcmVkaWNhdGUpe3JldHVybiBiYXNlRmluZEtleShvYmplY3QsZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpLGJhc2VGb3JPd24pO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kS2V5YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICAgICAqIGEgY29sbGVjdGlvbiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDIuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IFJldHVybnMgdGhlIGtleSBvZiB0aGUgbWF0Y2hlZCBlbGVtZW50LFxuICAgICAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIHVzZXJzID0ge1xuICAgICAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICAgICAqICAgJ2ZyZWQnOiAgICB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAgICAgKiB9O1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgICAgICogLy8gPT4gcmV0dXJucyAncGViYmxlcycgYXNzdW1pbmcgYF8uZmluZEtleWAgcmV0dXJucyAnYmFybmV5J1xuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICAgICAqIC8vID0+ICdiYXJuZXknXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5maW5kTGFzdEtleSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICAgICAqL2Z1bmN0aW9uIGZpbmRMYXN0S2V5KG9iamVjdCxwcmVkaWNhdGUpe3JldHVybiBiYXNlRmluZEtleShvYmplY3QsZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpLGJhc2VGb3JPd25SaWdodCk7fS8qKlxuICAgICAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW5cbiAgICAgICAgICogb2JqZWN0IGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0XG4gICAgICAgICAqIGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKiBAc2VlIF8uZm9ySW5SaWdodFxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgICAgICogICB0aGlzLmIgPSAyO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZm9ySW4obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICAgICAqIH0pO1xuICAgICAgICAgKiAvLyA9PiBMb2dzICdhJywgJ2InLCB0aGVuICdjJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgICAgICovZnVuY3Rpb24gZm9ySW4ob2JqZWN0LGl0ZXJhdGVlKXtyZXR1cm4gb2JqZWN0PT1udWxsP29iamVjdDpiYXNlRm9yKG9iamVjdCxnZXRJdGVyYXRlZShpdGVyYXRlZSwzKSxrZXlzSW4pO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JJbmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICAgICAqIGBvYmplY3RgIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAgICogQHNlZSBfLmZvckluXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgICAgICogICB0aGlzLmEgPSAxO1xuICAgICAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgICAgICpcbiAgICAgICAgICogXy5mb3JJblJpZ2h0KG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAgICAgKiB9KTtcbiAgICAgICAgICogLy8gPT4gTG9ncyAnYycsICdiJywgdGhlbiAnYScgYXNzdW1pbmcgYF8uZm9ySW5gIGxvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnLlxuICAgICAgICAgKi9mdW5jdGlvbiBmb3JJblJpZ2h0KG9iamVjdCxpdGVyYXRlZSl7cmV0dXJuIG9iamVjdD09bnVsbD9vYmplY3Q6YmFzZUZvclJpZ2h0KG9iamVjdCxnZXRJdGVyYXRlZShpdGVyYXRlZSwzKSxrZXlzSW4pO30vKipcbiAgICAgICAgICogSXRlcmF0ZXMgb3ZlciBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhbiBvYmplY3QgYW5kXG4gICAgICAgICAqIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uXG4gICAgICAgICAqIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuMy4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICAgICAqIEBzZWUgXy5mb3JPd25SaWdodFxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgICAgICogICB0aGlzLmIgPSAyO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZm9yT3duKG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAgICAgKiB9KTtcbiAgICAgICAgICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gICAgICAgICAqL2Z1bmN0aW9uIGZvck93bihvYmplY3QsaXRlcmF0ZWUpe3JldHVybiBvYmplY3QmJmJhc2VGb3JPd24ob2JqZWN0LGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDMpKTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yT3duYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXMgb2ZcbiAgICAgICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKiBAc2VlIF8uZm9yT3duXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgICAgICogICB0aGlzLmEgPSAxO1xuICAgICAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgICAgICpcbiAgICAgICAgICogXy5mb3JPd25SaWdodChuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqIC8vID0+IExvZ3MgJ2InIHRoZW4gJ2EnIGFzc3VtaW5nIGBfLmZvck93bmAgbG9ncyAnYScgdGhlbiAnYicuXG4gICAgICAgICAqL2Z1bmN0aW9uIGZvck93blJpZ2h0KG9iamVjdCxpdGVyYXRlZSl7cmV0dXJuIG9iamVjdCYmYmFzZUZvck93blJpZ2h0KG9iamVjdCxnZXRJdGVyYXRlZShpdGVyYXRlZSwzKSk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGVudW1lcmFibGUgcHJvcGVydGllc1xuICAgICAgICAgKiBvZiBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgICAgICogQHNlZSBfLmZ1bmN0aW9uc0luXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICAgICAqICAgdGhpcy5iID0gXy5jb25zdGFudCgnYicpO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIEZvby5wcm90b3R5cGUuYyA9IF8uY29uc3RhbnQoJ2MnKTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5mdW5jdGlvbnMobmV3IEZvbyk7XG4gICAgICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgICAgICovZnVuY3Rpb24gZnVuY3Rpb25zKG9iamVjdCl7cmV0dXJuIG9iamVjdD09bnVsbD9bXTpiYXNlRnVuY3Rpb25zKG9iamVjdCxrZXlzKG9iamVjdCkpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBhbmQgaW5oZXJpdGVkXG4gICAgICAgICAqIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgICAgICogQHNlZSBfLmZ1bmN0aW9uc1xuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICAgICAqICAgdGhpcy5hID0gXy5jb25zdGFudCgnYScpO1xuICAgICAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZnVuY3Rpb25zSW4obmV3IEZvbyk7XG4gICAgICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAgICAgKi9mdW5jdGlvbiBmdW5jdGlvbnNJbihvYmplY3Qpe3JldHVybiBvYmplY3Q9PW51bGw/W106YmFzZUZ1bmN0aW9ucyhvYmplY3Qsa2V5c0luKG9iamVjdCkpO30vKipcbiAgICAgICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAgICAgICAgICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuNy4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gICAgICAgICAqIC8vID0+IDNcbiAgICAgICAgICpcbiAgICAgICAgICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gICAgICAgICAqIC8vID0+IDNcbiAgICAgICAgICpcbiAgICAgICAgICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICAgICAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgICAgICovZnVuY3Rpb24gZ2V0KG9iamVjdCxwYXRoLGRlZmF1bHRWYWx1ZSl7dmFyIHJlc3VsdD1vYmplY3Q9PW51bGw/dW5kZWZpbmVkOmJhc2VHZXQob2JqZWN0LHBhdGgpO3JldHVybiByZXN1bHQ9PT11bmRlZmluZWQ/ZGVmYXVsdFZhbHVlOnJlc3VsdDt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3QgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gICAgICAgICAqIHZhciBvdGhlciA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5oYXMob2JqZWN0LCAnYScpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5oYXMob3RoZXIsICdhJyk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIGhhcyhvYmplY3QscGF0aCl7cmV0dXJuIG9iamVjdCE9bnVsbCYmaGFzUGF0aChvYmplY3QscGF0aCxiYXNlSGFzKTt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaGFzSW4ob2JqZWN0LCAnYScpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaGFzSW4ob2JqZWN0LCAnYS5iJyk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5oYXNJbihvYmplY3QsIFsnYScsICdiJ10pO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaGFzSW4ob2JqZWN0LCAnYicpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKi9mdW5jdGlvbiBoYXNJbihvYmplY3QscGF0aCl7cmV0dXJuIG9iamVjdCE9bnVsbCYmaGFzUGF0aChvYmplY3QscGF0aCxiYXNlSGFzSW4pO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIGludmVydGVkIGtleXMgYW5kIHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgICAgICogSWYgYG9iamVjdGAgY29udGFpbnMgZHVwbGljYXRlIHZhbHVlcywgc3Vic2VxdWVudCB2YWx1ZXMgb3ZlcndyaXRlXG4gICAgICAgICAqIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHZhbHVlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMC43LjBcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaW52ZXJ0KG9iamVjdCk7XG4gICAgICAgICAqIC8vID0+IHsgJzEnOiAnYycsICcyJzogJ2InIH1cbiAgICAgICAgICovdmFyIGludmVydD1jcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsdmFsdWUsa2V5KXtpZih2YWx1ZSE9bnVsbCYmdHlwZW9mIHZhbHVlLnRvU3RyaW5nIT09J2Z1bmN0aW9uJyl7dmFsdWU9bmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7fXJlc3VsdFt2YWx1ZV09a2V5O30sY29uc3RhbnQoaWRlbnRpdHkpKTsvKipcbiAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW52ZXJ0YCBleGNlcHQgdGhhdCB0aGUgaW52ZXJ0ZWQgb2JqZWN0IGlzIGdlbmVyYXRlZFxuICAgICAgICogZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGVhY2ggZWxlbWVudCBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZVxuICAgICAgICogY29ycmVzcG9uZGluZyBpbnZlcnRlZCB2YWx1ZSBvZiBlYWNoIGludmVydGVkIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzXG4gICAgICAgKiByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgaW52ZXJ0ZWQgdmFsdWUuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICAgKiB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDQuMS4wXG4gICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGludmVydGVkIG9iamVjdC5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9O1xuICAgICAgICpcbiAgICAgICAqIF8uaW52ZXJ0Qnkob2JqZWN0KTtcbiAgICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH1cbiAgICAgICAqXG4gICAgICAgKiBfLmludmVydEJ5KG9iamVjdCwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAqICAgcmV0dXJuICdncm91cCcgKyB2YWx1ZTtcbiAgICAgICAqIH0pO1xuICAgICAgICogLy8gPT4geyAnZ3JvdXAxJzogWydhJywgJ2MnXSwgJ2dyb3VwMic6IFsnYiddIH1cbiAgICAgICAqL3ZhciBpbnZlcnRCeT1jcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsdmFsdWUsa2V5KXtpZih2YWx1ZSE9bnVsbCYmdHlwZW9mIHZhbHVlLnRvU3RyaW5nIT09J2Z1bmN0aW9uJyl7dmFsdWU9bmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7fWlmKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LHZhbHVlKSl7cmVzdWx0W3ZhbHVlXS5wdXNoKGtleSk7fWVsc2V7cmVzdWx0W3ZhbHVlXT1ba2V5XTt9fSxnZXRJdGVyYXRlZSk7LyoqXG4gICAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogWzEsIDIsIDMsIDRdIH0gfV0gfTtcbiAgICAgICAqXG4gICAgICAgKiBfLmludm9rZShvYmplY3QsICdhWzBdLmIuYy5zbGljZScsIDEsIDMpO1xuICAgICAgICogLy8gPT4gWzIsIDNdXG4gICAgICAgKi92YXIgaW52b2tlPWJhc2VSZXN0KGJhc2VJbnZva2UpOy8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAgICAgICAgICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmtleXMobmV3IEZvbyk7XG4gICAgICAgICAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgICAgICpcbiAgICAgICAgICogXy5rZXlzKCdoaScpO1xuICAgICAgICAgKiAvLyA9PiBbJzAnLCAnMSddXG4gICAgICAgICAqL2Z1bmN0aW9uIGtleXMob2JqZWN0KXtyZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KT9hcnJheUxpa2VLZXlzKG9iamVjdCk6YmFzZUtleXMob2JqZWN0KTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmtleXNJbihuZXcgRm9vKTtcbiAgICAgICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICAgICAqL2Z1bmN0aW9uIGtleXNJbihvYmplY3Qpe3JldHVybiBpc0FycmF5TGlrZShvYmplY3QpP2FycmF5TGlrZUtleXMob2JqZWN0LHRydWUpOmJhc2VLZXlzSW4ob2JqZWN0KTt9LyoqXG4gICAgICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5tYXBWYWx1ZXNgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZVxuICAgICAgICAgKiBzYW1lIHZhbHVlcyBhcyBgb2JqZWN0YCBhbmQga2V5cyBnZW5lcmF0ZWQgYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlXG4gICAgICAgICAqIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy44LjBcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICAgICAqIEBzZWUgXy5tYXBWYWx1ZXNcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5tYXBLZXlzKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgICAgKiAgIHJldHVybiBrZXkgKyB2YWx1ZTtcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqIC8vID0+IHsgJ2ExJzogMSwgJ2IyJzogMiB9XG4gICAgICAgICAqL2Z1bmN0aW9uIG1hcEtleXMob2JqZWN0LGl0ZXJhdGVlKXt2YXIgcmVzdWx0PXt9O2l0ZXJhdGVlPWdldEl0ZXJhdGVlKGl0ZXJhdGVlLDMpO2Jhc2VGb3JPd24ob2JqZWN0LGZ1bmN0aW9uKHZhbHVlLGtleSxvYmplY3Qpe2Jhc2VBc3NpZ25WYWx1ZShyZXN1bHQsaXRlcmF0ZWUodmFsdWUsa2V5LG9iamVjdCksdmFsdWUpO30pO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYG9iamVjdGAgYW5kIHZhbHVlcyBnZW5lcmF0ZWRcbiAgICAgICAgICogYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1XG4gICAgICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAgICAgKiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICAgICAqIEBzZWUgXy5tYXBLZXlzXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgICAgICogICAnZnJlZCc6ICAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAgICAgKiAgICdwZWJibGVzJzogeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICAgICAgICAgKiB9O1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2U7IH0pO1xuICAgICAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgJ2FnZScpO1xuICAgICAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICAgICAqL2Z1bmN0aW9uIG1hcFZhbHVlcyhvYmplY3QsaXRlcmF0ZWUpe3ZhciByZXN1bHQ9e307aXRlcmF0ZWU9Z2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMyk7YmFzZUZvck93bihvYmplY3QsZnVuY3Rpb24odmFsdWUsa2V5LG9iamVjdCl7YmFzZUFzc2lnblZhbHVlKHJlc3VsdCxrZXksaXRlcmF0ZWUodmFsdWUsa2V5LG9iamVjdCkpO30pO3JldHVybiByZXN1bHQ7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAgICAgICAgICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAgICAgICAgICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2UgcHJvcGVydGllcyB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAgYXJlXG4gICAgICAgICAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICAgICAgICAgKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICAgICAgICAgKiBhc3NpZ25tZW50LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFN1YnNlcXVlbnRcbiAgICAgICAgICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDAuNS4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgICAgICogICAnYSc6IFt7ICdiJzogMiB9LCB7ICdkJzogNCB9XVxuICAgICAgICAgKiB9O1xuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb3RoZXIgPSB7XG4gICAgICAgICAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAgICAgICAgICogfTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAgICAgICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICAgICAgICAgKi92YXIgbWVyZ2U9Y3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LHNvdXJjZSxzcmNJbmRleCl7YmFzZU1lcmdlKG9iamVjdCxzb3VyY2Usc3JjSW5kZXgpO30pOy8qKlxuICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tZXJnZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgICAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgbWVyZ2VkIHZhbHVlcyBvZiB0aGUgZGVzdGluYXRpb24gYW5kIHNvdXJjZVxuICAgICAgICogcHJvcGVydGllcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIG1lcmdpbmcgaXMgaGFuZGxlZCBieSB0aGVcbiAgICAgICAqIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBzaXggYXJndW1lbnRzOlxuICAgICAgICogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spLlxuICAgICAgICpcbiAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAgICogICBpZiAoXy5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICogICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpO1xuICAgICAgICogICB9XG4gICAgICAgKiB9XG4gICAgICAgKlxuICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbMV0sICdiJzogWzJdIH07XG4gICAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogWzNdLCAnYic6IFs0XSB9O1xuICAgICAgICpcbiAgICAgICAqIF8ubWVyZ2VXaXRoKG9iamVjdCwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICAgICAgICogLy8gPT4geyAnYSc6IFsxLCAzXSwgJ2InOiBbMiwgNF0gfVxuICAgICAgICovdmFyIG1lcmdlV2l0aD1jcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3Qsc291cmNlLHNyY0luZGV4LGN1c3RvbWl6ZXIpe2Jhc2VNZXJnZShvYmplY3Qsc291cmNlLHNyY0luZGV4LGN1c3RvbWl6ZXIpO30pOy8qKlxuICAgICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAgICAgICAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgcGF0aHMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gICAgICAgKlxuICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBgXy5waWNrYC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gb21pdC5cbiAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAgICpcbiAgICAgICAqIF8ub21pdChvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAgICogLy8gPT4geyAnYic6ICcyJyB9XG4gICAgICAgKi92YXIgb21pdD1mbGF0UmVzdChmdW5jdGlvbihvYmplY3QscGF0aHMpe3ZhciByZXN1bHQ9e307aWYob2JqZWN0PT1udWxsKXtyZXR1cm4gcmVzdWx0O312YXIgaXNEZWVwPWZhbHNlO3BhdGhzPWFycmF5TWFwKHBhdGhzLGZ1bmN0aW9uKHBhdGgpe3BhdGg9Y2FzdFBhdGgocGF0aCxvYmplY3QpO2lzRGVlcHx8KGlzRGVlcD1wYXRoLmxlbmd0aD4xKTtyZXR1cm4gcGF0aDt9KTtjb3B5T2JqZWN0KG9iamVjdCxnZXRBbGxLZXlzSW4ob2JqZWN0KSxyZXN1bHQpO2lmKGlzRGVlcCl7cmVzdWx0PWJhc2VDbG9uZShyZXN1bHQsQ0xPTkVfREVFUF9GTEFHfENMT05FX0ZMQVRfRkxBR3xDTE9ORV9TWU1CT0xTX0ZMQUcsY3VzdG9tT21pdENsb25lKTt9dmFyIGxlbmd0aD1wYXRocy5sZW5ndGg7d2hpbGUobGVuZ3RoLS0pe2Jhc2VVbnNldChyZXN1bHQscGF0aHNbbGVuZ3RoXSk7fXJldHVybiByZXN1bHQ7fSk7LyoqXG4gICAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja0J5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2ZcbiAgICAgICAqIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgIHRoYXRcbiAgICAgICAqIGBwcmVkaWNhdGVgIGRvZXNuJ3QgcmV0dXJuIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3b1xuICAgICAgICogYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICAgKlxuICAgICAgICogXy5vbWl0Qnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAgICovZnVuY3Rpb24gb21pdEJ5KG9iamVjdCxwcmVkaWNhdGUpe3JldHVybiBwaWNrQnkob2JqZWN0LG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgcGlja2VkIGBvYmplY3RgIHByb3BlcnRpZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgICAgICovdmFyIHBpY2s9ZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LHBhdGhzKXtyZXR1cm4gb2JqZWN0PT1udWxsP3t9OmJhc2VQaWNrKG9iamVjdCxwYXRocyk7fSk7LyoqXG4gICAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgYG9iamVjdGAgcHJvcGVydGllcyBgcHJlZGljYXRlYCByZXR1cm5zXG4gICAgICAgKiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICAgKlxuICAgICAgICogXy5waWNrQnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAgICovZnVuY3Rpb24gcGlja0J5KG9iamVjdCxwcmVkaWNhdGUpe2lmKG9iamVjdD09bnVsbCl7cmV0dXJue307fXZhciBwcm9wcz1hcnJheU1hcChnZXRBbGxLZXlzSW4ob2JqZWN0KSxmdW5jdGlvbihwcm9wKXtyZXR1cm5bcHJvcF07fSk7cHJlZGljYXRlPWdldEl0ZXJhdGVlKHByZWRpY2F0ZSk7cmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LHByb3BzLGZ1bmN0aW9uKHZhbHVlLHBhdGgpe3JldHVybiBwcmVkaWNhdGUodmFsdWUscGF0aFswXSk7fSk7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmdldGAgZXhjZXB0IHRoYXQgaWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIGFcbiAgICAgICAgICogZnVuY3Rpb24gaXQncyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGl0cyBwYXJlbnQgb2JqZWN0IGFuZFxuICAgICAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHJlc29sdmUuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MxJzogMywgJ2MyJzogXy5jb25zdGFudCg0KSB9IH1dIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMScpO1xuICAgICAgICAgKiAvLyA9PiAzXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMicpO1xuICAgICAgICAgKiAvLyA9PiA0XG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMycsICdkZWZhdWx0Jyk7XG4gICAgICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCBfLmNvbnN0YW50KCdkZWZhdWx0JykpO1xuICAgICAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgICAgICovZnVuY3Rpb24gcmVzdWx0KG9iamVjdCxwYXRoLGRlZmF1bHRWYWx1ZSl7cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7dmFyIGluZGV4PS0xLGxlbmd0aD1wYXRoLmxlbmd0aDsvLyBFbnN1cmUgdGhlIGxvb3AgaXMgZW50ZXJlZCB3aGVuIHBhdGggaXMgZW1wdHkuXG5pZighbGVuZ3RoKXtsZW5ndGg9MTtvYmplY3Q9dW5kZWZpbmVkO313aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHZhbHVlPW9iamVjdD09bnVsbD91bmRlZmluZWQ6b2JqZWN0W3RvS2V5KHBhdGhbaW5kZXhdKV07aWYodmFsdWU9PT11bmRlZmluZWQpe2luZGV4PWxlbmd0aDt2YWx1ZT1kZWZhdWx0VmFsdWU7fW9iamVjdD1pc0Z1bmN0aW9uKHZhbHVlKT92YWx1ZS5jYWxsKG9iamVjdCk6dmFsdWU7fXJldHVybiBvYmplY3Q7fS8qKlxuICAgICAgICAgKiBTZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIGEgcG9ydGlvbiBvZiBgcGF0aGAgZG9lc24ndCBleGlzdCxcbiAgICAgICAgICogaXQncyBjcmVhdGVkLiBBcnJheXMgYXJlIGNyZWF0ZWQgZm9yIG1pc3NpbmcgaW5kZXggcHJvcGVydGllcyB3aGlsZSBvYmplY3RzXG4gICAgICAgICAqIGFyZSBjcmVhdGVkIGZvciBhbGwgb3RoZXIgbWlzc2luZyBwcm9wZXJ0aWVzLiBVc2UgYF8uc2V0V2l0aGAgdG8gY3VzdG9taXplXG4gICAgICAgICAqIGBwYXRoYCBjcmVhdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuNy4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnNldChvYmplY3QsICdhWzBdLmIuYycsIDQpO1xuICAgICAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAgICAgKiAvLyA9PiA0XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uc2V0KG9iamVjdCwgWyd4JywgJzAnLCAneScsICd6J10sIDUpO1xuICAgICAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAgICAgKiAvLyA9PiA1XG4gICAgICAgICAqL2Z1bmN0aW9uIHNldChvYmplY3QscGF0aCx2YWx1ZSl7cmV0dXJuIG9iamVjdD09bnVsbD9vYmplY3Q6YmFzZVNldChvYmplY3QscGF0aCx2YWx1ZSk7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgICAgICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gICAgICAgICAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICAgICAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHt9O1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnNldFdpdGgob2JqZWN0LCAnWzBdWzFdJywgJ2EnLCBPYmplY3QpO1xuICAgICAgICAgKiAvLyA9PiB7ICcwJzogeyAnMSc6ICdhJyB9IH1cbiAgICAgICAgICovZnVuY3Rpb24gc2V0V2l0aChvYmplY3QscGF0aCx2YWx1ZSxjdXN0b21pemVyKXtjdXN0b21pemVyPXR5cGVvZiBjdXN0b21pemVyPT09J2Z1bmN0aW9uJz9jdXN0b21pemVyOnVuZGVmaW5lZDtyZXR1cm4gb2JqZWN0PT1udWxsP29iamVjdDpiYXNlU2V0KG9iamVjdCxwYXRoLHZhbHVlLGN1c3RvbWl6ZXIpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnMgZm9yIGBvYmplY3RgXG4gICAgICAgICAqIHdoaWNoIGNhbiBiZSBjb25zdW1lZCBieSBgXy5mcm9tUGFpcnNgLiBJZiBgb2JqZWN0YCBpcyBhIG1hcCBvciBzZXQsIGl0c1xuICAgICAgICAgKiBlbnRyaWVzIGFyZSByZXR1cm5lZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGFsaWFzIGVudHJpZXNcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgICAgICogICB0aGlzLmIgPSAyO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9QYWlycyhuZXcgRm9vKTtcbiAgICAgICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgICAgICovdmFyIHRvUGFpcnM9Y3JlYXRlVG9QYWlycyhrZXlzKTsvKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZC12YWx1ZSBwYWlyc1xuICAgICAgICAgKiBmb3IgYG9iamVjdGAgd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwXG4gICAgICAgICAqIG9yIHNldCwgaXRzIGVudHJpZXMgYXJlIHJldHVybmVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAYWxpYXMgZW50cmllc0luXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvUGFpcnNJbihuZXcgRm9vKTtcbiAgICAgICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXSwgWydjJywgM11dIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICAgICAqL3ZhciB0b1BhaXJzSW49Y3JlYXRlVG9QYWlycyhrZXlzSW4pOy8qKlxuICAgICAgICAgKiBBbiBhbHRlcm5hdGl2ZSB0byBgXy5yZWR1Y2VgOyB0aGlzIG1ldGhvZCB0cmFuc2Zvcm1zIGBvYmplY3RgIHRvIGEgbmV3XG4gICAgICAgICAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAgICAgICAgICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gICAgICAgICAqIHBvdGVudGlhbGx5IG11dGF0aW5nIHRoZSBgYWNjdW11bGF0b3JgIG9iamVjdC4gSWYgYGFjY3VtdWxhdG9yYCBpcyBub3RcbiAgICAgICAgICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICAgICAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRyYW5zZm9ybShbMiwgMywgNF0sIGZ1bmN0aW9uKHJlc3VsdCwgbikge1xuICAgICAgICAgKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gICAgICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICAgICAqIH0sIFtdKTtcbiAgICAgICAgICogLy8gPT4gWzQsIDldXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udHJhbnNmb3JtKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAgICAgKiB9LCB7fSk7XG4gICAgICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH1cbiAgICAgICAgICovZnVuY3Rpb24gdHJhbnNmb3JtKG9iamVjdCxpdGVyYXRlZSxhY2N1bXVsYXRvcil7dmFyIGlzQXJyPWlzQXJyYXkob2JqZWN0KSxpc0Fyckxpa2U9aXNBcnJ8fGlzQnVmZmVyKG9iamVjdCl8fGlzVHlwZWRBcnJheShvYmplY3QpO2l0ZXJhdGVlPWdldEl0ZXJhdGVlKGl0ZXJhdGVlLDQpO2lmKGFjY3VtdWxhdG9yPT1udWxsKXt2YXIgQ3Rvcj1vYmplY3QmJm9iamVjdC5jb25zdHJ1Y3RvcjtpZihpc0Fyckxpa2Upe2FjY3VtdWxhdG9yPWlzQXJyP25ldyBDdG9yKCk6W107fWVsc2UgaWYoaXNPYmplY3Qob2JqZWN0KSl7YWNjdW11bGF0b3I9aXNGdW5jdGlvbihDdG9yKT9iYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKTp7fTt9ZWxzZXthY2N1bXVsYXRvcj17fTt9fShpc0Fyckxpa2U/YXJyYXlFYWNoOmJhc2VGb3JPd24pKG9iamVjdCxmdW5jdGlvbih2YWx1ZSxpbmRleCxvYmplY3Qpe3JldHVybiBpdGVyYXRlZShhY2N1bXVsYXRvcix2YWx1ZSxpbmRleCxvYmplY3QpO30pO3JldHVybiBhY2N1bXVsYXRvcjt9LyoqXG4gICAgICAgICAqIFJlbW92ZXMgdGhlIHByb3BlcnR5IGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVuc2V0LlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiA3IH0gfV0gfTtcbiAgICAgICAgICogXy51bnNldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8udW5zZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAgICAgICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgICAgICovZnVuY3Rpb24gdW5zZXQob2JqZWN0LHBhdGgpe3JldHVybiBvYmplY3Q9PW51bGw/dHJ1ZTpiYXNlVW5zZXQob2JqZWN0LHBhdGgpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zZXRgIGV4Y2VwdCB0aGF0IGFjY2VwdHMgYHVwZGF0ZXJgIHRvIHByb2R1Y2UgdGhlXG4gICAgICAgICAqIHZhbHVlIHRvIHNldC4gVXNlIGBfLnVwZGF0ZVdpdGhgIHRvIGN1c3RvbWl6ZSBgcGF0aGAgY3JlYXRpb24uIFRoZSBgdXBkYXRlcmBcbiAgICAgICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuNi4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy51cGRhdGUob2JqZWN0LCAnYVswXS5iLmMnLCBmdW5jdGlvbihuKSB7IHJldHVybiBuICogbjsgfSk7XG4gICAgICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAgICAgICAqIC8vID0+IDlcbiAgICAgICAgICpcbiAgICAgICAgICogXy51cGRhdGUob2JqZWN0LCAneFswXS55LnonLCBmdW5jdGlvbihuKSB7IHJldHVybiBuID8gbiArIDEgOiAwOyB9KTtcbiAgICAgICAgICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAgICAgICAgICogLy8gPT4gMFxuICAgICAgICAgKi9mdW5jdGlvbiB1cGRhdGUob2JqZWN0LHBhdGgsdXBkYXRlcil7cmV0dXJuIG9iamVjdD09bnVsbD9vYmplY3Q6YmFzZVVwZGF0ZShvYmplY3QscGF0aCxjYXN0RnVuY3Rpb24odXBkYXRlcikpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51cGRhdGVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gICAgICAgICAqIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0cyBvZiBgcGF0aGAuICBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuNi4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICAgICAqXG4gICAgICAgICAqIF8udXBkYXRlV2l0aChvYmplY3QsICdbMF1bMV0nLCBfLmNvbnN0YW50KCdhJyksIE9iamVjdCk7XG4gICAgICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAgICAgKi9mdW5jdGlvbiB1cGRhdGVXaXRoKG9iamVjdCxwYXRoLHVwZGF0ZXIsY3VzdG9taXplcil7Y3VzdG9taXplcj10eXBlb2YgY3VzdG9taXplcj09PSdmdW5jdGlvbic/Y3VzdG9taXplcjp1bmRlZmluZWQ7cmV0dXJuIG9iamVjdD09bnVsbD9vYmplY3Q6YmFzZVVwZGF0ZShvYmplY3QscGF0aCxjYXN0RnVuY3Rpb24odXBkYXRlciksY3VzdG9taXplcik7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgICAgICogICB0aGlzLmIgPSAyO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICAgICAqXG4gICAgICAgICAqIF8udmFsdWVzKG5ldyBGb28pO1xuICAgICAgICAgKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgICAgICpcbiAgICAgICAgICogXy52YWx1ZXMoJ2hpJyk7XG4gICAgICAgICAqIC8vID0+IFsnaCcsICdpJ11cbiAgICAgICAgICovZnVuY3Rpb24gdmFsdWVzKG9iamVjdCl7cmV0dXJuIG9iamVjdD09bnVsbD9bXTpiYXNlVmFsdWVzKG9iamVjdCxrZXlzKG9iamVjdCkpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHlcbiAgICAgICAgICogdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgICAgICogICB0aGlzLmIgPSAyO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqXG4gICAgICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICAgICAqXG4gICAgICAgICAqIF8udmFsdWVzSW4obmV3IEZvbyk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCAzXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAgICAgKi9mdW5jdGlvbiB2YWx1ZXNJbihvYmplY3Qpe3JldHVybiBvYmplY3Q9PW51bGw/W106YmFzZVZhbHVlcyhvYmplY3Qsa2V5c0luKG9iamVjdCkpO30vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKlxuICAgICAgICAgKiBDbGFtcHMgYG51bWJlcmAgd2l0aGluIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmNsYW1wKC0xMCwgLTUsIDUpO1xuICAgICAgICAgKiAvLyA9PiAtNVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmNsYW1wKDEwLCAtNSwgNSk7XG4gICAgICAgICAqIC8vID0+IDVcbiAgICAgICAgICovZnVuY3Rpb24gY2xhbXAobnVtYmVyLGxvd2VyLHVwcGVyKXtpZih1cHBlcj09PXVuZGVmaW5lZCl7dXBwZXI9bG93ZXI7bG93ZXI9dW5kZWZpbmVkO31pZih1cHBlciE9PXVuZGVmaW5lZCl7dXBwZXI9dG9OdW1iZXIodXBwZXIpO3VwcGVyPXVwcGVyPT09dXBwZXI/dXBwZXI6MDt9aWYobG93ZXIhPT11bmRlZmluZWQpe2xvd2VyPXRvTnVtYmVyKGxvd2VyKTtsb3dlcj1sb3dlcj09PWxvd2VyP2xvd2VyOjA7fXJldHVybiBiYXNlQ2xhbXAodG9OdW1iZXIobnVtYmVyKSxsb3dlcix1cHBlcik7fS8qKlxuICAgICAgICAgKiBDaGVja3MgaWYgYG5gIGlzIGJldHdlZW4gYHN0YXJ0YCBhbmQgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gSWZcbiAgICAgICAgICogYGVuZGAgaXMgbm90IHNwZWNpZmllZCwgaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAgICAgKiBJZiBgc3RhcnRgIGlzIGdyZWF0ZXIgdGhhbiBgZW5kYCB0aGUgcGFyYW1zIGFyZSBzd2FwcGVkIHRvIHN1cHBvcnRcbiAgICAgICAgICogbmVnYXRpdmUgcmFuZ2VzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjMuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqIEBzZWUgXy5yYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaW5SYW5nZSgzLCAyLCA0KTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmluUmFuZ2UoNCwgOCk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5pblJhbmdlKDQsIDIpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmluUmFuZ2UoMiwgMik7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaW5SYW5nZSgxLjIsIDIpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uaW5SYW5nZSg1LjIsIDQpO1xuICAgICAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmluUmFuZ2UoLTMsIC0yLCAtNik7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICovZnVuY3Rpb24gaW5SYW5nZShudW1iZXIsc3RhcnQsZW5kKXtzdGFydD10b0Zpbml0ZShzdGFydCk7aWYoZW5kPT09dW5kZWZpbmVkKXtlbmQ9c3RhcnQ7c3RhcnQ9MDt9ZWxzZXtlbmQ9dG9GaW5pdGUoZW5kKTt9bnVtYmVyPXRvTnVtYmVyKG51bWJlcik7cmV0dXJuIGJhc2VJblJhbmdlKG51bWJlcixzdGFydCxlbmQpO30vKipcbiAgICAgICAgICogUHJvZHVjZXMgYSByYW5kb20gbnVtYmVyIGJldHdlZW4gdGhlIGluY2x1c2l2ZSBgbG93ZXJgIGFuZCBgdXBwZXJgIGJvdW5kcy5cbiAgICAgICAgICogSWYgb25seSBvbmUgYXJndW1lbnQgaXMgcHJvdmlkZWQgYSBudW1iZXIgYmV0d2VlbiBgMGAgYW5kIHRoZSBnaXZlbiBudW1iZXJcbiAgICAgICAgICogaXMgcmV0dXJuZWQuIElmIGBmbG9hdGluZ2AgaXMgYHRydWVgLCBvciBlaXRoZXIgYGxvd2VyYCBvciBgdXBwZXJgIGFyZVxuICAgICAgICAgKiBmbG9hdHMsIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIHJldHVybmVkIGluc3RlYWQgb2YgYW4gaW50ZWdlci5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAgICAgKiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgd2hpY2ggY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXI9MF0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3VwcGVyPTFdIFRoZSB1cHBlciBib3VuZC5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBbZmxvYXRpbmddIFNwZWNpZnkgcmV0dXJuaW5nIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJhbmRvbSgwLCA1KTtcbiAgICAgICAgICogLy8gPT4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5yYW5kb20oNSk7XG4gICAgICAgICAqIC8vID0+IGFsc28gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5yYW5kb20oNSwgdHJ1ZSk7XG4gICAgICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMCBhbmQgNVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJhbmRvbSgxLjIsIDUuMik7XG4gICAgICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMS4yIGFuZCA1LjJcbiAgICAgICAgICovZnVuY3Rpb24gcmFuZG9tKGxvd2VyLHVwcGVyLGZsb2F0aW5nKXtpZihmbG9hdGluZyYmdHlwZW9mIGZsb2F0aW5nIT09J2Jvb2xlYW4nJiZpc0l0ZXJhdGVlQ2FsbChsb3dlcix1cHBlcixmbG9hdGluZykpe3VwcGVyPWZsb2F0aW5nPXVuZGVmaW5lZDt9aWYoZmxvYXRpbmc9PT11bmRlZmluZWQpe2lmKHR5cGVvZiB1cHBlcj09PSdib29sZWFuJyl7ZmxvYXRpbmc9dXBwZXI7dXBwZXI9dW5kZWZpbmVkO31lbHNlIGlmKHR5cGVvZiBsb3dlcj09PSdib29sZWFuJyl7ZmxvYXRpbmc9bG93ZXI7bG93ZXI9dW5kZWZpbmVkO319aWYobG93ZXI9PT11bmRlZmluZWQmJnVwcGVyPT09dW5kZWZpbmVkKXtsb3dlcj0wO3VwcGVyPTE7fWVsc2V7bG93ZXI9dG9GaW5pdGUobG93ZXIpO2lmKHVwcGVyPT09dW5kZWZpbmVkKXt1cHBlcj1sb3dlcjtsb3dlcj0wO31lbHNle3VwcGVyPXRvRmluaXRlKHVwcGVyKTt9fWlmKGxvd2VyPnVwcGVyKXt2YXIgdGVtcD1sb3dlcjtsb3dlcj11cHBlcjt1cHBlcj10ZW1wO31pZihmbG9hdGluZ3x8bG93ZXIlMXx8dXBwZXIlMSl7dmFyIHJhbmQ9bmF0aXZlUmFuZG9tKCk7cmV0dXJuIG5hdGl2ZU1pbihsb3dlcityYW5kKih1cHBlci1sb3dlcitmcmVlUGFyc2VGbG9hdCgnMWUtJysoKHJhbmQrJycpLmxlbmd0aC0xKSkpLHVwcGVyKTt9cmV0dXJuIGJhc2VSYW5kb20obG93ZXIsdXBwZXIpO30vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKlxuICAgICAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBbY2FtZWwgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FtZWxDYXNlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYW1lbCBjYXNlZCBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uY2FtZWxDYXNlKCdGb28gQmFyJyk7XG4gICAgICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uY2FtZWxDYXNlKCctLWZvby1iYXItLScpO1xuICAgICAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmNhbWVsQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgICAgICovdmFyIGNhbWVsQ2FzZT1jcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCx3b3JkLGluZGV4KXt3b3JkPXdvcmQudG9Mb3dlckNhc2UoKTtyZXR1cm4gcmVzdWx0KyhpbmRleD9jYXBpdGFsaXplKHdvcmQpOndvcmQpO30pOy8qKlxuICAgICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlIGFuZCB0aGUgcmVtYWluaW5nXG4gICAgICAgKiB0byBsb3dlciBjYXNlLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNhcGl0YWxpemUuXG4gICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYXBpdGFsaXplZCBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8uY2FwaXRhbGl6ZSgnRlJFRCcpO1xuICAgICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICAgKi9mdW5jdGlvbiBjYXBpdGFsaXplKHN0cmluZyl7cmV0dXJuIHVwcGVyRmlyc3QodG9TdHJpbmcoc3RyaW5nKS50b0xvd2VyQ2FzZSgpKTt9LyoqXG4gICAgICAgICAqIERlYnVycnMgYHN0cmluZ2AgYnkgY29udmVydGluZ1xuICAgICAgICAgKiBbTGF0aW4tMSBTdXBwbGVtZW50XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbi0xX1N1cHBsZW1lbnRfKFVuaWNvZGVfYmxvY2spI0NoYXJhY3Rlcl90YWJsZSlcbiAgICAgICAgICogYW5kIFtMYXRpbiBFeHRlbmRlZC1BXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbl9FeHRlbmRlZC1BKVxuICAgICAgICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMgYW5kIHJlbW92aW5nXG4gICAgICAgICAqIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrcykuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZGVidXJyLlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZGVidXJyKCdkw6lqw6AgdnUnKTtcbiAgICAgICAgICogLy8gPT4gJ2RlamEgdnUnXG4gICAgICAgICAqL2Z1bmN0aW9uIGRlYnVycihzdHJpbmcpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO3JldHVybiBzdHJpbmcmJnN0cmluZy5yZXBsYWNlKHJlTGF0aW4sZGVidXJyTGV0dGVyKS5yZXBsYWNlKHJlQ29tYm9NYXJrLCcnKTt9LyoqXG4gICAgICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBlbmRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFt0YXJnZXRdIFRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj1zdHJpbmcubGVuZ3RoXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIHVwIHRvLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIGB0YXJnZXRgLFxuICAgICAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYycpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdiJywgMik7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICovZnVuY3Rpb24gZW5kc1dpdGgoc3RyaW5nLHRhcmdldCxwb3NpdGlvbil7c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7dGFyZ2V0PWJhc2VUb1N0cmluZyh0YXJnZXQpO3ZhciBsZW5ndGg9c3RyaW5nLmxlbmd0aDtwb3NpdGlvbj1wb3NpdGlvbj09PXVuZGVmaW5lZD9sZW5ndGg6YmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksMCxsZW5ndGgpO3ZhciBlbmQ9cG9zaXRpb247cG9zaXRpb24tPXRhcmdldC5sZW5ndGg7cmV0dXJuIHBvc2l0aW9uPj0wJiZzdHJpbmcuc2xpY2UocG9zaXRpb24sZW5kKT09dGFyZ2V0O30vKipcbiAgICAgICAgICogQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgXCImXCIsIFwiPFwiLCBcIj5cIiwgJ1wiJywgYW5kIFwiJ1wiIGluIGBzdHJpbmdgIHRvIHRoZWlyXG4gICAgICAgICAqIGNvcnJlc3BvbmRpbmcgSFRNTCBlbnRpdGllcy5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIE5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQuIFRvIGVzY2FwZSBhZGRpdGlvbmFsXG4gICAgICAgICAqIGNoYXJhY3RlcnMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaG91Z2ggdGhlIFwiPlwiIGNoYXJhY3RlciBpcyBlc2NhcGVkIGZvciBzeW1tZXRyeSwgY2hhcmFjdGVycyBsaWtlXG4gICAgICAgICAqIFwiPlwiIGFuZCBcIi9cIiBkb24ndCBuZWVkIGVzY2FwaW5nIGluIEhUTUwgYW5kIGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nXG4gICAgICAgICAqIHVubGVzcyB0aGV5J3JlIHBhcnQgb2YgYSB0YWcgb3IgdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLiBTZWVcbiAgICAgICAgICogW01hdGhpYXMgQnluZW5zJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2FtYmlndW91cy1hbXBlcnNhbmRzKVxuICAgICAgICAgKiAodW5kZXIgXCJzZW1pLXJlbGF0ZWQgZnVuIGZhY3RcIikgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICpcbiAgICAgICAgICogV2hlbiB3b3JraW5nIHdpdGggSFRNTCB5b3Ugc2hvdWxkIGFsd2F5c1xuICAgICAgICAgKiBbcXVvdGUgYXR0cmlidXRlIHZhbHVlc10oaHR0cDovL3dvbmtvLmNvbS9wb3N0L2h0bWwtZXNjYXBpbmcpIHRvIHJlZHVjZVxuICAgICAgICAgKiBYU1MgdmVjdG9ycy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmVzY2FwZSgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgICAgICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcydcbiAgICAgICAgICovZnVuY3Rpb24gZXNjYXBlKHN0cmluZyl7c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7cmV0dXJuIHN0cmluZyYmcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKT9zdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsZXNjYXBlSHRtbENoYXIpOnN0cmluZzt9LyoqXG4gICAgICAgICAqIEVzY2FwZXMgdGhlIGBSZWdFeHBgIHNwZWNpYWwgY2hhcmFjdGVycyBcIl5cIiwgXCIkXCIsIFwiXFxcIiwgXCIuXCIsIFwiKlwiLCBcIitcIixcbiAgICAgICAgICogXCI/XCIsIFwiKFwiLCBcIilcIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIGFuZCBcInxcIiBpbiBgc3RyaW5nYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmVzY2FwZVJlZ0V4cCgnW2xvZGFzaF0oaHR0cHM6Ly9sb2Rhc2guY29tLyknKTtcbiAgICAgICAgICogLy8gPT4gJ1xcW2xvZGFzaFxcXVxcKGh0dHBzOi8vbG9kYXNoXFwuY29tL1xcKSdcbiAgICAgICAgICovZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZyl7c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7cmV0dXJuIHN0cmluZyYmcmVIYXNSZWdFeHBDaGFyLnRlc3Qoc3RyaW5nKT9zdHJpbmcucmVwbGFjZShyZVJlZ0V4cENoYXIsJ1xcXFwkJicpOnN0cmluZzt9LyoqXG4gICAgICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICAgICAqIFtrZWJhYiBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXR0ZXJfY2FzZSNTcGVjaWFsX2Nhc2Vfc3R5bGVzKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBrZWJhYiBjYXNlZCBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ua2ViYWJDYXNlKCdGb28gQmFyJyk7XG4gICAgICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmtlYmFiQ2FzZSgnZm9vQmFyJyk7XG4gICAgICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmtlYmFiQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICAgICAqL3ZhciBrZWJhYkNhc2U9Y3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsd29yZCxpbmRleCl7cmV0dXJuIHJlc3VsdCsoaW5kZXg/Jy0nOicnKSt3b3JkLnRvTG93ZXJDYXNlKCk7fSk7LyoqXG4gICAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byBsb3dlciBjYXNlLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8ubG93ZXJDYXNlKCctLUZvby1CYXItLScpO1xuICAgICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICAgKlxuICAgICAgICogXy5sb3dlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICAgKlxuICAgICAgICogXy5sb3dlckNhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgICAqL3ZhciBsb3dlckNhc2U9Y3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsd29yZCxpbmRleCl7cmV0dXJuIHJlc3VsdCsoaW5kZXg/JyAnOicnKSt3b3JkLnRvTG93ZXJDYXNlKCk7fSk7LyoqXG4gICAgICAgKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGBzdHJpbmdgIHRvIGxvd2VyIGNhc2UuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8ubG93ZXJGaXJzdCgnRnJlZCcpO1xuICAgICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICAgKlxuICAgICAgICogXy5sb3dlckZpcnN0KCdGUkVEJyk7XG4gICAgICAgKiAvLyA9PiAnZlJFRCdcbiAgICAgICAqL3ZhciBsb3dlckZpcnN0PWNyZWF0ZUNhc2VGaXJzdCgndG9Mb3dlckNhc2UnKTsvKipcbiAgICAgICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgbGVmdCBhbmQgcmlnaHQgc2lkZXMgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuXG4gICAgICAgICAqIFBhZGRpbmcgY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgY2FuJ3QgYmUgZXZlbmx5IGRpdmlkZWQgYnkgYGxlbmd0aGAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5wYWQoJ2FiYycsIDgpO1xuICAgICAgICAgKiAvLyA9PiAnICBhYmMgICAnXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucGFkKCdhYmMnLCA4LCAnXy0nKTtcbiAgICAgICAgICogLy8gPT4gJ18tYWJjXy1fJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnBhZCgnYWJjJywgMyk7XG4gICAgICAgICAqIC8vID0+ICdhYmMnXG4gICAgICAgICAqL2Z1bmN0aW9uIHBhZChzdHJpbmcsbGVuZ3RoLGNoYXJzKXtzdHJpbmc9dG9TdHJpbmcoc3RyaW5nKTtsZW5ndGg9dG9JbnRlZ2VyKGxlbmd0aCk7dmFyIHN0ckxlbmd0aD1sZW5ndGg/c3RyaW5nU2l6ZShzdHJpbmcpOjA7aWYoIWxlbmd0aHx8c3RyTGVuZ3RoPj1sZW5ndGgpe3JldHVybiBzdHJpbmc7fXZhciBtaWQ9KGxlbmd0aC1zdHJMZW5ndGgpLzI7cmV0dXJuIGNyZWF0ZVBhZGRpbmcobmF0aXZlRmxvb3IobWlkKSxjaGFycykrc3RyaW5nK2NyZWF0ZVBhZGRpbmcobmF0aXZlQ2VpbChtaWQpLGNoYXJzKTt9LyoqXG4gICAgICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIHJpZ2h0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2KTtcbiAgICAgICAgICogLy8gPT4gJ2FiYyAgICdcbiAgICAgICAgICpcbiAgICAgICAgICogXy5wYWRFbmQoJ2FiYycsIDYsICdfLScpO1xuICAgICAgICAgKiAvLyA9PiAnYWJjXy1fJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnBhZEVuZCgnYWJjJywgMyk7XG4gICAgICAgICAqIC8vID0+ICdhYmMnXG4gICAgICAgICAqL2Z1bmN0aW9uIHBhZEVuZChzdHJpbmcsbGVuZ3RoLGNoYXJzKXtzdHJpbmc9dG9TdHJpbmcoc3RyaW5nKTtsZW5ndGg9dG9JbnRlZ2VyKGxlbmd0aCk7dmFyIHN0ckxlbmd0aD1sZW5ndGg/c3RyaW5nU2l6ZShzdHJpbmcpOjA7cmV0dXJuIGxlbmd0aCYmc3RyTGVuZ3RoPGxlbmd0aD9zdHJpbmcrY3JlYXRlUGFkZGluZyhsZW5ndGgtc3RyTGVuZ3RoLGNoYXJzKTpzdHJpbmc7fS8qKlxuICAgICAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYpO1xuICAgICAgICAgKiAvLyA9PiAnICAgYWJjJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCA2LCAnXy0nKTtcbiAgICAgICAgICogLy8gPT4gJ18tX2FiYydcbiAgICAgICAgICpcbiAgICAgICAgICogXy5wYWRTdGFydCgnYWJjJywgMyk7XG4gICAgICAgICAqIC8vID0+ICdhYmMnXG4gICAgICAgICAqL2Z1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZyxsZW5ndGgsY2hhcnMpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO2xlbmd0aD10b0ludGVnZXIobGVuZ3RoKTt2YXIgc3RyTGVuZ3RoPWxlbmd0aD9zdHJpbmdTaXplKHN0cmluZyk6MDtyZXR1cm4gbGVuZ3RoJiZzdHJMZW5ndGg8bGVuZ3RoP2NyZWF0ZVBhZGRpbmcobGVuZ3RoLXN0ckxlbmd0aCxjaGFycykrc3RyaW5nOnN0cmluZzt9LyoqXG4gICAgICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGludGVnZXIgb2YgdGhlIHNwZWNpZmllZCByYWRpeC4gSWYgYHJhZGl4YCBpc1xuICAgICAgICAgKiBgdW5kZWZpbmVkYCBvciBgMGAsIGEgYHJhZGl4YCBvZiBgMTBgIGlzIHVzZWQgdW5sZXNzIGB2YWx1ZWAgaXMgYVxuICAgICAgICAgKiBoZXhhZGVjaW1hbCwgaW4gd2hpY2ggY2FzZSBhIGByYWRpeGAgb2YgYDE2YCBpcyB1c2VkLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgYWxpZ25zIHdpdGggdGhlXG4gICAgICAgICAqIFtFUzUgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjEuMi4yKSBvZiBgcGFyc2VJbnRgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3JhZGl4PTEwXSBUaGUgcmFkaXggdG8gaW50ZXJwcmV0IGB2YWx1ZWAgYnkuXG4gICAgICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnBhcnNlSW50KCcwOCcpO1xuICAgICAgICAgKiAvLyA9PiA4XG4gICAgICAgICAqXG4gICAgICAgICAqIF8ubWFwKFsnNicsICcwOCcsICcxMCddLCBfLnBhcnNlSW50KTtcbiAgICAgICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAgICAgKi9mdW5jdGlvbiBwYXJzZUludChzdHJpbmcscmFkaXgsZ3VhcmQpe2lmKGd1YXJkfHxyYWRpeD09bnVsbCl7cmFkaXg9MDt9ZWxzZSBpZihyYWRpeCl7cmFkaXg9K3JhZGl4O31yZXR1cm4gbmF0aXZlUGFyc2VJbnQodG9TdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCcnKSxyYWRpeHx8MCk7fS8qKlxuICAgICAgICAgKiBSZXBlYXRzIHRoZSBnaXZlbiBzdHJpbmcgYG5gIHRpbWVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHJlcGVhdC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBzdHJpbmcuXG4gICAgICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJlcGVhdGVkIHN0cmluZy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5yZXBlYXQoJyonLCAzKTtcbiAgICAgICAgICogLy8gPT4gJyoqKidcbiAgICAgICAgICpcbiAgICAgICAgICogXy5yZXBlYXQoJ2FiYycsIDIpO1xuICAgICAgICAgKiAvLyA9PiAnYWJjYWJjJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJlcGVhdCgnYWJjJywgMCk7XG4gICAgICAgICAqIC8vID0+ICcnXG4gICAgICAgICAqL2Z1bmN0aW9uIHJlcGVhdChzdHJpbmcsbixndWFyZCl7aWYoZ3VhcmQ/aXNJdGVyYXRlZUNhbGwoc3RyaW5nLG4sZ3VhcmQpOm49PT11bmRlZmluZWQpe249MTt9ZWxzZXtuPXRvSW50ZWdlcihuKTt9cmV0dXJuIGJhc2VSZXBlYXQodG9TdHJpbmcoc3RyaW5nKSxuKTt9LyoqXG4gICAgICAgICAqIFJlcGxhY2VzIG1hdGNoZXMgZm9yIGBwYXR0ZXJuYCBpbiBgc3RyaW5nYCB3aXRoIGByZXBsYWNlbWVudGAuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAgICAgKiBbYFN0cmluZyNyZXBsYWNlYF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3JlcGxhY2UpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICAgICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSByZXBsYWNlbWVudCBUaGUgbWF0Y2ggcmVwbGFjZW1lbnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHN0cmluZy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5yZXBsYWNlKCdIaSBGcmVkJywgJ0ZyZWQnLCAnQmFybmV5Jyk7XG4gICAgICAgICAqIC8vID0+ICdIaSBCYXJuZXknXG4gICAgICAgICAqL2Z1bmN0aW9uIHJlcGxhY2UoKXt2YXIgYXJncz1hcmd1bWVudHMsc3RyaW5nPXRvU3RyaW5nKGFyZ3NbMF0pO3JldHVybiBhcmdzLmxlbmd0aDwzP3N0cmluZzpzdHJpbmcucmVwbGFjZShhcmdzWzFdLGFyZ3NbMl0pO30vKipcbiAgICAgICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgICAgICogW3NuYWtlIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NuYWtlX2Nhc2UpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNuYWtlIGNhc2VkIHN0cmluZy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5zbmFrZUNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uc25ha2VDYXNlKCdmb29CYXInKTtcbiAgICAgICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uc25ha2VDYXNlKCctLUZPTy1CQVItLScpO1xuICAgICAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgICAgICovdmFyIHNuYWtlQ2FzZT1jcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCx3b3JkLGluZGV4KXtyZXR1cm4gcmVzdWx0KyhpbmRleD8nXyc6JycpK3dvcmQudG9Mb3dlckNhc2UoKTt9KTsvKipcbiAgICAgICAqIFNwbGl0cyBgc3RyaW5nYCBieSBgc2VwYXJhdG9yYC5cbiAgICAgICAqXG4gICAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgICAqIFtgU3RyaW5nI3NwbGl0YF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3NwbGl0KS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBzcGxpdC5cbiAgICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gc2VwYXJhdG9yIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byBzcGxpdCBieS5cbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIFRoZSBsZW5ndGggdG8gdHJ1bmNhdGUgcmVzdWx0cyB0by5cbiAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc3RyaW5nIHNlZ21lbnRzLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLnNwbGl0KCdhLWItYycsICctJywgMik7XG4gICAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICAgKi9mdW5jdGlvbiBzcGxpdChzdHJpbmcsc2VwYXJhdG9yLGxpbWl0KXtpZihsaW1pdCYmdHlwZW9mIGxpbWl0IT09J251bWJlcicmJmlzSXRlcmF0ZWVDYWxsKHN0cmluZyxzZXBhcmF0b3IsbGltaXQpKXtzZXBhcmF0b3I9bGltaXQ9dW5kZWZpbmVkO31saW1pdD1saW1pdD09PXVuZGVmaW5lZD9NQVhfQVJSQVlfTEVOR1RIOmxpbWl0Pj4+MDtpZighbGltaXQpe3JldHVybltdO31zdHJpbmc9dG9TdHJpbmcoc3RyaW5nKTtpZihzdHJpbmcmJih0eXBlb2Ygc2VwYXJhdG9yPT09J3N0cmluZyd8fHNlcGFyYXRvciE9bnVsbCYmIWlzUmVnRXhwKHNlcGFyYXRvcikpKXtzZXBhcmF0b3I9YmFzZVRvU3RyaW5nKHNlcGFyYXRvcik7aWYoIXNlcGFyYXRvciYmaGFzVW5pY29kZShzdHJpbmcpKXtyZXR1cm4gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkoc3RyaW5nKSwwLGxpbWl0KTt9fXJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLGxpbWl0KTt9LyoqXG4gICAgICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICAgICAqIFtzdGFydCBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXR0ZXJfY2FzZSNTdHlsaXN0aWNfb3Jfc3BlY2lhbGlzZWRfdXNhZ2UpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjEuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0YXJ0IGNhc2VkIHN0cmluZy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5zdGFydENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICAgICAqIC8vID0+ICdGb28gQmFyJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnN0YXJ0Q2FzZSgnZm9vQmFyJyk7XG4gICAgICAgICAqIC8vID0+ICdGb28gQmFyJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnN0YXJ0Q2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICAgICAqL3ZhciBzdGFydENhc2U9Y3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsd29yZCxpbmRleCl7cmV0dXJuIHJlc3VsdCsoaW5kZXg/JyAnOicnKSt1cHBlckZpcnN0KHdvcmQpO30pOy8qKlxuICAgICAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiB0YXJnZXQgc3RyaW5nLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj0wXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20uXG4gICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2Agc3RhcnRzIHdpdGggYHRhcmdldGAsXG4gICAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdhJyk7XG4gICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgKlxuICAgICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYicpO1xuICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAqXG4gICAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJywgMSk7XG4gICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgKi9mdW5jdGlvbiBzdGFydHNXaXRoKHN0cmluZyx0YXJnZXQscG9zaXRpb24pe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO3Bvc2l0aW9uPXBvc2l0aW9uPT1udWxsPzA6YmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksMCxzdHJpbmcubGVuZ3RoKTt0YXJnZXQ9YmFzZVRvU3RyaW5nKHRhcmdldCk7cmV0dXJuIHN0cmluZy5zbGljZShwb3NpdGlvbixwb3NpdGlvbit0YXJnZXQubGVuZ3RoKT09dGFyZ2V0O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGludGVycG9sYXRlIGRhdGEgcHJvcGVydGllc1xuICAgICAgICAgKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICAgICAgICAgKiBcImVzY2FwZVwiIGRlbGltaXRlcnMsIGFuZCBleGVjdXRlIEphdmFTY3JpcHQgaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuIERhdGFcbiAgICAgICAgICogcHJvcGVydGllcyBtYXkgYmUgYWNjZXNzZWQgYXMgZnJlZSB2YXJpYWJsZXMgaW4gdGhlIHRlbXBsYXRlLiBJZiBhIHNldHRpbmdcbiAgICAgICAgICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogSW4gdGhlIGRldmVsb3BtZW50IGJ1aWxkIGBfLnRlbXBsYXRlYCB1dGlsaXplc1xuICAgICAgICAgKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAgICAgICAgICogZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG4gICAgICAgICAqXG4gICAgICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gICAgICAgICAqIFtsb2Rhc2gncyBjdXN0b20gYnVpbGRzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbG9kYXNoLmNvbS9jdXN0b20tYnVpbGRzKS5cbiAgICAgICAgICpcbiAgICAgICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gICAgICAgICAqIFtDaHJvbWUncyBleHRlbnNpb25zIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9zYW5kYm94aW5nRXZhbCkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSB0ZW1wbGF0ZSBzdHJpbmcuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gICAgICAgICAqICBUaGUgSFRNTCBcImVzY2FwZVwiIGRlbGltaXRlci5cbiAgICAgICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmV2YWx1YXRlPV8udGVtcGxhdGVTZXR0aW5ncy5ldmFsdWF0ZV1cbiAgICAgICAgICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMuaW1wb3J0cz1fLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c11cbiAgICAgICAgICogIEFuIG9iamVjdCB0byBpbXBvcnQgaW50byB0aGUgdGVtcGxhdGUgYXMgZnJlZSB2YXJpYWJsZXMuXG4gICAgICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gICAgICAgICAqICBUaGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNvdXJjZVVSTD0nbG9kYXNoLnRlbXBsYXRlU291cmNlc1tuXSddXG4gICAgICAgICAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnZhcmlhYmxlPSdvYmonXVxuICAgICAgICAgKiAgVGhlIGRhdGEgb2JqZWN0IHZhcmlhYmxlIG5hbWUuXG4gICAgICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFVzZSB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlciB0byBjcmVhdGUgYSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJyk7XG4gICAgICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gICAgICAgICAqIC8vID0+ICdoZWxsbyBmcmVkISdcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPGI+PCUtIHZhbHVlICU+PC9iPicpO1xuICAgICAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICc8c2NyaXB0PicgfSk7XG4gICAgICAgICAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFVzZSB0aGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlciB0byBleGVjdXRlIEphdmFTY3JpcHQgYW5kIGdlbmVyYXRlIEhUTUwuXG4gICAgICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gICAgICAgICAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICAgICAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVXNlIHRoZSBpbnRlcm5hbCBgcHJpbnRgIGZ1bmN0aW9uIGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLlxuICAgICAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JSBwcmludChcImhlbGxvIFwiICsgdXNlcik7ICU+IScpO1xuICAgICAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gICAgICAgICAqIC8vID0+ICdoZWxsbyBiYXJuZXkhJ1xuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICAgICAqIC8vIERpc2FibGUgc3VwcG9ydCBieSByZXBsYWNpbmcgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvICR7IHVzZXIgfSEnKTtcbiAgICAgICAgICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAgICAgICAgICogLy8gPT4gJ2hlbGxvIHBlYmJsZXMhJ1xuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICAgICAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JT0gXCJcXFxcPCUtIHZhbHVlICVcXFxcPlwiICU+Jyk7XG4gICAgICAgICAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJ2lnbm9yZWQnIH0pO1xuICAgICAgICAgKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBVc2UgdGhlIGBpbXBvcnRzYCBvcHRpb24gdG8gaW1wb3J0IGBqUXVlcnlgIGFzIGBqcWAuXG4gICAgICAgICAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gICAgICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUodGV4dCwgeyAnaW1wb3J0cyc6IHsgJ2pxJzogalF1ZXJ5IH0gfSk7XG4gICAgICAgICAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICAgICAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVXNlIHRoZSBgc291cmNlVVJMYCBvcHRpb24gdG8gc3BlY2lmeSBhIGN1c3RvbSBzb3VyY2VVUkwgZm9yIHRoZSB0ZW1wbGF0ZS5cbiAgICAgICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICAgICAgICAgKiBjb21waWxlZChkYXRhKTtcbiAgICAgICAgICogLy8gPT4gRmluZCB0aGUgc291cmNlIG9mIFwiZ3JlZXRpbmcuanN0XCIgdW5kZXIgdGhlIFNvdXJjZXMgdGFiIG9yIFJlc291cmNlcyBwYW5lbCBvZiB0aGUgd2ViIGluc3BlY3Rvci5cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVXNlIHRoZSBgdmFyaWFibGVgIG9wdGlvbiB0byBlbnN1cmUgYSB3aXRoLXN0YXRlbWVudCBpc24ndCB1c2VkIGluIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGkgPCU9IGRhdGEudXNlciAlPiEnLCB7ICd2YXJpYWJsZSc6ICdkYXRhJyB9KTtcbiAgICAgICAgICogY29tcGlsZWQuc291cmNlO1xuICAgICAgICAgKiAvLyA9PiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAqIC8vICAgdmFyIF9fdCwgX19wID0gJyc7XG4gICAgICAgICAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICAgICAgICAgKiAvLyAgIHJldHVybiBfX3A7XG4gICAgICAgICAqIC8vIH1cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVXNlIGN1c3RvbSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLlxuICAgICAgICAgKiBfLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGUgPSAve3soW1xcc1xcU10rPyl9fS9nO1xuICAgICAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICAgICAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ211c3RhY2hlJyB9KTtcbiAgICAgICAgICogLy8gPT4gJ2hlbGxvIG11c3RhY2hlISdcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVXNlIHRoZSBgc291cmNlYCBwcm9wZXJ0eSB0byBpbmxpbmUgY29tcGlsZWQgdGVtcGxhdGVzIGZvciBtZWFuaW5nZnVsXG4gICAgICAgICAqIC8vIGxpbmUgbnVtYmVycyBpbiBlcnJvciBtZXNzYWdlcyBhbmQgc3RhY2sgdHJhY2VzLlxuICAgICAgICAgKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICAgICAgICAgKiAgIHZhciBKU1QgPSB7XFxcbiAgICAgICAgICogICAgIFwibWFpblwiOiAnICsgXy50ZW1wbGF0ZShtYWluVGV4dCkuc291cmNlICsgJ1xcXG4gICAgICAgICAqICAgfTtcXFxuICAgICAgICAgKiAnKTtcbiAgICAgICAgICovZnVuY3Rpb24gdGVtcGxhdGUoc3RyaW5nLG9wdGlvbnMsZ3VhcmQpey8vIEJhc2VkIG9uIEpvaG4gUmVzaWcncyBgdG1wbGAgaW1wbGVtZW50YXRpb25cbi8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbi8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxudmFyIHNldHRpbmdzPWxvZGFzaC50ZW1wbGF0ZVNldHRpbmdzO2lmKGd1YXJkJiZpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsb3B0aW9ucyxndWFyZCkpe29wdGlvbnM9dW5kZWZpbmVkO31zdHJpbmc9dG9TdHJpbmcoc3RyaW5nKTtvcHRpb25zPWFzc2lnbkluV2l0aCh7fSxvcHRpb25zLHNldHRpbmdzLGN1c3RvbURlZmF1bHRzQXNzaWduSW4pO3ZhciBpbXBvcnRzPWFzc2lnbkluV2l0aCh7fSxvcHRpb25zLmltcG9ydHMsc2V0dGluZ3MuaW1wb3J0cyxjdXN0b21EZWZhdWx0c0Fzc2lnbkluKSxpbXBvcnRzS2V5cz1rZXlzKGltcG9ydHMpLGltcG9ydHNWYWx1ZXM9YmFzZVZhbHVlcyhpbXBvcnRzLGltcG9ydHNLZXlzKTt2YXIgaXNFc2NhcGluZyxpc0V2YWx1YXRpbmcsaW5kZXg9MCxpbnRlcnBvbGF0ZT1vcHRpb25zLmludGVycG9sYXRlfHxyZU5vTWF0Y2gsc291cmNlPVwiX19wICs9ICdcIjsvLyBDb21waWxlIHRoZSByZWdleHAgdG8gbWF0Y2ggZWFjaCBkZWxpbWl0ZXIuXG52YXIgcmVEZWxpbWl0ZXJzPVJlZ0V4cCgob3B0aW9ucy5lc2NhcGV8fHJlTm9NYXRjaCkuc291cmNlKyd8JytpbnRlcnBvbGF0ZS5zb3VyY2UrJ3wnKyhpbnRlcnBvbGF0ZT09PXJlSW50ZXJwb2xhdGU/cmVFc1RlbXBsYXRlOnJlTm9NYXRjaCkuc291cmNlKyd8Jysob3B0aW9ucy5ldmFsdWF0ZXx8cmVOb01hdGNoKS5zb3VyY2UrJ3wkJywnZycpOy8vIFVzZSBhIHNvdXJjZVVSTCBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbnZhciBzb3VyY2VVUkw9Jy8vIyBzb3VyY2VVUkw9JysoJ3NvdXJjZVVSTCdpbiBvcHRpb25zP29wdGlvbnMuc291cmNlVVJMOidsb2Rhc2gudGVtcGxhdGVTb3VyY2VzWycrICsrdGVtcGxhdGVDb3VudGVyKyddJykrJ1xcbic7c3RyaW5nLnJlcGxhY2UocmVEZWxpbWl0ZXJzLGZ1bmN0aW9uKG1hdGNoLGVzY2FwZVZhbHVlLGludGVycG9sYXRlVmFsdWUsZXNUZW1wbGF0ZVZhbHVlLGV2YWx1YXRlVmFsdWUsb2Zmc2V0KXtpbnRlcnBvbGF0ZVZhbHVlfHwoaW50ZXJwb2xhdGVWYWx1ZT1lc1RlbXBsYXRlVmFsdWUpOy8vIEVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgY2FuJ3QgYmUgaW5jbHVkZWQgaW4gc3RyaW5nIGxpdGVyYWxzLlxuc291cmNlKz1zdHJpbmcuc2xpY2UoaW5kZXgsb2Zmc2V0KS5yZXBsYWNlKHJlVW5lc2NhcGVkU3RyaW5nLGVzY2FwZVN0cmluZ0NoYXIpOy8vIFJlcGxhY2UgZGVsaW1pdGVycyB3aXRoIHNuaXBwZXRzLlxuaWYoZXNjYXBlVmFsdWUpe2lzRXNjYXBpbmc9dHJ1ZTtzb3VyY2UrPVwiJyArXFxuX19lKFwiK2VzY2FwZVZhbHVlK1wiKSArXFxuJ1wiO31pZihldmFsdWF0ZVZhbHVlKXtpc0V2YWx1YXRpbmc9dHJ1ZTtzb3VyY2UrPVwiJztcXG5cIitldmFsdWF0ZVZhbHVlK1wiO1xcbl9fcCArPSAnXCI7fWlmKGludGVycG9sYXRlVmFsdWUpe3NvdXJjZSs9XCInICtcXG4oKF9fdCA9IChcIitpbnRlcnBvbGF0ZVZhbHVlK1wiKSkgPT0gbnVsbCA/ICcnIDogX190KSArXFxuJ1wiO31pbmRleD1vZmZzZXQrbWF0Y2gubGVuZ3RoOy8vIFRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgcHJvZHVjdHMgbmVlZHMgYG1hdGNoYCByZXR1cm5lZCBpblxuLy8gb3JkZXIgdG8gcHJvZHVjZSB0aGUgY29ycmVjdCBgb2Zmc2V0YCB2YWx1ZS5cbnJldHVybiBtYXRjaDt9KTtzb3VyY2UrPVwiJztcXG5cIjsvLyBJZiBgdmFyaWFibGVgIGlzIG5vdCBzcGVjaWZpZWQgd3JhcCBhIHdpdGgtc3RhdGVtZW50IGFyb3VuZCB0aGUgZ2VuZXJhdGVkXG4vLyBjb2RlIHRvIGFkZCB0aGUgZGF0YSBvYmplY3QgdG8gdGhlIHRvcCBvZiB0aGUgc2NvcGUgY2hhaW4uXG52YXIgdmFyaWFibGU9b3B0aW9ucy52YXJpYWJsZTtpZighdmFyaWFibGUpe3NvdXJjZT0nd2l0aCAob2JqKSB7XFxuJytzb3VyY2UrJ1xcbn1cXG4nO30vLyBDbGVhbnVwIGNvZGUgYnkgc3RyaXBwaW5nIGVtcHR5IHN0cmluZ3MuXG5zb3VyY2U9KGlzRXZhbHVhdGluZz9zb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywnJyk6c291cmNlKS5yZXBsYWNlKHJlRW1wdHlTdHJpbmdNaWRkbGUsJyQxJykucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsJyQxOycpOy8vIEZyYW1lIGNvZGUgYXMgdGhlIGZ1bmN0aW9uIGJvZHkuXG5zb3VyY2U9J2Z1bmN0aW9uKCcrKHZhcmlhYmxlfHwnb2JqJykrJykge1xcbicrKHZhcmlhYmxlPycnOidvYmogfHwgKG9iaiA9IHt9KTtcXG4nKStcInZhciBfX3QsIF9fcCA9ICcnXCIrKGlzRXNjYXBpbmc/JywgX19lID0gXy5lc2NhcGUnOicnKSsoaXNFdmFsdWF0aW5nPycsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicrXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIjonO1xcbicpK3NvdXJjZSsncmV0dXJuIF9fcFxcbn0nO3ZhciByZXN1bHQ9YXR0ZW1wdChmdW5jdGlvbigpe3JldHVybiBGdW5jdGlvbihpbXBvcnRzS2V5cyxzb3VyY2VVUkwrJ3JldHVybiAnK3NvdXJjZSkuYXBwbHkodW5kZWZpbmVkLGltcG9ydHNWYWx1ZXMpO30pOy8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uJ3Mgc291cmNlIGJ5IGl0cyBgdG9TdHJpbmdgIG1ldGhvZCBvclxuLy8gdGhlIGBzb3VyY2VgIHByb3BlcnR5IGFzIGEgY29udmVuaWVuY2UgZm9yIGlubGluaW5nIGNvbXBpbGVkIHRlbXBsYXRlcy5cbnJlc3VsdC5zb3VyY2U9c291cmNlO2lmKGlzRXJyb3IocmVzdWx0KSl7dGhyb3cgcmVzdWx0O31yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIGEgd2hvbGUsIHRvIGxvd2VyIGNhc2UganVzdCBsaWtlXG4gICAgICAgICAqIFtTdHJpbmcjdG9Mb3dlckNhc2VdKGh0dHBzOi8vbWRuLmlvL3RvTG93ZXJDYXNlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9Mb3dlcignLS1Gb28tQmFyLS0nKTtcbiAgICAgICAgICogLy8gPT4gJy0tZm9vLWJhci0tJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvTG93ZXIoJ2Zvb0JhcicpO1xuICAgICAgICAgKiAvLyA9PiAnZm9vYmFyJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvTG93ZXIoJ19fRk9PX0JBUl9fJyk7XG4gICAgICAgICAqIC8vID0+ICdfX2Zvb19iYXJfXydcbiAgICAgICAgICovZnVuY3Rpb24gdG9Mb3dlcih2YWx1ZSl7cmV0dXJuIHRvU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpO30vKipcbiAgICAgICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIGEgd2hvbGUsIHRvIHVwcGVyIGNhc2UganVzdCBsaWtlXG4gICAgICAgICAqIFtTdHJpbmcjdG9VcHBlckNhc2VdKGh0dHBzOi8vbWRuLmlvL3RvVXBwZXJDYXNlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9VcHBlcignLS1mb28tYmFyLS0nKTtcbiAgICAgICAgICogLy8gPT4gJy0tRk9PLUJBUi0tJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvVXBwZXIoJ2Zvb0JhcicpO1xuICAgICAgICAgKiAvLyA9PiAnRk9PQkFSJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRvVXBwZXIoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICAgICAqIC8vID0+ICdfX0ZPT19CQVJfXydcbiAgICAgICAgICovZnVuY3Rpb24gdG9VcHBlcih2YWx1ZSl7cmV0dXJuIHRvU3RyaW5nKHZhbHVlKS50b1VwcGVyQ2FzZSgpO30vKipcbiAgICAgICAgICogUmVtb3ZlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIG9yIHNwZWNpZmllZCBjaGFyYWN0ZXJzIGZyb20gYHN0cmluZ2AuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy50cmltKCcgIGFiYyAgJyk7XG4gICAgICAgICAqIC8vID0+ICdhYmMnXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udHJpbSgnLV8tYWJjLV8tJywgJ18tJyk7XG4gICAgICAgICAqIC8vID0+ICdhYmMnXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ubWFwKFsnICBmb28gICcsICcgIGJhciAgJ10sIF8udHJpbSk7XG4gICAgICAgICAqIC8vID0+IFsnZm9vJywgJ2JhciddXG4gICAgICAgICAqL2Z1bmN0aW9uIHRyaW0oc3RyaW5nLGNoYXJzLGd1YXJkKXtzdHJpbmc9dG9TdHJpbmcoc3RyaW5nKTtpZihzdHJpbmcmJihndWFyZHx8Y2hhcnM9PT11bmRlZmluZWQpKXtyZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVUcmltLCcnKTt9aWYoIXN0cmluZ3x8IShjaGFycz1iYXNlVG9TdHJpbmcoY2hhcnMpKSl7cmV0dXJuIHN0cmluZzt9dmFyIHN0clN5bWJvbHM9c3RyaW5nVG9BcnJheShzdHJpbmcpLGNoclN5bWJvbHM9c3RyaW5nVG9BcnJheShjaGFycyksc3RhcnQ9Y2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsY2hyU3ltYm9scyksZW5kPWNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scyxjaHJTeW1ib2xzKSsxO3JldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scyxzdGFydCxlbmQpLmpvaW4oJycpO30vKipcbiAgICAgICAgICogUmVtb3ZlcyB0cmFpbGluZyB3aGl0ZXNwYWNlIG9yIHNwZWNpZmllZCBjaGFyYWN0ZXJzIGZyb20gYHN0cmluZ2AuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy50cmltRW5kKCcgIGFiYyAgJyk7XG4gICAgICAgICAqIC8vID0+ICcgIGFiYydcbiAgICAgICAgICpcbiAgICAgICAgICogXy50cmltRW5kKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgICAgICogLy8gPT4gJy1fLWFiYydcbiAgICAgICAgICovZnVuY3Rpb24gdHJpbUVuZChzdHJpbmcsY2hhcnMsZ3VhcmQpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO2lmKHN0cmluZyYmKGd1YXJkfHxjaGFycz09PXVuZGVmaW5lZCkpe3JldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1FbmQsJycpO31pZighc3RyaW5nfHwhKGNoYXJzPWJhc2VUb1N0cmluZyhjaGFycykpKXtyZXR1cm4gc3RyaW5nO312YXIgc3RyU3ltYm9scz1zdHJpbmdUb0FycmF5KHN0cmluZyksZW5kPWNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scyxzdHJpbmdUb0FycmF5KGNoYXJzKSkrMTtyZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsMCxlbmQpLmpvaW4oJycpO30vKipcbiAgICAgICAgICogUmVtb3ZlcyBsZWFkaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPXdoaXRlc3BhY2VdIFRoZSBjaGFyYWN0ZXJzIHRvIHRyaW0uXG4gICAgICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRyaW1TdGFydCgnICBhYmMgICcpO1xuICAgICAgICAgKiAvLyA9PiAnYWJjICAnXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udHJpbVN0YXJ0KCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgICAgICogLy8gPT4gJ2FiYy1fLSdcbiAgICAgICAgICovZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cmluZyxjaGFycyxndWFyZCl7c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7aWYoc3RyaW5nJiYoZ3VhcmR8fGNoYXJzPT09dW5kZWZpbmVkKSl7cmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbVN0YXJ0LCcnKTt9aWYoIXN0cmluZ3x8IShjaGFycz1iYXNlVG9TdHJpbmcoY2hhcnMpKSl7cmV0dXJuIHN0cmluZzt9dmFyIHN0clN5bWJvbHM9c3RyaW5nVG9BcnJheShzdHJpbmcpLHN0YXJ0PWNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLHN0cmluZ1RvQXJyYXkoY2hhcnMpKTtyZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsc3RhcnQpLmpvaW4oJycpO30vKipcbiAgICAgICAgICogVHJ1bmNhdGVzIGBzdHJpbmdgIGlmIGl0J3MgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aC5cbiAgICAgICAgICogVGhlIGxhc3QgY2hhcmFjdGVycyBvZiB0aGUgdHJ1bmNhdGVkIHN0cmluZyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgb21pc3Npb25cbiAgICAgICAgICogc3RyaW5nIHdoaWNoIGRlZmF1bHRzIHRvIFwiLi4uXCIuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gdHJ1bmNhdGUuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTMwXSBUaGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoLlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMub21pc3Npb249Jy4uLiddIFRoZSBzdHJpbmcgdG8gaW5kaWNhdGUgdGV4dCBpcyBvbWl0dGVkLlxuICAgICAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtvcHRpb25zLnNlcGFyYXRvcl0gVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHRydW5jYXRlIHRvLlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cnVuY2F0ZWQgc3RyaW5nLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJyk7XG4gICAgICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm8uLi4nXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICAgICAqICAgJ2xlbmd0aCc6IDI0LFxuICAgICAgICAgKiAgICdzZXBhcmF0b3InOiAnICdcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUsLi4uJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAgICAgKiAgICdsZW5ndGgnOiAyNCxcbiAgICAgICAgICogICAnc2VwYXJhdG9yJzogLyw/ICsvXG4gICAgICAgICAqIH0pO1xuICAgICAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLi4uJ1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAgICAgKiAgICdvbWlzc2lvbic6ICcgWy4uLl0nXG4gICAgICAgICAqIH0pO1xuICAgICAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnIFsuLi5dJ1xuICAgICAgICAgKi9mdW5jdGlvbiB0cnVuY2F0ZShzdHJpbmcsb3B0aW9ucyl7dmFyIGxlbmd0aD1ERUZBVUxUX1RSVU5DX0xFTkdUSCxvbWlzc2lvbj1ERUZBVUxUX1RSVU5DX09NSVNTSU9OO2lmKGlzT2JqZWN0KG9wdGlvbnMpKXt2YXIgc2VwYXJhdG9yPSdzZXBhcmF0b3InaW4gb3B0aW9ucz9vcHRpb25zLnNlcGFyYXRvcjpzZXBhcmF0b3I7bGVuZ3RoPSdsZW5ndGgnaW4gb3B0aW9ucz90b0ludGVnZXIob3B0aW9ucy5sZW5ndGgpOmxlbmd0aDtvbWlzc2lvbj0nb21pc3Npb24naW4gb3B0aW9ucz9iYXNlVG9TdHJpbmcob3B0aW9ucy5vbWlzc2lvbik6b21pc3Npb247fXN0cmluZz10b1N0cmluZyhzdHJpbmcpO3ZhciBzdHJMZW5ndGg9c3RyaW5nLmxlbmd0aDtpZihoYXNVbmljb2RlKHN0cmluZykpe3ZhciBzdHJTeW1ib2xzPXN0cmluZ1RvQXJyYXkoc3RyaW5nKTtzdHJMZW5ndGg9c3RyU3ltYm9scy5sZW5ndGg7fWlmKGxlbmd0aD49c3RyTGVuZ3RoKXtyZXR1cm4gc3RyaW5nO312YXIgZW5kPWxlbmd0aC1zdHJpbmdTaXplKG9taXNzaW9uKTtpZihlbmQ8MSl7cmV0dXJuIG9taXNzaW9uO312YXIgcmVzdWx0PXN0clN5bWJvbHM/Y2FzdFNsaWNlKHN0clN5bWJvbHMsMCxlbmQpLmpvaW4oJycpOnN0cmluZy5zbGljZSgwLGVuZCk7aWYoc2VwYXJhdG9yPT09dW5kZWZpbmVkKXtyZXR1cm4gcmVzdWx0K29taXNzaW9uO31pZihzdHJTeW1ib2xzKXtlbmQrPXJlc3VsdC5sZW5ndGgtZW5kO31pZihpc1JlZ0V4cChzZXBhcmF0b3IpKXtpZihzdHJpbmcuc2xpY2UoZW5kKS5zZWFyY2goc2VwYXJhdG9yKSl7dmFyIG1hdGNoLHN1YnN0cmluZz1yZXN1bHQ7aWYoIXNlcGFyYXRvci5nbG9iYWwpe3NlcGFyYXRvcj1SZWdFeHAoc2VwYXJhdG9yLnNvdXJjZSx0b1N0cmluZyhyZUZsYWdzLmV4ZWMoc2VwYXJhdG9yKSkrJ2cnKTt9c2VwYXJhdG9yLmxhc3RJbmRleD0wO3doaWxlKG1hdGNoPXNlcGFyYXRvci5leGVjKHN1YnN0cmluZykpe3ZhciBuZXdFbmQ9bWF0Y2guaW5kZXg7fXJlc3VsdD1yZXN1bHQuc2xpY2UoMCxuZXdFbmQ9PT11bmRlZmluZWQ/ZW5kOm5ld0VuZCk7fX1lbHNlIGlmKHN0cmluZy5pbmRleE9mKGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpLGVuZCkhPWVuZCl7dmFyIGluZGV4PXJlc3VsdC5sYXN0SW5kZXhPZihzZXBhcmF0b3IpO2lmKGluZGV4Pi0xKXtyZXN1bHQ9cmVzdWx0LnNsaWNlKDAsaW5kZXgpO319cmV0dXJuIHJlc3VsdCtvbWlzc2lvbjt9LyoqXG4gICAgICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLmVzY2FwZWA7IHRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBIVE1MIGVudGl0aWVzXG4gICAgICAgICAqIGAmYW1wO2AsIGAmbHQ7YCwgYCZndDtgLCBgJnF1b3Q7YCwgYW5kIGAmIzM5O2AgaW4gYHN0cmluZ2AgdG9cbiAgICAgICAgICogdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogTm8gb3RoZXIgSFRNTCBlbnRpdGllcyBhcmUgdW5lc2NhcGVkLiBUbyB1bmVzY2FwZSBhZGRpdGlvbmFsXG4gICAgICAgICAqIEhUTUwgZW50aXRpZXMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAwLjYuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgc3RyaW5nLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnVuZXNjYXBlKCdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnKTtcbiAgICAgICAgICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJ1xuICAgICAgICAgKi9mdW5jdGlvbiB1bmVzY2FwZShzdHJpbmcpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO3JldHVybiBzdHJpbmcmJnJlSGFzRXNjYXBlZEh0bWwudGVzdChzdHJpbmcpP3N0cmluZy5yZXBsYWNlKHJlRXNjYXBlZEh0bWwsdW5lc2NhcGVIdG1sQ2hhcik6c3RyaW5nO30vKipcbiAgICAgICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gdXBwZXIgY2FzZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udXBwZXJDYXNlKCctLWZvby1iYXInKTtcbiAgICAgICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udXBwZXJDYXNlKCdmb29CYXInKTtcbiAgICAgICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udXBwZXJDYXNlKCdfX2Zvb19iYXJfXycpO1xuICAgICAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgICAgICovdmFyIHVwcGVyQ2FzZT1jcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCx3b3JkLGluZGV4KXtyZXR1cm4gcmVzdWx0KyhpbmRleD8nICc6JycpK3dvcmQudG9VcHBlckNhc2UoKTt9KTsvKipcbiAgICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy51cHBlckZpcnN0KCdmcmVkJyk7XG4gICAgICAgKiAvLyA9PiAnRnJlZCdcbiAgICAgICAqXG4gICAgICAgKiBfLnVwcGVyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgICAqIC8vID0+ICdGUkVEJ1xuICAgICAgICovdmFyIHVwcGVyRmlyc3Q9Y3JlYXRlQ2FzZUZpcnN0KCd0b1VwcGVyQ2FzZScpOy8qKlxuICAgICAgICAgKiBTcGxpdHMgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBbcGF0dGVybl0gVGhlIHBhdHRlcm4gdG8gbWF0Y2ggd29yZHMuXG4gICAgICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICAgICAqIC8vID0+IFsnZnJlZCcsICdiYXJuZXknLCAncGViYmxlcyddXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJywgL1teLCBdKy9nKTtcbiAgICAgICAgICogLy8gPT4gWydmcmVkJywgJ2Jhcm5leScsICcmJywgJ3BlYmJsZXMnXVxuICAgICAgICAgKi9mdW5jdGlvbiB3b3JkcyhzdHJpbmcscGF0dGVybixndWFyZCl7c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7cGF0dGVybj1ndWFyZD91bmRlZmluZWQ6cGF0dGVybjtpZihwYXR0ZXJuPT09dW5kZWZpbmVkKXtyZXR1cm4gaGFzVW5pY29kZVdvcmQoc3RyaW5nKT91bmljb2RlV29yZHMoc3RyaW5nKTphc2NpaVdvcmRzKHN0cmluZyk7fXJldHVybiBzdHJpbmcubWF0Y2gocGF0dGVybil8fFtdO30vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKlxuICAgICAgICAgKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICAgICAgICAgKiBvYmplY3QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhdHRlbXB0LlxuICAgICAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICAgICAgICAgKiB2YXIgZWxlbWVudHMgPSBfLmF0dGVtcHQoZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgICAgICogICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gICAgICAgICAqIH0sICc+Xz4nKTtcbiAgICAgICAgICpcbiAgICAgICAgICogaWYgKF8uaXNFcnJvcihlbGVtZW50cykpIHtcbiAgICAgICAgICogICBlbGVtZW50cyA9IFtdO1xuICAgICAgICAgKiB9XG4gICAgICAgICAqL3ZhciBhdHRlbXB0PWJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsYXJncyl7dHJ5e3JldHVybiBhcHBseShmdW5jLHVuZGVmaW5lZCxhcmdzKTt9Y2F0Y2goZSl7cmV0dXJuIGlzRXJyb3IoZSk/ZTpuZXcgRXJyb3IoZSk7fX0pOy8qKlxuICAgICAgICogQmluZHMgbWV0aG9kcyBvZiBhbiBvYmplY3QgdG8gdGhlIG9iamVjdCBpdHNlbGYsIG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZ1xuICAgICAgICogbWV0aG9kLlxuICAgICAgICpcbiAgICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBiaW5kIGFuZCBhc3NpZ24gdGhlIGJvdW5kIG1ldGhvZHMgdG8uXG4gICAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBtZXRob2ROYW1lcyBUaGUgb2JqZWN0IG1ldGhvZCBuYW1lcyB0byBiaW5kLlxuICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogdmFyIHZpZXcgPSB7XG4gICAgICAgKiAgICdsYWJlbCc6ICdkb2NzJyxcbiAgICAgICAqICAgJ2NsaWNrJzogZnVuY3Rpb24oKSB7XG4gICAgICAgKiAgICAgY29uc29sZS5sb2coJ2NsaWNrZWQgJyArIHRoaXMubGFiZWwpO1xuICAgICAgICogICB9XG4gICAgICAgKiB9O1xuICAgICAgICpcbiAgICAgICAqIF8uYmluZEFsbCh2aWV3LCBbJ2NsaWNrJ10pO1xuICAgICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHZpZXcuY2xpY2spO1xuICAgICAgICogLy8gPT4gTG9ncyAnY2xpY2tlZCBkb2NzJyB3aGVuIGNsaWNrZWQuXG4gICAgICAgKi92YXIgYmluZEFsbD1mbGF0UmVzdChmdW5jdGlvbihvYmplY3QsbWV0aG9kTmFtZXMpe2FycmF5RWFjaChtZXRob2ROYW1lcyxmdW5jdGlvbihrZXkpe2tleT10b0tleShrZXkpO2Jhc2VBc3NpZ25WYWx1ZShvYmplY3Qsa2V5LGJpbmQob2JqZWN0W2tleV0sb2JqZWN0KSk7fSk7cmV0dXJuIG9iamVjdDt9KTsvKipcbiAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGl0ZXJhdGVzIG92ZXIgYHBhaXJzYCBhbmQgaW52b2tlcyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAgICogZnVuY3Rpb24gb2YgdGhlIGZpcnN0IHByZWRpY2F0ZSB0byByZXR1cm4gdHJ1dGh5LiBUaGUgcHJlZGljYXRlLWZ1bmN0aW9uXG4gICAgICAgKiBwYWlycyBhcmUgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkXG4gICAgICAgKiBmdW5jdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIHByZWRpY2F0ZS1mdW5jdGlvbiBwYWlycy5cbiAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogdmFyIGZ1bmMgPSBfLmNvbmQoW1xuICAgICAgICogICBbXy5tYXRjaGVzKHsgJ2EnOiAxIH0pLCAgICAgICAgICAgXy5jb25zdGFudCgnbWF0Y2hlcyBBJyldLFxuICAgICAgICogICBbXy5jb25mb3Jtcyh7ICdiJzogXy5pc051bWJlciB9KSwgXy5jb25zdGFudCgnbWF0Y2hlcyBCJyldLFxuICAgICAgICogICBbXy5zdHViVHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgXy5jb25zdGFudCgnbm8gbWF0Y2gnKV1cbiAgICAgICAqIF0pO1xuICAgICAgICpcbiAgICAgICAqIGZ1bmMoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgICAqIC8vID0+ICdtYXRjaGVzIEEnXG4gICAgICAgKlxuICAgICAgICogZnVuYyh7ICdhJzogMCwgJ2InOiAxIH0pO1xuICAgICAgICogLy8gPT4gJ21hdGNoZXMgQidcbiAgICAgICAqXG4gICAgICAgKiBmdW5jKHsgJ2EnOiAnMScsICdiJzogJzInIH0pO1xuICAgICAgICogLy8gPT4gJ25vIG1hdGNoJ1xuICAgICAgICovZnVuY3Rpb24gY29uZChwYWlycyl7dmFyIGxlbmd0aD1wYWlycz09bnVsbD8wOnBhaXJzLmxlbmd0aCx0b0l0ZXJhdGVlPWdldEl0ZXJhdGVlKCk7cGFpcnM9IWxlbmd0aD9bXTphcnJheU1hcChwYWlycyxmdW5jdGlvbihwYWlyKXtpZih0eXBlb2YgcGFpclsxXSE9PSdmdW5jdGlvbicpe3Rocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTt9cmV0dXJuW3RvSXRlcmF0ZWUocGFpclswXSkscGFpclsxXV07fSk7cmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3Mpe3ZhciBpbmRleD0tMTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHBhaXI9cGFpcnNbaW5kZXhdO2lmKGFwcGx5KHBhaXJbMF0sdGhpcyxhcmdzKSl7cmV0dXJuIGFwcGx5KHBhaXJbMV0sdGhpcyxhcmdzKTt9fX0pO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgcHJlZGljYXRlIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aFxuICAgICAgICAgKiB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB2YWx1ZXMgb2YgYSBnaXZlbiBvYmplY3QsIHJldHVybmluZyBgdHJ1ZWAgaWZcbiAgICAgICAgICogYWxsIHByZWRpY2F0ZXMgcmV0dXJuIHRydXRoeSwgZWxzZSBgZmFsc2VgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAqKk5vdGU6KiogVGhlIGNyZWF0ZWQgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBgXy5jb25mb3Jtc1RvYCB3aXRoXG4gICAgICAgICAqIGBzb3VyY2VgIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgICAgICogICB7ICdhJzogMiwgJ2InOiAxIH0sXG4gICAgICAgICAqICAgeyAnYSc6IDEsICdiJzogMiB9XG4gICAgICAgICAqIF07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8uY29uZm9ybXMoeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pKTtcbiAgICAgICAgICogLy8gPT4gW3sgJ2EnOiAxLCAnYic6IDIgfV1cbiAgICAgICAgICovZnVuY3Rpb24gY29uZm9ybXMoc291cmNlKXtyZXR1cm4gYmFzZUNvbmZvcm1zKGJhc2VDbG9uZShzb3VyY2UsQ0xPTkVfREVFUF9GTEFHKSk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDIuNC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICAgICAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAgICAgICAgICpcbiAgICAgICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICovZnVuY3Rpb24gY29uc3RhbnQodmFsdWUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2YWx1ZTt9O30vKipcbiAgICAgICAgICogQ2hlY2tzIGB2YWx1ZWAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBpblxuICAgICAgICAgKiBpdHMgcGxhY2UuIFRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBgbnVsbGAsXG4gICAgICAgICAqIG9yIGB1bmRlZmluZWRgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIFRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uZGVmYXVsdFRvKDEsIDEwKTtcbiAgICAgICAgICogLy8gPT4gMVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLmRlZmF1bHRUbyh1bmRlZmluZWQsIDEwKTtcbiAgICAgICAgICogLy8gPT4gMTBcbiAgICAgICAgICovZnVuY3Rpb24gZGVmYXVsdFRvKHZhbHVlLGRlZmF1bHRWYWx1ZSl7cmV0dXJuIHZhbHVlPT1udWxsfHx2YWx1ZSE9PXZhbHVlP2RlZmF1bHRWYWx1ZTp2YWx1ZTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAgICAgICAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAgICAgICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgICAgICogQHNlZSBfLmZsb3dSaWdodFxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgICAgICogfVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93KFtfLmFkZCwgc3F1YXJlXSk7XG4gICAgICAgICAqIGFkZFNxdWFyZSgxLCAyKTtcbiAgICAgICAgICogLy8gPT4gOVxuICAgICAgICAgKi92YXIgZmxvdz1jcmVhdGVGbG93KCk7LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxvd2AgZXhjZXB0IHRoYXQgaXQgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXRcbiAgICAgICAgICogaW52b2tlcyB0aGUgZ2l2ZW4gZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgICAgICogQHNlZSBfLmZsb3dcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICAgICAqIH1cbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvd1JpZ2h0KFtzcXVhcmUsIF8uYWRkXSk7XG4gICAgICAgICAqIGFkZFNxdWFyZSgxLCAyKTtcbiAgICAgICAgICogLy8gPT4gOVxuICAgICAgICAgKi92YXIgZmxvd1JpZ2h0PWNyZWF0ZUZsb3codHJ1ZSk7LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKi9mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSl7cmV0dXJuIHZhbHVlO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkXG4gICAgICAgICAqIGZ1bmN0aW9uLiBJZiBgZnVuY2AgaXMgYSBwcm9wZXJ0eSBuYW1lLCB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm5zIHRoZVxuICAgICAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBnaXZlbiBlbGVtZW50LiBJZiBgZnVuY2AgaXMgYW4gYXJyYXkgb3Igb2JqZWN0LCB0aGVcbiAgICAgICAgICogY3JlYXRlZCBmdW5jdGlvbiByZXR1cm5zIGB0cnVlYCBmb3IgZWxlbWVudHMgdGhhdCBjb250YWluIHRoZSBlcXVpdmFsZW50XG4gICAgICAgICAqIHNvdXJjZSBwcm9wZXJ0aWVzLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgZmFsc2VgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcGFyYW0geyp9IFtmdW5jPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGEgY2FsbGJhY2suXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2FsbGJhY2suXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgICAgICogXTtcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KSk7XG4gICAgICAgICAqIC8vID0+IFt7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfV1cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLmZpbHRlcih1c2VycywgXy5pdGVyYXRlZShbJ3VzZXInLCAnZnJlZCddKSk7XG4gICAgICAgICAqIC8vID0+IFt7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfV1cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8ubWFwKHVzZXJzLCBfLml0ZXJhdGVlKCd1c2VyJykpO1xuICAgICAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gQ3JlYXRlIGN1c3RvbSBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAgICAgKiBfLml0ZXJhdGVlID0gXy53cmFwKF8uaXRlcmF0ZWUsIGZ1bmN0aW9uKGl0ZXJhdGVlLCBmdW5jKSB7XG4gICAgICAgICAqICAgcmV0dXJuICFfLmlzUmVnRXhwKGZ1bmMpID8gaXRlcmF0ZWUoZnVuYykgOiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgICogICAgIHJldHVybiBmdW5jLnRlc3Qoc3RyaW5nKTtcbiAgICAgICAgICogICB9O1xuICAgICAgICAgKiB9KTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5maWx0ZXIoWydhYmMnLCAnZGVmJ10sIC9lZi8pO1xuICAgICAgICAgKiAvLyA9PiBbJ2RlZiddXG4gICAgICAgICAqL2Z1bmN0aW9uIGl0ZXJhdGVlKGZ1bmMpe3JldHVybiBiYXNlSXRlcmF0ZWUodHlwZW9mIGZ1bmM9PT0nZnVuY3Rpb24nP2Z1bmM6YmFzZUNsb25lKGZ1bmMsQ0xPTkVfREVFUF9GTEFHKSk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYSBnaXZlblxuICAgICAgICAgKiBvYmplY3QgYW5kIGBzb3VyY2VgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZSBnaXZlbiBvYmplY3QgaGFzIGVxdWl2YWxlbnRcbiAgICAgICAgICogcHJvcGVydHkgdmFsdWVzLCBlbHNlIGBmYWxzZWAuXG4gICAgICAgICAqXG4gICAgICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmlzTWF0Y2hgIHdpdGggYHNvdXJjZWBcbiAgICAgICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICAgICAqIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgICAgICogICB7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfVxuICAgICAgICAgKiBdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm1hdGNoZXMoeyAnYSc6IDQsICdjJzogNiB9KSk7XG4gICAgICAgICAqIC8vID0+IFt7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfV1cbiAgICAgICAgICovZnVuY3Rpb24gbWF0Y2hlcyhzb3VyY2Upe3JldHVybiBiYXNlTWF0Y2hlcyhiYXNlQ2xvbmUoc291cmNlLENMT05FX0RFRVBfRkxBRykpO30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZVxuICAgICAgICAgKiB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QgdG8gYHNyY1ZhbHVlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGVcbiAgICAgICAgICogb2JqZWN0IHZhbHVlIGlzIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0XG4gICAgICAgICAqIGBzcmNWYWx1ZWAgdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWVcbiAgICAgICAgICogYF8uaXNFcXVhbGAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuMi4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgICAgICogICB7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfVxuICAgICAgICAgKiBdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLmZpbmQob2JqZWN0cywgXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCA0KSk7XG4gICAgICAgICAqIC8vID0+IHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICAgICAqL2Z1bmN0aW9uIG1hdGNoZXNQcm9wZXJ0eShwYXRoLHNyY1ZhbHVlKXtyZXR1cm4gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLGJhc2VDbG9uZShzcmNWYWx1ZSxDTE9ORV9ERUVQX0ZMQUcpKTt9LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICAgICAqIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMikgfSB9LFxuICAgICAgICAgKiAgIHsgJ2EnOiB7ICdiJzogXy5jb25zdGFudCgxKSB9IH1cbiAgICAgICAgICogXTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5tYXAob2JqZWN0cywgXy5tZXRob2QoJ2EuYicpKTtcbiAgICAgICAgICogLy8gPT4gWzIsIDFdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ubWFwKG9iamVjdHMsIF8ubWV0aG9kKFsnYScsICdiJ10pKTtcbiAgICAgICAgICogLy8gPT4gWzIsIDFdXG4gICAgICAgICAqL3ZhciBtZXRob2Q9YmFzZVJlc3QoZnVuY3Rpb24ocGF0aCxhcmdzKXtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0KXtyZXR1cm4gYmFzZUludm9rZShvYmplY3QscGF0aCxhcmdzKTt9O30pOy8qKlxuICAgICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1ldGhvZGA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXNcbiAgICAgICAqIHRoZSBtZXRob2QgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlXG4gICAgICAgKiBwcm92aWRlZCB0byB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludm9rZXIgZnVuY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIHZhciBhcnJheSA9IF8udGltZXMoMywgXy5jb25zdGFudCksXG4gICAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICAgKlxuICAgICAgICogXy5tYXAoWydhWzJdJywgJ2NbMF0nXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAgICpcbiAgICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAgICovdmFyIG1ldGhvZE9mPWJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCxhcmdzKXtyZXR1cm4gZnVuY3Rpb24ocGF0aCl7cmV0dXJuIGJhc2VJbnZva2Uob2JqZWN0LHBhdGgsYXJncyk7fTt9KTsvKipcbiAgICAgICAqIEFkZHMgYWxsIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBmdW5jdGlvbiBwcm9wZXJ0aWVzIG9mIGEgc291cmNlXG4gICAgICAgKiBvYmplY3QgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdC4gSWYgYG9iamVjdGAgaXMgYSBmdW5jdGlvbiwgdGhlbiBtZXRob2RzXG4gICAgICAgKiBhcmUgYWRkZWQgdG8gaXRzIHByb3RvdHlwZSBhcyB3ZWxsLlxuICAgICAgICpcbiAgICAgICAqICoqTm90ZToqKiBVc2UgYF8ucnVuSW5Db250ZXh0YCB0byBjcmVhdGUgYSBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB0b1xuICAgICAgICogYXZvaWQgY29uZmxpY3RzIGNhdXNlZCBieSBtb2RpZnlpbmcgdGhlIG9yaWdpbmFsLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufE9iamVjdH0gW29iamVjdD1sb2Rhc2hdIFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgZnVuY3Rpb25zIHRvIGFkZC5cbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jaGFpbj10cnVlXSBTcGVjaWZ5IHdoZXRoZXIgbWl4aW5zIGFyZSBjaGFpbmFibGUuXG4gICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqXG4gICAgICAgKiBmdW5jdGlvbiB2b3dlbHMoc3RyaW5nKSB7XG4gICAgICAgKiAgIHJldHVybiBfLmZpbHRlcihzdHJpbmcsIGZ1bmN0aW9uKHYpIHtcbiAgICAgICAqICAgICByZXR1cm4gL1thZWlvdV0vaS50ZXN0KHYpO1xuICAgICAgICogICB9KTtcbiAgICAgICAqIH1cbiAgICAgICAqXG4gICAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9KTtcbiAgICAgICAqIF8udm93ZWxzKCdmcmVkJyk7XG4gICAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAgICpcbiAgICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKS52YWx1ZSgpO1xuICAgICAgICogLy8gPT4gWydlJ11cbiAgICAgICAqXG4gICAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9LCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuICAgICAgICogXygnZnJlZCcpLnZvd2VscygpO1xuICAgICAgICogLy8gPT4gWydlJ11cbiAgICAgICAqL2Z1bmN0aW9uIG1peGluKG9iamVjdCxzb3VyY2Usb3B0aW9ucyl7dmFyIHByb3BzPWtleXMoc291cmNlKSxtZXRob2ROYW1lcz1iYXNlRnVuY3Rpb25zKHNvdXJjZSxwcm9wcyk7aWYob3B0aW9ucz09bnVsbCYmIShpc09iamVjdChzb3VyY2UpJiYobWV0aG9kTmFtZXMubGVuZ3RofHwhcHJvcHMubGVuZ3RoKSkpe29wdGlvbnM9c291cmNlO3NvdXJjZT1vYmplY3Q7b2JqZWN0PXRoaXM7bWV0aG9kTmFtZXM9YmFzZUZ1bmN0aW9ucyhzb3VyY2Usa2V5cyhzb3VyY2UpKTt9dmFyIGNoYWluPSEoaXNPYmplY3Qob3B0aW9ucykmJidjaGFpbidpbiBvcHRpb25zKXx8ISFvcHRpb25zLmNoYWluLGlzRnVuYz1pc0Z1bmN0aW9uKG9iamVjdCk7YXJyYXlFYWNoKG1ldGhvZE5hbWVzLGZ1bmN0aW9uKG1ldGhvZE5hbWUpe3ZhciBmdW5jPXNvdXJjZVttZXRob2ROYW1lXTtvYmplY3RbbWV0aG9kTmFtZV09ZnVuYztpZihpc0Z1bmMpe29iamVjdC5wcm90b3R5cGVbbWV0aG9kTmFtZV09ZnVuY3Rpb24oKXt2YXIgY2hhaW5BbGw9dGhpcy5fX2NoYWluX187aWYoY2hhaW58fGNoYWluQWxsKXt2YXIgcmVzdWx0PW9iamVjdCh0aGlzLl9fd3JhcHBlZF9fKSxhY3Rpb25zPXJlc3VsdC5fX2FjdGlvbnNfXz1jb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7YWN0aW9ucy5wdXNoKHtmdW5jOmZ1bmMsYXJnczphcmd1bWVudHMsdGhpc0FyZzpvYmplY3R9KTtyZXN1bHQuX19jaGFpbl9fPWNoYWluQWxsO3JldHVybiByZXN1bHQ7fXJldHVybiBmdW5jLmFwcGx5KG9iamVjdCxhcnJheVB1c2goW3RoaXMudmFsdWUoKV0sYXJndW1lbnRzKSk7fTt9fSk7cmV0dXJuIG9iamVjdDt9LyoqXG4gICAgICAgICAqIFJldmVydHMgdGhlIGBfYCB2YXJpYWJsZSB0byBpdHMgcHJldmlvdXMgdmFsdWUgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG9cbiAgICAgICAgICogdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgbG9kYXNoID0gXy5ub0NvbmZsaWN0KCk7XG4gICAgICAgICAqL2Z1bmN0aW9uIG5vQ29uZmxpY3QoKXtpZihyb290Ll89PT10aGlzKXtyb290Ll89b2xkRGFzaDt9cmV0dXJuIHRoaXM7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gICAgICAgICAqIC8vID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgICAgICAgICovZnVuY3Rpb24gbm9vcCgpe30vLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxuLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIGFyZ3VtZW50IGF0IGluZGV4IGBuYC4gSWYgYG5gIGlzIG5lZ2F0aXZlLFxuICAgICAgICAgKiB0aGUgbnRoIGFyZ3VtZW50IGZyb20gdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTBdIFRoZSBpbmRleCBvZiB0aGUgYXJndW1lbnQgdG8gcmV0dXJuLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXNzLXRocnUgZnVuY3Rpb24uXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoMSk7XG4gICAgICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgICAgICogLy8gPT4gJ2InXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoLTIpO1xuICAgICAgICAgKiBmdW5jKCdhJywgJ2InLCAnYycsICdkJyk7XG4gICAgICAgICAqIC8vID0+ICdjJ1xuICAgICAgICAgKi9mdW5jdGlvbiBudGhBcmcobil7bj10b0ludGVnZXIobik7cmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3Mpe3JldHVybiBiYXNlTnRoKGFyZ3Msbik7fSk7fS8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBpdGVyYXRlZXNgIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlc1xuICAgICAgICAgKiBhbmQgcmV0dXJucyB0aGVpciByZXN1bHRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIGludm9rZS5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBmdW5jID0gXy5vdmVyKFtNYXRoLm1heCwgTWF0aC5taW5dKTtcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuYygxLCAyLCAzLCA0KTtcbiAgICAgICAgICogLy8gPT4gWzQsIDFdXG4gICAgICAgICAqL3ZhciBvdmVyPWNyZWF0ZU92ZXIoYXJyYXlNYXApOy8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbGwqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAgICAgKiB0cnV0aHkgd2hlbiBpbnZva2VkIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgICAgICogIFRoZSBwcmVkaWNhdGVzIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGZ1bmMgPSBfLm92ZXJFdmVyeShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuYygnMScpO1xuICAgICAgICAgKiAvLyA9PiB0cnVlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmMobnVsbCk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqXG4gICAgICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICovdmFyIG92ZXJFdmVyeT1jcmVhdGVPdmVyKGFycmF5RXZlcnkpOy8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbnkqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAgICAgKiB0cnV0aHkgd2hlbiBpbnZva2VkIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgICAgICogIFRoZSBwcmVkaWNhdGVzIHRvIGNoZWNrLlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGZ1bmMgPSBfLm92ZXJTb21lKFtCb29sZWFuLCBpc0Zpbml0ZV0pO1xuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jKCcxJyk7XG4gICAgICAgICAqIC8vID0+IHRydWVcbiAgICAgICAgICpcbiAgICAgICAgICogZnVuYyhudWxsKTtcbiAgICAgICAgICogLy8gPT4gdHJ1ZVxuICAgICAgICAgKlxuICAgICAgICAgKiBmdW5jKE5hTik7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL3ZhciBvdmVyU29tZT1jcmVhdGVPdmVyKGFycmF5U29tZSk7LyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAgICAgKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gICAgICAgICAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICAgICAgICAgKiBdO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gICAgICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICAgICAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgICAgICovZnVuY3Rpb24gcHJvcGVydHkocGF0aCl7cmV0dXJuIGlzS2V5KHBhdGgpP2Jhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSk6YmFzZVByb3BlcnR5RGVlcChwYXRoKTt9LyoqXG4gICAgICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5wcm9wZXJ0eWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnNcbiAgICAgICAgICogdGhlIHZhbHVlIGF0IGEgZ2l2ZW4gcGF0aCBvZiBgb2JqZWN0YC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGFycmF5ID0gWzAsIDEsIDJdLFxuICAgICAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgICAgICogLy8gPT4gWzIsIDBdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5wcm9wZXJ0eU9mKG9iamVjdCkpO1xuICAgICAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgICAgICovZnVuY3Rpb24gcHJvcGVydHlPZihvYmplY3Qpe3JldHVybiBmdW5jdGlvbihwYXRoKXtyZXR1cm4gb2JqZWN0PT1udWxsP3VuZGVmaW5lZDpiYXNlR2V0KG9iamVjdCxwYXRoKTt9O30vKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBudW1iZXJzIChwb3NpdGl2ZSBhbmQvb3IgbmVnYXRpdmUpIHByb2dyZXNzaW5nIGZyb21cbiAgICAgICAgICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAgICAgICAgICogYHN0YXJ0YCBpcyBzcGVjaWZpZWQgd2l0aG91dCBhbiBgZW5kYCBvciBgc3RlcGAuIElmIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsXG4gICAgICAgICAqIGl0J3Mgc2V0IHRvIGBzdGFydGAgd2l0aCBgc3RhcnRgIHRoZW4gc2V0IHRvIGAwYC5cbiAgICAgICAgICpcbiAgICAgICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAgICAgKiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgd2hpY2ggY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAgICAgKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmFuZ2UoNCk7XG4gICAgICAgICAqIC8vID0+IFswLCAxLCAyLCAzXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJhbmdlKC00KTtcbiAgICAgICAgICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmFuZ2UoMSwgNSk7XG4gICAgICAgICAqIC8vID0+IFsxLCAyLCAzLCA0XVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAgICAgICAgICogLy8gPT4gWzAsIDUsIDEwLCAxNV1cbiAgICAgICAgICpcbiAgICAgICAgICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICAgICAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgICAgICpcbiAgICAgICAgICogXy5yYW5nZSgxLCA0LCAwKTtcbiAgICAgICAgICogLy8gPT4gWzEsIDEsIDFdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmFuZ2UoMCk7XG4gICAgICAgICAqIC8vID0+IFtdXG4gICAgICAgICAqL3ZhciByYW5nZT1jcmVhdGVSYW5nZSgpOy8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnJhbmdlYCBleGNlcHQgdGhhdCBpdCBwb3B1bGF0ZXMgdmFsdWVzIGluXG4gICAgICAgICAqIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGVwPTFdIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICAgICAqIEBzZWUgXy5pblJhbmdlLCBfLnJhbmdlXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmFuZ2VSaWdodCg0KTtcbiAgICAgICAgICogLy8gPT4gWzMsIDIsIDEsIDBdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmFuZ2VSaWdodCgtNCk7XG4gICAgICAgICAqIC8vID0+IFstMywgLTIsIC0xLCAwXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJhbmdlUmlnaHQoMSwgNSk7XG4gICAgICAgICAqIC8vID0+IFs0LCAzLCAyLCAxXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJhbmdlUmlnaHQoMCwgMjAsIDUpO1xuICAgICAgICAgKiAvLyA9PiBbMTUsIDEwLCA1LCAwXVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnJhbmdlUmlnaHQoMCwgLTQsIC0xKTtcbiAgICAgICAgICogLy8gPT4gWy0zLCAtMiwgLTEsIDBdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmFuZ2VSaWdodCgxLCA0LCAwKTtcbiAgICAgICAgICogLy8gPT4gWzEsIDEsIDFdXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ucmFuZ2VSaWdodCgwKTtcbiAgICAgICAgICogLy8gPT4gW11cbiAgICAgICAgICovdmFyIHJhbmdlUmlnaHQ9Y3JlYXRlUmFuZ2UodHJ1ZSk7LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICAgICAgICAgKlxuICAgICAgICAgKiBjb25zb2xlLmxvZyhhcnJheXMpO1xuICAgICAgICAgKiAvLyA9PiBbW10sIFtdXVxuICAgICAgICAgKlxuICAgICAgICAgKiBjb25zb2xlLmxvZyhhcnJheXNbMF0gPT09IGFycmF5c1sxXSk7XG4gICAgICAgICAqIC8vID0+IGZhbHNlXG4gICAgICAgICAqL2Z1bmN0aW9uIHN0dWJBcnJheSgpe3JldHVybltdO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gICAgICAgICAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gICAgICAgICAqL2Z1bmN0aW9uIHN0dWJGYWxzZSgpe3JldHVybiBmYWxzZTt9LyoqXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgb2JqZWN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uc3R1Yk9iamVjdCk7XG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICAgICAgICAgKiAvLyA9PiBbe30sIHt9XVxuICAgICAgICAgKlxuICAgICAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzWzBdID09PSBvYmplY3RzWzFdKTtcbiAgICAgICAgICogLy8gPT4gZmFsc2VcbiAgICAgICAgICovZnVuY3Rpb24gc3R1Yk9iamVjdCgpe3JldHVybnt9O30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udGltZXMoMiwgXy5zdHViU3RyaW5nKTtcbiAgICAgICAgICogLy8gPT4gWycnLCAnJ11cbiAgICAgICAgICovZnVuY3Rpb24gc3R1YlN0cmluZygpe3JldHVybicnO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgdHJ1ZWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udGltZXMoMiwgXy5zdHViVHJ1ZSk7XG4gICAgICAgICAqIC8vID0+IFt0cnVlLCB0cnVlXVxuICAgICAgICAgKi9mdW5jdGlvbiBzdHViVHJ1ZSgpe3JldHVybiB0cnVlO30vKipcbiAgICAgICAgICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAgICAgICAgICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy50aW1lcygzLCBTdHJpbmcpO1xuICAgICAgICAgKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAgICAgICAgICpcbiAgICAgICAgICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gICAgICAgICAqIC8vID0+IFswLCAwLCAwLCAwXVxuICAgICAgICAgKi9mdW5jdGlvbiB0aW1lcyhuLGl0ZXJhdGVlKXtuPXRvSW50ZWdlcihuKTtpZihuPDF8fG4+TUFYX1NBRkVfSU5URUdFUil7cmV0dXJuW107fXZhciBpbmRleD1NQVhfQVJSQVlfTEVOR1RILGxlbmd0aD1uYXRpdmVNaW4obixNQVhfQVJSQVlfTEVOR1RIKTtpdGVyYXRlZT1nZXRJdGVyYXRlZShpdGVyYXRlZSk7bi09TUFYX0FSUkFZX0xFTkdUSDt2YXIgcmVzdWx0PWJhc2VUaW1lcyhsZW5ndGgsaXRlcmF0ZWUpO3doaWxlKCsraW5kZXg8bil7aXRlcmF0ZWUoaW5kZXgpO31yZXR1cm4gcmVzdWx0O30vKipcbiAgICAgICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udG9QYXRoKCdhLmIuYycpO1xuICAgICAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgICAgICpcbiAgICAgICAgICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gICAgICAgICAqIC8vID0+IFsnYScsICcwJywgJ2InLCAnYyddXG4gICAgICAgICAqL2Z1bmN0aW9uIHRvUGF0aCh2YWx1ZSl7aWYoaXNBcnJheSh2YWx1ZSkpe3JldHVybiBhcnJheU1hcCh2YWx1ZSx0b0tleSk7fXJldHVybiBpc1N5bWJvbCh2YWx1ZSk/W3ZhbHVlXTpjb3B5QXJyYXkoc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSkpO30vKipcbiAgICAgICAgICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBJZiBgcHJlZml4YCBpcyBnaXZlbiwgdGhlIElEIGlzIGFwcGVuZGVkIHRvIGl0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD0nJ10gVGhlIHZhbHVlIHRvIHByZWZpeCB0aGUgSUQgd2l0aC5cbiAgICAgICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5pcXVlIElELlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLnVuaXF1ZUlkKCdjb250YWN0XycpO1xuICAgICAgICAgKiAvLyA9PiAnY29udGFjdF8xMDQnXG4gICAgICAgICAqXG4gICAgICAgICAqIF8udW5pcXVlSWQoKTtcbiAgICAgICAgICogLy8gPT4gJzEwNSdcbiAgICAgICAgICovZnVuY3Rpb24gdW5pcXVlSWQocHJlZml4KXt2YXIgaWQ9KytpZENvdW50ZXI7cmV0dXJuIHRvU3RyaW5nKHByZWZpeCkraWQ7fS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqXG4gICAgICAgICAqIEFkZHMgdHdvIG51bWJlcnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDMuNC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdWdlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGFkZGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdG90YWwuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uYWRkKDYsIDQpO1xuICAgICAgICAgKiAvLyA9PiAxMFxuICAgICAgICAgKi92YXIgYWRkPWNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24oYXVnZW5kLGFkZGVuZCl7cmV0dXJuIGF1Z2VuZCthZGRlbmQ7fSwwKTsvKipcbiAgICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdXAgdG8gYHByZWNpc2lvbmAuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQgdXAuXG4gICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHVwIHRvLlxuICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcm91bmRlZCB1cCBudW1iZXIuXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICpcbiAgICAgICAqIF8uY2VpbCg0LjAwNik7XG4gICAgICAgKiAvLyA9PiA1XG4gICAgICAgKlxuICAgICAgICogXy5jZWlsKDYuMDA0LCAyKTtcbiAgICAgICAqIC8vID0+IDYuMDFcbiAgICAgICAqXG4gICAgICAgKiBfLmNlaWwoNjA0MCwgLTIpO1xuICAgICAgICogLy8gPT4gNjEwMFxuICAgICAgICovdmFyIGNlaWw9Y3JlYXRlUm91bmQoJ2NlaWwnKTsvKipcbiAgICAgICAgICogRGl2aWRlIHR3byBudW1iZXJzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aWRlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aXNvciBUaGUgc2Vjb25kIG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBxdW90aWVudC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5kaXZpZGUoNiwgNCk7XG4gICAgICAgICAqIC8vID0+IDEuNVxuICAgICAgICAgKi92YXIgZGl2aWRlPWNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24oZGl2aWRlbmQsZGl2aXNvcil7cmV0dXJuIGRpdmlkZW5kL2Rpdmlzb3I7fSwxKTsvKipcbiAgICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgZG93biB0byBgcHJlY2lzaW9uYC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCBkb3duLlxuICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCBkb3duIHRvLlxuICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcm91bmRlZCBkb3duIG51bWJlci5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy5mbG9vcig0LjAwNik7XG4gICAgICAgKiAvLyA9PiA0XG4gICAgICAgKlxuICAgICAgICogXy5mbG9vcigwLjA0NiwgMik7XG4gICAgICAgKiAvLyA9PiAwLjA0XG4gICAgICAgKlxuICAgICAgICogXy5mbG9vcig0MDYwLCAtMik7XG4gICAgICAgKiAvLyA9PiA0MDAwXG4gICAgICAgKi92YXIgZmxvb3I9Y3JlYXRlUm91bmQoJ2Zsb29yJyk7LyoqXG4gICAgICAgICAqIENvbXB1dGVzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ubWF4KFs0LCAyLCA4LCA2XSk7XG4gICAgICAgICAqIC8vID0+IDhcbiAgICAgICAgICpcbiAgICAgICAgICogXy5tYXgoW10pO1xuICAgICAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgICAgICovZnVuY3Rpb24gbWF4KGFycmF5KXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aD9iYXNlRXh0cmVtdW0oYXJyYXksaWRlbnRpdHksYmFzZUd0KTp1bmRlZmluZWQ7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1heGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQG1lbWJlck9mIF9cbiAgICAgICAgICogQHNpbmNlIDQuMC4wXG4gICAgICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAgICAgKlxuICAgICAgICAgKiBfLm1heEJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICAgICAqIC8vID0+IHsgJ24nOiAyIH1cbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8ubWF4Qnkob2JqZWN0cywgJ24nKTtcbiAgICAgICAgICogLy8gPT4geyAnbic6IDIgfVxuICAgICAgICAgKi9mdW5jdGlvbiBtYXhCeShhcnJheSxpdGVyYXRlZSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZUV4dHJlbXVtKGFycmF5LGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDIpLGJhc2VHdCk6dW5kZWZpbmVkO30vKipcbiAgICAgICAgICogQ29tcHV0ZXMgdGhlIG1lYW4gb2YgdGhlIHZhbHVlcyBpbiBgYXJyYXlgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLm1lYW4oWzQsIDIsIDgsIDZdKTtcbiAgICAgICAgICogLy8gPT4gNVxuICAgICAgICAgKi9mdW5jdGlvbiBtZWFuKGFycmF5KXtyZXR1cm4gYmFzZU1lYW4oYXJyYXksaWRlbnRpdHkpO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tZWFuYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIHZhbHVlIHRvIGJlIGF2ZXJhZ2VkLlxuICAgICAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogNCB9LCB7ICduJzogMiB9LCB7ICduJzogOCB9LCB7ICduJzogNiB9XTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5tZWFuQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgICAgICogLy8gPT4gNVxuICAgICAgICAgKlxuICAgICAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgICAgICogXy5tZWFuQnkob2JqZWN0cywgJ24nKTtcbiAgICAgICAgICogLy8gPT4gNVxuICAgICAgICAgKi9mdW5jdGlvbiBtZWFuQnkoYXJyYXksaXRlcmF0ZWUpe3JldHVybiBiYXNlTWVhbihhcnJheSxnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSk7fS8qKlxuICAgICAgICAgKiBDb21wdXRlcyB0aGUgbWluaW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgICAgICogYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzdGF0aWNcbiAgICAgICAgICogQHNpbmNlIDAuMS4wXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiBfLm1pbihbNCwgMiwgOCwgNl0pO1xuICAgICAgICAgKiAvLyA9PiAyXG4gICAgICAgICAqXG4gICAgICAgICAqIF8ubWluKFtdKTtcbiAgICAgICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICAgICAqL2Z1bmN0aW9uIG1pbihhcnJheSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZUV4dHJlbXVtKGFycmF5LGlkZW50aXR5LGJhc2VMdCk6dW5kZWZpbmVkO30vKipcbiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5taW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICAgICAqIHRoZSB2YWx1ZSBpcyByYW5rZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgICAgICpcbiAgICAgICAgICogXy5taW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICAgICAqXG4gICAgICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAgICAgKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICAgICAqIC8vID0+IHsgJ24nOiAxIH1cbiAgICAgICAgICovZnVuY3Rpb24gbWluQnkoYXJyYXksaXRlcmF0ZWUpe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VFeHRyZW11bShhcnJheSxnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSxiYXNlTHQpOnVuZGVmaW5lZDt9LyoqXG4gICAgICAgICAqIE11bHRpcGx5IHR3byBudW1iZXJzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbXVsdGlwbGllciBUaGUgZmlyc3QgbnVtYmVyIGluIGEgbXVsdGlwbGljYXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWNhbmQgVGhlIHNlY29uZCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcHJvZHVjdC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogXy5tdWx0aXBseSg2LCA0KTtcbiAgICAgICAgICogLy8gPT4gMjRcbiAgICAgICAgICovdmFyIG11bHRpcGx5PWNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obXVsdGlwbGllcixtdWx0aXBsaWNhbmQpe3JldHVybiBtdWx0aXBsaWVyKm11bHRpcGxpY2FuZDt9LDEpOy8qKlxuICAgICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB0byBgcHJlY2lzaW9uYC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZC5cbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIFRoZSBwcmVjaXNpb24gdG8gcm91bmQgdG8uXG4gICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIG51bWJlci5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy5yb3VuZCg0LjAwNik7XG4gICAgICAgKiAvLyA9PiA0XG4gICAgICAgKlxuICAgICAgICogXy5yb3VuZCg0LjAwNiwgMik7XG4gICAgICAgKiAvLyA9PiA0LjAxXG4gICAgICAgKlxuICAgICAgICogXy5yb3VuZCg0MDYwLCAtMik7XG4gICAgICAgKiAvLyA9PiA0MTAwXG4gICAgICAgKi92YXIgcm91bmQ9Y3JlYXRlUm91bmQoJ3JvdW5kJyk7LyoqXG4gICAgICAgICAqIFN1YnRyYWN0IHR3byBudW1iZXJzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbWludWVuZCBUaGUgZmlyc3QgbnVtYmVyIGluIGEgc3VidHJhY3Rpb24uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJ0cmFoZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgc3VidHJhY3Rpb24uXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGRpZmZlcmVuY2UuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqIF8uc3VidHJhY3QoNiwgNCk7XG4gICAgICAgICAqIC8vID0+IDJcbiAgICAgICAgICovdmFyIHN1YnRyYWN0PWNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obWludWVuZCxzdWJ0cmFoZW5kKXtyZXR1cm4gbWludWVuZC1zdWJ0cmFoZW5kO30sMCk7LyoqXG4gICAgICAgKiBDb21wdXRlcyB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgaW4gYGFycmF5YC5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICogQHNpbmNlIDMuNC4wXG4gICAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKlxuICAgICAgICogXy5zdW0oWzQsIDIsIDgsIDZdKTtcbiAgICAgICAqIC8vID0+IDIwXG4gICAgICAgKi9mdW5jdGlvbiBzdW0oYXJyYXkpe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VTdW0oYXJyYXksaWRlbnRpdHkpOjA7fS8qKlxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnN1bWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBzdW1tZWQuXG4gICAgICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICAgICAqXG4gICAgICAgICAqIF8uc3VtQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgICAgICogLy8gPT4gMjBcbiAgICAgICAgICpcbiAgICAgICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICAgICAqIF8uc3VtQnkob2JqZWN0cywgJ24nKTtcbiAgICAgICAgICogLy8gPT4gMjBcbiAgICAgICAgICovZnVuY3Rpb24gc3VtQnkoYXJyYXksaXRlcmF0ZWUpe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VTdW0oYXJyYXksZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMikpOjA7fS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLy8gQWRkIG1ldGhvZHMgdGhhdCByZXR1cm4gd3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxubG9kYXNoLmFmdGVyPWFmdGVyO2xvZGFzaC5hcnk9YXJ5O2xvZGFzaC5hc3NpZ249YXNzaWduO2xvZGFzaC5hc3NpZ25Jbj1hc3NpZ25Jbjtsb2Rhc2guYXNzaWduSW5XaXRoPWFzc2lnbkluV2l0aDtsb2Rhc2guYXNzaWduV2l0aD1hc3NpZ25XaXRoO2xvZGFzaC5hdD1hdDtsb2Rhc2guYmVmb3JlPWJlZm9yZTtsb2Rhc2guYmluZD1iaW5kO2xvZGFzaC5iaW5kQWxsPWJpbmRBbGw7bG9kYXNoLmJpbmRLZXk9YmluZEtleTtsb2Rhc2guY2FzdEFycmF5PWNhc3RBcnJheTtsb2Rhc2guY2hhaW49Y2hhaW47bG9kYXNoLmNodW5rPWNodW5rO2xvZGFzaC5jb21wYWN0PWNvbXBhY3Q7bG9kYXNoLmNvbmNhdD1jb25jYXQ7bG9kYXNoLmNvbmQ9Y29uZDtsb2Rhc2guY29uZm9ybXM9Y29uZm9ybXM7bG9kYXNoLmNvbnN0YW50PWNvbnN0YW50O2xvZGFzaC5jb3VudEJ5PWNvdW50Qnk7bG9kYXNoLmNyZWF0ZT1jcmVhdGU7bG9kYXNoLmN1cnJ5PWN1cnJ5O2xvZGFzaC5jdXJyeVJpZ2h0PWN1cnJ5UmlnaHQ7bG9kYXNoLmRlYm91bmNlPWRlYm91bmNlO2xvZGFzaC5kZWZhdWx0cz1kZWZhdWx0cztsb2Rhc2guZGVmYXVsdHNEZWVwPWRlZmF1bHRzRGVlcDtsb2Rhc2guZGVmZXI9ZGVmZXI7bG9kYXNoLmRlbGF5PWRlbGF5O2xvZGFzaC5kaWZmZXJlbmNlPWRpZmZlcmVuY2U7bG9kYXNoLmRpZmZlcmVuY2VCeT1kaWZmZXJlbmNlQnk7bG9kYXNoLmRpZmZlcmVuY2VXaXRoPWRpZmZlcmVuY2VXaXRoO2xvZGFzaC5kcm9wPWRyb3A7bG9kYXNoLmRyb3BSaWdodD1kcm9wUmlnaHQ7bG9kYXNoLmRyb3BSaWdodFdoaWxlPWRyb3BSaWdodFdoaWxlO2xvZGFzaC5kcm9wV2hpbGU9ZHJvcFdoaWxlO2xvZGFzaC5maWxsPWZpbGw7bG9kYXNoLmZpbHRlcj1maWx0ZXI7bG9kYXNoLmZsYXRNYXA9ZmxhdE1hcDtsb2Rhc2guZmxhdE1hcERlZXA9ZmxhdE1hcERlZXA7bG9kYXNoLmZsYXRNYXBEZXB0aD1mbGF0TWFwRGVwdGg7bG9kYXNoLmZsYXR0ZW49ZmxhdHRlbjtsb2Rhc2guZmxhdHRlbkRlZXA9ZmxhdHRlbkRlZXA7bG9kYXNoLmZsYXR0ZW5EZXB0aD1mbGF0dGVuRGVwdGg7bG9kYXNoLmZsaXA9ZmxpcDtsb2Rhc2guZmxvdz1mbG93O2xvZGFzaC5mbG93UmlnaHQ9Zmxvd1JpZ2h0O2xvZGFzaC5mcm9tUGFpcnM9ZnJvbVBhaXJzO2xvZGFzaC5mdW5jdGlvbnM9ZnVuY3Rpb25zO2xvZGFzaC5mdW5jdGlvbnNJbj1mdW5jdGlvbnNJbjtsb2Rhc2guZ3JvdXBCeT1ncm91cEJ5O2xvZGFzaC5pbml0aWFsPWluaXRpYWw7bG9kYXNoLmludGVyc2VjdGlvbj1pbnRlcnNlY3Rpb247bG9kYXNoLmludGVyc2VjdGlvbkJ5PWludGVyc2VjdGlvbkJ5O2xvZGFzaC5pbnRlcnNlY3Rpb25XaXRoPWludGVyc2VjdGlvbldpdGg7bG9kYXNoLmludmVydD1pbnZlcnQ7bG9kYXNoLmludmVydEJ5PWludmVydEJ5O2xvZGFzaC5pbnZva2VNYXA9aW52b2tlTWFwO2xvZGFzaC5pdGVyYXRlZT1pdGVyYXRlZTtsb2Rhc2gua2V5Qnk9a2V5Qnk7bG9kYXNoLmtleXM9a2V5cztsb2Rhc2gua2V5c0luPWtleXNJbjtsb2Rhc2gubWFwPW1hcDtsb2Rhc2gubWFwS2V5cz1tYXBLZXlzO2xvZGFzaC5tYXBWYWx1ZXM9bWFwVmFsdWVzO2xvZGFzaC5tYXRjaGVzPW1hdGNoZXM7bG9kYXNoLm1hdGNoZXNQcm9wZXJ0eT1tYXRjaGVzUHJvcGVydHk7bG9kYXNoLm1lbW9pemU9bWVtb2l6ZTtsb2Rhc2gubWVyZ2U9bWVyZ2U7bG9kYXNoLm1lcmdlV2l0aD1tZXJnZVdpdGg7bG9kYXNoLm1ldGhvZD1tZXRob2Q7bG9kYXNoLm1ldGhvZE9mPW1ldGhvZE9mO2xvZGFzaC5taXhpbj1taXhpbjtsb2Rhc2gubmVnYXRlPW5lZ2F0ZTtsb2Rhc2gubnRoQXJnPW50aEFyZztsb2Rhc2gub21pdD1vbWl0O2xvZGFzaC5vbWl0Qnk9b21pdEJ5O2xvZGFzaC5vbmNlPW9uY2U7bG9kYXNoLm9yZGVyQnk9b3JkZXJCeTtsb2Rhc2gub3Zlcj1vdmVyO2xvZGFzaC5vdmVyQXJncz1vdmVyQXJncztsb2Rhc2gub3ZlckV2ZXJ5PW92ZXJFdmVyeTtsb2Rhc2gub3ZlclNvbWU9b3ZlclNvbWU7bG9kYXNoLnBhcnRpYWw9cGFydGlhbDtsb2Rhc2gucGFydGlhbFJpZ2h0PXBhcnRpYWxSaWdodDtsb2Rhc2gucGFydGl0aW9uPXBhcnRpdGlvbjtsb2Rhc2gucGljaz1waWNrO2xvZGFzaC5waWNrQnk9cGlja0J5O2xvZGFzaC5wcm9wZXJ0eT1wcm9wZXJ0eTtsb2Rhc2gucHJvcGVydHlPZj1wcm9wZXJ0eU9mO2xvZGFzaC5wdWxsPXB1bGw7bG9kYXNoLnB1bGxBbGw9cHVsbEFsbDtsb2Rhc2gucHVsbEFsbEJ5PXB1bGxBbGxCeTtsb2Rhc2gucHVsbEFsbFdpdGg9cHVsbEFsbFdpdGg7bG9kYXNoLnB1bGxBdD1wdWxsQXQ7bG9kYXNoLnJhbmdlPXJhbmdlO2xvZGFzaC5yYW5nZVJpZ2h0PXJhbmdlUmlnaHQ7bG9kYXNoLnJlYXJnPXJlYXJnO2xvZGFzaC5yZWplY3Q9cmVqZWN0O2xvZGFzaC5yZW1vdmU9cmVtb3ZlO2xvZGFzaC5yZXN0PXJlc3Q7bG9kYXNoLnJldmVyc2U9cmV2ZXJzZTtsb2Rhc2guc2FtcGxlU2l6ZT1zYW1wbGVTaXplO2xvZGFzaC5zZXQ9c2V0O2xvZGFzaC5zZXRXaXRoPXNldFdpdGg7bG9kYXNoLnNodWZmbGU9c2h1ZmZsZTtsb2Rhc2guc2xpY2U9c2xpY2U7bG9kYXNoLnNvcnRCeT1zb3J0Qnk7bG9kYXNoLnNvcnRlZFVuaXE9c29ydGVkVW5pcTtsb2Rhc2guc29ydGVkVW5pcUJ5PXNvcnRlZFVuaXFCeTtsb2Rhc2guc3BsaXQ9c3BsaXQ7bG9kYXNoLnNwcmVhZD1zcHJlYWQ7bG9kYXNoLnRhaWw9dGFpbDtsb2Rhc2gudGFrZT10YWtlO2xvZGFzaC50YWtlUmlnaHQ9dGFrZVJpZ2h0O2xvZGFzaC50YWtlUmlnaHRXaGlsZT10YWtlUmlnaHRXaGlsZTtsb2Rhc2gudGFrZVdoaWxlPXRha2VXaGlsZTtsb2Rhc2gudGFwPXRhcDtsb2Rhc2gudGhyb3R0bGU9dGhyb3R0bGU7bG9kYXNoLnRocnU9dGhydTtsb2Rhc2gudG9BcnJheT10b0FycmF5O2xvZGFzaC50b1BhaXJzPXRvUGFpcnM7bG9kYXNoLnRvUGFpcnNJbj10b1BhaXJzSW47bG9kYXNoLnRvUGF0aD10b1BhdGg7bG9kYXNoLnRvUGxhaW5PYmplY3Q9dG9QbGFpbk9iamVjdDtsb2Rhc2gudHJhbnNmb3JtPXRyYW5zZm9ybTtsb2Rhc2gudW5hcnk9dW5hcnk7bG9kYXNoLnVuaW9uPXVuaW9uO2xvZGFzaC51bmlvbkJ5PXVuaW9uQnk7bG9kYXNoLnVuaW9uV2l0aD11bmlvbldpdGg7bG9kYXNoLnVuaXE9dW5pcTtsb2Rhc2gudW5pcUJ5PXVuaXFCeTtsb2Rhc2gudW5pcVdpdGg9dW5pcVdpdGg7bG9kYXNoLnVuc2V0PXVuc2V0O2xvZGFzaC51bnppcD11bnppcDtsb2Rhc2gudW56aXBXaXRoPXVuemlwV2l0aDtsb2Rhc2gudXBkYXRlPXVwZGF0ZTtsb2Rhc2gudXBkYXRlV2l0aD11cGRhdGVXaXRoO2xvZGFzaC52YWx1ZXM9dmFsdWVzO2xvZGFzaC52YWx1ZXNJbj12YWx1ZXNJbjtsb2Rhc2gud2l0aG91dD13aXRob3V0O2xvZGFzaC53b3Jkcz13b3Jkcztsb2Rhc2gud3JhcD13cmFwO2xvZGFzaC54b3I9eG9yO2xvZGFzaC54b3JCeT14b3JCeTtsb2Rhc2gueG9yV2l0aD14b3JXaXRoO2xvZGFzaC56aXA9emlwO2xvZGFzaC56aXBPYmplY3Q9emlwT2JqZWN0O2xvZGFzaC56aXBPYmplY3REZWVwPXppcE9iamVjdERlZXA7bG9kYXNoLnppcFdpdGg9emlwV2l0aDsvLyBBZGQgYWxpYXNlcy5cbmxvZGFzaC5lbnRyaWVzPXRvUGFpcnM7bG9kYXNoLmVudHJpZXNJbj10b1BhaXJzSW47bG9kYXNoLmV4dGVuZD1hc3NpZ25Jbjtsb2Rhc2guZXh0ZW5kV2l0aD1hc3NpZ25JbldpdGg7Ly8gQWRkIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxubWl4aW4obG9kYXNoLGxvZGFzaCk7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vLyBBZGQgbWV0aG9kcyB0aGF0IHJldHVybiB1bndyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbmxvZGFzaC5hZGQ9YWRkO2xvZGFzaC5hdHRlbXB0PWF0dGVtcHQ7bG9kYXNoLmNhbWVsQ2FzZT1jYW1lbENhc2U7bG9kYXNoLmNhcGl0YWxpemU9Y2FwaXRhbGl6ZTtsb2Rhc2guY2VpbD1jZWlsO2xvZGFzaC5jbGFtcD1jbGFtcDtsb2Rhc2guY2xvbmU9Y2xvbmU7bG9kYXNoLmNsb25lRGVlcD1jbG9uZURlZXA7bG9kYXNoLmNsb25lRGVlcFdpdGg9Y2xvbmVEZWVwV2l0aDtsb2Rhc2guY2xvbmVXaXRoPWNsb25lV2l0aDtsb2Rhc2guY29uZm9ybXNUbz1jb25mb3Jtc1RvO2xvZGFzaC5kZWJ1cnI9ZGVidXJyO2xvZGFzaC5kZWZhdWx0VG89ZGVmYXVsdFRvO2xvZGFzaC5kaXZpZGU9ZGl2aWRlO2xvZGFzaC5lbmRzV2l0aD1lbmRzV2l0aDtsb2Rhc2guZXE9ZXE7bG9kYXNoLmVzY2FwZT1lc2NhcGU7bG9kYXNoLmVzY2FwZVJlZ0V4cD1lc2NhcGVSZWdFeHA7bG9kYXNoLmV2ZXJ5PWV2ZXJ5O2xvZGFzaC5maW5kPWZpbmQ7bG9kYXNoLmZpbmRJbmRleD1maW5kSW5kZXg7bG9kYXNoLmZpbmRLZXk9ZmluZEtleTtsb2Rhc2guZmluZExhc3Q9ZmluZExhc3Q7bG9kYXNoLmZpbmRMYXN0SW5kZXg9ZmluZExhc3RJbmRleDtsb2Rhc2guZmluZExhc3RLZXk9ZmluZExhc3RLZXk7bG9kYXNoLmZsb29yPWZsb29yO2xvZGFzaC5mb3JFYWNoPWZvckVhY2g7bG9kYXNoLmZvckVhY2hSaWdodD1mb3JFYWNoUmlnaHQ7bG9kYXNoLmZvckluPWZvckluO2xvZGFzaC5mb3JJblJpZ2h0PWZvckluUmlnaHQ7bG9kYXNoLmZvck93bj1mb3JPd247bG9kYXNoLmZvck93blJpZ2h0PWZvck93blJpZ2h0O2xvZGFzaC5nZXQ9Z2V0O2xvZGFzaC5ndD1ndDtsb2Rhc2guZ3RlPWd0ZTtsb2Rhc2guaGFzPWhhcztsb2Rhc2guaGFzSW49aGFzSW47bG9kYXNoLmhlYWQ9aGVhZDtsb2Rhc2guaWRlbnRpdHk9aWRlbnRpdHk7bG9kYXNoLmluY2x1ZGVzPWluY2x1ZGVzO2xvZGFzaC5pbmRleE9mPWluZGV4T2Y7bG9kYXNoLmluUmFuZ2U9aW5SYW5nZTtsb2Rhc2guaW52b2tlPWludm9rZTtsb2Rhc2guaXNBcmd1bWVudHM9aXNBcmd1bWVudHM7bG9kYXNoLmlzQXJyYXk9aXNBcnJheTtsb2Rhc2guaXNBcnJheUJ1ZmZlcj1pc0FycmF5QnVmZmVyO2xvZGFzaC5pc0FycmF5TGlrZT1pc0FycmF5TGlrZTtsb2Rhc2guaXNBcnJheUxpa2VPYmplY3Q9aXNBcnJheUxpa2VPYmplY3Q7bG9kYXNoLmlzQm9vbGVhbj1pc0Jvb2xlYW47bG9kYXNoLmlzQnVmZmVyPWlzQnVmZmVyO2xvZGFzaC5pc0RhdGU9aXNEYXRlO2xvZGFzaC5pc0VsZW1lbnQ9aXNFbGVtZW50O2xvZGFzaC5pc0VtcHR5PWlzRW1wdHk7bG9kYXNoLmlzRXF1YWw9aXNFcXVhbDtsb2Rhc2guaXNFcXVhbFdpdGg9aXNFcXVhbFdpdGg7bG9kYXNoLmlzRXJyb3I9aXNFcnJvcjtsb2Rhc2guaXNGaW5pdGU9aXNGaW5pdGU7bG9kYXNoLmlzRnVuY3Rpb249aXNGdW5jdGlvbjtsb2Rhc2guaXNJbnRlZ2VyPWlzSW50ZWdlcjtsb2Rhc2guaXNMZW5ndGg9aXNMZW5ndGg7bG9kYXNoLmlzTWFwPWlzTWFwO2xvZGFzaC5pc01hdGNoPWlzTWF0Y2g7bG9kYXNoLmlzTWF0Y2hXaXRoPWlzTWF0Y2hXaXRoO2xvZGFzaC5pc05hTj1pc05hTjtsb2Rhc2guaXNOYXRpdmU9aXNOYXRpdmU7bG9kYXNoLmlzTmlsPWlzTmlsO2xvZGFzaC5pc051bGw9aXNOdWxsO2xvZGFzaC5pc051bWJlcj1pc051bWJlcjtsb2Rhc2guaXNPYmplY3Q9aXNPYmplY3Q7bG9kYXNoLmlzT2JqZWN0TGlrZT1pc09iamVjdExpa2U7bG9kYXNoLmlzUGxhaW5PYmplY3Q9aXNQbGFpbk9iamVjdDtsb2Rhc2guaXNSZWdFeHA9aXNSZWdFeHA7bG9kYXNoLmlzU2FmZUludGVnZXI9aXNTYWZlSW50ZWdlcjtsb2Rhc2guaXNTZXQ9aXNTZXQ7bG9kYXNoLmlzU3RyaW5nPWlzU3RyaW5nO2xvZGFzaC5pc1N5bWJvbD1pc1N5bWJvbDtsb2Rhc2guaXNUeXBlZEFycmF5PWlzVHlwZWRBcnJheTtsb2Rhc2guaXNVbmRlZmluZWQ9aXNVbmRlZmluZWQ7bG9kYXNoLmlzV2Vha01hcD1pc1dlYWtNYXA7bG9kYXNoLmlzV2Vha1NldD1pc1dlYWtTZXQ7bG9kYXNoLmpvaW49am9pbjtsb2Rhc2gua2ViYWJDYXNlPWtlYmFiQ2FzZTtsb2Rhc2gubGFzdD1sYXN0O2xvZGFzaC5sYXN0SW5kZXhPZj1sYXN0SW5kZXhPZjtsb2Rhc2gubG93ZXJDYXNlPWxvd2VyQ2FzZTtsb2Rhc2gubG93ZXJGaXJzdD1sb3dlckZpcnN0O2xvZGFzaC5sdD1sdDtsb2Rhc2gubHRlPWx0ZTtsb2Rhc2gubWF4PW1heDtsb2Rhc2gubWF4Qnk9bWF4Qnk7bG9kYXNoLm1lYW49bWVhbjtsb2Rhc2gubWVhbkJ5PW1lYW5CeTtsb2Rhc2gubWluPW1pbjtsb2Rhc2gubWluQnk9bWluQnk7bG9kYXNoLnN0dWJBcnJheT1zdHViQXJyYXk7bG9kYXNoLnN0dWJGYWxzZT1zdHViRmFsc2U7bG9kYXNoLnN0dWJPYmplY3Q9c3R1Yk9iamVjdDtsb2Rhc2guc3R1YlN0cmluZz1zdHViU3RyaW5nO2xvZGFzaC5zdHViVHJ1ZT1zdHViVHJ1ZTtsb2Rhc2gubXVsdGlwbHk9bXVsdGlwbHk7bG9kYXNoLm50aD1udGg7bG9kYXNoLm5vQ29uZmxpY3Q9bm9Db25mbGljdDtsb2Rhc2gubm9vcD1ub29wO2xvZGFzaC5ub3c9bm93O2xvZGFzaC5wYWQ9cGFkO2xvZGFzaC5wYWRFbmQ9cGFkRW5kO2xvZGFzaC5wYWRTdGFydD1wYWRTdGFydDtsb2Rhc2gucGFyc2VJbnQ9cGFyc2VJbnQ7bG9kYXNoLnJhbmRvbT1yYW5kb207bG9kYXNoLnJlZHVjZT1yZWR1Y2U7bG9kYXNoLnJlZHVjZVJpZ2h0PXJlZHVjZVJpZ2h0O2xvZGFzaC5yZXBlYXQ9cmVwZWF0O2xvZGFzaC5yZXBsYWNlPXJlcGxhY2U7bG9kYXNoLnJlc3VsdD1yZXN1bHQ7bG9kYXNoLnJvdW5kPXJvdW5kO2xvZGFzaC5ydW5JbkNvbnRleHQ9cnVuSW5Db250ZXh0O2xvZGFzaC5zYW1wbGU9c2FtcGxlO2xvZGFzaC5zaXplPXNpemU7bG9kYXNoLnNuYWtlQ2FzZT1zbmFrZUNhc2U7bG9kYXNoLnNvbWU9c29tZTtsb2Rhc2guc29ydGVkSW5kZXg9c29ydGVkSW5kZXg7bG9kYXNoLnNvcnRlZEluZGV4Qnk9c29ydGVkSW5kZXhCeTtsb2Rhc2guc29ydGVkSW5kZXhPZj1zb3J0ZWRJbmRleE9mO2xvZGFzaC5zb3J0ZWRMYXN0SW5kZXg9c29ydGVkTGFzdEluZGV4O2xvZGFzaC5zb3J0ZWRMYXN0SW5kZXhCeT1zb3J0ZWRMYXN0SW5kZXhCeTtsb2Rhc2guc29ydGVkTGFzdEluZGV4T2Y9c29ydGVkTGFzdEluZGV4T2Y7bG9kYXNoLnN0YXJ0Q2FzZT1zdGFydENhc2U7bG9kYXNoLnN0YXJ0c1dpdGg9c3RhcnRzV2l0aDtsb2Rhc2guc3VidHJhY3Q9c3VidHJhY3Q7bG9kYXNoLnN1bT1zdW07bG9kYXNoLnN1bUJ5PXN1bUJ5O2xvZGFzaC50ZW1wbGF0ZT10ZW1wbGF0ZTtsb2Rhc2gudGltZXM9dGltZXM7bG9kYXNoLnRvRmluaXRlPXRvRmluaXRlO2xvZGFzaC50b0ludGVnZXI9dG9JbnRlZ2VyO2xvZGFzaC50b0xlbmd0aD10b0xlbmd0aDtsb2Rhc2gudG9Mb3dlcj10b0xvd2VyO2xvZGFzaC50b051bWJlcj10b051bWJlcjtsb2Rhc2gudG9TYWZlSW50ZWdlcj10b1NhZmVJbnRlZ2VyO2xvZGFzaC50b1N0cmluZz10b1N0cmluZztsb2Rhc2gudG9VcHBlcj10b1VwcGVyO2xvZGFzaC50cmltPXRyaW07bG9kYXNoLnRyaW1FbmQ9dHJpbUVuZDtsb2Rhc2gudHJpbVN0YXJ0PXRyaW1TdGFydDtsb2Rhc2gudHJ1bmNhdGU9dHJ1bmNhdGU7bG9kYXNoLnVuZXNjYXBlPXVuZXNjYXBlO2xvZGFzaC51bmlxdWVJZD11bmlxdWVJZDtsb2Rhc2gudXBwZXJDYXNlPXVwcGVyQ2FzZTtsb2Rhc2gudXBwZXJGaXJzdD11cHBlckZpcnN0Oy8vIEFkZCBhbGlhc2VzLlxubG9kYXNoLmVhY2g9Zm9yRWFjaDtsb2Rhc2guZWFjaFJpZ2h0PWZvckVhY2hSaWdodDtsb2Rhc2guZmlyc3Q9aGVhZDttaXhpbihsb2Rhc2gsZnVuY3Rpb24oKXt2YXIgc291cmNlPXt9O2Jhc2VGb3JPd24obG9kYXNoLGZ1bmN0aW9uKGZ1bmMsbWV0aG9kTmFtZSl7aWYoIWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLnByb3RvdHlwZSxtZXRob2ROYW1lKSl7c291cmNlW21ldGhvZE5hbWVdPWZ1bmM7fX0pO3JldHVybiBzb3VyY2U7fSgpLHtjaGFpbjpmYWxzZX0pOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqXG4gICAgICAgICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci5cbiAgICAgICAgICpcbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICAgKi9sb2Rhc2guVkVSU0lPTj1WRVJTSU9OOy8vIEFzc2lnbiBkZWZhdWx0IHBsYWNlaG9sZGVycy5cbmFycmF5RWFjaChbJ2JpbmQnLCdiaW5kS2V5JywnY3VycnknLCdjdXJyeVJpZ2h0JywncGFydGlhbCcsJ3BhcnRpYWxSaWdodCddLGZ1bmN0aW9uKG1ldGhvZE5hbWUpe2xvZGFzaFttZXRob2ROYW1lXS5wbGFjZWhvbGRlcj1sb2Rhc2g7fSk7Ly8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uZHJvcGAgYW5kIGBfLnRha2VgIHZhcmlhbnRzLlxuYXJyYXlFYWNoKFsnZHJvcCcsJ3Rha2UnXSxmdW5jdGlvbihtZXRob2ROYW1lLGluZGV4KXtMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV09ZnVuY3Rpb24obil7bj1uPT09dW5kZWZpbmVkPzE6bmF0aXZlTWF4KHRvSW50ZWdlcihuKSwwKTt2YXIgcmVzdWx0PXRoaXMuX19maWx0ZXJlZF9fJiYhaW5kZXg/bmV3IExhenlXcmFwcGVyKHRoaXMpOnRoaXMuY2xvbmUoKTtpZihyZXN1bHQuX19maWx0ZXJlZF9fKXtyZXN1bHQuX190YWtlQ291bnRfXz1uYXRpdmVNaW4obixyZXN1bHQuX190YWtlQ291bnRfXyk7fWVsc2V7cmVzdWx0Ll9fdmlld3NfXy5wdXNoKHtzaXplOm5hdGl2ZU1pbihuLE1BWF9BUlJBWV9MRU5HVEgpLHR5cGU6bWV0aG9kTmFtZSsocmVzdWx0Ll9fZGlyX188MD8nUmlnaHQnOicnKX0pO31yZXR1cm4gcmVzdWx0O307TGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWUrJ1JpZ2h0J109ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucmV2ZXJzZSgpW21ldGhvZE5hbWVdKG4pLnJldmVyc2UoKTt9O30pOy8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgdGhhdCBhY2NlcHQgYW4gYGl0ZXJhdGVlYCB2YWx1ZS5cbmFycmF5RWFjaChbJ2ZpbHRlcicsJ21hcCcsJ3Rha2VXaGlsZSddLGZ1bmN0aW9uKG1ldGhvZE5hbWUsaW5kZXgpe3ZhciB0eXBlPWluZGV4KzEsaXNGaWx0ZXI9dHlwZT09TEFaWV9GSUxURVJfRkxBR3x8dHlwZT09TEFaWV9XSElMRV9GTEFHO0xhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXT1mdW5jdGlvbihpdGVyYXRlZSl7dmFyIHJlc3VsdD10aGlzLmNsb25lKCk7cmVzdWx0Ll9faXRlcmF0ZWVzX18ucHVzaCh7aXRlcmF0ZWU6Z2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMyksdHlwZTp0eXBlfSk7cmVzdWx0Ll9fZmlsdGVyZWRfXz1yZXN1bHQuX19maWx0ZXJlZF9ffHxpc0ZpbHRlcjtyZXR1cm4gcmVzdWx0O307fSk7Ly8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaGVhZGAgYW5kIGBfLmxhc3RgLlxuYXJyYXlFYWNoKFsnaGVhZCcsJ2xhc3QnXSxmdW5jdGlvbihtZXRob2ROYW1lLGluZGV4KXt2YXIgdGFrZU5hbWU9J3Rha2UnKyhpbmRleD8nUmlnaHQnOicnKTtMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t0YWtlTmFtZV0oMSkudmFsdWUoKVswXTt9O30pOy8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmluaXRpYWxgIGFuZCBgXy50YWlsYC5cbmFycmF5RWFjaChbJ2luaXRpYWwnLCd0YWlsJ10sZnVuY3Rpb24obWV0aG9kTmFtZSxpbmRleCl7dmFyIGRyb3BOYW1lPSdkcm9wJysoaW5kZXg/Jyc6J1JpZ2h0Jyk7TGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19maWx0ZXJlZF9fP25ldyBMYXp5V3JhcHBlcih0aGlzKTp0aGlzW2Ryb3BOYW1lXSgxKTt9O30pO0xhenlXcmFwcGVyLnByb3RvdHlwZS5jb21wYWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKGlkZW50aXR5KTt9O0xhenlXcmFwcGVyLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKHByZWRpY2F0ZSl7cmV0dXJuIHRoaXMuZmlsdGVyKHByZWRpY2F0ZSkuaGVhZCgpO307TGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmRMYXN0PWZ1bmN0aW9uKHByZWRpY2F0ZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLmZpbmQocHJlZGljYXRlKTt9O0xhenlXcmFwcGVyLnByb3RvdHlwZS5pbnZva2VNYXA9YmFzZVJlc3QoZnVuY3Rpb24ocGF0aCxhcmdzKXtpZih0eXBlb2YgcGF0aD09PSdmdW5jdGlvbicpe3JldHVybiBuZXcgTGF6eVdyYXBwZXIodGhpcyk7fXJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGJhc2VJbnZva2UodmFsdWUscGF0aCxhcmdzKTt9KTt9KTtMYXp5V3JhcHBlci5wcm90b3R5cGUucmVqZWN0PWZ1bmN0aW9uKHByZWRpY2F0ZSl7cmV0dXJuIHRoaXMuZmlsdGVyKG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7fTtMYXp5V3JhcHBlci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oc3RhcnQsZW5kKXtzdGFydD10b0ludGVnZXIoc3RhcnQpO3ZhciByZXN1bHQ9dGhpcztpZihyZXN1bHQuX19maWx0ZXJlZF9fJiYoc3RhcnQ+MHx8ZW5kPDApKXtyZXR1cm4gbmV3IExhenlXcmFwcGVyKHJlc3VsdCk7fWlmKHN0YXJ0PDApe3Jlc3VsdD1yZXN1bHQudGFrZVJpZ2h0KC1zdGFydCk7fWVsc2UgaWYoc3RhcnQpe3Jlc3VsdD1yZXN1bHQuZHJvcChzdGFydCk7fWlmKGVuZCE9PXVuZGVmaW5lZCl7ZW5kPXRvSW50ZWdlcihlbmQpO3Jlc3VsdD1lbmQ8MD9yZXN1bHQuZHJvcFJpZ2h0KC1lbmQpOnJlc3VsdC50YWtlKGVuZC1zdGFydCk7fXJldHVybiByZXN1bHQ7fTtMYXp5V3JhcHBlci5wcm90b3R5cGUudGFrZVJpZ2h0V2hpbGU9ZnVuY3Rpb24ocHJlZGljYXRlKXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKHByZWRpY2F0ZSkucmV2ZXJzZSgpO307TGF6eVdyYXBwZXIucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWtlKE1BWF9BUlJBWV9MRU5HVEgpO307Ly8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG5iYXNlRm9yT3duKExhenlXcmFwcGVyLnByb3RvdHlwZSxmdW5jdGlvbihmdW5jLG1ldGhvZE5hbWUpe3ZhciBjaGVja0l0ZXJhdGVlPS9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG1ldGhvZE5hbWUpLGlzVGFrZXI9L14oPzpoZWFkfGxhc3QpJC8udGVzdChtZXRob2ROYW1lKSxsb2Rhc2hGdW5jPWxvZGFzaFtpc1Rha2VyPyd0YWtlJysobWV0aG9kTmFtZT09J2xhc3QnPydSaWdodCc6JycpOm1ldGhvZE5hbWVdLHJldFVud3JhcHBlZD1pc1Rha2VyfHwvXmZpbmQvLnRlc3QobWV0aG9kTmFtZSk7aWYoIWxvZGFzaEZ1bmMpe3JldHVybjt9bG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXT1mdW5jdGlvbigpe3ZhciB2YWx1ZT10aGlzLl9fd3JhcHBlZF9fLGFyZ3M9aXNUYWtlcj9bMV06YXJndW1lbnRzLGlzTGF6eT12YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyLGl0ZXJhdGVlPWFyZ3NbMF0sdXNlTGF6eT1pc0xhenl8fGlzQXJyYXkodmFsdWUpO3ZhciBpbnRlcmNlcHRvcj1mdW5jdGlvbiBpbnRlcmNlcHRvcih2YWx1ZSl7dmFyIHJlc3VsdD1sb2Rhc2hGdW5jLmFwcGx5KGxvZGFzaCxhcnJheVB1c2goW3ZhbHVlXSxhcmdzKSk7cmV0dXJuIGlzVGFrZXImJmNoYWluQWxsP3Jlc3VsdFswXTpyZXN1bHQ7fTtpZih1c2VMYXp5JiZjaGVja0l0ZXJhdGVlJiZ0eXBlb2YgaXRlcmF0ZWU9PT0nZnVuY3Rpb24nJiZpdGVyYXRlZS5sZW5ndGghPTEpey8vIEF2b2lkIGxhenkgdXNlIGlmIHRoZSBpdGVyYXRlZSBoYXMgYSBcImxlbmd0aFwiIHZhbHVlIG90aGVyIHRoYW4gYDFgLlxuaXNMYXp5PXVzZUxhenk9ZmFsc2U7fXZhciBjaGFpbkFsbD10aGlzLl9fY2hhaW5fXyxpc0h5YnJpZD0hIXRoaXMuX19hY3Rpb25zX18ubGVuZ3RoLGlzVW53cmFwcGVkPXJldFVud3JhcHBlZCYmIWNoYWluQWxsLG9ubHlMYXp5PWlzTGF6eSYmIWlzSHlicmlkO2lmKCFyZXRVbndyYXBwZWQmJnVzZUxhenkpe3ZhbHVlPW9ubHlMYXp5P3ZhbHVlOm5ldyBMYXp5V3JhcHBlcih0aGlzKTt2YXIgcmVzdWx0PWZ1bmMuYXBwbHkodmFsdWUsYXJncyk7cmVzdWx0Ll9fYWN0aW9uc19fLnB1c2goe2Z1bmM6dGhydSxhcmdzOltpbnRlcmNlcHRvcl0sdGhpc0FyZzp1bmRlZmluZWR9KTtyZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIocmVzdWx0LGNoYWluQWxsKTt9aWYoaXNVbndyYXBwZWQmJm9ubHlMYXp5KXtyZXR1cm4gZnVuYy5hcHBseSh0aGlzLGFyZ3MpO31yZXN1bHQ9dGhpcy50aHJ1KGludGVyY2VwdG9yKTtyZXR1cm4gaXNVbndyYXBwZWQ/aXNUYWtlcj9yZXN1bHQudmFsdWUoKVswXTpyZXN1bHQudmFsdWUoKTpyZXN1bHQ7fTt9KTsvLyBBZGQgYEFycmF5YCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbmFycmF5RWFjaChbJ3BvcCcsJ3B1c2gnLCdzaGlmdCcsJ3NvcnQnLCdzcGxpY2UnLCd1bnNoaWZ0J10sZnVuY3Rpb24obWV0aG9kTmFtZSl7dmFyIGZ1bmM9YXJyYXlQcm90b1ttZXRob2ROYW1lXSxjaGFpbk5hbWU9L14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpPyd0YXAnOid0aHJ1JyxyZXRVbndyYXBwZWQ9L14oPzpwb3B8c2hpZnQpJC8udGVzdChtZXRob2ROYW1lKTtsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdPWZ1bmN0aW9uKCl7dmFyIGFyZ3M9YXJndW1lbnRzO2lmKHJldFVud3JhcHBlZCYmIXRoaXMuX19jaGFpbl9fKXt2YXIgdmFsdWU9dGhpcy52YWx1ZSgpO3JldHVybiBmdW5jLmFwcGx5KGlzQXJyYXkodmFsdWUpP3ZhbHVlOltdLGFyZ3MpO31yZXR1cm4gdGhpc1tjaGFpbk5hbWVdKGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKT92YWx1ZTpbXSxhcmdzKTt9KTt9O30pOy8vIE1hcCBtaW5pZmllZCBtZXRob2QgbmFtZXMgdG8gdGhlaXIgcmVhbCBuYW1lcy5cbmJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLGZ1bmN0aW9uKGZ1bmMsbWV0aG9kTmFtZSl7dmFyIGxvZGFzaEZ1bmM9bG9kYXNoW21ldGhvZE5hbWVdO2lmKGxvZGFzaEZ1bmMpe3ZhciBrZXk9bG9kYXNoRnVuYy5uYW1lKycnLG5hbWVzPXJlYWxOYW1lc1trZXldfHwocmVhbE5hbWVzW2tleV09W10pO25hbWVzLnB1c2goe25hbWU6bWV0aG9kTmFtZSxmdW5jOmxvZGFzaEZ1bmN9KTt9fSk7cmVhbE5hbWVzW2NyZWF0ZUh5YnJpZCh1bmRlZmluZWQsV1JBUF9CSU5EX0tFWV9GTEFHKS5uYW1lXT1be25hbWU6J3dyYXBwZXInLGZ1bmM6dW5kZWZpbmVkfV07Ly8gQWRkIG1ldGhvZHMgdG8gYExhenlXcmFwcGVyYC5cbkxhenlXcmFwcGVyLnByb3RvdHlwZS5jbG9uZT1sYXp5Q2xvbmU7TGF6eVdyYXBwZXIucHJvdG90eXBlLnJldmVyc2U9bGF6eVJldmVyc2U7TGF6eVdyYXBwZXIucHJvdG90eXBlLnZhbHVlPWxhenlWYWx1ZTsvLyBBZGQgY2hhaW4gc2VxdWVuY2UgbWV0aG9kcyB0byB0aGUgYGxvZGFzaGAgd3JhcHBlci5cbmxvZGFzaC5wcm90b3R5cGUuYXQ9d3JhcHBlckF0O2xvZGFzaC5wcm90b3R5cGUuY2hhaW49d3JhcHBlckNoYWluO2xvZGFzaC5wcm90b3R5cGUuY29tbWl0PXdyYXBwZXJDb21taXQ7bG9kYXNoLnByb3RvdHlwZS5uZXh0PXdyYXBwZXJOZXh0O2xvZGFzaC5wcm90b3R5cGUucGxhbnQ9d3JhcHBlclBsYW50O2xvZGFzaC5wcm90b3R5cGUucmV2ZXJzZT13cmFwcGVyUmV2ZXJzZTtsb2Rhc2gucHJvdG90eXBlLnRvSlNPTj1sb2Rhc2gucHJvdG90eXBlLnZhbHVlT2Y9bG9kYXNoLnByb3RvdHlwZS52YWx1ZT13cmFwcGVyVmFsdWU7Ly8gQWRkIGxhenkgYWxpYXNlcy5cbmxvZGFzaC5wcm90b3R5cGUuZmlyc3Q9bG9kYXNoLnByb3RvdHlwZS5oZWFkO2lmKHN5bUl0ZXJhdG9yKXtsb2Rhc2gucHJvdG90eXBlW3N5bUl0ZXJhdG9yXT13cmFwcGVyVG9JdGVyYXRvcjt9cmV0dXJuIGxvZGFzaDt9Oy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vLyBFeHBvcnQgbG9kYXNoLlxudmFyIF89cnVuSW5Db250ZXh0KCk7Ly8gU29tZSBBTUQgYnVpbGQgb3B0aW1pemVycywgbGlrZSByLmpzLCBjaGVjayBmb3IgY29uZGl0aW9uIHBhdHRlcm5zIGxpa2U6XG5pZih0eXBlb2YgZGVmaW5lPT09J2Z1bmN0aW9uJyYmX3R5cGVvZihkZWZpbmUuYW1kKT09PSdvYmplY3QnJiZkZWZpbmUuYW1kKXsvLyBFeHBvc2UgTG9kYXNoIG9uIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHByZXZlbnQgZXJyb3JzIHdoZW4gTG9kYXNoIGlzXG4vLyBsb2FkZWQgYnkgYSBzY3JpcHQgdGFnIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBBTUQgbG9hZGVyLlxuLy8gU2VlIGh0dHA6Ly9yZXF1aXJlanMub3JnL2RvY3MvZXJyb3JzLmh0bWwjbWlzbWF0Y2ggZm9yIG1vcmUgZGV0YWlscy5cbi8vIFVzZSBgXy5ub0NvbmZsaWN0YCB0byByZW1vdmUgTG9kYXNoIGZyb20gdGhlIGdsb2JhbCBvYmplY3QuXG5yb290Ll89XzsvLyBEZWZpbmUgYXMgYW4gYW5vbnltb3VzIG1vZHVsZSBzbywgdGhyb3VnaCBwYXRoIG1hcHBpbmcsIGl0IGNhbiBiZVxuLy8gcmVmZXJlbmNlZCBhcyB0aGUgXCJ1bmRlcnNjb3JlXCIgbW9kdWxlLlxuZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIF87fSk7fS8vIENoZWNrIGZvciBgZXhwb3J0c2AgYWZ0ZXIgYGRlZmluZWAgaW4gY2FzZSBhIGJ1aWxkIG9wdGltaXplciBhZGRzIGl0LlxuZWxzZSBpZihmcmVlTW9kdWxlKXsvLyBFeHBvcnQgZm9yIE5vZGUuanMuXG4oZnJlZU1vZHVsZS5leHBvcnRzPV8pLl89XzsvLyBFeHBvcnQgZm9yIENvbW1vbkpTIHN1cHBvcnQuXG5mcmVlRXhwb3J0cy5fPV87fWVsc2V7Ly8gRXhwb3J0IHRvIHRoZSBnbG9iYWwgb2JqZWN0Llxucm9vdC5fPV87fX0pLmNhbGwodW5kZWZpbmVkKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/lodash.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/merge.js":
/*!****************************************************!*\
!*** ./node_modules/element-ui/lib/utils/merge.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nexports[\"default\"] = function (target) {\n for (var i = 1, j = arguments.length; i < j; i++) {\n var source = arguments[i] || {};\n for (var prop in source) {\n if (source.hasOwnProperty(prop)) {\n var value = source[prop];\n if (value !== undefined) {\n target[prop] = value;\n }\n }\n }\n }\n\n return target;\n};\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvbWVyZ2UuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCOztBQUVsQixrQkFBZTtBQUNmLHdDQUF3QyxPQUFPO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvbWVyZ2UuanM/OGNmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMSwgaiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldIHx8IHt9O1xuICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7XG4gICAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVtwcm9wXTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59O1xuXG47Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/merge.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/popper.js":
/*!*****************************************************!*\
!*** ./node_modules/element-ui/lib/utils/popper.js ***!
\*****************************************************/
/***/ ((module, exports, __webpack_require__) => {
"use strict";
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version {{version}}\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n//\n// Cross module loader\n// Supported: Node, AMD, Browser globals\n//\n;(function (root, factory) {\n if (true) {\n // AMD. Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(undefined, function () {\n\n 'use strict';\n\n var root = window;\n\n // default options\n var DEFAULTS = {\n // placement of the popper\n placement: 'bottom',\n\n gpuAcceleration: true,\n\n // shift popper from its origin by the given amount of pixels (can be negative)\n offset: 0,\n\n // the element which will act as boundary of the popper\n boundariesElement: 'viewport',\n\n // amount of pixel used to define a minimum distance between the boundaries and the popper\n boundariesPadding: 5,\n\n // popper will try to prevent overflow following this order,\n // by default, then, it could overflow on the left and on top of the boundariesElement\n preventOverflowOrder: ['left', 'right', 'top', 'bottom'],\n\n // the behavior used by flip to change the placement of the popper\n flipBehavior: 'flip',\n\n arrowElement: '[x-arrow]',\n\n arrowOffset: 0,\n\n // list of functions used to modify the offsets before they are applied to the popper\n modifiers: ['shift', 'offset', 'preventOverflow', 'keepTogether', 'arrow', 'flip', 'applyStyle'],\n\n modifiersIgnored: [],\n\n forceAbsolute: false\n };\n\n /**\n * Create a new Popper.js instance\n * @constructor Popper\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement|Object} popper\n * The HTML element used as popper, or a configuration used to generate the popper.\n * @param {String} [popper.tagName='div'] The tag name of the generated popper.\n * @param {Array} [popper.classNames=['popper']] Array of classes to apply to the generated popper.\n * @param {Array} [popper.attributes] Array of attributes to apply, specify `attr:value` to assign a value to it.\n * @param {HTMLElement|String} [popper.parent=window.document.body] The parent element, given as HTMLElement or as query string.\n * @param {String} [popper.content=''] The content of the popper, it can be text, html, or node; if it is not text, set `contentType` to `html` or `node`.\n * @param {String} [popper.contentType='text'] If `html`, the `content` will be parsed as HTML. If `node`, it will be appended as-is.\n * @param {String} [popper.arrowTagName='div'] Same as `popper.tagName` but for the arrow element.\n * @param {Array} [popper.arrowClassNames='popper__arrow'] Same as `popper.classNames` but for the arrow element.\n * @param {String} [popper.arrowAttributes=['x-arrow']] Same as `popper.attributes` but for the arrow element.\n * @param {Object} options\n * @param {String} [options.placement=bottom]\n * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -right),\n * left(-start, -end)`\n *\n * @param {HTMLElement|String} [options.arrowElement='[x-arrow]']\n * The DOM Node used as arrow for the popper, or a CSS selector used to get the DOM node. It must be child of\n * its parent Popper. Popper.js will apply to the given element the style required to align the arrow with its\n * reference element.\n * By default, it will look for a child node of the popper with the `x-arrow` attribute.\n *\n * @param {Boolean} [options.gpuAcceleration=true]\n * When this property is set to true, the popper position will be applied using CSS3 translate3d, allowing the\n * browser to use the GPU to accelerate the rendering.\n * If set to false, the popper will be placed using `top` and `left` properties, not using the GPU.\n *\n * @param {Number} [options.offset=0]\n * Amount of pixels the popper will be shifted (can be negative).\n *\n * @param {String|Element} [options.boundariesElement='viewport']\n * The element which will define the boundaries of the popper position, the popper will never be placed outside\n * of the defined boundaries (except if `keepTogether` is enabled)\n *\n * @param {Number} [options.boundariesPadding=5]\n * Additional padding for the boundaries\n *\n * @param {Array} [options.preventOverflowOrder=['left', 'right', 'top', 'bottom']]\n * Order used when Popper.js tries to avoid overflows from the boundaries, they will be checked in order,\n * this means that the last ones will never overflow\n *\n * @param {String|Array} [options.flipBehavior='flip']\n * The behavior used by the `flip` modifier to change the placement of the popper when the latter is trying to\n * overlap its reference element. Defining `flip` as value, the placement will be flipped on\n * its axis (`right - left`, `top - bottom`).\n * You can even pass an array of placements (eg: `['right', 'left', 'top']` ) to manually specify\n * how alter the placement when a flip is needed. (eg. in the above example, it would first flip from right to left,\n * then, if even in its new placement, the popper is overlapping its reference element, it will be moved to top)\n *\n * @param {Array} [options.modifiers=[ 'shift', 'offset', 'preventOverflow', 'keepTogether', 'arrow', 'flip', 'applyStyle']]\n * List of functions used to modify the data before they are applied to the popper, add your custom functions\n * to this array to edit the offsets and placement.\n * The function should reflect the @params and @returns of preventOverflow\n *\n * @param {Array} [options.modifiersIgnored=[]]\n * Put here any built-in modifier name you want to exclude from the modifiers list\n * The function should reflect the @params and @returns of preventOverflow\n *\n * @param {Boolean} [options.removeOnDestroy=false]\n * Set to true if you want to automatically remove the popper when you call the `destroy` method.\n */\n function Popper(reference, popper, options) {\n this._reference = reference.jquery ? reference[0] : reference;\n this.state = {};\n\n // if the popper variable is a configuration object, parse it to generate an HTMLElement\n // generate a default popper if is not defined\n var isNotDefined = typeof popper === 'undefined' || popper === null;\n var isConfig = popper && Object.prototype.toString.call(popper) === '[object Object]';\n if (isNotDefined || isConfig) {\n this._popper = this.parse(isConfig ? popper : {});\n }\n // otherwise, use the given HTMLElement as popper\n else {\n this._popper = popper.jquery ? popper[0] : popper;\n }\n\n // with {} we create a new object with the options inside it\n this._options = Object.assign({}, DEFAULTS, options);\n\n // refactoring modifiers' list\n this._options.modifiers = this._options.modifiers.map(function (modifier) {\n // remove ignored modifiers\n if (this._options.modifiersIgnored.indexOf(modifier) !== -1) return;\n\n // set the x-placement attribute before everything else because it could be used to add margins to the popper\n // margins needs to be calculated to get the correct popper offsets\n if (modifier === 'applyStyle') {\n this._popper.setAttribute('x-placement', this._options.placement);\n }\n\n // return predefined modifier identified by string or keep the custom one\n return this.modifiers[modifier] || modifier;\n }.bind(this));\n\n // make sure to apply the popper position before any computation\n this.state.position = this._getPosition(this._popper, this._reference);\n setStyle(this._popper, { position: this.state.position, top: 0 });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n // setup event listeners, they will take care of update the position in specific situations\n this._setupEventListeners();\n return this;\n }\n\n //\n // Methods\n //\n /**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\n Popper.prototype.destroy = function () {\n this._popper.removeAttribute('x-placement');\n this._popper.style.left = '';\n this._popper.style.position = '';\n this._popper.style.top = '';\n this._popper.style[getSupportedPropertyName('transform')] = '';\n this._removeEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n if (this._options.removeOnDestroy) {\n this._popper.remove();\n }\n return this;\n };\n\n /**\n * Updates the position of the popper, computing the new offsets and applying the new style\n * @method\n * @memberof Popper\n */\n Popper.prototype.update = function () {\n var data = { instance: this, styles: {} };\n\n // store placement inside the data object, modifiers will be able to edit `placement` if needed\n // and refer to _originalPlacement to know the original value\n data.placement = this._options.placement;\n data._originalPlacement = this._options.placement;\n\n // compute the popper and reference offsets and put them inside data.offsets\n data.offsets = this._getOffsets(this._popper, this._reference, data.placement);\n\n // get boundaries\n data.boundaries = this._getBoundaries(data, this._options.boundariesPadding, this._options.boundariesElement);\n\n data = this.runModifiers(data, this._options.modifiers);\n\n if (typeof this.state.updateCallback === 'function') {\n this.state.updateCallback(data);\n }\n };\n\n /**\n * If a function is passed, it will be executed after the initialization of popper with as first argument the Popper instance.\n * @method\n * @memberof Popper\n * @param {Function} callback\n */\n Popper.prototype.onCreate = function (callback) {\n // the createCallbacks return as first argument the popper instance\n callback(this);\n return this;\n };\n\n /**\n * If a function is passed, it will be executed after each update of popper with as first argument the set of coordinates and informations\n * used to style popper and its arrow.\n * NOTE: it doesn't get fired on the first call of the `Popper.update()` method inside the `Popper` constructor!\n * @method\n * @memberof Popper\n * @param {Function} callback\n */\n Popper.prototype.onUpdate = function (callback) {\n this.state.updateCallback = callback;\n return this;\n };\n\n /**\n * Helper used to generate poppers from a configuration file\n * @method\n * @memberof Popper\n * @param config {Object} configuration\n * @returns {HTMLElement} popper\n */\n Popper.prototype.parse = function (config) {\n var defaultConfig = {\n tagName: 'div',\n classNames: ['popper'],\n attributes: [],\n parent: root.document.body,\n content: '',\n contentType: 'text',\n arrowTagName: 'div',\n arrowClassNames: ['popper__arrow'],\n arrowAttributes: ['x-arrow']\n };\n config = Object.assign({}, defaultConfig, config);\n\n var d = root.document;\n\n var popper = d.createElement(config.tagName);\n addClassNames(popper, config.classNames);\n addAttributes(popper, config.attributes);\n if (config.contentType === 'node') {\n popper.appendChild(config.content.jquery ? config.content[0] : config.content);\n } else if (config.contentType === 'html') {\n popper.innerHTML = config.content;\n } else {\n popper.textContent = config.content;\n }\n\n if (config.arrowTagName) {\n var arrow = d.createElement(config.arrowTagName);\n addClassNames(arrow, config.arrowClassNames);\n addAttributes(arrow, config.arrowAttributes);\n popper.appendChild(arrow);\n }\n\n var parent = config.parent.jquery ? config.parent[0] : config.parent;\n\n // if the given parent is a string, use it to match an element\n // if more than one element is matched, the first one will be used as parent\n // if no elements are matched, the script will throw an error\n if (typeof parent === 'string') {\n parent = d.querySelectorAll(config.parent);\n if (parent.length > 1) {\n console.warn('WARNING: the given `parent` query(' + config.parent + ') matched more than one element, the first one will be used');\n }\n if (parent.length === 0) {\n throw 'ERROR: the given `parent` doesn\\'t exists!';\n }\n parent = parent[0];\n }\n // if the given parent is a DOM nodes list or an array of nodes with more than one element,\n // the first one will be used as parent\n if (parent.length > 1 && parent instanceof Element === false) {\n console.warn('WARNING: you have passed as parent a list of elements, the first one will be used');\n parent = parent[0];\n }\n\n // append the generated popper to its parent\n parent.appendChild(popper);\n\n return popper;\n\n /**\n * Adds class names to the given element\n * @function\n * @ignore\n * @param {HTMLElement} target\n * @param {Array} classes\n */\n function addClassNames(element, classNames) {\n classNames.forEach(function (className) {\n element.classList.add(className);\n });\n }\n\n /**\n * Adds attributes to the given element\n * @function\n * @ignore\n * @param {HTMLElement} target\n * @param {Array} attributes\n * @example\n * addAttributes(element, [ 'data-info:foobar' ]);\n */\n function addAttributes(element, attributes) {\n attributes.forEach(function (attribute) {\n element.setAttribute(attribute.split(':')[0], attribute.split(':')[1] || '');\n });\n }\n };\n\n /**\n * Helper used to get the position which will be applied to the popper\n * @method\n * @memberof Popper\n * @param config {HTMLElement} popper element\n * @param reference {HTMLElement} reference element\n * @returns {String} position\n */\n Popper.prototype._getPosition = function (popper, reference) {\n var container = getOffsetParent(reference);\n\n if (this._options.forceAbsolute) {\n return 'absolute';\n }\n\n // Decide if the popper will be fixed\n // If the reference element is inside a fixed context, the popper will be fixed as well to allow them to scroll together\n var isParentFixed = isFixed(reference, container);\n return isParentFixed ? 'fixed' : 'absolute';\n };\n\n /**\n * Get offsets to the popper\n * @method\n * @memberof Popper\n * @access private\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n Popper.prototype._getOffsets = function (popper, reference, placement) {\n placement = placement.split('-')[0];\n var popperOffsets = {};\n\n popperOffsets.position = this.state.position;\n var isParentFixed = popperOffsets.position === 'fixed';\n\n //\n // Get reference element position\n //\n var referenceOffsets = getOffsetRectRelativeToCustomParent(reference, getOffsetParent(popper), isParentFixed);\n\n //\n // Get popper sizes\n //\n var popperRect = getOuterSizes(popper);\n\n //\n // Compute offsets of popper\n //\n\n // depending by the popper placement we have to compute its offsets slightly differently\n if (['right', 'left'].indexOf(placement) !== -1) {\n popperOffsets.top = referenceOffsets.top + referenceOffsets.height / 2 - popperRect.height / 2;\n if (placement === 'left') {\n popperOffsets.left = referenceOffsets.left - popperRect.width;\n } else {\n popperOffsets.left = referenceOffsets.right;\n }\n } else {\n popperOffsets.left = referenceOffsets.left + referenceOffsets.width / 2 - popperRect.width / 2;\n if (placement === 'top') {\n popperOffsets.top = referenceOffsets.top - popperRect.height;\n } else {\n popperOffsets.top = referenceOffsets.bottom;\n }\n }\n\n // Add width and height to our offsets object\n popperOffsets.width = popperRect.width;\n popperOffsets.height = popperRect.height;\n\n return {\n popper: popperOffsets,\n reference: referenceOffsets\n };\n };\n\n /**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper\n * @access private\n */\n Popper.prototype._setupEventListeners = function () {\n // NOTE: 1 DOM access here\n this.state.updateBound = this.update.bind(this);\n root.addEventListener('resize', this.state.updateBound);\n // if the boundariesElement is window we don't need to listen for the scroll event\n if (this._options.boundariesElement !== 'window') {\n var target = getScrollParent(this._reference);\n // here it could be both `body` or `documentElement` thanks to Firefox, we then check both\n if (target === root.document.body || target === root.document.documentElement) {\n target = root;\n }\n target.addEventListener('scroll', this.state.updateBound);\n this.state.scrollTarget = target;\n }\n };\n\n /**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper\n * @access private\n */\n Popper.prototype._removeEventListeners = function () {\n // NOTE: 1 DOM access here\n root.removeEventListener('resize', this.state.updateBound);\n if (this._options.boundariesElement !== 'window' && this.state.scrollTarget) {\n this.state.scrollTarget.removeEventListener('scroll', this.state.updateBound);\n this.state.scrollTarget = null;\n }\n this.state.updateBound = null;\n };\n\n /**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper\n * @access private\n * @param {Object} data - Object containing the property \"offsets\" generated by `_getOffsets`\n * @param {Number} padding - Boundaries padding\n * @param {Element} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\n Popper.prototype._getBoundaries = function (data, padding, boundariesElement) {\n // NOTE: 1 DOM access here\n var boundaries = {};\n var width, height;\n if (boundariesElement === 'window') {\n var body = root.document.body,\n html = root.document.documentElement;\n\n height = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n width = Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n\n boundaries = {\n top: 0,\n right: width,\n bottom: height,\n left: 0\n };\n } else if (boundariesElement === 'viewport') {\n var offsetParent = getOffsetParent(this._popper);\n var scrollParent = getScrollParent(this._popper);\n var offsetParentRect = getOffsetRect(offsetParent);\n\n // Thanks the fucking native API, `document.body.scrollTop` & `document.documentElement.scrollTop`\n var getScrollTopValue = function getScrollTopValue(element) {\n return element == document.body ? Math.max(document.documentElement.scrollTop, document.body.scrollTop) : element.scrollTop;\n };\n var getScrollLeftValue = function getScrollLeftValue(element) {\n return element == document.body ? Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) : element.scrollLeft;\n };\n\n // if the popper is fixed we don't have to substract scrolling from the boundaries\n var scrollTop = data.offsets.popper.position === 'fixed' ? 0 : getScrollTopValue(scrollParent);\n var scrollLeft = data.offsets.popper.position === 'fixed' ? 0 : getScrollLeftValue(scrollParent);\n\n boundaries = {\n top: 0 - (offsetParentRect.top - scrollTop),\n right: root.document.documentElement.clientWidth - (offsetParentRect.left - scrollLeft),\n bottom: root.document.documentElement.clientHeight - (offsetParentRect.top - scrollTop),\n left: 0 - (offsetParentRect.left - scrollLeft)\n };\n } else {\n if (getOffsetParent(this._popper) === boundariesElement) {\n boundaries = {\n top: 0,\n left: 0,\n right: boundariesElement.clientWidth,\n bottom: boundariesElement.clientHeight\n };\n } else {\n boundaries = getOffsetRect(boundariesElement);\n }\n }\n boundaries.left += padding;\n boundaries.right -= padding;\n boundaries.top = boundaries.top + padding;\n boundaries.bottom = boundaries.bottom - padding;\n return boundaries;\n };\n\n /**\n * Loop trough the list of modifiers and run them in order, each of them will then edit the data object\n * @method\n * @memberof Popper\n * @access public\n * @param {Object} data\n * @param {Array} modifiers\n * @param {Function} ends\n */\n Popper.prototype.runModifiers = function (data, modifiers, ends) {\n var modifiersToRun = modifiers.slice();\n if (ends !== undefined) {\n modifiersToRun = this._options.modifiers.slice(0, getArrayKeyIndex(this._options.modifiers, ends));\n }\n\n modifiersToRun.forEach(function (modifier) {\n if (isFunction(modifier)) {\n data = modifier.call(this, data);\n }\n }.bind(this));\n\n return data;\n };\n\n /**\n * Helper used to know if the given modifier depends from another one.\n * @method\n * @memberof Popper\n * @param {String} requesting - name of requesting modifier\n * @param {String} requested - name of requested modifier\n * @returns {Boolean}\n */\n Popper.prototype.isModifierRequired = function (requesting, requested) {\n var index = getArrayKeyIndex(this._options.modifiers, requesting);\n return !!this._options.modifiers.slice(0, index).filter(function (modifier) {\n return modifier === requested;\n }).length;\n };\n\n //\n // Modifiers\n //\n\n /**\n * Modifiers list\n * @namespace Popper.modifiers\n * @memberof Popper\n * @type {Object}\n */\n Popper.prototype.modifiers = {};\n\n /**\n * Apply the computed styles to the popper element\n * @method\n * @memberof Popper.modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @returns {Object} The same data object\n */\n Popper.prototype.modifiers.applyStyle = function (data) {\n // apply the final offsets to the popper\n // NOTE: 1 DOM access here\n var styles = {\n position: data.offsets.popper.position\n };\n\n // round top and left to avoid blurry text\n var left = Math.round(data.offsets.popper.left);\n var top = Math.round(data.offsets.popper.top);\n\n // if gpuAcceleration is set to true and transform is supported, we use `translate3d` to apply the position to the popper\n // we automatically use the supported prefixed version if needed\n var prefixedProperty;\n if (this._options.gpuAcceleration && (prefixedProperty = getSupportedPropertyName('transform'))) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles.top = 0;\n styles.left = 0;\n }\n // othwerise, we use the standard `left` and `top` properties\n else {\n styles.left = left;\n styles.top = top;\n }\n\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n Object.assign(styles, data.styles);\n\n setStyle(this._popper, styles);\n\n // set an attribute which will be useful to style the tooltip (use it to properly position its arrow)\n // NOTE: 1 DOM access here\n this._popper.setAttribute('x-placement', data.placement);\n\n // if the arrow modifier is required and the arrow style has been computed, apply the arrow style\n if (this.isModifierRequired(this.modifiers.applyStyle, this.modifiers.arrow) && data.offsets.arrow) {\n setStyle(data.arrowElement, data.offsets.arrow);\n }\n\n return data;\n };\n\n /**\n * Modifier used to shift the popper on the start or end of its reference element side\n * @method\n * @memberof Popper.modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @returns {Object} The data object, properly modified\n */\n Popper.prototype.modifiers.shift = function (data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftVariation = placement.split('-')[1];\n\n // if shift shiftVariation is specified, run the modifier\n if (shiftVariation) {\n var reference = data.offsets.reference;\n var popper = getPopperClientRect(data.offsets.popper);\n\n var shiftOffsets = {\n y: {\n start: { top: reference.top },\n end: { top: reference.top + reference.height - popper.height }\n },\n x: {\n start: { left: reference.left },\n end: { left: reference.left + reference.width - popper.width }\n }\n };\n\n var axis = ['bottom', 'top'].indexOf(basePlacement) !== -1 ? 'x' : 'y';\n\n data.offsets.popper = Object.assign(popper, shiftOffsets[axis][shiftVariation]);\n }\n\n return data;\n };\n\n /**\n * Modifier used to make sure the popper does not overflows from it's boundaries\n * @method\n * @memberof Popper.modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @returns {Object} The data object, properly modified\n */\n Popper.prototype.modifiers.preventOverflow = function (data) {\n var order = this._options.preventOverflowOrder;\n var popper = getPopperClientRect(data.offsets.popper);\n\n var check = {\n left: function left() {\n var left = popper.left;\n if (popper.left < data.boundaries.left) {\n left = Math.max(popper.left, data.boundaries.left);\n }\n return { left: left };\n },\n right: function right() {\n var left = popper.left;\n if (popper.right > data.boundaries.right) {\n left = Math.min(popper.left, data.boundaries.right - popper.width);\n }\n return { left: left };\n },\n top: function top() {\n var top = popper.top;\n if (popper.top < data.boundaries.top) {\n top = Math.max(popper.top, data.boundaries.top);\n }\n return { top: top };\n },\n bottom: function bottom() {\n var top = popper.top;\n if (popper.bottom > data.boundaries.bottom) {\n top = Math.min(popper.top, data.boundaries.bottom - popper.height);\n }\n return { top: top };\n }\n };\n\n order.forEach(function (direction) {\n data.offsets.popper = Object.assign(popper, check[direction]());\n });\n\n return data;\n };\n\n /**\n * Modifier used to make sure the popper is always near its reference\n * @method\n * @memberof Popper.modifiers\n * @argument {Object} data - The data object generated by _update method\n * @returns {Object} The data object, properly modified\n */\n Popper.prototype.modifiers.keepTogether = function (data) {\n var popper = getPopperClientRect(data.offsets.popper);\n var reference = data.offsets.reference;\n var f = Math.floor;\n\n if (popper.right < f(reference.left)) {\n data.offsets.popper.left = f(reference.left) - popper.width;\n }\n if (popper.left > f(reference.right)) {\n data.offsets.popper.left = f(reference.right);\n }\n if (popper.bottom < f(reference.top)) {\n data.offsets.popper.top = f(reference.top) - popper.height;\n }\n if (popper.top > f(reference.bottom)) {\n data.offsets.popper.top = f(reference.bottom);\n }\n\n return data;\n };\n\n /**\n * Modifier used to flip the placement of the popper when the latter is starting overlapping its reference element.\n * Requires the `preventOverflow` modifier before it in order to work.\n * **NOTE:** This modifier will run all its previous modifiers everytime it tries to flip the popper!\n * @method\n * @memberof Popper.modifiers\n * @argument {Object} data - The data object generated by _update method\n * @returns {Object} The data object, properly modified\n */\n Popper.prototype.modifiers.flip = function (data) {\n // check if preventOverflow is in the list of modifiers before the flip modifier.\n // otherwise flip would not work as expected.\n if (!this.isModifierRequired(this.modifiers.flip, this.modifiers.preventOverflow)) {\n console.warn('WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!');\n return data;\n }\n\n if (data.flipped && data.placement === data._originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n if (this._options.flipBehavior === 'flip') {\n flipOrder = [placement, placementOpposite];\n } else {\n flipOrder = this._options.flipBehavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = getPopperClientRect(data.offsets.popper);\n\n // this boolean is used to distinguish right and bottom from top and left\n // they need different computations to get flipped\n var a = ['right', 'bottom'].indexOf(placement) !== -1;\n\n // using Math.floor because the reference offsets may contain decimals we are not going to consider here\n if (a && Math.floor(data.offsets.reference[placement]) > Math.floor(popperOffsets[placementOpposite]) || !a && Math.floor(data.offsets.reference[placement]) < Math.floor(popperOffsets[placementOpposite])) {\n // we'll use this boolean to detect any flip loop\n data.flipped = true;\n data.placement = flipOrder[index + 1];\n if (variation) {\n data.placement += '-' + variation;\n }\n data.offsets.popper = this._getOffsets(this._popper, this._reference, data.placement).popper;\n\n data = this.runModifiers(data, this._options.modifiers, this._flip);\n }\n }.bind(this));\n return data;\n };\n\n /**\n * Modifier used to add an offset to the popper, useful if you more granularity positioning your popper.\n * The offsets will shift the popper on the side of its reference element.\n * @method\n * @memberof Popper.modifiers\n * @argument {Object} data - The data object generated by _update method\n * @returns {Object} The data object, properly modified\n */\n Popper.prototype.modifiers.offset = function (data) {\n var offset = this._options.offset;\n var popper = data.offsets.popper;\n\n if (data.placement.indexOf('left') !== -1) {\n popper.top -= offset;\n } else if (data.placement.indexOf('right') !== -1) {\n popper.top += offset;\n } else if (data.placement.indexOf('top') !== -1) {\n popper.left -= offset;\n } else if (data.placement.indexOf('bottom') !== -1) {\n popper.left += offset;\n }\n return data;\n };\n\n /**\n * Modifier used to move the arrows on the edge of the popper to make sure them are always between the popper and the reference element\n * It will use the CSS outer size of the arrow element to know how many pixels of conjuction are needed\n * @method\n * @memberof Popper.modifiers\n * @argument {Object} data - The data object generated by _update method\n * @returns {Object} The data object, properly modified\n */\n Popper.prototype.modifiers.arrow = function (data) {\n var arrow = this._options.arrowElement;\n var arrowOffset = this._options.arrowOffset;\n\n // if the arrowElement is a string, suppose it's a CSS selector\n if (typeof arrow === 'string') {\n arrow = this._popper.querySelector(arrow);\n }\n\n // if arrow element is not found, don't run the modifier\n if (!arrow) {\n return data;\n }\n\n // the arrow element must be child of its popper\n if (!this._popper.contains(arrow)) {\n console.warn('WARNING: `arrowElement` must be child of its popper element!');\n return data;\n }\n\n // arrow depends on keepTogether in order to work\n if (!this.isModifierRequired(this.modifiers.arrow, this.modifiers.keepTogether)) {\n console.warn('WARNING: keepTogether modifier is required by arrow modifier in order to work, be sure to include it before arrow!');\n return data;\n }\n\n var arrowStyle = {};\n var placement = data.placement.split('-')[0];\n var popper = getPopperClientRect(data.offsets.popper);\n var reference = data.offsets.reference;\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var side = isVertical ? 'top' : 'left';\n var translate = isVertical ? 'translateY' : 'translateX';\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowSize = getOuterSizes(arrow)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowSize);\n }\n // bottom/right side\n if (reference[side] + arrowSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowSize - popper[opSide];\n }\n\n // compute center of the popper\n var center = reference[side] + (arrowOffset || reference[len] / 2 - arrowSize / 2);\n\n var sideValue = center - popper[side];\n\n // prevent arrow from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowSize - 8, sideValue), 8);\n arrowStyle[side] = sideValue;\n arrowStyle[altSide] = ''; // make sure to remove any old style from the arrow\n\n data.offsets.arrow = arrowStyle;\n data.arrowElement = arrow;\n\n return data;\n };\n\n //\n // Helpers\n //\n\n /**\n * Get the outer sizes of the given element (offset size + margins)\n * @function\n * @ignore\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n function getOuterSizes(element) {\n // NOTE: 1 DOM access here\n var _display = element.style.display,\n _visibility = element.style.visibility;\n element.style.display = 'block';element.style.visibility = 'hidden';\n var calcWidthToForceRepaint = element.offsetWidth;\n\n // original method\n var styles = root.getComputedStyle(element);\n var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n var result = { width: element.offsetWidth + y, height: element.offsetHeight + x };\n\n // reset element styles\n element.style.display = _display;element.style.visibility = _visibility;\n return result;\n }\n\n /**\n * Get the opposite placement of the given one/\n * @function\n * @ignore\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n function getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n }\n\n /**\n * Given the popper offsets, generate an output similar to getBoundingClientRect\n * @function\n * @ignore\n * @argument {Object} popperOffsets\n * @returns {Object} ClientRect like output\n */\n function getPopperClientRect(popperOffsets) {\n var offsets = Object.assign({}, popperOffsets);\n offsets.right = offsets.left + offsets.width;\n offsets.bottom = offsets.top + offsets.height;\n return offsets;\n }\n\n /**\n * Given an array and the key to find, returns its index\n * @function\n * @ignore\n * @argument {Array} arr\n * @argument keyToFind\n * @returns index or null\n */\n function getArrayKeyIndex(arr, keyToFind) {\n var i = 0,\n key;\n for (key in arr) {\n if (arr[key] === keyToFind) {\n return i;\n }\n i++;\n }\n return null;\n }\n\n /**\n * Get CSS computed property of the given element\n * @function\n * @ignore\n * @argument {Eement} element\n * @argument {String} property\n */\n function getStyleComputedProperty(element, property) {\n // NOTE: 1 DOM access here\n var css = root.getComputedStyle(element, null);\n return css[property];\n }\n\n /**\n * Returns the offset parent of the given element\n * @function\n * @ignore\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent;\n return offsetParent === root.document.body || !offsetParent ? root.document.documentElement : offsetParent;\n }\n\n /**\n * Returns the scrolling parent of the given element\n * @function\n * @ignore\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n function getScrollParent(element) {\n var parent = element.parentNode;\n\n if (!parent) {\n return element;\n }\n\n if (parent === root.document) {\n // Firefox puts the scrollTOp value on `documentElement` instead of `body`, we then check which of them is\n // greater than 0 and return the proper element\n if (root.document.body.scrollTop || root.document.body.scrollLeft) {\n return root.document.body;\n } else {\n return root.document.documentElement;\n }\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n if (['scroll', 'auto'].indexOf(getStyleComputedProperty(parent, 'overflow')) !== -1 || ['scroll', 'auto'].indexOf(getStyleComputedProperty(parent, 'overflow-x')) !== -1 || ['scroll', 'auto'].indexOf(getStyleComputedProperty(parent, 'overflow-y')) !== -1) {\n // If the detected scrollParent is body, we perform an additional check on its parentNode\n // in this way we'll get body if the browser is Chrome-ish, or documentElement otherwise\n // fixes issue #65\n return parent;\n }\n return getScrollParent(element.parentNode);\n }\n\n /**\n * Check if the given element is fixed or is inside a fixed parent\n * @function\n * @ignore\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\n function isFixed(element) {\n if (element === root.document.body) {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return element.parentNode ? isFixed(element.parentNode) : element;\n }\n\n /**\n * Set the style to the given popper\n * @function\n * @ignore\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles - Object with a list of properties and values which will be applied to the element\n */\n function setStyle(element, styles) {\n function is_numeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n }\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && is_numeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n }\n\n /**\n * Check if the given variable is a function\n * @function\n * @ignore\n * @argument {*} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n function isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n }\n\n /**\n * Get the position of the given element, relative to its offset parent\n * @function\n * @ignore\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\n function getOffsetRect(element) {\n var elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop\n };\n\n elementRect.right = elementRect.left + elementRect.width;\n elementRect.bottom = elementRect.top + elementRect.height;\n\n // position\n return elementRect;\n }\n\n /**\n * Get bounding client rect of given element\n * @function\n * @ignore\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n\n // whether the IE version is lower than 11\n var isIE = navigator.userAgent.indexOf(\"MSIE\") != -1;\n\n // fix ie document bounding top always 0 bug\n var rectTop = isIE && element.tagName === 'HTML' ? -element.scrollTop : rect.top;\n\n return {\n left: rect.left,\n top: rectTop,\n right: rect.right,\n bottom: rect.bottom,\n width: rect.right - rect.left,\n height: rect.bottom - rectTop\n };\n }\n\n /**\n * Given an element and one of its parents, return the offset\n * @function\n * @ignore\n * @param {HTMLElement} element\n * @param {HTMLElement} parent\n * @return {Object} rect\n */\n function getOffsetRectRelativeToCustomParent(element, parent, fixed) {\n var elementRect = getBoundingClientRect(element);\n var parentRect = getBoundingClientRect(parent);\n\n if (fixed) {\n var scrollParent = getScrollParent(parent);\n parentRect.top += scrollParent.scrollTop;\n parentRect.bottom += scrollParent.scrollTop;\n parentRect.left += scrollParent.scrollLeft;\n parentRect.right += scrollParent.scrollLeft;\n }\n\n var rect = {\n top: elementRect.top - parentRect.top,\n left: elementRect.left - parentRect.left,\n bottom: elementRect.top - parentRect.top + elementRect.height,\n right: elementRect.left - parentRect.left + elementRect.width,\n width: elementRect.width,\n height: elementRect.height\n };\n return rect;\n }\n\n /**\n * Get the prefixed supported property name\n * @function\n * @ignore\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase)\n */\n function getSupportedPropertyName(property) {\n var prefixes = ['', 'ms', 'webkit', 'moz', 'o'];\n\n for (var i = 0; i < prefixes.length; i++) {\n var toCheck = prefixes[i] ? prefixes[i] + property.charAt(0).toUpperCase() + property.slice(1) : property;\n if (typeof root.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n }\n\n /**\n * The Object.assign() method is used to copy the values of all enumerable own properties from one or more source\n * objects to a target object. It will return the target object.\n * This polyfill doesn't support symbol properties, since ES5 doesn't have symbols anyway\n * Source: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @function\n * @ignore\n */\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function value(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n nextSource = Object(nextSource);\n\n var keysArray = Object.keys(nextSource);\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n }\n });\n }\n\n return Popper;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvcG9wcGVyLmpzIiwibWFwcGluZ3MiOiJBQUFBLGtFQUFhOztBQUViLHFHQUFxRyxxQkFBcUIsbUJBQW1COztBQUU3STtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxRQUFRLElBQTBDO0FBQ2xEO0FBQ0EsUUFBUSxvQ0FBTyxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0dBQUM7QUFDdkIsTUFBTSxLQUFLLEVBUU47QUFDTCxDQUFDOztBQUVEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGFBQWE7QUFDNUIsZUFBZSxvQkFBb0I7QUFDbkM7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLG9CQUFvQjtBQUNuQyxlQUFlLFFBQVEsOEVBQThFO0FBQ3JHLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkIsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0JBQW9CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQTtBQUNBLGVBQWUsZ0JBQWdCO0FBQy9CO0FB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QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixRQUFRO0FBQzFCLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixRQUFRO0FBQzFCLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixRQUFRO0FBQzFCLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixTQUFTO0FBQzNCLGlC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QkFBc0I7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9FQUFvRSxpQkFBaUI7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi91dGlscy9wb3BwZXIuanM/MWZjNyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IEtpY2thc3MgbGlicmFyeSB0byBjcmVhdGUgYW5kIHBsYWNlIHBvcHBlcnMgbmVhciB0aGVpciByZWZlcmVuY2UgZWxlbWVudHMuXG4gKiBAdmVyc2lvbiB7e3ZlcnNpb259fVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoYykgMjAxNiBGZWRlcmljbyBaaXZvbG8gYW5kIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuLy9cbi8vIENyb3NzIG1vZHVsZSBsb2FkZXJcbi8vIFN1cHBvcnRlZDogTm9kZSwgQU1ELCBCcm93c2VyIGdsb2JhbHNcbi8vXG47KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICAvLyBBTUQuIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBtb2R1bGUuXG4gICAgICAgIGRlZmluZShmYWN0b3J5KTtcbiAgICB9IGVsc2UgaWYgKCh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihtb2R1bGUpKSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICAgICAgLy8gTm9kZS4gRG9lcyBub3Qgd29yayB3aXRoIHN0cmljdCBDb21tb25KUywgYnV0XG4gICAgICAgIC8vIG9ubHkgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgdGhhdCBzdXBwb3J0IG1vZHVsZS5leHBvcnRzLFxuICAgICAgICAvLyBsaWtlIE5vZGUuXG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEJyb3dzZXIgZ2xvYmFscyAocm9vdCBpcyB3aW5kb3cpXG4gICAgICAgIHJvb3QuUG9wcGVyID0gZmFjdG9yeSgpO1xuICAgIH1cbn0pKHVuZGVmaW5lZCwgZnVuY3Rpb24gKCkge1xuXG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIHJvb3QgPSB3aW5kb3c7XG5cbiAgICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgICB2YXIgREVGQVVMVFMgPSB7XG4gICAgICAgIC8vIHBsYWNlbWVudCBvZiB0aGUgcG9wcGVyXG4gICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG5cbiAgICAgICAgZ3B1QWNjZWxlcmF0aW9uOiB0cnVlLFxuXG4gICAgICAgIC8vIHNoaWZ0IHBvcHBlciBmcm9tIGl0cyBvcmlnaW4gYnkgdGhlIGdpdmVuIGFtb3VudCBvZiBwaXhlbHMgKGNhbiBiZSBuZWdhdGl2ZSlcbiAgICAgICAgb2Zmc2V0OiAwLFxuXG4gICAgICAgIC8vIHRoZSBlbGVtZW50IHdoaWNoIHdpbGwgYWN0IGFzIGJvdW5kYXJ5IG9mIHRoZSBwb3BwZXJcbiAgICAgICAgYm91bmRhcmllc0VsZW1lbnQ6ICd2aWV3cG9ydCcsXG5cbiAgICAgICAgLy8gYW1vdW50IG9mIHBpeGVsIHVzZWQgdG8gZGVmaW5lIGEgbWluaW11bSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBib3VuZGFyaWVzIGFuZCB0aGUgcG9wcGVyXG4gICAgICAgIGJvdW5kYXJpZXNQYWRkaW5nOiA1LFxuXG4gICAgICAgIC8vIHBvcHBlciB3aWxsIHRyeSB0byBwcmV2ZW50IG92ZXJmbG93IGZvbGxvd2luZyB0aGlzIG9yZGVyLFxuICAgICAgICAvLyBieSBkZWZhdWx0LCB0aGVuLCBpdCBjb3VsZCBvdmVyZmxvdyBvbiB0aGUgbGVmdCBhbmQgb24gdG9wIG9mIHRoZSBib3VuZGFyaWVzRWxlbWVudFxuICAgICAgICBwcmV2ZW50T3ZlcmZsb3dPcmRlcjogWydsZWZ0JywgJ3JpZ2h0JywgJ3RvcCcsICdib3R0b20nXSxcblxuICAgICAgICAvLyB0aGUgYmVoYXZpb3IgdXNlZCBieSBmbGlwIHRvIGNoYW5nZSB0aGUgcGxhY2VtZW50IG9mIHRoZSBwb3BwZXJcbiAgICAgICAgZmxpcEJlaGF2aW9yOiAnZmxpcCcsXG5cbiAgICAgICAgYXJyb3dFbGVtZW50OiAnW3gtYXJyb3ddJyxcblxuICAgICAgICBhcnJvd09mZnNldDogMCxcblxuICAgICAgICAvLyBsaXN0IG9mIGZ1bmN0aW9ucyB1c2VkIHRvIG1vZGlmeSB0aGUgb2Zmc2V0cyBiZWZvcmUgdGhleSBhcmUgYXBwbGllZCB0byB0aGUgcG9wcGVyXG4gICAgICAgIG1vZGlmaWVyczogWydzaGlmdCcsICdvZmZzZXQnLCAncHJldmVudE92ZXJmbG93JywgJ2tlZXBUb2dldGhlcicsICdhcnJvdycsICdmbGlwJywgJ2FwcGx5U3R5bGUnXSxcblxuICAgICAgICBtb2RpZmllcnNJZ25vcmVkOiBbXSxcblxuICAgICAgICBmb3JjZUFic29sdXRlOiBmYWxzZVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgUG9wcGVyLmpzIGluc3RhbmNlXG4gICAgICogQGNvbnN0cnVjdG9yIFBvcHBlclxuICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgZWxlbWVudCB1c2VkIHRvIHBvc2l0aW9uIHRoZSBwb3BwZXJcbiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fE9iamVjdH0gcG9wcGVyXG4gICAgICogICAgICBUaGUgSFRNTCBlbGVtZW50IHVzZWQgYXMgcG9wcGVyLCBvciBhIGNvbmZpZ3VyYXRpb24gdXNlZCB0byBnZW5lcmF0ZSB0aGUgcG9wcGVyLlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBbcG9wcGVyLnRhZ05hbWU9J2RpdiddIFRoZSB0YWcgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHBvcHBlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcG9wcGVyLmNsYXNzTmFtZXM9Wydwb3BwZXInXV0gQXJyYXkgb2YgY2xhc3NlcyB0byBhcHBseSB0byB0aGUgZ2VuZXJhdGVkIHBvcHBlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcG9wcGVyLmF0dHJpYnV0ZXNdIEFycmF5IG9mIGF0dHJpYnV0ZXMgdG8gYXBwbHksIHNwZWNpZnkgYGF0dHI6dmFsdWVgIHRvIGFzc2lnbiBhIHZhbHVlIHRvIGl0LlxuICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR8U3RyaW5nfSBbcG9wcGVyLnBhcmVudD13aW5kb3cuZG9jdW1lbnQuYm9keV0gVGhlIHBhcmVudCBlbGVtZW50LCBnaXZlbiBhcyBIVE1MRWxlbWVudCBvciBhcyBxdWVyeSBzdHJpbmcuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IFtwb3BwZXIuY29udGVudD0nJ10gVGhlIGNvbnRlbnQgb2YgdGhlIHBvcHBlciwgaXQgY2FuIGJlIHRleHQsIGh0bWwsIG9yIG5vZGU7IGlmIGl0IGlzIG5vdCB0ZXh0LCBzZXQgYGNvbnRlbnRUeXBlYCB0byBgaHRtbGAgb3IgYG5vZGVgLlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBbcG9wcGVyLmNvbnRlbnRUeXBlPSd0ZXh0J10gSWYgYGh0bWxgLCB0aGUgYGNvbnRlbnRgIHdpbGwgYmUgcGFyc2VkIGFzIEhUTUwuIElmIGBub2RlYCwgaXQgd2lsbCBiZSBhcHBlbmRlZCBhcy1pcy5cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gW3BvcHBlci5hcnJvd1RhZ05hbWU9J2RpdiddIFNhbWUgYXMgYHBvcHBlci50YWdOYW1lYCBidXQgZm9yIHRoZSBhcnJvdyBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwb3BwZXIuYXJyb3dDbGFzc05hbWVzPSdwb3BwZXJfX2Fycm93J10gU2FtZSBhcyBgcG9wcGVyLmNsYXNzTmFtZXNgIGJ1dCBmb3IgdGhlIGFycm93IGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IFtwb3BwZXIuYXJyb3dBdHRyaWJ1dGVzPVsneC1hcnJvdyddXSBTYW1lIGFzIGBwb3BwZXIuYXR0cmlidXRlc2AgYnV0IGZvciB0aGUgYXJyb3cgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5wbGFjZW1lbnQ9Ym90dG9tXVxuICAgICAqICAgICAgUGxhY2VtZW50IG9mIHRoZSBwb3BwZXIgYWNjZXB0ZWQgdmFsdWVzOiBgdG9wKC1zdGFydCwgLWVuZCksIHJpZ2h0KC1zdGFydCwgLWVuZCksIGJvdHRvbSgtc3RhcnQsIC1yaWdodCksXG4gICAgICogICAgICBsZWZ0KC1zdGFydCwgLWVuZClgXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fFN0cmluZ30gW29wdGlvbnMuYXJyb3dFbGVtZW50PSdbeC1hcnJvd10nXVxuICAgICAqICAgICAgVGhlIERPTSBOb2RlIHVzZWQgYXMgYXJyb3cgZm9yIHRoZSBwb3BwZXIsIG9yIGEgQ1NTIHNlbGVjdG9yIHVzZWQgdG8gZ2V0IHRoZSBET00gbm9kZS4gSXQgbXVzdCBiZSBjaGlsZCBvZlxuICAgICAqICAgICAgaXRzIHBhcmVudCBQb3BwZXIuIFBvcHBlci5qcyB3aWxsIGFwcGx5IHRvIHRoZSBnaXZlbiBlbGVtZW50IHRoZSBzdHlsZSByZXF1aXJlZCB0byBhbGlnbiB0aGUgYXJyb3cgd2l0aCBpdHNcbiAgICAgKiAgICAgIHJlZmVyZW5jZSBlbGVtZW50LlxuICAgICAqICAgICAgQnkgZGVmYXVsdCwgaXQgd2lsbCBsb29rIGZvciBhIGNoaWxkIG5vZGUgb2YgdGhlIHBvcHBlciB3aXRoIHRoZSBgeC1hcnJvd2AgYXR0cmlidXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5ncHVBY2NlbGVyYXRpb249dHJ1ZV1cbiAgICAgKiAgICAgIFdoZW4gdGhpcyBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZSwgdGhlIHBvcHBlciBwb3NpdGlvbiB3aWxsIGJlIGFwcGxpZWQgdXNpbmcgQ1NTMyB0cmFuc2xhdGUzZCwgYWxsb3dpbmcgdGhlXG4gICAgICogICAgICBicm93c2VyIHRvIHVzZSB0aGUgR1BVIHRvIGFjY2VsZXJhdGUgdGhlIHJlbmRlcmluZy5cbiAgICAgKiAgICAgIElmIHNldCB0byBmYWxzZSwgdGhlIHBvcHBlciB3aWxsIGJlIHBsYWNlZCB1c2luZyBgdG9wYCBhbmQgYGxlZnRgIHByb3BlcnRpZXMsIG5vdCB1c2luZyB0aGUgR1BVLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLm9mZnNldD0wXVxuICAgICAqICAgICAgQW1vdW50IG9mIHBpeGVscyB0aGUgcG9wcGVyIHdpbGwgYmUgc2hpZnRlZCAoY2FuIGJlIG5lZ2F0aXZlKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfEVsZW1lbnR9IFtvcHRpb25zLmJvdW5kYXJpZXNFbGVtZW50PSd2aWV3cG9ydCddXG4gICAgICogICAgICBUaGUgZWxlbWVudCB3aGljaCB3aWxsIGRlZmluZSB0aGUgYm91bmRhcmllcyBvZiB0aGUgcG9wcGVyIHBvc2l0aW9uLCB0aGUgcG9wcGVyIHdpbGwgbmV2ZXIgYmUgcGxhY2VkIG91dHNpZGVcbiAgICAgKiAgICAgIG9mIHRoZSBkZWZpbmVkIGJvdW5kYXJpZXMgKGV4Y2VwdCBpZiBga2VlcFRvZ2V0aGVyYCBpcyBlbmFibGVkKVxuICAgICAqXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLmJvdW5kYXJpZXNQYWRkaW5nPTVdXG4gICAgICogICAgICBBZGRpdGlvbmFsIHBhZGRpbmcgZm9yIHRoZSBib3VuZGFyaWVzXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbb3B0aW9ucy5wcmV2ZW50T3ZlcmZsb3dPcmRlcj1bJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbSddXVxuICAgICAqICAgICAgT3JkZXIgdXNlZCB3aGVuIFBvcHBlci5qcyB0cmllcyB0byBhdm9pZCBvdmVyZmxvd3MgZnJvbSB0aGUgYm91bmRhcmllcywgdGhleSB3aWxsIGJlIGNoZWNrZWQgaW4gb3JkZXIsXG4gICAgICogICAgICB0aGlzIG1lYW5zIHRoYXQgdGhlIGxhc3Qgb25lcyB3aWxsIG5ldmVyIG92ZXJmbG93XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gW29wdGlvbnMuZmxpcEJlaGF2aW9yPSdmbGlwJ11cbiAgICAgKiAgICAgIFRoZSBiZWhhdmlvciB1c2VkIGJ5IHRoZSBgZmxpcGAgbW9kaWZpZXIgdG8gY2hhbmdlIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHBvcHBlciB3aGVuIHRoZSBsYXR0ZXIgaXMgdHJ5aW5nIHRvXG4gICAgICogICAgICBvdmVybGFwIGl0cyByZWZlcmVuY2UgZWxlbWVudC4gRGVmaW5pbmcgYGZsaXBgIGFzIHZhbHVlLCB0aGUgcGxhY2VtZW50IHdpbGwgYmUgZmxpcHBlZCBvblxuICAgICAqICAgICAgaXRzIGF4aXMgKGByaWdodCAtIGxlZnRgLCBgdG9wIC0gYm90dG9tYCkuXG4gICAgICogICAgICBZb3UgY2FuIGV2ZW4gcGFzcyBhbiBhcnJheSBvZiBwbGFjZW1lbnRzIChlZzogYFsncmlnaHQnLCAnbGVmdCcsICd0b3AnXWAgKSB0byBtYW51YWxseSBzcGVjaWZ5XG4gICAgICogICAgICBob3cgYWx0ZXIgdGhlIHBsYWNlbWVudCB3aGVuIGEgZmxpcCBpcyBuZWVkZWQuIChlZy4gaW4gdGhlIGFib3ZlIGV4YW1wbGUsIGl0IHdvdWxkIGZpcnN0IGZsaXAgZnJvbSByaWdodCB0byBsZWZ0LFxuICAgICAqICAgICAgdGhlbiwgaWYgZXZlbiBpbiBpdHMgbmV3IHBsYWNlbWVudCwgdGhlIHBvcHBlciBpcyBvdmVybGFwcGluZyBpdHMgcmVmZXJlbmNlIGVsZW1lbnQsIGl0IHdpbGwgYmUgbW92ZWQgdG8gdG9wKVxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheX0gW29wdGlvbnMubW9kaWZpZXJzPVsgJ3NoaWZ0JywgJ29mZnNldCcsICdwcmV2ZW50T3ZlcmZsb3cnLCAna2VlcFRvZ2V0aGVyJywgJ2Fycm93JywgJ2ZsaXAnLCAnYXBwbHlTdHlsZSddXVxuICAgICAqICAgICAgTGlzdCBvZiBmdW5jdGlvbnMgdXNlZCB0byBtb2RpZnkgdGhlIGRhdGEgYmVmb3JlIHRoZXkgYXJlIGFwcGxpZWQgdG8gdGhlIHBvcHBlciwgYWRkIHlvdXIgY3VzdG9tIGZ1bmN0aW9uc1xuICAgICAqICAgICAgdG8gdGhpcyBhcnJheSB0byBlZGl0IHRoZSBvZmZzZXRzIGFuZCBwbGFjZW1lbnQuXG4gICAgICogICAgICBUaGUgZnVuY3Rpb24gc2hvdWxkIHJlZmxlY3QgdGhlIEBwYXJhbXMgYW5kIEByZXR1cm5zIG9mIHByZXZlbnRPdmVyZmxvd1xuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheX0gW29wdGlvbnMubW9kaWZpZXJzSWdub3JlZD1bXV1cbiAgICAgKiAgICAgIFB1dCBoZXJlIGFueSBidWlsdC1pbiBtb2RpZmllciBuYW1lIHlvdSB3YW50IHRvIGV4Y2x1ZGUgZnJvbSB0aGUgbW9kaWZpZXJzIGxpc3RcbiAgICAgKiAgICAgIFRoZSBmdW5jdGlvbiBzaG91bGQgcmVmbGVjdCB0aGUgQHBhcmFtcyBhbmQgQHJldHVybnMgb2YgcHJldmVudE92ZXJmbG93XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnJlbW92ZU9uRGVzdHJveT1mYWxzZV1cbiAgICAgKiAgICAgIFNldCB0byB0cnVlIGlmIHlvdSB3YW50IHRvIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHRoZSBwb3BwZXIgd2hlbiB5b3UgY2FsbCB0aGUgYGRlc3Ryb3lgIG1ldGhvZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBQb3BwZXIocmVmZXJlbmNlLCBwb3BwZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlID0gcmVmZXJlbmNlLmpxdWVyeSA/IHJlZmVyZW5jZVswXSA6IHJlZmVyZW5jZTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt9O1xuXG4gICAgICAgIC8vIGlmIHRoZSBwb3BwZXIgdmFyaWFibGUgaXMgYSBjb25maWd1cmF0aW9uIG9iamVjdCwgcGFyc2UgaXQgdG8gZ2VuZXJhdGUgYW4gSFRNTEVsZW1lbnRcbiAgICAgICAgLy8gZ2VuZXJhdGUgYSBkZWZhdWx0IHBvcHBlciBpZiBpcyBub3QgZGVmaW5lZFxuICAgICAgICB2YXIgaXNOb3REZWZpbmVkID0gdHlwZW9mIHBvcHBlciA9PT0gJ3VuZGVmaW5lZCcgfHwgcG9wcGVyID09PSBudWxsO1xuICAgICAgICB2YXIgaXNDb25maWcgPSBwb3BwZXIgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHBvcHBlcikgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xuICAgICAgICBpZiAoaXNOb3REZWZpbmVkIHx8IGlzQ29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BwZXIgPSB0aGlzLnBhcnNlKGlzQ29uZmlnID8gcG9wcGVyIDoge30pO1xuICAgICAgICB9XG4gICAgICAgIC8vIG90aGVyd2lzZSwgdXNlIHRoZSBnaXZlbiBIVE1MRWxlbWVudCBhcyBwb3BwZXJcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wcGVyID0gcG9wcGVyLmpxdWVyeSA/IHBvcHBlclswXSA6IHBvcHBlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAvLyB3aXRoIHt9IHdlIGNyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgb3B0aW9ucyBpbnNpZGUgaXRcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRTLCBvcHRpb25zKTtcblxuICAgICAgICAvLyByZWZhY3RvcmluZyBtb2RpZmllcnMnIGxpc3RcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5tb2RpZmllcnMgPSB0aGlzLl9vcHRpb25zLm1vZGlmaWVycy5tYXAoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgaWdub3JlZCBtb2RpZmllcnNcbiAgICAgICAgICAgIGlmICh0aGlzLl9vcHRpb25zLm1vZGlmaWVyc0lnbm9yZWQuaW5kZXhPZihtb2RpZmllcikgIT09IC0xKSByZXR1cm47XG5cbiAgICAgICAgICAgIC8vIHNldCB0aGUgeC1wbGFjZW1lbnQgYXR0cmlidXRlIGJlZm9yZSBldmVyeXRoaW5nIGVsc2UgYmVjYXVzZSBpdCBjb3VsZCBiZSB1c2VkIHRvIGFkZCBtYXJnaW5zIHRvIHRoZSBwb3BwZXJcbiAgICAgICAgICAgIC8vIG1hcmdpbnMgbmVlZHMgdG8gYmUgY2FsY3VsYXRlZCB0byBnZXQgdGhlIGNvcnJlY3QgcG9wcGVyIG9mZnNldHNcbiAgICAgICAgICAgIGlmIChtb2RpZmllciA9PT0gJ2FwcGx5U3R5bGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wcGVyLnNldEF0dHJpYnV0ZSgneC1wbGFjZW1lbnQnLCB0aGlzLl9vcHRpb25zLnBsYWNlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJldHVybiBwcmVkZWZpbmVkIG1vZGlmaWVyIGlkZW50aWZpZWQgYnkgc3RyaW5nIG9yIGtlZXAgdGhlIGN1c3RvbSBvbmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1vZGlmaWVyc1ttb2RpZmllcl0gfHwgbW9kaWZpZXI7XG4gICAgICAgIH0uYmluZCh0aGlzKSk7XG5cbiAgICAgICAgLy8gbWFrZSBzdXJlIHRvIGFwcGx5IHRoZSBwb3BwZXIgcG9zaXRpb24gYmVmb3JlIGFueSBjb21wdXRhdGlvblxuICAgICAgICB0aGlzLnN0YXRlLnBvc2l0aW9uID0gdGhpcy5fZ2V0UG9zaXRpb24odGhpcy5fcG9wcGVyLCB0aGlzLl9yZWZlcmVuY2UpO1xuICAgICAgICBzZXRTdHlsZSh0aGlzLl9wb3BwZXIsIHsgcG9zaXRpb246IHRoaXMuc3RhdGUucG9zaXRpb24sIHRvcDogMCB9KTtcblxuICAgICAgICAvLyBmaXJlIHRoZSBmaXJzdCB1cGRhdGUgdG8gcG9zaXRpb24gdGhlIHBvcHBlciBpbiB0aGUgcmlnaHQgcGxhY2VcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcblxuICAgICAgICAvLyBzZXR1cCBldmVudCBsaXN0ZW5lcnMsIHRoZXkgd2lsbCB0YWtlIGNhcmUgb2YgdXBkYXRlIHRoZSBwb3NpdGlvbiBpbiBzcGVjaWZpYyBzaXR1YXRpb25zXG4gICAgICAgIHRoaXMuX3NldHVwRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBNZXRob2RzXG4gICAgLy9cbiAgICAvKipcbiAgICAgKiBEZXN0cm95IHRoZSBwb3BwZXJcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQG1lbWJlcm9mIFBvcHBlclxuICAgICAqL1xuICAgIFBvcHBlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fcG9wcGVyLnJlbW92ZUF0dHJpYnV0ZSgneC1wbGFjZW1lbnQnKTtcbiAgICAgICAgdGhpcy5fcG9wcGVyLnN0eWxlLmxlZnQgPSAnJztcbiAgICAgICAgdGhpcy5fcG9wcGVyLnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gICAgICAgIHRoaXMuX3BvcHBlci5zdHlsZS50b3AgPSAnJztcbiAgICAgICAgdGhpcy5fcG9wcGVyLnN0eWxlW2dldFN1cHBvcnRlZFByb3BlcnR5TmFtZSgndHJhbnNmb3JtJyldID0gJyc7XG4gICAgICAgIHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBwb3BwZXIgaWYgdXNlciBleHBsaWNpdHkgYXNrZWQgZm9yIHRoZSBkZWxldGlvbiBvbiBkZXN0cm95XG4gICAgICAgIGlmICh0aGlzLl9vcHRpb25zLnJlbW92ZU9uRGVzdHJveSkge1xuICAgICAgICAgICAgdGhpcy5fcG9wcGVyLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wcGVyLCBjb21wdXRpbmcgdGhlIG5ldyBvZmZzZXRzIGFuZCBhcHBseWluZyB0aGUgbmV3IHN0eWxlXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBtZW1iZXJvZiBQb3BwZXJcbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB7IGluc3RhbmNlOiB0aGlzLCBzdHlsZXM6IHt9IH07XG5cbiAgICAgICAgLy8gc3RvcmUgcGxhY2VtZW50IGluc2lkZSB0aGUgZGF0YSBvYmplY3QsIG1vZGlmaWVycyB3aWxsIGJlIGFibGUgdG8gZWRpdCBgcGxhY2VtZW50YCBpZiBuZWVkZWRcbiAgICAgICAgLy8gYW5kIHJlZmVyIHRvIF9vcmlnaW5hbFBsYWNlbWVudCB0byBrbm93IHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgICAgICBkYXRhLnBsYWNlbWVudCA9IHRoaXMuX29wdGlvbnMucGxhY2VtZW50O1xuICAgICAgICBkYXRhLl9vcmlnaW5hbFBsYWNlbWVudCA9IHRoaXMuX29wdGlvbnMucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIGNvbXB1dGUgdGhlIHBvcHBlciBhbmQgcmVmZXJlbmNlIG9mZnNldHMgYW5kIHB1dCB0aGVtIGluc2lkZSBkYXRhLm9mZnNldHNcbiAgICAgICAgZGF0YS5vZmZzZXRzID0gdGhpcy5fZ2V0T2Zmc2V0cyh0aGlzLl9wb3BwZXIsIHRoaXMuX3JlZmVyZW5jZSwgZGF0YS5wbGFjZW1lbnQpO1xuXG4gICAgICAgIC8vIGdldCBib3VuZGFyaWVzXG4gICAgICAgIGRhdGEuYm91bmRhcmllcyA9IHRoaXMuX2dldEJvdW5kYXJpZXMoZGF0YSwgdGhpcy5fb3B0aW9ucy5ib3VuZGFyaWVzUGFkZGluZywgdGhpcy5fb3B0aW9ucy5ib3VuZGFyaWVzRWxlbWVudCk7XG5cbiAgICAgICAgZGF0YSA9IHRoaXMucnVuTW9kaWZpZXJzKGRhdGEsIHRoaXMuX29wdGlvbnMubW9kaWZpZXJzKTtcblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhdGUudXBkYXRlQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlQ2FsbGJhY2soZGF0YSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSWYgYSBmdW5jdGlvbiBpcyBwYXNzZWQsIGl0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGluaXRpYWxpemF0aW9uIG9mIHBvcHBlciB3aXRoIGFzIGZpcnN0IGFyZ3VtZW50IHRoZSBQb3BwZXIgaW5zdGFuY2UuXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBtZW1iZXJvZiBQb3BwZXJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICAgICAqL1xuICAgIFBvcHBlci5wcm90b3R5cGUub25DcmVhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgICAgLy8gdGhlIGNyZWF0ZUNhbGxiYWNrcyByZXR1cm4gYXMgZmlyc3QgYXJndW1lbnQgdGhlIHBvcHBlciBpbnN0YW5jZVxuICAgICAgICBjYWxsYmFjayh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIElmIGEgZnVuY3Rpb24gaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGVhY2ggdXBkYXRlIG9mIHBvcHBlciB3aXRoIGFzIGZpcnN0IGFyZ3VtZW50IHRoZSBzZXQgb2YgY29vcmRpbmF0ZXMgYW5kIGluZm9ybWF0aW9uc1xuICAgICAqIHVzZWQgdG8gc3R5bGUgcG9wcGVyIGFuZCBpdHMgYXJyb3cuXG4gICAgICogTk9URTogaXQgZG9lc24ndCBnZXQgZmlyZWQgb24gdGhlIGZpcnN0IGNhbGwgb2YgdGhlIGBQb3BwZXIudXBkYXRlKClgIG1ldGhvZCBpbnNpZGUgdGhlIGBQb3BwZXJgIGNvbnN0cnVjdG9yIVxuICAgICAqIEBtZXRob2RcbiAgICAgKiBAbWVtYmVyb2YgUG9wcGVyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLm9uVXBkYXRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc3RhdGUudXBkYXRlQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEhlbHBlciB1c2VkIHRvIGdlbmVyYXRlIHBvcHBlcnMgZnJvbSBhIGNvbmZpZ3VyYXRpb24gZmlsZVxuICAgICAqIEBtZXRob2RcbiAgICAgKiBAbWVtYmVyb2YgUG9wcGVyXG4gICAgICogQHBhcmFtIGNvbmZpZyB7T2JqZWN0fSBjb25maWd1cmF0aW9uXG4gICAgICogQHJldHVybnMge0hUTUxFbGVtZW50fSBwb3BwZXJcbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICB2YXIgZGVmYXVsdENvbmZpZyA9IHtcbiAgICAgICAgICAgIHRhZ05hbWU6ICdkaXYnLFxuICAgICAgICAgICAgY2xhc3NOYW1lczogWydwb3BwZXInXSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICAgICAgcGFyZW50OiByb290LmRvY3VtZW50LmJvZHksXG4gICAgICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAndGV4dCcsXG4gICAgICAgICAgICBhcnJvd1RhZ05hbWU6ICdkaXYnLFxuICAgICAgICAgICAgYXJyb3dDbGFzc05hbWVzOiBbJ3BvcHBlcl9fYXJyb3cnXSxcbiAgICAgICAgICAgIGFycm93QXR0cmlidXRlczogWyd4LWFycm93J11cbiAgICAgICAgfTtcbiAgICAgICAgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENvbmZpZywgY29uZmlnKTtcblxuICAgICAgICB2YXIgZCA9IHJvb3QuZG9jdW1lbnQ7XG5cbiAgICAgICAgdmFyIHBvcHBlciA9IGQuY3JlYXRlRWxlbWVudChjb25maWcudGFnTmFtZSk7XG4gICAgICAgIGFkZENsYXNzTmFtZXMocG9wcGVyLCBjb25maWcuY2xhc3NOYW1lcyk7XG4gICAgICAgIGFkZEF0dHJpYnV0ZXMocG9wcGVyLCBjb25maWcuYXR0cmlidXRlcyk7XG4gICAgICAgIGlmIChjb25maWcuY29udGVudFR5cGUgPT09ICdub2RlJykge1xuICAgICAgICAgICAgcG9wcGVyLmFwcGVuZENoaWxkKGNvbmZpZy5jb250ZW50LmpxdWVyeSA/IGNvbmZpZy5jb250ZW50WzBdIDogY29uZmlnLmNvbnRlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5jb250ZW50VHlwZSA9PT0gJ2h0bWwnKSB7XG4gICAgICAgICAgICBwb3BwZXIuaW5uZXJIVE1MID0gY29uZmlnLmNvbnRlbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3BwZXIudGV4dENvbnRlbnQgPSBjb25maWcuY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuYXJyb3dUYWdOYW1lKSB7XG4gICAgICAgICAgICB2YXIgYXJyb3cgPSBkLmNyZWF0ZUVsZW1lbnQoY29uZmlnLmFycm93VGFnTmFtZSk7XG4gICAgICAgICAgICBhZGRDbGFzc05hbWVzKGFycm93LCBjb25maWcuYXJyb3dDbGFzc05hbWVzKTtcbiAgICAgICAgICAgIGFkZEF0dHJpYnV0ZXMoYXJyb3csIGNvbmZpZy5hcnJvd0F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgcG9wcGVyLmFwcGVuZENoaWxkKGFycm93KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwYXJlbnQgPSBjb25maWcucGFyZW50LmpxdWVyeSA/IGNvbmZpZy5wYXJlbnRbMF0gOiBjb25maWcucGFyZW50O1xuXG4gICAgICAgIC8vIGlmIHRoZSBnaXZlbiBwYXJlbnQgaXMgYSBzdHJpbmcsIHVzZSBpdCB0byBtYXRjaCBhbiBlbGVtZW50XG4gICAgICAgIC8vIGlmIG1vcmUgdGhhbiBvbmUgZWxlbWVudCBpcyBtYXRjaGVkLCB0aGUgZmlyc3Qgb25lIHdpbGwgYmUgdXNlZCBhcyBwYXJlbnRcbiAgICAgICAgLy8gaWYgbm8gZWxlbWVudHMgYXJlIG1hdGNoZWQsIHRoZSBzY3JpcHQgd2lsbCB0aHJvdyBhbiBlcnJvclxuICAgICAgICBpZiAodHlwZW9mIHBhcmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHBhcmVudCA9IGQucXVlcnlTZWxlY3RvckFsbChjb25maWcucGFyZW50KTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignV0FSTklORzogdGhlIGdpdmVuIGBwYXJlbnRgIHF1ZXJ5KCcgKyBjb25maWcucGFyZW50ICsgJykgbWF0Y2hlZCBtb3JlIHRoYW4gb25lIGVsZW1lbnQsIHRoZSBmaXJzdCBvbmUgd2lsbCBiZSB1c2VkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFyZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93ICdFUlJPUjogdGhlIGdpdmVuIGBwYXJlbnRgIGRvZXNuXFwndCBleGlzdHMhJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudFswXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiB0aGUgZ2l2ZW4gcGFyZW50IGlzIGEgRE9NIG5vZGVzIGxpc3Qgb3IgYW4gYXJyYXkgb2Ygbm9kZXMgd2l0aCBtb3JlIHRoYW4gb25lIGVsZW1lbnQsXG4gICAgICAgIC8vIHRoZSBmaXJzdCBvbmUgd2lsbCBiZSB1c2VkIGFzIHBhcmVudFxuICAgICAgICBpZiAocGFyZW50Lmxlbmd0aCA+IDEgJiYgcGFyZW50IGluc3RhbmNlb2YgRWxlbWVudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignV0FSTklORzogeW91IGhhdmUgcGFzc2VkIGFzIHBhcmVudCBhIGxpc3Qgb2YgZWxlbWVudHMsIHRoZSBmaXJzdCBvbmUgd2lsbCBiZSB1c2VkJyk7XG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnRbMF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhcHBlbmQgdGhlIGdlbmVyYXRlZCBwb3BwZXIgdG8gaXRzIHBhcmVudFxuICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQocG9wcGVyKTtcblxuICAgICAgICByZXR1cm4gcG9wcGVyO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGRzIGNsYXNzIG5hbWVzIHRvIHRoZSBnaXZlbiBlbGVtZW50XG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAaWdub3JlXG4gICAgICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHRhcmdldFxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBjbGFzc2VzXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBhZGRDbGFzc05hbWVzKGVsZW1lbnQsIGNsYXNzTmFtZXMpIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGRzIGF0dHJpYnV0ZXMgdG8gdGhlIGdpdmVuIGVsZW1lbnRcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBpZ25vcmVcbiAgICAgICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gdGFyZ2V0XG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGF0dHJpYnV0ZXNcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogYWRkQXR0cmlidXRlcyhlbGVtZW50LCBbICdkYXRhLWluZm86Zm9vYmFyJyBdKTtcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGFkZEF0dHJpYnV0ZXMoZWxlbWVudCwgYXR0cmlidXRlcykge1xuICAgICAgICAgICAgYXR0cmlidXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUuc3BsaXQoJzonKVswXSwgYXR0cmlidXRlLnNwbGl0KCc6JylbMV0gfHwgJycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSGVscGVyIHVzZWQgdG8gZ2V0IHRoZSBwb3NpdGlvbiB3aGljaCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBvcHBlclxuICAgICAqIEBtZXRob2RcbiAgICAgKiBAbWVtYmVyb2YgUG9wcGVyXG4gICAgICogQHBhcmFtIGNvbmZpZyB7SFRNTEVsZW1lbnR9IHBvcHBlciBlbGVtZW50XG4gICAgICogQHBhcmFtIHJlZmVyZW5jZSB7SFRNTEVsZW1lbnR9IHJlZmVyZW5jZSBlbGVtZW50XG4gICAgICogQHJldHVybnMge1N0cmluZ30gcG9zaXRpb25cbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLl9nZXRQb3NpdGlvbiA9IGZ1bmN0aW9uIChwb3BwZXIsIHJlZmVyZW5jZSkge1xuICAgICAgICB2YXIgY29udGFpbmVyID0gZ2V0T2Zmc2V0UGFyZW50KHJlZmVyZW5jZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMuZm9yY2VBYnNvbHV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICdhYnNvbHV0ZSc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWNpZGUgaWYgdGhlIHBvcHBlciB3aWxsIGJlIGZpeGVkXG4gICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgZWxlbWVudCBpcyBpbnNpZGUgYSBmaXhlZCBjb250ZXh0LCB0aGUgcG9wcGVyIHdpbGwgYmUgZml4ZWQgYXMgd2VsbCB0byBhbGxvdyB0aGVtIHRvIHNjcm9sbCB0b2dldGhlclxuICAgICAgICB2YXIgaXNQYXJlbnRGaXhlZCA9IGlzRml4ZWQocmVmZXJlbmNlLCBjb250YWluZXIpO1xuICAgICAgICByZXR1cm4gaXNQYXJlbnRGaXhlZCA/ICdmaXhlZCcgOiAnYWJzb2x1dGUnO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXQgb2Zmc2V0cyB0byB0aGUgcG9wcGVyXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBtZW1iZXJvZiBQb3BwZXJcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IHBvcHBlciAtIHRoZSBwb3BwZXIgZWxlbWVudFxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gcmVmZXJlbmNlIC0gdGhlIHJlZmVyZW5jZSBlbGVtZW50ICh0aGUgcG9wcGVyIHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhpcylcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgb2Zmc2V0cyB3aGljaCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBvcHBlclxuICAgICAqL1xuICAgIFBvcHBlci5wcm90b3R5cGUuX2dldE9mZnNldHMgPSBmdW5jdGlvbiAocG9wcGVyLCByZWZlcmVuY2UsIHBsYWNlbWVudCkge1xuICAgICAgICBwbGFjZW1lbnQgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICAgICAgdmFyIHBvcHBlck9mZnNldHMgPSB7fTtcblxuICAgICAgICBwb3BwZXJPZmZzZXRzLnBvc2l0aW9uID0gdGhpcy5zdGF0ZS5wb3NpdGlvbjtcbiAgICAgICAgdmFyIGlzUGFyZW50Rml4ZWQgPSBwb3BwZXJPZmZzZXRzLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEdldCByZWZlcmVuY2UgZWxlbWVudCBwb3NpdGlvblxuICAgICAgICAvL1xuICAgICAgICB2YXIgcmVmZXJlbmNlT2Zmc2V0cyA9IGdldE9mZnNldFJlY3RSZWxhdGl2ZVRvQ3VzdG9tUGFyZW50KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIGlzUGFyZW50Rml4ZWQpO1xuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEdldCBwb3BwZXIgc2l6ZXNcbiAgICAgICAgLy9cbiAgICAgICAgdmFyIHBvcHBlclJlY3QgPSBnZXRPdXRlclNpemVzKHBvcHBlcik7XG5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gQ29tcHV0ZSBvZmZzZXRzIG9mIHBvcHBlclxuICAgICAgICAvL1xuXG4gICAgICAgIC8vIGRlcGVuZGluZyBieSB0aGUgcG9wcGVyIHBsYWNlbWVudCB3ZSBoYXZlIHRvIGNvbXB1dGUgaXRzIG9mZnNldHMgc2xpZ2h0bHkgZGlmZmVyZW50bHlcbiAgICAgICAgaWYgKFsncmlnaHQnLCAnbGVmdCddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHBvcHBlck9mZnNldHMudG9wID0gcmVmZXJlbmNlT2Zmc2V0cy50b3AgKyByZWZlcmVuY2VPZmZzZXRzLmhlaWdodCAvIDIgLSBwb3BwZXJSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICBwb3BwZXJPZmZzZXRzLmxlZnQgPSByZWZlcmVuY2VPZmZzZXRzLmxlZnQgLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3BwZXJPZmZzZXRzLmxlZnQgPSByZWZlcmVuY2VPZmZzZXRzLnJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9wcGVyT2Zmc2V0cy5sZWZ0ID0gcmVmZXJlbmNlT2Zmc2V0cy5sZWZ0ICsgcmVmZXJlbmNlT2Zmc2V0cy53aWR0aCAvIDIgLSBwb3BwZXJSZWN0LndpZHRoIC8gMjtcbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgcG9wcGVyT2Zmc2V0cy50b3AgPSByZWZlcmVuY2VPZmZzZXRzLnRvcCAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3BwZXJPZmZzZXRzLnRvcCA9IHJlZmVyZW5jZU9mZnNldHMuYm90dG9tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIHdpZHRoIGFuZCBoZWlnaHQgdG8gb3VyIG9mZnNldHMgb2JqZWN0XG4gICAgICAgIHBvcHBlck9mZnNldHMud2lkdGggPSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgICBwb3BwZXJPZmZzZXRzLmhlaWdodCA9IHBvcHBlclJlY3QuaGVpZ2h0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb3BwZXI6IHBvcHBlck9mZnNldHMsXG4gICAgICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZU9mZnNldHNcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU2V0dXAgbmVlZGVkIGV2ZW50IGxpc3RlbmVycyB1c2VkIHRvIHVwZGF0ZSB0aGUgcG9wcGVyIHBvc2l0aW9uXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBtZW1iZXJvZiBQb3BwZXJcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLl9zZXR1cEV2ZW50TGlzdGVuZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBOT1RFOiAxIERPTSBhY2Nlc3MgaGVyZVxuICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZUJvdW5kID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcbiAgICAgICAgcm9vdC5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnN0YXRlLnVwZGF0ZUJvdW5kKTtcbiAgICAgICAgLy8gaWYgdGhlIGJvdW5kYXJpZXNFbGVtZW50IGlzIHdpbmRvdyB3ZSBkb24ndCBuZWVkIHRvIGxpc3RlbiBmb3IgdGhlIHNjcm9sbCBldmVudFxuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5ib3VuZGFyaWVzRWxlbWVudCAhPT0gJ3dpbmRvdycpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBnZXRTY3JvbGxQYXJlbnQodGhpcy5fcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIC8vIGhlcmUgaXQgY291bGQgYmUgYm90aCBgYm9keWAgb3IgYGRvY3VtZW50RWxlbWVudGAgdGhhbmtzIHRvIEZpcmVmb3gsIHdlIHRoZW4gY2hlY2sgYm90aFxuICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gcm9vdC5kb2N1bWVudC5ib2R5IHx8IHRhcmdldCA9PT0gcm9vdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSByb290O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc3RhdGUudXBkYXRlQm91bmQpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5zY3JvbGxUYXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGV2ZW50IGxpc3RlbmVycyB1c2VkIHRvIHVwZGF0ZSB0aGUgcG9wcGVyIHBvc2l0aW9uXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBtZW1iZXJvZiBQb3BwZXJcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLl9yZW1vdmVFdmVudExpc3RlbmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gTk9URTogMSBET00gYWNjZXNzIGhlcmVcbiAgICAgICAgcm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnN0YXRlLnVwZGF0ZUJvdW5kKTtcbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMuYm91bmRhcmllc0VsZW1lbnQgIT09ICd3aW5kb3cnICYmIHRoaXMuc3RhdGUuc2Nyb2xsVGFyZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnN0YXRlLnVwZGF0ZUJvdW5kKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc2Nyb2xsVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZUJvdW5kID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZWQgdGhlIGJvdW5kYXJpZXMgbGltaXRzIGFuZCByZXR1cm4gdGhlbVxuICAgICAqIEBtZXRob2RcbiAgICAgKiBAbWVtYmVyb2YgUG9wcGVyXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBPYmplY3QgY29udGFpbmluZyB0aGUgcHJvcGVydHkgXCJvZmZzZXRzXCIgZ2VuZXJhdGVkIGJ5IGBfZ2V0T2Zmc2V0c2BcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gcGFkZGluZyAtIEJvdW5kYXJpZXMgcGFkZGluZ1xuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gYm91bmRhcmllc0VsZW1lbnQgLSBFbGVtZW50IHVzZWQgdG8gZGVmaW5lIHRoZSBib3VuZGFyaWVzXG4gICAgICogQHJldHVybnMge09iamVjdH0gQ29vcmRpbmF0ZXMgb2YgdGhlIGJvdW5kYXJpZXNcbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLl9nZXRCb3VuZGFyaWVzID0gZnVuY3Rpb24gKGRhdGEsIHBhZGRpbmcsIGJvdW5kYXJpZXNFbGVtZW50KSB7XG4gICAgICAgIC8vIE5PVEU6IDEgRE9NIGFjY2VzcyBoZXJlXG4gICAgICAgIHZhciBib3VuZGFyaWVzID0ge307XG4gICAgICAgIHZhciB3aWR0aCwgaGVpZ2h0O1xuICAgICAgICBpZiAoYm91bmRhcmllc0VsZW1lbnQgPT09ICd3aW5kb3cnKSB7XG4gICAgICAgICAgICB2YXIgYm9keSA9IHJvb3QuZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICAgICAgICBodG1sID0gcm9vdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGhlaWdodCA9IE1hdGgubWF4KGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5Lm9mZnNldEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLm9mZnNldEhlaWdodCk7XG4gICAgICAgICAgICB3aWR0aCA9IE1hdGgubWF4KGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkub2Zmc2V0V2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwub2Zmc2V0V2lkdGgpO1xuXG4gICAgICAgICAgICBib3VuZGFyaWVzID0ge1xuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogd2lkdGgsXG4gICAgICAgICAgICAgICAgYm90dG9tOiBoZWlnaHQsXG4gICAgICAgICAgICAgICAgbGVmdDogMFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChib3VuZGFyaWVzRWxlbWVudCA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgICAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudCh0aGlzLl9wb3BwZXIpO1xuICAgICAgICAgICAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudCh0aGlzLl9wb3BwZXIpO1xuICAgICAgICAgICAgdmFyIG9mZnNldFBhcmVudFJlY3QgPSBnZXRPZmZzZXRSZWN0KG9mZnNldFBhcmVudCk7XG5cbiAgICAgICAgICAgIC8vIFRoYW5rcyB0aGUgZnVja2luZyBuYXRpdmUgQVBJLCBgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3BgICYgYGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3BgXG4gICAgICAgICAgICB2YXIgZ2V0U2Nyb2xsVG9wVmFsdWUgPSBmdW5jdGlvbiBnZXRTY3JvbGxUb3BWYWx1ZShlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT0gZG9jdW1lbnQuYm9keSA/IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSA6IGVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBnZXRTY3JvbGxMZWZ0VmFsdWUgPSBmdW5jdGlvbiBnZXRTY3JvbGxMZWZ0VmFsdWUoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09IGRvY3VtZW50LmJvZHkgPyBNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSA6IGVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZSBwb3BwZXIgaXMgZml4ZWQgd2UgZG9uJ3QgaGF2ZSB0byBzdWJzdHJhY3Qgc2Nyb2xsaW5nIGZyb20gdGhlIGJvdW5kYXJpZXNcbiAgICAgICAgICAgIHZhciBzY3JvbGxUb3AgPSBkYXRhLm9mZnNldHMucG9wcGVyLnBvc2l0aW9uID09PSAnZml4ZWQnID8gMCA6IGdldFNjcm9sbFRvcFZhbHVlKHNjcm9sbFBhcmVudCk7XG4gICAgICAgICAgICB2YXIgc2Nyb2xsTGVmdCA9IGRhdGEub2Zmc2V0cy5wb3BwZXIucG9zaXRpb24gPT09ICdmaXhlZCcgPyAwIDogZ2V0U2Nyb2xsTGVmdFZhbHVlKHNjcm9sbFBhcmVudCk7XG5cbiAgICAgICAgICAgIGJvdW5kYXJpZXMgPSB7XG4gICAgICAgICAgICAgICAgdG9wOiAwIC0gKG9mZnNldFBhcmVudFJlY3QudG9wIC0gc2Nyb2xsVG9wKSxcbiAgICAgICAgICAgICAgICByaWdodDogcm9vdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLSAob2Zmc2V0UGFyZW50UmVjdC5sZWZ0IC0gc2Nyb2xsTGVmdCksXG4gICAgICAgICAgICAgICAgYm90dG9tOiByb290LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgLSAob2Zmc2V0UGFyZW50UmVjdC50b3AgLSBzY3JvbGxUb3ApLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAgLSAob2Zmc2V0UGFyZW50UmVjdC5sZWZ0IC0gc2Nyb2xsTGVmdClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZ2V0T2Zmc2V0UGFyZW50KHRoaXMuX3BvcHBlcikgPT09IGJvdW5kYXJpZXNFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgYm91bmRhcmllcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogYm91bmRhcmllc0VsZW1lbnQuY2xpZW50V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogYm91bmRhcmllc0VsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYm91bmRhcmllcyA9IGdldE9mZnNldFJlY3QoYm91bmRhcmllc0VsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJvdW5kYXJpZXMubGVmdCArPSBwYWRkaW5nO1xuICAgICAgICBib3VuZGFyaWVzLnJpZ2h0IC09IHBhZGRpbmc7XG4gICAgICAgIGJvdW5kYXJpZXMudG9wID0gYm91bmRhcmllcy50b3AgKyBwYWRkaW5nO1xuICAgICAgICBib3VuZGFyaWVzLmJvdHRvbSA9IGJvdW5kYXJpZXMuYm90dG9tIC0gcGFkZGluZztcbiAgICAgICAgcmV0dXJuIGJvdW5kYXJpZXM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIExvb3AgdHJvdWdoIHRoZSBsaXN0IG9mIG1vZGlmaWVycyBhbmQgcnVuIHRoZW0gaW4gb3JkZXIsIGVhY2ggb2YgdGhlbSB3aWxsIHRoZW4gZWRpdCB0aGUgZGF0YSBvYmplY3RcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQG1lbWJlcm9mIFBvcHBlclxuICAgICAqIEBhY2Nlc3MgcHVibGljXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBtb2RpZmllcnNcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlbmRzXG4gICAgICovXG4gICAgUG9wcGVyLnByb3RvdHlwZS5ydW5Nb2RpZmllcnMgPSBmdW5jdGlvbiAoZGF0YSwgbW9kaWZpZXJzLCBlbmRzKSB7XG4gICAgICAgIHZhciBtb2RpZmllcnNUb1J1biA9IG1vZGlmaWVycy5zbGljZSgpO1xuICAgICAgICBpZiAoZW5kcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtb2RpZmllcnNUb1J1biA9IHRoaXMuX29wdGlvbnMubW9kaWZpZXJzLnNsaWNlKDAsIGdldEFycmF5S2V5SW5kZXgodGhpcy5fb3B0aW9ucy5tb2RpZmllcnMsIGVuZHMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vZGlmaWVyc1RvUnVuLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihtb2RpZmllcikpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gbW9kaWZpZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfS5iaW5kKHRoaXMpKTtcblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSGVscGVyIHVzZWQgdG8ga25vdyBpZiB0aGUgZ2l2ZW4gbW9kaWZpZXIgZGVwZW5kcyBmcm9tIGFub3RoZXIgb25lLlxuICAgICAqIEBtZXRob2RcbiAgICAgKiBAbWVtYmVyb2YgUG9wcGVyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RpbmcgLSBuYW1lIG9mIHJlcXVlc3RpbmcgbW9kaWZpZXJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcmVxdWVzdGVkIC0gbmFtZSBvZiByZXF1ZXN0ZWQgbW9kaWZpZXJcbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLmlzTW9kaWZpZXJSZXF1aXJlZCA9IGZ1bmN0aW9uIChyZXF1ZXN0aW5nLCByZXF1ZXN0ZWQpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gZ2V0QXJyYXlLZXlJbmRleCh0aGlzLl9vcHRpb25zLm1vZGlmaWVycywgcmVxdWVzdGluZyk7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX29wdGlvbnMubW9kaWZpZXJzLnNsaWNlKDAsIGluZGV4KS5maWx0ZXIoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9kaWZpZXIgPT09IHJlcXVlc3RlZDtcbiAgICAgICAgfSkubGVuZ3RoO1xuICAgIH07XG5cbiAgICAvL1xuICAgIC8vIE1vZGlmaWVyc1xuICAgIC8vXG5cbiAgICAvKipcbiAgICAgKiBNb2RpZmllcnMgbGlzdFxuICAgICAqIEBuYW1lc3BhY2UgUG9wcGVyLm1vZGlmaWVyc1xuICAgICAqIEBtZW1iZXJvZiBQb3BwZXJcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqL1xuICAgIFBvcHBlci5wcm90b3R5cGUubW9kaWZpZXJzID0ge307XG5cbiAgICAvKipcbiAgICAgKiBBcHBseSB0aGUgY29tcHV0ZWQgc3R5bGVzIHRvIHRoZSBwb3BwZXIgZWxlbWVudFxuICAgICAqIEBtZXRob2RcbiAgICAgKiBAbWVtYmVyb2YgUG9wcGVyLm1vZGlmaWVyc1xuICAgICAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBgdXBkYXRlYCBtZXRob2RcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgc2FtZSBkYXRhIG9iamVjdFxuICAgICAqL1xuICAgIFBvcHBlci5wcm90b3R5cGUubW9kaWZpZXJzLmFwcGx5U3R5bGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAvLyBhcHBseSB0aGUgZmluYWwgb2Zmc2V0cyB0byB0aGUgcG9wcGVyXG4gICAgICAgIC8vIE5PVEU6IDEgRE9NIGFjY2VzcyBoZXJlXG4gICAgICAgIHZhciBzdHlsZXMgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogZGF0YS5vZmZzZXRzLnBvcHBlci5wb3NpdGlvblxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIHJvdW5kIHRvcCBhbmQgbGVmdCB0byBhdm9pZCBibHVycnkgdGV4dFxuICAgICAgICB2YXIgbGVmdCA9IE1hdGgucm91bmQoZGF0YS5vZmZzZXRzLnBvcHBlci5sZWZ0KTtcbiAgICAgICAgdmFyIHRvcCA9IE1hdGgucm91bmQoZGF0YS5vZmZzZXRzLnBvcHBlci50b3ApO1xuXG4gICAgICAgIC8vIGlmIGdwdUFjY2VsZXJhdGlvbiBpcyBzZXQgdG8gdHJ1ZSBhbmQgdHJhbnNmb3JtIGlzIHN1cHBvcnRlZCwgd2UgdXNlIGB0cmFuc2xhdGUzZGAgdG8gYXBwbHkgdGhlIHBvc2l0aW9uIHRvIHRoZSBwb3BwZXJcbiAgICAgICAgLy8gd2UgYXV0b21hdGljYWxseSB1c2UgdGhlIHN1cHBvcnRlZCBwcmVmaXhlZCB2ZXJzaW9uIGlmIG5lZWRlZFxuICAgICAgICB2YXIgcHJlZml4ZWRQcm9wZXJ0eTtcbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMuZ3B1QWNjZWxlcmF0aW9uICYmIChwcmVmaXhlZFByb3BlcnR5ID0gZ2V0U3VwcG9ydGVkUHJvcGVydHlOYW1lKCd0cmFuc2Zvcm0nKSkpIHtcbiAgICAgICAgICAgIHN0eWxlc1twcmVmaXhlZFByb3BlcnR5XSA9ICd0cmFuc2xhdGUzZCgnICsgbGVmdCArICdweCwgJyArIHRvcCArICdweCwgMCknO1xuICAgICAgICAgICAgc3R5bGVzLnRvcCA9IDA7XG4gICAgICAgICAgICBzdHlsZXMubGVmdCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gb3Rod2VyaXNlLCB3ZSB1c2UgdGhlIHN0YW5kYXJkIGBsZWZ0YCBhbmQgYHRvcGAgcHJvcGVydGllc1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdHlsZXMubGVmdCA9IGxlZnQ7XG4gICAgICAgICAgICAgICAgc3R5bGVzLnRvcCA9IHRvcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAvLyBhbnkgcHJvcGVydHkgcHJlc2VudCBpbiBgZGF0YS5zdHlsZXNgIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9wcGVyLFxuICAgICAgICAvLyBpbiB0aGlzIHdheSB3ZSBjYW4gbWFrZSB0aGUgM3JkIHBhcnR5IG1vZGlmaWVycyBhZGQgY3VzdG9tIHN0eWxlcyB0byBpdFxuICAgICAgICAvLyBCZSBhd2FyZSwgbW9kaWZpZXJzIGNvdWxkIG92ZXJyaWRlIHRoZSBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhlIHByZXZpb3VzXG4gICAgICAgIC8vIGxpbmVzIG9mIHRoaXMgbW9kaWZpZXIhXG4gICAgICAgIE9iamVjdC5hc3NpZ24oc3R5bGVzLCBkYXRhLnN0eWxlcyk7XG5cbiAgICAgICAgc2V0U3R5bGUodGhpcy5fcG9wcGVyLCBzdHlsZXMpO1xuXG4gICAgICAgIC8vIHNldCBhbiBhdHRyaWJ1dGUgd2hpY2ggd2lsbCBiZSB1c2VmdWwgdG8gc3R5bGUgdGhlIHRvb2x0aXAgKHVzZSBpdCB0byBwcm9wZXJseSBwb3NpdGlvbiBpdHMgYXJyb3cpXG4gICAgICAgIC8vIE5PVEU6IDEgRE9NIGFjY2VzcyBoZXJlXG4gICAgICAgIHRoaXMuX3BvcHBlci5zZXRBdHRyaWJ1dGUoJ3gtcGxhY2VtZW50JywgZGF0YS5wbGFjZW1lbnQpO1xuXG4gICAgICAgIC8vIGlmIHRoZSBhcnJvdyBtb2RpZmllciBpcyByZXF1aXJlZCBhbmQgdGhlIGFycm93IHN0eWxlIGhhcyBiZWVuIGNvbXB1dGVkLCBhcHBseSB0aGUgYXJyb3cgc3R5bGVcbiAgICAgICAgaWYgKHRoaXMuaXNNb2RpZmllclJlcXVpcmVkKHRoaXMubW9kaWZpZXJzLmFwcGx5U3R5bGUsIHRoaXMubW9kaWZpZXJzLmFycm93KSAmJiBkYXRhLm9mZnNldHMuYXJyb3cpIHtcbiAgICAgICAgICAgIHNldFN0eWxlKGRhdGEuYXJyb3dFbGVtZW50LCBkYXRhLm9mZnNldHMuYXJyb3cpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIE1vZGlmaWVyIHVzZWQgdG8gc2hpZnQgdGhlIHBvcHBlciBvbiB0aGUgc3RhcnQgb3IgZW5kIG9mIGl0cyByZWZlcmVuY2UgZWxlbWVudCBzaWRlXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBtZW1iZXJvZiBQb3BwZXIubW9kaWZpZXJzXG4gICAgICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IGB1cGRhdGVgIG1ldGhvZFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBkYXRhIG9iamVjdCwgcHJvcGVybHkgbW9kaWZpZWRcbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLm1vZGlmaWVycy5zaGlmdCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBwbGFjZW1lbnQgPSBkYXRhLnBsYWNlbWVudDtcbiAgICAgICAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICAgICAgdmFyIHNoaWZ0VmFyaWF0aW9uID0gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG5cbiAgICAgICAgLy8gaWYgc2hpZnQgc2hpZnRWYXJpYXRpb24gaXMgc3BlY2lmaWVkLCBydW4gdGhlIG1vZGlmaWVyXG4gICAgICAgIGlmIChzaGlmdFZhcmlhdGlvbikge1xuICAgICAgICAgICAgdmFyIHJlZmVyZW5jZSA9IGRhdGEub2Zmc2V0cy5yZWZlcmVuY2U7XG4gICAgICAgICAgICB2YXIgcG9wcGVyID0gZ2V0UG9wcGVyQ2xpZW50UmVjdChkYXRhLm9mZnNldHMucG9wcGVyKTtcblxuICAgICAgICAgICAgdmFyIHNoaWZ0T2Zmc2V0cyA9IHtcbiAgICAgICAgICAgICAgICB5OiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiB7IHRvcDogcmVmZXJlbmNlLnRvcCB9LFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IHsgdG9wOiByZWZlcmVuY2UudG9wICsgcmVmZXJlbmNlLmhlaWdodCAtIHBvcHBlci5oZWlnaHQgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeDoge1xuICAgICAgICAgICAgICAgICAgICBzdGFydDogeyBsZWZ0OiByZWZlcmVuY2UubGVmdCB9LFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IHsgbGVmdDogcmVmZXJlbmNlLmxlZnQgKyByZWZlcmVuY2Uud2lkdGggLSBwb3BwZXIud2lkdGggfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhciBheGlzID0gWydib3R0b20nLCAndG9wJ10uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTEgPyAneCcgOiAneSc7XG5cbiAgICAgICAgICAgIGRhdGEub2Zmc2V0cy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHBvcHBlciwgc2hpZnRPZmZzZXRzW2F4aXNdW3NoaWZ0VmFyaWF0aW9uXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTW9kaWZpZXIgdXNlZCB0byBtYWtlIHN1cmUgdGhlIHBvcHBlciBkb2VzIG5vdCBvdmVyZmxvd3MgZnJvbSBpdCdzIGJvdW5kYXJpZXNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQG1lbWJlcm9mIFBvcHBlci5tb2RpZmllcnNcbiAgICAgKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgYHVwZGF0ZWAgbWV0aG9kXG4gICAgICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICAgICAqL1xuICAgIFBvcHBlci5wcm90b3R5cGUubW9kaWZpZXJzLnByZXZlbnRPdmVyZmxvdyA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBvcmRlciA9IHRoaXMuX29wdGlvbnMucHJldmVudE92ZXJmbG93T3JkZXI7XG4gICAgICAgIHZhciBwb3BwZXIgPSBnZXRQb3BwZXJDbGllbnRSZWN0KGRhdGEub2Zmc2V0cy5wb3BwZXIpO1xuXG4gICAgICAgIHZhciBjaGVjayA9IHtcbiAgICAgICAgICAgIGxlZnQ6IGZ1bmN0aW9uIGxlZnQoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxlZnQgPSBwb3BwZXIubGVmdDtcbiAgICAgICAgICAgICAgICBpZiAocG9wcGVyLmxlZnQgPCBkYXRhLmJvdW5kYXJpZXMubGVmdCkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gTWF0aC5tYXgocG9wcGVyLmxlZnQsIGRhdGEuYm91bmRhcmllcy5sZWZ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbGVmdDogbGVmdCB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBmdW5jdGlvbiByaWdodCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IHBvcHBlci5sZWZ0O1xuICAgICAgICAgICAgICAgIGlmIChwb3BwZXIucmlnaHQgPiBkYXRhLmJvdW5kYXJpZXMucmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IE1hdGgubWluKHBvcHBlci5sZWZ0LCBkYXRhLmJvdW5kYXJpZXMucmlnaHQgLSBwb3BwZXIud2lkdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBsZWZ0OiBsZWZ0IH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG9wOiBmdW5jdGlvbiB0b3AoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IHBvcHBlci50b3A7XG4gICAgICAgICAgICAgICAgaWYgKHBvcHBlci50b3AgPCBkYXRhLmJvdW5kYXJpZXMudG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcCA9IE1hdGgubWF4KHBvcHBlci50b3AsIGRhdGEuYm91bmRhcmllcy50b3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyB0b3A6IHRvcCB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvdHRvbTogZnVuY3Rpb24gYm90dG9tKCkge1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSBwb3BwZXIudG9wO1xuICAgICAgICAgICAgICAgIGlmIChwb3BwZXIuYm90dG9tID4gZGF0YS5ib3VuZGFyaWVzLmJvdHRvbSkge1xuICAgICAgICAgICAgICAgICAgICB0b3AgPSBNYXRoLm1pbihwb3BwZXIudG9wLCBkYXRhLmJvdW5kYXJpZXMuYm90dG9tIC0gcG9wcGVyLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IHRvcDogdG9wIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgb3JkZXIuZm9yRWFjaChmdW5jdGlvbiAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBkYXRhLm9mZnNldHMucG9wcGVyID0gT2JqZWN0LmFzc2lnbihwb3BwZXIsIGNoZWNrW2RpcmVjdGlvbl0oKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBNb2RpZmllciB1c2VkIHRvIG1ha2Ugc3VyZSB0aGUgcG9wcGVyIGlzIGFsd2F5cyBuZWFyIGl0cyByZWZlcmVuY2VcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQG1lbWJlcm9mIFBvcHBlci5tb2RpZmllcnNcbiAgICAgKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgX3VwZGF0ZSBtZXRob2RcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gICAgICovXG4gICAgUG9wcGVyLnByb3RvdHlwZS5tb2RpZmllcnMua2VlcFRvZ2V0aGVyID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIHBvcHBlciA9IGdldFBvcHBlckNsaWVudFJlY3QoZGF0YS5vZmZzZXRzLnBvcHBlcik7XG4gICAgICAgIHZhciByZWZlcmVuY2UgPSBkYXRhLm9mZnNldHMucmVmZXJlbmNlO1xuICAgICAgICB2YXIgZiA9IE1hdGguZmxvb3I7XG5cbiAgICAgICAgaWYgKHBvcHBlci5yaWdodCA8IGYocmVmZXJlbmNlLmxlZnQpKSB7XG4gICAgICAgICAgICBkYXRhLm9mZnNldHMucG9wcGVyLmxlZnQgPSBmKHJlZmVyZW5jZS5sZWZ0KSAtIHBvcHBlci53aWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9wcGVyLmxlZnQgPiBmKHJlZmVyZW5jZS5yaWdodCkpIHtcbiAgICAgICAgICAgIGRhdGEub2Zmc2V0cy5wb3BwZXIubGVmdCA9IGYocmVmZXJlbmNlLnJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9wcGVyLmJvdHRvbSA8IGYocmVmZXJlbmNlLnRvcCkpIHtcbiAgICAgICAgICAgIGRhdGEub2Zmc2V0cy5wb3BwZXIudG9wID0gZihyZWZlcmVuY2UudG9wKSAtIHBvcHBlci5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcHBlci50b3AgPiBmKHJlZmVyZW5jZS5ib3R0b20pKSB7XG4gICAgICAgICAgICBkYXRhLm9mZnNldHMucG9wcGVyLnRvcCA9IGYocmVmZXJlbmNlLmJvdHRvbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTW9kaWZpZXIgdXNlZCB0byBmbGlwIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHBvcHBlciB3aGVuIHRoZSBsYXR0ZXIgaXMgc3RhcnRpbmcgb3ZlcmxhcHBpbmcgaXRzIHJlZmVyZW5jZSBlbGVtZW50LlxuICAgICAqIFJlcXVpcmVzIHRoZSBgcHJldmVudE92ZXJmbG93YCBtb2RpZmllciBiZWZvcmUgaXQgaW4gb3JkZXIgdG8gd29yay5cbiAgICAgKiAqKk5PVEU6KiogVGhpcyBtb2RpZmllciB3aWxsIHJ1biBhbGwgaXRzIHByZXZpb3VzIG1vZGlmaWVycyBldmVyeXRpbWUgaXQgdHJpZXMgdG8gZmxpcCB0aGUgcG9wcGVyIVxuICAgICAqIEBtZXRob2RcbiAgICAgKiBAbWVtYmVyb2YgUG9wcGVyLm1vZGlmaWVyc1xuICAgICAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBfdXBkYXRlIG1ldGhvZFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBkYXRhIG9iamVjdCwgcHJvcGVybHkgbW9kaWZpZWRcbiAgICAgKi9cbiAgICBQb3BwZXIucHJvdG90eXBlLm1vZGlmaWVycy5mbGlwID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgcHJldmVudE92ZXJmbG93IGlzIGluIHRoZSBsaXN0IG9mIG1vZGlmaWVycyBiZWZvcmUgdGhlIGZsaXAgbW9kaWZpZXIuXG4gICAgICAgIC8vIG90aGVyd2lzZSBmbGlwIHdvdWxkIG5vdCB3b3JrIGFzIGV4cGVjdGVkLlxuICAgICAgICBpZiAoIXRoaXMuaXNNb2RpZmllclJlcXVpcmVkKHRoaXMubW9kaWZpZXJzLmZsaXAsIHRoaXMubW9kaWZpZXJzLnByZXZlbnRPdmVyZmxvdykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignV0FSTklORzogcHJldmVudE92ZXJmbG93IG1vZGlmaWVyIGlzIHJlcXVpcmVkIGJ5IGZsaXAgbW9kaWZpZXIgaW4gb3JkZXIgdG8gd29yaywgYmUgc3VyZSB0byBpbmNsdWRlIGl0IGJlZm9yZSBmbGlwIScpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS5mbGlwcGVkICYmIGRhdGEucGxhY2VtZW50ID09PSBkYXRhLl9vcmlnaW5hbFBsYWNlbWVudCkge1xuICAgICAgICAgICAgLy8gc2VlbXMgbGlrZSBmbGlwIGlzIHRyeWluZyB0byBsb29wLCBwcm9iYWJseSB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2Ugb24gYW55IG9mIHRoZSBmbGlwcGFibGUgc2lkZXNcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50LnNwbGl0KCctJylbMF07XG4gICAgICAgIHZhciBwbGFjZW1lbnRPcHBvc2l0ZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgICAgIHZhciB2YXJpYXRpb24gPSBkYXRhLnBsYWNlbWVudC5zcGxpdCgnLScpWzFdIHx8ICcnO1xuXG4gICAgICAgIHZhciBmbGlwT3JkZXIgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMuZmxpcEJlaGF2aW9yID09PSAnZmxpcCcpIHtcbiAgICAgICAgICAgIGZsaXBPcmRlciA9IFtwbGFjZW1lbnQsIHBsYWNlbWVudE9wcG9zaXRlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZsaXBPcmRlciA9IHRoaXMuX29wdGlvbnMuZmxpcEJlaGF2aW9yO1xuICAgICAgICB9XG5cbiAgICAgICAgZmxpcE9yZGVyLmZvckVhY2goZnVuY3Rpb24gKHN0ZXAsIGluZGV4KSB7XG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ICE9PSBzdGVwIHx8IGZsaXBPcmRlci5sZW5ndGggPT09IGluZGV4ICsgMSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICAgICAgICAgIHBsYWNlbWVudE9wcG9zaXRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgICAgICAgICAgdmFyIHBvcHBlck9mZnNldHMgPSBnZXRQb3BwZXJDbGllbnRSZWN0KGRhdGEub2Zmc2V0cy5wb3BwZXIpO1xuXG4gICAgICAgICAgICAvLyB0aGlzIGJvb2xlYW4gaXMgdXNlZCB0byBkaXN0aW5ndWlzaCByaWdodCBhbmQgYm90dG9tIGZyb20gdG9wIGFuZCBsZWZ0XG4gICAgICAgICAgICAvLyB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbXB1dGF0aW9ucyB0byBnZXQgZmxpcHBlZFxuICAgICAgICAgICAgdmFyIGEgPSBbJ3JpZ2h0JywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICAgICAgICAgIC8vIHVzaW5nIE1hdGguZmxvb3IgYmVjYXVzZSB0aGUgcmVmZXJlbmNlIG9mZnNldHMgbWF5IGNvbnRhaW4gZGVjaW1hbHMgd2UgYXJlIG5vdCBnb2luZyB0byBjb25zaWRlciBoZXJlXG4gICAgICAgICAgICBpZiAoYSAmJiBNYXRoLmZsb29yKGRhdGEub2Zmc2V0cy5yZWZlcmVuY2VbcGxhY2VtZW50XSkgPiBNYXRoLmZsb29yKHBvcHBlck9mZnNldHNbcGxhY2VtZW50T3Bwb3NpdGVdKSB8fCAhYSAmJiBNYXRoLmZsb29yKGRhdGEub2Zmc2V0cy5yZWZlcmVuY2VbcGxhY2VtZW50XSkgPCBNYXRoLmZsb29yKHBvcHBlck9mZnNldHNbcGxhY2VtZW50T3Bwb3NpdGVdKSkge1xuICAgICAgICAgICAgICAgIC8vIHdlJ2xsIHVzZSB0aGlzIGJvb2xlYW4gdG8gZGV0ZWN0IGFueSBmbGlwIGxvb3BcbiAgICAgICAgICAgICAgICBkYXRhLmZsaXBwZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGRhdGEucGxhY2VtZW50ID0gZmxpcE9yZGVyW2luZGV4ICsgMV07XG4gICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnBsYWNlbWVudCArPSAnLScgKyB2YXJpYXRpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGEub2Zmc2V0cy5wb3BwZXIgPSB0aGlzLl9nZXRPZmZzZXRzKHRoaXMuX3BvcHBlciwgdGhpcy5fcmVmZXJlbmNlLCBkYXRhLnBsYWNlbWVudCkucG9wcGVyO1xuXG4gICAgICAgICAgICAgICAgZGF0YSA9IHRoaXMucnVuTW9kaWZpZXJzKGRhdGEsIHRoaXMuX29wdGlvbnMubW9kaWZpZXJzLCB0aGlzLl9mbGlwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIE1vZGlmaWVyIHVzZWQgdG8gYWRkIGFuIG9mZnNldCB0byB0aGUgcG9wcGVyLCB1c2VmdWwgaWYgeW91IG1vcmUgZ3JhbnVsYXJpdHkgcG9zaXRpb25pbmcgeW91ciBwb3BwZXIuXG4gICAgICogVGhlIG9mZnNldHMgd2lsbCBzaGlmdCB0aGUgcG9wcGVyIG9uIHRoZSBzaWRlIG9mIGl0cyByZWZlcmVuY2UgZWxlbWVudC5cbiAgICAgKiBAbWV0aG9kXG4gICAgICogQG1lbWJlcm9mIFBvcHBlci5tb2RpZmllcnNcbiAgICAgKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgX3VwZGF0ZSBtZXRob2RcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gICAgICovXG4gICAgUG9wcGVyLnByb3RvdHlwZS5tb2RpZmllcnMub2Zmc2V0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMuX29wdGlvbnMub2Zmc2V0O1xuICAgICAgICB2YXIgcG9wcGVyID0gZGF0YS5vZmZzZXRzLnBvcHBlcjtcblxuICAgICAgICBpZiAoZGF0YS5wbGFjZW1lbnQuaW5kZXhPZignbGVmdCcpICE9PSAtMSkge1xuICAgICAgICAgICAgcG9wcGVyLnRvcCAtPSBvZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS5wbGFjZW1lbnQuaW5kZXhPZigncmlnaHQnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHBvcHBlci50b3AgKz0gb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGEucGxhY2VtZW50LmluZGV4T2YoJ3RvcCcpICE9PSAtMSkge1xuICAgICAgICAgICAgcG9wcGVyLmxlZnQgLT0gb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGEucGxhY2VtZW50LmluZGV4T2YoJ2JvdHRvbScpICE9PSAtMSkge1xuICAgICAgICAgICAgcG9wcGVyLmxlZnQgKz0gb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBNb2RpZmllciB1c2VkIHRvIG1vdmUgdGhlIGFycm93cyBvbiB0aGUgZWRnZSBvZiB0aGUgcG9wcGVyIHRvIG1ha2Ugc3VyZSB0aGVtIGFyZSBhbHdheXMgYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCB0aGUgcmVmZXJlbmNlIGVsZW1lbnRcbiAgICAgKiBJdCB3aWxsIHVzZSB0aGUgQ1NTIG91dGVyIHNpemUgb2YgdGhlIGFycm93IGVsZW1lbnQgdG8ga25vdyBob3cgbWFueSBwaXhlbHMgb2YgY29uanVjdGlvbiBhcmUgbmVlZGVkXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBtZW1iZXJvZiBQb3BwZXIubW9kaWZpZXJzXG4gICAgICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IF91cGRhdGUgbWV0aG9kXG4gICAgICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICAgICAqL1xuICAgIFBvcHBlci5wcm90b3R5cGUubW9kaWZpZXJzLmFycm93ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIGFycm93ID0gdGhpcy5fb3B0aW9ucy5hcnJvd0VsZW1lbnQ7XG4gICAgICAgIHZhciBhcnJvd09mZnNldCA9IHRoaXMuX29wdGlvbnMuYXJyb3dPZmZzZXQ7XG5cbiAgICAgICAgLy8gaWYgdGhlIGFycm93RWxlbWVudCBpcyBhIHN0cmluZywgc3VwcG9zZSBpdCdzIGEgQ1NTIHNlbGVjdG9yXG4gICAgICAgIGlmICh0eXBlb2YgYXJyb3cgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBhcnJvdyA9IHRoaXMuX3BvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIGFycm93IGVsZW1lbnQgaXMgbm90IGZvdW5kLCBkb24ndCBydW4gdGhlIG1vZGlmaWVyXG4gICAgICAgIGlmICghYXJyb3cpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdGhlIGFycm93IGVsZW1lbnQgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyXG4gICAgICAgIGlmICghdGhpcy5fcG9wcGVyLmNvbnRhaW5zKGFycm93KSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdXQVJOSU5HOiBgYXJyb3dFbGVtZW50YCBtdXN0IGJlIGNoaWxkIG9mIGl0cyBwb3BwZXIgZWxlbWVudCEnKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYXJyb3cgZGVwZW5kcyBvbiBrZWVwVG9nZXRoZXIgaW4gb3JkZXIgdG8gd29ya1xuICAgICAgICBpZiAoIXRoaXMuaXNNb2RpZmllclJlcXVpcmVkKHRoaXMubW9kaWZpZXJzLmFycm93LCB0aGlzLm1vZGlmaWVycy5rZWVwVG9nZXRoZXIpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1dBUk5JTkc6IGtlZXBUb2dldGhlciBtb2RpZmllciBpcyByZXF1aXJlZCBieSBhcnJvdyBtb2RpZmllciBpbiBvcmRlciB0byB3b3JrLCBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgYmVmb3JlIGFycm93IScpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYXJyb3dTdHlsZSA9IHt9O1xuICAgICAgICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgICAgICAgdmFyIHBvcHBlciA9IGdldFBvcHBlckNsaWVudFJlY3QoZGF0YS5vZmZzZXRzLnBvcHBlcik7XG4gICAgICAgIHZhciByZWZlcmVuY2UgPSBkYXRhLm9mZnNldHMucmVmZXJlbmNlO1xuICAgICAgICB2YXIgaXNWZXJ0aWNhbCA9IFsnbGVmdCcsICdyaWdodCddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICAgICAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIHZhciBzaWRlID0gaXNWZXJ0aWNhbCA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gaXNWZXJ0aWNhbCA/ICd0cmFuc2xhdGVZJyA6ICd0cmFuc2xhdGVYJztcbiAgICAgICAgdmFyIGFsdFNpZGUgPSBpc1ZlcnRpY2FsID8gJ2xlZnQnIDogJ3RvcCc7XG4gICAgICAgIHZhciBvcFNpZGUgPSBpc1ZlcnRpY2FsID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICB2YXIgYXJyb3dTaXplID0gZ2V0T3V0ZXJTaXplcyhhcnJvdylbbGVuXTtcblxuICAgICAgICAvL1xuICAgICAgICAvLyBleHRlbmRzIGtlZXBUb2dldGhlciBiZWhhdmlvciBtYWtpbmcgc3VyZSB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGhhdmUgZW5vdWdoIHBpeGVscyBpbiBjb25qdWN0aW9uXG4gICAgICAgIC8vXG5cbiAgICAgICAgLy8gdG9wL2xlZnQgc2lkZVxuICAgICAgICBpZiAocmVmZXJlbmNlW29wU2lkZV0gLSBhcnJvd1NpemUgPCBwb3BwZXJbc2lkZV0pIHtcbiAgICAgICAgICAgIGRhdGEub2Zmc2V0cy5wb3BwZXJbc2lkZV0gLT0gcG9wcGVyW3NpZGVdIC0gKHJlZmVyZW5jZVtvcFNpZGVdIC0gYXJyb3dTaXplKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBib3R0b20vcmlnaHQgc2lkZVxuICAgICAgICBpZiAocmVmZXJlbmNlW3NpZGVdICsgYXJyb3dTaXplID4gcG9wcGVyW29wU2lkZV0pIHtcbiAgICAgICAgICAgIGRhdGEub2Zmc2V0cy5wb3BwZXJbc2lkZV0gKz0gcmVmZXJlbmNlW3NpZGVdICsgYXJyb3dTaXplIC0gcG9wcGVyW29wU2lkZV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb21wdXRlIGNlbnRlciBvZiB0aGUgcG9wcGVyXG4gICAgICAgIHZhciBjZW50ZXIgPSByZWZlcmVuY2Vbc2lkZV0gKyAoYXJyb3dPZmZzZXQgfHwgcmVmZXJlbmNlW2xlbl0gLyAyIC0gYXJyb3dTaXplIC8gMik7XG5cbiAgICAgICAgdmFyIHNpZGVWYWx1ZSA9IGNlbnRlciAtIHBvcHBlcltzaWRlXTtcblxuICAgICAgICAvLyBwcmV2ZW50IGFycm93IGZyb20gYmVpbmcgcGxhY2VkIG5vdCBjb250aWd1b3VzbHkgdG8gaXRzIHBvcHBlclxuICAgICAgICBzaWRlVmFsdWUgPSBNYXRoLm1heChNYXRoLm1pbihwb3BwZXJbbGVuXSAtIGFycm93U2l6ZSAtIDgsIHNpZGVWYWx1ZSksIDgpO1xuICAgICAgICBhcnJvd1N0eWxlW3NpZGVdID0gc2lkZVZhbHVlO1xuICAgICAgICBhcnJvd1N0eWxlW2FsdFNpZGVdID0gJyc7IC8vIG1ha2Ugc3VyZSB0byByZW1vdmUgYW55IG9sZCBzdHlsZSBmcm9tIHRoZSBhcnJvd1xuXG4gICAgICAgIGRhdGEub2Zmc2V0cy5hcnJvdyA9IGFycm93U3R5bGU7XG4gICAgICAgIGRhdGEuYXJyb3dFbGVtZW50ID0gYXJyb3c7XG5cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfTtcblxuICAgIC8vXG4gICAgLy8gSGVscGVyc1xuICAgIC8vXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIG91dGVyIHNpemVzIG9mIHRoZSBnaXZlbiBlbGVtZW50IChvZmZzZXQgc2l6ZSArIG1hcmdpbnMpXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQGlnbm9yZVxuICAgICAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IG9iamVjdCBjb250YWluaW5nIHdpZHRoIGFuZCBoZWlnaHQgcHJvcGVydGllc1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE91dGVyU2l6ZXMoZWxlbWVudCkge1xuICAgICAgICAvLyBOT1RFOiAxIERPTSBhY2Nlc3MgaGVyZVxuICAgICAgICB2YXIgX2Rpc3BsYXkgPSBlbGVtZW50LnN0eWxlLmRpc3BsYXksXG4gICAgICAgICAgICBfdmlzaWJpbGl0eSA9IGVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eTtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztlbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgdmFyIGNhbGNXaWR0aFRvRm9yY2VSZXBhaW50ID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcblxuICAgICAgICAvLyBvcmlnaW5hbCBtZXRob2RcbiAgICAgICAgdmFyIHN0eWxlcyA9IHJvb3QuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICAgICAgdmFyIHggPSBwYXJzZUZsb2F0KHN0eWxlcy5tYXJnaW5Ub3ApICsgcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luQm90dG9tKTtcbiAgICAgICAgdmFyIHkgPSBwYXJzZUZsb2F0KHN0eWxlcy5tYXJnaW5MZWZ0KSArIHBhcnNlRmxvYXQoc3R5bGVzLm1hcmdpblJpZ2h0KTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHsgd2lkdGg6IGVsZW1lbnQub2Zmc2V0V2lkdGggKyB5LCBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgeCB9O1xuXG4gICAgICAgIC8vIHJlc2V0IGVsZW1lbnQgc3R5bGVzXG4gICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IF9kaXNwbGF5O2VsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9IF92aXNpYmlsaXR5O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgb3Bwb3NpdGUgcGxhY2VtZW50IG9mIHRoZSBnaXZlbiBvbmUvXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQGlnbm9yZVxuICAgICAqIEBhcmd1bWVudCB7U3RyaW5nfSBwbGFjZW1lbnRcbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBmbGlwcGVkIHBsYWNlbWVudFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICAgICAgICB2YXIgaGFzaCA9IHsgbGVmdDogJ3JpZ2h0JywgcmlnaHQ6ICdsZWZ0JywgYm90dG9tOiAndG9wJywgdG9wOiAnYm90dG9tJyB9O1xuICAgICAgICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIHRoZSBwb3BwZXIgb2Zmc2V0cywgZ2VuZXJhdGUgYW4gb3V0cHV0IHNpbWlsYXIgdG8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQGlnbm9yZVxuICAgICAqIEBhcmd1bWVudCB7T2JqZWN0fSBwb3BwZXJPZmZzZXRzXG4gICAgICogQHJldHVybnMge09iamVjdH0gQ2xpZW50UmVjdCBsaWtlIG91dHB1dFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFBvcHBlckNsaWVudFJlY3QocG9wcGVyT2Zmc2V0cykge1xuICAgICAgICB2YXIgb2Zmc2V0cyA9IE9iamVjdC5hc3NpZ24oe30sIHBvcHBlck9mZnNldHMpO1xuICAgICAgICBvZmZzZXRzLnJpZ2h0ID0gb2Zmc2V0cy5sZWZ0ICsgb2Zmc2V0cy53aWR0aDtcbiAgICAgICAgb2Zmc2V0cy5ib3R0b20gPSBvZmZzZXRzLnRvcCArIG9mZnNldHMuaGVpZ2h0O1xuICAgICAgICByZXR1cm4gb2Zmc2V0cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhbiBhcnJheSBhbmQgdGhlIGtleSB0byBmaW5kLCByZXR1cm5zIGl0cyBpbmRleFxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBpZ25vcmVcbiAgICAgKiBAYXJndW1lbnQge0FycmF5fSBhcnJcbiAgICAgKiBAYXJndW1lbnQga2V5VG9GaW5kXG4gICAgICogQHJldHVybnMgaW5kZXggb3IgbnVsbFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFycmF5S2V5SW5kZXgoYXJyLCBrZXlUb0ZpbmQpIHtcbiAgICAgICAgdmFyIGkgPSAwLFxuICAgICAgICAgICAga2V5O1xuICAgICAgICBmb3IgKGtleSBpbiBhcnIpIHtcbiAgICAgICAgICAgIGlmIChhcnJba2V5XSA9PT0ga2V5VG9GaW5kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IENTUyBjb21wdXRlZCBwcm9wZXJ0eSBvZiB0aGUgZ2l2ZW4gZWxlbWVudFxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBpZ25vcmVcbiAgICAgKiBAYXJndW1lbnQge0VlbWVudH0gZWxlbWVudFxuICAgICAqIEBhcmd1bWVudCB7U3RyaW5nfSBwcm9wZXJ0eVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSkge1xuICAgICAgICAvLyBOT1RFOiAxIERPTSBhY2Nlc3MgaGVyZVxuICAgICAgICB2YXIgY3NzID0gcm9vdC5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpO1xuICAgICAgICByZXR1cm4gY3NzW3Byb3BlcnR5XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQgcGFyZW50IG9mIHRoZSBnaXZlbiBlbGVtZW50XG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQGlnbm9yZVxuICAgICAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxuICAgICAqIEByZXR1cm5zIHtFbGVtZW50fSBvZmZzZXQgcGFyZW50XG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgICAgICAgLy8gTk9URTogMSBET00gYWNjZXNzIGhlcmVcbiAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuICAgICAgICByZXR1cm4gb2Zmc2V0UGFyZW50ID09PSByb290LmRvY3VtZW50LmJvZHkgfHwgIW9mZnNldFBhcmVudCA/IHJvb3QuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IDogb2Zmc2V0UGFyZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNjcm9sbGluZyBwYXJlbnQgb2YgdGhlIGdpdmVuIGVsZW1lbnRcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAaWdub3JlXG4gICAgICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gICAgICogQHJldHVybnMge0VsZW1lbnR9IG9mZnNldCBwYXJlbnRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICAgICAgICB2YXIgcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlO1xuXG4gICAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnQgPT09IHJvb3QuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIC8vIEZpcmVmb3ggcHV0cyB0aGUgc2Nyb2xsVE9wIHZhbHVlIG9uIGBkb2N1bWVudEVsZW1lbnRgIGluc3RlYWQgb2YgYGJvZHlgLCB3ZSB0aGVuIGNoZWNrIHdoaWNoIG9mIHRoZW0gaXNcbiAgICAgICAgICAgIC8vIGdyZWF0ZXIgdGhhbiAwIGFuZCByZXR1cm4gdGhlIHByb3BlciBlbGVtZW50XG4gICAgICAgICAgICBpZiAocm9vdC5kb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fCByb290LmRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByb290LmRvY3VtZW50LmJvZHk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByb290LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcmVmb3ggd2FudCB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxuICAgICAgICBpZiAoWydzY3JvbGwnLCAnYXV0byddLmluZGV4T2YoZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KHBhcmVudCwgJ292ZXJmbG93JykpICE9PSAtMSB8fCBbJ3Njcm9sbCcsICdhdXRvJ10uaW5kZXhPZihnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkocGFyZW50LCAnb3ZlcmZsb3cteCcpKSAhPT0gLTEgfHwgWydzY3JvbGwnLCAnYXV0byddLmluZGV4T2YoZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KHBhcmVudCwgJ292ZXJmbG93LXknKSkgIT09IC0xKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgZGV0ZWN0ZWQgc2Nyb2xsUGFyZW50IGlzIGJvZHksIHdlIHBlcmZvcm0gYW4gYWRkaXRpb25hbCBjaGVjayBvbiBpdHMgcGFyZW50Tm9kZVxuICAgICAgICAgICAgLy8gaW4gdGhpcyB3YXkgd2UnbGwgZ2V0IGJvZHkgaWYgdGhlIGJyb3dzZXIgaXMgQ2hyb21lLWlzaCwgb3IgZG9jdW1lbnRFbGVtZW50IG90aGVyd2lzZVxuICAgICAgICAgICAgLy8gZml4ZXMgaXNzdWUgIzY1XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudC5wYXJlbnROb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBmaXhlZCBvciBpcyBpbnNpZGUgYSBmaXhlZCBwYXJlbnRcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAaWdub3JlXG4gICAgICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gICAgICogQGFyZ3VtZW50IHtFbGVtZW50fSBjdXN0b21Db250YWluZXJcbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gYW5zd2VyIHRvIFwiaXNGaXhlZD9cIlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRml4ZWQoZWxlbWVudCkge1xuICAgICAgICBpZiAoZWxlbWVudCA9PT0gcm9vdC5kb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShlbGVtZW50LCAncG9zaXRpb24nKSA9PT0gJ2ZpeGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSA/IGlzRml4ZWQoZWxlbWVudC5wYXJlbnROb2RlKSA6IGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBzdHlsZSB0byB0aGUgZ2l2ZW4gcG9wcGVyXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQGlnbm9yZVxuICAgICAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gYXBwbHkgdGhlIHN0eWxlIHRvXG4gICAgICogQGFyZ3VtZW50IHtPYmplY3R9IHN0eWxlcyAtIE9iamVjdCB3aXRoIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0U3R5bGUoZWxlbWVudCwgc3R5bGVzKSB7XG4gICAgICAgIGZ1bmN0aW9uIGlzX251bWVyaWMobikge1xuICAgICAgICAgICAgcmV0dXJuIG4gIT09ICcnICYmICFpc05hTihwYXJzZUZsb2F0KG4pKSAmJiBpc0Zpbml0ZShuKTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgIHZhciB1bml0ID0gJyc7XG4gICAgICAgICAgICAvLyBhZGQgdW5pdCBpZiB0aGUgdmFsdWUgaXMgbnVtZXJpYyBhbmQgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmdcbiAgICAgICAgICAgIGlmIChbJ3dpZHRoJywgJ2hlaWdodCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXS5pbmRleE9mKHByb3ApICE9PSAtMSAmJiBpc19udW1lcmljKHN0eWxlc1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICB1bml0ID0gJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGVbcHJvcF0gPSBzdHlsZXNbcHJvcF0gKyB1bml0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gdmFyaWFibGUgaXMgYSBmdW5jdGlvblxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBpZ25vcmVcbiAgICAgKiBAYXJndW1lbnQgeyp9IGZ1bmN0aW9uVG9DaGVjayAtIHZhcmlhYmxlIHRvIGNoZWNrXG4gICAgICogQHJldHVybnMge0Jvb2xlYW59IGFuc3dlciB0bzogaXMgYSBmdW5jdGlvbj9cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGZ1bmN0aW9uVG9DaGVjaykge1xuICAgICAgICB2YXIgZ2V0VHlwZSA9IHt9O1xuICAgICAgICByZXR1cm4gZnVuY3Rpb25Ub0NoZWNrICYmIGdldFR5cGUudG9TdHJpbmcuY2FsbChmdW5jdGlvblRvQ2hlY2spID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcG9zaXRpb24gb2YgdGhlIGdpdmVuIGVsZW1lbnQsIHJlbGF0aXZlIHRvIGl0cyBvZmZzZXQgcGFyZW50XG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQGlnbm9yZVxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudFxuICAgICAqIEByZXR1cm4ge09iamVjdH0gcG9zaXRpb24gLSBDb29yZGluYXRlcyBvZiB0aGUgZWxlbWVudCBhbmQgaXRzIGBzY3JvbGxUb3BgXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0UmVjdChlbGVtZW50KSB7XG4gICAgICAgIHZhciBlbGVtZW50UmVjdCA9IHtcbiAgICAgICAgICAgIHdpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBlbGVtZW50Lm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgIGxlZnQ6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvcDogZWxlbWVudC5vZmZzZXRUb3BcbiAgICAgICAgfTtcblxuICAgICAgICBlbGVtZW50UmVjdC5yaWdodCA9IGVsZW1lbnRSZWN0LmxlZnQgKyBlbGVtZW50UmVjdC53aWR0aDtcbiAgICAgICAgZWxlbWVudFJlY3QuYm90dG9tID0gZWxlbWVudFJlY3QudG9wICsgZWxlbWVudFJlY3QuaGVpZ2h0O1xuXG4gICAgICAgIC8vIHBvc2l0aW9uXG4gICAgICAgIHJldHVybiBlbGVtZW50UmVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYm91bmRpbmcgY2xpZW50IHJlY3Qgb2YgZ2l2ZW4gZWxlbWVudFxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBpZ25vcmVcbiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gICAgICogQHJldHVybiB7T2JqZWN0fSBjbGllbnQgcmVjdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KSB7XG4gICAgICAgIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAvLyB3aGV0aGVyIHRoZSBJRSB2ZXJzaW9uIGlzIGxvd2VyIHRoYW4gMTFcbiAgICAgICAgdmFyIGlzSUUgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJNU0lFXCIpICE9IC0xO1xuXG4gICAgICAgIC8vIGZpeCBpZSBkb2N1bWVudCBib3VuZGluZyB0b3AgYWx3YXlzIDAgYnVnXG4gICAgICAgIHZhciByZWN0VG9wID0gaXNJRSAmJiBlbGVtZW50LnRhZ05hbWUgPT09ICdIVE1MJyA/IC1lbGVtZW50LnNjcm9sbFRvcCA6IHJlY3QudG9wO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgICAgICAgICB0b3A6IHJlY3RUb3AsXG4gICAgICAgICAgICByaWdodDogcmVjdC5yaWdodCxcbiAgICAgICAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgICAgICAgICB3aWR0aDogcmVjdC5yaWdodCAtIHJlY3QubGVmdCxcbiAgICAgICAgICAgIGhlaWdodDogcmVjdC5ib3R0b20gLSByZWN0VG9wXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYW4gZWxlbWVudCBhbmQgb25lIG9mIGl0cyBwYXJlbnRzLCByZXR1cm4gdGhlIG9mZnNldFxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBpZ25vcmVcbiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcGFyZW50XG4gICAgICogQHJldHVybiB7T2JqZWN0fSByZWN0XG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0UmVjdFJlbGF0aXZlVG9DdXN0b21QYXJlbnQoZWxlbWVudCwgcGFyZW50LCBmaXhlZCkge1xuICAgICAgICB2YXIgZWxlbWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCk7XG4gICAgICAgIHZhciBwYXJlbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHBhcmVudCk7XG5cbiAgICAgICAgaWYgKGZpeGVkKSB7XG4gICAgICAgICAgICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KHBhcmVudCk7XG4gICAgICAgICAgICBwYXJlbnRSZWN0LnRvcCArPSBzY3JvbGxQYXJlbnQuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgcGFyZW50UmVjdC5ib3R0b20gKz0gc2Nyb2xsUGFyZW50LnNjcm9sbFRvcDtcbiAgICAgICAgICAgIHBhcmVudFJlY3QubGVmdCArPSBzY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgIHBhcmVudFJlY3QucmlnaHQgKz0gc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVjdCA9IHtcbiAgICAgICAgICAgIHRvcDogZWxlbWVudFJlY3QudG9wIC0gcGFyZW50UmVjdC50b3AsXG4gICAgICAgICAgICBsZWZ0OiBlbGVtZW50UmVjdC5sZWZ0IC0gcGFyZW50UmVjdC5sZWZ0LFxuICAgICAgICAgICAgYm90dG9tOiBlbGVtZW50UmVjdC50b3AgLSBwYXJlbnRSZWN0LnRvcCArIGVsZW1lbnRSZWN0LmhlaWdodCxcbiAgICAgICAgICAgIHJpZ2h0OiBlbGVtZW50UmVjdC5sZWZ0IC0gcGFyZW50UmVjdC5sZWZ0ICsgZWxlbWVudFJlY3Qud2lkdGgsXG4gICAgICAgICAgICB3aWR0aDogZWxlbWVudFJlY3Qud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGVsZW1lbnRSZWN0LmhlaWdodFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHByZWZpeGVkIHN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQGlnbm9yZVxuICAgICAqIEBhcmd1bWVudCB7U3RyaW5nfSBwcm9wZXJ0eSAoY2FtZWxDYXNlKVxuICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IHByZWZpeGVkIHByb3BlcnR5IChjYW1lbENhc2UpXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkUHJvcGVydHlOYW1lKHByb3BlcnR5KSB7XG4gICAgICAgIHZhciBwcmVmaXhlcyA9IFsnJywgJ21zJywgJ3dlYmtpdCcsICdtb3onLCAnbyddO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0b0NoZWNrID0gcHJlZml4ZXNbaV0gPyBwcmVmaXhlc1tpXSArIHByb3BlcnR5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvcGVydHkuc2xpY2UoMSkgOiBwcm9wZXJ0eTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm9vdC5kb2N1bWVudC5ib2R5LnN0eWxlW3RvQ2hlY2tdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b0NoZWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBPYmplY3QuYXNzaWduKCkgbWV0aG9kIGlzIHVzZWQgdG8gY29weSB0aGUgdmFsdWVzIG9mIGFsbCBlbnVtZXJhYmxlIG93biBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlXG4gICAgICogb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QuIEl0IHdpbGwgcmV0dXJuIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAqIFRoaXMgcG9seWZpbGwgZG9lc24ndCBzdXBwb3J0IHN5bWJvbCBwcm9wZXJ0aWVzLCBzaW5jZSBFUzUgZG9lc24ndCBoYXZlIHN5bWJvbHMgYW55d2F5XG4gICAgICogU291cmNlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvYXNzaWduXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIGlmICghT2JqZWN0LmFzc2lnbikge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LCAnYXNzaWduJywge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQgfHwgdGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGZpcnN0IGFyZ3VtZW50IHRvIG9iamVjdCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciB0byA9IE9iamVjdCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0U291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFNvdXJjZSA9PT0gdW5kZWZpbmVkIHx8IG5leHRTb3VyY2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5leHRTb3VyY2UgPSBPYmplY3QobmV4dFNvdXJjZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleXNBcnJheSA9IE9iamVjdC5rZXlzKG5leHRTb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuZXh0SW5kZXggPSAwLCBsZW4gPSBrZXlzQXJyYXkubGVuZ3RoOyBuZXh0SW5kZXggPCBsZW47IG5leHRJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dEtleSA9IGtleXNBcnJheVtuZXh0SW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5leHRTb3VyY2UsIG5leHRLZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2MgIT09IHVuZGVmaW5lZCAmJiBkZXNjLmVudW1lcmFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1tuZXh0S2V5XSA9IG5leHRTb3VyY2VbbmV4dEtleV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gUG9wcGVyO1xufSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/popper.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/popup/index.js":
/*!**********************************************************!*\
!*** ./node_modules/element-ui/lib/utils/popup/index.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.PopupManager = undefined;\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _merge = __webpack_require__(/*! element-ui/lib/utils/merge */ \"./node_modules/element-ui/lib/utils/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _popupManager = __webpack_require__(/*! element-ui/lib/utils/popup/popup-manager */ \"./node_modules/element-ui/lib/utils/popup/popup-manager.js\");\n\nvar _popupManager2 = _interopRequireDefault(_popupManager);\n\nvar _scrollbarWidth = __webpack_require__(/*! ../scrollbar-width */ \"./node_modules/element-ui/lib/utils/scrollbar-width.js\");\n\nvar _scrollbarWidth2 = _interopRequireDefault(_scrollbarWidth);\n\nvar _dom = __webpack_require__(/*! ../dom */ \"./node_modules/element-ui/lib/utils/dom.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar idSeed = 1;\n\nvar scrollBarWidth = void 0;\n\nexports[\"default\"] = {\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n openDelay: {},\n closeDelay: {},\n zIndex: {},\n modal: {\n type: Boolean,\n default: false\n },\n modalFade: {\n type: Boolean,\n default: true\n },\n modalClass: {},\n modalAppendToBody: {\n type: Boolean,\n default: false\n },\n lockScroll: {\n type: Boolean,\n default: true\n },\n closeOnPressEscape: {\n type: Boolean,\n default: false\n },\n closeOnClickModal: {\n type: Boolean,\n default: false\n }\n },\n\n beforeMount: function beforeMount() {\n this._popupId = 'popup-' + idSeed++;\n _popupManager2.default.register(this._popupId, this);\n },\n beforeDestroy: function beforeDestroy() {\n _popupManager2.default.deregister(this._popupId);\n _popupManager2.default.closeModal(this._popupId);\n\n this.restoreBodyStyle();\n },\n data: function data() {\n return {\n opened: false,\n bodyPaddingRight: null,\n computedBodyPaddingRight: 0,\n withoutHiddenClass: true,\n rendered: false\n };\n },\n\n\n watch: {\n visible: function visible(val) {\n var _this = this;\n\n if (val) {\n if (this._opening) return;\n if (!this.rendered) {\n this.rendered = true;\n _vue2.default.nextTick(function () {\n _this.open();\n });\n } else {\n this.open();\n }\n } else {\n this.close();\n }\n }\n },\n\n methods: {\n open: function open(options) {\n var _this2 = this;\n\n if (!this.rendered) {\n this.rendered = true;\n }\n\n var props = (0, _merge2.default)({}, this.$props || this, options);\n\n if (this._closeTimer) {\n clearTimeout(this._closeTimer);\n this._closeTimer = null;\n }\n clearTimeout(this._openTimer);\n\n var openDelay = Number(props.openDelay);\n if (openDelay > 0) {\n this._openTimer = setTimeout(function () {\n _this2._openTimer = null;\n _this2.doOpen(props);\n }, openDelay);\n } else {\n this.doOpen(props);\n }\n },\n doOpen: function doOpen(props) {\n if (this.$isServer) return;\n if (this.willOpen && !this.willOpen()) return;\n if (this.opened) return;\n\n this._opening = true;\n\n var dom = this.$el;\n\n var modal = props.modal;\n\n var zIndex = props.zIndex;\n if (zIndex) {\n _popupManager2.default.zIndex = zIndex;\n }\n\n if (modal) {\n if (this._closing) {\n _popupManager2.default.closeModal(this._popupId);\n this._closing = false;\n }\n _popupManager2.default.openModal(this._popupId, _popupManager2.default.nextZIndex(), this.modalAppendToBody ? undefined : dom, props.modalClass, props.modalFade);\n if (props.lockScroll) {\n this.withoutHiddenClass = !(0, _dom.hasClass)(document.body, 'el-popup-parent--hidden');\n if (this.withoutHiddenClass) {\n this.bodyPaddingRight = document.body.style.paddingRight;\n this.computedBodyPaddingRight = parseInt((0, _dom.getStyle)(document.body, 'paddingRight'), 10);\n }\n scrollBarWidth = (0, _scrollbarWidth2.default)();\n var bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;\n var bodyOverflowY = (0, _dom.getStyle)(document.body, 'overflowY');\n if (scrollBarWidth > 0 && (bodyHasOverflow || bodyOverflowY === 'scroll') && this.withoutHiddenClass) {\n document.body.style.paddingRight = this.computedBodyPaddingRight + scrollBarWidth + 'px';\n }\n (0, _dom.addClass)(document.body, 'el-popup-parent--hidden');\n }\n }\n\n if (getComputedStyle(dom).position === 'static') {\n dom.style.position = 'absolute';\n }\n\n dom.style.zIndex = _popupManager2.default.nextZIndex();\n this.opened = true;\n\n this.onOpen && this.onOpen();\n\n this.doAfterOpen();\n },\n doAfterOpen: function doAfterOpen() {\n this._opening = false;\n },\n close: function close() {\n var _this3 = this;\n\n if (this.willClose && !this.willClose()) return;\n\n if (this._openTimer !== null) {\n clearTimeout(this._openTimer);\n this._openTimer = null;\n }\n clearTimeout(this._closeTimer);\n\n var closeDelay = Number(this.closeDelay);\n\n if (closeDelay > 0) {\n this._closeTimer = setTimeout(function () {\n _this3._closeTimer = null;\n _this3.doClose();\n }, closeDelay);\n } else {\n this.doClose();\n }\n },\n doClose: function doClose() {\n this._closing = true;\n\n this.onClose && this.onClose();\n\n if (this.lockScroll) {\n setTimeout(this.restoreBodyStyle, 200);\n }\n\n this.opened = false;\n\n this.doAfterClose();\n },\n doAfterClose: function doAfterClose() {\n _popupManager2.default.closeModal(this._popupId);\n this._closing = false;\n },\n restoreBodyStyle: function restoreBodyStyle() {\n if (this.modal && this.withoutHiddenClass) {\n document.body.style.paddingRight = this.bodyPaddingRight;\n (0, _dom.removeClass)(document.body, 'el-popup-parent--hidden');\n }\n this.withoutHiddenClass = true;\n }\n }\n};\nexports.PopupManager = _popupManager2.default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvcG9wdXAvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCO0FBQ2xCLG9CQUFvQjs7QUFFcEIsV0FBVyxtQkFBTyxDQUFDLCtDQUFLOztBQUV4Qjs7QUFFQSxhQUFhLG1CQUFPLENBQUMsZ0ZBQTRCOztBQUVqRDs7QUFFQSxvQkFBb0IsbUJBQU8sQ0FBQyw0R0FBMEM7O0FBRXRFOztBQUVBLHNCQUFzQixtQkFBTyxDQUFDLGtGQUFvQjs7QUFFbEQ7O0FBRUEsV0FBVyxtQkFBTyxDQUFDLDBEQUFROztBQUUzQix1Q0FBdUMsdUNBQXVDOztBQUU5RTs7QUFFQTs7QUFFQSxrQkFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQjtBQUNqQixrQkFBa0I7QUFDbEIsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFVBQVU7QUFDVjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi91dGlscy9wb3B1cC9pbmRleC5qcz84ZTQ2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuUG9wdXBNYW5hZ2VyID0gdW5kZWZpbmVkO1xuXG52YXIgX3Z1ZSA9IHJlcXVpcmUoJ3Z1ZScpO1xuXG52YXIgX3Z1ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92dWUpO1xuXG52YXIgX21lcmdlID0gcmVxdWlyZSgnZWxlbWVudC11aS9saWIvdXRpbHMvbWVyZ2UnKTtcblxudmFyIF9tZXJnZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZSk7XG5cbnZhciBfcG9wdXBNYW5hZ2VyID0gcmVxdWlyZSgnZWxlbWVudC11aS9saWIvdXRpbHMvcG9wdXAvcG9wdXAtbWFuYWdlcicpO1xuXG52YXIgX3BvcHVwTWFuYWdlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wb3B1cE1hbmFnZXIpO1xuXG52YXIgX3Njcm9sbGJhcldpZHRoID0gcmVxdWlyZSgnLi4vc2Nyb2xsYmFyLXdpZHRoJyk7XG5cbnZhciBfc2Nyb2xsYmFyV2lkdGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2Nyb2xsYmFyV2lkdGgpO1xuXG52YXIgX2RvbSA9IHJlcXVpcmUoJy4uL2RvbScpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgaWRTZWVkID0gMTtcblxudmFyIHNjcm9sbEJhcldpZHRoID0gdm9pZCAwO1xuXG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gIHByb3BzOiB7XG4gICAgdmlzaWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBvcGVuRGVsYXk6IHt9LFxuICAgIGNsb3NlRGVsYXk6IHt9LFxuICAgIHpJbmRleDoge30sXG4gICAgbW9kYWw6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbW9kYWxGYWRlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgbW9kYWxDbGFzczoge30sXG4gICAgbW9kYWxBcHBlbmRUb0JvZHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbG9ja1Njcm9sbDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIGNsb3NlT25QcmVzc0VzY2FwZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBjbG9zZU9uQ2xpY2tNb2RhbDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuXG4gIGJlZm9yZU1vdW50OiBmdW5jdGlvbiBiZWZvcmVNb3VudCgpIHtcbiAgICB0aGlzLl9wb3B1cElkID0gJ3BvcHVwLScgKyBpZFNlZWQrKztcbiAgICBfcG9wdXBNYW5hZ2VyMi5kZWZhdWx0LnJlZ2lzdGVyKHRoaXMuX3BvcHVwSWQsIHRoaXMpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIF9wb3B1cE1hbmFnZXIyLmRlZmF1bHQuZGVyZWdpc3Rlcih0aGlzLl9wb3B1cElkKTtcbiAgICBfcG9wdXBNYW5hZ2VyMi5kZWZhdWx0LmNsb3NlTW9kYWwodGhpcy5fcG9wdXBJZCk7XG5cbiAgICB0aGlzLnJlc3RvcmVCb2R5U3R5bGUoKTtcbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgIGJvZHlQYWRkaW5nUmlnaHQ6IG51bGwsXG4gICAgICBjb21wdXRlZEJvZHlQYWRkaW5nUmlnaHQ6IDAsXG4gICAgICB3aXRob3V0SGlkZGVuQ2xhc3M6IHRydWUsXG4gICAgICByZW5kZXJlZDogZmFsc2VcbiAgICB9O1xuICB9LFxuXG5cbiAgd2F0Y2g6IHtcbiAgICB2aXNpYmxlOiBmdW5jdGlvbiB2aXNpYmxlKHZhbCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHZhbCkge1xuICAgICAgICBpZiAodGhpcy5fb3BlbmluZykgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMucmVuZGVyZWQpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgICAgICBfdnVlMi5kZWZhdWx0Lm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW4oKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgb3BlbjogZnVuY3Rpb24gb3BlbihvcHRpb25zKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLnJlbmRlcmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcHMgPSAoMCwgX21lcmdlMi5kZWZhdWx0KSh7fSwgdGhpcy4kcHJvcHMgfHwgdGhpcywgb3B0aW9ucyk7XG5cbiAgICAgIGlmICh0aGlzLl9jbG9zZVRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jbG9zZVRpbWVyKTtcbiAgICAgICAgdGhpcy5fY2xvc2VUaW1lciA9IG51bGw7XG4gICAgICB9XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fb3BlblRpbWVyKTtcblxuICAgICAgdmFyIG9wZW5EZWxheSA9IE51bWJlcihwcm9wcy5vcGVuRGVsYXkpO1xuICAgICAgaWYgKG9wZW5EZWxheSA+IDApIHtcbiAgICAgICAgdGhpcy5fb3BlblRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLl9vcGVuVGltZXIgPSBudWxsO1xuICAgICAgICAgIF90aGlzMi5kb09wZW4ocHJvcHMpO1xuICAgICAgICB9LCBvcGVuRGVsYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kb09wZW4ocHJvcHMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZG9PcGVuOiBmdW5jdGlvbiBkb09wZW4ocHJvcHMpIHtcbiAgICAgIGlmICh0aGlzLiRpc1NlcnZlcikgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMud2lsbE9wZW4gJiYgIXRoaXMud2lsbE9wZW4oKSkgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMub3BlbmVkKSByZXR1cm47XG5cbiAgICAgIHRoaXMuX29wZW5pbmcgPSB0cnVlO1xuXG4gICAgICB2YXIgZG9tID0gdGhpcy4kZWw7XG5cbiAgICAgIHZhciBtb2RhbCA9IHByb3BzLm1vZGFsO1xuXG4gICAgICB2YXIgekluZGV4ID0gcHJvcHMuekluZGV4O1xuICAgICAgaWYgKHpJbmRleCkge1xuICAgICAgICBfcG9wdXBNYW5hZ2VyMi5kZWZhdWx0LnpJbmRleCA9IHpJbmRleDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGFsKSB7XG4gICAgICAgIGlmICh0aGlzLl9jbG9zaW5nKSB7XG4gICAgICAgICAgX3BvcHVwTWFuYWdlcjIuZGVmYXVsdC5jbG9zZU1vZGFsKHRoaXMuX3BvcHVwSWQpO1xuICAgICAgICAgIHRoaXMuX2Nsb3NpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBfcG9wdXBNYW5hZ2VyMi5kZWZhdWx0Lm9wZW5Nb2RhbCh0aGlzLl9wb3B1cElkLCBfcG9wdXBNYW5hZ2VyMi5kZWZhdWx0Lm5leHRaSW5kZXgoKSwgdGhpcy5tb2RhbEFwcGVuZFRvQm9keSA/IHVuZGVmaW5lZCA6IGRvbSwgcHJvcHMubW9kYWxDbGFzcywgcHJvcHMubW9kYWxGYWRlKTtcbiAgICAgICAgaWYgKHByb3BzLmxvY2tTY3JvbGwpIHtcbiAgICAgICAgICB0aGlzLndpdGhvdXRIaWRkZW5DbGFzcyA9ICEoMCwgX2RvbS5oYXNDbGFzcykoZG9jdW1lbnQuYm9keSwgJ2VsLXBvcHVwLXBhcmVudC0taGlkZGVuJyk7XG4gICAgICAgICAgaWYgKHRoaXMud2l0aG91dEhpZGRlbkNsYXNzKSB7XG4gICAgICAgICAgICB0aGlzLmJvZHlQYWRkaW5nUmlnaHQgPSBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodDtcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRCb2R5UGFkZGluZ1JpZ2h0ID0gcGFyc2VJbnQoKDAsIF9kb20uZ2V0U3R5bGUpKGRvY3VtZW50LmJvZHksICdwYWRkaW5nUmlnaHQnKSwgMTApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzY3JvbGxCYXJXaWR0aCA9ICgwLCBfc2Nyb2xsYmFyV2lkdGgyLmRlZmF1bHQpKCk7XG4gICAgICAgICAgdmFyIGJvZHlIYXNPdmVyZmxvdyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgPCBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICB2YXIgYm9keU92ZXJmbG93WSA9ICgwLCBfZG9tLmdldFN0eWxlKShkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3dZJyk7XG4gICAgICAgICAgaWYgKHNjcm9sbEJhcldpZHRoID4gMCAmJiAoYm9keUhhc092ZXJmbG93IHx8IGJvZHlPdmVyZmxvd1kgPT09ICdzY3JvbGwnKSAmJiB0aGlzLndpdGhvdXRIaWRkZW5DbGFzcykge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSB0aGlzLmNvbXB1dGVkQm9keVBhZGRpbmdSaWdodCArIHNjcm9sbEJhcldpZHRoICsgJ3B4JztcbiAgICAgICAgICB9XG4gICAgICAgICAgKDAsIF9kb20uYWRkQ2xhc3MpKGRvY3VtZW50LmJvZHksICdlbC1wb3B1cC1wYXJlbnQtLWhpZGRlbicpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGRvbSkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICAgIGRvbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICB9XG5cbiAgICAgIGRvbS5zdHlsZS56SW5kZXggPSBfcG9wdXBNYW5hZ2VyMi5kZWZhdWx0Lm5leHRaSW5kZXgoKTtcbiAgICAgIHRoaXMub3BlbmVkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5vbk9wZW4gJiYgdGhpcy5vbk9wZW4oKTtcblxuICAgICAgdGhpcy5kb0FmdGVyT3BlbigpO1xuICAgIH0sXG4gICAgZG9BZnRlck9wZW46IGZ1bmN0aW9uIGRvQWZ0ZXJPcGVuKCkge1xuICAgICAgdGhpcy5fb3BlbmluZyA9IGZhbHNlO1xuICAgIH0sXG4gICAgY2xvc2U6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLndpbGxDbG9zZSAmJiAhdGhpcy53aWxsQ2xvc2UoKSkgcmV0dXJuO1xuXG4gICAgICBpZiAodGhpcy5fb3BlblRpbWVyICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9vcGVuVGltZXIpO1xuICAgICAgICB0aGlzLl9vcGVuVGltZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2Nsb3NlVGltZXIpO1xuXG4gICAgICB2YXIgY2xvc2VEZWxheSA9IE51bWJlcih0aGlzLmNsb3NlRGVsYXkpO1xuXG4gICAgICBpZiAoY2xvc2VEZWxheSA+IDApIHtcbiAgICAgICAgdGhpcy5fY2xvc2VUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzMy5fY2xvc2VUaW1lciA9IG51bGw7XG4gICAgICAgICAgX3RoaXMzLmRvQ2xvc2UoKTtcbiAgICAgICAgfSwgY2xvc2VEZWxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRvQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRvQ2xvc2U6IGZ1bmN0aW9uIGRvQ2xvc2UoKSB7XG4gICAgICB0aGlzLl9jbG9zaW5nID0gdHJ1ZTtcblxuICAgICAgdGhpcy5vbkNsb3NlICYmIHRoaXMub25DbG9zZSgpO1xuXG4gICAgICBpZiAodGhpcy5sb2NrU2Nyb2xsKSB7XG4gICAgICAgIHNldFRpbWVvdXQodGhpcy5yZXN0b3JlQm9keVN0eWxlLCAyMDApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9wZW5lZCA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmRvQWZ0ZXJDbG9zZSgpO1xuICAgIH0sXG4gICAgZG9BZnRlckNsb3NlOiBmdW5jdGlvbiBkb0FmdGVyQ2xvc2UoKSB7XG4gICAgICBfcG9wdXBNYW5hZ2VyMi5kZWZhdWx0LmNsb3NlTW9kYWwodGhpcy5fcG9wdXBJZCk7XG4gICAgICB0aGlzLl9jbG9zaW5nID0gZmFsc2U7XG4gICAgfSxcbiAgICByZXN0b3JlQm9keVN0eWxlOiBmdW5jdGlvbiByZXN0b3JlQm9keVN0eWxlKCkge1xuICAgICAgaWYgKHRoaXMubW9kYWwgJiYgdGhpcy53aXRob3V0SGlkZGVuQ2xhc3MpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSB0aGlzLmJvZHlQYWRkaW5nUmlnaHQ7XG4gICAgICAgICgwLCBfZG9tLnJlbW92ZUNsYXNzKShkb2N1bWVudC5ib2R5LCAnZWwtcG9wdXAtcGFyZW50LS1oaWRkZW4nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMud2l0aG91dEhpZGRlbkNsYXNzID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5leHBvcnRzLlBvcHVwTWFuYWdlciA9IF9wb3B1cE1hbmFnZXIyLmRlZmF1bHQ7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/popup/index.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/popup/popup-manager.js":
/*!******************************************************************!*\
!*** ./node_modules/element-ui/lib/utils/popup/popup-manager.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _dom = __webpack_require__(/*! element-ui/lib/utils/dom */ \"./node_modules/element-ui/lib/utils/dom.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hasModal = false;\nvar hasInitZIndex = false;\nvar zIndex = void 0;\n\nvar getModal = function getModal() {\n if (_vue2.default.prototype.$isServer) return;\n var modalDom = PopupManager.modalDom;\n if (modalDom) {\n hasModal = true;\n } else {\n hasModal = false;\n modalDom = document.createElement('div');\n PopupManager.modalDom = modalDom;\n\n modalDom.addEventListener('touchmove', function (event) {\n event.preventDefault();\n event.stopPropagation();\n });\n\n modalDom.addEventListener('click', function () {\n PopupManager.doOnModalClick && PopupManager.doOnModalClick();\n });\n }\n\n return modalDom;\n};\n\nvar instances = {};\n\nvar PopupManager = {\n modalFade: true,\n\n getInstance: function getInstance(id) {\n return instances[id];\n },\n\n register: function register(id, instance) {\n if (id && instance) {\n instances[id] = instance;\n }\n },\n\n deregister: function deregister(id) {\n if (id) {\n instances[id] = null;\n delete instances[id];\n }\n },\n\n nextZIndex: function nextZIndex() {\n return PopupManager.zIndex++;\n },\n\n modalStack: [],\n\n doOnModalClick: function doOnModalClick() {\n var topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];\n if (!topItem) return;\n\n var instance = PopupManager.getInstance(topItem.id);\n if (instance && instance.closeOnClickModal) {\n instance.close();\n }\n },\n\n openModal: function openModal(id, zIndex, dom, modalClass, modalFade) {\n if (_vue2.default.prototype.$isServer) return;\n if (!id || zIndex === undefined) return;\n this.modalFade = modalFade;\n\n var modalStack = this.modalStack;\n\n for (var i = 0, j = modalStack.length; i < j; i++) {\n var item = modalStack[i];\n if (item.id === id) {\n return;\n }\n }\n\n var modalDom = getModal();\n\n (0, _dom.addClass)(modalDom, 'v-modal');\n if (this.modalFade && !hasModal) {\n (0, _dom.addClass)(modalDom, 'v-modal-enter');\n }\n if (modalClass) {\n var classArr = modalClass.trim().split(/\\s+/);\n classArr.forEach(function (item) {\n return (0, _dom.addClass)(modalDom, item);\n });\n }\n setTimeout(function () {\n (0, _dom.removeClass)(modalDom, 'v-modal-enter');\n }, 200);\n\n if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {\n dom.parentNode.appendChild(modalDom);\n } else {\n document.body.appendChild(modalDom);\n }\n\n if (zIndex) {\n modalDom.style.zIndex = zIndex;\n }\n modalDom.tabIndex = 0;\n modalDom.style.display = '';\n\n this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });\n },\n\n closeModal: function closeModal(id) {\n var modalStack = this.modalStack;\n var modalDom = getModal();\n\n if (modalStack.length > 0) {\n var topItem = modalStack[modalStack.length - 1];\n if (topItem.id === id) {\n if (topItem.modalClass) {\n var classArr = topItem.modalClass.trim().split(/\\s+/);\n classArr.forEach(function (item) {\n return (0, _dom.removeClass)(modalDom, item);\n });\n }\n\n modalStack.pop();\n if (modalStack.length > 0) {\n modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;\n }\n } else {\n for (var i = modalStack.length - 1; i >= 0; i--) {\n if (modalStack[i].id === id) {\n modalStack.splice(i, 1);\n break;\n }\n }\n }\n }\n\n if (modalStack.length === 0) {\n if (this.modalFade) {\n (0, _dom.addClass)(modalDom, 'v-modal-leave');\n }\n setTimeout(function () {\n if (modalStack.length === 0) {\n if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);\n modalDom.style.display = 'none';\n PopupManager.modalDom = undefined;\n }\n (0, _dom.removeClass)(modalDom, 'v-modal-leave');\n }, 200);\n }\n }\n};\n\nObject.defineProperty(PopupManager, 'zIndex', {\n configurable: true,\n get: function get() {\n if (!hasInitZIndex) {\n zIndex = zIndex || (_vue2.default.prototype.$ELEMENT || {}).zIndex || 2000;\n hasInitZIndex = true;\n }\n return zIndex;\n },\n set: function set(value) {\n zIndex = value;\n }\n});\n\nvar getTopPopup = function getTopPopup() {\n if (_vue2.default.prototype.$isServer) return;\n if (PopupManager.modalStack.length > 0) {\n var topPopup = PopupManager.modalStack[PopupManager.modalStack.length - 1];\n if (!topPopup) return;\n var instance = PopupManager.getInstance(topPopup.id);\n\n return instance;\n }\n};\n\nif (!_vue2.default.prototype.$isServer) {\n // handle `esc` key when the popup is shown\n window.addEventListener('keydown', function (event) {\n if (event.keyCode === 27) {\n var topPopup = getTopPopup();\n\n if (topPopup && topPopup.closeOnPressEscape) {\n topPopup.handleClose ? topPopup.handleClose() : topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close();\n }\n }\n });\n}\n\nexports[\"default\"] = PopupManager;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvcG9wdXAvcG9wdXAtbWFuYWdlci5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7O0FBRWxCLFdBQVcsbUJBQU8sQ0FBQywrQ0FBSzs7QUFFeEI7O0FBRUEsV0FBVyxtQkFBTyxDQUFDLDRFQUEwQjs7QUFFN0MsdUNBQXVDLHVDQUF1Qzs7QUFFOUU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsMkNBQTJDLE9BQU87QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLGdEQUFnRDtBQUMzRSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUiw0Q0FBNEMsUUFBUTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTtBQUNoRTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsa0JBQWUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvcG9wdXAvcG9wdXAtbWFuYWdlci5qcz81ODE0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF92dWUgPSByZXF1aXJlKCd2dWUnKTtcblxudmFyIF92dWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdnVlKTtcblxudmFyIF9kb20gPSByZXF1aXJlKCdlbGVtZW50LXVpL2xpYi91dGlscy9kb20nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGhhc01vZGFsID0gZmFsc2U7XG52YXIgaGFzSW5pdFpJbmRleCA9IGZhbHNlO1xudmFyIHpJbmRleCA9IHZvaWQgMDtcblxudmFyIGdldE1vZGFsID0gZnVuY3Rpb24gZ2V0TW9kYWwoKSB7XG4gIGlmIChfdnVlMi5kZWZhdWx0LnByb3RvdHlwZS4kaXNTZXJ2ZXIpIHJldHVybjtcbiAgdmFyIG1vZGFsRG9tID0gUG9wdXBNYW5hZ2VyLm1vZGFsRG9tO1xuICBpZiAobW9kYWxEb20pIHtcbiAgICBoYXNNb2RhbCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgaGFzTW9kYWwgPSBmYWxzZTtcbiAgICBtb2RhbERvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIFBvcHVwTWFuYWdlci5tb2RhbERvbSA9IG1vZGFsRG9tO1xuXG4gICAgbW9kYWxEb20uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICBtb2RhbERvbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIFBvcHVwTWFuYWdlci5kb09uTW9kYWxDbGljayAmJiBQb3B1cE1hbmFnZXIuZG9Pbk1vZGFsQ2xpY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtb2RhbERvbTtcbn07XG5cbnZhciBpbnN0YW5jZXMgPSB7fTtcblxudmFyIFBvcHVwTWFuYWdlciA9IHtcbiAgbW9kYWxGYWRlOiB0cnVlLFxuXG4gIGdldEluc3RhbmNlOiBmdW5jdGlvbiBnZXRJbnN0YW5jZShpZCkge1xuICAgIHJldHVybiBpbnN0YW5jZXNbaWRdO1xuICB9LFxuXG4gIHJlZ2lzdGVyOiBmdW5jdGlvbiByZWdpc3RlcihpZCwgaW5zdGFuY2UpIHtcbiAgICBpZiAoaWQgJiYgaW5zdGFuY2UpIHtcbiAgICAgIGluc3RhbmNlc1tpZF0gPSBpbnN0YW5jZTtcbiAgICB9XG4gIH0sXG5cbiAgZGVyZWdpc3RlcjogZnVuY3Rpb24gZGVyZWdpc3RlcihpZCkge1xuICAgIGlmIChpZCkge1xuICAgICAgaW5zdGFuY2VzW2lkXSA9IG51bGw7XG4gICAgICBkZWxldGUgaW5zdGFuY2VzW2lkXTtcbiAgICB9XG4gIH0sXG5cbiAgbmV4dFpJbmRleDogZnVuY3Rpb24gbmV4dFpJbmRleCgpIHtcbiAgICByZXR1cm4gUG9wdXBNYW5hZ2VyLnpJbmRleCsrO1xuICB9LFxuXG4gIG1vZGFsU3RhY2s6IFtdLFxuXG4gIGRvT25Nb2RhbENsaWNrOiBmdW5jdGlvbiBkb09uTW9kYWxDbGljaygpIHtcbiAgICB2YXIgdG9wSXRlbSA9IFBvcHVwTWFuYWdlci5tb2RhbFN0YWNrW1BvcHVwTWFuYWdlci5tb2RhbFN0YWNrLmxlbmd0aCAtIDFdO1xuICAgIGlmICghdG9wSXRlbSkgcmV0dXJuO1xuXG4gICAgdmFyIGluc3RhbmNlID0gUG9wdXBNYW5hZ2VyLmdldEluc3RhbmNlKHRvcEl0ZW0uaWQpO1xuICAgIGlmIChpbnN0YW5jZSAmJiBpbnN0YW5jZS5jbG9zZU9uQ2xpY2tNb2RhbCkge1xuICAgICAgaW5zdGFuY2UuY2xvc2UoKTtcbiAgICB9XG4gIH0sXG5cbiAgb3Blbk1vZGFsOiBmdW5jdGlvbiBvcGVuTW9kYWwoaWQsIHpJbmRleCwgZG9tLCBtb2RhbENsYXNzLCBtb2RhbEZhZGUpIHtcbiAgICBpZiAoX3Z1ZTIuZGVmYXVsdC5wcm90b3R5cGUuJGlzU2VydmVyKSByZXR1cm47XG4gICAgaWYgKCFpZCB8fCB6SW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHRoaXMubW9kYWxGYWRlID0gbW9kYWxGYWRlO1xuXG4gICAgdmFyIG1vZGFsU3RhY2sgPSB0aGlzLm1vZGFsU3RhY2s7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IG1vZGFsU3RhY2subGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IG1vZGFsU3RhY2tbaV07XG4gICAgICBpZiAoaXRlbS5pZCA9PT0gaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBtb2RhbERvbSA9IGdldE1vZGFsKCk7XG5cbiAgICAoMCwgX2RvbS5hZGRDbGFzcykobW9kYWxEb20sICd2LW1vZGFsJyk7XG4gICAgaWYgKHRoaXMubW9kYWxGYWRlICYmICFoYXNNb2RhbCkge1xuICAgICAgKDAsIF9kb20uYWRkQ2xhc3MpKG1vZGFsRG9tLCAndi1tb2RhbC1lbnRlcicpO1xuICAgIH1cbiAgICBpZiAobW9kYWxDbGFzcykge1xuICAgICAgdmFyIGNsYXNzQXJyID0gbW9kYWxDbGFzcy50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgICAgIGNsYXNzQXJyLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuICgwLCBfZG9tLmFkZENsYXNzKShtb2RhbERvbSwgaXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAoMCwgX2RvbS5yZW1vdmVDbGFzcykobW9kYWxEb20sICd2LW1vZGFsLWVudGVyJyk7XG4gICAgfSwgMjAwKTtcblxuICAgIGlmIChkb20gJiYgZG9tLnBhcmVudE5vZGUgJiYgZG9tLnBhcmVudE5vZGUubm9kZVR5cGUgIT09IDExKSB7XG4gICAgICBkb20ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChtb2RhbERvbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobW9kYWxEb20pO1xuICAgIH1cblxuICAgIGlmICh6SW5kZXgpIHtcbiAgICAgIG1vZGFsRG9tLnN0eWxlLnpJbmRleCA9IHpJbmRleDtcbiAgICB9XG4gICAgbW9kYWxEb20udGFiSW5kZXggPSAwO1xuICAgIG1vZGFsRG9tLnN0eWxlLmRpc3BsYXkgPSAnJztcblxuICAgIHRoaXMubW9kYWxTdGFjay5wdXNoKHsgaWQ6IGlkLCB6SW5kZXg6IHpJbmRleCwgbW9kYWxDbGFzczogbW9kYWxDbGFzcyB9KTtcbiAgfSxcblxuICBjbG9zZU1vZGFsOiBmdW5jdGlvbiBjbG9zZU1vZGFsKGlkKSB7XG4gICAgdmFyIG1vZGFsU3RhY2sgPSB0aGlzLm1vZGFsU3RhY2s7XG4gICAgdmFyIG1vZGFsRG9tID0gZ2V0TW9kYWwoKTtcblxuICAgIGlmIChtb2RhbFN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciB0b3BJdGVtID0gbW9kYWxTdGFja1ttb2RhbFN0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKHRvcEl0ZW0uaWQgPT09IGlkKSB7XG4gICAgICAgIGlmICh0b3BJdGVtLm1vZGFsQ2xhc3MpIHtcbiAgICAgICAgICB2YXIgY2xhc3NBcnIgPSB0b3BJdGVtLm1vZGFsQ2xhc3MudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgICAgY2xhc3NBcnIuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBfZG9tLnJlbW92ZUNsYXNzKShtb2RhbERvbSwgaXRlbSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBtb2RhbFN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAobW9kYWxTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbW9kYWxEb20uc3R5bGUuekluZGV4ID0gbW9kYWxTdGFja1ttb2RhbFN0YWNrLmxlbmd0aCAtIDFdLnpJbmRleDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IG1vZGFsU3RhY2subGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBpZiAobW9kYWxTdGFja1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgICAgICAgIG1vZGFsU3RhY2suc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGFsU3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAodGhpcy5tb2RhbEZhZGUpIHtcbiAgICAgICAgKDAsIF9kb20uYWRkQ2xhc3MpKG1vZGFsRG9tLCAndi1tb2RhbC1sZWF2ZScpO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChtb2RhbFN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGlmIChtb2RhbERvbS5wYXJlbnROb2RlKSBtb2RhbERvbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG1vZGFsRG9tKTtcbiAgICAgICAgICBtb2RhbERvbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgIFBvcHVwTWFuYWdlci5tb2RhbERvbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAoMCwgX2RvbS5yZW1vdmVDbGFzcykobW9kYWxEb20sICd2LW1vZGFsLWxlYXZlJyk7XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgfVxufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFBvcHVwTWFuYWdlciwgJ3pJbmRleCcsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICBpZiAoIWhhc0luaXRaSW5kZXgpIHtcbiAgICAgIHpJbmRleCA9IHpJbmRleCB8fCAoX3Z1ZTIuZGVmYXVsdC5wcm90b3R5cGUuJEVMRU1FTlQgfHwge30pLnpJbmRleCB8fCAyMDAwO1xuICAgICAgaGFzSW5pdFpJbmRleCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB6SW5kZXg7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgekluZGV4ID0gdmFsdWU7XG4gIH1cbn0pO1xuXG52YXIgZ2V0VG9wUG9wdXAgPSBmdW5jdGlvbiBnZXRUb3BQb3B1cCgpIHtcbiAgaWYgKF92dWUyLmRlZmF1bHQucHJvdG90eXBlLiRpc1NlcnZlcikgcmV0dXJuO1xuICBpZiAoUG9wdXBNYW5hZ2VyLm1vZGFsU3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciB0b3BQb3B1cCA9IFBvcHVwTWFuYWdlci5tb2RhbFN0YWNrW1BvcHVwTWFuYWdlci5tb2RhbFN0YWNrLmxlbmd0aCAtIDFdO1xuICAgIGlmICghdG9wUG9wdXApIHJldHVybjtcbiAgICB2YXIgaW5zdGFuY2UgPSBQb3B1cE1hbmFnZXIuZ2V0SW5zdGFuY2UodG9wUG9wdXAuaWQpO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG59O1xuXG5pZiAoIV92dWUyLmRlZmF1bHQucHJvdG90eXBlLiRpc1NlcnZlcikge1xuICAvLyBoYW5kbGUgYGVzY2Aga2V5IHdoZW4gdGhlIHBvcHVwIGlzIHNob3duXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDI3KSB7XG4gICAgICB2YXIgdG9wUG9wdXAgPSBnZXRUb3BQb3B1cCgpO1xuXG4gICAgICBpZiAodG9wUG9wdXAgJiYgdG9wUG9wdXAuY2xvc2VPblByZXNzRXNjYXBlKSB7XG4gICAgICAgIHRvcFBvcHVwLmhhbmRsZUNsb3NlID8gdG9wUG9wdXAuaGFuZGxlQ2xvc2UoKSA6IHRvcFBvcHVwLmhhbmRsZUFjdGlvbiA/IHRvcFBvcHVwLmhhbmRsZUFjdGlvbignY2FuY2VsJykgOiB0b3BQb3B1cC5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFBvcHVwTWFuYWdlcjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/popup/popup-manager.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/resize-event.js":
/*!***********************************************************!*\
!*** ./node_modules/element-ui/lib/utils/resize-event.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.removeResizeListener = exports.addResizeListener = undefined;\n\nvar _resizeObserverPolyfill = __webpack_require__(/*! resize-observer-polyfill */ \"./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js\");\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _throttleDebounce = __webpack_require__(/*! throttle-debounce */ \"./node_modules/throttle-debounce/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isServer = typeof window === 'undefined';\n\n/* istanbul ignore next */\nvar resizeHandler = function resizeHandler(entries) {\n for (var _iterator = entries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var entry = _ref;\n\n var listeners = entry.target.__resizeListeners__ || [];\n if (listeners.length) {\n listeners.forEach(function (fn) {\n fn();\n });\n }\n }\n};\n\n/* istanbul ignore next */\nvar addResizeListener = exports.addResizeListener = function addResizeListener(element, fn) {\n if (isServer) return;\n if (!element.__resizeListeners__) {\n element.__resizeListeners__ = [];\n element.__ro__ = new _resizeObserverPolyfill2.default((0, _throttleDebounce.debounce)(16, resizeHandler));\n element.__ro__.observe(element);\n }\n element.__resizeListeners__.push(fn);\n};\n\n/* istanbul ignore next */\nvar removeResizeListener = exports.removeResizeListener = function removeResizeListener(element, fn) {\n if (!element || !element.__resizeListeners__) return;\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.__ro__.disconnect();\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvcmVzaXplLWV2ZW50LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQjtBQUNsQiw0QkFBNEIsR0FBRyx5QkFBeUI7O0FBRXhELDhCQUE4QixtQkFBTyxDQUFDLG1HQUEwQjs7QUFFaEU7O0FBRUEsd0JBQXdCLG1CQUFPLENBQUMsb0VBQW1COztBQUVuRCx1Q0FBdUMsdUNBQXVDOztBQUU5RTs7QUFFQTtBQUNBO0FBQ0EsOElBQThJO0FBQzlJOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IseUJBQXlCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsNEJBQTRCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi91dGlscy9yZXNpemUtZXZlbnQuanM/NjNkYyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLnJlbW92ZVJlc2l6ZUxpc3RlbmVyID0gZXhwb3J0cy5hZGRSZXNpemVMaXN0ZW5lciA9IHVuZGVmaW5lZDtcblxudmFyIF9yZXNpemVPYnNlcnZlclBvbHlmaWxsID0gcmVxdWlyZSgncmVzaXplLW9ic2VydmVyLXBvbHlmaWxsJyk7XG5cbnZhciBfcmVzaXplT2JzZXJ2ZXJQb2x5ZmlsbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZXNpemVPYnNlcnZlclBvbHlmaWxsKTtcblxudmFyIF90aHJvdHRsZURlYm91bmNlID0gcmVxdWlyZSgndGhyb3R0bGUtZGVib3VuY2UnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGlzU2VydmVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG52YXIgcmVzaXplSGFuZGxlciA9IGZ1bmN0aW9uIHJlc2l6ZUhhbmRsZXIoZW50cmllcykge1xuICBmb3IgKHZhciBfaXRlcmF0b3IgPSBlbnRyaWVzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9pdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdKCk7Oykge1xuICAgIHZhciBfcmVmO1xuXG4gICAgaWYgKF9pc0FycmF5KSB7XG4gICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7XG4gICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdO1xuICAgIH0gZWxzZSB7XG4gICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7XG4gICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7XG4gICAgICBfcmVmID0gX2kudmFsdWU7XG4gICAgfVxuXG4gICAgdmFyIGVudHJ5ID0gX3JlZjtcblxuICAgIHZhciBsaXN0ZW5lcnMgPSBlbnRyeS50YXJnZXQuX19yZXNpemVMaXN0ZW5lcnNfXyB8fCBbXTtcbiAgICBpZiAobGlzdGVuZXJzLmxlbmd0aCkge1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG52YXIgYWRkUmVzaXplTGlzdGVuZXIgPSBleHBvcnRzLmFkZFJlc2l6ZUxpc3RlbmVyID0gZnVuY3Rpb24gYWRkUmVzaXplTGlzdGVuZXIoZWxlbWVudCwgZm4pIHtcbiAgaWYgKGlzU2VydmVyKSByZXR1cm47XG4gIGlmICghZWxlbWVudC5fX3Jlc2l6ZUxpc3RlbmVyc19fKSB7XG4gICAgZWxlbWVudC5fX3Jlc2l6ZUxpc3RlbmVyc19fID0gW107XG4gICAgZWxlbWVudC5fX3JvX18gPSBuZXcgX3Jlc2l6ZU9ic2VydmVyUG9seWZpbGwyLmRlZmF1bHQoKDAsIF90aHJvdHRsZURlYm91bmNlLmRlYm91bmNlKSgxNiwgcmVzaXplSGFuZGxlcikpO1xuICAgIGVsZW1lbnQuX19yb19fLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgZWxlbWVudC5fX3Jlc2l6ZUxpc3RlbmVyc19fLnB1c2goZm4pO1xufTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnZhciByZW1vdmVSZXNpemVMaXN0ZW5lciA9IGV4cG9ydHMucmVtb3ZlUmVzaXplTGlzdGVuZXIgPSBmdW5jdGlvbiByZW1vdmVSZXNpemVMaXN0ZW5lcihlbGVtZW50LCBmbikge1xuICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQuX19yZXNpemVMaXN0ZW5lcnNfXykgcmV0dXJuO1xuICBlbGVtZW50Ll9fcmVzaXplTGlzdGVuZXJzX18uc3BsaWNlKGVsZW1lbnQuX19yZXNpemVMaXN0ZW5lcnNfXy5pbmRleE9mKGZuKSwgMSk7XG4gIGlmICghZWxlbWVudC5fX3Jlc2l6ZUxpc3RlbmVyc19fLmxlbmd0aCkge1xuICAgIGVsZW1lbnQuX19yb19fLmRpc2Nvbm5lY3QoKTtcbiAgfVxufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/resize-event.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/scroll-into-view.js":
/*!***************************************************************!*\
!*** ./node_modules/element-ui/lib/utils/scroll-into-view.js ***!
\***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports[\"default\"] = scrollIntoView;\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction scrollIntoView(container, selected) {\n if (_vue2.default.prototype.$isServer) return;\n\n if (!selected) {\n container.scrollTop = 0;\n return;\n }\n\n var offsetParents = [];\n var pointer = selected.offsetParent;\n while (pointer && container !== pointer && container.contains(pointer)) {\n offsetParents.push(pointer);\n pointer = pointer.offsetParent;\n }\n var top = selected.offsetTop + offsetParents.reduce(function (prev, curr) {\n return prev + curr.offsetTop;\n }, 0);\n var bottom = top + selected.offsetHeight;\n var viewRectTop = container.scrollTop;\n var viewRectBottom = viewRectTop + container.clientHeight;\n\n if (top < viewRectTop) {\n container.scrollTop = top;\n } else if (bottom > viewRectBottom) {\n container.scrollTop = bottom - container.clientHeight;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvc2Nyb2xsLWludG8tdmlldy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7QUFDbEIsa0JBQWU7O0FBRWYsV0FBVyxtQkFBTyxDQUFDLCtDQUFLOztBQUV4Qjs7QUFFQSx1Q0FBdUMsdUNBQXVDOztBQUU5RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL3V0aWxzL3Njcm9sbC1pbnRvLXZpZXcuanM/NmQ2NCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSBzY3JvbGxJbnRvVmlldztcblxudmFyIF92dWUgPSByZXF1aXJlKCd2dWUnKTtcblxudmFyIF92dWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdnVlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcoY29udGFpbmVyLCBzZWxlY3RlZCkge1xuICBpZiAoX3Z1ZTIuZGVmYXVsdC5wcm90b3R5cGUuJGlzU2VydmVyKSByZXR1cm47XG5cbiAgaWYgKCFzZWxlY3RlZCkge1xuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBvZmZzZXRQYXJlbnRzID0gW107XG4gIHZhciBwb2ludGVyID0gc2VsZWN0ZWQub2Zmc2V0UGFyZW50O1xuICB3aGlsZSAocG9pbnRlciAmJiBjb250YWluZXIgIT09IHBvaW50ZXIgJiYgY29udGFpbmVyLmNvbnRhaW5zKHBvaW50ZXIpKSB7XG4gICAgb2Zmc2V0UGFyZW50cy5wdXNoKHBvaW50ZXIpO1xuICAgIHBvaW50ZXIgPSBwb2ludGVyLm9mZnNldFBhcmVudDtcbiAgfVxuICB2YXIgdG9wID0gc2VsZWN0ZWQub2Zmc2V0VG9wICsgb2Zmc2V0UGFyZW50cy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cnIpIHtcbiAgICByZXR1cm4gcHJldiArIGN1cnIub2Zmc2V0VG9wO1xuICB9LCAwKTtcbiAgdmFyIGJvdHRvbSA9IHRvcCArIHNlbGVjdGVkLm9mZnNldEhlaWdodDtcbiAgdmFyIHZpZXdSZWN0VG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgdmFyIHZpZXdSZWN0Qm90dG9tID0gdmlld1JlY3RUb3AgKyBjb250YWluZXIuY2xpZW50SGVpZ2h0O1xuXG4gIGlmICh0b3AgPCB2aWV3UmVjdFRvcCkge1xuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSB0b3A7XG4gIH0gZWxzZSBpZiAoYm90dG9tID4gdmlld1JlY3RCb3R0b20pIHtcbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gYm90dG9tIC0gY29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgfVxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/scroll-into-view.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/scrollbar-width.js":
/*!**************************************************************!*\
!*** ./node_modules/element-ui/lib/utils/scrollbar-width.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nexports[\"default\"] = function () {\n if (_vue2.default.prototype.$isServer) return 0;\n if (scrollBarWidth !== undefined) return scrollBarWidth;\n\n var outer = document.createElement('div');\n outer.className = 'el-scrollbar__wrap';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.position = 'absolute';\n outer.style.top = '-9999px';\n document.body.appendChild(outer);\n\n var widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n var inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n var widthWithScroll = inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n scrollBarWidth = widthNoScroll - widthWithScroll;\n\n return scrollBarWidth;\n};\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollBarWidth = void 0;\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvc2Nyb2xsYmFyLXdpZHRoLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQjs7QUFFbEIsa0JBQWU7QUFDZjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBSzs7QUFFeEI7O0FBRUEsdUNBQXVDLHVDQUF1Qzs7QUFFOUU7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvc2Nyb2xsYmFyLXdpZHRoLmpzPzc4MzEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChfdnVlMi5kZWZhdWx0LnByb3RvdHlwZS4kaXNTZXJ2ZXIpIHJldHVybiAwO1xuICBpZiAoc2Nyb2xsQmFyV2lkdGggIT09IHVuZGVmaW5lZCkgcmV0dXJuIHNjcm9sbEJhcldpZHRoO1xuXG4gIHZhciBvdXRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBvdXRlci5jbGFzc05hbWUgPSAnZWwtc2Nyb2xsYmFyX193cmFwJztcbiAgb3V0ZXIuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICBvdXRlci5zdHlsZS53aWR0aCA9ICcxMDBweCc7XG4gIG91dGVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgb3V0ZXIuc3R5bGUudG9wID0gJy05OTk5cHgnO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG91dGVyKTtcblxuICB2YXIgd2lkdGhOb1Njcm9sbCA9IG91dGVyLm9mZnNldFdpZHRoO1xuICBvdXRlci5zdHlsZS5vdmVyZmxvdyA9ICdzY3JvbGwnO1xuXG4gIHZhciBpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBpbm5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgb3V0ZXIuYXBwZW5kQ2hpbGQoaW5uZXIpO1xuXG4gIHZhciB3aWR0aFdpdGhTY3JvbGwgPSBpbm5lci5vZmZzZXRXaWR0aDtcbiAgb3V0ZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvdXRlcik7XG4gIHNjcm9sbEJhcldpZHRoID0gd2lkdGhOb1Njcm9sbCAtIHdpZHRoV2l0aFNjcm9sbDtcblxuICByZXR1cm4gc2Nyb2xsQmFyV2lkdGg7XG59O1xuXG52YXIgX3Z1ZSA9IHJlcXVpcmUoJ3Z1ZScpO1xuXG52YXIgX3Z1ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92dWUpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgc2Nyb2xsQmFyV2lkdGggPSB2b2lkIDA7XG5cbjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/scrollbar-width.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/shared.js":
/*!*****************************************************!*\
!*** ./node_modules/element-ui/lib/utils/shared.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.isDef = isDef;\nexports.isKorean = isKorean;\nfunction isDef(val) {\n return val !== undefined && val !== null;\n}\nfunction isKorean(text) {\n var reg = /([(\\uAC00-\\uD7AF)|(\\u3130-\\u318F)])+/gi;\n return reg.test(text);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvc2hhcmVkLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGtCQUFrQjtBQUNsQixhQUFhO0FBQ2IsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL3V0aWxzL3NoYXJlZC5qcz8yMWNkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5pc0RlZiA9IGlzRGVmO1xuZXhwb3J0cy5pc0tvcmVhbiA9IGlzS29yZWFuO1xuZnVuY3Rpb24gaXNEZWYodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGw7XG59XG5mdW5jdGlvbiBpc0tvcmVhbih0ZXh0KSB7XG4gIHZhciByZWcgPSAvKFsoXFx1QUMwMC1cXHVEN0FGKXwoXFx1MzEzMC1cXHUzMThGKV0pKy9naTtcbiAgcmV0dXJuIHJlZy50ZXN0KHRleHQpO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/shared.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/types.js":
/*!****************************************************!*\
!*** ./node_modules/element-ui/lib/utils/types.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.isDefined = exports.isUndefined = exports.isFunction = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isHtmlElement = isHtmlElement;\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isString(obj) {\n return Object.prototype.toString.call(obj) === '[object String]';\n}\n\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nfunction isHtmlElement(node) {\n return node && node.nodeType === Node.ELEMENT_NODE;\n}\n\n/**\n * - Inspired:\n * https://github.com/jashkenas/underscore/blob/master/modules/isFunction.js\n */\nvar isFunction = function isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n};\n\nif ( true && (typeof Int8Array === 'undefined' ? 'undefined' : _typeof(Int8Array)) !== 'object' && (_vue2.default.prototype.$isServer || typeof document.childNodes !== 'function')) {\n exports.isFunction = isFunction = function isFunction(obj) {\n return typeof obj === 'function' || false;\n };\n}\n\nexports.isFunction = isFunction;\nvar isUndefined = exports.isUndefined = function isUndefined(val) {\n return val === void 0;\n};\n\nvar isDefined = exports.isDefined = function isDefined(val) {\n return val !== undefined && val !== null;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvdHlwZXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCO0FBQ2xCLGlCQUFpQixHQUFHLG1CQUFtQixHQUFHLGtCQUFrQjs7QUFFNUQscUdBQXFHLHFCQUFxQixtQkFBbUI7O0FBRTdJLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIscUJBQXFCOztBQUVyQixXQUFXLG1CQUFPLENBQUMsK0NBQUs7O0FBRXhCOztBQUVBLHVDQUF1Qyx1Q0FBdUM7O0FBRTlFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSSxLQUF5QjtBQUM3QixFQUFFLGtCQUFrQjtBQUNwQjtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCO0FBQ2xCLGtCQUFrQixtQkFBbUI7QUFDckM7QUFDQTs7QUFFQSxnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvdHlwZXMuanM/OGFkMCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmlzRGVmaW5lZCA9IGV4cG9ydHMuaXNVbmRlZmluZWQgPSBleHBvcnRzLmlzRnVuY3Rpb24gPSB1bmRlZmluZWQ7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuZXhwb3J0cy5pc0h0bWxFbGVtZW50ID0gaXNIdG1sRWxlbWVudDtcblxudmFyIF92dWUgPSByZXF1aXJlKCd2dWUnKTtcblxudmFyIF92dWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdnVlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gaXNTdHJpbmcob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgU3RyaW5nXSc7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xufVxuXG5mdW5jdGlvbiBpc0h0bWxFbGVtZW50KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUgJiYgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREU7XG59XG5cbi8qKlxuICogIC0gSW5zcGlyZWQ6XG4gKiAgICBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvYmxvYi9tYXN0ZXIvbW9kdWxlcy9pc0Z1bmN0aW9uLmpzXG4gKi9cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbihmdW5jdGlvblRvQ2hlY2spIHtcbiAgdmFyIGdldFR5cGUgPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uVG9DaGVjayAmJiBnZXRUeXBlLnRvU3RyaW5nLmNhbGwoZnVuY3Rpb25Ub0NoZWNrKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn07XG5cbmlmICh0eXBlb2YgLy4vICE9PSAnZnVuY3Rpb24nICYmICh0eXBlb2YgSW50OEFycmF5ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihJbnQ4QXJyYXkpKSAhPT0gJ29iamVjdCcgJiYgKF92dWUyLmRlZmF1bHQucHJvdG90eXBlLiRpc1NlcnZlciB8fCB0eXBlb2YgZG9jdW1lbnQuY2hpbGROb2RlcyAhPT0gJ2Z1bmN0aW9uJykpIHtcbiAgZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicgfHwgZmFsc2U7XG4gIH07XG59XG5cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG52YXIgaXNVbmRlZmluZWQgPSBleHBvcnRzLmlzVW5kZWZpbmVkID0gZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsKSB7XG4gIHJldHVybiB2YWwgPT09IHZvaWQgMDtcbn07XG5cbnZhciBpc0RlZmluZWQgPSBleHBvcnRzLmlzRGVmaW5lZCA9IGZ1bmN0aW9uIGlzRGVmaW5lZCh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gbnVsbDtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/types.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/util.js":
/*!***************************************************!*\
!*** ./node_modules/element-ui/lib/utils/util.js ***!
\***************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\nexports.isMac = exports.isEmpty = exports.isEqual = exports.arrayEquals = exports.looseEqual = exports.capitalize = exports.kebabCase = exports.autoprefixer = exports.isFirefox = exports.isEdge = exports.isIE = exports.coerceTruthyValueToArray = exports.arrayFind = exports.arrayFindIndex = exports.escapeRegexpString = exports.valueEquals = exports.generateId = exports.getValueByPath = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.noop = noop;\nexports.hasOwn = hasOwn;\nexports.toObject = toObject;\nexports.getPropByPath = getPropByPath;\nexports.rafThrottle = rafThrottle;\nexports.objToArray = objToArray;\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _types = __webpack_require__(/*! element-ui/lib/utils/types */ \"./node_modules/element-ui/lib/utils/types.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction noop() {};\n\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n};\n\nfunction extend(to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to;\n};\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\nvar getValueByPath = exports.getValueByPath = function getValueByPath(object, prop) {\n prop = prop || '';\n var paths = prop.split('.');\n var current = object;\n var result = null;\n for (var i = 0, j = paths.length; i < j; i++) {\n var path = paths[i];\n if (!current) break;\n\n if (i === j - 1) {\n result = current[path];\n break;\n }\n current = current[path];\n }\n return result;\n};\n\nfunction getPropByPath(obj, path, strict) {\n var tempObj = obj;\n path = path.replace(/\\[(\\w+)\\]/g, '.$1');\n path = path.replace(/^\\./, '');\n\n var keyArr = path.split('.');\n var i = 0;\n for (var len = keyArr.length; i < len - 1; ++i) {\n if (!tempObj && !strict) break;\n var key = keyArr[i];\n if (key in tempObj) {\n tempObj = tempObj[key];\n } else {\n if (strict) {\n throw new Error('please transfer a valid prop path to form item!');\n }\n break;\n }\n }\n return {\n o: tempObj,\n k: keyArr[i],\n v: tempObj ? tempObj[keyArr[i]] : null\n };\n};\n\nvar generateId = exports.generateId = function generateId() {\n return Math.floor(Math.random() * 10000);\n};\n\nvar valueEquals = exports.valueEquals = function valueEquals(a, b) {\n // see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript\n if (a === b) return true;\n if (!(a instanceof Array)) return false;\n if (!(b instanceof Array)) return false;\n if (a.length !== b.length) return false;\n for (var i = 0; i !== a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n};\n\nvar escapeRegexpString = exports.escapeRegexpString = function escapeRegexpString() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return String(value).replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\n// TODO: use native Array.find, Array.findIndex when IE support is dropped\nvar arrayFindIndex = exports.arrayFindIndex = function arrayFindIndex(arr, pred) {\n for (var i = 0; i !== arr.length; ++i) {\n if (pred(arr[i])) {\n return i;\n }\n }\n return -1;\n};\n\nvar arrayFind = exports.arrayFind = function arrayFind(arr, pred) {\n var idx = arrayFindIndex(arr, pred);\n return idx !== -1 ? arr[idx] : undefined;\n};\n\n// coerce truthy value to array\nvar coerceTruthyValueToArray = exports.coerceTruthyValueToArray = function coerceTruthyValueToArray(val) {\n if (Array.isArray(val)) {\n return val;\n } else if (val) {\n return [val];\n } else {\n return [];\n }\n};\n\nvar isIE = exports.isIE = function isIE() {\n return !_vue2.default.prototype.$isServer && !isNaN(Number(document.documentMode));\n};\n\nvar isEdge = exports.isEdge = function isEdge() {\n return !_vue2.default.prototype.$isServer && navigator.userAgent.indexOf('Edge') > -1;\n};\n\nvar isFirefox = exports.isFirefox = function isFirefox() {\n return !_vue2.default.prototype.$isServer && !!window.navigator.userAgent.match(/firefox/i);\n};\n\nvar autoprefixer = exports.autoprefixer = function autoprefixer(style) {\n if ((typeof style === 'undefined' ? 'undefined' : _typeof(style)) !== 'object') return style;\n var rules = ['transform', 'transition', 'animation'];\n var prefixes = ['ms-', 'webkit-'];\n rules.forEach(function (rule) {\n var value = style[rule];\n if (rule && value) {\n prefixes.forEach(function (prefix) {\n style[prefix + rule] = value;\n });\n }\n });\n return style;\n};\n\nvar kebabCase = exports.kebabCase = function kebabCase(str) {\n var hyphenateRE = /([^-])([A-Z])/g;\n return str.replace(hyphenateRE, '$1-$2').replace(hyphenateRE, '$1-$2').toLowerCase();\n};\n\nvar capitalize = exports.capitalize = function capitalize(str) {\n if (!(0, _types.isString)(str)) return str;\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nvar looseEqual = exports.looseEqual = function looseEqual(a, b) {\n var isObjectA = (0, _types.isObject)(a);\n var isObjectB = (0, _types.isObject)(b);\n if (isObjectA && isObjectB) {\n return JSON.stringify(a) === JSON.stringify(b);\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b);\n } else {\n return false;\n }\n};\n\nvar arrayEquals = exports.arrayEquals = function arrayEquals(arrayA, arrayB) {\n arrayA = arrayA || [];\n arrayB = arrayB || [];\n\n if (arrayA.length !== arrayB.length) {\n return false;\n }\n\n for (var i = 0; i < arrayA.length; i++) {\n if (!looseEqual(arrayA[i], arrayB[i])) {\n return false;\n }\n }\n\n return true;\n};\n\nvar isEqual = exports.isEqual = function isEqual(value1, value2) {\n if (Array.isArray(value1) && Array.isArray(value2)) {\n return arrayEquals(value1, value2);\n }\n return looseEqual(value1, value2);\n};\n\nvar isEmpty = exports.isEmpty = function isEmpty(val) {\n // null or undefined\n if (val == null) return true;\n\n if (typeof val === 'boolean') return false;\n\n if (typeof val === 'number') return !val;\n\n if (val instanceof Error) return val.message === '';\n\n switch (Object.prototype.toString.call(val)) {\n // String or Array\n case '[object String]':\n case '[object Array]':\n return !val.length;\n\n // Map or Set or File\n case '[object File]':\n case '[object Map]':\n case '[object Set]':\n {\n return !val.size;\n }\n // Plain Object\n case '[object Object]':\n {\n return !Object.keys(val).length;\n }\n }\n\n return false;\n};\n\nfunction rafThrottle(fn) {\n var locked = false;\n return function () {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (locked) return;\n locked = true;\n window.requestAnimationFrame(function (_) {\n fn.apply(_this, args);\n locked = false;\n });\n };\n}\n\nfunction objToArray(obj) {\n if (Array.isArray(obj)) {\n return obj;\n }\n return isEmpty(obj) ? [] : [obj];\n}\n\nvar isMac = exports.isMac = function isMac() {\n return !_vue2.default.prototype.$isServer && /macintosh|mac os x/i.test(navigator.userAgent);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvdXRpbC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7QUFDbEIsYUFBYSxHQUFHLGVBQWUsR0FBRyxlQUFlLEdBQUcsbUJBQW1CLEdBQUcsa0JBQWtCLEdBQUcsa0JBQWtCLEdBQUcsaUJBQWlCLEdBQUcsb0JBQW9CLEdBQUcsaUJBQWlCLEdBQUcsY0FBYyxHQUFHLFlBQVksR0FBRyxnQ0FBZ0MsR0FBRyxpQkFBaUIsR0FBRyxzQkFBc0IsR0FBRywwQkFBMEIsR0FBRyxtQkFBbUIsR0FBRyxrQkFBa0IsR0FBRyxzQkFBc0I7O0FBRWpZLHFHQUFxRyxxQkFBcUIsbUJBQW1COztBQUU3SSxZQUFZO0FBQ1osY0FBYztBQUNkLGdCQUFnQjtBQUNoQixxQkFBcUI7QUFDckIsbUJBQW1CO0FBQ25CLGtCQUFrQjs7QUFFbEIsV0FBVyxtQkFBTyxDQUFDLCtDQUFLOztBQUV4Qjs7QUFFQSxhQUFhLG1CQUFPLENBQUMsZ0ZBQTRCOztBQUVqRCx1Q0FBdUMsdUNBQXVDOztBQUU5RTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0IsZ0JBQWdCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0JBQXNCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLE9BQU87QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQ0FBZ0MsYUFBYTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBOztBQUVBLGtCQUFrQixtQkFBbUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnQkFBZ0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLDBCQUEwQjtBQUNuRDtBQUNBLHNDQUFzQztBQUN0Qzs7QUFFQTtBQUNBLHFCQUFxQixzQkFBc0I7QUFDM0Msa0JBQWtCLGtCQUFrQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0IsZ0NBQWdDO0FBQy9EO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBLFdBQVcsWUFBWTtBQUN2QjtBQUNBOztBQUVBLGFBQWEsY0FBYztBQUMzQjtBQUNBOztBQUVBLGdCQUFnQixpQkFBaUI7QUFDakM7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsbUJBQW1CO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixtQkFBbUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxjQUFjLGVBQWU7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLGVBQWU7QUFDN0I7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0VBQW9FLGFBQWE7QUFDakY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVksYUFBYTtBQUN6QjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWwuanM/NDBhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmlzTWFjID0gZXhwb3J0cy5pc0VtcHR5ID0gZXhwb3J0cy5pc0VxdWFsID0gZXhwb3J0cy5hcnJheUVxdWFscyA9IGV4cG9ydHMubG9vc2VFcXVhbCA9IGV4cG9ydHMuY2FwaXRhbGl6ZSA9IGV4cG9ydHMua2ViYWJDYXNlID0gZXhwb3J0cy5hdXRvcHJlZml4ZXIgPSBleHBvcnRzLmlzRmlyZWZveCA9IGV4cG9ydHMuaXNFZGdlID0gZXhwb3J0cy5pc0lFID0gZXhwb3J0cy5jb2VyY2VUcnV0aHlWYWx1ZVRvQXJyYXkgPSBleHBvcnRzLmFycmF5RmluZCA9IGV4cG9ydHMuYXJyYXlGaW5kSW5kZXggPSBleHBvcnRzLmVzY2FwZVJlZ2V4cFN0cmluZyA9IGV4cG9ydHMudmFsdWVFcXVhbHMgPSBleHBvcnRzLmdlbmVyYXRlSWQgPSBleHBvcnRzLmdldFZhbHVlQnlQYXRoID0gdW5kZWZpbmVkO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmV4cG9ydHMubm9vcCA9IG5vb3A7XG5leHBvcnRzLmhhc093biA9IGhhc093bjtcbmV4cG9ydHMudG9PYmplY3QgPSB0b09iamVjdDtcbmV4cG9ydHMuZ2V0UHJvcEJ5UGF0aCA9IGdldFByb3BCeVBhdGg7XG5leHBvcnRzLnJhZlRocm90dGxlID0gcmFmVGhyb3R0bGU7XG5leHBvcnRzLm9ialRvQXJyYXkgPSBvYmpUb0FycmF5O1xuXG52YXIgX3Z1ZSA9IHJlcXVpcmUoJ3Z1ZScpO1xuXG52YXIgX3Z1ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92dWUpO1xuXG52YXIgX3R5cGVzID0gcmVxdWlyZSgnZWxlbWVudC11aS9saWIvdXRpbHMvdHlwZXMnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG5mdW5jdGlvbiBoYXNPd24ob2JqLCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xufTtcblxuZnVuY3Rpb24gZXh0ZW5kKHRvLCBfZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gX2Zyb20pIHtcbiAgICB0b1trZXldID0gX2Zyb21ba2V5XTtcbiAgfVxuICByZXR1cm4gdG87XG59O1xuXG5mdW5jdGlvbiB0b09iamVjdChhcnIpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0pIHtcbiAgICAgIGV4dGVuZChyZXMsIGFycltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59O1xuXG52YXIgZ2V0VmFsdWVCeVBhdGggPSBleHBvcnRzLmdldFZhbHVlQnlQYXRoID0gZnVuY3Rpb24gZ2V0VmFsdWVCeVBhdGgob2JqZWN0LCBwcm9wKSB7XG4gIHByb3AgPSBwcm9wIHx8ICcnO1xuICB2YXIgcGF0aHMgPSBwcm9wLnNwbGl0KCcuJyk7XG4gIHZhciBjdXJyZW50ID0gb2JqZWN0O1xuICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBwYXRocy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICB2YXIgcGF0aCA9IHBhdGhzW2ldO1xuICAgIGlmICghY3VycmVudCkgYnJlYWs7XG5cbiAgICBpZiAoaSA9PT0gaiAtIDEpIHtcbiAgICAgIHJlc3VsdCA9IGN1cnJlbnRbcGF0aF07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY3VycmVudCA9IGN1cnJlbnRbcGF0aF07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmZ1bmN0aW9uIGdldFByb3BCeVBhdGgob2JqLCBwYXRoLCBzdHJpY3QpIHtcbiAgdmFyIHRlbXBPYmogPSBvYmo7XG4gIHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcWyhcXHcrKVxcXS9nLCAnLiQxJyk7XG4gIHBhdGggPSBwYXRoLnJlcGxhY2UoL15cXC4vLCAnJyk7XG5cbiAgdmFyIGtleUFyciA9IHBhdGguc3BsaXQoJy4nKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKHZhciBsZW4gPSBrZXlBcnIubGVuZ3RoOyBpIDwgbGVuIC0gMTsgKytpKSB7XG4gICAgaWYgKCF0ZW1wT2JqICYmICFzdHJpY3QpIGJyZWFrO1xuICAgIHZhciBrZXkgPSBrZXlBcnJbaV07XG4gICAgaWYgKGtleSBpbiB0ZW1wT2JqKSB7XG4gICAgICB0ZW1wT2JqID0gdGVtcE9ialtrZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncGxlYXNlIHRyYW5zZmVyIGEgdmFsaWQgcHJvcCBwYXRoIHRvIGZvcm0gaXRlbSEnKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIG86IHRlbXBPYmosXG4gICAgazoga2V5QXJyW2ldLFxuICAgIHY6IHRlbXBPYmogPyB0ZW1wT2JqW2tleUFycltpXV0gOiBudWxsXG4gIH07XG59O1xuXG52YXIgZ2VuZXJhdGVJZCA9IGV4cG9ydHMuZ2VuZXJhdGVJZCA9IGZ1bmN0aW9uIGdlbmVyYXRlSWQoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMCk7XG59O1xuXG52YXIgdmFsdWVFcXVhbHMgPSBleHBvcnRzLnZhbHVlRXF1YWxzID0gZnVuY3Rpb24gdmFsdWVFcXVhbHMoYSwgYikge1xuICAvLyBzZWU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMxMTU5ODIvaG93LXRvLWNoZWNrLWlmLXR3by1hcnJheXMtYXJlLWVxdWFsLXdpdGgtamF2YXNjcmlwdFxuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBBcnJheSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKCEoYiBpbnN0YW5jZW9mIEFycmF5KSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gIGZvciAodmFyIGkgPSAwOyBpICE9PSBhLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciBlc2NhcGVSZWdleHBTdHJpbmcgPSBleHBvcnRzLmVzY2FwZVJlZ2V4cFN0cmluZyA9IGZ1bmN0aW9uIGVzY2FwZVJlZ2V4cFN0cmluZygpIHtcbiAgdmFyIHZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnJztcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCsqPy5dL2csICdcXFxcJCYnKTtcbn07XG5cbi8vIFRPRE86IHVzZSBuYXRpdmUgQXJyYXkuZmluZCwgQXJyYXkuZmluZEluZGV4IHdoZW4gSUUgc3VwcG9ydCBpcyBkcm9wcGVkXG52YXIgYXJyYXlGaW5kSW5kZXggPSBleHBvcnRzLmFycmF5RmluZEluZGV4ID0gZnVuY3Rpb24gYXJyYXlGaW5kSW5kZXgoYXJyLCBwcmVkKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpICE9PSBhcnIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAocHJlZChhcnJbaV0pKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcblxudmFyIGFycmF5RmluZCA9IGV4cG9ydHMuYXJyYXlGaW5kID0gZnVuY3Rpb24gYXJyYXlGaW5kKGFyciwgcHJlZCkge1xuICB2YXIgaWR4ID0gYXJyYXlGaW5kSW5kZXgoYXJyLCBwcmVkKTtcbiAgcmV0dXJuIGlkeCAhPT0gLTEgPyBhcnJbaWR4XSA6IHVuZGVmaW5lZDtcbn07XG5cbi8vIGNvZXJjZSB0cnV0aHkgdmFsdWUgdG8gYXJyYXlcbnZhciBjb2VyY2VUcnV0aHlWYWx1ZVRvQXJyYXkgPSBleHBvcnRzLmNvZXJjZVRydXRoeVZhbHVlVG9BcnJheSA9IGZ1bmN0aW9uIGNvZXJjZVRydXRoeVZhbHVlVG9BcnJheSh2YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH0gZWxzZSBpZiAodmFsKSB7XG4gICAgcmV0dXJuIFt2YWxdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbXTtcbiAgfVxufTtcblxudmFyIGlzSUUgPSBleHBvcnRzLmlzSUUgPSBmdW5jdGlvbiBpc0lFKCkge1xuICByZXR1cm4gIV92dWUyLmRlZmF1bHQucHJvdG90eXBlLiRpc1NlcnZlciAmJiAhaXNOYU4oTnVtYmVyKGRvY3VtZW50LmRvY3VtZW50TW9kZSkpO1xufTtcblxudmFyIGlzRWRnZSA9IGV4cG9ydHMuaXNFZGdlID0gZnVuY3Rpb24gaXNFZGdlKCkge1xuICByZXR1cm4gIV92dWUyLmRlZmF1bHQucHJvdG90eXBlLiRpc1NlcnZlciAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0VkZ2UnKSA+IC0xO1xufTtcblxudmFyIGlzRmlyZWZveCA9IGV4cG9ydHMuaXNGaXJlZm94ID0gZnVuY3Rpb24gaXNGaXJlZm94KCkge1xuICByZXR1cm4gIV92dWUyLmRlZmF1bHQucHJvdG90eXBlLiRpc1NlcnZlciAmJiAhIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9maXJlZm94L2kpO1xufTtcblxudmFyIGF1dG9wcmVmaXhlciA9IGV4cG9ydHMuYXV0b3ByZWZpeGVyID0gZnVuY3Rpb24gYXV0b3ByZWZpeGVyKHN0eWxlKSB7XG4gIGlmICgodHlwZW9mIHN0eWxlID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihzdHlsZSkpICE9PSAnb2JqZWN0JykgcmV0dXJuIHN0eWxlO1xuICB2YXIgcnVsZXMgPSBbJ3RyYW5zZm9ybScsICd0cmFuc2l0aW9uJywgJ2FuaW1hdGlvbiddO1xuICB2YXIgcHJlZml4ZXMgPSBbJ21zLScsICd3ZWJraXQtJ107XG4gIHJ1bGVzLmZvckVhY2goZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICB2YXIgdmFsdWUgPSBzdHlsZVtydWxlXTtcbiAgICBpZiAocnVsZSAmJiB2YWx1ZSkge1xuICAgICAgcHJlZml4ZXMuZm9yRWFjaChmdW5jdGlvbiAocHJlZml4KSB7XG4gICAgICAgIHN0eWxlW3ByZWZpeCArIHJ1bGVdID0gdmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3R5bGU7XG59O1xuXG52YXIga2ViYWJDYXNlID0gZXhwb3J0cy5rZWJhYkNhc2UgPSBmdW5jdGlvbiBrZWJhYkNhc2Uoc3RyKSB7XG4gIHZhciBoeXBoZW5hdGVSRSA9IC8oW14tXSkoW0EtWl0pL2c7XG4gIHJldHVybiBzdHIucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJykucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBjYXBpdGFsaXplID0gZXhwb3J0cy5jYXBpdGFsaXplID0gZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHIpIHtcbiAgaWYgKCEoMCwgX3R5cGVzLmlzU3RyaW5nKShzdHIpKSByZXR1cm4gc3RyO1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xufTtcblxudmFyIGxvb3NlRXF1YWwgPSBleHBvcnRzLmxvb3NlRXF1YWwgPSBmdW5jdGlvbiBsb29zZUVxdWFsKGEsIGIpIHtcbiAgdmFyIGlzT2JqZWN0QSA9ICgwLCBfdHlwZXMuaXNPYmplY3QpKGEpO1xuICB2YXIgaXNPYmplY3RCID0gKDAsIF90eXBlcy5pc09iamVjdCkoYik7XG4gIGlmIChpc09iamVjdEEgJiYgaXNPYmplY3RCKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKTtcbiAgfSBlbHNlIGlmICghaXNPYmplY3RBICYmICFpc09iamVjdEIpIHtcbiAgICByZXR1cm4gU3RyaW5nKGEpID09PSBTdHJpbmcoYik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG52YXIgYXJyYXlFcXVhbHMgPSBleHBvcnRzLmFycmF5RXF1YWxzID0gZnVuY3Rpb24gYXJyYXlFcXVhbHMoYXJyYXlBLCBhcnJheUIpIHtcbiAgYXJyYXlBID0gYXJyYXlBIHx8IFtdO1xuICBhcnJheUIgPSBhcnJheUIgfHwgW107XG5cbiAgaWYgKGFycmF5QS5sZW5ndGggIT09IGFycmF5Qi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5QS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghbG9vc2VFcXVhbChhcnJheUFbaV0sIGFycmF5QltpXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciBpc0VxdWFsID0gZXhwb3J0cy5pc0VxdWFsID0gZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZTEsIHZhbHVlMikge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZTEpICYmIEFycmF5LmlzQXJyYXkodmFsdWUyKSkge1xuICAgIHJldHVybiBhcnJheUVxdWFscyh2YWx1ZTEsIHZhbHVlMik7XG4gIH1cbiAgcmV0dXJuIGxvb3NlRXF1YWwodmFsdWUxLCB2YWx1ZTIpO1xufTtcblxudmFyIGlzRW1wdHkgPSBleHBvcnRzLmlzRW1wdHkgPSBmdW5jdGlvbiBpc0VtcHR5KHZhbCkge1xuICAvLyBudWxsIG9yIHVuZGVmaW5lZFxuICBpZiAodmFsID09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIGlmICh0eXBlb2YgdmFsID09PSAnYm9vbGVhbicpIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHJldHVybiAhdmFsO1xuXG4gIGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikgcmV0dXJuIHZhbC5tZXNzYWdlID09PSAnJztcblxuICBzd2l0Y2ggKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWwpKSB7XG4gICAgLy8gU3RyaW5nIG9yIEFycmF5XG4gICAgY2FzZSAnW29iamVjdCBTdHJpbmddJzpcbiAgICBjYXNlICdbb2JqZWN0IEFycmF5XSc6XG4gICAgICByZXR1cm4gIXZhbC5sZW5ndGg7XG5cbiAgICAvLyBNYXAgb3IgU2V0IG9yIEZpbGVcbiAgICBjYXNlICdbb2JqZWN0IEZpbGVdJzpcbiAgICBjYXNlICdbb2JqZWN0IE1hcF0nOlxuICAgIGNhc2UgJ1tvYmplY3QgU2V0XSc6XG4gICAgICB7XG4gICAgICAgIHJldHVybiAhdmFsLnNpemU7XG4gICAgICB9XG4gICAgLy8gUGxhaW4gT2JqZWN0XG4gICAgY2FzZSAnW29iamVjdCBPYmplY3RdJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuICFPYmplY3Qua2V5cyh2YWwpLmxlbmd0aDtcbiAgICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmZ1bmN0aW9uIHJhZlRocm90dGxlKGZuKSB7XG4gIHZhciBsb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgaWYgKGxvY2tlZCkgcmV0dXJuO1xuICAgIGxvY2tlZCA9IHRydWU7XG4gICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoXykge1xuICAgICAgZm4uYXBwbHkoX3RoaXMsIGFyZ3MpO1xuICAgICAgbG9ja2VkID0gZmFsc2U7XG4gICAgfSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG9ialRvQXJyYXkob2JqKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG4gIHJldHVybiBpc0VtcHR5KG9iaikgPyBbXSA6IFtvYmpdO1xufVxuXG52YXIgaXNNYWMgPSBleHBvcnRzLmlzTWFjID0gZnVuY3Rpb24gaXNNYWMoKSB7XG4gIHJldHVybiAhX3Z1ZTIuZGVmYXVsdC5wcm90b3R5cGUuJGlzU2VydmVyICYmIC9tYWNpbnRvc2h8bWFjIG9zIHgvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/util.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/vdom.js":
/*!***************************************************!*\
!*** ./node_modules/element-ui/lib/utils/vdom.js ***!
\***************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.isVNode = isVNode;\n\nvar _util = __webpack_require__(/*! element-ui/lib/utils/util */ \"./node_modules/element-ui/lib/utils/util.js\");\n\nfunction isVNode(node) {\n return node !== null && (typeof node === 'undefined' ? 'undefined' : _typeof(node)) === 'object' && (0, _util.hasOwn)(node, 'componentOptions');\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvdmRvbS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7O0FBRWxCLHFHQUFxRyxxQkFBcUIsbUJBQW1COztBQUU3SSxlQUFlOztBQUVmLFlBQVksbUJBQU8sQ0FBQyw4RUFBMkI7O0FBRS9DO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL2xpYi91dGlscy92ZG9tLmpzP2NhN2YiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmV4cG9ydHMuaXNWTm9kZSA9IGlzVk5vZGU7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJ2VsZW1lbnQtdWkvbGliL3V0aWxzL3V0aWwnKTtcblxuZnVuY3Rpb24gaXNWTm9kZShub2RlKSB7XG4gIHJldHVybiBub2RlICE9PSBudWxsICYmICh0eXBlb2Ygbm9kZSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2Yobm9kZSkpID09PSAnb2JqZWN0JyAmJiAoMCwgX3V0aWwuaGFzT3duKShub2RlLCAnY29tcG9uZW50T3B0aW9ucycpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/vdom.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/utils/vue-popper.js":
/*!*********************************************************!*\
!*** ./node_modules/element-ui/lib/utils/vue-popper.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("\n\nexports.__esModule = true;\n\nvar _vue = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _popup = __webpack_require__(/*! element-ui/lib/utils/popup */ \"./node_modules/element-ui/lib/utils/popup/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PopperJS = _vue2.default.prototype.$isServer ? function () {} : __webpack_require__(/*! ./popper */ \"./node_modules/element-ui/lib/utils/popper.js\");\nvar stop = function stop(e) {\n return e.stopPropagation();\n};\n\n/**\n * @param {HTMLElement} [reference=$refs.reference] - The reference element used to position the popper.\n * @param {HTMLElement} [popper=$refs.popper] - The HTML element used as popper, or a configuration used to generate the popper.\n * @param {String} [placement=button] - Placement of the popper accepted values: top(-start, -end), right(-start, -end), bottom(-start, -end), left(-start, -end)\n * @param {Number} [offset=0] - Amount of pixels the popper will be shifted (can be negative).\n * @param {Boolean} [visible=false] Visibility of the popup element.\n * @param {Boolean} [visible-arrow=false] Visibility of the arrow, no style.\n */\nexports[\"default\"] = {\n props: {\n transformOrigin: {\n type: [Boolean, String],\n default: true\n },\n placement: {\n type: String,\n default: 'bottom'\n },\n boundariesPadding: {\n type: Number,\n default: 5\n },\n reference: {},\n popper: {},\n offset: {\n default: 0\n },\n value: Boolean,\n visibleArrow: Boolean,\n arrowOffset: {\n type: Number,\n default: 35\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n popperOptions: {\n type: Object,\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n }\n },\n\n data: function data() {\n return {\n showPopper: false,\n currentPlacement: ''\n };\n },\n\n\n watch: {\n value: {\n immediate: true,\n handler: function handler(val) {\n this.showPopper = val;\n this.$emit('input', val);\n }\n },\n\n showPopper: function showPopper(val) {\n if (this.disabled) return;\n val ? this.updatePopper() : this.destroyPopper();\n this.$emit('input', val);\n }\n },\n\n methods: {\n createPopper: function createPopper() {\n var _this = this;\n\n if (this.$isServer) return;\n this.currentPlacement = this.currentPlacement || this.placement;\n if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement)) {\n return;\n }\n\n var options = this.popperOptions;\n var popper = this.popperElm = this.popperElm || this.popper || this.$refs.popper;\n var reference = this.referenceElm = this.referenceElm || this.reference || this.$refs.reference;\n\n if (!reference && this.$slots.reference && this.$slots.reference[0]) {\n reference = this.referenceElm = this.$slots.reference[0].elm;\n }\n\n if (!popper || !reference) return;\n if (this.visibleArrow) this.appendArrow(popper);\n if (this.appendToBody) document.body.appendChild(this.popperElm);\n if (this.popperJS && this.popperJS.destroy) {\n this.popperJS.destroy();\n }\n\n options.placement = this.currentPlacement;\n options.offset = this.offset;\n options.arrowOffset = this.arrowOffset;\n this.popperJS = new PopperJS(reference, popper, options);\n this.popperJS.onCreate(function (_) {\n _this.$emit('created', _this);\n _this.resetTransformOrigin();\n _this.$nextTick(_this.updatePopper);\n });\n if (typeof options.onUpdate === 'function') {\n this.popperJS.onUpdate(options.onUpdate);\n }\n this.popperJS._popper.style.zIndex = _popup.PopupManager.nextZIndex();\n this.popperElm.addEventListener('click', stop);\n },\n updatePopper: function updatePopper() {\n var popperJS = this.popperJS;\n if (popperJS) {\n popperJS.update();\n if (popperJS._popper) {\n popperJS._popper.style.zIndex = _popup.PopupManager.nextZIndex();\n }\n } else {\n this.createPopper();\n }\n },\n doDestroy: function doDestroy(forceDestroy) {\n /* istanbul ignore if */\n if (!this.popperJS || this.showPopper && !forceDestroy) return;\n this.popperJS.destroy();\n this.popperJS = null;\n },\n destroyPopper: function destroyPopper() {\n if (this.popperJS) {\n this.resetTransformOrigin();\n }\n },\n resetTransformOrigin: function resetTransformOrigin() {\n if (!this.transformOrigin) return;\n var placementMap = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n };\n var placement = this.popperJS._popper.getAttribute('x-placement').split('-')[0];\n var origin = placementMap[placement];\n this.popperJS._popper.style.transformOrigin = typeof this.transformOrigin === 'string' ? this.transformOrigin : ['top', 'bottom'].indexOf(placement) > -1 ? 'center ' + origin : origin + ' center';\n },\n appendArrow: function appendArrow(element) {\n var hash = void 0;\n if (this.appended) {\n return;\n }\n\n this.appended = true;\n\n for (var item in element.attributes) {\n if (/^_v-/.test(element.attributes[item].name)) {\n hash = element.attributes[item].name;\n break;\n }\n }\n\n var arrow = document.createElement('div');\n\n if (hash) {\n arrow.setAttribute(hash, '');\n }\n arrow.setAttribute('x-arrow', '');\n arrow.className = 'popper__arrow';\n element.appendChild(arrow);\n }\n },\n\n beforeDestroy: function beforeDestroy() {\n this.doDestroy(true);\n if (this.popperElm && this.popperElm.parentNode === document.body) {\n this.popperElm.removeEventListener('click', stop);\n document.body.removeChild(this.popperElm);\n }\n },\n\n\n // call destroy in keep-alive mode\n deactivated: function deactivated() {\n this.$options.beforeDestroy[0].call(this);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvdnVlLXBvcHBlci5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0I7O0FBRWxCLFdBQVcsbUJBQU8sQ0FBQywrQ0FBSzs7QUFFeEI7O0FBRUEsYUFBYSxtQkFBTyxDQUFDLHNGQUE0Qjs7QUFFakQsdUNBQXVDLHVDQUF1Qzs7QUFFOUUsa0VBQWtFLEVBQUUsbUJBQU8sQ0FBQywrREFBVTtBQUN0RjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQjtBQUNBLGtCQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxpQkFBaUI7QUFDakIsY0FBYztBQUNkO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdXRpbHMvdnVlLXBvcHBlci5qcz83NTUyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF92dWUgPSByZXF1aXJlKCd2dWUnKTtcblxudmFyIF92dWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdnVlKTtcblxudmFyIF9wb3B1cCA9IHJlcXVpcmUoJ2VsZW1lbnQtdWkvbGliL3V0aWxzL3BvcHVwJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBQb3BwZXJKUyA9IF92dWUyLmRlZmF1bHQucHJvdG90eXBlLiRpc1NlcnZlciA/IGZ1bmN0aW9uICgpIHt9IDogcmVxdWlyZSgnLi9wb3BwZXInKTtcbnZhciBzdG9wID0gZnVuY3Rpb24gc3RvcChlKSB7XG4gIHJldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBbcmVmZXJlbmNlPSRyZWZzLnJlZmVyZW5jZV0gLSBUaGUgcmVmZXJlbmNlIGVsZW1lbnQgdXNlZCB0byBwb3NpdGlvbiB0aGUgcG9wcGVyLlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gW3BvcHBlcj0kcmVmcy5wb3BwZXJdIC0gVGhlIEhUTUwgZWxlbWVudCB1c2VkIGFzIHBvcHBlciwgb3IgYSBjb25maWd1cmF0aW9uIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHBvcHBlci5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbcGxhY2VtZW50PWJ1dHRvbl0gLSBQbGFjZW1lbnQgb2YgdGhlIHBvcHBlciBhY2NlcHRlZCB2YWx1ZXM6IHRvcCgtc3RhcnQsIC1lbmQpLCByaWdodCgtc3RhcnQsIC1lbmQpLCBib3R0b20oLXN0YXJ0LCAtZW5kKSwgbGVmdCgtc3RhcnQsIC1lbmQpXG4gKiBAcGFyYW0ge051bWJlcn0gW29mZnNldD0wXSAtIEFtb3VudCBvZiBwaXhlbHMgdGhlIHBvcHBlciB3aWxsIGJlIHNoaWZ0ZWQgKGNhbiBiZSBuZWdhdGl2ZSkuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFt2aXNpYmxlPWZhbHNlXSBWaXNpYmlsaXR5IG9mIHRoZSBwb3B1cCBlbGVtZW50LlxuICogQHBhcmFtIHtCb29sZWFufSBbdmlzaWJsZS1hcnJvdz1mYWxzZV0gVmlzaWJpbGl0eSBvZiB0aGUgYXJyb3csIG5vIHN0eWxlLlxuICovXG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gIHByb3BzOiB7XG4gICAgdHJhbnNmb3JtT3JpZ2luOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIHBsYWNlbWVudDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2JvdHRvbSdcbiAgICB9LFxuICAgIGJvdW5kYXJpZXNQYWRkaW5nOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiA1XG4gICAgfSxcbiAgICByZWZlcmVuY2U6IHt9LFxuICAgIHBvcHBlcjoge30sXG4gICAgb2Zmc2V0OiB7XG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICB2YWx1ZTogQm9vbGVhbixcbiAgICB2aXNpYmxlQXJyb3c6IEJvb2xlYW4sXG4gICAgYXJyb3dPZmZzZXQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDM1XG4gICAgfSxcbiAgICBhcHBlbmRUb0JvZHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBncHVBY2NlbGVyYXRpb246IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3dQb3BwZXI6IGZhbHNlLFxuICAgICAgY3VycmVudFBsYWNlbWVudDogJydcbiAgICB9O1xuICB9LFxuXG5cbiAgd2F0Y2g6IHtcbiAgICB2YWx1ZToge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2YWwpIHtcbiAgICAgICAgdGhpcy5zaG93UG9wcGVyID0gdmFsO1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHZhbCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHNob3dQb3BwZXI6IGZ1bmN0aW9uIHNob3dQb3BwZXIodmFsKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgdmFsID8gdGhpcy51cGRhdGVQb3BwZXIoKSA6IHRoaXMuZGVzdHJveVBvcHBlcigpO1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB2YWwpO1xuICAgIH1cbiAgfSxcblxuICBtZXRob2RzOiB7XG4gICAgY3JlYXRlUG9wcGVyOiBmdW5jdGlvbiBjcmVhdGVQb3BwZXIoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy4kaXNTZXJ2ZXIpIHJldHVybjtcbiAgICAgIHRoaXMuY3VycmVudFBsYWNlbWVudCA9IHRoaXMuY3VycmVudFBsYWNlbWVudCB8fCB0aGlzLnBsYWNlbWVudDtcbiAgICAgIGlmICghL14odG9wfGJvdHRvbXxsZWZ0fHJpZ2h0KSgtc3RhcnR8LWVuZCk/JC9nLnRlc3QodGhpcy5jdXJyZW50UGxhY2VtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5wb3BwZXJPcHRpb25zO1xuICAgICAgdmFyIHBvcHBlciA9IHRoaXMucG9wcGVyRWxtID0gdGhpcy5wb3BwZXJFbG0gfHwgdGhpcy5wb3BwZXIgfHwgdGhpcy4kcmVmcy5wb3BwZXI7XG4gICAgICB2YXIgcmVmZXJlbmNlID0gdGhpcy5yZWZlcmVuY2VFbG0gPSB0aGlzLnJlZmVyZW5jZUVsbSB8fCB0aGlzLnJlZmVyZW5jZSB8fCB0aGlzLiRyZWZzLnJlZmVyZW5jZTtcblxuICAgICAgaWYgKCFyZWZlcmVuY2UgJiYgdGhpcy4kc2xvdHMucmVmZXJlbmNlICYmIHRoaXMuJHNsb3RzLnJlZmVyZW5jZVswXSkge1xuICAgICAgICByZWZlcmVuY2UgPSB0aGlzLnJlZmVyZW5jZUVsbSA9IHRoaXMuJHNsb3RzLnJlZmVyZW5jZVswXS5lbG07XG4gICAgICB9XG5cbiAgICAgIGlmICghcG9wcGVyIHx8ICFyZWZlcmVuY2UpIHJldHVybjtcbiAgICAgIGlmICh0aGlzLnZpc2libGVBcnJvdykgdGhpcy5hcHBlbmRBcnJvdyhwb3BwZXIpO1xuICAgICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5KSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMucG9wcGVyRWxtKTtcbiAgICAgIGlmICh0aGlzLnBvcHBlckpTICYmIHRoaXMucG9wcGVySlMuZGVzdHJveSkge1xuICAgICAgICB0aGlzLnBvcHBlckpTLmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9ucy5wbGFjZW1lbnQgPSB0aGlzLmN1cnJlbnRQbGFjZW1lbnQ7XG4gICAgICBvcHRpb25zLm9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgb3B0aW9ucy5hcnJvd09mZnNldCA9IHRoaXMuYXJyb3dPZmZzZXQ7XG4gICAgICB0aGlzLnBvcHBlckpTID0gbmV3IFBvcHBlckpTKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKTtcbiAgICAgIHRoaXMucG9wcGVySlMub25DcmVhdGUoZnVuY3Rpb24gKF8pIHtcbiAgICAgICAgX3RoaXMuJGVtaXQoJ2NyZWF0ZWQnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLnJlc2V0VHJhbnNmb3JtT3JpZ2luKCk7XG4gICAgICAgIF90aGlzLiRuZXh0VGljayhfdGhpcy51cGRhdGVQb3BwZXIpO1xuICAgICAgfSk7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMub25VcGRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wb3BwZXJKUy5vblVwZGF0ZShvcHRpb25zLm9uVXBkYXRlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucG9wcGVySlMuX3BvcHBlci5zdHlsZS56SW5kZXggPSBfcG9wdXAuUG9wdXBNYW5hZ2VyLm5leHRaSW5kZXgoKTtcbiAgICAgIHRoaXMucG9wcGVyRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgc3RvcCk7XG4gICAgfSxcbiAgICB1cGRhdGVQb3BwZXI6IGZ1bmN0aW9uIHVwZGF0ZVBvcHBlcigpIHtcbiAgICAgIHZhciBwb3BwZXJKUyA9IHRoaXMucG9wcGVySlM7XG4gICAgICBpZiAocG9wcGVySlMpIHtcbiAgICAgICAgcG9wcGVySlMudXBkYXRlKCk7XG4gICAgICAgIGlmIChwb3BwZXJKUy5fcG9wcGVyKSB7XG4gICAgICAgICAgcG9wcGVySlMuX3BvcHBlci5zdHlsZS56SW5kZXggPSBfcG9wdXAuUG9wdXBNYW5hZ2VyLm5leHRaSW5kZXgoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVhdGVQb3BwZXIoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRvRGVzdHJveTogZnVuY3Rpb24gZG9EZXN0cm95KGZvcmNlRGVzdHJveSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIXRoaXMucG9wcGVySlMgfHwgdGhpcy5zaG93UG9wcGVyICYmICFmb3JjZURlc3Ryb3kpIHJldHVybjtcbiAgICAgIHRoaXMucG9wcGVySlMuZGVzdHJveSgpO1xuICAgICAgdGhpcy5wb3BwZXJKUyA9IG51bGw7XG4gICAgfSxcbiAgICBkZXN0cm95UG9wcGVyOiBmdW5jdGlvbiBkZXN0cm95UG9wcGVyKCkge1xuICAgICAgaWYgKHRoaXMucG9wcGVySlMpIHtcbiAgICAgICAgdGhpcy5yZXNldFRyYW5zZm9ybU9yaWdpbigpO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVzZXRUcmFuc2Zvcm1PcmlnaW46IGZ1bmN0aW9uIHJlc2V0VHJhbnNmb3JtT3JpZ2luKCkge1xuICAgICAgaWYgKCF0aGlzLnRyYW5zZm9ybU9yaWdpbikgcmV0dXJuO1xuICAgICAgdmFyIHBsYWNlbWVudE1hcCA9IHtcbiAgICAgICAgdG9wOiAnYm90dG9tJyxcbiAgICAgICAgYm90dG9tOiAndG9wJyxcbiAgICAgICAgbGVmdDogJ3JpZ2h0JyxcbiAgICAgICAgcmlnaHQ6ICdsZWZ0J1xuICAgICAgfTtcbiAgICAgIHZhciBwbGFjZW1lbnQgPSB0aGlzLnBvcHBlckpTLl9wb3BwZXIuZ2V0QXR0cmlidXRlKCd4LXBsYWNlbWVudCcpLnNwbGl0KCctJylbMF07XG4gICAgICB2YXIgb3JpZ2luID0gcGxhY2VtZW50TWFwW3BsYWNlbWVudF07XG4gICAgICB0aGlzLnBvcHBlckpTLl9wb3BwZXIuc3R5bGUudHJhbnNmb3JtT3JpZ2luID0gdHlwZW9mIHRoaXMudHJhbnNmb3JtT3JpZ2luID09PSAnc3RyaW5nJyA/IHRoaXMudHJhbnNmb3JtT3JpZ2luIDogWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID4gLTEgPyAnY2VudGVyICcgKyBvcmlnaW4gOiBvcmlnaW4gKyAnIGNlbnRlcic7XG4gICAgfSxcbiAgICBhcHBlbmRBcnJvdzogZnVuY3Rpb24gYXBwZW5kQXJyb3coZWxlbWVudCkge1xuICAgICAgdmFyIGhhc2ggPSB2b2lkIDA7XG4gICAgICBpZiAodGhpcy5hcHBlbmRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXBwZW5kZWQgPSB0cnVlO1xuXG4gICAgICBmb3IgKHZhciBpdGVtIGluIGVsZW1lbnQuYXR0cmlidXRlcykge1xuICAgICAgICBpZiAoL15fdi0vLnRlc3QoZWxlbWVudC5hdHRyaWJ1dGVzW2l0ZW1dLm5hbWUpKSB7XG4gICAgICAgICAgaGFzaCA9IGVsZW1lbnQuYXR0cmlidXRlc1tpdGVtXS5uYW1lO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBhcnJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICBpZiAoaGFzaCkge1xuICAgICAgICBhcnJvdy5zZXRBdHRyaWJ1dGUoaGFzaCwgJycpO1xuICAgICAgfVxuICAgICAgYXJyb3cuc2V0QXR0cmlidXRlKCd4LWFycm93JywgJycpO1xuICAgICAgYXJyb3cuY2xhc3NOYW1lID0gJ3BvcHBlcl9fYXJyb3cnO1xuICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChhcnJvdyk7XG4gICAgfVxuICB9LFxuXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7XG4gICAgdGhpcy5kb0Rlc3Ryb3kodHJ1ZSk7XG4gICAgaWYgKHRoaXMucG9wcGVyRWxtICYmIHRoaXMucG9wcGVyRWxtLnBhcmVudE5vZGUgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgIHRoaXMucG9wcGVyRWxtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgc3RvcCk7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMucG9wcGVyRWxtKTtcbiAgICB9XG4gIH0sXG5cblxuICAvLyBjYWxsIGRlc3Ryb3kgaW4ga2VlcC1hbGl2ZSBtb2RlXG4gIGRlYWN0aXZhdGVkOiBmdW5jdGlvbiBkZWFjdGl2YXRlZCgpIHtcbiAgICB0aGlzLiRvcHRpb25zLmJlZm9yZURlc3Ryb3lbMF0uY2FsbCh0aGlzKTtcbiAgfVxufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/utils/vue-popper.js\n");
/***/ }),
/***/ "./node_modules/element-ui/node_modules/deepmerge/dist/cjs.js":
/*!********************************************************************!*\
!*** ./node_modules/element-ui/node_modules/deepmerge/dist/cjs.js ***!
\********************************************************************/
/***/ ((module) => {
"use strict";
eval("\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {}\n}\n\nfunction cloneIfNecessary(value, optionsArgument) {\n var clone = optionsArgument && optionsArgument.clone === true;\n return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value\n}\n\nfunction defaultArrayMerge(target, source, optionsArgument) {\n var destination = target.slice();\n source.forEach(function(e, i) {\n if (typeof destination[i] === 'undefined') {\n destination[i] = cloneIfNecessary(e, optionsArgument);\n } else if (isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, optionsArgument);\n } else if (target.indexOf(e) === -1) {\n destination.push(cloneIfNecessary(e, optionsArgument));\n }\n });\n return destination\n}\n\nfunction mergeObject(target, source, optionsArgument) {\n var destination = {};\n if (isMergeableObject(target)) {\n Object.keys(target).forEach(function(key) {\n destination[key] = cloneIfNecessary(target[key], optionsArgument);\n });\n }\n Object.keys(source).forEach(function(key) {\n if (!isMergeableObject(source[key]) || !target[key]) {\n destination[key] = cloneIfNecessary(source[key], optionsArgument);\n } else {\n destination[key] = deepmerge(target[key], source[key], optionsArgument);\n }\n });\n return destination\n}\n\nfunction deepmerge(target, source, optionsArgument) {\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var options = optionsArgument || { arrayMerge: defaultArrayMerge };\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n if (!sourceAndTargetTypesMatch) {\n return cloneIfNecessary(source, optionsArgument)\n } else if (sourceIsArray) {\n var arrayMerge = options.arrayMerge || defaultArrayMerge;\n return arrayMerge(target, source, optionsArgument)\n } else {\n return mergeObject(target, source, optionsArgument)\n }\n}\n\ndeepmerge.all = function deepmergeAll(array, optionsArgument) {\n if (!Array.isArray(array) || array.length < 2) {\n throw new Error('first argument should be an array with at least two elements')\n }\n\n // we are sure there are at least 2 values, so it is safe to have no initial value\n return array.reduce(function(prev, next) {\n return deepmerge(prev, next, optionsArgument)\n })\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9ub2RlX21vZHVsZXMvZGVlcG1lcmdlL2Rpc3QvY2pzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2Qzs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXVpL25vZGVfbW9kdWxlcy9kZWVwbWVyZ2UvZGlzdC9janMuanM/M2RlNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBpc01lcmdlYWJsZU9iamVjdCA9IGZ1bmN0aW9uIGlzTWVyZ2VhYmxlT2JqZWN0KHZhbHVlKSB7XG5cdHJldHVybiBpc05vbk51bGxPYmplY3QodmFsdWUpXG5cdFx0JiYgIWlzU3BlY2lhbCh2YWx1ZSlcbn07XG5cbmZ1bmN0aW9uIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSkge1xuXHRyZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzU3BlY2lhbCh2YWx1ZSkge1xuXHR2YXIgc3RyaW5nVmFsdWUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuXG5cdHJldHVybiBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgUmVnRXhwXSdcblx0XHR8fCBzdHJpbmdWYWx1ZSA9PT0gJ1tvYmplY3QgRGF0ZV0nXG5cdFx0fHwgaXNSZWFjdEVsZW1lbnQodmFsdWUpXG59XG5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9iNWFjOTYzZmI3OTFkMTI5OGU3ZjM5NjIzNjM4M2JjOTU1ZjkxNmMxL3NyYy9pc29tb3JwaGljL2NsYXNzaWMvZWxlbWVudC9SZWFjdEVsZW1lbnQuanMjTDIxLUwyNVxudmFyIGNhblVzZVN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBjYW5Vc2VTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgOiAweGVhYzc7XG5cbmZ1bmN0aW9uIGlzUmVhY3RFbGVtZW50KHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFXG59XG5cbmZ1bmN0aW9uIGVtcHR5VGFyZ2V0KHZhbCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCkgPyBbXSA6IHt9XG59XG5cbmZ1bmN0aW9uIGNsb25lSWZOZWNlc3NhcnkodmFsdWUsIG9wdGlvbnNBcmd1bWVudCkge1xuICAgIHZhciBjbG9uZSA9IG9wdGlvbnNBcmd1bWVudCAmJiBvcHRpb25zQXJndW1lbnQuY2xvbmUgPT09IHRydWU7XG4gICAgcmV0dXJuIChjbG9uZSAmJiBpc01lcmdlYWJsZU9iamVjdCh2YWx1ZSkpID8gZGVlcG1lcmdlKGVtcHR5VGFyZ2V0KHZhbHVlKSwgdmFsdWUsIG9wdGlvbnNBcmd1bWVudCkgOiB2YWx1ZVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0QXJyYXlNZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9uc0FyZ3VtZW50KSB7XG4gICAgdmFyIGRlc3RpbmF0aW9uID0gdGFyZ2V0LnNsaWNlKCk7XG4gICAgc291cmNlLmZvckVhY2goZnVuY3Rpb24oZSwgaSkge1xuICAgICAgICBpZiAodHlwZW9mIGRlc3RpbmF0aW9uW2ldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBjbG9uZUlmTmVjZXNzYXJ5KGUsIG9wdGlvbnNBcmd1bWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNNZXJnZWFibGVPYmplY3QoZSkpIHtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gZGVlcG1lcmdlKHRhcmdldFtpXSwgZSwgb3B0aW9uc0FyZ3VtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQuaW5kZXhPZihlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goY2xvbmVJZk5lY2Vzc2FyeShlLCBvcHRpb25zQXJndW1lbnQpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkZXN0aW5hdGlvblxufVxuXG5mdW5jdGlvbiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9uc0FyZ3VtZW50KSB7XG4gICAgdmFyIGRlc3RpbmF0aW9uID0ge307XG4gICAgaWYgKGlzTWVyZ2VhYmxlT2JqZWN0KHRhcmdldCkpIHtcbiAgICAgICAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgZGVzdGluYXRpb25ba2V5XSA9IGNsb25lSWZOZWNlc3NhcnkodGFyZ2V0W2tleV0sIG9wdGlvbnNBcmd1bWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGlmICghaXNNZXJnZWFibGVPYmplY3Qoc291cmNlW2tleV0pIHx8ICF0YXJnZXRba2V5XSkge1xuICAgICAgICAgICAgZGVzdGluYXRpb25ba2V5XSA9IGNsb25lSWZOZWNlc3Nhcnkoc291cmNlW2tleV0sIG9wdGlvbnNBcmd1bWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZXN0aW5hdGlvbltrZXldID0gZGVlcG1lcmdlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgb3B0aW9uc0FyZ3VtZW50KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkZXN0aW5hdGlvblxufVxuXG5mdW5jdGlvbiBkZWVwbWVyZ2UodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnNBcmd1bWVudCkge1xuICAgIHZhciBzb3VyY2VJc0FycmF5ID0gQXJyYXkuaXNBcnJheShzb3VyY2UpO1xuICAgIHZhciB0YXJnZXRJc0FycmF5ID0gQXJyYXkuaXNBcnJheSh0YXJnZXQpO1xuICAgIHZhciBvcHRpb25zID0gb3B0aW9uc0FyZ3VtZW50IHx8IHsgYXJyYXlNZXJnZTogZGVmYXVsdEFycmF5TWVyZ2UgfTtcbiAgICB2YXIgc291cmNlQW5kVGFyZ2V0VHlwZXNNYXRjaCA9IHNvdXJjZUlzQXJyYXkgPT09IHRhcmdldElzQXJyYXk7XG5cbiAgICBpZiAoIXNvdXJjZUFuZFRhcmdldFR5cGVzTWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIGNsb25lSWZOZWNlc3Nhcnkoc291cmNlLCBvcHRpb25zQXJndW1lbnQpXG4gICAgfSBlbHNlIGlmIChzb3VyY2VJc0FycmF5KSB7XG4gICAgICAgIHZhciBhcnJheU1lcmdlID0gb3B0aW9ucy5hcnJheU1lcmdlIHx8IGRlZmF1bHRBcnJheU1lcmdlO1xuICAgICAgICByZXR1cm4gYXJyYXlNZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9uc0FyZ3VtZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBtZXJnZU9iamVjdCh0YXJnZXQsIHNvdXJjZSwgb3B0aW9uc0FyZ3VtZW50KVxuICAgIH1cbn1cblxuZGVlcG1lcmdlLmFsbCA9IGZ1bmN0aW9uIGRlZXBtZXJnZUFsbChhcnJheSwgb3B0aW9uc0FyZ3VtZW50KSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5KSB8fCBhcnJheS5sZW5ndGggPCAyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIGFycmF5IHdpdGggYXQgbGVhc3QgdHdvIGVsZW1lbnRzJylcbiAgICB9XG5cbiAgICAvLyB3ZSBhcmUgc3VyZSB0aGVyZSBhcmUgYXQgbGVhc3QgMiB2YWx1ZXMsIHNvIGl0IGlzIHNhZmUgdG8gaGF2ZSBubyBpbml0aWFsIHZhbHVlXG4gICAgcmV0dXJuIGFycmF5LnJlZHVjZShmdW5jdGlvbihwcmV2LCBuZXh0KSB7XG4gICAgICAgIHJldHVybiBkZWVwbWVyZ2UocHJldiwgbmV4dCwgb3B0aW9uc0FyZ3VtZW50KVxuICAgIH0pXG59O1xuXG52YXIgZGVlcG1lcmdlXzEgPSBkZWVwbWVyZ2U7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVlcG1lcmdlXzE7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/element-ui/node_modules/deepmerge/dist/cjs.js\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf":
/*!*************************************************************************!*\
!*** ./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf ***!
\*************************************************************************/
/***/ ((module) => {
eval("module.exports = \"/fonts/vendor/element-ui/lib/theme-chalk/element-icons.ttf?4520188144a17fb24a6af28a70dae0ce\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvZm9udHMvZWxlbWVudC1pY29ucy50dGYiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvZm9udHMvZWxlbWVudC1pY29ucy50dGY/MGJhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiL2ZvbnRzL3ZlbmRvci9lbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9lbGVtZW50LWljb25zLnR0Zj80NTIwMTg4MTQ0YTE3ZmIyNGE2YWYyOGE3MGRhZTBjZVwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf\n");
/***/ }),
/***/ "./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.woff":
/*!**************************************************************************!*\
!*** ./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.woff ***!
\**************************************************************************/
/***/ ((module) => {
eval("module.exports = \"/fonts/vendor/element-ui/lib/theme-chalk/element-icons.woff?313f7dacf2076822059d2dca26dedfc6\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvZm9udHMvZWxlbWVudC1pY29ucy53b2ZmIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2ZvbnRzL2VsZW1lbnQtaWNvbnMud29mZj8yN2ZmIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvZm9udHMvdmVuZG9yL2VsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2VsZW1lbnQtaWNvbnMud29mZj8zMTNmN2RhY2YyMDc2ODIyMDU5ZDJkY2EyNmRlZGZjNlwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.woff\n");
/***/ }),
/***/ "./node_modules/lodash/lodash.js":
/*!***************************************!*\
!*** ./node_modules/lodash/lodash.js ***!
\***************************************/
/***/ (function(module, exports, __webpack_require__) {
eval("/* module decorator */ module = __webpack_require__.nmd(module);\nvar __WEBPACK_AMD_DEFINE_RESULT__;/**\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.21';\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 INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\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 whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\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 /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\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 '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\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 __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\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 = true && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && \"object\" == '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 `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\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 `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\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 if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, 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 (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\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 var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var 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 // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\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 // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\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 * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', '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 * // =>